Pular para o conteúdo
Storybookv2Pacote

AppPagination

Moléculas

Abrir no Storybook

Navegação entre páginas de uma lista, controlada por page e onPageChange.

Quando usar: listas longas divididas em páginas (ganhadores, notas fiscais, resultados), no rodapé da página ou de um card.

Quando não usar: passos de um fluxo sequencial ou carregamento infinito; use o componente de etapas ou um botão "Ver mais" (AppButton).

Acessibilidade: é um <nav> com aria-label "Paginação" (sobrescreva se houver mais de uma) e a página atual recebe aria-current="page". Em telas estreitas o CSS reduz os números exibidos.

Importar

import { AppPagination } from '@handsondigital/idplugger-ui'

CSS

Para carregar só o CSS deste componente (além do tokens.css), importe o arquivo dele; as dependências vêm por @import:

@import '@handsondigital/idplugger-ui/css/AppPagination.css';

Com Tailwind 4 e camadas, use a variante em @layer idplugger-ui:

@import '@handsondigital/idplugger-ui/css/layer/AppPagination.css';

Exemplos

Default

Exemplo: AppPagination, Default
const Default = () => {
const [page, setPage] = useState(initialPage)
return (
<AppPagination
pageCount={10}
page={page}
onPageChange={(next) => {
setPage(next)
onPageChange(next)
}} />
);
};

Card

Exemplo: AppPagination, Card
const Card = () => {
const [page, setPage] = useState(initialPage)
return (
<AppPagination
pageCount={10}
appearance="card"
page={page}
onPageChange={(next) => {
setPage(next)
onPageChange(next)
}} />
);
};

Circle

Exemplo: AppPagination, Circle
const Circle = () => {
const [page, setPage] = useState(initialPage)
return (
<AppPagination
pageCount={10}
shape="circle"
page={page}
onPageChange={(next) => {
setPage(next)
onPageChange(next)
}} />
);
};

Details Right

Exemplo: AppPagination, Details Right
const DetailsRight = () => {
const [page, setPage] = useState(initialPage)
return (
<AppPagination
pageCount={10}
layout="details"
align="right"
page={page}
onPageChange={(next) => {
setPage(next)
onPageChange(next)
}} />
);
};

Details Center

Exemplo: AppPagination, Details Center
const DetailsCenter = () => {
const [page, setPage] = useState(initialPage)
return (
<AppPagination
pageCount={10}
layout="details"
align="center"
page={page}
onPageChange={(next) => {
setPage(next)
onPageChange(next)
}} />
);
};

Details Left

Exemplo: AppPagination, Details Left
const DetailsLeft = () => {
const [page, setPage] = useState(initialPage)
return (
<AppPagination
pageCount={10}
layout="details"
align="left"
page={page}
onPageChange={(next) => {
setPage(next)
onPageChange(next)
}} />
);
};

Group

Exemplo: AppPagination, Group
const Group = () => {
const [page, setPage] = useState(initialPage)
return (
<AppPagination
pageCount={10}
layout="group"
align="right"
page={page}
onPageChange={(next) => {
setPage(next)
onPageChange(next)
}} />
);
};

Last Page

Exemplo: AppPagination, Last Page
const LastPage = () => {
const [page, setPage] = useState(initialPage)
return (
<AppPagination
pageCount={10}
page={page}
onPageChange={(next) => {
setPage(next)
onPageChange(next)
}} />
);
};

Props

PropTipoPadrãoDescrição
onPageChange*(page: number) => void—Chamada com o número da nova página ao navegar; não dispara para a página atual nem fora do intervalo.
page*number—Página atual, a partir de 1 (controlado).
pageCount*number—Total de páginas (mínimo 1).
align"center" | "left" | "right"rightOnde ficam os botões (details) ou o grupo (group). Padrão: right.
appearance"card" | "page"pagepage: rodapé da página (borda no topo). card: dentro de um card, com padding.
detailsLabel((page: number, pageCount: number) => string)(current, total) => `Página ${current} de ${total}`Texto de details. Padrão: Página N de M.
layout"group" | "details" | "numbers"numbersnumbers: anterior, números e próxima. details: "Página 1 de 10" e os dois botões. group: botões unidos.
nav"button" | "link"—Estilo de anterior/próxima no layout numbers: link (padrão em page) ou button (padrão em card).
nextLabelstringPróximaTexto do botão "próxima". Padrão: Próxima.
pageLabel((page: number) => string)(number) => `Página ${number}`Nome acessível de cada número. Padrão: Página N.
previousLabelstringAnteriorTexto do botão "anterior". Padrão: Anterior.
shape"circle" | "square"squareForma dos números do layout numbers.