Accessibility

Last updated on 2026-02-25

The SaaS Starter Kit inherits all accessibility features from the AI UX Kit and adds accessible patterns for authentication forms, data tables, and settings pages.

Foundation: Radix UI

All interactive components are built on Radix UI — a headless library implementing WAI-ARIA design patterns. This gives you proper ARIA attributes, keyboard navigation, and focus management out of the box.

Keyboard Navigation

Key Action
Tab Move focus to next focusable element
Shift+Tab Move focus to previous element
Enter / Space Activate buttons, links, toggles
Escape Close dialogs, menus, popovers
Arrow Keys Navigate menu items, tabs, table rows
Home / End Jump to first/last item

Authentication Forms

Auth recipe components include accessibility features:

  • Labels for every input field (visible, not placeholder-only)
  • Error messages linked to inputs via aria-describedby
  • Password visibility toggle with aria-label
  • OTP input with aria-label per digit and auto-advance
  • Social login buttons with clear aria-label text
  • Form validation errors announced via aria-live="polite"

Data Tables

The Data Table component uses semantic HTML:

  • <table>, <thead>, <tbody>, <th>, <td>
  • Sortable columns announce sort direction via aria-sort
  • Pagination controls labeled with aria-label
  • Row selection uses checkboxes with proper labels

Focus Management

  • Focus trap in all modal dialogs and drawers
  • Focus restoration — focus returns to trigger when overlays close
  • Visible focus ring on all interactive elements during keyboard navigation
  • Skip navigation can be added for page-level jumping

Color Contrast

Design tokens meet WCAG 2.1 AA contrast ratios:

  • Body text: minimum 4.5:1
  • Large text: minimum 3:1
  • Interactive elements: minimum 3:1

Best Practices

  1. Use the Field component to wrap form inputs with labels and error messages
  2. Add aria-live="polite" regions for dynamic content updates
  3. Use semantic HTML — <nav>, <main>, <aside>, <section>
  4. Test authentication flows with a screen reader
  5. Ensure all actions are reachable via keyboard (no mouse-only interactions)