Frontend M4 polish: ARIA tab semantics for authority kind tabs + remove unused i18n keys #32

Closed
opened 2026-06-04 07:43:34 +00:00 by logaritmisk · 0 comments
Owner

Minor cleanups from the Milestone 4 final review (non-blocking, bundled):

  1. ARIA tab semantics — the authority kind selector (web/src/authorities/authorities-page.tsx) renders the person/organisation/place tabs as plain NavLinks styled as tabs, with no role="tablist" / role="tab" / aria-selected. They work, but screen-reader users don't get tab semantics. Either adopt proper tab roles or a shadcn Tabs primitive driven by the route.

  2. Unused i18n keysvocab.title and authorities.title are defined in both en.json and sv.json but never referenced (the nav uses the nav.* keys instead). Either use them as visible page/section headings on the respective screens, or remove them. (en/sv parity must be preserved either way.)

Both are cosmetic/a11y polish; no functional impact.

Minor cleanups from the Milestone 4 final review (non-blocking, bundled): 1. **ARIA tab semantics** — the authority kind selector (`web/src/authorities/authorities-page.tsx`) renders the person/organisation/place tabs as plain `NavLink`s styled as tabs, with no `role="tablist"` / `role="tab"` / `aria-selected`. They work, but screen-reader users don't get tab semantics. Either adopt proper tab roles or a shadcn Tabs primitive driven by the route. 2. **Unused i18n keys** — `vocab.title` and `authorities.title` are defined in both `en.json` and `sv.json` but never referenced (the nav uses the `nav.*` keys instead). Either use them as visible page/section headings on the respective screens, or remove them. (en/sv parity must be preserved either way.) Both are cosmetic/a11y polish; no functional impact.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: logaritmisk/biggus-dickus#32