Documentation menu · Guides
Quality

Accessibility

AuraGlass ships focus, contrast, reduced-motion, keyboard, and provider guidance for accessible glassmorphism UI.

#Contrast

Glass UI fails fastest when text sits over unpredictable content. Use tinted surfaces, borders, and scrims to separate text from gradients, images, video, and charts. The goal is readable material, not maximum transparency.

Check every state, not just the default card: hover, active, selected, disabled, danger, warning, success, loading, and empty states. Dense data components should prioritize legibility over dramatic translucency.

Body text
Use strong text tokens and avoid placing small text directly over imagery
Borders
Increase border contrast when the backdrop is bright or busy
Charts
Check labels, legends, axis text, tooltips, and selected points
Overlays
Use a scrim or stronger surface fill when content behind the modal changes

#Focus and Keyboard

AuraGlass components should preserve visible focus rings and predictable keyboard order. Do not remove outlines in app CSS. For command palettes, drawers, dialogs, menus, and popovers, make sure focus moves into the surface when it opens and returns to the trigger when it closes.

Compound components should be used with their documented parents. Wrapping children in unrelated containers can break roving focus, labels, described-by relationships, or keyboard navigation. When customizing markup, keep labels and aria relationships attached to the interactive control.

Command palette
Search input receives focus; arrow keys move through commands
Drawer/modal
Escape closes; tab stays within active overlay when modal
Tabs
Arrow keys and selected state remain synchronized
Forms
Inputs have visible labels, errors, and focus states

#Reduced Motion in Accessible UI

Respect `prefers-reduced-motion` for background shimmer, parallax, springy transitions, counters, visualizers, and WebGL camera movement. Reduced motion should preserve meaning through stable state changes rather than continuous movement.

Media, canvas, realtime, and 3D surfaces should pause when hidden, stop decorative loops when reduced motion is enabled, and provide static fallbacks. A product can still feel premium without requiring constant animation.

css
@media (prefers-reduced-motion: reduce) {
  .app-shell * {
    animation-duration: 1ms;
    animation-iteration-count: 1;
    scroll-behavior: auto;
    transition-duration: 1ms;
  }
}

#Screen Readers and Labels

Glass surfaces are visual, but semantics still come from real HTML. Use headings for sections, labels for form controls, button text or aria labels for icon-only buttons, and live regions only when updates are important enough to interrupt.

Do not describe the visual material as the accessible name. A screen reader user needs to hear “Open billing drawer,” “Search commands,” or “Pause media,” not “glass button.”