@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.9 → 0.2.11

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 (306) 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 +0 -1
  89. package/dist/components/ui/navigation/index.js +0 -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 +0 -2
  109. package/dist/components/ui/overlay/index.js +0 -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 +157 -281
  223. package/dist/index.js +157 -281
  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/index.esm.js +1 -1
  256. package/dist/themes/index.js +1 -1
  257. package/dist/themes/inheritance.esm.js +35 -27
  258. package/dist/themes/inheritance.js +35 -27
  259. package/dist/themes/keyboard-navigation.esm.js +152 -123
  260. package/dist/themes/keyboard-navigation.js +152 -123
  261. package/dist/themes/motion-reduction.esm.js +193 -133
  262. package/dist/themes/motion-reduction.js +193 -133
  263. package/dist/themes/navigation.esm.js +146 -146
  264. package/dist/themes/navigation.js +146 -146
  265. package/dist/themes/screen-reader.esm.js +159 -94
  266. package/dist/themes/screen-reader.js +159 -94
  267. package/dist/themes/systemThemeDetector.esm.js +42 -34
  268. package/dist/themes/systemThemeDetector.js +42 -34
  269. package/dist/themes/themeCSSUpdater.esm.js +21 -9
  270. package/dist/themes/themeCSSUpdater.js +21 -9
  271. package/dist/themes/themePersistence.esm.js +68 -47
  272. package/dist/themes/themePersistence.js +68 -47
  273. package/dist/themes/themes/stan-design.esm.js +633 -468
  274. package/dist/themes/themes/stan-design.js +633 -468
  275. package/dist/themes/types.esm.js +301 -287
  276. package/dist/themes/types.js +301 -287
  277. package/dist/themes/useSystemTheme.esm.js +4 -4
  278. package/dist/themes/useSystemTheme.js +4 -4
  279. package/dist/themes/useTheme.esm.js +4 -4
  280. package/dist/themes/useTheme.js +4 -4
  281. package/dist/themes/validation.esm.js +128 -77
  282. package/dist/themes/validation.js +128 -77
  283. package/dist/tokens/index.esm.js +1 -2
  284. package/dist/tokens/index.js +1 -2
  285. package/dist/tokens/tokenExporter.esm.js +87 -61
  286. package/dist/tokens/tokenExporter.js +87 -61
  287. package/dist/tokens/tokenGenerator.esm.js +86 -77
  288. package/dist/tokens/tokenGenerator.js +86 -77
  289. package/dist/tokens/tokenManager.esm.js +64 -51
  290. package/dist/tokens/tokenManager.js +64 -51
  291. package/dist/tokens/tokenValidator.esm.js +193 -147
  292. package/dist/tokens/tokenValidator.js +193 -147
  293. package/dist/tokens/types.esm.js +49 -35
  294. package/dist/tokens/types.js +49 -35
  295. package/dist/utils/bundle-analyzer.esm.js +83 -65
  296. package/dist/utils/bundle-analyzer.js +83 -65
  297. package/dist/utils/bundle-splitting.esm.js +142 -117
  298. package/dist/utils/bundle-splitting.js +142 -117
  299. package/dist/utils/lazy-loading.esm.js +132 -106
  300. package/dist/utils/lazy-loading.js +132 -106
  301. package/dist/utils/performance-monitor.esm.js +170 -129
  302. package/dist/utils/performance-monitor.js +170 -129
  303. package/dist/utils/tree-shaking.esm.js +69 -61
  304. package/dist/utils/tree-shaking.js +69 -61
  305. package/package.json +1 -1
  306. package/src/index.ts +146 -146
@@ -1,21 +1,36 @@
1
1
  import { useState, useEffect, useCallback, useRef } from 'react'
2
2
 
3
3
  export interface PerformanceThrottlingConfig {
4
- enablePerformanceMonitoring?}
4
+ enablePerformanceMonitoring?: boolean
5
+ enableAutomaticThrottling?: boolean
6
+ enableUserExperienceOptimization?: boolean
7
+ enableBatteryPreservation?: boolean
8
+ performanceThreshold?: number
9
+ frameRateTarget?: number
10
+ memoryThreshold?: number
11
+ cpuThreshold?: number
12
+ }
5
13
 
6
14
  export interface PerformanceMetrics {
7
- fps}
15
+ fps: number
16
+ frameTime: number
17
+ memoryUsage: number
18
+ cpuUsage: number
19
+ performanceScore: number
20
+ isThrottling: boolean
21
+ throttleReason: string
22
+ }
8
23
 
9
24
  export interface PerformanceThrottlingCallbacks {
10
- onPerformanceWarning?) => void
11
- onThrottlingApplied?, reason) => void
12
- onPerformanceRecovery?) => void
13
- onUserExperienceOptimized?) => void
25
+ onPerformanceWarning?: (metrics: PerformanceMetrics) => void
26
+ onThrottlingApplied?: (level: string, reason: string) => void
27
+ onPerformanceRecovery?: (metrics: PerformanceMetrics) => void
28
+ onUserExperienceOptimized?: (optimization: string) => void
14
29
  }
15
30
 
16
31
  export const usePerformanceThrottling = (
17
- config= {},
18
- callbacks= {}
32
+ config: PerformanceThrottlingConfig = {},
33
+ callbacks: PerformanceThrottlingCallbacks = {}
19
34
  ) => {
20
35
  const {
21
36
  enablePerformanceMonitoring = true,
@@ -29,13 +44,14 @@ export const usePerformanceThrottling = (
29
44
  } = config
30
45
 
31
46
  const [metrics, setMetrics] = useState<PerformanceMetrics>({
32
- fps,
33
- frameTime,
34
- memoryUsage,
35
- cpuUsage,
36
- performanceScore,
37
- isThrottling,
38
- throttleReason})
47
+ fps: 60,
48
+ frameTime: 16.67,
49
+ memoryUsage: 0,
50
+ cpuUsage: 0,
51
+ performanceScore: 100,
52
+ isThrottling: false,
53
+ throttleReason: 'none'
54
+ })
39
55
 
40
56
  const [isOptimizing, setIsOptimizing] = useState(false)
41
57
  const [optimizations, setOptimizations] = useState<string[]>([])
@@ -82,7 +98,7 @@ export const usePerformanceThrottling = (
82
98
  else if (memoryUsage > memoryThreshold) throttleReason = 'high_memory'
83
99
  else if (cpuUsage > cpuThreshold) throttleReason = 'high_cpu'
84
100
 
85
- const newMetrics= {
101
+ const newMetrics: PerformanceMetrics = {
86
102
  fps,
87
103
  frameTime,
88
104
  memoryUsage,
@@ -105,7 +121,7 @@ export const usePerformanceThrottling = (
105
121
  lastFrameTimeRef.current = now
106
122
  }
107
123
  } catch (error) {
108
- console.warn('Performance measurement failed, error)
124
+ console.warn('Performance measurement failed:', error)
109
125
  }
110
126
  }, [enablePerformanceMonitoring, performanceThreshold, frameRateTarget, memoryThreshold, cpuThreshold, callbacks, metrics.isThrottling])
111
127
 
@@ -116,25 +132,25 @@ export const usePerformanceThrottling = (
116
132
  setIsOptimizing(true)
117
133
 
118
134
  setTimeout(() => {
119
- let newThrottleLevel= 'none'
120
- let optimizations] = []
135
+ let newThrottleLevel: 'none' | 'light' | 'moderate' | 'aggressive' = 'none'
136
+ let optimizations: string[] = []
121
137
 
122
138
  // Determine throttle level based on performance metrics
123
139
  if (metrics.performanceScore < 50 || metrics.fps < 30) {
124
140
  newThrottleLevel = 'aggressive'
125
- optimizations.push('Critical performance)
141
+ optimizations.push('Critical performance: Maximum throttling applied')
126
142
  optimizations.push('All non-essential animations disabled')
127
143
  optimizations.push('Frame rate limited to 30fps')
128
144
  optimizations.push('Memory usage optimized')
129
145
  } else if (metrics.performanceScore < 70 || metrics.fps < 45) {
130
146
  newThrottleLevel = 'moderate'
131
- optimizations.push('Performance issue)
147
+ optimizations.push('Performance issue: Moderate throttling applied')
132
148
  optimizations.push('Animation complexity reduced by 50%')
133
149
  optimizations.push('Frame rate limited to 45fps')
134
150
  optimizations.push('Memory optimization enabled')
135
151
  } else if (metrics.performanceScore < 85 || metrics.fps < 55) {
136
152
  newThrottleLevel = 'light'
137
- optimizations.push('Performance warning)
153
+ optimizations.push('Performance warning: Light throttling applied')
138
154
  optimizations.push('Animation complexity reduced by 25%')
139
155
  optimizations.push('Frame rate limited to 55fps')
140
156
  optimizations.push('Performance monitoring enhanced')
@@ -142,13 +158,13 @@ export const usePerformanceThrottling = (
142
158
 
143
159
  // Battery preservation considerations
144
160
  if (enableBatteryPreservation && newThrottleLevel !== 'none') {
145
- optimizations.push('Battery preservation)
161
+ optimizations.push('Battery preservation: Animation efficiency optimized')
146
162
  optimizations.push('GPU usage minimized for power efficiency')
147
163
  }
148
164
 
149
165
  // User experience optimization
150
166
  if (enableUserExperienceOptimization && newThrottleLevel !== 'none') {
151
- optimizations.push('User experience)
167
+ optimizations.push('User experience: Smooth performance prioritized')
152
168
  optimizations.push('Animation quality balanced with performance')
153
169
  optimizations.push('Responsive interactions maintained')
154
170
  }
@@ -170,33 +186,33 @@ export const usePerformanceThrottling = (
170
186
  const recommendations = []
171
187
 
172
188
  if (metrics.performanceScore < 50) {
173
- recommendations.push('Critical)
189
+ recommendations.push('Critical: Disable all animations and complex UI operations')
174
190
  recommendations.push('Use static UI elements and minimal interactions')
175
191
  recommendations.push('Implement aggressive memory cleanup')
176
192
  } else if (metrics.performanceScore < 70) {
177
- recommendations.push('High)
193
+ recommendations.push('High: Significantly reduce animation complexity')
178
194
  recommendations.push('Limit concurrent animations to 2-3 maximum')
179
195
  recommendations.push('Use CSS transforms instead of JavaScript animations')
180
196
  } else if (metrics.performanceScore < 85) {
181
- recommendations.push('Medium)
197
+ recommendations.push('Medium: Consider light performance optimization')
182
198
  recommendations.push('Monitor animation frame rates closely')
183
199
  recommendations.push('Implement animation debouncing')
184
200
  }
185
201
 
186
202
  if (metrics.fps < frameRateTarget * 0.8) {
187
- recommendations.push('Low FPS)
203
+ recommendations.push('Low FPS: Reduce animation frame rate')
188
204
  recommendations.push('Use requestAnimationFrame for smooth animations')
189
205
  recommendations.push('Implement frame skipping for complex animations')
190
206
  }
191
207
 
192
208
  if (metrics.memoryUsage > memoryThreshold) {
193
- recommendations.push('High Memory)
209
+ recommendations.push('High Memory: Optimize memory usage')
194
210
  recommendations.push('Clean up animation references')
195
211
  recommendations.push('Use object pooling for repeated animations')
196
212
  }
197
213
 
198
214
  if (metrics.cpuUsage > cpuThreshold) {
199
- recommendations.push('High CPU)
215
+ recommendations.push('High CPU: Reduce computational complexity')
200
216
  recommendations.push('Use CSS animations instead of JavaScript')
201
217
  recommendations.push('Implement animation pausing when not visible')
202
218
  }
@@ -207,32 +223,37 @@ export const usePerformanceThrottling = (
207
223
  // Get optimal performance settings
208
224
  const getOptimalPerformanceSettings = useCallback(() => {
209
225
  const settings = {
210
- maxConcurrentAnimations,
211
- frameRateLimit,
212
- animationQuality,
213
- memoryOptimization,
214
- cpuOptimization}
226
+ maxConcurrentAnimations: 5,
227
+ frameRateLimit: 60,
228
+ animationQuality: 'high',
229
+ memoryOptimization: false,
230
+ cpuOptimization: false
231
+ }
215
232
 
216
233
  switch (throttleLevel) {
217
- case 'aggressive'= 1
234
+ case 'aggressive':
235
+ settings.maxConcurrentAnimations = 1
218
236
  settings.frameRateLimit = 30
219
237
  settings.animationQuality = 'minimal'
220
238
  settings.memoryOptimization = true
221
239
  settings.cpuOptimization = true
222
240
  break
223
- case 'moderate'= 2
241
+ case 'moderate':
242
+ settings.maxConcurrentAnimations = 2
224
243
  settings.frameRateLimit = 45
225
244
  settings.animationQuality = 'medium'
226
245
  settings.memoryOptimization = true
227
246
  settings.cpuOptimization = true
228
247
  break
229
- case 'light'= 3
248
+ case 'light':
249
+ settings.maxConcurrentAnimations = 3
230
250
  settings.frameRateLimit = 55
231
251
  settings.animationQuality = 'high'
232
252
  settings.memoryOptimization = true
233
253
  settings.cpuOptimization = false
234
254
  break
235
- default= 5
255
+ default:
256
+ settings.maxConcurrentAnimations = 5
236
257
  settings.frameRateLimit = 60
237
258
  settings.animationQuality = 'high'
238
259
  settings.memoryOptimization = false
@@ -248,8 +269,9 @@ export const usePerformanceThrottling = (
248
269
  setOptimizations([])
249
270
  setMetrics(prev => ({
250
271
  ...prev,
251
- isThrottling,
252
- throttleReason}))
272
+ isThrottling: false,
273
+ throttleReason: 'none'
274
+ }))
253
275
  }, [])
254
276
 
255
277
  // Initialize performance monitoring
@@ -265,7 +287,7 @@ export const usePerformanceThrottling = (
265
287
  }
266
288
  }
267
289
  } catch (error) {
268
- console.warn('Performance monitoring initialization failed, error)
290
+ console.warn('Performance monitoring initialization failed:', error)
269
291
  }
270
292
  }, [enablePerformanceMonitoring, measurePerformance])
271
293
 
@@ -304,14 +326,16 @@ export const usePerformanceThrottling = (
304
326
  resetThrottling,
305
327
 
306
328
  // Computed values
307
- isThrottling== 'none',
308
- performanceLevel= 90 ? 'excellent' = 80 ? 'good' = 70 ? 'fair' ,
309
- needsOptimization,
310
- recommendations),
311
- performanceSettings),
329
+ isThrottling: throttleLevel !== 'none',
330
+ performanceLevel: metrics.performanceScore >= 90 ? 'excellent' :
331
+ metrics.performanceScore >= 80 ? 'good' :
332
+ metrics.performanceScore >= 70 ? 'fair' : 'poor',
333
+ needsOptimization: metrics.performanceScore < 70,
334
+ recommendations: getThrottlingRecommendations(),
335
+ performanceSettings: getOptimalPerformanceSettings(),
312
336
 
313
337
  // Utility functions
314
- getPerformanceHealth) => {
338
+ getPerformanceHealth: () => {
315
339
  if (metrics.performanceScore >= 90) return 'excellent'
316
340
  if (metrics.performanceScore >= 80) return 'good'
317
341
  if (metrics.performanceScore >= 70) return 'fair'
@@ -1,35 +1,66 @@
1
1
  import { useState, useEffect, useCallback, useMemo, useRef } from 'react'
2
2
 
3
3
  export interface PerformanceMetrics {
4
- fps}
4
+ fps: number
5
+ frameTime: number
6
+ memoryUsage?: number
7
+ memoryLimit?: number
8
+ memoryPercentage?: number
9
+ batteryLevel?: number
10
+ isLowPowerMode?: boolean
11
+ isCharging?: boolean
12
+ performanceMode: 'high' | 'medium' | 'low'
13
+ throttlingEnabled: boolean
14
+ throttlingReason?: string
15
+ }
5
16
 
6
17
  export interface PerformanceThresholds {
7
- fps}
8
- memory}
9
- battery}
18
+ fps: {
19
+ warning: number
20
+ critical: number
21
+ }
22
+ memory: {
23
+ warning: number
24
+ critical: number
25
+ }
26
+ battery: {
27
+ low: number
28
+ critical: number
29
+ }
10
30
  }
11
31
 
12
32
  export interface PerformanceCallbacks {
13
- onFPSWarning?) => void
14
- onMemoryWarning?) => void
15
- onBatteryLow?) => void
16
- onPerformanceModeChange?]) => void
17
- onThrottlingChange?, reason?) => void
33
+ onFPSWarning?: (fps: number) => void
34
+ onMemoryWarning?: (usage: number) => void
35
+ onBatteryLow?: (level: number) => void
36
+ onPerformanceModeChange?: (mode: PerformanceMetrics['performanceMode']) => void
37
+ onThrottlingChange?: (enabled: boolean, reason?: string) => void
18
38
  }
19
39
 
20
40
  export interface PerformanceOptions {
21
- updateInterval?}
41
+ updateInterval?: number
42
+ thresholds?: Partial<PerformanceThresholds>
43
+ enableThrottling?: boolean
44
+ enableBatteryOptimization?: boolean
45
+ callbacks?: PerformanceCallbacks
46
+ }
22
47
 
23
- const DEFAULT_THRESHOLDS= {
24
- fps,
25
- critical},
26
- memory,
27
- critical},
28
- battery,
29
- critical}
48
+ const DEFAULT_THRESHOLDS: PerformanceThresholds = {
49
+ fps: {
50
+ warning: 45,
51
+ critical: 30
52
+ },
53
+ memory: {
54
+ warning: 0.7,
55
+ critical: 0.85
56
+ },
57
+ battery: {
58
+ low: 0.3,
59
+ critical: 0.15
60
+ }
30
61
  }
31
62
 
32
- export const usePerformance = (options= {}) => {
63
+ export const usePerformance = (options: PerformanceOptions = {}) => {
33
64
  const {
34
65
  updateInterval = 1000,
35
66
  thresholds = {},
@@ -39,10 +70,11 @@ export const usePerformance = (options= {}) => {
39
70
  } = options
40
71
 
41
72
  const [metrics, setMetrics] = useState<PerformanceMetrics>({
42
- fps,
43
- frameTime,
44
- performanceMode,
45
- throttlingEnabled})
73
+ fps: 60,
74
+ frameTime: 16.67,
75
+ performanceMode: 'high',
76
+ throttlingEnabled: false
77
+ })
46
78
 
47
79
  const [isMonitoring, setIsMonitoring] = useState(false)
48
80
  const frameCountRef = useRef(0)
@@ -92,8 +124,9 @@ export const usePerformance = (options= {}) => {
92
124
  setMetrics(prev => ({
93
125
  ...prev,
94
126
  memoryUsage,
95
- memoryLimit,
96
- memoryPercentage}))
127
+ memoryLimit: memory.jsHeapSizeLimit,
128
+ memoryPercentage: memoryUsage * 100
129
+ }))
97
130
 
98
131
  // Check memory thresholds
99
132
  if (memoryUsage >= finalThresholds.memory.critical && callbacks.onMemoryWarning) {
@@ -110,22 +143,23 @@ export const usePerformance = (options= {}) => {
110
143
 
111
144
  setMetrics(prev => ({
112
145
  ...prev,
113
- batteryLevel,
114
- isLowPowerMode,
115
- isCharging}))
146
+ batteryLevel: battery.level,
147
+ isLowPowerMode: battery.level < finalThresholds.battery.low,
148
+ isCharging: battery.charging
149
+ }))
116
150
 
117
151
  // Check battery thresholds
118
152
  if (battery.level <= finalThresholds.battery.critical && callbacks.onBatteryLow) {
119
153
  callbacks.onBatteryLow(battery.level)
120
154
  }
121
155
  } catch (error) {
122
- console.warn('Battery API not available, error)
156
+ console.warn('Battery API not available:', error)
123
157
  }
124
158
  }
125
159
  }, [finalThresholds.battery.low, finalThresholds.battery.critical, callbacks.onBatteryLow])
126
160
 
127
161
  // Performance mode determination
128
- const determinePerformanceMode = useCallback((fps, memoryUsage?)] => {
162
+ const determinePerformanceMode = useCallback((fps: number, memoryUsage?: number): PerformanceMetrics['performanceMode'] => {
129
163
  if (fps < finalThresholds.fps.critical || (memoryUsage && memoryUsage > finalThresholds.memory.critical)) {
130
164
  return 'low'
131
165
  }
@@ -136,37 +170,38 @@ export const usePerformance = (options= {}) => {
136
170
  }, [finalThresholds])
137
171
 
138
172
  // Performance throttling logic
139
- const shouldThrottle = useCallback((); reason?} => {
173
+ const shouldThrottle = useCallback((): { should: boolean; reason?: string } => {
140
174
  const { fps, memoryPercentage, batteryLevel, isLowPowerMode } = metrics
141
175
 
142
176
  // FPS-based throttling
143
177
  if (fps < finalThresholds.fps.critical) {
144
- return { should, reason}
178
+ return { should: true, reason: 'Low FPS' }
145
179
  }
146
180
 
147
181
  // Memory-based throttling
148
182
  if (memoryPercentage && memoryPercentage > finalThresholds.memory.critical * 100) {
149
- return { should, reason}
183
+ return { should: true, reason: 'High memory usage' }
150
184
  }
151
185
 
152
186
  // Battery-based throttling
153
187
  if (enableBatteryOptimization && (isLowPowerMode || (batteryLevel && batteryLevel < finalThresholds.battery.low))) {
154
- return { should, reason}
188
+ return { should: true, reason: 'Low battery' }
155
189
  }
156
190
 
157
- return { should}
191
+ return { should: false }
158
192
  }, [metrics, finalThresholds, enableBatteryOptimization])
159
193
 
160
194
  // Update performance mode and throttling
161
195
  useEffect(() => {
162
196
  const newMode = determinePerformanceMode(metrics.fps, metrics.memoryUsage)
163
- const { should, reason } = shouldThrottle()
197
+ const { should: shouldThrottleNow, reason } = shouldThrottle()
164
198
 
165
199
  setMetrics(prev => ({
166
200
  ...prev,
167
- performanceMode,
168
- throttlingEnabled,
169
- throttlingReason}))
201
+ performanceMode: newMode,
202
+ throttlingEnabled: enableThrottling && shouldThrottleNow,
203
+ throttlingReason: reason
204
+ }))
170
205
 
171
206
  // Notify callbacks
172
207
  if (newMode !== metrics.performanceMode && callbacks.onPerformanceModeChange) {
@@ -213,7 +248,7 @@ export const usePerformance = (options= {}) => {
213
248
 
214
249
  // Performance optimization recommendations
215
250
  const getOptimizationRecommendations = useCallback(() => {
216
- const recommendations] = []
251
+ const recommendations: string[] = []
217
252
 
218
253
  if (metrics.fps < finalThresholds.fps.warning) {
219
254
  recommendations.push('Consider reducing animation complexity or enabling performance mode')
@@ -234,15 +269,17 @@ export const usePerformance = (options= {}) => {
234
269
  const enableThrottlingMode = useCallback(() => {
235
270
  setMetrics(prev => ({
236
271
  ...prev,
237
- throttlingEnabled,
238
- throttlingReason}))
272
+ throttlingEnabled: true,
273
+ throttlingReason: 'Manual override'
274
+ }))
239
275
  }, [])
240
276
 
241
277
  const disableThrottlingMode = useCallback(() => {
242
278
  setMetrics(prev => ({
243
279
  ...prev,
244
- throttlingEnabled,
245
- throttlingReason}))
280
+ throttlingEnabled: false,
281
+ throttlingReason: undefined
282
+ }))
246
283
  }, [])
247
284
 
248
285
  return {
@@ -255,24 +292,25 @@ export const usePerformance = (options= {}) => {
255
292
  isMonitoring,
256
293
 
257
294
  // Throttling
258
- throttlingEnabled,
259
- throttlingReason,
295
+ throttlingEnabled: metrics.throttlingEnabled,
296
+ throttlingReason: metrics.throttlingReason,
260
297
  enableThrottlingMode,
261
298
  disableThrottlingMode,
262
299
 
263
300
  // Performance mode
264
- performanceMode,
301
+ performanceMode: metrics.performanceMode,
265
302
 
266
303
  // Recommendations
267
304
  getOptimizationRecommendations,
268
305
 
269
306
  // Thresholds
270
- thresholds,
307
+ thresholds: finalThresholds,
271
308
 
272
309
  // Raw values for advanced usage
273
- fps,
274
- frameTime,
275
- memoryUsage,
276
- batteryLevel,
277
- isLowPowerMode}
310
+ fps: metrics.fps,
311
+ frameTime: metrics.frameTime,
312
+ memoryUsage: metrics.memoryUsage,
313
+ batteryLevel: metrics.batteryLevel,
314
+ isLowPowerMode: metrics.isLowPowerMode
315
+ }
278
316
  }