EN
@jtmdias/react-a11y-tools imagem de capa

@jtmdias/react-a11y-tools

Uma biblioteca de código aberto que transforma gestão de foco, navegação por teclado, anúncios e estrutura semântica em componentes e hooks React reutilizáveis.

Informação do projeto

Tecnologias

  • react
  • typescript
  • cypress-component-testing
  • vite
  • docusaurus

Contexto

Criei o React A11y Tools enquanto trabalhava na Feedzai, onde as equipas desenvolvem software para instituições financeiras e a acessibilidade não pode ser tratada como um acabamento. Em geral, os profissionais de engenharia queriam fazer o que estava certo, mas os padrões de interação complexos exigem conhecimento especializado e tempo que uma equipa nem sempre tem durante uma entrega.

Os mesmos desafios regressavam: gerir o foco em diálogos, implementar roving tabindex, anunciar mudanças de rota e preservar uma hierarquia de títulos com sentido. Equipas diferentes resolviam-nos de formas diferentes e, sob pressão, alguns padrões corriam o risco de ser simplificados ou ignorados.

Processo e decisões

Transformei essas soluções recorrentes numa biblioteca dedicada de componentes e hooks React. As primitivas oferecem comportamento para gestão de foco, navegação por teclado, anúncios, links para saltar conteúdo e títulos semânticos, deixando o desenho visual a cargo do produto ou sistema de design que as utiliza.

A biblioteca foi desenhada com base nas orientações das WCAG 2.1 e nos padrões do WAI-ARIA Authoring Practices. Os testes de componentes e de integração com Cypress exercitam o comportamento num navegador real, incluindo a interação por teclado e verificações automáticas de acessibilidade.

A adoção dependia de mais do que uma API fiável. Criei documentação interativa com Docusaurus, exemplos funcionais e amostras de código, para que cada profissional pudesse compreender como usar uma primitiva e qual o problema de interação que esta resolvia.

Resultado

A biblioteca foi rapidamente adotada na Feedzai e tornou-se uma base de acessibilidade do Escudo, o seu sistema de design interno. A reutilização dos mesmos padrões deu às equipas de produto um ponto de partida mais consistente e evitou que comportamentos de interação complexos ficassem espalhados por implementações pontuais.

Fui o único criador e responsável pela manutenção da biblioteca na Feedzai. Atualmente, mantenho a versão pública @jtmdias/react-a11y-tools e uso-a regularmente em projetos pessoais e profissionais. O pacote continua disponível no npm, com primitivas para anúncios de rotas e mensagens, gestão de foco, roving tabindex, testes sem rato, links para saltar conteúdo, títulos semânticos e descoberta de elementos navegáveis com Tab.

Aprendizagem

A acessibilidade ganha escala quando o comportamento difícil é reutilizável, testado e documentado, sem retirar às equipas a responsabilidade pelo seu funcionamento no produto final.

Voltar aos projetos