Skip to content

fix(ui): a11y skip link + focus rings for info links and refresh button#113

Merged
comnam90 merged 2 commits into
developfrom
fix/a11y-skip-link-focus-rings
May 25, 2026
Merged

fix(ui): a11y skip link + focus rings for info links and refresh button#113
comnam90 merged 2 commits into
developfrom
fix/a11y-skip-link-focus-rings

Conversation

@comnam90
Copy link
Copy Markdown
Owner

Summary

Closes the remaining a11y gaps from #79 and #80. The mission control redesign (#103) already covered part of each issue — the aria-live="polite" on the region counter (for #80) and the shared .ctl:focus-visible rule that styles all five top-bar control buttons (for #79). This PR finishes the rest:

  • Skip-to-content link — A new <a href="#map" class="skip-link">Skip to map</a> is inserted as the first child of <body>. Hidden offscreen until focused, then slides in with the accent background. (Closes a11y: add skip-to-content link and aria-live region for filter results #80.)
  • .info-link:focus-visible — All seven info-panel anchors (GitHub, API docs, Veeam product, three issue-template links, etc.) now show the same accent outline as .ctl:focus-visible.
  • Refresh Page button — The inline location.reload() button in the #mapError overlay gets focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white so the outline is visible against the green background. This button uses Tailwind utility classes for everything else, so the focus styles match local context rather than the design-token approach used elsewhere.

All other focus rings follow the established house style: outline: 2px solid var(--accent) with a 2px offset, keeping them theme-aware (visible in both dark and light modes).

Test plan

  • Tab from page load — the "Skip to map" link should appear in the top-left with the accent background.
  • Press Enter on the skip link — viewport should jump past the header to the map area.
  • Open the info panel, Tab through the seven links — each should show an accent outline ring.
  • Trigger map-init failure (e.g. throw in renderMap via DevTools), Tab to the Refresh Page button — white outline visible against the green background.
  • Repeat the above in light mode — var(--accent) is theme-aware so rings should remain visible.
  • CI (pr-validation.yml, validate-data.yml) passes.

🤖 Generated with Claude Code

…nel links and refresh button

Completes the remaining a11y work from #79 and #80 that the mission control
redesign (#103) did not cover:

- Add a "Skip to map" link as the first focusable child of <body> so
  keyboard users can bypass the header and jump straight to #map.
- Add `.info-link:focus-visible` so the seven info-panel anchors show the
  same accent outline as `.ctl:focus-visible`-styled controls.
- Add Tailwind focus-visible utilities to the inline "Refresh Page" button
  in the map-error overlay (white outline against its green background).

All focus rings follow the existing house style (outline + accent token)
established by the mission control redesign.

Closes #79
Closes #80
@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented May 25, 2026

Deploying veeam-data-cloud-services-map with  Cloudflare Pages  Cloudflare Pages

Latest commit: 330f1e4
Status: ✅  Deploy successful!
Preview URL: https://6323d53f.veeam-data-cloud-services-map.pages.dev
Branch Preview URL: https://fix-a11y-skip-link-focus-rin.veeam-data-cloud-services-map.pages.dev

View logs

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR addresses remaining accessibility gaps in the single-page map UI (layouts/index.html) by adding a keyboard “skip to content” affordance and consistent :focus-visible styling for key links/buttons.

Changes:

  • Added a “Skip to map” link at the top of <body> with new .skip-link styling.
  • Added :focus-visible outline/offset styling for .info-link anchors in the info panel.
  • Added focus-visible outline utilities to the “Refresh Page” button in the map error overlay.

Comment thread layouts/index.html Outdated
Comment thread layouts/index.html
- Skip-link focus ring now uses var(--text) instead of var(--accent) so it
  has clear contrast against both the link's green background and the page
  bg in either theme (per Copilot review).
- Added tabindex="-1" to #map so the skip link reliably transfers keyboard
  focus, not just the viewport, before Leaflet inits and in the #mapError
  fallback (per Copilot review).
- Updated the "should be keyboard navigable" Playwright test to verify the
  skip link becomes the first tab stop and adjusted subsequent assertions.
@comnam90 comnam90 merged commit 8854f73 into develop May 25, 2026
4 checks passed
@comnam90 comnam90 deleted the fix/a11y-skip-link-focus-rings branch May 25, 2026 06:44
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.

a11y: add skip-to-content link and aria-live region for filter results

2 participants