UNPKG

claritykit-svelte

Version:

A comprehensive Svelte component library focused on accessibility, ADHD-optimized design, developer experience, and full SSR compatibility

206 lines 5.98 kB
/** * Accessibility Utilities for ClarityKit * * Comprehensive utilities for managing ARIA attributes, live regions, * keyboard navigation, and other accessibility features. */ /** * Generates a unique ID for ARIA associations */ export declare function generateId(prefix?: string): string; /** * Creates ARIA association attributes for form fields */ export interface AriaAssociationOptions { fieldId: string; labelId?: string; errorId?: string; helperId?: string; isInvalid?: boolean; isRequired?: boolean; } export declare function createAriaAssociations(options: AriaAssociationOptions): { id: string; 'aria-labelledby': string | undefined; 'aria-describedby': string | undefined; 'aria-invalid': string | undefined; 'aria-required': string | undefined; }; /** * Creates comprehensive ARIA attributes for form inputs */ export interface FormInputAriaOptions { id: string; required?: boolean; invalid?: boolean; disabled?: boolean; readonly?: boolean; labelId?: string; errorId?: string; helperId?: string; expanded?: boolean; hasPopup?: boolean | 'listbox' | 'menu' | 'tree' | 'grid' | 'dialog'; role?: string; multiline?: boolean; autocomplete?: string; } export declare function createFormInputAria(options: FormInputAriaOptions): { [k: string]: string | undefined; }; /** * Form validation announcements */ export declare function announceFormValidation(isValid: boolean, errorCount?: number, fieldName?: string): void; /** * Live Region Management */ export type LiveRegionPoliteness = 'polite' | 'assertive' | 'off'; export interface LiveRegionOptions { politeness?: LiveRegionPoliteness; atomic?: boolean; relevant?: 'additions' | 'removals' | 'text' | 'all'; timeout?: number; } declare class LiveRegionManager { private container; private regions; constructor(); private initialize; /** * Announces a message via live region */ announce(message: string, options?: LiveRegionOptions): void; /** * Removes a specific live region */ remove(regionId: string): void; /** * Clears all live regions */ clear(): void; /** * Updates container politeness level */ setPoliteness(politeness: LiveRegionPoliteness): void; } export declare const liveRegion: LiveRegionManager; /** * Convenience functions for common live region announcements */ export declare function announcePolitely(message: string, timeout?: number): void; export declare function announceAssertively(message: string, timeout?: number): void; export declare function announceStatus(message: string): void; export declare function announceError(message: string): void; /** * Form Validation Announcements */ export interface ValidationAnnouncementOptions { fieldName: string; isValid: boolean; errorCount?: number; errors?: string[]; } export declare function announceValidation(options: ValidationAnnouncementOptions): void; /** * Focus Management */ export interface FocusOptions { preventScroll?: boolean; restoreFocus?: boolean; } export declare class FocusManager { private focusStack; /** * Saves current focus for later restoration */ saveFocus(): void; /** * Restores the most recently saved focus */ restoreFocus(): void; /** * Sets focus to an element with options */ setFocus(element: HTMLElement | string, options?: FocusOptions): void; /** * Creates a focus trap within a container */ createFocusTrap(container: HTMLElement): () => void; } export declare const focusManager: FocusManager; /** * Keyboard Navigation Utilities */ export type NavigationDirection = 'horizontal' | 'vertical' | 'grid'; export interface KeyboardNavigationOptions { direction: NavigationDirection; wrap?: boolean; homeEndKeys?: boolean; enterActivates?: boolean; spaceActivates?: boolean; } export declare function createKeyboardNavigation(container: HTMLElement, options: KeyboardNavigationOptions): () => void; /** * Data Table Accessibility Utilities */ export interface TableAccessibilityOptions { caption?: string; summary?: string; sortable?: boolean; rowHeaders?: boolean; columnHeaders?: boolean; } export declare function enhanceTableAccessibility(table: HTMLTableElement, options: TableAccessibilityOptions): void; /** * Chart Accessibility Utilities */ export interface ChartAccessibilityOptions { title: string; description: string; data: Array<{ label: string; value: number | string; }>; type?: string; } export declare function createChartTextAlternative(options: ChartAccessibilityOptions): { titleId: string; descriptionId: string; tableId: string; ariaAttributes: Record<string, string>; }; /** * Reduced Motion Utilities */ export declare function prefersReducedMotion(): boolean; export declare function prefersHighContrast(): boolean; /** * Screen Reader Testing Utilities */ export declare function getAccessibleText(element: HTMLElement): string; /** * ARIA Live Region Testing */ export declare function getAriaLiveRegions(): HTMLElement[]; export declare function getAriaLiveContent(): string[]; /** * Form Key Navigation Handler */ export interface FormKeyNavigationOptions { onSubmit?: () => void; onCancel?: () => void; onNext?: () => void; onPrevious?: () => void; submitKeys?: string[]; cancelKeys?: string[]; nextKeys?: string[]; previousKeys?: string[]; } export declare function handleFormKeyNavigation(event: KeyboardEvent, options?: FormKeyNavigationOptions): void; /** * Convenience function for common announce patterns */ export declare function announce(message: string, priority?: LiveRegionPoliteness): void; export declare const manager: LiveRegionManager; export {}; //# sourceMappingURL=accessibility.d.ts.map