@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,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
  }
@@ -1,40 +1,62 @@
1
1
  import { useState, useCallback, useEffect, ComponentType, CSSProperties } from 'react'
2
2
 
3
3
  export interface ReusableArchitectureConfig {
4
- enableComponentComposition?}
4
+ enableComponentComposition?: boolean
5
+ enablePatternSharing?: boolean
6
+ enableStyleSharing?: boolean
7
+ enableBehaviorSharing?: boolean
8
+ enableTemplateSystem?: boolean
9
+ enableComponentRegistry?: boolean
10
+ }
5
11
 
6
12
  export interface ComponentTemplate {
7
- id, any>
8
- styles]
9
- patterns]
13
+ id: string
14
+ name: string
15
+ component: ComponentType<any>
16
+ props: Record<string, any>
17
+ styles: CSSProperties
18
+ behaviors: string[]
19
+ patterns: string[]
10
20
  }
11
21
 
12
22
  export interface SharedPattern {
13
- id]
14
- category}
23
+ id: string
24
+ name: string
25
+ description: string
26
+ implementation: string
27
+ usage: string[]
28
+ category: 'composition' | 'styling' | 'behavior' | 'performance'
29
+ }
15
30
 
16
31
  export interface SharedStyle {
17
- id, string>
18
- breakpoints, string>
19
- usage]
32
+ id: string
33
+ name: string
34
+ css: string
35
+ variables: Record<string, string>
36
+ breakpoints: Record<string, string>
37
+ usage: string[]
20
38
  }
21
39
 
22
40
  export interface SharedBehavior {
23
- id]
24
- usage]
41
+ id: string
42
+ name: string
43
+ description: string
44
+ hook: string
45
+ dependencies: string[]
46
+ usage: string[]
25
47
  }
26
48
 
27
49
  export interface ReusableArchitectureCallbacks {
28
- onTemplateCreated?) => void
29
- onPatternShared?) => void
30
- onStyleShared?) => void
31
- onBehaviorShared?) => void
32
- onArchitectureOptimized?) => void
50
+ onTemplateCreated?: (template: ComponentTemplate) => void
51
+ onPatternShared?: (pattern: SharedPattern) => void
52
+ onStyleShared?: (style: SharedStyle) => void
53
+ onBehaviorShared?: (behavior: SharedBehavior) => void
54
+ onArchitectureOptimized?: (optimization: string) => void
33
55
  }
34
56
 
35
57
  export const useReusableArchitecture = (
36
- config= {},
37
- callbacks= {}
58
+ config: ReusableArchitectureConfig = {},
59
+ callbacks: ReusableArchitectureCallbacks = {}
38
60
  ) => {
39
61
  const {
40
62
  enableComponentComposition = true,
@@ -54,8 +76,8 @@ export const useReusableArchitecture = (
54
76
 
55
77
  // Component composition
56
78
  const composeComponent = useCallback((
57
- baseComponent,
58
- enhancements) => ComponentType<any>>
79
+ baseComponent: ComponentType<any>,
80
+ enhancements: Array<(Component: ComponentType<any>) => ComponentType<any>>
59
81
  ) => {
60
82
  if (!enableComponentComposition) return baseComponent
61
83
 
@@ -74,12 +96,12 @@ export const useReusableArchitecture = (
74
96
 
75
97
  // Template system
76
98
  const createTemplate = useCallback((
77
- template, 'id'>
99
+ template: Omit<ComponentTemplate, 'id'>
78
100
  ) => {
79
101
  if (!enableTemplateSystem) return null
80
102
 
81
103
  const id = `template-${Date.now()}`
82
- const newTemplate= {
104
+ const newTemplate: ComponentTemplate = {
83
105
  ...template,
84
106
  id
85
107
  }
@@ -92,13 +114,14 @@ export const useReusableArchitecture = (
92
114
  return id
93
115
  }, [enableTemplateSystem, templates, callbacks])
94
116
 
95
- const getTemplate = useCallback((id) => {
117
+ const getTemplate = useCallback((id: string) => {
96
118
  return templates.get(id)
97
119
  }, [templates])
98
120
 
99
121
  const updateTemplate = useCallback((
100
- id,
101
- updates) => {
122
+ id: string,
123
+ updates: Partial<ComponentTemplate>
124
+ ) => {
102
125
  const template = templates.get(id)
103
126
  if (!template) return false
104
127
 
@@ -109,7 +132,7 @@ export const useReusableArchitecture = (
109
132
  return true
110
133
  }, [templates])
111
134
 
112
- const deleteTemplate = useCallback((id) => {
135
+ const deleteTemplate = useCallback((id: string) => {
113
136
  const deleted = templates.delete(id)
114
137
  if (deleted) {
115
138
  setTemplates(new Map(templates))
@@ -119,12 +142,12 @@ export const useReusableArchitecture = (
119
142
 
120
143
  // Pattern sharing
121
144
  const sharePattern = useCallback((
122
- pattern, 'id'>
145
+ pattern: Omit<SharedPattern, 'id'>
123
146
  ) => {
124
147
  if (!enablePatternSharing) return null
125
148
 
126
149
  const id = `pattern-${Date.now()}`
127
- const newPattern= {
150
+ const newPattern: SharedPattern = {
128
151
  ...pattern,
129
152
  id
130
153
  }
@@ -137,22 +160,22 @@ export const useReusableArchitecture = (
137
160
  return id
138
161
  }, [enablePatternSharing, sharedPatterns, callbacks])
139
162
 
140
- const getPattern = useCallback((id) => {
163
+ const getPattern = useCallback((id: string) => {
141
164
  return sharedPatterns.get(id)
142
165
  }, [sharedPatterns])
143
166
 
144
- const findPatternsByCategory = useCallback((category) => {
167
+ const findPatternsByCategory = useCallback((category: string) => {
145
168
  return Array.from(sharedPatterns.values()).filter(pattern => pattern.category === category)
146
169
  }, [sharedPatterns])
147
170
 
148
171
  // Style sharing
149
172
  const shareStyle = useCallback((
150
- style, 'id'>
173
+ style: Omit<SharedStyle, 'id'>
151
174
  ) => {
152
175
  if (!enableStyleSharing) return null
153
176
 
154
177
  const id = `style-${Date.now()}`
155
- const newStyle= {
178
+ const newStyle: SharedStyle = {
156
179
  ...style,
157
180
  id
158
181
  }
@@ -165,13 +188,14 @@ export const useReusableArchitecture = (
165
188
  return id
166
189
  }, [enableStyleSharing, sharedStyles, callbacks])
167
190
 
168
- const getStyle = useCallback((id) => {
191
+ const getStyle = useCallback((id: string) => {
169
192
  return sharedStyles.get(id)
170
193
  }, [sharedStyles])
171
194
 
172
195
  const applyStyle = useCallback((
173
- styleId,
174
- targetComponent) => {
196
+ styleId: string,
197
+ targetComponent: string
198
+ ) => {
175
199
  const style = sharedStyles.get(styleId)
176
200
  if (!style) return false
177
201
 
@@ -187,12 +211,12 @@ export const useReusableArchitecture = (
187
211
 
188
212
  // Behavior sharing
189
213
  const shareBehavior = useCallback((
190
- behavior, 'id'>
214
+ behavior: Omit<SharedBehavior, 'id'>
191
215
  ) => {
192
216
  if (!enableBehaviorSharing) return null
193
217
 
194
218
  const id = `behavior-${Date.now()}`
195
- const newBehavior= {
219
+ const newBehavior: SharedBehavior = {
196
220
  ...behavior,
197
221
  id
198
222
  }
@@ -205,13 +229,14 @@ export const useReusableArchitecture = (
205
229
  return id
206
230
  }, [enableBehaviorSharing, sharedBehaviors, callbacks])
207
231
 
208
- const getBehavior = useCallback((id) => {
232
+ const getBehavior = useCallback((id: string) => {
209
233
  return sharedBehaviors.get(id)
210
234
  }, [sharedBehaviors])
211
235
 
212
236
  const applyBehavior = useCallback((
213
- behaviorId,
214
- targetComponent) => {
237
+ behaviorId: string,
238
+ targetComponent: string
239
+ ) => {
215
240
  const behavior = sharedBehaviors.get(behaviorId)
216
241
  if (!behavior) return false
217
242
 
@@ -227,21 +252,25 @@ export const useReusableArchitecture = (
227
252
 
228
253
  // Component registry
229
254
  const registerComponent = useCallback((
230
- id,
231
- component,
232
- metadata]
255
+ id: string,
256
+ component: ComponentType<any>,
257
+ metadata: {
258
+ name: string
259
+ description: string
260
+ category: string
261
+ tags: string[]
233
262
  }
234
263
  ) => {
235
264
  if (!enableComponentRegistry) return false
236
265
 
237
- const template= {
266
+ const template: ComponentTemplate = {
238
267
  id,
239
- name,
268
+ name: metadata.name,
240
269
  component,
241
- props},
242
- styles},
243
- behaviors],
244
- patterns]
270
+ props: {},
271
+ styles: {},
272
+ behaviors: [],
273
+ patterns: []
245
274
  }
246
275
 
247
276
  templates.set(id, template)
@@ -253,13 +282,13 @@ export const useReusableArchitecture = (
253
282
  // Architecture analysis
254
283
  const analyzeArchitecture = useCallback(() => {
255
284
  const analysis = {
256
- totalTemplates,
257
- totalPatterns,
258
- totalStyles,
259
- totalBehaviors,
260
- compositionLevel,
261
- reusabilityScore,
262
- recommendations] as string[]
285
+ totalTemplates: templates.size,
286
+ totalPatterns: sharedPatterns.size,
287
+ totalStyles: sharedStyles.size,
288
+ totalBehaviors: sharedBehaviors.size,
289
+ compositionLevel: 'none' as 'none' | 'basic' | 'intermediate' | 'advanced',
290
+ reusabilityScore: 0,
291
+ recommendations: [] as string[]
263
292
  }
264
293
 
265
294
  // Calculate composition level
@@ -335,10 +364,10 @@ export const useReusableArchitecture = (
335
364
 
336
365
  return {
337
366
  // State
338
- templates)),
339
- sharedPatterns)),
340
- sharedStyles)),
341
- sharedBehaviors)),
367
+ templates: Array.from(templates.values()),
368
+ sharedPatterns: Array.from(sharedPatterns.values()),
369
+ sharedStyles: Array.from(sharedStyles.values()),
370
+ sharedBehaviors: Array.from(sharedBehaviors.values()),
342
371
  isOptimizing,
343
372
  optimizations,
344
373
 
@@ -374,11 +403,11 @@ export const useReusableArchitecture = (
374
403
  optimizeArchitecture,
375
404
 
376
405
  // Utility functions
377
- hasTemplate) => templates.has(id),
378
- hasPattern) => sharedPatterns.has(id),
379
- hasStyle) => sharedStyles.has(id),
380
- hasBehavior) => sharedBehaviors.has(id),
381
- clearOptimizations) => setOptimizations([])
406
+ hasTemplate: (id: string) => templates.has(id),
407
+ hasPattern: (id: string) => sharedPatterns.has(id),
408
+ hasStyle: (id: string) => sharedStyles.has(id),
409
+ hasBehavior: (id: string) => sharedBehaviors.has(id),
410
+ clearOptimizations: () => setOptimizations([])
382
411
  }
383
412
  }
384
413