Files
descrybe/docs/a11y-notes.md
T

33 lines
1.3 KiB
Markdown
Raw Normal View History

# Accessibility notes (Descrybe v2 web)
Critical fixes from the a11y pass (keyboard / focus / ARIA).
## Sidebar (`Nav.svelte`)
- Mobile drawer uses `inert` + `aria-hidden` when closed so off-canvas links are not in the Tab order.
- Open drawer traps focus; **Escape** closes it.
- Hamburger `aria-controls="app-sidebar"` matches the aside `id`; label toggles Open/Close.
- Nav links expose `aria-current="page"`; **More** uses `aria-expanded` / `aria-controls`.
- Primary **Stores** points at `/stores` (`data-tour="nav-stores"`).
## Focus traps
Shared helper: `src/lib/a11y/focus-trap.ts`.
| Surface | Behavior |
|---------|----------|
| `Dialog.svelte` | Tab cycle inside panel; focus restored on close; Escape closes |
| Tutorial popover | Tab cycle = popover controls **+** highlighted `data-tour` target (so forced steps stay keyboard-reachable); Escape pauses |
| Mobile sidebar | Tab cycle while drawer open |
## Store hub (`/stores`)
- Landmark `section` with accessible heading (sr-only).
- Each connector is an `article` with labelled title + CTA `aria-label`.
- Status badges include an accessible name (`Status: …`).
## Remaining (non-blocking)
- Individual feature dialogs that bypass `ui/Dialog` should adopt the same trap.
- Live axe/browser keyboard audit on every route still recommended before production.