@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,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
  }