/** * @file Automatic Accessibility Enhancements * @description PhD-level automatic accessibility system with focus management, * dynamic ARIA injection, motion preferences, and contrast adjustment. * * Features: * - Auto focus management on navigation * - Dynamic ARIA attribute injection * - Motion preference detection and adaptation * - Automatic contrast adjustment * - Keyboard navigation enhancement * - Screen reader optimizations */ /** * Accessibility preferences */ export interface AccessibilityPreferences { /** Prefers reduced motion */ reducedMotion: boolean; /** Prefers high contrast */ highContrast: boolean; /** Prefers dark mode */ darkMode: boolean; /** Prefers reduced transparency */ reducedTransparency: boolean; /** Uses screen reader */ screenReader: boolean; /** Keyboard navigation active */ keyboardNavigation: boolean; } /** * Focus management options */ export interface FocusManagementOptions { /** Element to focus after navigation */ focusTarget?: 'main' | 'heading' | 'first-focusable' | 'custom'; /** Custom focus selector */ customSelector?: string; /** Scroll behavior */ scrollBehavior?: 'auto' | 'smooth' | 'instant'; /** Delay before focusing (ms) */ focusDelay?: number; /** Announce navigation to screen readers */ announceNavigation?: boolean; } /** * ARIA enhancement rule */ export interface ARIAEnhancementRule { /** CSS selector */ selector: string; /** ARIA attributes to add */ attributes: Record; /** Condition to apply */ condition?: () => boolean; } /** * Auto accessibility configuration */ export interface AutoAccessibilityConfig { /** Enable auto focus management */ autoFocus?: boolean; /** Focus management options */ focusOptions?: FocusManagementOptions; /** Enable auto ARIA */ autoARIA?: boolean; /** ARIA enhancement rules */ ariaRules?: ARIAEnhancementRule[]; /** Enable motion adaptation */ adaptMotion?: boolean; /** Enable contrast adaptation */ adaptContrast?: boolean; /** Enable keyboard navigation detection */ detectKeyboardNav?: boolean; /** Enable screen reader detection */ detectScreenReader?: boolean; /** Enable debug logging */ debug?: boolean; } /** * Detect accessibility preferences */ export declare function detectAccessibilityPreferences(): AccessibilityPreferences; /** * Focus manager for accessible navigation */ export declare class FocusManager { private readonly options; private previousFocus; private focusHistory; constructor(options?: FocusManagementOptions); /** * Focus main content after navigation */ focusMainContent(): void; /** * Restore previous focus */ restoreFocus(): void; /** * Get first focusable element */ getFirstFocusable(container: HTMLElement): HTMLElement | null; /** * Create focus trap within container */ createFocusTrap(container: HTMLElement): () => void; /** * Get all focusable elements in container */ private getAllFocusable; /** * Announce page change to screen readers */ private announcePageChange; } /** * ARIA enhancement manager */ export declare class ARIAEnhancer { private readonly rules; private observer; constructor(rules?: ARIAEnhancementRule[]); /** * Start enhancing */ start(): void; /** * Stop enhancing */ stop(): void; /** * Enhance DOM with ARIA attributes */ enhance(): void; /** * Add custom rule */ addRule(rule: ARIAEnhancementRule): void; } /** * Adapt animations based on user preferences */ export declare function adaptMotion(reducedMotion: boolean): void; /** * Announce message to screen readers */ export declare function announce(message: string, priority?: 'polite' | 'assertive'): void; /** * Create skip link */ export declare function createSkipLink(targetId: string, text?: string): HTMLAnchorElement; /** * Auto accessibility manager */ export declare class AutoAccessibility { private static instance; private config; private readonly focusManager; private ariaEnhancer; private readonly preferences; private keyboardNavActive; private cleanupFns; constructor(config?: AutoAccessibilityConfig); /** * Get singleton instance */ static getInstance(config?: AutoAccessibilityConfig): AutoAccessibility; /** * Reset singleton */ static reset(): void; /** * Initialize */ init(): void; /** * Cleanup */ cleanup(): void; /** * Handle route change */ handleRouteChange(): void; /** * Get preferences */ getPreferences(): AccessibilityPreferences; /** * Get focus manager */ getFocusManager(): FocusManager; /** * Setup motion preference listener */ private setupMotionListener; /** * Setup keyboard navigation detection */ private setupKeyboardNavDetection; /** * Add skip link */ private addSkipLink; /** * Debug log */ private log; } /** * Hook for accessibility preferences */ export declare function useAccessibilityPreferences(): AccessibilityPreferences; /** * Hook for focus trap */ export declare function useFocusTrap(enabled?: boolean): { current: HTMLDivElement | null; }; /** * Hook for announcing messages */ export declare function useAnnounce(): { announce: (message: string) => void; announceAssertive: (message: string) => void; }; /** * Hook for keyboard navigation detection */ export declare function useKeyboardNavigation(): boolean; /** * Initialize auto accessibility */ export declare function initAutoAccessibility(config?: AutoAccessibilityConfig): () => void; /** * Get auto accessibility instance */ export declare function getAutoAccessibility(config?: AutoAccessibilityConfig): AutoAccessibility; /** * Reset auto accessibility */ export declare function resetAutoAccessibility(): void; declare const _default: { AutoAccessibility: typeof AutoAccessibility; FocusManager: typeof FocusManager; ARIAEnhancer: typeof ARIAEnhancer; initAutoAccessibility: typeof initAutoAccessibility; getAutoAccessibility: typeof getAutoAccessibility; resetAutoAccessibility: typeof resetAutoAccessibility; detectAccessibilityPreferences: typeof detectAccessibilityPreferences; adaptMotion: typeof adaptMotion; announce: typeof announce; createSkipLink: typeof createSkipLink; useAccessibilityPreferences: typeof useAccessibilityPreferences; useFocusTrap: typeof useFocusTrap; useAnnounce: typeof useAnnounce; useKeyboardNavigation: typeof useKeyboardNavigation; }; export default _default;