@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,34 @@
1
1
  import React, { useState, useCallback, useRef, useEffect, ReactNode, ComponentType } from 'react'
2
2
 
3
3
  export interface ComponentPerformanceConfig {
4
- enableMemoization?}
4
+ enableMemoization?: boolean
5
+ enableLazyLoading?: boolean
6
+ enableVirtualization?: boolean
7
+ enablePerformanceMonitoring?: boolean
8
+ enableAutoOptimization?: boolean
9
+ performanceThreshold?: number
10
+ memoizationThreshold?: number
11
+ virtualizationThreshold?: number
12
+ }
5
13
 
6
14
  export interface PerformanceMetrics {
7
- renderTime}
15
+ renderTime: number
16
+ memoryUsage: number
17
+ reRenderCount: number
18
+ optimizationLevel: 'none' | 'low' | 'medium' | 'high'
19
+ lastOptimization: string
20
+ }
8
21
 
9
22
  export interface ComponentPerformanceCallbacks {
10
- onPerformanceWarning?) => void
11
- onOptimizationApplied?, component) => void
12
- onPerformanceImproved?) => void
13
- onMemoryWarning?) => void
23
+ onPerformanceWarning?: (metrics: PerformanceMetrics) => void
24
+ onOptimizationApplied?: (type: string, component: string) => void
25
+ onPerformanceImproved?: (improvement: number) => void
26
+ onMemoryWarning?: (usage: number) => void
14
27
  }
15
28
 
16
29
  export const useComponentPerformance = (
17
- config= {},
18
- callbacks= {}
30
+ config: ComponentPerformanceConfig = {},
31
+ callbacks: ComponentPerformanceCallbacks = {}
19
32
  ) => {
20
33
  const {
21
34
  enableMemoization = true,
@@ -29,11 +42,12 @@ export const useComponentPerformance = (
29
42
  } = config
30
43
 
31
44
  const [metrics, setMetrics] = useState<PerformanceMetrics>({
32
- renderTime,
33
- memoryUsage,
34
- reRenderCount,
35
- optimizationLevel,
36
- lastOptimization})
45
+ renderTime: 0,
46
+ memoryUsage: 0,
47
+ reRenderCount: 0,
48
+ optimizationLevel: 'none',
49
+ lastOptimization: 'none'
50
+ })
37
51
 
38
52
  const [isOptimizing, setIsOptimizing] = useState(false)
39
53
  const [optimizations, setOptimizations] = useState<string[]>([])
@@ -58,7 +72,8 @@ export const useComponentPerformance = (
58
72
  setMetrics(prev => ({
59
73
  ...prev,
60
74
  renderTime,
61
- reRenderCount}))
75
+ reRenderCount: renderCountRef.current
76
+ }))
62
77
 
63
78
  // Check if optimization is needed
64
79
  if (renderTime > performanceThreshold && enableAutoOptimization) {
@@ -69,10 +84,10 @@ export const useComponentPerformance = (
69
84
 
70
85
  // Memoization optimization
71
86
  const memoizeValue = useCallback(<T>(
72
- key,
73
- value,
74
- dependencies]
75
- )=> {
87
+ key: string,
88
+ value: T,
89
+ dependencies: any[]
90
+ ): T => {
76
91
  if (!enableMemoization) return value
77
92
 
78
93
  const dependencyKey = JSON.stringify(dependencies)
@@ -93,8 +108,8 @@ export const useComponentPerformance = (
93
108
 
94
109
  // Lazy loading optimization
95
110
  const lazyLoadComponent = useCallback((
96
- componentId,
97
- componentLoader) => Promise<{ default}>
111
+ componentId: string,
112
+ componentLoader: () => Promise<{ default: ComponentType<any> }>
98
113
  ) => {
99
114
  if (!enableLazyLoading) return null
100
115
 
@@ -114,13 +129,13 @@ export const useComponentPerformance = (
114
129
 
115
130
  // Virtualization optimization
116
131
  const createVirtualizedList = useCallback(<T>(
117
- items],
118
- itemHeight,
119
- containerHeight,
120
- renderItem, index) => ReactNode
132
+ items: T[],
133
+ itemHeight: number,
134
+ containerHeight: number,
135
+ renderItem: (item: T, index: number) => ReactNode
121
136
  ) => {
122
137
  if (!enableVirtualization || items.length < virtualizationThreshold) {
123
- return { type, items, index) => renderItem(item, index)) }
138
+ return { type: 'standard', items: items.map((item, index) => renderItem(item, index)) }
124
139
  }
125
140
 
126
141
  const visibleCount = Math.ceil(containerHeight / itemHeight)
@@ -136,8 +151,8 @@ export const useComponentPerformance = (
136
151
  callbacks.onOptimizationApplied?.('virtualization', 'VirtualizedList')
137
152
 
138
153
  return {
139
- type,
140
- visibleItems, index) => renderItem(item, startIndex + index)),
154
+ type: 'virtualized',
155
+ visibleItems: visibleItems.map((item, index) => renderItem(item, startIndex + index)),
141
156
  totalHeight,
142
157
  offsetY,
143
158
  startIndex,
@@ -146,8 +161,8 @@ export const useComponentPerformance = (
146
161
  }, [enableVirtualization, virtualizationThreshold, callbacks])
147
162
 
148
163
  // Auto-optimization suggestions
149
- const suggestOptimizations = useCallback((renderTime) => {
150
- const suggestions] = []
164
+ const suggestOptimizations = useCallback((renderTime: number) => {
165
+ const suggestions: string[] = []
151
166
 
152
167
  if (renderTime > memoizationThreshold) {
153
168
  suggestions.push('Consider memoization for expensive computations')
@@ -171,10 +186,10 @@ export const useComponentPerformance = (
171
186
  // Performance analysis
172
187
  const analyzePerformance = useCallback(() => {
173
188
  const analysis = {
174
- isOptimized== 'none',
175
- needsOptimization,
176
- optimizationScore, 100 - (metrics.renderTime / performanceThreshold) * 100),
177
- recommendations] as string[]
189
+ isOptimized: metrics.optimizationLevel !== 'none',
190
+ needsOptimization: metrics.renderTime > performanceThreshold,
191
+ optimizationScore: Math.max(0, 100 - (metrics.renderTime / performanceThreshold) * 100),
192
+ recommendations: [] as string[]
178
193
  }
179
194
 
180
195
  if (metrics.renderTime > performanceThreshold) {
@@ -209,12 +224,12 @@ export const useComponentPerformance = (
209
224
  callbacks.onMemoryWarning?.(memoryUsage)
210
225
  }
211
226
  } catch (error) {
212
- console.warn('Memory usage check failed, error)
227
+ console.warn('Memory usage check failed:', error)
213
228
  }
214
229
  }, [enablePerformanceMonitoring, callbacks])
215
230
 
216
231
  // Performance improvement tracking
217
- const trackImprovement = useCallback((before, after) => {
232
+ const trackImprovement = useCallback((before: number, after: number) => {
218
233
  const improvement = ((before - after) / before) * 100
219
234
 
220
235
  if (improvement > 0) {
@@ -222,14 +237,14 @@ export const useComponentPerformance = (
222
237
 
223
238
  setMetrics(prev => ({
224
239
  ...prev,
225
- optimizationLevel,
226
- lastOptimization)}%`
240
+ optimizationLevel: improvement > 50 ? 'high' : improvement > 25 ? 'medium' : 'low',
241
+ lastOptimization: `Improved by ${improvement.toFixed(1)}%`
227
242
  }))
228
243
  }
229
244
  }, [callbacks])
230
245
 
231
246
  // Auto-optimization
232
- const autoOptimize = useCallback((componentId) => {
247
+ const autoOptimize = useCallback((componentId: string) => {
233
248
  if (!enableAutoOptimization) return
234
249
 
235
250
  setIsOptimizing(true)
@@ -251,9 +266,9 @@ export const useComponentPerformance = (
251
266
 
252
267
  // Performance benchmarking
253
268
  const benchmarkComponent = useCallback((
254
- componentId,
255
- benchmarkFn) => void,
256
- iterations= 100
269
+ componentId: string,
270
+ benchmarkFn: () => void,
271
+ iterations: number = 100
257
272
  ) => {
258
273
  const startTime = performance.now()
259
274
 
@@ -264,7 +279,7 @@ export const useComponentPerformance = (
264
279
  const endTime = performance.now()
265
280
  const averageTime = (endTime - startTime) / iterations
266
281
 
267
- const benchmark = `Benchmark} - ${averageTime.toFixed(2)}ms average`
282
+ const benchmark = `Benchmark: ${componentId} - ${averageTime.toFixed(2)}ms average`
268
283
  setOptimizations(prev => [...prev, benchmark])
269
284
 
270
285
  return averageTime
@@ -285,7 +300,7 @@ export const useComponentPerformance = (
285
300
  }
286
301
  }
287
302
  } catch (error) {
288
- console.warn('Performance monitoring initialization failed, error)
303
+ console.warn('Performance monitoring initialization failed:', error)
289
304
  }
290
305
  }, [enablePerformanceMonitoring, checkMemoryUsage])
291
306
 
@@ -319,10 +334,10 @@ export const useComponentPerformance = (
319
334
  trackImprovement,
320
335
 
321
336
  // Utility functions
322
- isPerformanceOptimized) => metrics.optimizationLevel !== 'none',
323
- getOptimizationLevel) => metrics.optimizationLevel,
324
- getPerformanceScore) => Math.max(0, 100 - (metrics.renderTime / performanceThreshold) * 100),
325
- clearOptimizations) => setOptimizations([])
337
+ isPerformanceOptimized: () => metrics.optimizationLevel !== 'none',
338
+ getOptimizationLevel: () => metrics.optimizationLevel,
339
+ getPerformanceScore: () => Math.max(0, 100 - (metrics.renderTime / performanceThreshold) * 100),
340
+ clearOptimizations: () => setOptimizations([])
326
341
  }
327
342
  }
328
343
 
@@ -1,51 +1,76 @@
1
1
  import { useState, useCallback, useRef, useEffect } from 'react'
2
2
 
3
3
  export interface DeviceLoadingStatesConfig {
4
- enableMobileStates?}
4
+ enableMobileStates?: boolean
5
+ enableTabletStates?: boolean
6
+ enableDesktopStates?: boolean
7
+ enableAdaptiveBehavior?: boolean
8
+ enableOrientationSupport?: boolean
9
+ enablePerformanceAdaptation?: boolean
10
+ }
5
11
 
6
12
  export interface LoadingState {
7
- id}
13
+ id: string
14
+ name: string
15
+ type: 'skeleton' | 'spinner' | 'progress' | 'skeleton-spinner' | 'custom'
16
+ duration: number
17
+ complexity: 'low' | 'medium' | 'high'
18
+ mobileOptimized: boolean
19
+ tabletOptimized: boolean
20
+ desktopOptimized: boolean
21
+ orientation: 'portrait' | 'landscape' | 'both'
22
+ performance: 'low' | 'medium' | 'high'
23
+ }
8
24
 
9
25
  export interface DeviceSpecificState {
10
- deviceType]
11
- activeState}
26
+ deviceType: 'mobile' | 'tablet' | 'desktop'
27
+ orientation: 'portrait' | 'landscape'
28
+ screenSize: 'small' | 'medium' | 'large'
29
+ performanceLevel: 'low' | 'medium' | 'high'
30
+ batteryLevel: 'critical' | 'low' | 'medium' | 'high'
31
+ loadingStates: LoadingState[]
32
+ activeState: LoadingState | null
33
+ adaptiveBehavior: boolean
34
+ }
12
35
 
13
36
  export interface DeviceLoadingStatesCallbacks {
14
- onLoadingStateChanged?) => void
15
- onDeviceStateChanged?) => void
16
- onAdaptiveBehaviorEnabled?) => void
17
- onPerformanceAdapted?) => void
37
+ onLoadingStateChanged?: (state: LoadingState) => void
38
+ onDeviceStateChanged?: (deviceState: DeviceSpecificState) => void
39
+ onAdaptiveBehaviorEnabled?: (behavior: string) => void
40
+ onPerformanceAdapted?: (adaptation: string) => void
18
41
  }
19
42
 
20
43
  export const useDeviceLoadingStates = (
21
- config= {},
22
- callbacks= {}
44
+ config: DeviceLoadingStatesConfig = {},
45
+ callbacks: DeviceLoadingStatesCallbacks = {}
23
46
  ) => {
24
47
  const {
25
48
  enableMobileStates = true,
26
49
  enableTabletStates = true,
27
50
  enableDesktopStates = true,
28
- enableAdaptiveBehavior= true,
51
+ enableAdaptiveBehavior: enableAdaptiveBehaviorConfig = true,
29
52
  enablePerformanceAdaptation = true
30
53
  } = config
31
54
 
32
55
  const [deviceState, setDeviceState] = useState<DeviceSpecificState>({
33
- deviceType,
34
- orientation,
35
- screenSize,
36
- performanceLevel,
37
- batteryLevel,
38
- loadingStates],
39
- activeState,
40
- adaptiveBehavior})
56
+ deviceType: 'desktop',
57
+ orientation: 'landscape',
58
+ screenSize: 'large',
59
+ performanceLevel: 'high',
60
+ batteryLevel: 'high',
61
+ loadingStates: [],
62
+ activeState: null,
63
+ adaptiveBehavior: false
64
+ })
41
65
 
42
66
  const [isAdapting, setIsAdapting] = useState(false)
43
67
  const [adaptations, setAdaptations] = useState<string[]>([])
44
68
  const [performanceMetrics, setPerformanceMetrics] = useState({
45
- frameRate,
46
- renderTime,
47
- memoryUsage,
48
- batteryDrain})
69
+ frameRate: 60,
70
+ renderTime: 0,
71
+ memoryUsage: 0,
72
+ batteryDrain: 'low'
73
+ })
49
74
 
50
75
 
51
76
  const performanceTimerRef = useRef<number | null>(null)
@@ -57,7 +82,11 @@ export const useDeviceLoadingStates = (
57
82
  const height = window.innerHeight
58
83
  const isPortrait = height > width
59
84
 
60
- let deviceType= 768) {
85
+ let deviceType: 'mobile' | 'tablet' | 'desktop'
86
+ let screenSize: 'small' | 'medium' | 'large'
87
+ let performanceLevel: 'low' | 'medium' | 'high'
88
+
89
+ if (width <= 768) {
61
90
  deviceType = 'mobile'
62
91
  screenSize = 'small'
63
92
  performanceLevel = 'low'
@@ -71,10 +100,10 @@ export const useDeviceLoadingStates = (
71
100
  performanceLevel = 'high'
72
101
  }
73
102
 
74
- const newDeviceState= {
103
+ const newDeviceState: DeviceSpecificState = {
75
104
  ...deviceState,
76
105
  deviceType,
77
- orientation,
106
+ orientation: isPortrait ? 'portrait' : 'landscape',
78
107
  screenSize,
79
108
  performanceLevel
80
109
  }
@@ -87,17 +116,17 @@ export const useDeviceLoadingStates = (
87
116
 
88
117
  // Create loading states
89
118
  const createLoadingState = useCallback((
90
- state, 'id'>
119
+ state: Omit<LoadingState, 'id'>
91
120
  ) => {
92
121
  const id = `loading-state-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`
93
- const newState= {
122
+ const newState: LoadingState = {
94
123
  ...state,
95
124
  id
96
125
  }
97
126
 
98
127
  setDeviceState(prev => ({
99
128
  ...prev,
100
- loadingStates, newState]
129
+ loadingStates: [...prev.loadingStates, newState]
101
130
  }))
102
131
 
103
132
  return id
@@ -105,101 +134,109 @@ export const useDeviceLoadingStates = (
105
134
 
106
135
  // Generate device-specific loading states
107
136
  const generateDeviceLoadingStates = useCallback(() => {
108
- const mobileStates] = [
137
+ const mobileStates: LoadingState[] = [
109
138
  {
110
- id,
111
- name,
112
- type,
113
- duration,
114
- complexity,
115
- mobileOptimized,
116
- tabletOptimized,
117
- desktopOptimized,
118
- orientation,
119
- performance},
139
+ id: 'mobile-skeleton',
140
+ name: 'Mobile Skeleton',
141
+ type: 'skeleton',
142
+ duration: 1000,
143
+ complexity: 'low',
144
+ mobileOptimized: true,
145
+ tabletOptimized: false,
146
+ desktopOptimized: false,
147
+ orientation: 'both',
148
+ performance: 'low'
149
+ },
120
150
  {
121
- id,
122
- name,
123
- type,
124
- duration,
125
- complexity,
126
- mobileOptimized,
127
- tabletOptimized,
128
- desktopOptimized,
129
- orientation,
130
- performance}
151
+ id: 'mobile-spinner',
152
+ name: 'Mobile Spinner',
153
+ type: 'spinner',
154
+ duration: 800,
155
+ complexity: 'low',
156
+ mobileOptimized: true,
157
+ tabletOptimized: false,
158
+ desktopOptimized: false,
159
+ orientation: 'both',
160
+ performance: 'low'
161
+ }
131
162
  ]
132
163
 
133
- const tabletStates] = [
164
+ const tabletStates: LoadingState[] = [
134
165
  {
135
- id,
136
- name,
137
- type,
138
- duration,
139
- complexity,
140
- mobileOptimized,
141
- tabletOptimized,
142
- desktopOptimized,
143
- orientation,
144
- performance},
166
+ id: 'tablet-skeleton-spinner',
167
+ name: 'Tablet Skeleton + Spinner',
168
+ type: 'skeleton-spinner',
169
+ duration: 1200,
170
+ complexity: 'medium',
171
+ mobileOptimized: false,
172
+ tabletOptimized: true,
173
+ desktopOptimized: false,
174
+ orientation: 'both',
175
+ performance: 'medium'
176
+ },
145
177
  {
146
- id,
147
- name,
148
- type,
149
- duration,
150
- complexity,
151
- mobileOptimized,
152
- tabletOptimized,
153
- desktopOptimized,
154
- orientation,
155
- performance}
178
+ id: 'tablet-progress',
179
+ name: 'Tablet Progress',
180
+ type: 'progress',
181
+ duration: 1500,
182
+ complexity: 'medium',
183
+ mobileOptimized: false,
184
+ tabletOptimized: true,
185
+ desktopOptimized: false,
186
+ orientation: 'both',
187
+ performance: 'medium'
188
+ }
156
189
  ]
157
190
 
158
- const desktopStates] = [
191
+ const desktopStates: LoadingState[] = [
159
192
  {
160
- id,
161
- name,
162
- type,
163
- duration,
164
- complexity,
165
- mobileOptimized,
166
- tabletOptimized,
167
- desktopOptimized,
168
- orientation,
169
- performance},
193
+ id: 'desktop-skeleton',
194
+ name: 'Desktop Skeleton',
195
+ type: 'skeleton',
196
+ duration: 2000,
197
+ complexity: 'high',
198
+ mobileOptimized: false,
199
+ tabletOptimized: false,
200
+ desktopOptimized: true,
201
+ orientation: 'both',
202
+ performance: 'high'
203
+ },
170
204
  {
171
- id,
172
- name,
173
- type,
174
- duration,
175
- complexity,
176
- mobileOptimized,
177
- tabletOptimized,
178
- desktopOptimized,
179
- orientation,
180
- performance}
205
+ id: 'desktop-custom',
206
+ name: 'Desktop Custom',
207
+ type: 'custom',
208
+ duration: 2500,
209
+ complexity: 'high',
210
+ mobileOptimized: false,
211
+ tabletOptimized: false,
212
+ desktopOptimized: true,
213
+ orientation: 'both',
214
+ performance: 'high'
215
+ }
181
216
  ]
182
217
 
183
218
  const allStates = [
184
- ...(enableMobileStates ? mobileStates ]),
185
- ...(enableTabletStates ? tabletStates ]),
186
- ...(enableDesktopStates ? desktopStates ])
219
+ ...(enableMobileStates ? mobileStates : []),
220
+ ...(enableTabletStates ? tabletStates : []),
221
+ ...(enableDesktopStates ? desktopStates : [])
187
222
  ]
188
223
 
189
224
  setDeviceState(prev => ({
190
225
  ...prev,
191
- loadingStates}))
226
+ loadingStates: allStates
227
+ }))
192
228
 
193
229
  return allStates
194
230
  }, [enableMobileStates, enableTabletStates, enableDesktopStates])
195
231
 
196
232
  // Set active loading state
197
- const setActiveLoadingState = useCallback((stateId) => {
233
+ const setActiveLoadingState = useCallback((stateId: string) => {
198
234
  const state = deviceState.loadingStates.find(s => s.id === stateId)
199
235
  if (state) {
200
236
  setDeviceState(prev => ({
201
237
  ...prev,
202
- activeState}))
238
+ activeState: state
239
+ }))
203
240
  callbacks.onLoadingStateChanged?.(state)
204
241
  }
205
242
  }, [deviceState.loadingStates, callbacks])
@@ -221,7 +258,8 @@ export const useDeviceLoadingStates = (
221
258
  setAdaptations(prev => [...prev, ...adaptiveFeatures])
222
259
  setDeviceState(prev => ({
223
260
  ...prev,
224
- adaptiveBehavior}))
261
+ adaptiveBehavior: true
262
+ }))
225
263
  setIsAdapting(false)
226
264
 
227
265
  adaptiveFeatures.forEach(feature => {
@@ -278,7 +316,7 @@ export const useDeviceLoadingStates = (
278
316
 
279
317
  setPerformanceMetrics(prev => ({
280
318
  ...prev,
281
- frameRate,
319
+ frameRate: fps,
282
320
  renderTime
283
321
  }))
284
322
 
@@ -308,7 +346,8 @@ export const useDeviceLoadingStates = (
308
346
  const battery = await (navigator as any).getBattery()
309
347
  const level = battery.level
310
348
 
311
- let batteryLevel= 0.1) batteryLevel = 'critical'
349
+ let batteryLevel: 'critical' | 'low' | 'medium' | 'high'
350
+ if (level <= 0.1) batteryLevel = 'critical'
312
351
  else if (level <= 0.3) batteryLevel = 'low'
313
352
  else if (level <= 0.7) batteryLevel = 'medium'
314
353
  else batteryLevel = 'high'
@@ -319,7 +358,7 @@ export const useDeviceLoadingStates = (
319
358
  }))
320
359
  }
321
360
  } catch (error) {
322
- console.warn('Battery monitoring failed, error)
361
+ console.warn('Battery monitoring failed:', error)
323
362
  }
324
363
  }
325
364
 
@@ -401,15 +440,19 @@ export const useDeviceLoadingStates = (
401
440
  autoAdapt,
402
441
 
403
442
  // Utility functions
404
- isMobileDevice) => deviceState.deviceType === 'mobile',
405
- isTabletDevice) => deviceState.deviceType === 'tablet',
406
- isDesktopDevice) => deviceState.deviceType === 'desktop',
407
- getActiveState) => deviceState.activeState,
408
- getLoadingStatesForDevice) => deviceState.loadingStates.filter(state => {
443
+ isMobileDevice: () => deviceState.deviceType === 'mobile',
444
+ isTabletDevice: () => deviceState.deviceType === 'tablet',
445
+ isDesktopDevice: () => deviceState.deviceType === 'desktop',
446
+ getActiveState: () => deviceState.activeState,
447
+ getLoadingStatesForDevice: () => deviceState.loadingStates.filter(state => {
409
448
  switch (deviceState.deviceType) {
410
- case 'mobile'}
449
+ case 'mobile': return state.mobileOptimized
450
+ case 'tablet': return state.tabletOptimized
451
+ case 'desktop': return state.desktopOptimized
452
+ default: return false
453
+ }
411
454
  }),
412
- clearAdaptations) => setAdaptations([])
455
+ clearAdaptations: () => setAdaptations([])
413
456
  }
414
457
  }
415
458