// js/components/widgets/produtos/Pagination.jsx
// [Wave 7 KIMI 2026-05-17] Extraído de Produtos.jsx L564-583 (20L) — UI puro.
// Padrão: IIFE + window.ZNX.widgets.produtos.Pagination namespace + props injection.
//
// Pagination component — renderiza controles de paginação (‹ 1 … 4 5 [6] 7 8 … 20 ›).
//
// Props (5):
//   page: number — página atual
//   totalPages: number — total pages computado
//   setPage: setter — atualiza página atual
//   PAGE_SIZE: number — tamanho da página (default 50)
//   sortedLength: number — total registros (sorted.length do pai)
(function() {
  'use strict';

  function Pagination({page, totalPages, setPage, PAGE_SIZE, sortedLength}){
    if(totalPages<=1)return null;
    const pages=[];
    const start=Math.max(1,page-2);const end=Math.min(totalPages,page+2);
    if(start>1)pages.push(<button key="1" onClick={()=>setPage(1)} style={{padding:'4px 8px',background:'#F9FAFB',color:'#9CA3AF',border:'1px solid #E4E7EC',borderRadius:4,cursor:'pointer',fontSize:12}}>1</button>);
    if(start>2)pages.push(<span key="e1" style={{color:'#6B7280',padding:'0 4px'}}>…</span>);
    for(let i=start;i<=end;i++)pages.push(<button key={i} onClick={()=>setPage(i)} style={{padding:'4px 8px',background:page===i?'#2563EB':'#F9FAFB',color:page===i?'#FFFFFF':'#6B7280',border:'1px solid #E4E7EC',borderRadius:4,cursor:'pointer',fontSize:12}}>{i}</button>);
    if(end<totalPages-1)pages.push(<span key="e2" style={{color:'#6B7280',padding:'0 4px'}}>…</span>);
    if(end<totalPages)pages.push(<button key={totalPages} onClick={()=>setPage(totalPages)} style={{padding:'4px 8px',background:page===totalPages?'#2563EB':'#F9FAFB',color:page===totalPages?'#FFFFFF':'#6B7280',border:'1px solid #E4E7EC',borderRadius:4,cursor:'pointer',fontSize:12}}>{totalPages}</button>);
    return(
      <div style={{display:'flex',alignItems:'center',justifyContent:'space-between',padding:'12px 16px',borderTop:'1px solid #E4E7EC'}}>
        <div style={{fontSize:12,color:'#9CA3AF'}}>Exibindo {((page-1)*PAGE_SIZE)+1}–{Math.min(page*PAGE_SIZE,sortedLength)} de {sortedLength} produtos</div>
        <div style={{display:'flex',gap:4,alignItems:'center'}}>
          <button onClick={()=>setPage(p=>Math.max(1,p-1))} disabled={page===1} style={{padding:'4px 10px',background:'#F9FAFB',color:'#9CA3AF',border:'1px solid #E4E7EC',borderRadius:4,cursor:'pointer',fontSize:12}}>‹</button>
          {pages}
          <button onClick={()=>setPage(p=>Math.min(totalPages,p+1))} disabled={page===totalPages} style={{padding:'4px 10px',background:'#F9FAFB',color:'#9CA3AF',border:'1px solid #E4E7EC',borderRadius:4,cursor:'pointer',fontSize:12}}>›</button>
        </div>
      </div>
    );
  }

  window.ZNX = window.ZNX || {};
  window.ZNX.widgets = window.ZNX.widgets || {};
  window.ZNX.widgets.produtos = window.ZNX.widgets.produtos || {};
  window.ZNX.widgets.produtos.Pagination = Pagination;
})();
