-
Notifications
You must be signed in to change notification settings - Fork 0
Accessibility
Mirabelle Doiron edited this page Mar 29, 2026
·
1 revision
Built into the site regardless of a11y mode.
- Skip-to-content link -- first focusable element, visible on focus
- WAI-ARIA Tabs -- Base UI provides built-in keyboard navigation for theme mode and CVD type tabs
-
Screen reader announcements --
aria-live="polite"region announces theme generation and clipboard copy events viaAnnounceContext -
Focus management -- focus moves to
<main>on route transitions (skips on initial load) -
Reduced motion --
prefers-reduced-motionmedia query disables all CSS transitions;useReducedMotionhook available for JS logic -
Semantic HTML --
<table>with<caption>,<fieldset>/<legend>for forms,<nav>,<section>,<article>,<ol>/<ul>for lists -
Interactive swatches -- rendered as
<button>elements with descriptivearia-label(e.g. "primary: #6366f1. Click to copy.") - Tooltips -- all icon buttons in the navbar show visible labels on hover/focus via shadcn Tooltip
-
Toggle state --
aria-pressedon all mode toggle buttons
When the a11y toggle is activated, these additional overrides apply on top of the baseline:
- True black/white foreground colors for maximum contrast
- 112.5% root font-size (18px base)
- 3px solid focus rings with 4px offset
- All links underlined (not identified by color alone)
- All CSS and JS animations disabled
apps/web/src/components/layout/SkipLink.tsx-
apps/web/src/components/layout/RootLayout.tsx-- focus management -
apps/web/src/context/AnnounceContext.tsx-- live region provider apps/web/src/hooks/useReducedMotion.ts-
apps/web/src/index.css--.a11yCSS overrides