@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.9 → 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,24 +1,45 @@
1
1
  import { useState, useEffect, useCallback, useRef } from 'react'
2
2
 
3
3
  export interface GPUInfo {
4
- vendor}
4
+ vendor: string
5
+ renderer: string
6
+ version: string
7
+ isWebGLSupported: boolean
8
+ isWebGL2Supported: boolean
9
+ maxTextureSize: number
10
+ maxAnisotropy: number
11
+ maxPrecision: string
12
+ }
5
13
 
6
14
  export interface HardwareAccelerationMetrics {
7
- fps}
15
+ fps: number
16
+ frameTime: number
17
+ memoryUsage: number
18
+ gpuUtilization: number
19
+ batteryImpact: number
20
+ performanceScore: number
21
+ }
8
22
 
9
23
  export interface HardwareAccelerationConfig {
10
- enableGPUMonitoring?}
24
+ enableGPUMonitoring?: boolean
25
+ enablePerformanceTracking?: boolean
26
+ enableBatteryOptimization?: boolean
27
+ enableAutomaticOptimization?: boolean
28
+ fpsTarget?: number
29
+ memoryThreshold?: number
30
+ batteryLowThreshold?: number
31
+ }
11
32
 
12
33
  export interface HardwareAccelerationCallbacks {
13
- onGPUDetected?) => void
14
- onPerformanceWarning?, metrics) => void
15
- onBatteryWarning?, isLow) => void
16
- onOptimizationApplied?) => void
34
+ onGPUDetected?: (gpuInfo: GPUInfo) => void
35
+ onPerformanceWarning?: (warning: string, metrics: HardwareAccelerationMetrics) => void
36
+ onBatteryWarning?: (level: number, isLow: boolean) => void
37
+ onOptimizationApplied?: (optimization: string) => void
17
38
  }
18
39
 
19
40
  export const useHardwareAcceleration = (
20
- config= {},
21
- callbacks= {}
41
+ config: HardwareAccelerationConfig = {},
42
+ callbacks: HardwareAccelerationCallbacks = {}
22
43
  ) => {
23
44
  const {
24
45
  enableGPUMonitoring = true,
@@ -32,12 +53,13 @@ export const useHardwareAcceleration = (
32
53
 
33
54
  const [gpuInfo, setGpuInfo] = useState<GPUInfo | null>(null)
34
55
  const [metrics, setMetrics] = useState<HardwareAccelerationMetrics>({
35
- fps,
36
- frameTime,
37
- memoryUsage,
38
- gpuUtilization,
39
- batteryImpact,
40
- performanceScore})
56
+ fps: 60,
57
+ frameTime: 16.67,
58
+ memoryUsage: 0,
59
+ gpuUtilization: 0,
60
+ batteryImpact: 0,
61
+ performanceScore: 100
62
+ })
41
63
  const [isOptimizing, setIsOptimizing] = useState(false)
42
64
  const [optimizations, setOptimizations] = useState<string[]>([])
43
65
  const [isHardwareAccelerated, setIsHardwareAccelerated] = useState(false)
@@ -49,7 +71,7 @@ export const useHardwareAcceleration = (
49
71
  const performanceTimerRef = useRef<number | null>(null)
50
72
 
51
73
  // GPU capability detection
52
- const detectGPU = useCallback(()=> {
74
+ const detectGPU = useCallback((): GPUInfo | null => {
53
75
  if (!enableGPUMonitoring) return null
54
76
 
55
77
  try {
@@ -58,18 +80,21 @@ export const useHardwareAcceleration = (
58
80
 
59
81
  if (!gl) {
60
82
  return {
61
- vendor,
62
- renderer,
63
- version,
64
- isWebGLSupported,
65
- isWebGL2Supported,
66
- maxTextureSize,
67
- maxAnisotropy,
68
- maxPrecision}
83
+ vendor: 'Unknown',
84
+ renderer: 'WebGL not supported',
85
+ version: 'Unknown',
86
+ isWebGLSupported: false,
87
+ isWebGL2Supported: false,
88
+ maxTextureSize: 0,
89
+ maxAnisotropy: 0,
90
+ maxPrecision: 'Unknown'
91
+ }
69
92
  }
70
93
 
71
94
  const debugInfo = gl.getExtension('WEBGL_debug_renderer_info')
72
- const vendor = debugInfo ? gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL) = debugInfo ? gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL) = gl.getParameter(gl.VERSION) || 'Unknown'
95
+ const vendor = debugInfo ? gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL) : 'Unknown'
96
+ const renderer = debugInfo ? gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL) : 'Unknown'
97
+ const version = gl.getParameter(gl.VERSION) || 'Unknown'
73
98
 
74
99
  // Check WebGL2 support
75
100
  const canvas2 = document.createElement('canvas')
@@ -81,11 +106,11 @@ export const useHardwareAcceleration = (
81
106
  const maxAnisotropy = gl.getParameter((gl as any).MAX_TEXTURE_MAX_ANISOTROPY_EXT) || 0
82
107
  const maxPrecision = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT)?.precision?.toString() || 'Unknown'
83
108
 
84
- const gpuInfo= {
109
+ const gpuInfo: GPUInfo = {
85
110
  vendor,
86
111
  renderer,
87
112
  version,
88
- isWebGLSupported,
113
+ isWebGLSupported: true,
89
114
  isWebGL2Supported,
90
115
  maxTextureSize,
91
116
  maxAnisotropy,
@@ -97,7 +122,7 @@ export const useHardwareAcceleration = (
97
122
 
98
123
  return gpuInfo
99
124
  } catch (error) {
100
- console.warn('GPU detection failed, error)
125
+ console.warn('GPU detection failed:', error)
101
126
  return null
102
127
  }
103
128
  }, [enableGPUMonitoring, callbacks])
@@ -128,7 +153,7 @@ export const useHardwareAcceleration = (
128
153
 
129
154
  const performanceScore = Math.round((fpsScore + timeScore + memoryScore + gpuScore) / 4)
130
155
 
131
- const newMetrics= {
156
+ const newMetrics: HardwareAccelerationMetrics = {
132
157
  fps,
133
158
  frameTime,
134
159
  memoryUsage,
@@ -166,7 +191,7 @@ export const useHardwareAcceleration = (
166
191
  applyBatteryOptimizations()
167
192
  }
168
193
  } catch (error) {
169
- console.warn('Battery API not available, error)
194
+ console.warn('Battery API not available:', error)
170
195
  }
171
196
  }, [enableBatteryOptimization, batteryLowThreshold, callbacks])
172
197
 
@@ -199,7 +224,7 @@ export const useHardwareAcceleration = (
199
224
  setIsOptimizing(true)
200
225
 
201
226
  setTimeout(() => {
202
- const optimizations] = []
227
+ const optimizations: string[] = []
203
228
 
204
229
  if (metrics.fps < fpsTarget * 0.8) {
205
230
  optimizations.push('Hardware acceleration optimized for better FPS')
@@ -261,7 +286,7 @@ export const useHardwareAcceleration = (
261
286
  }
262
287
  }
263
288
  } catch (error) {
264
- console.warn('Hardware acceleration initialization failed, error)
289
+ console.warn('Hardware acceleration initialization failed:', error)
265
290
  }
266
291
  }, [detectGPU, enablePerformanceTracking, enableBatteryOptimization, checkBatteryStatus, measurePerformance])
267
292
 
@@ -303,11 +328,14 @@ export const useHardwareAcceleration = (
303
328
  checkHardwareAcceleration,
304
329
 
305
330
  // Computed values
306
- isGPUSupported,
307
- isWebGL2Supported,
308
- performanceLevel= 90 ? 'excellent' = 80 ? 'good' = 70 ? 'fair' ,
309
- needsOptimization,
310
- batteryOptimized}
331
+ isGPUSupported: !!gpuInfo?.isWebGLSupported,
332
+ isWebGL2Supported: !!gpuInfo?.isWebGL2Supported,
333
+ performanceLevel: metrics.performanceScore >= 90 ? 'excellent' :
334
+ metrics.performanceScore >= 80 ? 'good' :
335
+ metrics.performanceScore >= 70 ? 'fair' : 'poor',
336
+ needsOptimization: metrics.performanceScore < 70,
337
+ batteryOptimized: metrics.batteryImpact < 50
338
+ }
311
339
  }
312
340
 
313
341
  export default useHardwareAcceleration
@@ -1,27 +1,51 @@
1
1
  import { useState, useCallback, useRef, useEffect } from 'react'
2
2
 
3
3
  export interface InputAccessibilityConfig {
4
- enableARIA?, string>
5
- focusTrap?}
4
+ enableARIA?: boolean
5
+ enableKeyboardNavigation?: boolean
6
+ enableScreenReader?: boolean
7
+ enableFocusManagement?: boolean
8
+ enableHighContrast?: boolean
9
+ enableReducedMotion?: boolean
10
+ enableVoiceControl?: boolean
11
+ ariaLabels?: Record<string, string>
12
+ focusTrap?: boolean
13
+ skipLinks?: boolean
14
+ }
6
15
 
7
16
  export interface AccessibilityFeature {
8
- id}
17
+ id: string
18
+ name: string
19
+ type: 'aria' | 'keyboard' | 'screen-reader' | 'focus' | 'contrast' | 'motion' | 'voice'
20
+ enabled: boolean
21
+ impact: 'low' | 'medium' | 'high'
22
+ description: string
23
+ ariaLabel?: string
24
+ keyboardShortcut?: string
25
+ }
9
26
 
10
27
  export interface AccessibilityState {
11
- isHighContrast]
28
+ isHighContrast: boolean
29
+ isReducedMotion: boolean
30
+ isVoiceControl: boolean
31
+ isKeyboardNavigating: boolean
32
+ isScreenReaderActive: boolean
33
+ focusIndex: number
34
+ accessibilityScore: number
35
+ activeFeatures: string[]
12
36
  }
13
37
 
14
38
  export interface InputAccessibilityCallbacks {
15
- onAccessibilityFeatureEnabled?) => void
16
- onKeyboardNavigationEnabled?) => void
17
- onScreenReaderOptimized?) => void
18
- onFocusManagementEnhanced?) => void
19
- onAccessibilityScoreChanged?) => void
39
+ onAccessibilityFeatureEnabled?: (feature: AccessibilityFeature) => void
40
+ onKeyboardNavigationEnabled?: (feature: string) => void
41
+ onScreenReaderOptimized?: (optimization: string) => void
42
+ onFocusManagementEnhanced?: (feature: string) => void
43
+ onAccessibilityScoreChanged?: (score: number) => void
20
44
  }
21
45
 
22
46
  export const useInputAccessibility = (
23
- config= {},
24
- callbacks= {}
47
+ config: InputAccessibilityConfig = {},
48
+ callbacks: InputAccessibilityCallbacks = {}
25
49
  ) => {
26
50
  const {
27
51
  enableARIA = true,
@@ -36,14 +60,14 @@ export const useInputAccessibility = (
36
60
 
37
61
  const [accessibilityFeatures, setAccessibilityFeatures] = useState<AccessibilityFeature[]>([])
38
62
  const [accessibilityState, setAccessibilityState] = useState<AccessibilityState>({
39
- isHighContrast,
40
- isReducedMotion,
41
- isVoiceControl,
42
- isKeyboardNavigating,
43
- isScreenReaderActive,
44
- focusIndex,
45
- accessibilityScore,
46
- activeFeatures]
63
+ isHighContrast: false,
64
+ isReducedMotion: false,
65
+ isVoiceControl: false,
66
+ isKeyboardNavigating: false,
67
+ isScreenReaderActive: false,
68
+ focusIndex: 0,
69
+ accessibilityScore: 0,
70
+ activeFeatures: []
47
71
  })
48
72
 
49
73
  const [isEnhancing, setIsEnhancing] = useState(false)
@@ -56,97 +80,106 @@ export const useInputAccessibility = (
56
80
 
57
81
  // Initialize accessibility features
58
82
  const initializeAccessibilityFeatures = useCallback(() => {
59
- const features] = [
83
+ const features: AccessibilityFeature[] = [
60
84
  {
61
- id,
62
- name,
63
- type,
64
- enabled,
65
- impact,
66
- description,
67
- ariaLabel},
85
+ id: 'aria-1',
86
+ name: 'ARIA Labels',
87
+ type: 'aria',
88
+ enabled: enableARIA,
89
+ impact: 'high',
90
+ description: 'Enhanced ARIA labels for screen readers',
91
+ ariaLabel: 'Enhanced accessibility labels'
92
+ },
68
93
  {
69
- id,
70
- name,
71
- type,
72
- enabled,
73
- impact,
74
- description,
75
- ariaLabel},
94
+ id: 'aria-2',
95
+ name: 'ARIA Descriptions',
96
+ type: 'aria',
97
+ enabled: enableARIA,
98
+ impact: 'medium',
99
+ description: 'Detailed ARIA descriptions for complex inputs',
100
+ ariaLabel: 'Detailed input descriptions'
101
+ },
76
102
  {
77
- id,
78
- name,
79
- type,
80
- enabled,
81
- impact,
82
- description,
83
- keyboardShortcut, Shift+Tab, Arrow keys'
103
+ id: 'keyboard-1',
104
+ name: 'Keyboard Navigation',
105
+ type: 'keyboard',
106
+ enabled: enableKeyboardNavigation,
107
+ impact: 'high',
108
+ description: 'Full keyboard navigation support',
109
+ keyboardShortcut: 'Tab, Shift+Tab, Arrow keys'
84
110
  },
85
111
  {
86
- id,
87
- name,
88
- type,
89
- enabled,
90
- impact,
91
- description,
92
- keyboardShortcut, Ctrl+Z, etc.'
112
+ id: 'keyboard-2',
113
+ name: 'Keyboard Shortcuts',
114
+ type: 'keyboard',
115
+ enabled: enableKeyboardNavigation,
116
+ impact: 'medium',
117
+ description: 'Custom keyboard shortcuts for common actions',
118
+ keyboardShortcut: 'Ctrl+S, Ctrl+Z, etc.'
93
119
  },
94
120
  {
95
- id,
96
- name,
97
- type,
98
- enabled,
99
- impact,
100
- description,
101
- ariaLabel},
121
+ id: 'screen-reader-1',
122
+ name: 'Screen Reader Support',
123
+ type: 'screen-reader',
124
+ enabled: enableScreenReader,
125
+ impact: 'high',
126
+ description: 'Optimized screen reader compatibility',
127
+ ariaLabel: 'Screen reader optimized'
128
+ },
102
129
  {
103
- id,
104
- name,
105
- type,
106
- enabled,
107
- impact,
108
- description,
109
- ariaLabel},
130
+ id: 'screen-reader-2',
131
+ name: 'Live Regions',
132
+ type: 'screen-reader',
133
+ enabled: enableScreenReader,
134
+ impact: 'medium',
135
+ description: 'Live regions for dynamic content updates',
136
+ ariaLabel: 'Live content updates'
137
+ },
110
138
  {
111
- id,
112
- name,
113
- type,
114
- enabled,
115
- impact,
116
- description,
117
- ariaLabel},
139
+ id: 'focus-1',
140
+ name: 'Focus Management',
141
+ type: 'focus',
142
+ enabled: enableFocusManagement,
143
+ impact: 'high',
144
+ description: 'Enhanced focus management and visible focus indicators',
145
+ ariaLabel: 'Focus management'
146
+ },
118
147
  {
119
- id,
120
- name,
121
- type,
122
- enabled,
123
- impact,
124
- description,
125
- ariaLabel},
148
+ id: 'focus-2',
149
+ name: 'Focus Trap',
150
+ type: 'focus',
151
+ enabled: enableFocusManagement && focusTrap,
152
+ impact: 'medium',
153
+ description: 'Focus trap for modal dialogs and overlays',
154
+ ariaLabel: 'Focus containment'
155
+ },
126
156
  {
127
- id,
128
- name,
129
- type,
130
- enabled,
131
- impact,
132
- description,
133
- ariaLabel},
157
+ id: 'contrast-1',
158
+ name: 'High Contrast',
159
+ type: 'contrast',
160
+ enabled: enableHighContrast,
161
+ impact: 'medium',
162
+ description: 'High contrast mode support',
163
+ ariaLabel: 'High contrast support'
164
+ },
134
165
  {
135
- id,
136
- name,
137
- type,
138
- enabled,
139
- impact,
140
- description,
141
- ariaLabel},
166
+ id: 'motion-1',
167
+ name: 'Reduced Motion',
168
+ type: 'motion',
169
+ enabled: enableReducedMotion,
170
+ impact: 'medium',
171
+ description: 'Reduced motion preference support',
172
+ ariaLabel: 'Reduced motion support'
173
+ },
142
174
  {
143
- id,
144
- name,
145
- type,
146
- enabled,
147
- impact,
148
- description,
149
- ariaLabel}
175
+ id: 'voice-1',
176
+ name: 'Voice Control',
177
+ type: 'voice',
178
+ enabled: enableVoiceControl,
179
+ impact: 'low',
180
+ description: 'Voice control and speech recognition support',
181
+ ariaLabel: 'Voice control support'
182
+ }
150
183
  ]
151
184
 
152
185
  setAccessibilityFeatures(features)
@@ -157,34 +190,38 @@ export const useInputAccessibility = (
157
190
  const monitorSystemPreferences = useCallback(() => {
158
191
  // Monitor reduced motion preference
159
192
  if (enableReducedMotion) {
160
- motionQueryRef.current = window.matchMedia('(prefers-reduced-motion)')
161
- const handleMotionChange = (e) => {
193
+ motionQueryRef.current = window.matchMedia('(prefers-reduced-motion: reduce)')
194
+ const handleMotionChange = (e: MediaQueryListEvent) => {
162
195
  setAccessibilityState(prev => ({
163
196
  ...prev,
164
- isReducedMotion}))
197
+ isReducedMotion: e.matches
198
+ }))
165
199
  }
166
200
  motionQueryRef.current.addEventListener('change', handleMotionChange)
167
201
 
168
202
  // Set initial state
169
203
  setAccessibilityState(prev => ({
170
204
  ...prev,
171
- isReducedMotion}))
205
+ isReducedMotion: motionQueryRef.current?.matches || false
206
+ }))
172
207
  }
173
208
 
174
209
  // Monitor high contrast preference
175
210
  if (enableHighContrast) {
176
- contrastQueryRef.current = window.matchMedia('(prefers-contrast)')
177
- const handleContrastChange = (e) => {
211
+ contrastQueryRef.current = window.matchMedia('(prefers-contrast: high)')
212
+ const handleContrastChange = (e: MediaQueryListEvent) => {
178
213
  setAccessibilityState(prev => ({
179
214
  ...prev,
180
- isHighContrast}))
215
+ isHighContrast: e.matches
216
+ }))
181
217
  }
182
218
  contrastQueryRef.current.addEventListener('change', handleContrastChange)
183
219
 
184
220
  // Set initial state
185
221
  setAccessibilityState(prev => ({
186
222
  ...prev,
187
- isHighContrast}))
223
+ isHighContrast: contrastQueryRef.current?.matches || false
224
+ }))
188
225
  }
189
226
 
190
227
  // Monitor voice control preference (simulated)
@@ -193,7 +230,7 @@ export const useInputAccessibility = (
193
230
  setTimeout(() => {
194
231
  setAccessibilityState(prev => ({
195
232
  ...prev,
196
- isVoiceControl) > 0.7 // 30% chance of voice control being active
233
+ isVoiceControl: Math.random() > 0.7 // 30% chance of voice control being active
197
234
  }))
198
235
  }, 1000)
199
236
  }
@@ -218,12 +255,13 @@ export const useInputAccessibility = (
218
255
 
219
256
  ariaEnhancements.forEach(enhancement => {
220
257
  callbacks.onAccessibilityFeatureEnabled?.({
221
- id,
222
- name,
223
- type,
224
- enabled,
225
- impact,
226
- description})
258
+ id: 'aria-enhancement',
259
+ name: 'ARIA Enhancement',
260
+ type: 'aria',
261
+ enabled: true,
262
+ impact: 'high',
263
+ description: enhancement
264
+ })
227
265
  })
228
266
  }, 200)
229
267
  }, [enableARIA, callbacks])
@@ -320,7 +358,7 @@ export const useInputAccessibility = (
320
358
 
321
359
  setAccessibilityState(prev => ({
322
360
  ...prev,
323
- accessibilityScore)
361
+ accessibilityScore: Math.round(score)
324
362
  }))
325
363
 
326
364
  callbacks.onAccessibilityScoreChanged?.(score)
@@ -337,7 +375,7 @@ export const useInputAccessibility = (
337
375
 
338
376
  // Get accessibility recommendations
339
377
  const getAccessibilityRecommendations = useCallback(() => {
340
- const recommendations] = []
378
+ const recommendations: string[] = []
341
379
 
342
380
  if (accessibilityState.accessibilityScore < 70) {
343
381
  recommendations.push('Accessibility score is low, consider enabling more features')
@@ -404,12 +442,12 @@ export const useInputAccessibility = (
404
442
  autoEnhanceAccessibility,
405
443
 
406
444
  // Utility functions
407
- isFeatureEnabled) => accessibilityFeatures.find(f => f.id === featureId)?.enabled || false,
408
- getFeatureByName) => accessibilityFeatures.find(f => f.name.toLowerCase().includes(name.toLowerCase())),
409
- getAccessibilityScore) => accessibilityState.accessibilityScore,
410
- isAccessibilityOptimal) => accessibilityState.accessibilityScore >= 80,
445
+ isFeatureEnabled: (featureId: string) => accessibilityFeatures.find(f => f.id === featureId)?.enabled || false,
446
+ getFeatureByName: (name: string) => accessibilityFeatures.find(f => f.name.toLowerCase().includes(name.toLowerCase())),
447
+ getAccessibilityScore: () => accessibilityState.accessibilityScore,
448
+ isAccessibilityOptimal: () => accessibilityState.accessibilityScore >= 80,
411
449
  getAccessibilityRecommendations,
412
- clearEnhancements) => setEnhancements([])
450
+ clearEnhancements: () => setEnhancements([])
413
451
  }
414
452
  }
415
453