Accessibility

Accessibility compliance matrix for all interactive SmoothUI components covering keyboard support, ARIA roles, screen reader behavior, and reduced motion.

Last updated: March 29, 2026

Overview

Every SmoothUI component is built with accessibility in mind. Interactive components follow WAI-ARIA design patterns and support keyboard navigation, screen readers, and reduced motion preferences.

This page provides a quick reference for the accessibility features of each interactive component.


Compliance Matrix

Overlay & Dialog Components

ComponentKeyboard SupportARIA RolesScreen ReaderReduced Motion
Basic ModalEscape closes, Tab traps focusrole="dialog", aria-modal, aria-labelledbyFocus moves to close button on open, announced via titleScale/slide entrance and backdrop fade disabled
Basic ToastAuto-dismiss, focusable dismiss buttonrole="alert", aria-live="polite"Announced automatically via live regionSlide-in animation disabled
Rich PopoverEscape closes, Tab navigates contentaria-expanded, aria-haspopupTrigger state announced on toggleScale/fade transitions disabled
Gooey PopoverEscape closesaria-expandedContent announced on openGooey morph effect disabled, instant show/hide

Button & Action Components

ComponentKeyboard SupportARIA RolesScreen ReaderReduced Motion
Smooth ButtonEnter/Space activatesNative <button> semanticsStandard button announcementHover/press scale animation disabled
Magnetic ButtonEnter/Space activatesNative <button> semanticsStandard button announcementMagnetic follow effect disabled
Dot Morph ButtonEnter/Space activatesNative <button> semanticsStandard button announcementDot morph transition disabled
Clip Corners ButtonEnter/Space activatesNative <button> semanticsStandard button announcementCorner clip animation disabled
Button CopyEnter/Space copiesaria-label for copy actionAnnounces copy state changeIcon swap animation disabled
Power Off SlideKeyboard drag via arrow keysrole="slider", aria-valuenowValue announced on changeSlide animation disabled
ComponentKeyboard SupportARIA RolesScreen ReaderReduced Motion
Animated TabsArrow Left/Right switches tabsrole="tablist", role="tab", role="tabpanel"Active tab announcedIndicator slide animation disabled
AccordionEnter/Space toggles, arrow keys navigatearia-expanded, aria-controlsExpanded/collapsed state announcedExpand/collapse animation disabled
Basic DropdownEnter/Space opens, arrows navigate, Escape closesrole="menu", role="menuitem", aria-expandedMenu items announced with positionOpen/close animation disabled
Searchable DropdownType to filter, arrows navigate, Enter selects, Escape closesrole="combobox", role="listbox", aria-expandedFiltered results count announcedDropdown animation disabled
Social SelectorArrow keys navigate optionsrole="radiogroup", role="radio"Selection announced on changeSelection indicator animation disabled
PhototabArrow keys switch, Enter selectsrole="tablist"Active tab announcedTab transition disabled

Input & Form Components

ComponentKeyboard SupportARIA RolesScreen ReaderReduced Motion
Animated InputStandard input keyboard behavioraria-label or aria-labelledbyLabel announced on focusFloat label animation disabled
Animated OTP InputTab between digits, backspace clearsaria-label per digit inputEach digit field announcedDigit entrance animation disabled
Animated TagsEnter adds tag, Backspace removes lastaria-label for tag listTag add/remove announced via live regionTag entrance/exit animation disabled
Animated ToggleEnter/Space togglesrole="switch", aria-checkedOn/off state announcedToggle slide animation disabled
Exposure SliderArrow keys adjust valuerole="slider", aria-valuenow, aria-valuemin, aria-valuemaxCurrent value announcedSlider animation disabled
Animated File UploadEnter/Space opens file pickeraria-label for upload zoneFile selection announcedUpload progress animation disabled

Card & Content Components

ComponentKeyboard SupportARIA RolesScreen ReaderReduced Motion
Expandable CardsEnter/Space expands, Escape collapsesaria-expandedCard title announced, expanded content readableExpand/collapse spring animation disabled
Glow Hover CardFocusable via TabStandard card semanticsCard content announcedGlow effect disabled
Switchboard CardTab focuses, Enter activatesButton or link semanticsCard content announcedFlip/switch animation disabled
Product CardTab focuses interactive elementsSemantic HTML structureProduct details announcedHover animations disabled

Visual & Decorative Components

ComponentKeyboard SupportARIA RolesScreen ReaderReduced Motion
Siri OrbN/A (decorative)aria-hidden="true"Hidden from screen readersAnimation paused
Animated Progress BarN/A (display only)role="progressbar", aria-valuenowProgress value announcedFill animation disabled
Skeleton LoaderN/A (display only)aria-busy="true", aria-labelLoading state announcedShimmer animation disabled
Grid LoaderN/A (display only)aria-busy="true"Loading state announcedGrid animation disabled
Notification BadgeN/A (decorative indicator)aria-label with countBadge count announcedEntrance animation disabled
Animated StepperN/A (display only)aria-current="step"Current step announcedStep transition animation disabled

Reduced Motion Support

All SmoothUI animated components use the useReducedMotion hook from Motion. When a user has prefers-reduced-motion: reduce enabled in their operating system:

  • Spring animations are replaced with instant transitions (duration: 0)
  • Decorative animations (orbs, loaders, shimmer) are paused or hidden
  • Functional transitions (expand/collapse, tab switches) complete instantly while preserving the state change
  • No content is lost — all information remains accessible

Testing Reduced Motion

To test reduced motion behavior during development:

  1. macOS: System Settings → Accessibility → Display → Reduce motion
  2. Windows: Settings → Accessibility → Visual effects → Animation effects (off)
  3. Chrome DevTools: Open Rendering tab → Emulate CSS media feature prefers-reduced-motion

General Accessibility Practices

SmoothUI components follow these principles:

  1. Semantic HTML — Native elements (<button>, <nav>, <dialog>) are preferred over divs with ARIA roles
  2. Focus management — Modal components trap focus; focus is restored on dismiss
  3. Keyboard navigation — All interactive components are fully operable via keyboard
  4. Color contrast — Components use theme tokens that should meet WCAG 2.1 AA contrast ratios
  5. Screen reader compatibility — Tested with VoiceOver (macOS) and NVDA (Windows)

Reporting Issues

If you find an accessibility issue with any SmoothUI component, please open an issue on GitHub with the "accessibility" label. We take a11y seriously and aim to fix issues promptly.