MiHCM
layout/@mihcm/ui·v0.21.0·stable

ScrollArea

Custom-styled scrollable container with thin translucent scrollbars. Powered by Radix.

WCAG 2.1 AA — release blocker

ScrollArea must satisfy these on every render before it ships.

Web (React DOM)

  • Renders a div with overflow: hidden and an internal viewport.
  • Scrollbar is a separate DOM element — purely decorative, does not interfere with native scroll semantics.
  • The viewport is the actual scrollable container and retains native scroll behavior.
  • Content inside ScrollArea is fully keyboard-navigable (Tab through focusable elements).

Keyboard

KeyAction
TabMove focus through items inside the scroll area.
Arrow Up/DownScroll vertically (native browser behavior).
Page Up/DownScroll by one viewport height.
Home / EndScroll to top / bottom.

Touch

Touch scrolling works natively — the scrollbar has touch-none but the viewport handles touch gestures.

React Native

  • ScrollArea wraps React Native's ScrollView on native.

Audit checklist

  • Content inside scroll area is Tab-navigable
  • Scrollbar does not steal focus
  • Touch scroll works on mobile
  • Viewport respects prefers-reduced-motion for smooth-scroll