Skip to content

Pagination

Visão Geral

Componente de paginação reutilizável com elipse inteligente. Renderiza controles de navegação e um contador de itens exibidos.

Localização

frontend-react/src/components/ui/Pagination.tsx

Props

PropTipoPadrãoDescrição
pagenumberPágina atual (1-indexed)
totalPagesnumberTotal de páginas
totalnumberTotal de itens
pageSizenumberItens por página
onChange(p: number) => voidCallback ao mudar de página
colorstring'#C5A059'Cor da página ativa
itemLabelstring'itens'Label do contador (ex: "pedidos")

Comportamento

  • Retorna null se totalPages <= 1 (não renderiza nada)
  • Exibe o contador: "Exibindo X–Y de Z itens"
  • Botões "← Anterior" e "Próxima →" são desabilitados nos limites

Algoritmo de Elipse

CondiçãoPáginas exibidas
totalPages <= 5Todas as páginas
page <= 31 2 3 4 … N
page >= totalPages - 21 … N-3 N-2 N-1 N
Meio1 … p-1 p p+1 … N

Uso

tsx
import { Pagination } from '@/components/ui';

<Pagination
  page={currentPage}
  totalPages={Math.ceil(total / PAGE_SIZE)}
  total={total}
  pageSize={PAGE_SIZE}
  onChange={setCurrentPage}
  itemLabel="pedidos"
/>

Dark Mode

Suporta dark mode via classes Tailwind:

  • Fundo dos botões: dark:bg-white/[0.06]
  • Texto: dark:text-gray-300 / dark:text-gray-400
  • Separador superior: dark:border-gray-700

Exportação

Exportado em frontend-react/src/components/ui/index.ts como named export.

Lançado sob a licença MIT.