Skip to content

feat(ui): accessibility primitives, skip link, scroll affordances and separator system (DS-077…DS-080) - #505

Merged
IbrahimIjai merged 1 commit into
SO4-Markets:mainfrom
0xsteins:drip
Jul 30, 2026
Merged

feat(ui): accessibility primitives, skip link, scroll affordances and separator system (DS-077…DS-080)#505
IbrahimIjai merged 1 commit into
SO4-Markets:mainfrom
0xsteins:drip

Conversation

@0xsteins

Copy link
Copy Markdown
Contributor

closes #488 - Adds shared VisuallyHidden and LiveRegion primitives: hidden content stays in the a11y tree, can wrap semantic elements, and reveals itself when focus enters without shifting layout.
LiveRegion renders the right live/atomic/role attributes per mode and exposes announcementKey / useAnnouncer() as the documented way to re-announce an identical message.

closes #489 - Adds SkipLink as the shell's first focusable element and a stable

target in AppShell; activating it focuses the main region without putting a hash in the URL.
RouteAnnouncer moves focus to the new page heading and announces its title once per pathname change — query-only and tab-only changes are ignored, and focus is handed over with preventScroll so pointer users get no jump or ring. Playwright covers activation and post-navigation focus.

closes #490 - Rewrites ScrollArea on native scrolling with vertical/horizontal/both modes and optional start/end edge shadows that appear only when content exists in that direction.
Edge state is written as data-overflow-* attributes rather than React state, so scrolling triggers zero re-renders; scrollbars use surface/border tokens and stay visible in forced-colors mode, and the user's visible-scrollbar preference is never overridden.

closes #491 - Refines Separator with subtle/default/strong tones, both orientations, and a decorative mode that is hidden from assistive tech; vertical rules work in flex layouts with no fixed parent height.
Adds a labeled Divider (start/center/end) whose rules are decorative and whose label is plain, contrast-checked text, plus DESIGN.md guidance on when spacing or surface contrast should replace a separator instead.

Notes for the reviewer: new gallery sections mean the design-system visual baselines need regenerating (bun run test:e2e -- design-system-visual --update-snapshots). ScrollArea no longer wraps Base UI's scroll-area — its custom scrollbars hide the native ones and disappear in forced-colors mode, which contradicts two of #490's acceptance criteria.

…ow detection

- Introduced ScrollArea component with customizable orientation and edge shadows.
- Added useOverflowEdges hook to manage scroll position affordances without re-renders.
- Enhanced styling for scrollbars in the ScrollArea.
- Created Separator and Divider components with accessibility features and customizable tones.
- Added SkipLink component for improved navigation and accessibility.
- Implemented VisuallyHidden component for screen-reader-only content.
- Added tests for all new components to ensure functionality and accessibility compliance.
@vercel

vercel Bot commented Jul 30, 2026

Copy link
Copy Markdown

@0xsteins is attempting to deploy a commit to the Ijai's projects Team on Vercel.

A member of the Team first needs to authorize it.

@drips-wave

drips-wave Bot commented Jul 30, 2026

Copy link
Copy Markdown

@0xsteins Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@IbrahimIjai
IbrahimIjai merged commit c4eae95 into SO4-Markets:main Jul 30, 2026
0 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants