Pular para o conteúdo

Diretrizes

Acessibilidade

Contraste, foco, teclado, leitor de tela, movimento e alvo.

Meta

WCAG 2.2 AA em todo componente. Cada verbete de componente lista teclado e leitor de tela; esta página junta as regras gerais.

Contraste#

  1. 01Texto AA (4.5:1). Texto de estado usa a variante -ink (success-ink, warning-ink, danger-ink).
  2. 02Muted #686D75 sobre papel e canvas passa AA para texto de apoio.
  3. 03Vidro revalida contraste nos três níveis; texto sobre vidro é ink, nunca muted claro.
Pares de contraste calculados dos tokens
AmostraParRazãoNível
Aa 1.234Texto em papel12.49:1AAA
Aa 1.234Secundário em canvas4.77:1AA
Aa 1.234Link / primário em papel8.02:1AAA
Aa 1.234Branco em Vivid Blue5.28:1AA
Aa 1.234Branco em Graffiti12.49:1AAA
Aa 1.234Sucesso (tinta) em papel5.42:1AA
Aa 1.234Aviso (tinta) em papel5.49:1AA
Aa 1.234Perigo (tinta) em papel5.58:1AA

Foco#

  1. 01Todo interativo tem o mesmo foco: anel de 2px Vivid Blue com offset de 2px, imediato; halo de 4px entra 80ms depois (pupil). Utilitária hb-focus; campos usam hb-pupil com a mesma geometria.
  2. 02Foco nunca é removido sem substituto.
  3. 03Diálogo prende o foco e devolve ao gatilho ao fechar.

Use Tab para ver o anel

Teclado#

  1. 01Tab / Shift+Tab percorrem; Enter e Espaço ativam.
  2. 02Esc fecha diálogo, popover e busca.
  3. 03Setas navegam dentro de Tabs e listas.
  4. 04Enter no cabeçalho da tabela ordena; Tab foca o link da linha.

Leitor de tela#

  1. 01Botão só com ícone exige aria-label.
  2. 02Spinner sozinho exige label (vira role=status).
  3. 03Erro de campo é anunciado via aria-describedby.
  4. 04A coruja é decorativa sem title; com title vira img nomeada.

Movimento#

  1. 01prefers-reduced-motion zera animação e transição (órbita, piscar, shimmer, deslizes).
  2. 02Nenhuma informação depende só de movimento.

Alvo#

  1. 01Alvo mínimo de 28 px (control xs); 40 px no celular para ação principal.
  2. 02Espaço entre alvos de no mínimo 4 px.

Checklist antes de publicar#

  • Dá para fazer tudo só com teclado, e a ordem do Tab segue a leitura.
  • Todo controle tem nome acessível (label, aria-label ou texto).
  • Erro não depende só de cor: tem ícone, texto e aria-invalid.
  • Diálogo prende o foco, fecha no Esc e devolve o foco a quem abriu.
  • Com prefers-reduced-motion, nada se move sem necessidade.
  • Alvo de toque tem pelo menos 28px, 40px na ação principal no celular.