Pagination
Navegação entre páginas numeradas de uma lista grande de itens
Pagination divide listas longas em páginas navegáveis. Use em tabelas, resultados de busca e qualquer coleção grande demais para renderizar de uma vez. Para feeds contínuos, prefira scroll infinito ou um botão "Carregar mais".
import {
Pagination,
PaginationContent,
PaginationEllipsis,
PaginationItem,
PaginationLink,
PaginationNext,
PaginationPrevious,
} from '@uranus-workspace/design-system';
export default function PaginationDefault() {
return (
<Pagination>
<PaginationContent>
<PaginationItem>
<PaginationPrevious href="#" />
</PaginationItem>
<PaginationItem>
<PaginationLink href="#">1</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationLink href="#" isActive>
2
</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationLink href="#">3</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationEllipsis />
</PaginationItem>
<PaginationItem>
<PaginationLink href="#">10</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationNext href="#" />
</PaginationItem>
</PaginationContent>
</Pagination>
);
}
Anatomia
- Pagination —
<nav aria-label="pagination">que delimita o controle. - PaginationContent — a lista
<ul>que agrupa os itens. - PaginationItem — cada
<li>da lista. - PaginationLink — um número de página clicável. Use
isActivepara marcar a página atual. - PaginationPrevious / PaginationNext — atalhos para a página anterior e seguinte, com ícones e rótulos.
- PaginationEllipsis — substitui a faixa de páginas ocultas em paginações longas.
Uso
import Link from 'next/link';
import {
Pagination,
PaginationContent,
PaginationEllipsis,
PaginationItem,
PaginationLink,
PaginationNext,
PaginationPrevious,
} from '@uranus-workspace/design-system';
<Pagination>
<PaginationContent>
<PaginationItem>
<PaginationPrevious href="?page=1" />
</PaginationItem>
<PaginationItem>
<PaginationLink href="?page=1">1</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationLink href="?page=2" isActive>
2
</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationEllipsis />
</PaginationItem>
<PaginationItem>
<PaginationNext href="?page=3" />
</PaginationItem>
</PaginationContent>
</Pagination>PaginationLink e os botões Previous/Next renderizam um <a>. Para usar com next/link, combine com asChild no componente pai ou substitua o href pelo valor apropriado.
Faça
- Sempre marque a página ativa com
isActive— o componente aplicaaria-current="page". - Colapse o intervalo do meio com
PaginationEllipsisquando houver mais de 7 páginas. - Mantenha Previous e Next visíveis mesmo quando desativados nas extremidades, para ancorar o layout.
Não faça
- Não esconda a indicação da página atual — o usuário perde o senso de posição.
- Não use apenas Previous/Next em listas longas: números aceleram saltos grandes.
- Não coloque paginação no topo e no rodapé com estados diferentes.
Acessibilidade
- O
<nav aria-label="pagination">é aplicado automaticamente, então a região é anunciada por leitores de tela. - O link ativo ganha
aria-current="page"viaisActive. - Previous e Next incluem
aria-labelem inglês — ajuste para pt-BR passandoaria-label="Ir para a página anterior"se o produto exigir.