@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,30 +1,46 @@
1
1
  import { useState, useEffect, useCallback, useRef, useMemo } from 'react'
2
2
 
3
3
  export interface MemoryMetrics {
4
- usedJSHeapSize}
4
+ usedJSHeapSize: number
5
+ totalJSHeapSize: number
6
+ jsHeapSizeLimit: number
7
+ memoryUsage: number
8
+ memoryPercentage: number
9
+ memoryTrend: 'increasing' | 'decreasing' | 'stable'
10
+ memoryLeakDetected: boolean
11
+ performanceScore: 'excellent' | 'good' | 'fair' | 'poor'
12
+ }
5
13
 
6
14
  export interface MemoryThresholds {
7
- warning}
15
+ warning: number
16
+ critical: number
17
+ excellent: number
18
+ }
8
19
 
9
20
  export interface MemoryCallbacks {
10
- onMemoryWarning?) => void
11
- onMemoryCritical?) => void
12
- onMemoryLeakDetected?]) => void
13
- onPerformanceScoreChange?]) => void
21
+ onMemoryWarning?: (usage: number) => void
22
+ onMemoryCritical?: (usage: number) => void
23
+ onMemoryLeakDetected?: (trend: MemoryMetrics['memoryTrend']) => void
24
+ onPerformanceScoreChange?: (score: MemoryMetrics['performanceScore']) => void
14
25
  }
15
26
 
16
27
  export interface MemoryOptions {
17
- updateInterval?}
28
+ updateInterval?: number
29
+ sampleSize?: number
30
+ thresholds?: Partial<MemoryThresholds>
31
+ callbacks?: MemoryCallbacks
32
+ }
18
33
 
19
- const DEFAULT_THRESHOLDS= {
20
- warning,
21
- critical,
22
- excellent}
34
+ const DEFAULT_THRESHOLDS: MemoryThresholds = {
35
+ warning: 0.7,
36
+ critical: 0.85,
37
+ excellent: 0.5
38
+ }
23
39
 
24
40
  const DEFAULT_SAMPLE_SIZE = 10
25
41
  const MEMORY_LEAK_THRESHOLD = 0.1 // 10% increase over time
26
42
 
27
- export const useMemoryUsage = (options= {}) => {
43
+ export const useMemoryUsage = (options: MemoryOptions = {}) => {
28
44
  const {
29
45
  updateInterval = 2000,
30
46
  sampleSize = DEFAULT_SAMPLE_SIZE,
@@ -33,14 +49,15 @@ export const useMemoryUsage = (options= {}) => {
33
49
  } = options
34
50
 
35
51
  const [metrics, setMetrics] = useState<MemoryMetrics>({
36
- usedJSHeapSize,
37
- totalJSHeapSize,
38
- jsHeapSizeLimit,
39
- memoryUsage,
40
- memoryPercentage,
41
- memoryTrend,
42
- memoryLeakDetected,
43
- performanceScore})
52
+ usedJSHeapSize: 0,
53
+ totalJSHeapSize: 0,
54
+ jsHeapSizeLimit: 0,
55
+ memoryUsage: 0,
56
+ memoryPercentage: 0,
57
+ memoryTrend: 'stable',
58
+ memoryLeakDetected: false,
59
+ performanceScore: 'excellent'
60
+ })
44
61
 
45
62
  const [isMonitoring, setIsMonitoring] = useState(false)
46
63
  const intervalIdRef = useRef<NodeJS.Timeout>()
@@ -54,7 +71,7 @@ export const useMemoryUsage = (options= {}) => {
54
71
  }), [thresholds])
55
72
 
56
73
  // Calculate performance score based on memory usage
57
- const calculatePerformanceScore = useCallback((usage)] => {
74
+ const calculatePerformanceScore = useCallback((usage: number): MemoryMetrics['performanceScore'] => {
58
75
  if (usage <= finalThresholds.excellent) return 'excellent'
59
76
  if (usage <= finalThresholds.warning) return 'good'
60
77
  if (usage <= finalThresholds.critical) return 'fair'
@@ -62,7 +79,7 @@ export const useMemoryUsage = (options= {}) => {
62
79
  }, [finalThresholds])
63
80
 
64
81
  // Detect memory trend
65
- const detectMemoryTrend = useCallback((currentUsage, previousUsage)] => {
82
+ const detectMemoryTrend = useCallback((currentUsage: number, previousUsage: number): MemoryMetrics['memoryTrend'] => {
66
83
  const difference = currentUsage - previousUsage
67
84
  const percentageChange = Math.abs(difference) / previousUsage
68
85
 
@@ -72,7 +89,7 @@ export const useMemoryUsage = (options= {}) => {
72
89
  }, [])
73
90
 
74
91
  // Detect potential memory leaks
75
- const detectMemoryLeak = useCallback((_usage, history])=> {
92
+ const detectMemoryLeak = useCallback((_usage: number, history: number[]): boolean => {
76
93
  if (history.length < 5) return false
77
94
 
78
95
  // Check if memory usage is consistently increasing
@@ -118,7 +135,7 @@ export const useMemoryUsage = (options= {}) => {
118
135
  // Calculate performance score
119
136
  const performanceScore = calculatePerformanceScore(memoryUsage)
120
137
 
121
- const newMetrics= {
138
+ const newMetrics: MemoryMetrics = {
122
139
  usedJSHeapSize,
123
140
  totalJSHeapSize,
124
141
  jsHeapSizeLimit,
@@ -179,8 +196,9 @@ export const useMemoryUsage = (options= {}) => {
179
196
  lastMemoryRef.current = 0
180
197
  setMetrics(prev => ({
181
198
  ...prev,
182
- memoryTrend,
183
- memoryLeakDetected}))
199
+ memoryTrend: 'stable',
200
+ memoryLeakDetected: false
201
+ }))
184
202
  }, [])
185
203
 
186
204
  // Auto-start monitoring on mount
@@ -191,7 +209,7 @@ export const useMemoryUsage = (options= {}) => {
191
209
 
192
210
  // Memory optimization recommendations
193
211
  const getOptimizationRecommendations = useCallback(() => {
194
- const recommendations] = []
212
+ const recommendations: string[] = []
195
213
 
196
214
  if (metrics.memoryUsage >= finalThresholds.critical) {
197
215
  recommendations.push('Critical memory usage - consider implementing memory cleanup and lazy loading')
@@ -216,7 +234,7 @@ export const useMemoryUsage = (options= {}) => {
216
234
 
217
235
  // Memory cleanup suggestions
218
236
  const getCleanupSuggestions = useCallback(() => {
219
- const suggestions] = []
237
+ const suggestions: string[] = []
220
238
 
221
239
  if (metrics.memoryLeakDetected) {
222
240
  suggestions.push('Review useEffect cleanup functions')
@@ -245,24 +263,25 @@ export const useMemoryUsage = (options= {}) => {
245
263
  resetStats,
246
264
 
247
265
  // Performance analysis
248
- performanceScore,
249
- memoryTrend,
250
- memoryLeakDetected,
266
+ performanceScore: metrics.performanceScore,
267
+ memoryTrend: metrics.memoryTrend,
268
+ memoryLeakDetected: metrics.memoryLeakDetected,
251
269
 
252
270
  // Optimization
253
271
  getOptimizationRecommendations,
254
272
  getCleanupSuggestions,
255
273
 
256
274
  // Raw values
257
- usedJSHeapSize,
258
- totalJSHeapSize,
259
- jsHeapSizeLimit,
260
- memoryUsage,
261
- memoryPercentage,
275
+ usedJSHeapSize: metrics.usedJSHeapSize,
276
+ totalJSHeapSize: metrics.totalJSHeapSize,
277
+ jsHeapSizeLimit: metrics.jsHeapSizeLimit,
278
+ memoryUsage: metrics.memoryUsage,
279
+ memoryPercentage: metrics.memoryPercentage,
262
280
 
263
281
  // Thresholds
264
- thresholds,
282
+ thresholds: finalThresholds,
265
283
 
266
284
  // History
267
- memoryHistory}
285
+ memoryHistory: memoryHistoryRef.current
286
+ }
268
287
  }
@@ -1,30 +1,46 @@
1
1
  import { useState, useEffect, useCallback, useRef, useMemo } from 'react'
2
2
 
3
3
  export interface MemoryMetrics {
4
- usedJSHeapSize}
4
+ usedJSHeapSize: number
5
+ totalJSHeapSize: number
6
+ jsHeapSizeLimit: number
7
+ memoryUsage: number
8
+ memoryPercentage: number
9
+ memoryTrend: 'increasing' | 'decreasing' | 'stable'
10
+ memoryLeakDetected: boolean
11
+ performanceScore: 'excellent' | 'good' | 'fair' | 'poor'
12
+ }
5
13
 
6
14
  export interface MemoryThresholds {
7
- warning}
15
+ warning: number
16
+ critical: number
17
+ excellent: number
18
+ }
8
19
 
9
20
  export interface MemoryCallbacks {
10
- onMemoryWarning?) => void
11
- onMemoryCritical?) => void
12
- onMemoryLeakDetected?]) => void
13
- onPerformanceScoreChange?]) => void
21
+ onMemoryWarning?: (usage: number) => void
22
+ onMemoryCritical?: (usage: number) => void
23
+ onMemoryLeakDetected?: (trend: MemoryMetrics['memoryTrend']) => void
24
+ onPerformanceScoreChange?: (score: MemoryMetrics['performanceScore']) => void
14
25
  }
15
26
 
16
27
  export interface MemoryOptions {
17
- updateInterval?}
28
+ updateInterval?: number
29
+ sampleSize?: number
30
+ thresholds?: Partial<MemoryThresholds>
31
+ callbacks?: MemoryCallbacks
32
+ }
18
33
 
19
- const DEFAULT_THRESHOLDS= {
20
- warning,
21
- critical,
22
- excellent}
34
+ const DEFAULT_THRESHOLDS: MemoryThresholds = {
35
+ warning: 0.7,
36
+ critical: 0.85,
37
+ excellent: 0.5
38
+ }
23
39
 
24
40
  const DEFAULT_SAMPLE_SIZE = 10
25
41
  const MEMORY_LEAK_THRESHOLD = 0.1 // 10% increase over time
26
42
 
27
- export const useMemoryUsage = (options= {}) => {
43
+ export const useMemoryUsage = (options: MemoryOptions = {}) => {
28
44
  const {
29
45
  updateInterval = 2000,
30
46
  sampleSize = DEFAULT_SAMPLE_SIZE,
@@ -33,14 +49,15 @@ export const useMemoryUsage = (options= {}) => {
33
49
  } = options
34
50
 
35
51
  const [metrics, setMetrics] = useState<MemoryMetrics>({
36
- usedJSHeapSize,
37
- totalJSHeapSize,
38
- jsHeapSizeLimit,
39
- memoryUsage,
40
- memoryPercentage,
41
- memoryTrend,
42
- memoryLeakDetected,
43
- performanceScore})
52
+ usedJSHeapSize: 0,
53
+ totalJSHeapSize: 0,
54
+ jsHeapSizeLimit: 0,
55
+ memoryUsage: 0,
56
+ memoryPercentage: 0,
57
+ memoryTrend: 'stable',
58
+ memoryLeakDetected: false,
59
+ performanceScore: 'excellent'
60
+ })
44
61
 
45
62
  const [isMonitoring, setIsMonitoring] = useState(false)
46
63
  const intervalIdRef = useRef<NodeJS.Timeout>()
@@ -54,7 +71,7 @@ export const useMemoryUsage = (options= {}) => {
54
71
  }), [thresholds])
55
72
 
56
73
  // Calculate performance score based on memory usage
57
- const calculatePerformanceScore = useCallback((usage)] => {
74
+ const calculatePerformanceScore = useCallback((usage: number): MemoryMetrics['performanceScore'] => {
58
75
  if (usage <= finalThresholds.excellent) return 'excellent'
59
76
  if (usage <= finalThresholds.warning) return 'good'
60
77
  if (usage <= finalThresholds.critical) return 'fair'
@@ -62,7 +79,7 @@ export const useMemoryUsage = (options= {}) => {
62
79
  }, [finalThresholds])
63
80
 
64
81
  // Detect memory trend
65
- const detectMemoryTrend = useCallback((currentUsage, previousUsage)] => {
82
+ const detectMemoryTrend = useCallback((currentUsage: number, previousUsage: number): MemoryMetrics['memoryTrend'] => {
66
83
  const difference = currentUsage - previousUsage
67
84
  const percentageChange = Math.abs(difference) / previousUsage
68
85
 
@@ -72,7 +89,7 @@ export const useMemoryUsage = (options= {}) => {
72
89
  }, [])
73
90
 
74
91
  // Detect potential memory leaks
75
- const detectMemoryLeak = useCallback((_usage, history])=> {
92
+ const detectMemoryLeak = useCallback((_usage: number, history: number[]): boolean => {
76
93
  if (history.length < 5) return false
77
94
 
78
95
  // Check if memory usage is consistently increasing
@@ -118,7 +135,7 @@ export const useMemoryUsage = (options= {}) => {
118
135
  // Calculate performance score
119
136
  const performanceScore = calculatePerformanceScore(memoryUsage)
120
137
 
121
- const newMetrics= {
138
+ const newMetrics: MemoryMetrics = {
122
139
  usedJSHeapSize,
123
140
  totalJSHeapSize,
124
141
  jsHeapSizeLimit,
@@ -179,8 +196,9 @@ export const useMemoryUsage = (options= {}) => {
179
196
  lastMemoryRef.current = 0
180
197
  setMetrics(prev => ({
181
198
  ...prev,
182
- memoryTrend,
183
- memoryLeakDetected}))
199
+ memoryTrend: 'stable',
200
+ memoryLeakDetected: false
201
+ }))
184
202
  }, [])
185
203
 
186
204
  // Auto-start monitoring on mount
@@ -191,7 +209,7 @@ export const useMemoryUsage = (options= {}) => {
191
209
 
192
210
  // Memory optimization recommendations
193
211
  const getOptimizationRecommendations = useCallback(() => {
194
- const recommendations] = []
212
+ const recommendations: string[] = []
195
213
 
196
214
  if (metrics.memoryUsage >= finalThresholds.critical) {
197
215
  recommendations.push('Critical memory usage - consider implementing memory cleanup and lazy loading')
@@ -216,7 +234,7 @@ export const useMemoryUsage = (options= {}) => {
216
234
 
217
235
  // Memory cleanup suggestions
218
236
  const getCleanupSuggestions = useCallback(() => {
219
- const suggestions] = []
237
+ const suggestions: string[] = []
220
238
 
221
239
  if (metrics.memoryLeakDetected) {
222
240
  suggestions.push('Review useEffect cleanup functions')
@@ -245,24 +263,25 @@ export const useMemoryUsage = (options= {}) => {
245
263
  resetStats,
246
264
 
247
265
  // Performance analysis
248
- performanceScore,
249
- memoryTrend,
250
- memoryLeakDetected,
266
+ performanceScore: metrics.performanceScore,
267
+ memoryTrend: metrics.memoryTrend,
268
+ memoryLeakDetected: metrics.memoryLeakDetected,
251
269
 
252
270
  // Optimization
253
271
  getOptimizationRecommendations,
254
272
  getCleanupSuggestions,
255
273
 
256
274
  // Raw values
257
- usedJSHeapSize,
258
- totalJSHeapSize,
259
- jsHeapSizeLimit,
260
- memoryUsage,
261
- memoryPercentage,
275
+ usedJSHeapSize: metrics.usedJSHeapSize,
276
+ totalJSHeapSize: metrics.totalJSHeapSize,
277
+ jsHeapSizeLimit: metrics.jsHeapSizeLimit,
278
+ memoryUsage: metrics.memoryUsage,
279
+ memoryPercentage: metrics.memoryPercentage,
262
280
 
263
281
  // Thresholds
264
- thresholds,
282
+ thresholds: finalThresholds,
265
283
 
266
284
  // History
267
- memoryHistory}
285
+ memoryHistory: memoryHistoryRef.current
286
+ }
268
287
  }
@@ -1,55 +1,86 @@
1
1
  import { useState, useEffect, useCallback, useRef } from 'react'
2
2
 
3
3
  export interface LayoutConfig {
4
- enableTouchOptimization}
4
+ enableTouchOptimization: boolean
5
+ enableKeyboardOptimization: boolean
6
+ enableResponsiveBehavior: boolean
7
+ enablePerformanceOptimization: boolean
8
+ touchTargetSize: number
9
+ spacingMultiplier: number
10
+ maxFieldWidth: number
11
+ enableAutoFocus: boolean
12
+ }
5
13
 
6
14
  export interface LayoutState {
7
- isMobile}
15
+ isMobile: boolean
16
+ isTablet: boolean
17
+ isDesktop: boolean
18
+ orientation: 'portrait' | 'landscape'
19
+ keyboardVisible: boolean
20
+ viewportHeight: number
21
+ viewportWidth: number
22
+ safeAreaInsets: {
23
+ top: number
24
+ bottom: number
25
+ left: number
26
+ right: number
27
+ }
8
28
  }
9
29
 
10
30
  export interface LayoutCallbacks {
11
- onLayoutChange?) => void
12
- onOrientationChange?) => void
13
- onKeyboardVisibilityChange?) => void
14
- onViewportChange?, height) => void
31
+ onLayoutChange?: (layout: LayoutState) => void
32
+ onOrientationChange?: (orientation: 'portrait' | 'landscape') => void
33
+ onKeyboardVisibilityChange?: (visible: boolean) => void
34
+ onViewportChange?: (width: number, height: number) => void
15
35
  }
16
36
 
17
37
  export interface MobileFormLayoutState {
18
- layout}
38
+ layout: LayoutState
39
+ isOptimized: boolean
40
+ currentSpacing: number
41
+ currentFieldWidth: number
42
+ performanceMetrics: {
43
+ layoutUpdates: number
44
+ lastUpdateTime: number
45
+ optimizationScore: number
46
+ }
19
47
  }
20
48
 
21
49
  export const useMobileFormLayout = (
22
- callbacks= {},
23
- config= {}
50
+ callbacks: LayoutCallbacks = {},
51
+ config: Partial<LayoutConfig> = {}
24
52
  ) => {
25
- const defaultConfig= {
26
- enableTouchOptimization,
27
- enableKeyboardOptimization,
28
- enableResponsiveBehavior,
29
- enablePerformanceOptimization,
30
- touchTargetSize,
31
- spacingMultiplier,
32
- maxFieldWidth,
33
- enableAutoFocus,
53
+ const defaultConfig: LayoutConfig = {
54
+ enableTouchOptimization: true,
55
+ enableKeyboardOptimization: true,
56
+ enableResponsiveBehavior: true,
57
+ enablePerformanceOptimization: true,
58
+ touchTargetSize: 44,
59
+ spacingMultiplier: 1.2,
60
+ maxFieldWidth: 400,
61
+ enableAutoFocus: true,
34
62
  ...config
35
63
  }
36
64
 
37
65
  const [layoutState, setLayoutState] = useState<MobileFormLayoutState>({
38
- layout,
39
- isTablet,
40
- isDesktop,
41
- orientation,
42
- keyboardVisible,
43
- viewportHeight,
44
- viewportWidth,
45
- safeAreaInsets, bottom, left, right}
66
+ layout: {
67
+ isMobile: false,
68
+ isTablet: false,
69
+ isDesktop: false,
70
+ orientation: 'portrait',
71
+ keyboardVisible: false,
72
+ viewportHeight: window.innerHeight,
73
+ viewportWidth: window.innerWidth,
74
+ safeAreaInsets: { top: 0, bottom: 0, left: 0, right: 0 }
46
75
  },
47
- isOptimized,
48
- currentSpacing,
49
- currentFieldWidth, defaultConfig.maxFieldWidth),
50
- performanceMetrics,
51
- lastUpdateTime,
52
- optimizationScore}
76
+ isOptimized: false,
77
+ currentSpacing: defaultConfig.touchTargetSize * defaultConfig.spacingMultiplier,
78
+ currentFieldWidth: Math.min(window.innerWidth - 32, defaultConfig.maxFieldWidth),
79
+ performanceMetrics: {
80
+ layoutUpdates: 0,
81
+ lastUpdateTime: 0,
82
+ optimizationScore: 0
83
+ }
53
84
  })
54
85
 
55
86
  const resizeObserverRef = useRef<ResizeObserver | null>(null)
@@ -85,7 +116,7 @@ export const useMobileFormLayout = (
85
116
  }, [])
86
117
 
87
118
  // Detect orientation
88
- const detectOrientation = useCallback(()=> {
119
+ const detectOrientation = useCallback((): 'portrait' | 'landscape' => {
89
120
  if (window.innerHeight > window.innerWidth) {
90
121
  return 'portrait'
91
122
  }
@@ -97,10 +128,10 @@ export const useMobileFormLayout = (
97
128
  const style = getComputedStyle(document.documentElement)
98
129
 
99
130
  return {
100
- top) || '0'),
101
- bottom) || '0'),
102
- left) || '0'),
103
- right) || '0')
131
+ top: parseInt(style.getPropertyValue('--sat') || '0'),
132
+ bottom: parseInt(style.getPropertyValue('--sab') || '0'),
133
+ left: parseInt(style.getPropertyValue('--sal') || '0'),
134
+ right: parseInt(style.getPropertyValue('--sar') || '0')
104
135
  }
105
136
  }, [])
106
137
 
@@ -111,7 +142,9 @@ export const useMobileFormLayout = (
111
142
  const currentHeight = window.innerHeight
112
143
  const currentWidth = window.innerWidth
113
144
 
114
- // Simple heuristic= currentHeight / layoutState.layout.viewportHeight
145
+ // Simple heuristic: if height decreases significantly and width stays the same
146
+ // it's likely the keyboard appeared
147
+ const heightRatio = currentHeight / layoutState.layout.viewportHeight
115
148
  const widthRatio = currentWidth / layoutState.layout.viewportWidth
116
149
 
117
150
  return heightRatio < 0.8 && widthRatio > 0.95
@@ -124,12 +157,12 @@ export const useMobileFormLayout = (
124
157
  const safeAreaInsets = getSafeAreaInsets()
125
158
  const keyboardVisible = detectKeyboardVisibility()
126
159
 
127
- const newLayout= {
160
+ const newLayout: LayoutState = {
128
161
  ...deviceType,
129
162
  orientation,
130
163
  keyboardVisible,
131
- viewportHeight,
132
- viewportWidth,
164
+ viewportHeight: window.innerHeight,
165
+ viewportWidth: window.innerWidth,
133
166
  safeAreaInsets
134
167
  }
135
168
 
@@ -158,12 +191,13 @@ export const useMobileFormLayout = (
158
191
  setLayoutState(prev => {
159
192
  const newState = {
160
193
  ...prev,
161
- layout,
162
- currentSpacing,
163
- currentFieldWidth,
164
- performanceMetrics,
165
- layoutUpdates,
166
- lastUpdateTime)
194
+ layout: newLayout,
195
+ currentSpacing: spacing,
196
+ currentFieldWidth: fieldWidth,
197
+ performanceMetrics: {
198
+ ...prev.performanceMetrics,
199
+ layoutUpdates: prev.performanceMetrics.layoutUpdates + 1,
200
+ lastUpdateTime: Date.now()
167
201
  }
168
202
  }
169
203
 
@@ -192,7 +226,7 @@ export const useMobileFormLayout = (
192
226
  ])
193
227
 
194
228
  // Calculate optimization score
195
- const calculateOptimizationScore = useCallback((state)=> {
229
+ const calculateOptimizationScore = useCallback((state: MobileFormLayoutState): number => {
196
230
  let score = 0
197
231
  const { layout, currentSpacing, currentFieldWidth } = state
198
232
 
@@ -354,13 +388,13 @@ export const useMobileFormLayout = (
354
388
  const { currentSpacing, currentFieldWidth } = layoutState
355
389
 
356
390
  return {
357
- '--mobile-spacing'}px`,
358
- '--mobile-field-width'}px`,
359
- '--touch-target-size'}px`,
360
- '--safe-area-top'}px`,
361
- '--safe-area-bottom'}px`,
362
- '--safe-area-left'}px`,
363
- '--safe-area-right'}px`
391
+ '--mobile-spacing': `${currentSpacing}px`,
392
+ '--mobile-field-width': `${currentFieldWidth}px`,
393
+ '--touch-target-size': `${defaultConfig.touchTargetSize}px`,
394
+ '--safe-area-top': `${layoutState.layout.safeAreaInsets.top}px`,
395
+ '--safe-area-bottom': `${layoutState.layout.safeAreaInsets.bottom}px`,
396
+ '--safe-area-left': `${layoutState.layout.safeAreaInsets.left}px`,
397
+ '--safe-area-right': `${layoutState.layout.safeAreaInsets.right}px`
364
398
  }
365
399
  }, [layoutState, defaultConfig.touchTargetSize])
366
400
 
@@ -395,33 +429,36 @@ export const useMobileFormLayout = (
395
429
  getLayoutClasses,
396
430
  getLayoutCSSVariables,
397
431
  autoFocusFirstInput,
398
- isMobile,
399
- isTablet,
400
- isDesktop,
401
- orientation,
402
- keyboardVisible,
403
- currentSpacing,
404
- currentFieldWidth,
405
- isOptimized,
406
- performanceMetrics}
432
+ isMobile: layoutState.layout.isMobile,
433
+ isTablet: layoutState.layout.isTablet,
434
+ isDesktop: layoutState.layout.isDesktop,
435
+ orientation: layoutState.layout.orientation,
436
+ keyboardVisible: layoutState.layout.keyboardVisible,
437
+ currentSpacing: layoutState.currentSpacing,
438
+ currentFieldWidth: layoutState.currentFieldWidth,
439
+ isOptimized: layoutState.isOptimized,
440
+ performanceMetrics: layoutState.performanceMetrics
441
+ }
407
442
  }
408
443
 
409
444
  // Convenience hook for basic mobile layout
410
445
  export const useBasicMobileLayout = () => {
411
446
  return useMobileFormLayout({}, {
412
- enableTouchOptimization,
413
- enableKeyboardOptimization,
414
- enableResponsiveBehavior,
415
- enablePerformanceOptimization,
416
- enableAutoFocus})
447
+ enableTouchOptimization: true,
448
+ enableKeyboardOptimization: false,
449
+ enableResponsiveBehavior: true,
450
+ enablePerformanceOptimization: false,
451
+ enableAutoFocus: false
452
+ })
417
453
  }
418
454
 
419
455
  // Convenience hook for enhanced mobile layout
420
456
  export const useEnhancedMobileLayout = () => {
421
457
  return useMobileFormLayout({}, {
422
- enableTouchOptimization,
423
- enableKeyboardOptimization,
424
- enableResponsiveBehavior,
425
- enablePerformanceOptimization,
426
- enableAutoFocus})
458
+ enableTouchOptimization: true,
459
+ enableKeyboardOptimization: true,
460
+ enableResponsiveBehavior: true,
461
+ enablePerformanceOptimization: true,
462
+ enableAutoFocus: true
463
+ })
427
464
  }