Accessibility
Last updated on 2026-08-30
The kit is built with WCAG AA accessibility as a baseline. Every component, from product cards to Stripe Checkout redirect, follows accessible patterns.
Accessibility Features
Keyboard Navigation
- All interactive elements are keyboard-accessible
- Tab order follows logical reading order
- Focus indicators are visible on all focusable elements (
focus-visible:ring-2) - Dialogs and sheets trap focus and return it on close
- Cart drawer, filter panel, and checkout steps are fully keyboard-operable
Screen Reader Support
- Semantic HTML throughout:
<nav>,<main>,<footer>,<article> - One
<h1>per page with no heading level skips - All images have descriptive
alttext - Icon-only buttons have
aria-labelattributes - Form fields have associated
<label>elements - Validation errors use
aria-invalidandaria-describedby - Product listings use ARIA roles to announce product, price, and availability together
Color and Contrast
- All text meets WCAG AA contrast ratio (4.5:1 for normal text, 3:1 for large text)
- Status indicators use color + text + icon (never color alone)
- Both light and dark themes maintain contrast compliance
- Focus rings are visible against all backgrounds
Reduced Motion
prefers-reduced-motionis respected throughout:@media (prefers-reduced-motion: reduce) { .animate-fade-in-up, .animate-float, .animate-scale-in { animation: none; opacity: 1; transform: none; } }- Product carousels, page transitions, and hover effects are disabled for users who prefer reduced motion
Touch Targets
- All interactive elements meet the 44x44px minimum touch target size
- Small visual elements (carousel dots, tag pills) use padding to increase the touch area
- Filter buttons use
min-h-11 px-3for comfortable touch
Skip Link
Every page includes a skip-to-content link that becomes visible on focus, allowing keyboard users to bypass navigation.
Form Accessibility
- Required fields are marked with a red asterisk
- Validation errors appear inline below the field
- Error fields have
aria-invalid="true"and link to error text viaaria-describedby - Submit buttons show loading state during async operations
Checkout Accessibility
The multi-step checkout flow is designed for inclusivity:
- Step indicators use both visual progress and text labels
- Form validation announces errors to screen readers
- The Stripe Checkout redirect is announced before the user leaves the page
- Order confirmation is readable by screen readers with structured data
Admin Accessibility
Admin tables and forms follow the same standards:
- Sortable table headers have
aria-sortattributes - Data tables use proper
<thead>,<tbody>, and<th>elements - Action menus have descriptive labels
- Status badges use icon + text, not color alone