O que Sistema de Paginação faz?
Propósito
O skill Sistema de Paginação fornece uma metodologia para projetar a interface que divide grandes conjuntos de dados em páginas discretas. Ele garante que os usuários possam percorrer longas listas de itens (produtos, resultados de busca, artigos) mantendo uma noção clara de "onde estão" e "quanto conteúdo resta". Um sistema de paginação robusto equilibra precisão de navegação com simplicidade, minimizando a carga cognitiva e prevenindo a desorientação do usuário.
Casos de Uso
- Projetar páginas de resultados de busca para sites de e-commerce ou diretórios.
- Organizar arquivos longos de blogs ou notícias.
- Implementar "Carregar Mais" vs. paginação numerada tradicional para hubs de conteúdo.
- Criar navegação para tabelas de painéis de dados ou logs com muitos dados.
- Otimizar formulários de várias páginas ou assistentes baseados em etapas onde seções individuais são tratadas como visualizações distintas.
Quando NÃO Usar
- Conjuntos de Dados Pequenos (<12 itens): Se todo o conteúdo couber confortavelmente em uma ou duas telas, a paginação adiciona cliques e atrito desnecessários.
- Contextos de Rolagem Infinita: Onde o usuário está explorando feeds sociais ou streams de notícias com foco em descoberta, onde endereços de página específicos não são importantes (use
implementacao-rolagem-infinita). - Conteúdo Narrativo Único: Para artigos ou histórias que seguem um fluxo linear onde links "Anterior/Próximo" são suficientes.
Entradas
- Contagem Total de Itens: Quantos itens no total existem na coleção?
- Itens por Página: Qual é a densidade padrão (por exemplo, 12, 24, 48 itens)?
- Contexto da Página Atual: Qual página o usuário está visualizando no momento?
- Restrições de Exibição: Quanto espaço horizontal está disponível para a barra de paginação (do
sistema-grade-responsiva)?
Saídas
- Especificação de Anatomia da Paginação: Estilos visuais definidos para números de página, botões Anterior/Próximo e controles de "Pular" (elipses).
- Matriz de Estados: Tratamentos visuais para estados Padrão, Atual, Hover, Foco e Desabilitado (por exemplo, botão "Anterior" na Página 1).
- Estratégia Responsiva: Um plano de como a barra de paginação se adapta do Desktop (intervalo completo) para Mobile (visualização compacta).
- Mapa de Acessibilidade: Definições explícitas para funções ARIA, rótulos e padrões de interação por teclado.
Fluxo de Trabalho
1. Definir a Estratégia de Intervalo
Determine quantos números de página mostrar de uma vez com base no volume total:
- Simples (3-5 Páginas): Mostrar todos os números de página.
- Moderado (6-10 Páginas): Mostrar primeiro, último e uma janela ao redor da página atual.
- Complexo (10+ Páginas): Usar elipses (
...) para representar intervalos ignorados (por exemplo,1 ... 4 5 6 ... 20).
2. Projetar os Controles de Navegação
Estabelecer a hierarquia visual da barra de paginação:
- Ações Primárias: Os botões Anterior e Próximo devem estar claramente visíveis e situados nas extremidades da barra.
- Indicador de Página Atual: Usar um estilo de alto contraste (cor de fundo ou borda espessa) para tornar a página atual imediatamente óbvia.
- Números de Página: Garantir que pareçam elementos interativos (por exemplo, usando o
sistema-estado-interativo).
3. Aplicar Espaçamento e Tamanho Fluidos
Usar o sistema-espacamento-fluido para garantir que os alvos sejam utilizáveis:
- Alvos de Toque: Cada número de página e botão deve ter pelo menos 44x44px; se a densidade visual exigir controles menores, o WCAG 2.2 (2.5.8 Tamanho Mínimo do Alvo) define um piso absoluto de 24x24px com espaçamento adequado entre os alvos para evitar ativação acidental.
- Lacunas Internas: Usar espaçamento consistente (por exemplo,
--space-xs) entre os números de página para evitar cliques errados.
4. Estabelecer Acessibilidade (WCAG AA/AAA)
- Marco: Envolver a paginação em um elemento
<nav>comaria-label="pagination". - Página Atual: Usar
aria-current="page"no link da página ativa. - Estados Desabilitados: Garantir que o botão "Anterior" esteja visualmente e programaticamente desabilitado (por exemplo,
aria-disabled="true") quando na primeira página. - Caminho do Teclado: Os usuários devem poder navegar com
Tabpor cada número de página e controle, e o controle focado nunca deve estar totalmente oculto por cabeçalhos/rodapés fixos (WCAG 2.2, 2.4.11 Foco Não Obscurecido).
5. Planejar Adaptações Responsivas
Mapear a transição do desktop para o mobile:
- A Regra de Redução: No mobile, ocultar a maioria dos números de página e mostrar apenas "Anterior", "Próximo" e o status atual (por exemplo, "Página 4 de 20").
- Escala Visual: Se os números de página precisarem permanecer, reduzir a "janela" para apenas a página atual e seus vizinhos imediatos (por exemplo,
1 ... 4 ... 20).
Regras de Decisão
- Números vs. Carregar Mais: Usar números quando os usuários precisarem marcar ou compartilhar resultados específicos (por exemplo, "Veja a página 4"). Usar "Carregar Mais" quando o objetivo for descoberta e comparação prolongadas.
- O Máximo de "7 Itens": No desktop, evitar mostrar mais de 7 a 9 itens na barra de paginação (incluindo elipses e botões) para manter o layout limpo.
- Previsibilidade: Manter sempre "Anterior" à esquerda e "Próximo" à direita. Nunca ocultar esses botões; apenas desabilitá-los quando não forem aplicáveis.
- Feedback Imediato: Clicar em um número de página deve rolar imediatamente o usuário para o topo da lista de conteúdo ou fornecer um estado claro de "carregando".
Restrições
- Acessibilidade: A paginação deve ser navegável por teclado e amigável para leitores de tela. Os rótulos devem ser descritivos (por exemplo, "Ir para a página 5" em vez de apenas "5"). Os alvos interativos devem atender pelo menos o mínimo de 24x24px do WCAG 2.2 (2.5.8), com 44x44px preferido para os controles primários Anterior/Próximo.
- Responsividade: A barra de paginação nunca deve causar estouro horizontal ou sobrepor outros elementos da interface.
- Hierarquia Visual: A paginação deve ser visualmente distinta do conteúdo, mas não mais proeminente que o próprio conteúdo.
Padrões de Falha Comuns
- Alvos de Toque Minúsculos: Números pequenos e agrupados que são impossíveis de tocar com precisão no mobile.
- Estado Ativo Invisível: Usuários não sabendo em qual página estão porque o estilo "Ativo" é muito sutil.
- Loop de Teclado Quebrado: Esquecer de lidar com o foco quando o conteúdo da página é atualizado via AJAX (o usuário deve ser movido para o topo dos resultados).
- A "Explosão Mobile": Tentar mostrar 10 números de página em uma tela mobile, causando rolagem horizontal ou quebra de layout.
- Rótulos Vagas: Usar apenas números sem
aria-labels, dificultando para usuários de leitores de tela entenderem o contexto.
Critérios de Validação
- A página atual é visualmente distinta e possui
aria-current="page". - A navegação está envolta em um
<nav>com umaria-labeldescritivo. - Os alvos de toque atendem pelo menos o mínimo de 24x24px do WCAG 2.2 (44x44px para os controles primários Anterior/Próximo).
- Os estados desabilitados (Anterior na Página 1, Próximo na Última Página) são claros e definidos programaticamente.
- O comportamento responsivo está definido (visualização compacta para mobile).
- Usuários de teclado podem navegar por toda a barra de paginação.
- As elipses são usadas corretamente para intervalos grandes.