@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.8 → 0.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -1
- package/dist/components/ui/accessibility-demo.esm.js +30 -24
- package/dist/components/ui/accessibility-demo.js +30 -24
- package/dist/components/ui/advanced-component-architecture-demo.esm.js +235 -179
- package/dist/components/ui/advanced-component-architecture-demo.js +235 -179
- package/dist/components/ui/advanced-transition-system-demo.esm.js +110 -64
- package/dist/components/ui/advanced-transition-system-demo.js +110 -64
- package/dist/components/ui/advanced-transition-system.esm.js +166 -122
- package/dist/components/ui/advanced-transition-system.js +166 -122
- package/dist/components/ui/animation/animated-container.esm.js +52 -29
- package/dist/components/ui/animation/animated-container.js +52 -29
- package/dist/components/ui/animation/staggered-container.esm.js +18 -9
- package/dist/components/ui/animation/staggered-container.js +18 -9
- package/dist/components/ui/animation-demo.esm.js +67 -35
- package/dist/components/ui/animation-demo.js +67 -35
- package/dist/components/ui/badge.esm.js +9 -6
- package/dist/components/ui/badge.js +9 -6
- package/dist/components/ui/battery-conscious-animation-demo.esm.js +122 -87
- package/dist/components/ui/battery-conscious-animation-demo.js +122 -87
- package/dist/components/ui/border-radius-shadow-demo.esm.js +23 -12
- package/dist/components/ui/border-radius-shadow-demo.js +23 -12
- package/dist/components/ui/button.esm.js +8 -2
- package/dist/components/ui/button.js +8 -2
- package/dist/components/ui/card.esm.js +33 -8
- package/dist/components/ui/card.js +33 -8
- package/dist/components/ui/checkbox.esm.js +3 -3
- package/dist/components/ui/checkbox.js +3 -3
- package/dist/components/ui/color-preview.esm.js +68 -45
- package/dist/components/ui/color-preview.js +68 -45
- package/dist/components/ui/data-display/chart.esm.js +112 -84
- package/dist/components/ui/data-display/chart.js +112 -84
- package/dist/components/ui/data-display/data-grid-simple.esm.js +1 -1
- package/dist/components/ui/data-display/data-grid-simple.js +1 -1
- package/dist/components/ui/data-display/data-grid.esm.js +80 -67
- package/dist/components/ui/data-display/data-grid.js +80 -67
- package/dist/components/ui/data-display/list.esm.js +53 -45
- package/dist/components/ui/data-display/list.js +53 -45
- package/dist/components/ui/data-display/table.esm.js +62 -54
- package/dist/components/ui/data-display/table.js +62 -54
- package/dist/components/ui/data-display/timeline.esm.js +39 -34
- package/dist/components/ui/data-display/timeline.js +39 -34
- package/dist/components/ui/data-display/tree.esm.js +116 -84
- package/dist/components/ui/data-display/tree.js +116 -84
- package/dist/components/ui/data-display/types.esm.js +389 -364
- package/dist/components/ui/data-display/types.js +389 -364
- package/dist/components/ui/enterprise-mobile-experience-demo.esm.js +120 -70
- package/dist/components/ui/enterprise-mobile-experience-demo.js +120 -70
- package/dist/components/ui/enterprise-mobile-experience.esm.js +124 -73
- package/dist/components/ui/enterprise-mobile-experience.js +124 -73
- package/dist/components/ui/feedback/alert.esm.js +22 -15
- package/dist/components/ui/feedback/alert.js +22 -15
- package/dist/components/ui/feedback/progress.esm.js +47 -24
- package/dist/components/ui/feedback/progress.js +47 -24
- package/dist/components/ui/feedback/skeleton.esm.js +39 -29
- package/dist/components/ui/feedback/skeleton.js +39 -29
- package/dist/components/ui/feedback/toast.esm.js +62 -38
- package/dist/components/ui/feedback/toast.js +62 -38
- package/dist/components/ui/feedback/types.esm.js +83 -83
- package/dist/components/ui/feedback/types.js +83 -83
- package/dist/components/ui/font-preview.esm.js +41 -39
- package/dist/components/ui/font-preview.js +41 -39
- package/dist/components/ui/form-demo.esm.js +150 -113
- package/dist/components/ui/form-demo.js +150 -113
- package/dist/components/ui/hardware-acceleration-demo.esm.js +137 -87
- package/dist/components/ui/hardware-acceleration-demo.js +137 -87
- package/dist/components/ui/input.esm.js +4 -1
- package/dist/components/ui/input.js +4 -1
- package/dist/components/ui/layout-demo.esm.js +81 -56
- package/dist/components/ui/layout-demo.js +81 -56
- package/dist/components/ui/layouts/adaptive-layout.esm.js +27 -8
- package/dist/components/ui/layouts/adaptive-layout.js +27 -8
- package/dist/components/ui/layouts/desktop-layout.esm.js +39 -19
- package/dist/components/ui/layouts/desktop-layout.js +39 -19
- package/dist/components/ui/layouts/mobile-layout.esm.js +19 -9
- package/dist/components/ui/layouts/mobile-layout.js +19 -9
- package/dist/components/ui/layouts/tablet-layout.esm.js +28 -14
- package/dist/components/ui/layouts/tablet-layout.js +28 -14
- package/dist/components/ui/mobile-form-validation.esm.js +120 -87
- package/dist/components/ui/mobile-form-validation.js +120 -87
- package/dist/components/ui/mobile-input-demo.esm.js +19 -13
- package/dist/components/ui/mobile-input-demo.js +19 -13
- package/dist/components/ui/mobile-input.esm.js +185 -120
- package/dist/components/ui/mobile-input.js +185 -120
- package/dist/components/ui/mobile-skeleton-loading-demo.esm.js +128 -111
- package/dist/components/ui/mobile-skeleton-loading-demo.js +128 -111
- package/dist/components/ui/navigation/breadcrumb.esm.js +17 -14
- package/dist/components/ui/navigation/breadcrumb.js +17 -14
- package/dist/components/ui/navigation/index.esm.js +23 -1
- package/dist/components/ui/navigation/index.js +23 -1
- package/dist/components/ui/navigation/menu.esm.js +49 -35
- package/dist/components/ui/navigation/menu.js +49 -35
- package/dist/components/ui/navigation/navigation-demo.esm.js +81 -74
- package/dist/components/ui/navigation/navigation-demo.js +81 -74
- package/dist/components/ui/navigation/pagination.esm.js +62 -50
- package/dist/components/ui/navigation/pagination.js +62 -50
- package/dist/components/ui/navigation/sidebar.esm.js +56 -42
- package/dist/components/ui/navigation/sidebar.js +56 -42
- package/dist/components/ui/navigation/stepper.esm.js +34 -23
- package/dist/components/ui/navigation/stepper.js +34 -23
- package/dist/components/ui/navigation/tabs.esm.js +32 -21
- package/dist/components/ui/navigation/tabs.js +32 -21
- package/dist/components/ui/navigation/types.esm.js +196 -195
- package/dist/components/ui/navigation/types.js +196 -195
- package/dist/components/ui/overlay/backdrop.esm.js +17 -16
- package/dist/components/ui/overlay/backdrop.js +17 -16
- package/dist/components/ui/overlay/focus-manager.esm.js +21 -19
- package/dist/components/ui/overlay/focus-manager.js +21 -19
- package/dist/components/ui/overlay/index.esm.js +22 -2
- package/dist/components/ui/overlay/index.js +22 -2
- package/dist/components/ui/overlay/modal.esm.js +38 -34
- package/dist/components/ui/overlay/modal.js +38 -34
- package/dist/components/ui/overlay/overlay-manager.esm.js +25 -20
- package/dist/components/ui/overlay/overlay-manager.js +25 -20
- package/dist/components/ui/overlay/popover.esm.js +74 -58
- package/dist/components/ui/overlay/popover.js +74 -58
- package/dist/components/ui/overlay/portal.esm.js +7 -7
- package/dist/components/ui/overlay/portal.js +7 -7
- package/dist/components/ui/overlay/tooltip.esm.js +54 -39
- package/dist/components/ui/overlay/tooltip.js +54 -39
- package/dist/components/ui/overlay/types.esm.js +132 -131
- package/dist/components/ui/overlay/types.js +132 -131
- package/dist/components/ui/performance-demo.esm.js +135 -88
- package/dist/components/ui/performance-demo.js +135 -88
- package/dist/components/ui/semantic-input-system-demo.esm.js +117 -80
- package/dist/components/ui/semantic-input-system-demo.js +117 -80
- package/dist/components/ui/theme-customizer.esm.js +84 -52
- package/dist/components/ui/theme-customizer.js +84 -52
- package/dist/components/ui/theme-preview.esm.js +95 -43
- package/dist/components/ui/theme-preview.js +95 -43
- package/dist/components/ui/theme-switcher.esm.js +70 -44
- package/dist/components/ui/theme-switcher.js +70 -44
- package/dist/components/ui/theme-toggle.esm.js +3 -3
- package/dist/components/ui/theme-toggle.js +3 -3
- package/dist/components/ui/token-demo.esm.js +33 -21
- package/dist/components/ui/token-demo.js +33 -21
- package/dist/components/ui/touch-demo.esm.js +102 -73
- package/dist/components/ui/touch-demo.js +102 -73
- package/dist/components/ui/touch-friendly-interface-demo.esm.js +102 -64
- package/dist/components/ui/touch-friendly-interface-demo.js +102 -64
- package/dist/components/ui/touch-friendly-interface.esm.js +85 -61
- package/dist/components/ui/touch-friendly-interface.js +85 -61
- package/dist/hooks/use-accessibility-support.esm.js +115 -85
- package/dist/hooks/use-accessibility-support.js +115 -85
- package/dist/hooks/use-adaptive-layout.esm.js +56 -33
- package/dist/hooks/use-adaptive-layout.js +56 -33
- package/dist/hooks/use-advanced-patterns.esm.js +57 -42
- package/dist/hooks/use-advanced-patterns.js +57 -42
- package/dist/hooks/use-advanced-transition-system.esm.js +112 -71
- package/dist/hooks/use-advanced-transition-system.js +112 -71
- package/dist/hooks/use-animation-profile.esm.js +63 -34
- package/dist/hooks/use-animation-profile.js +63 -34
- package/dist/hooks/use-battery-animations.esm.js +80 -55
- package/dist/hooks/use-battery-animations.js +80 -55
- package/dist/hooks/use-battery-conscious-loading.esm.js +166 -123
- package/dist/hooks/use-battery-conscious-loading.js +166 -123
- package/dist/hooks/use-battery-optimization.esm.js +78 -55
- package/dist/hooks/use-battery-optimization.js +78 -55
- package/dist/hooks/use-battery-status.esm.js +73 -51
- package/dist/hooks/use-battery-status.js +73 -51
- package/dist/hooks/use-component-performance.esm.js +62 -47
- package/dist/hooks/use-component-performance.js +62 -47
- package/dist/hooks/use-device-loading-states.esm.js +152 -109
- package/dist/hooks/use-device-loading-states.js +152 -109
- package/dist/hooks/use-device.esm.js +25 -14
- package/dist/hooks/use-device.js +25 -14
- package/dist/hooks/use-enterprise-mobile-experience.esm.js +137 -88
- package/dist/hooks/use-enterprise-mobile-experience.js +137 -88
- package/dist/hooks/use-form-feedback.esm.js +124 -81
- package/dist/hooks/use-form-feedback.js +124 -81
- package/dist/hooks/use-form-performance.esm.js +127 -92
- package/dist/hooks/use-form-performance.js +127 -92
- package/dist/hooks/use-frame-rate.esm.js +56 -37
- package/dist/hooks/use-frame-rate.js +56 -37
- package/dist/hooks/use-gestures.esm.js +96 -72
- package/dist/hooks/use-gestures.js +96 -72
- package/dist/hooks/use-hardware-acceleration.esm.js +65 -37
- package/dist/hooks/use-hardware-acceleration.js +65 -37
- package/dist/hooks/use-input-accessibility.esm.js +157 -119
- package/dist/hooks/use-input-accessibility.js +157 -119
- package/dist/hooks/use-input-performance.esm.js +139 -104
- package/dist/hooks/use-input-performance.js +139 -104
- package/dist/hooks/use-layout-performance.esm.js +50 -29
- package/dist/hooks/use-layout-performance.js +50 -29
- package/dist/hooks/use-loading-accessibility.esm.js +209 -169
- package/dist/hooks/use-loading-accessibility.js +209 -169
- package/dist/hooks/use-loading-performance.esm.js +117 -93
- package/dist/hooks/use-loading-performance.js +117 -93
- package/dist/hooks/use-memory-usage.esm.js +57 -38
- package/dist/hooks/use-memory-usage.js +57 -38
- package/dist/hooks/use-mobile-form-layout.esm.js +111 -74
- package/dist/hooks/use-mobile-form-layout.js +111 -74
- package/dist/hooks/use-mobile-form-validation.esm.js +211 -144
- package/dist/hooks/use-mobile-form-validation.js +211 -144
- package/dist/hooks/use-mobile-keyboard-optimization.esm.js +154 -113
- package/dist/hooks/use-mobile-keyboard-optimization.js +154 -113
- package/dist/hooks/use-mobile-layout.esm.js +73 -51
- package/dist/hooks/use-mobile-layout.js +73 -51
- package/dist/hooks/use-mobile-optimization.esm.js +72 -44
- package/dist/hooks/use-mobile-optimization.js +72 -44
- package/dist/hooks/use-mobile-skeleton.esm.js +97 -64
- package/dist/hooks/use-mobile-skeleton.js +97 -64
- package/dist/hooks/use-mobile-touch.esm.js +128 -93
- package/dist/hooks/use-mobile-touch.js +128 -93
- package/dist/hooks/use-performance-throttling.esm.js +72 -48
- package/dist/hooks/use-performance-throttling.js +72 -48
- package/dist/hooks/use-performance.esm.js +90 -52
- package/dist/hooks/use-performance.js +90 -52
- package/dist/hooks/use-reusable-architecture.esm.js +94 -65
- package/dist/hooks/use-reusable-architecture.js +94 -65
- package/dist/hooks/use-semantic-input-types.esm.js +166 -124
- package/dist/hooks/use-semantic-input-types.js +166 -124
- package/dist/hooks/use-semantic-input.esm.js +178 -126
- package/dist/hooks/use-semantic-input.js +178 -126
- package/dist/hooks/use-tablet-layout.esm.js +67 -38
- package/dist/hooks/use-tablet-layout.js +67 -38
- package/dist/hooks/use-touch-friendly-input.esm.js +193 -149
- package/dist/hooks/use-touch-friendly-input.js +193 -149
- package/dist/hooks/use-touch-friendly-interface.esm.js +99 -67
- package/dist/hooks/use-touch-friendly-interface.js +99 -67
- package/dist/hooks/use-touch-optimization.esm.js +99 -72
- package/dist/hooks/use-touch-optimization.js +99 -72
- package/dist/index.esm.js +289 -280
- package/dist/index.js +289 -280
- package/dist/lib/utils.esm.js +1 -1
- package/dist/lib/utils.js +1 -1
- package/dist/plugins/theme-css-generator.esm.js +104 -55
- package/dist/plugins/theme-css-generator.js +104 -55
- package/dist/provider.esm.js +4 -4
- package/dist/provider.js +4 -4
- package/dist/styles.css +1 -1
- package/dist/theme.esm.js +633 -468
- package/dist/theme.js +633 -468
- package/dist/themes/ThemeContext.esm.js +15 -15
- package/dist/themes/ThemeContext.js +15 -15
- package/dist/themes/ThemeProvider.esm.js +25 -22
- package/dist/themes/ThemeProvider.js +25 -22
- package/dist/themes/accessibility.esm.js +147 -108
- package/dist/themes/accessibility.js +147 -108
- package/dist/themes/aria-patterns.esm.js +198 -162
- package/dist/themes/aria-patterns.js +198 -162
- package/dist/themes/base-themes.esm.js +14 -11
- package/dist/themes/base-themes.js +14 -11
- package/dist/themes/colorManager.esm.js +101 -83
- package/dist/themes/colorManager.js +101 -83
- package/dist/themes/examples/dark-theme.esm.js +133 -103
- package/dist/themes/examples/dark-theme.js +133 -103
- package/dist/themes/examples/minimal-theme.esm.js +83 -61
- package/dist/themes/examples/minimal-theme.js +83 -61
- package/dist/themes/focus-management.esm.js +202 -143
- package/dist/themes/focus-management.js +202 -143
- package/dist/themes/fontLoader.esm.js +28 -19
- package/dist/themes/fontLoader.js +28 -19
- package/dist/themes/high-contrast.esm.js +152 -104
- package/dist/themes/high-contrast.js +152 -104
- package/dist/themes/inheritance.esm.js +35 -27
- package/dist/themes/inheritance.js +35 -27
- package/dist/themes/keyboard-navigation.esm.js +152 -123
- package/dist/themes/keyboard-navigation.js +152 -123
- package/dist/themes/motion-reduction.esm.js +193 -133
- package/dist/themes/motion-reduction.js +193 -133
- package/dist/themes/navigation.esm.js +146 -146
- package/dist/themes/navigation.js +146 -146
- package/dist/themes/screen-reader.esm.js +159 -94
- package/dist/themes/screen-reader.js +159 -94
- package/dist/themes/systemThemeDetector.esm.js +42 -34
- package/dist/themes/systemThemeDetector.js +42 -34
- package/dist/themes/themeCSSUpdater.esm.js +21 -9
- package/dist/themes/themeCSSUpdater.js +21 -9
- package/dist/themes/themePersistence.esm.js +68 -47
- package/dist/themes/themePersistence.js +68 -47
- package/dist/themes/themes/stan-design.esm.js +633 -468
- package/dist/themes/themes/stan-design.js +633 -468
- package/dist/themes/types.esm.js +301 -287
- package/dist/themes/types.js +301 -287
- package/dist/themes/useSystemTheme.esm.js +4 -4
- package/dist/themes/useSystemTheme.js +4 -4
- package/dist/themes/useTheme.esm.js +4 -4
- package/dist/themes/useTheme.js +4 -4
- package/dist/themes/validation.esm.js +128 -77
- package/dist/themes/validation.js +128 -77
- package/dist/tokens/index.esm.js +15 -4
- package/dist/tokens/index.js +15 -4
- package/dist/tokens/tokenExporter.esm.js +87 -61
- package/dist/tokens/tokenExporter.js +87 -61
- package/dist/tokens/tokenGenerator.esm.js +86 -77
- package/dist/tokens/tokenGenerator.js +86 -77
- package/dist/tokens/tokenManager.esm.js +64 -51
- package/dist/tokens/tokenManager.js +64 -51
- package/dist/tokens/tokenValidator.esm.js +193 -147
- package/dist/tokens/tokenValidator.js +193 -147
- package/dist/tokens/types.esm.js +49 -35
- package/dist/tokens/types.js +49 -35
- package/dist/utils/bundle-analyzer.esm.js +83 -65
- package/dist/utils/bundle-analyzer.js +83 -65
- package/dist/utils/bundle-splitting.esm.js +142 -117
- package/dist/utils/bundle-splitting.js +142 -117
- package/dist/utils/lazy-loading.esm.js +132 -106
- package/dist/utils/lazy-loading.js +132 -106
- package/dist/utils/performance-monitor.esm.js +170 -129
- package/dist/utils/performance-monitor.js +170 -129
- package/dist/utils/tree-shaking.esm.js +69 -61
- package/dist/utils/tree-shaking.js +69 -61
- package/package.json +1 -1
- package/src/index.ts +146 -146
|
@@ -1,27 +1,47 @@
|
|
|
1
1
|
import { useState, useCallback, useRef, useEffect } from 'react'
|
|
2
2
|
|
|
3
3
|
export interface LoadingAccessibilityConfig {
|
|
4
|
-
enableScreenReaderSupport
|
|
4
|
+
enableScreenReaderSupport?: boolean
|
|
5
|
+
enableReducedMotionSupport?: boolean
|
|
6
|
+
enableFocusManagement?: boolean
|
|
7
|
+
enableAriaSupport?: boolean
|
|
8
|
+
enableVoiceControl?: boolean
|
|
9
|
+
enableHighContrast?: boolean
|
|
10
|
+
enableKeyboardNavigation?: boolean
|
|
11
|
+
}
|
|
5
12
|
|
|
6
13
|
export interface AccessibilityFeature {
|
|
7
|
-
id
|
|
14
|
+
id: string
|
|
15
|
+
name: string
|
|
16
|
+
type: 'screen-reader' | 'reduced-motion' | 'focus' | 'aria' | 'voice' | 'contrast' | 'keyboard'
|
|
17
|
+
enabled: boolean
|
|
18
|
+
description: string
|
|
19
|
+
impact: 'low' | 'medium' | 'high'
|
|
20
|
+
}
|
|
8
21
|
|
|
9
22
|
export interface AccessibilityState {
|
|
10
|
-
screenReaderActive
|
|
23
|
+
screenReaderActive: boolean
|
|
24
|
+
reducedMotionEnabled: boolean
|
|
25
|
+
focusTrapped: boolean
|
|
26
|
+
ariaLabelsActive: boolean
|
|
27
|
+
voiceControlActive: boolean
|
|
28
|
+
highContrastMode: boolean
|
|
29
|
+
keyboardNavigationActive: boolean
|
|
30
|
+
}
|
|
11
31
|
|
|
12
32
|
export interface LoadingAccessibilityCallbacks {
|
|
13
|
-
onScreenReaderEnhanced
|
|
14
|
-
onReducedMotionApplied
|
|
15
|
-
onFocusManaged
|
|
16
|
-
onAriaEnhanced
|
|
17
|
-
onVoiceControlEnabled
|
|
18
|
-
onHighContrastApplied
|
|
19
|
-
onKeyboardNavigationEnabled
|
|
33
|
+
onScreenReaderEnhanced?: (feature: string) => void
|
|
34
|
+
onReducedMotionApplied?: (feature: string) => void
|
|
35
|
+
onFocusManaged?: (feature: string) => void
|
|
36
|
+
onAriaEnhanced?: (feature: string) => void
|
|
37
|
+
onVoiceControlEnabled?: (feature: string) => void
|
|
38
|
+
onHighContrastApplied?: (feature: string) => void
|
|
39
|
+
onKeyboardNavigationEnabled?: (feature: string) => void
|
|
20
40
|
}
|
|
21
41
|
|
|
22
42
|
export const useLoadingAccessibility = (
|
|
23
|
-
config= {},
|
|
24
|
-
callbacks= {}
|
|
43
|
+
config: LoadingAccessibilityConfig = {},
|
|
44
|
+
callbacks: LoadingAccessibilityCallbacks = {}
|
|
25
45
|
) => {
|
|
26
46
|
const {
|
|
27
47
|
enableScreenReaderSupport = true,
|
|
@@ -34,13 +54,14 @@ export const useLoadingAccessibility = (
|
|
|
34
54
|
} = config
|
|
35
55
|
|
|
36
56
|
const [accessibilityState, setAccessibilityState] = useState<AccessibilityState>({
|
|
37
|
-
screenReaderActive,
|
|
38
|
-
reducedMotionEnabled,
|
|
39
|
-
focusTrapped,
|
|
40
|
-
ariaLabelsActive,
|
|
41
|
-
voiceControlActive,
|
|
42
|
-
highContrastMode,
|
|
43
|
-
keyboardNavigationActive
|
|
57
|
+
screenReaderActive: false,
|
|
58
|
+
reducedMotionEnabled: false,
|
|
59
|
+
focusTrapped: false,
|
|
60
|
+
ariaLabelsActive: false,
|
|
61
|
+
voiceControlActive: false,
|
|
62
|
+
highContrastMode: false,
|
|
63
|
+
keyboardNavigationActive: false
|
|
64
|
+
})
|
|
44
65
|
|
|
45
66
|
const [accessibilityFeatures, setAccessibilityFeatures] = useState<AccessibilityFeature[]>([])
|
|
46
67
|
const [isEnhancing, setIsEnhancing] = useState(false)
|
|
@@ -59,33 +80,36 @@ export const useLoadingAccessibility = (
|
|
|
59
80
|
setIsEnhancing(true)
|
|
60
81
|
|
|
61
82
|
setTimeout(() => {
|
|
62
|
-
const screenReaderFeatures] = [
|
|
83
|
+
const screenReaderFeatures: AccessibilityFeature[] = [
|
|
63
84
|
{
|
|
64
|
-
id,
|
|
65
|
-
name,
|
|
66
|
-
type,
|
|
67
|
-
enabled,
|
|
68
|
-
description,
|
|
69
|
-
impact
|
|
85
|
+
id: 'sr-loading-states',
|
|
86
|
+
name: 'Loading State Descriptions',
|
|
87
|
+
type: 'screen-reader',
|
|
88
|
+
enabled: true,
|
|
89
|
+
description: 'Comprehensive loading state descriptions for screen readers',
|
|
90
|
+
impact: 'high'
|
|
91
|
+
},
|
|
70
92
|
{
|
|
71
|
-
id,
|
|
72
|
-
name,
|
|
73
|
-
type,
|
|
74
|
-
enabled,
|
|
75
|
-
description,
|
|
76
|
-
impact
|
|
93
|
+
id: 'sr-progress-indication',
|
|
94
|
+
name: 'Progress Indication',
|
|
95
|
+
type: 'screen-reader',
|
|
96
|
+
enabled: true,
|
|
97
|
+
description: 'Clear progress indication for screen reader users',
|
|
98
|
+
impact: 'high'
|
|
99
|
+
},
|
|
77
100
|
{
|
|
78
|
-
id,
|
|
79
|
-
name,
|
|
80
|
-
type,
|
|
81
|
-
enabled,
|
|
82
|
-
description,
|
|
83
|
-
impact
|
|
101
|
+
id: 'sr-status-updates',
|
|
102
|
+
name: 'Status Updates',
|
|
103
|
+
type: 'screen-reader',
|
|
104
|
+
enabled: true,
|
|
105
|
+
description: 'Real-time status updates for loading processes',
|
|
106
|
+
impact: 'medium'
|
|
107
|
+
}
|
|
84
108
|
]
|
|
85
109
|
|
|
86
110
|
setAccessibilityFeatures(prev => [...prev, ...screenReaderFeatures])
|
|
87
111
|
setActiveFeatures(prev => [...prev, ...screenReaderFeatures.map(f => f.name)])
|
|
88
|
-
setAccessibilityState(prev => ({ ...prev, screenReaderActive}))
|
|
112
|
+
setAccessibilityState(prev => ({ ...prev, screenReaderActive: true }))
|
|
89
113
|
setIsEnhancing(false)
|
|
90
114
|
|
|
91
115
|
screenReaderFeatures.forEach(feature => {
|
|
@@ -102,33 +126,36 @@ export const useLoadingAccessibility = (
|
|
|
102
126
|
setIsEnhancing(true)
|
|
103
127
|
|
|
104
128
|
setTimeout(() => {
|
|
105
|
-
const reducedMotionFeatures] = [
|
|
129
|
+
const reducedMotionFeatures: AccessibilityFeature[] = [
|
|
106
130
|
{
|
|
107
|
-
id,
|
|
108
|
-
name,
|
|
109
|
-
type,
|
|
110
|
-
enabled,
|
|
111
|
-
description,
|
|
112
|
-
impact
|
|
131
|
+
id: 'rm-animations',
|
|
132
|
+
name: 'Reduced Motion Animations',
|
|
133
|
+
type: 'reduced-motion',
|
|
134
|
+
enabled: true,
|
|
135
|
+
description: 'Loading animations adapted for reduced motion preferences',
|
|
136
|
+
impact: 'high'
|
|
137
|
+
},
|
|
113
138
|
{
|
|
114
|
-
id,
|
|
115
|
-
name,
|
|
116
|
-
type,
|
|
117
|
-
enabled,
|
|
118
|
-
description,
|
|
119
|
-
impact
|
|
139
|
+
id: 'rm-transitions',
|
|
140
|
+
name: 'Reduced Motion Transitions',
|
|
141
|
+
type: 'reduced-motion',
|
|
142
|
+
enabled: true,
|
|
143
|
+
description: 'Smooth transitions that respect motion preferences',
|
|
144
|
+
impact: 'medium'
|
|
145
|
+
},
|
|
120
146
|
{
|
|
121
|
-
id,
|
|
122
|
-
name,
|
|
123
|
-
type,
|
|
124
|
-
enabled,
|
|
125
|
-
description,
|
|
126
|
-
impact
|
|
147
|
+
id: 'rm-loading-states',
|
|
148
|
+
name: 'Reduced Motion Loading States',
|
|
149
|
+
type: 'reduced-motion',
|
|
150
|
+
enabled: true,
|
|
151
|
+
description: 'Loading states optimized for motion sensitivity',
|
|
152
|
+
impact: 'medium'
|
|
153
|
+
}
|
|
127
154
|
]
|
|
128
155
|
|
|
129
156
|
setAccessibilityFeatures(prev => [...prev, ...reducedMotionFeatures])
|
|
130
157
|
setActiveFeatures(prev => [...prev, ...reducedMotionFeatures.map(f => f.name)])
|
|
131
|
-
setAccessibilityState(prev => ({ ...prev, reducedMotionEnabled}))
|
|
158
|
+
setAccessibilityState(prev => ({ ...prev, reducedMotionEnabled: true }))
|
|
132
159
|
setIsEnhancing(false)
|
|
133
160
|
|
|
134
161
|
reducedMotionFeatures.forEach(feature => {
|
|
@@ -145,33 +172,36 @@ export const useLoadingAccessibility = (
|
|
|
145
172
|
setIsEnhancing(true)
|
|
146
173
|
|
|
147
174
|
setTimeout(() => {
|
|
148
|
-
const focusFeatures] = [
|
|
175
|
+
const focusFeatures: AccessibilityFeature[] = [
|
|
149
176
|
{
|
|
150
|
-
id,
|
|
151
|
-
name,
|
|
152
|
-
type,
|
|
153
|
-
enabled,
|
|
154
|
-
description,
|
|
155
|
-
impact
|
|
177
|
+
id: 'focus-trapping',
|
|
178
|
+
name: 'Focus Trapping',
|
|
179
|
+
type: 'focus',
|
|
180
|
+
enabled: true,
|
|
181
|
+
description: 'Focus trapped within loading states for keyboard navigation',
|
|
182
|
+
impact: 'high'
|
|
183
|
+
},
|
|
156
184
|
{
|
|
157
|
-
id,
|
|
158
|
-
name,
|
|
159
|
-
type,
|
|
160
|
-
enabled,
|
|
161
|
-
description,
|
|
162
|
-
impact
|
|
185
|
+
id: 'focus-indicators',
|
|
186
|
+
name: 'Focus Indicators',
|
|
187
|
+
type: 'focus',
|
|
188
|
+
enabled: true,
|
|
189
|
+
description: 'Clear focus indicators for loading elements',
|
|
190
|
+
impact: 'medium'
|
|
191
|
+
},
|
|
163
192
|
{
|
|
164
|
-
id,
|
|
165
|
-
name,
|
|
166
|
-
type,
|
|
167
|
-
enabled,
|
|
168
|
-
description,
|
|
169
|
-
impact
|
|
193
|
+
id: 'focus-order',
|
|
194
|
+
name: 'Logical Focus Order',
|
|
195
|
+
type: 'focus',
|
|
196
|
+
enabled: true,
|
|
197
|
+
description: 'Logical focus order for loading state elements',
|
|
198
|
+
impact: 'medium'
|
|
199
|
+
}
|
|
170
200
|
]
|
|
171
201
|
|
|
172
202
|
setAccessibilityFeatures(prev => [...prev, ...focusFeatures])
|
|
173
203
|
setActiveFeatures(prev => [...prev, ...focusFeatures.map(f => f.name)])
|
|
174
|
-
setAccessibilityState(prev => ({ ...prev, focusTrapped}))
|
|
204
|
+
setAccessibilityState(prev => ({ ...prev, focusTrapped: true }))
|
|
175
205
|
setIsEnhancing(false)
|
|
176
206
|
|
|
177
207
|
focusFeatures.forEach(feature => {
|
|
@@ -188,40 +218,44 @@ export const useLoadingAccessibility = (
|
|
|
188
218
|
setIsEnhancing(true)
|
|
189
219
|
|
|
190
220
|
setTimeout(() => {
|
|
191
|
-
const ariaFeatures] = [
|
|
221
|
+
const ariaFeatures: AccessibilityFeature[] = [
|
|
192
222
|
{
|
|
193
|
-
id,
|
|
194
|
-
name,
|
|
195
|
-
type,
|
|
196
|
-
enabled,
|
|
197
|
-
description,
|
|
198
|
-
impact
|
|
223
|
+
id: 'aria-labels',
|
|
224
|
+
name: 'ARIA Labels',
|
|
225
|
+
type: 'aria',
|
|
226
|
+
enabled: true,
|
|
227
|
+
description: 'Comprehensive ARIA labels for loading states',
|
|
228
|
+
impact: 'high'
|
|
229
|
+
},
|
|
199
230
|
{
|
|
200
|
-
id,
|
|
201
|
-
name,
|
|
202
|
-
type,
|
|
203
|
-
enabled,
|
|
204
|
-
description,
|
|
205
|
-
impact
|
|
231
|
+
id: 'aria-live',
|
|
232
|
+
name: 'ARIA Live Regions',
|
|
233
|
+
type: 'aria',
|
|
234
|
+
enabled: true,
|
|
235
|
+
description: 'Live regions for dynamic loading updates',
|
|
236
|
+
impact: 'high'
|
|
237
|
+
},
|
|
206
238
|
{
|
|
207
|
-
id,
|
|
208
|
-
name,
|
|
209
|
-
type,
|
|
210
|
-
enabled,
|
|
211
|
-
description,
|
|
212
|
-
impact
|
|
239
|
+
id: 'aria-progress',
|
|
240
|
+
name: 'ARIA Progress Indicators',
|
|
241
|
+
type: 'aria',
|
|
242
|
+
enabled: true,
|
|
243
|
+
description: 'Progress indicators with ARIA support',
|
|
244
|
+
impact: 'medium'
|
|
245
|
+
},
|
|
213
246
|
{
|
|
214
|
-
id,
|
|
215
|
-
name,
|
|
216
|
-
type,
|
|
217
|
-
enabled,
|
|
218
|
-
description,
|
|
219
|
-
impact
|
|
247
|
+
id: 'aria-status',
|
|
248
|
+
name: 'ARIA Status Updates',
|
|
249
|
+
type: 'aria',
|
|
250
|
+
enabled: true,
|
|
251
|
+
description: 'Status updates with ARIA announcements',
|
|
252
|
+
impact: 'medium'
|
|
253
|
+
}
|
|
220
254
|
]
|
|
221
255
|
|
|
222
256
|
setAccessibilityFeatures(prev => [...prev, ...ariaFeatures])
|
|
223
257
|
setActiveFeatures(prev => [...prev, ...ariaFeatures.map(f => f.name)])
|
|
224
|
-
setAccessibilityState(prev => ({ ...prev, ariaLabelsActive}))
|
|
258
|
+
setAccessibilityState(prev => ({ ...prev, ariaLabelsActive: true }))
|
|
225
259
|
setIsEnhancing(false)
|
|
226
260
|
|
|
227
261
|
ariaFeatures.forEach(feature => {
|
|
@@ -238,26 +272,28 @@ export const useLoadingAccessibility = (
|
|
|
238
272
|
setIsEnhancing(true)
|
|
239
273
|
|
|
240
274
|
setTimeout(() => {
|
|
241
|
-
const voiceFeatures] = [
|
|
275
|
+
const voiceFeatures: AccessibilityFeature[] = [
|
|
242
276
|
{
|
|
243
|
-
id,
|
|
244
|
-
name,
|
|
245
|
-
type,
|
|
246
|
-
enabled,
|
|
247
|
-
description,
|
|
248
|
-
impact
|
|
277
|
+
id: 'voice-commands',
|
|
278
|
+
name: 'Voice Commands',
|
|
279
|
+
type: 'voice',
|
|
280
|
+
enabled: true,
|
|
281
|
+
description: 'Voice commands for loading state control',
|
|
282
|
+
impact: 'medium'
|
|
283
|
+
},
|
|
249
284
|
{
|
|
250
|
-
id,
|
|
251
|
-
name,
|
|
252
|
-
type,
|
|
253
|
-
enabled,
|
|
254
|
-
description,
|
|
255
|
-
impact
|
|
285
|
+
id: 'voice-feedback',
|
|
286
|
+
name: 'Voice Feedback',
|
|
287
|
+
type: 'voice',
|
|
288
|
+
enabled: true,
|
|
289
|
+
description: 'Voice feedback for loading progress',
|
|
290
|
+
impact: 'medium'
|
|
291
|
+
}
|
|
256
292
|
]
|
|
257
293
|
|
|
258
294
|
setAccessibilityFeatures(prev => [...prev, ...voiceFeatures])
|
|
259
295
|
setActiveFeatures(prev => [...prev, ...voiceFeatures.map(f => f.name)])
|
|
260
|
-
setAccessibilityState(prev => ({ ...prev, voiceControlActive}))
|
|
296
|
+
setAccessibilityState(prev => ({ ...prev, voiceControlActive: true }))
|
|
261
297
|
setIsEnhancing(false)
|
|
262
298
|
|
|
263
299
|
voiceFeatures.forEach(feature => {
|
|
@@ -274,26 +310,28 @@ export const useLoadingAccessibility = (
|
|
|
274
310
|
setIsEnhancing(true)
|
|
275
311
|
|
|
276
312
|
setTimeout(() => {
|
|
277
|
-
const contrastFeatures] = [
|
|
313
|
+
const contrastFeatures: AccessibilityFeature[] = [
|
|
278
314
|
{
|
|
279
|
-
id,
|
|
280
|
-
name,
|
|
281
|
-
type,
|
|
282
|
-
enabled,
|
|
283
|
-
description,
|
|
284
|
-
impact
|
|
315
|
+
id: 'high-contrast',
|
|
316
|
+
name: 'High Contrast Mode',
|
|
317
|
+
type: 'contrast',
|
|
318
|
+
enabled: true,
|
|
319
|
+
description: 'High contrast loading states for better visibility',
|
|
320
|
+
impact: 'medium'
|
|
321
|
+
},
|
|
285
322
|
{
|
|
286
|
-
id,
|
|
287
|
-
name,
|
|
288
|
-
type,
|
|
289
|
-
enabled,
|
|
290
|
-
description,
|
|
291
|
-
impact
|
|
323
|
+
id: 'contrast-optimization',
|
|
324
|
+
name: 'Contrast Optimization',
|
|
325
|
+
type: 'contrast',
|
|
326
|
+
enabled: true,
|
|
327
|
+
description: 'Optimized contrast ratios for accessibility',
|
|
328
|
+
impact: 'low'
|
|
329
|
+
}
|
|
292
330
|
]
|
|
293
331
|
|
|
294
332
|
setAccessibilityFeatures(prev => [...prev, ...contrastFeatures])
|
|
295
333
|
setActiveFeatures(prev => [...prev, ...contrastFeatures.map(f => f.name)])
|
|
296
|
-
setAccessibilityState(prev => ({ ...prev, highContrastMode}))
|
|
334
|
+
setAccessibilityState(prev => ({ ...prev, highContrastMode: true }))
|
|
297
335
|
setIsEnhancing(false)
|
|
298
336
|
|
|
299
337
|
contrastFeatures.forEach(feature => {
|
|
@@ -310,26 +348,28 @@ export const useLoadingAccessibility = (
|
|
|
310
348
|
setIsEnhancing(true)
|
|
311
349
|
|
|
312
350
|
setTimeout(() => {
|
|
313
|
-
const keyboardFeatures] = [
|
|
351
|
+
const keyboardFeatures: AccessibilityFeature[] = [
|
|
314
352
|
{
|
|
315
|
-
id,
|
|
316
|
-
name,
|
|
317
|
-
type,
|
|
318
|
-
enabled,
|
|
319
|
-
description,
|
|
320
|
-
impact
|
|
353
|
+
id: 'keyboard-shortcuts',
|
|
354
|
+
name: 'Keyboard Shortcuts',
|
|
355
|
+
type: 'keyboard',
|
|
356
|
+
enabled: true,
|
|
357
|
+
description: 'Keyboard shortcuts for loading state control',
|
|
358
|
+
impact: 'medium'
|
|
359
|
+
},
|
|
321
360
|
{
|
|
322
|
-
id,
|
|
323
|
-
name,
|
|
324
|
-
type,
|
|
325
|
-
enabled,
|
|
326
|
-
description,
|
|
327
|
-
impact
|
|
361
|
+
id: 'keyboard-navigation',
|
|
362
|
+
name: 'Keyboard Navigation',
|
|
363
|
+
type: 'keyboard',
|
|
364
|
+
enabled: true,
|
|
365
|
+
description: 'Full keyboard navigation for loading states',
|
|
366
|
+
impact: 'high'
|
|
367
|
+
}
|
|
328
368
|
]
|
|
329
369
|
|
|
330
370
|
setAccessibilityFeatures(prev => [...prev, ...keyboardFeatures])
|
|
331
371
|
setActiveFeatures(prev => [...prev, ...keyboardFeatures.map(f => f.name)])
|
|
332
|
-
setAccessibilityState(prev => ({ ...prev, keyboardNavigationActive}))
|
|
372
|
+
setAccessibilityState(prev => ({ ...prev, keyboardNavigationActive: true }))
|
|
333
373
|
setIsEnhancing(false)
|
|
334
374
|
|
|
335
375
|
keyboardFeatures.forEach(feature => {
|
|
@@ -379,9 +419,9 @@ export const useLoadingAccessibility = (
|
|
|
379
419
|
useEffect(() => {
|
|
380
420
|
// Monitor reduced motion preference
|
|
381
421
|
if (enableReducedMotionSupport) {
|
|
382
|
-
motionQueryRef.current = window.matchMedia('(prefers-reduced-motion)')
|
|
422
|
+
motionQueryRef.current = window.matchMedia('(prefers-reduced-motion: reduce)')
|
|
383
423
|
|
|
384
|
-
const handleMotionChange = (e) => {
|
|
424
|
+
const handleMotionChange = (e: MediaQueryListEvent) => {
|
|
385
425
|
if (e.matches) {
|
|
386
426
|
enableReducedMotionSupportFeature()
|
|
387
427
|
}
|
|
@@ -403,9 +443,9 @@ export const useLoadingAccessibility = (
|
|
|
403
443
|
// Monitor high contrast preference
|
|
404
444
|
useEffect(() => {
|
|
405
445
|
if (enableHighContrast) {
|
|
406
|
-
contrastQueryRef.current = window.matchMedia('(prefers-contrast)')
|
|
446
|
+
contrastQueryRef.current = window.matchMedia('(prefers-contrast: high)')
|
|
407
447
|
|
|
408
|
-
const handleContrastChange = (e) => {
|
|
448
|
+
const handleContrastChange = (e: MediaQueryListEvent) => {
|
|
409
449
|
if (e.matches) {
|
|
410
450
|
enableHighContrastFeature()
|
|
411
451
|
}
|
|
@@ -447,26 +487,26 @@ export const useLoadingAccessibility = (
|
|
|
447
487
|
accessibilityScore,
|
|
448
488
|
|
|
449
489
|
// Functions
|
|
450
|
-
enableScreenReaderSupport,
|
|
451
|
-
enableReducedMotionSupport,
|
|
452
|
-
enableFocusManagement,
|
|
453
|
-
enableAriaSupport,
|
|
454
|
-
enableVoiceControl,
|
|
455
|
-
enableHighContrast,
|
|
456
|
-
enableKeyboardNavigation,
|
|
490
|
+
enableScreenReaderSupport: enableScreenReaderSupportFeature,
|
|
491
|
+
enableReducedMotionSupport: enableReducedMotionSupportFeature,
|
|
492
|
+
enableFocusManagement: enableFocusManagementFeature,
|
|
493
|
+
enableAriaSupport: enableAriaSupportFeature,
|
|
494
|
+
enableVoiceControl: enableVoiceControlFeature,
|
|
495
|
+
enableHighContrast: enableHighContrastFeature,
|
|
496
|
+
enableKeyboardNavigation: enableKeyboardNavigationFeature,
|
|
457
497
|
autoEnableAccessibility,
|
|
458
498
|
|
|
459
499
|
// Utility functions
|
|
460
|
-
isScreenReaderActive) => accessibilityState.screenReaderActive,
|
|
461
|
-
isReducedMotionEnabled) => accessibilityState.reducedMotionEnabled,
|
|
462
|
-
isFocusManaged) => accessibilityState.focusTrapped,
|
|
463
|
-
isAriaEnhanced) => accessibilityState.ariaLabelsActive,
|
|
464
|
-
isVoiceControlActive) => accessibilityState.voiceControlActive,
|
|
465
|
-
isHighContrastMode) => accessibilityState.highContrastMode,
|
|
466
|
-
isKeyboardNavigationActive) => accessibilityState.keyboardNavigationActive,
|
|
467
|
-
getAccessibilityScore) => accessibilityScore,
|
|
468
|
-
getAccessibilityRecommendations) => {
|
|
469
|
-
const recommendations] = []
|
|
500
|
+
isScreenReaderActive: () => accessibilityState.screenReaderActive,
|
|
501
|
+
isReducedMotionEnabled: () => accessibilityState.reducedMotionEnabled,
|
|
502
|
+
isFocusManaged: () => accessibilityState.focusTrapped,
|
|
503
|
+
isAriaEnhanced: () => accessibilityState.ariaLabelsActive,
|
|
504
|
+
isVoiceControlActive: () => accessibilityState.voiceControlActive,
|
|
505
|
+
isHighContrastMode: () => accessibilityState.highContrastMode,
|
|
506
|
+
isKeyboardNavigationActive: () => accessibilityState.keyboardNavigationActive,
|
|
507
|
+
getAccessibilityScore: () => accessibilityScore,
|
|
508
|
+
getAccessibilityRecommendations: () => {
|
|
509
|
+
const recommendations: string[] = []
|
|
470
510
|
|
|
471
511
|
if (accessibilityScore < 50) {
|
|
472
512
|
recommendations.push('Enable more accessibility features for better user experience')
|
|
@@ -484,7 +524,7 @@ export const useLoadingAccessibility = (
|
|
|
484
524
|
|
|
485
525
|
return recommendations
|
|
486
526
|
},
|
|
487
|
-
clearAccessibilityFeatures) => {
|
|
527
|
+
clearAccessibilityFeatures: () => {
|
|
488
528
|
setAccessibilityFeatures([])
|
|
489
529
|
setActiveFeatures([])
|
|
490
530
|
setAccessibilityScore(0)
|