From 66717c4198f9606929dbd20959fc2937b9bc7081 Mon Sep 17 00:00:00 2001 From: varutasu <104105839+varutasu@users.noreply.github.com> Date: Wed, 27 May 2026 14:22:18 -0500 Subject: [PATCH] fix(scanner): close redesign a11y audit findings (#45) Add focus traps for modals, accessible names for icon/select controls, ownership badge role=status, list semantics for the scan queue, and aria-live updates for the card count. Co-authored-by: Cursor --- .../audit-redesign-scanner-flow-44.md | 2 +- .convoys/scanner-redesign-a11y-fixes.md | 30 ++++++++ components/CameraScanner.js | 15 ++-- components/ScannedCardItem.js | 13 +++- lib/use-focus-trap.js | 64 ++++++++++++++++ pages/scanner.js | 74 ++++++++++++------- 6 files changed, 162 insertions(+), 36 deletions(-) create mode 100644 .convoys/scanner-redesign-a11y-fixes.md create mode 100644 lib/use-focus-trap.js diff --git a/.convoys/redesign-scanner-flow/audit-redesign-scanner-flow-44.md b/.convoys/redesign-scanner-flow/audit-redesign-scanner-flow-44.md index daa4547..c43e1fc 100644 --- a/.convoys/redesign-scanner-flow/audit-redesign-scanner-flow-44.md +++ b/.convoys/redesign-scanner-flow/audit-redesign-scanner-flow-44.md @@ -24,7 +24,7 @@ Reports posted to [PR #44](https://github.com/varutasu/tcg-vault/pull/44#issueco | Slug | Priority | Source | | --- | --- | --- | -| `scanner-redesign-a11y-fixes` | P1 | A11y audit — ownership badge role, modal focus traps, unlabeled selects/buttons | +| `scanner-redesign-a11y-fixes` | P1 | **In progress** — PR pending | | `scanner-user-cards-quantity-guard` | P2 | Reviewer — parseInt/NaN guard parity with decks handler | | `test-scanner-redesign-surfaces` | P2 | Reviewer — unit tests for new components + upload route | | `document-condition-foil-destination-semantics` | P3 | Reviewer — clarify or migrate condition/foil for collection/deck rows | diff --git a/.convoys/scanner-redesign-a11y-fixes.md b/.convoys/scanner-redesign-a11y-fixes.md new file mode 100644 index 0000000..4d86d24 --- /dev/null +++ b/.convoys/scanner-redesign-a11y-fixes.md @@ -0,0 +1,30 @@ +--- +name: scanner-redesign-a11y-fixes +classification: fix +success_metric: | + Post-audit a11y gaps from audit-redesign-scanner-flow-44 closed: ownership + badge exposed to AT, icon/select controls labeled, modals trap focus, queue + uses list semantics and live count updates. +depends_on: + - redesign-scanner-flow +status: open +created: 2026-05-27 +--- + +# Convoy: scanner-redesign-a11y-fixes + +Closes P1 follow-up from `audit-redesign-scanner-flow-44`. + +## Scope + +- `components/ScannedCardItem.js` — ownership `role="status"`, labeled selects/buttons +- `components/CameraScanner.js` — camera control labels, disambiguation focus trap, video label, heading fix +- `pages/scanner.js` — create-collection modal a11y, bulk toolbar labels, queue list semantics, live count +- `lib/use-focus-trap.js` (new) — shared modal focus trap + +## Acceptance criteria + +1. Ownership badge announced by screen readers. +2. All icon-only and placeholder `