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.

Test the focusable skip link by clicking below and pressing Tab:

Skip to main content (Press Tab to reveal the skip button)
<a class="visually-hidden-focusable btn btn-primary" href="#main-content">
  <span>Skip to main content</span>
</a>

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. See the visually hidden guide.

Accessibility Verification Matrix

To provide full transparency, Boodoo documents the explicit verification status and methodology for WCAG 2.1 & 2.2 AA accessibility criteria:

Verification Category Standard / Target Verification Status Implementation & Methodology
Keyboard Navigation WCAG 2.1.1 (Level A) Verified Roving tabindex on Tabs, TreeView, and Menus; Esc key handling on Modals/Dropdowns; Arrow keys on Combobox and Carousel.
Focus Management & Trapping WCAG 2.4.3 (Level A) Verified Active focus trap in Modals, Dialogs, and Command Palette; focus restored to invoking trigger element on teardown.
Visible Focus Indicators WCAG 2.4.7 / 2.4.11 (Level AA) Verified Dual-ring focus indicators using :focus-visible; suppressed for pure pointer events with zero focus loss.
Color Contrast WCAG 1.4.3 (Level AA) Verified Core primary, success, danger, dark tokens meet 4.5:1 text and 3:1 graphical object contrast. Specific subtle variants require appropriate emphasis text classes.
Screen Reader & Live Announcements WCAG 4.1.2 / 4.1.3 (Level AA) Verified Built-in a11y.announce() with polite and assertive ARIA live regions for toasts, streaming chat, and dynamic alerts.
Reduced Motion WCAG 2.3.3 (Level AAA) Verified Sitewide prefers-reduced-motion: reduce clamp setting animation/transition durations to 0.01ms.
Touch Target Size WCAG 2.5.8 (Level AA) Verified Interactive controls enforce 44px minimum target dimensions or touch padding bounding boxes.
Automated Accessibility Auditing axe-core / Lighthouse Continuous CI Automated test suites in tests/framework.test.mjs enforce semantic tags, mandatory form IDs, and ARIA attributes.