Referência
Acessibilidade WCAG
Conformidade da paleta e dos componentes do Spinlist com as WCAG 2.1. Nível alvo: AA.
Contraste de cores
Calculado via fórmula de luminância relativa (WCAG 2.1 SC 1.4.3). AA exige ≥ 4.5:1 para texto normal, ≥ 3:1 para texto grande (+18px regular ou +14px bold). AAA exige ≥ 7:1.
#888 sobre #1a1a1a = 4.9:1 — passa AA por 0.4 pontos. Nunca reduza a opacidade de texto secundário em cards. Se o tamanho cair abaixo de 14px bold ou 18px regular, revisar a cor.
Alvos de toque
WCAG 2.1 SC 2.5.5 (AA) recomenda ≥ 44×44px. WCAG 2.2 SC 2.5.8 exige ≥ 24×24px. iOS HIG e Material Design recomendam 44pt / 48dp respectivamente.
Checklist semântico
aria-label em botões de ícone
Todos os botões sem texto visível têm aria-label descritivo. Ex: aria-label="Notificações", aria-label="Voltar", aria-label="Adicionar disco".
alt em imagens de capa
Capas de álbum usam alt={record.album}. Imagens decorativas (thumbnails sobrepostos) usam alt="".
Hierarquia de cabeçalhos
Cada tela tem no máximo um <h1> implícito (o título principal). Sub-seções usam <h2> e <h3> em ordem. Não pular níveis.
Estados disabled comunicados
Botões desabilitados usam atributo disabled nativo, não apenas opacity-40. O atributo disabled comunica o estado a leitores de tela.
Navegação por regiões ARIA
BottomNav usa aria-label="Navegação principal" no elemento <nav>. Links ativos são detectáveis por aria-current (gerenciado pelo React Router NavLink).
Informação não transmitida só por cor
O like ativo usa coração preenchido em verde — a forma muda além da cor (outline → filled), atendendo WCAG 1.4.1. Atenção ao badge de rating: só usa cor (#C8F53C) sem ícone diferenciado — compensado pelo símbolo ★.
Movimento reduzido
Transições de duration-200 são curtas e não causam problemas para a maioria dos usuários. Para conformidade total com WCAG 2.3.3 (AAA), adicionar @media (prefers-reduced-motion: reduce) desabilitando as transições de escala e opacidade nos componentes interativos.
Referências
- WCAG 2.1 — W3C Recommendation — base deste documento
- WCAG 2.2 — SC 2.5.8 Target Size (Minimum) — 24×24px obrigatório
- Ferramenta de verificação:
contrast-ratio.comou Chrome DevTools → Accessibility - Nunca comunicar estado (erro, sucesso, ativo) apenas pela cor — sempre complementar com forma, ícone ou texto.