Skip to content

[a11y] Sprint 1 — keyboard reachability: Explorer table rows, cards, tag autocomplete, single-key shortcuts #92

Description

@Santisoutoo

Part of VforVitorio#889 (Fable-5 a11y audit 2026-07-05, WCAG 2.2 AA). Sprint 1 — Keyboard reachability (the P0 core). The primary data surfaces are mouse-only.

  • S1.1 a11y(explorer): browse table rows keyboard-operable [M] [P0] — the desktop browse table over 12k laws is clickable <tr onClick={navigate}> with no tabIndex/role/key handler (ExplorerPage.tsx:571-576) → a keyboard user cannot open a single law from it; search-mode rows already do it right (role="button" tabIndex=0+Enter, :444-449). AC: make the law name a real <a href="/laws/{id}"> (row click stays convenience) or give the row role="link" tabIndex=0 + Enter/Space. WCAG 2.1.1. (P0-1)
  • S1.2 a11y(ui): Card renders a button/anchor when clickable [S] — Home "Recent laws" are clickable <div>s (Card hoverable onClick → plain div, HomePage.tsx:180, ui/Card.tsx:8-21). AC: Card renders <button>/<a> when onClick/href passed. WCAG 2.1.1. (P1-13)
  • S1.3 a11y(explorer): keyboard path for #tag autocomplete [S] — suggestions bind onMouseDown only, no Arrow/Enter, list disappears on blur (ExplorerPage.tsx:305-325). AC: Arrow-select + Enter in the input onKeyDown, role="listbox"/aria-activedescendant. WCAG 2.1.1/4.1.2. (P1-4)
  • S1.4 a11y(chat): thread drawer inert when closed (mobile) [S] — hidden via -translate-x-full only (ChatPage.tsx:266-272) → off-screen but focusable, keyboard users tab through dozens of invisible thread buttons. AC: inert/aria-hidden+invisible when closed below md. WCAG 2.4.3/2.1.1. (P1-2)
  • S1.5 a11y(shell): single-key "g x" shortcut disable setting + Space on role=button rows [S] — single-char go-to shortcuts have no off/remap (lib/hotkeys.ts:49-70; WCAG 2.1.4 requires disable/remap/focus-only); role=button search rows miss Space (ExplorerPage.tsx:449). AC: Settings toggle "atajos de una tecla" gating useGoToHotkey; add ' ' to the handler. WCAG 2.1.4/2.1.1. (P2-5, P3)

Full detail: memory/fable_a11y_audit_2026-07-05.md.


Upstream: VforVitorio#890

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions