Skip to main content

Accessibility

boodoo follows common web standards, and can easily be adapted to meet the WCAG 2.1 AA requirements with the proper markup and configuration.

Summary of accessibility features

  • Focus visible: boodoo suppresses the focus ring only for mouse users (:focus:not(:focus-visible)) and keeps it for keyboard navigation.
  • Skip link: the docs layout ships with a visually-hidden-focusable "skip to main content" link.
  • Reduced motion: all animations and transitions respect prefers-reduced-motion: reduce.
  • ARIA roles & states: components set aria-expanded, aria-selected, aria-busy, aria-labelledby, and use role="alert" / role="dialog" where appropriate.
  • Keyboard: modals trap focus, dropdowns close with Esc, carousels support arrow keys.
  • Color contrast: the default palette meets AA contrast on white, and subtle/emphasis variants are provided.
  • Touch: 44px minimum interactive target sizes to satisfy touch accessibility guidelines.

Reduced motion

boodoo includes a media query that disables animations and transitions for users who prefer reduced motion:

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

Color contrast

Some combinations of colors that make up boodoo's default palette may not have sufficient contrast on certain backgrounds. You can adjust these via the Sass variables, or use the -subtle background/border helpers and -emphasis text helpers to tune it per component.

Tip: use the .visually-hidden helper for content that should be available to assistive technologies but hidden visually.