@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.
Files changed (304) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/components/ui/accessibility-demo.esm.js +30 -24
  3. package/dist/components/ui/accessibility-demo.js +30 -24
  4. package/dist/components/ui/advanced-component-architecture-demo.esm.js +235 -179
  5. package/dist/components/ui/advanced-component-architecture-demo.js +235 -179
  6. package/dist/components/ui/advanced-transition-system-demo.esm.js +110 -64
  7. package/dist/components/ui/advanced-transition-system-demo.js +110 -64
  8. package/dist/components/ui/advanced-transition-system.esm.js +166 -122
  9. package/dist/components/ui/advanced-transition-system.js +166 -122
  10. package/dist/components/ui/animation/animated-container.esm.js +52 -29
  11. package/dist/components/ui/animation/animated-container.js +52 -29
  12. package/dist/components/ui/animation/staggered-container.esm.js +18 -9
  13. package/dist/components/ui/animation/staggered-container.js +18 -9
  14. package/dist/components/ui/animation-demo.esm.js +67 -35
  15. package/dist/components/ui/animation-demo.js +67 -35
  16. package/dist/components/ui/badge.esm.js +9 -6
  17. package/dist/components/ui/badge.js +9 -6
  18. package/dist/components/ui/battery-conscious-animation-demo.esm.js +122 -87
  19. package/dist/components/ui/battery-conscious-animation-demo.js +122 -87
  20. package/dist/components/ui/border-radius-shadow-demo.esm.js +23 -12
  21. package/dist/components/ui/border-radius-shadow-demo.js +23 -12
  22. package/dist/components/ui/button.esm.js +8 -2
  23. package/dist/components/ui/button.js +8 -2
  24. package/dist/components/ui/card.esm.js +33 -8
  25. package/dist/components/ui/card.js +33 -8
  26. package/dist/components/ui/checkbox.esm.js +3 -3
  27. package/dist/components/ui/checkbox.js +3 -3
  28. package/dist/components/ui/color-preview.esm.js +68 -45
  29. package/dist/components/ui/color-preview.js +68 -45
  30. package/dist/components/ui/data-display/chart.esm.js +112 -84
  31. package/dist/components/ui/data-display/chart.js +112 -84
  32. package/dist/components/ui/data-display/data-grid-simple.esm.js +1 -1
  33. package/dist/components/ui/data-display/data-grid-simple.js +1 -1
  34. package/dist/components/ui/data-display/data-grid.esm.js +80 -67
  35. package/dist/components/ui/data-display/data-grid.js +80 -67
  36. package/dist/components/ui/data-display/list.esm.js +53 -45
  37. package/dist/components/ui/data-display/list.js +53 -45
  38. package/dist/components/ui/data-display/table.esm.js +62 -54
  39. package/dist/components/ui/data-display/table.js +62 -54
  40. package/dist/components/ui/data-display/timeline.esm.js +39 -34
  41. package/dist/components/ui/data-display/timeline.js +39 -34
  42. package/dist/components/ui/data-display/tree.esm.js +116 -84
  43. package/dist/components/ui/data-display/tree.js +116 -84
  44. package/dist/components/ui/data-display/types.esm.js +389 -364
  45. package/dist/components/ui/data-display/types.js +389 -364
  46. package/dist/components/ui/enterprise-mobile-experience-demo.esm.js +120 -70
  47. package/dist/components/ui/enterprise-mobile-experience-demo.js +120 -70
  48. package/dist/components/ui/enterprise-mobile-experience.esm.js +124 -73
  49. package/dist/components/ui/enterprise-mobile-experience.js +124 -73
  50. package/dist/components/ui/feedback/alert.esm.js +22 -15
  51. package/dist/components/ui/feedback/alert.js +22 -15
  52. package/dist/components/ui/feedback/progress.esm.js +47 -24
  53. package/dist/components/ui/feedback/progress.js +47 -24
  54. package/dist/components/ui/feedback/skeleton.esm.js +39 -29
  55. package/dist/components/ui/feedback/skeleton.js +39 -29
  56. package/dist/components/ui/feedback/toast.esm.js +62 -38
  57. package/dist/components/ui/feedback/toast.js +62 -38
  58. package/dist/components/ui/feedback/types.esm.js +83 -83
  59. package/dist/components/ui/feedback/types.js +83 -83
  60. package/dist/components/ui/font-preview.esm.js +41 -39
  61. package/dist/components/ui/font-preview.js +41 -39
  62. package/dist/components/ui/form-demo.esm.js +150 -113
  63. package/dist/components/ui/form-demo.js +150 -113
  64. package/dist/components/ui/hardware-acceleration-demo.esm.js +137 -87
  65. package/dist/components/ui/hardware-acceleration-demo.js +137 -87
  66. package/dist/components/ui/input.esm.js +4 -1
  67. package/dist/components/ui/input.js +4 -1
  68. package/dist/components/ui/layout-demo.esm.js +81 -56
  69. package/dist/components/ui/layout-demo.js +81 -56
  70. package/dist/components/ui/layouts/adaptive-layout.esm.js +27 -8
  71. package/dist/components/ui/layouts/adaptive-layout.js +27 -8
  72. package/dist/components/ui/layouts/desktop-layout.esm.js +39 -19
  73. package/dist/components/ui/layouts/desktop-layout.js +39 -19
  74. package/dist/components/ui/layouts/mobile-layout.esm.js +19 -9
  75. package/dist/components/ui/layouts/mobile-layout.js +19 -9
  76. package/dist/components/ui/layouts/tablet-layout.esm.js +28 -14
  77. package/dist/components/ui/layouts/tablet-layout.js +28 -14
  78. package/dist/components/ui/mobile-form-validation.esm.js +120 -87
  79. package/dist/components/ui/mobile-form-validation.js +120 -87
  80. package/dist/components/ui/mobile-input-demo.esm.js +19 -13
  81. package/dist/components/ui/mobile-input-demo.js +19 -13
  82. package/dist/components/ui/mobile-input.esm.js +185 -120
  83. package/dist/components/ui/mobile-input.js +185 -120
  84. package/dist/components/ui/mobile-skeleton-loading-demo.esm.js +128 -111
  85. package/dist/components/ui/mobile-skeleton-loading-demo.js +128 -111
  86. package/dist/components/ui/navigation/breadcrumb.esm.js +17 -14
  87. package/dist/components/ui/navigation/breadcrumb.js +17 -14
  88. package/dist/components/ui/navigation/index.esm.js +23 -1
  89. package/dist/components/ui/navigation/index.js +23 -1
  90. package/dist/components/ui/navigation/menu.esm.js +49 -35
  91. package/dist/components/ui/navigation/menu.js +49 -35
  92. package/dist/components/ui/navigation/navigation-demo.esm.js +81 -74
  93. package/dist/components/ui/navigation/navigation-demo.js +81 -74
  94. package/dist/components/ui/navigation/pagination.esm.js +62 -50
  95. package/dist/components/ui/navigation/pagination.js +62 -50
  96. package/dist/components/ui/navigation/sidebar.esm.js +56 -42
  97. package/dist/components/ui/navigation/sidebar.js +56 -42
  98. package/dist/components/ui/navigation/stepper.esm.js +34 -23
  99. package/dist/components/ui/navigation/stepper.js +34 -23
  100. package/dist/components/ui/navigation/tabs.esm.js +32 -21
  101. package/dist/components/ui/navigation/tabs.js +32 -21
  102. package/dist/components/ui/navigation/types.esm.js +196 -195
  103. package/dist/components/ui/navigation/types.js +196 -195
  104. package/dist/components/ui/overlay/backdrop.esm.js +17 -16
  105. package/dist/components/ui/overlay/backdrop.js +17 -16
  106. package/dist/components/ui/overlay/focus-manager.esm.js +21 -19
  107. package/dist/components/ui/overlay/focus-manager.js +21 -19
  108. package/dist/components/ui/overlay/index.esm.js +22 -2
  109. package/dist/components/ui/overlay/index.js +22 -2
  110. package/dist/components/ui/overlay/modal.esm.js +38 -34
  111. package/dist/components/ui/overlay/modal.js +38 -34
  112. package/dist/components/ui/overlay/overlay-manager.esm.js +25 -20
  113. package/dist/components/ui/overlay/overlay-manager.js +25 -20
  114. package/dist/components/ui/overlay/popover.esm.js +74 -58
  115. package/dist/components/ui/overlay/popover.js +74 -58
  116. package/dist/components/ui/overlay/portal.esm.js +7 -7
  117. package/dist/components/ui/overlay/portal.js +7 -7
  118. package/dist/components/ui/overlay/tooltip.esm.js +54 -39
  119. package/dist/components/ui/overlay/tooltip.js +54 -39
  120. package/dist/components/ui/overlay/types.esm.js +132 -131
  121. package/dist/components/ui/overlay/types.js +132 -131
  122. package/dist/components/ui/performance-demo.esm.js +135 -88
  123. package/dist/components/ui/performance-demo.js +135 -88
  124. package/dist/components/ui/semantic-input-system-demo.esm.js +117 -80
  125. package/dist/components/ui/semantic-input-system-demo.js +117 -80
  126. package/dist/components/ui/theme-customizer.esm.js +84 -52
  127. package/dist/components/ui/theme-customizer.js +84 -52
  128. package/dist/components/ui/theme-preview.esm.js +95 -43
  129. package/dist/components/ui/theme-preview.js +95 -43
  130. package/dist/components/ui/theme-switcher.esm.js +70 -44
  131. package/dist/components/ui/theme-switcher.js +70 -44
  132. package/dist/components/ui/theme-toggle.esm.js +3 -3
  133. package/dist/components/ui/theme-toggle.js +3 -3
  134. package/dist/components/ui/token-demo.esm.js +33 -21
  135. package/dist/components/ui/token-demo.js +33 -21
  136. package/dist/components/ui/touch-demo.esm.js +102 -73
  137. package/dist/components/ui/touch-demo.js +102 -73
  138. package/dist/components/ui/touch-friendly-interface-demo.esm.js +102 -64
  139. package/dist/components/ui/touch-friendly-interface-demo.js +102 -64
  140. package/dist/components/ui/touch-friendly-interface.esm.js +85 -61
  141. package/dist/components/ui/touch-friendly-interface.js +85 -61
  142. package/dist/hooks/use-accessibility-support.esm.js +115 -85
  143. package/dist/hooks/use-accessibility-support.js +115 -85
  144. package/dist/hooks/use-adaptive-layout.esm.js +56 -33
  145. package/dist/hooks/use-adaptive-layout.js +56 -33
  146. package/dist/hooks/use-advanced-patterns.esm.js +57 -42
  147. package/dist/hooks/use-advanced-patterns.js +57 -42
  148. package/dist/hooks/use-advanced-transition-system.esm.js +112 -71
  149. package/dist/hooks/use-advanced-transition-system.js +112 -71
  150. package/dist/hooks/use-animation-profile.esm.js +63 -34
  151. package/dist/hooks/use-animation-profile.js +63 -34
  152. package/dist/hooks/use-battery-animations.esm.js +80 -55
  153. package/dist/hooks/use-battery-animations.js +80 -55
  154. package/dist/hooks/use-battery-conscious-loading.esm.js +166 -123
  155. package/dist/hooks/use-battery-conscious-loading.js +166 -123
  156. package/dist/hooks/use-battery-optimization.esm.js +78 -55
  157. package/dist/hooks/use-battery-optimization.js +78 -55
  158. package/dist/hooks/use-battery-status.esm.js +73 -51
  159. package/dist/hooks/use-battery-status.js +73 -51
  160. package/dist/hooks/use-component-performance.esm.js +62 -47
  161. package/dist/hooks/use-component-performance.js +62 -47
  162. package/dist/hooks/use-device-loading-states.esm.js +152 -109
  163. package/dist/hooks/use-device-loading-states.js +152 -109
  164. package/dist/hooks/use-device.esm.js +25 -14
  165. package/dist/hooks/use-device.js +25 -14
  166. package/dist/hooks/use-enterprise-mobile-experience.esm.js +137 -88
  167. package/dist/hooks/use-enterprise-mobile-experience.js +137 -88
  168. package/dist/hooks/use-form-feedback.esm.js +124 -81
  169. package/dist/hooks/use-form-feedback.js +124 -81
  170. package/dist/hooks/use-form-performance.esm.js +127 -92
  171. package/dist/hooks/use-form-performance.js +127 -92
  172. package/dist/hooks/use-frame-rate.esm.js +56 -37
  173. package/dist/hooks/use-frame-rate.js +56 -37
  174. package/dist/hooks/use-gestures.esm.js +96 -72
  175. package/dist/hooks/use-gestures.js +96 -72
  176. package/dist/hooks/use-hardware-acceleration.esm.js +65 -37
  177. package/dist/hooks/use-hardware-acceleration.js +65 -37
  178. package/dist/hooks/use-input-accessibility.esm.js +157 -119
  179. package/dist/hooks/use-input-accessibility.js +157 -119
  180. package/dist/hooks/use-input-performance.esm.js +139 -104
  181. package/dist/hooks/use-input-performance.js +139 -104
  182. package/dist/hooks/use-layout-performance.esm.js +50 -29
  183. package/dist/hooks/use-layout-performance.js +50 -29
  184. package/dist/hooks/use-loading-accessibility.esm.js +209 -169
  185. package/dist/hooks/use-loading-accessibility.js +209 -169
  186. package/dist/hooks/use-loading-performance.esm.js +117 -93
  187. package/dist/hooks/use-loading-performance.js +117 -93
  188. package/dist/hooks/use-memory-usage.esm.js +57 -38
  189. package/dist/hooks/use-memory-usage.js +57 -38
  190. package/dist/hooks/use-mobile-form-layout.esm.js +111 -74
  191. package/dist/hooks/use-mobile-form-layout.js +111 -74
  192. package/dist/hooks/use-mobile-form-validation.esm.js +211 -144
  193. package/dist/hooks/use-mobile-form-validation.js +211 -144
  194. package/dist/hooks/use-mobile-keyboard-optimization.esm.js +154 -113
  195. package/dist/hooks/use-mobile-keyboard-optimization.js +154 -113
  196. package/dist/hooks/use-mobile-layout.esm.js +73 -51
  197. package/dist/hooks/use-mobile-layout.js +73 -51
  198. package/dist/hooks/use-mobile-optimization.esm.js +72 -44
  199. package/dist/hooks/use-mobile-optimization.js +72 -44
  200. package/dist/hooks/use-mobile-skeleton.esm.js +97 -64
  201. package/dist/hooks/use-mobile-skeleton.js +97 -64
  202. package/dist/hooks/use-mobile-touch.esm.js +128 -93
  203. package/dist/hooks/use-mobile-touch.js +128 -93
  204. package/dist/hooks/use-performance-throttling.esm.js +72 -48
  205. package/dist/hooks/use-performance-throttling.js +72 -48
  206. package/dist/hooks/use-performance.esm.js +90 -52
  207. package/dist/hooks/use-performance.js +90 -52
  208. package/dist/hooks/use-reusable-architecture.esm.js +94 -65
  209. package/dist/hooks/use-reusable-architecture.js +94 -65
  210. package/dist/hooks/use-semantic-input-types.esm.js +166 -124
  211. package/dist/hooks/use-semantic-input-types.js +166 -124
  212. package/dist/hooks/use-semantic-input.esm.js +178 -126
  213. package/dist/hooks/use-semantic-input.js +178 -126
  214. package/dist/hooks/use-tablet-layout.esm.js +67 -38
  215. package/dist/hooks/use-tablet-layout.js +67 -38
  216. package/dist/hooks/use-touch-friendly-input.esm.js +193 -149
  217. package/dist/hooks/use-touch-friendly-input.js +193 -149
  218. package/dist/hooks/use-touch-friendly-interface.esm.js +99 -67
  219. package/dist/hooks/use-touch-friendly-interface.js +99 -67
  220. package/dist/hooks/use-touch-optimization.esm.js +99 -72
  221. package/dist/hooks/use-touch-optimization.js +99 -72
  222. package/dist/index.esm.js +289 -280
  223. package/dist/index.js +289 -280
  224. package/dist/lib/utils.esm.js +1 -1
  225. package/dist/lib/utils.js +1 -1
  226. package/dist/plugins/theme-css-generator.esm.js +104 -55
  227. package/dist/plugins/theme-css-generator.js +104 -55
  228. package/dist/provider.esm.js +4 -4
  229. package/dist/provider.js +4 -4
  230. package/dist/styles.css +1 -1
  231. package/dist/theme.esm.js +633 -468
  232. package/dist/theme.js +633 -468
  233. package/dist/themes/ThemeContext.esm.js +15 -15
  234. package/dist/themes/ThemeContext.js +15 -15
  235. package/dist/themes/ThemeProvider.esm.js +25 -22
  236. package/dist/themes/ThemeProvider.js +25 -22
  237. package/dist/themes/accessibility.esm.js +147 -108
  238. package/dist/themes/accessibility.js +147 -108
  239. package/dist/themes/aria-patterns.esm.js +198 -162
  240. package/dist/themes/aria-patterns.js +198 -162
  241. package/dist/themes/base-themes.esm.js +14 -11
  242. package/dist/themes/base-themes.js +14 -11
  243. package/dist/themes/colorManager.esm.js +101 -83
  244. package/dist/themes/colorManager.js +101 -83
  245. package/dist/themes/examples/dark-theme.esm.js +133 -103
  246. package/dist/themes/examples/dark-theme.js +133 -103
  247. package/dist/themes/examples/minimal-theme.esm.js +83 -61
  248. package/dist/themes/examples/minimal-theme.js +83 -61
  249. package/dist/themes/focus-management.esm.js +202 -143
  250. package/dist/themes/focus-management.js +202 -143
  251. package/dist/themes/fontLoader.esm.js +28 -19
  252. package/dist/themes/fontLoader.js +28 -19
  253. package/dist/themes/high-contrast.esm.js +152 -104
  254. package/dist/themes/high-contrast.js +152 -104
  255. package/dist/themes/inheritance.esm.js +35 -27
  256. package/dist/themes/inheritance.js +35 -27
  257. package/dist/themes/keyboard-navigation.esm.js +152 -123
  258. package/dist/themes/keyboard-navigation.js +152 -123
  259. package/dist/themes/motion-reduction.esm.js +193 -133
  260. package/dist/themes/motion-reduction.js +193 -133
  261. package/dist/themes/navigation.esm.js +146 -146
  262. package/dist/themes/navigation.js +146 -146
  263. package/dist/themes/screen-reader.esm.js +159 -94
  264. package/dist/themes/screen-reader.js +159 -94
  265. package/dist/themes/systemThemeDetector.esm.js +42 -34
  266. package/dist/themes/systemThemeDetector.js +42 -34
  267. package/dist/themes/themeCSSUpdater.esm.js +21 -9
  268. package/dist/themes/themeCSSUpdater.js +21 -9
  269. package/dist/themes/themePersistence.esm.js +68 -47
  270. package/dist/themes/themePersistence.js +68 -47
  271. package/dist/themes/themes/stan-design.esm.js +633 -468
  272. package/dist/themes/themes/stan-design.js +633 -468
  273. package/dist/themes/types.esm.js +301 -287
  274. package/dist/themes/types.js +301 -287
  275. package/dist/themes/useSystemTheme.esm.js +4 -4
  276. package/dist/themes/useSystemTheme.js +4 -4
  277. package/dist/themes/useTheme.esm.js +4 -4
  278. package/dist/themes/useTheme.js +4 -4
  279. package/dist/themes/validation.esm.js +128 -77
  280. package/dist/themes/validation.js +128 -77
  281. package/dist/tokens/index.esm.js +15 -4
  282. package/dist/tokens/index.js +15 -4
  283. package/dist/tokens/tokenExporter.esm.js +87 -61
  284. package/dist/tokens/tokenExporter.js +87 -61
  285. package/dist/tokens/tokenGenerator.esm.js +86 -77
  286. package/dist/tokens/tokenGenerator.js +86 -77
  287. package/dist/tokens/tokenManager.esm.js +64 -51
  288. package/dist/tokens/tokenManager.js +64 -51
  289. package/dist/tokens/tokenValidator.esm.js +193 -147
  290. package/dist/tokens/tokenValidator.js +193 -147
  291. package/dist/tokens/types.esm.js +49 -35
  292. package/dist/tokens/types.js +49 -35
  293. package/dist/utils/bundle-analyzer.esm.js +83 -65
  294. package/dist/utils/bundle-analyzer.js +83 -65
  295. package/dist/utils/bundle-splitting.esm.js +142 -117
  296. package/dist/utils/bundle-splitting.js +142 -117
  297. package/dist/utils/lazy-loading.esm.js +132 -106
  298. package/dist/utils/lazy-loading.js +132 -106
  299. package/dist/utils/performance-monitor.esm.js +170 -129
  300. package/dist/utils/performance-monitor.js +170 -129
  301. package/dist/utils/tree-shaking.esm.js +69 -61
  302. package/dist/utils/tree-shaking.js +69 -61
  303. package/package.json +1 -1
  304. 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?) => void
14
- onReducedMotionApplied?) => void
15
- onFocusManaged?) => void
16
- onAriaEnhanced?) => void
17
- onVoiceControlEnabled?) => void
18
- onHighContrastApplied?) => void
19
- onKeyboardNavigationEnabled?) => void
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)