Acessibilidade

Todos os componentes de seletor vêm com suporte de acessibilidade integrado. A navegação por teclado, os atributos ARIA e o gerenciamento de foco funcionam imediatamente em todas as variantes — Styled, Tailwind v3/v4 e Headless.

Nenhuma configuração extra é necessária para o uso padrão. Esta página documenta o que está incluído para que você possa auditar, estender ou replicar os padrões em UIs personalizadas.

Seletores de Calendário

TeclaAção
ArrowLeftMove o foco para o dia anterior
ArrowRightMove o foco para o próximo dia
ArrowUpMove o foco para a semana anterior (mesmo dia da semana)
ArrowDownMove o foco para a próxima semana (mesmo dia da semana)
Enter / SpaceSeleciona o dia em foco
EscapeCancela as alterações e fecha o popup
TabMove para o próximo elemento focável (padrão do navegador)

Pulo de datas desabilitadas: Ao navegar com as teclas de seta, as datas desabilitadas são puladas automaticamente. O seletor procura até 365 dias na direção do movimento para encontrar a próxima data habilitada.

Rolagem automática de mês: Quando o foco do teclado se move para um dia em um mês diferente, a visualização do calendário é atualizada para mostrar esse mês.

Seletor de Hora

TeclaAção
EscapeCancela as alterações e fecha o popup

A seleção de hora usa uma UI de roda de rolagem com interação de clique/toque. As colunas de rolagem usam scroll-snap para uma seleção precisa do valor.

Atributos ARIA

Todo elemento interativo possui papéis e atributos ARIA apropriados:

ElementoAtributoValor
Contêiner do popuprole"dialog"
Contêiner em linharole"group"
Contêineraria-labelTexto do placeholder do locale
Contêineraria-activedescendantID da célula do dia atualmente em foco

Botão de Acionamento

AtributoValor
aria-expandedtrue quando o popup está aberto
aria-haspopup"dialog"

Grade do Calendário

ElementoAtributoValor
Wrapper da graderole"grid"
Linha da semanarole"row"
Célula de cabeçalho do dia da semanarole"columnheader"
Célula do diarole"gridcell"
Célula do diaaria-selectedtrue quando selecionado
Célula do diaaria-current"date" quando a célula é hoje
Célula do diaaria-labelString de data formatada (ex. "2026-03-04")
Célula do diadisabledDefinido em datas desabilitadas (atributo HTML nativo)
ElementoAtributoValor
Botão do mês anterioraria-label"Mês anterior" (de locale.prevMonthLabel)
Botão do próximo mêsaria-label"Próximo mês" (de locale.nextMonthLabel)
Menu suspenso de mêsaria-label"Selecionar mês" (de locale.selectMonthLabel)
Menu suspenso de anoaria-label"Selecionar ano" (de locale.selectYearLabel)

Colunas de Tempo

ElementoAtributoValor
Coluna de horarole"listbox"
Coluna de horaaria-orientation"vertical"
Coluna de horaaria-label"Horas" (de locale.hourLabel)
Coluna de minutorole"listbox"
Coluna de minutoaria-orientation"vertical"
Coluna de minutoaria-label"Minutos" (de locale.minuteLabel)
Coluna de segundorole"listbox"
Coluna de segundoaria-orientation"vertical"
Coluna de segundoaria-label"Segundos" (de locale.secondLabel)
Item de temporole"option" (itens de preenchimento: "presentation")
Item de tempoaria-selectedtrue quando o item é o valor atual
Alternador de períodoaria-labelPeríodo atual + ”, alternar AM/PM”
Botão limpararia-label"Limpar" (de locale.clear)

Todas as strings de rótulo são personalizáveis através do sistema de locale.

Gerenciamento de Foco

Roving Tabindex

A grade do calendário usa o padrão roving tabindex:

  • Apenas a célula do dia atualmente em foco tem tabIndex={0} (tabulável).
  • Todas as outras células de dia têm tabIndex={-1} (não tabulável, mas focável através das teclas de seta).
  • Isso significa que Tab move o foco para fora da grade do calendário (para o próximo controle), e as teclas de seta movem o foco dentro da grade.

Captura de Foco no Popup

O modo popup usa o FloatingFocusManager do @floating-ui/react para:

  • Capturar o foco dentro do popup enquanto ele está aberto.
  • Retornar o foco para o botão de acionamento quando o popup fecha.
  • Impedir a tabulação para fora do popup para o conteúdo de fundo.

Elementos Nativos

A seleção de mês e ano usa elementos <select> nativos, que são inerentemente acessíveis por teclado. As células de dia usam elementos <button> nativos com os estados de desabilitado apropriados.

Conformidade com WCAG 2.1

Os