Acessibilidade
Como o ME garante que a interface funcione para todos — teclado, foco, contraste, leitores de tela e alvos de toque.
Acessibilidade não é uma camada extra — é a interface funcionando para todo mundo, inclusive quem navega por teclado, usa leitor de tela ou tem baixa visão. A meta do ME é WCAG 2.1 nível AA. Como os componentes vêm de EletroDS → Nuxt UI, boa parte do trabalho já vem pronta — o cuidado está em como você os compõe e escreve.
Princípios
- Tudo pelo teclado — toda ação alcançável no mouse também no teclado (Tab, Enter/Espaço, Esc). Nada de armadilha de foco.
- Foco sempre visível — nunca remova o anel de foco; use o token de foco do DS. Quem navega por teclado precisa ver onde está.
- Ordem que faz sentido — a ordem de foco segue a leitura (cima→baixo, esquerda→direita). Não force com
tabindexpositivo. - Cor nunca sozinha — status, erro e seleção precisam de texto ou ícone além da cor (ver Badge).
- Semântica antes de ARIA — use o elemento certo (
button,nav, heading real). ARIA só quando não há equivalente nativo.
Teclado e foco
A ação destrutiva e o overlay são onde mais se erra:
- Modal prende o foco enquanto aberto, fecha no
Esce devolve o foco ao gatilho ao fechar. - DropdownMenu e Tabs navegam por setas; o item ativo é anunciado.
- Ícone-só (kebab, ações da linha) precisa de rótulo acessível (
aria-label) — ver Button bar.
Contraste
- Texto normal: 4.5:1; texto grande (≥ 24px ou ≥ 19px bold) e ícones/bordas significativas: 3:1.
- Use os tokens de cor — eles já são calibrados. Nunca HEX cru, que escapa do contraste validado.
- Estado desabilitado é exceção de contraste, mas não deve ser o único sinal de "indisponível".
Leitores de tela
- Toda imagem informativa tem texto alternativo; a decorativa é marcada como tal (não captura foco).
- Título de seção é heading real na ordem certa (h1 → h2 → h3), não texto grande em negrito — é como o leitor monta o índice da página (ver Card).
- Conteúdo que muda sem recarregar (filtro aplicado, Toast) é anunciado por região viva.
Formulários
- Todo campo tem rótulo visível associado — placeholder não é rótulo. Ver FormField.
- Erro é descrito em texto (não só borda vermelha) e ligado ao campo, para o leitor de tela ler junto.
- Campo obrigatório é sinalizado de forma textual, não só pelo asterisco de cor.
Alvos de toque e movimento
- Alvo mínimo de 44×44px em telas de toque; espaçamento suficiente entre ações.
- Respeite
prefers-reduced-motion— anime com moderação e ofereça alternativa estática.