fix(a11y): distinct landmark names, a working skip link, and no unnamed banner landmark #169
Inga granskare
Etiketter
Inga etiketter
area/backups
area/ci
area/control-panel
area/identity
area/infra
area/observability
area/payments
area/security
area/storage
area/web
blocked
needs-info
needs-triage
ready-for-implementation
type
bug
type
chore
type
docs
type
epic
type
feature
type
task
wontfix
Ingen milstolpe
Inget projekt
Inga tilldelade
1 deltagare
Notiser
Förfallodatum
Inget förfallodatum satt.
Beroenden
Inga beroenden satta
Referens
bitborg/bitborg-web!169
Läser in…
Hänvisa till i nytt ärende
Ingen beskrivning angiven.
Ta bort grenen "fix/nav-a11y-semantics"
Borttagning av en gren är permanent. Även om den borttagna grenen kan fortsätta existera en kort tid innan den faktiskt tas bort, kan det INTE ångras i de flesta fall. Vill du fortsätta?
Closes #157, closes #158, closes #168.
Three accessibility defects in the navigation landmarks and the skip link.
#157 — two
<nav>landmarks were both exposed as "Bitborg", so a screen reader's landmark listoffered the same name twice with no way to tell them apart. Renames them in both dictionaries, and
fixes two smaller problems in the same strings: landmark names that repeated their own role
("Main Navigation navigation"), and
nav.legal.label, which was the English word "Legal" sitting inthe Swedish dictionary as visible footer copy.
nav.app.labelnav.main.labelnav.secondary.labelnav.legal.labelThe full landmark set was checked in both languages, not just the two named ones — all distinct, and
nav.secondary.labeldoes not collide with the account panel's own "Account links" landmark.#158 —
<main id="main-content">had notabindex="-1", so WebKit scrolled without movingfocus and the next Tab walked straight back into the header. That is every browser on iOS. Verified
that the outline behaviour is unchanged for mouse users: the only global focus rule is
:focus-visible, which a mouse click on atabindex="-1"element does not match.#168 — the announcement banner rendered a
<nav>with no accessible name, so it appeared in thelandmark list as a bare "navigation". Rendered as a
<div>instead of named: a single promotionallink is not a navigation region. Styling keys off the
.bannerclass, not the element.Verification
pnpm lint,pnpm check(0 errors),pnpm lang-checkandpnpm test(206 passing) all clean.src/lib/nav.test.tsuntouched.Not covered
#158's acceptance is stated in terms of real Safari behaviour; the mechanism and the CSS wereverified statically, but no device test was run.
2fc3d70c912272837e13