Skip to content

feat(a11y): improve accessibility across all pages#7

Closed
bokiko wants to merge 2 commits intomainfrom
auto/improve-2026-03-19-accessibility
Closed

feat(a11y): improve accessibility across all pages#7
bokiko wants to merge 2 commits intomainfrom
auto/improve-2026-03-19-accessibility

Conversation

@bokiko
Copy link
Owner

@bokiko bokiko commented Mar 19, 2026

Summary

Accessibility pass across the entire site. No new dependencies. Build passes clean.

Changes

Skip-to-content links

Community, download, and dashboard pages were missing the skip-to-content link that home already had. Added to all three pages with matching id="main-content" on the <main> element.

Active navigation state

Added aria-current="page" to active links in Navbar (both desktop and mobile menus). Screen readers now announce which page is currently active.

Landmark regions with labels

Added aria-labelledby to major <section> elements on the home and community pages, using id attributes on the corresponding <h2> headings. Screen reader users navigating by landmarks now get meaningful section names.

Dashboard charts

Recharts renders to <canvas> / SVG that screen readers cannot interpret. Wrapped each chart in role="img" with aria-labelledby pointing to the visible h3 heading.

Results table

Added scope="col" to all <th> elements and aria-label on the <table> itself so screen readers correctly associate headers with data cells.

Decorative icons

Added aria-hidden="true" to purely decorative Lucide icons (Download, Construction, animated status dot) to prevent redundant screen reader announcements.

Download button state

Added aria-label and aria-disabled to the download anchor during loading state for clear announcement of loading vs ready state.

sr-only utility

Added .sr-only CSS utility to globals.css — standard visually-hidden pattern used for the community preview features section heading.

Files changed

  • web/src/app/globals.css
  • web/src/components/Navbar.tsx
  • web/src/app/page.tsx
  • web/src/app/community/page.tsx
  • web/src/app/dashboard/page.tsx
  • web/src/app/download/page.tsx

Lines

+57 / -27

- Add skip-to-content link on community, download, and dashboard pages
  (home page already had it; now all pages are consistent)
- Add aria-current="page" to active navigation links in Navbar,
  both desktop and mobile menus — screen readers now announce current page
- Add aria-labelledby to major page sections (Features, How It Works,
  Supported Games on home; Preview Features on community) using matching
  id attributes on h2 elements
- Add role="region" + aria-label to dashboard charts container
- Add role="img" + aria-labelledby to individual chart wrappers
  (Recharts canvases are opaque to screen readers)
- Add scope="col" to all dashboard table headers for correct
  cell-header associations in screen readers
- Add aria-label="Recent ping test results" to the results table
- Add aria-hidden="true" to purely decorative icons (Download, Construction,
  animated status dot) so screen readers skip them
- Add aria-label and aria-disabled to download button for clear state
  announcement during loading
- Add .sr-only utility class to globals.css (visually hidden but
  accessible to assistive tech) — used for the preview features section
  heading on the community page

No new dependencies. No existing features removed. Build passes clean.
@chatgpt-codex-connector
Copy link

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

bokiko pushed a commit that referenced this pull request Mar 20, 2026
- Wrap all dashboard derived values in useMemo (PR #8)
- Add skip-to-content links on dashboard, community, download pages (PR #9)
- Add ARIA labels to stat cards, charts, table cells (PR #9)
- Add scope="col" on table headers, <time> on timestamps (PR #9)
- Add aria-label on nav, aria-haspopup on mobile toggle, role="menu" (PR #9)
- Add aria-current="page" on active nav links (PR #7)
- Add aria-labelledby on home page sections (PR #7)
- Add .sr-only CSS utility class (PR #7)

Closes #8, closes #9. Supersedes #7.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@bokiko bokiko closed this Mar 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant