@lssm/lib.accessibility
Stable exports of accessibility primitives for LSSM web apps, ensuring WCAG compliance and inclusive design.
Installation
npm install @lssm/lib.accessibility # or bun add @lssm/lib.accessibility
Exports
SkipLink: A link to skip navigation, visible on focusVisuallyHidden: Hide content visually but keep it for screen readersSRLiveRegionProvider,useSRLiveRegion: Manage live region announcementsRouteAnnouncer: Announce page title/path changes on navigationFocusOnRouteChange: Reset focus to body or main content on navigationuseReducedMotion: Detect if the user prefers reduced motion
Example: App Setup
import {
SRLiveRegionProvider,
RouteAnnouncer,
SkipLink
} from '@lssm/lib.accessibility';
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
<SRLiveRegionProvider>
<SkipLink />
<RouteAnnouncer />
<main id="main-content">
{children}
</main>
</SRLiveRegionProvider>
</body>
</html>
);
}Example: Live Announcements
import { useSRLiveRegion } from '@lssm/lib.accessibility';
export function TodoList() {
const { announce } = useSRLiveRegion();
const addTodo = () => {
// ... add logic
announce('Todo added successfully', 'polite');
};
return <button onClick={addTodo}>Add Todo</button>;
}WCAG Compliance
These components map directly to WCAG 2.1 Level AA requirements documented in docs/accessibility_wcag_compliance_specs.md:
- 2.4.1 Bypass Blocks (SkipLink)
- 4.1.3 Status Messages (LiveRegion)
- 2.4.3 Focus Order (FocusOnRouteChange)
- 2.3.3 Animation from Interactions (useReducedMotion)