Accessibility: Missing focus rings on all link elements (WCAG 2.1 AA) #189
Labels
No Label
P0
P1
P2
P3
accessibility
backend
bug
content
data-integrity
enhancement
frontend
infra
integration
owner
owner-input
performance
phase-7
phase-8
release-blocker
security
seo
ui
ux
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: null/Queue-North-Website#189
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Severity: Major
Description: External and internal links (
<a>,<Link>) throughout the site lack visible focus indicators, making keyboard navigation impossible to track visually. This fails WCAG 2.1 AA.Files affected:
src/components/layout/Header.jsx— desktop nav linkssrc/components/layout/Footer.jsx— footer linkssrc/components/layout/MobileNav.jsx— mobile nav linkssrc/pages/Home.jsx— hero CTA links, card linksFix direction: Add consistent
focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-cyan roundedto all interactive<a>and<Link>elements.Fixed in
9fdc6b6. One global :focus-visible rule in src/index.css covering a, button, [role=button], summary, input, select, textarea — Footer and Home had zero focus styling across 17 links.NOT the ring this issue specified. It asked for focus-visible:ring-primary-cyan; #22D3EE measures 6.26:1 on primary-navy and only 2.38:1 on white, so on a light-first design that ring fails WCAG 1.4.11 (3:1 for the indicator) across most of the site. Used a dual-tone ring instead — box-shadow: 0 0 0 2px #FFFFFF, 0 0 0 5px #0B2A3C — so the white layer carries the dark bands and the navy layer carries the light sections. Measured against every background in tailwind.config.js: worst case 13.62:1 on section-alt, best 17.64:1 on navy-dark.
Verified: the rule is in the built CSS (dist/assets/*.css contains 'focus-visible{box-shadow:0 0 0 2px #fff,0 0 0 5px #0b2a3c'). NOT verified by walking the site keyboard-only in a browser — that gap is recorded in docs/qa/ClaudeQACoverage.md.