@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,56 +1,78 @@
1
1
  import { useState, useEffect, useCallback, useRef } from 'react'
2
2
 
3
3
  export interface InputType {
4
- type}
4
+ type: 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search' | 'date' | 'time' | 'datetime-local' | 'month' | 'week'
5
+ pattern?: RegExp
6
+ autocomplete?: string
7
+ inputMode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'
8
+ keyboardType?: 'default' | 'email' | 'numeric' | 'phone' | 'url'
9
+ }
5
10
 
6
11
  export interface SemanticConfig {
7
- enableAutoDetection}
12
+ enableAutoDetection: boolean
13
+ enableKeyboardOptimization: boolean
14
+ enableAutocomplete: boolean
15
+ enableTouchOptimization: boolean
16
+ enableAccessibility: boolean
17
+ enablePerformanceMonitoring: boolean
18
+ }
8
19
 
9
20
  export interface SemanticCallbacks {
10
- onInputTypeDetected?) => void
11
- onKeyboardOptimization?) => void
12
- onAutocompleteEnhanced?) => void
13
- onTouchOptimized?) => void
21
+ onInputTypeDetected?: (inputType: InputType) => void
22
+ onKeyboardOptimization?: (optimized: boolean) => void
23
+ onAutocompleteEnhanced?: (enhanced: boolean) => void
24
+ onTouchOptimized?: (optimized: boolean) => void
14
25
  }
15
26
 
16
27
  export interface SemanticInputState {
17
- detectedType}
28
+ detectedType: InputType | null
29
+ isOptimized: boolean
30
+ keyboardOptimized: boolean
31
+ autocompleteEnhanced: boolean
32
+ touchOptimized: boolean
33
+ performanceMetrics: {
34
+ detectionTime: number
35
+ optimizationTime: number
36
+ lastOptimization: number
37
+ }
18
38
  }
19
39
 
20
40
  export const useSemanticInput = (
21
- initialType,
22
- callbacks= {},
23
- config= {}
41
+ initialType: InputType,
42
+ callbacks: SemanticCallbacks = {},
43
+ config: Partial<SemanticConfig> = {}
24
44
  ) => {
25
- const defaultConfig= {
26
- enableAutoDetection,
27
- enableKeyboardOptimization,
28
- enableAutocomplete,
29
- enableTouchOptimization,
30
- enableAccessibility,
31
- enablePerformanceMonitoring,
45
+ const defaultConfig: SemanticConfig = {
46
+ enableAutoDetection: true,
47
+ enableKeyboardOptimization: true,
48
+ enableAutocomplete: true,
49
+ enableTouchOptimization: true,
50
+ enableAccessibility: true,
51
+ enablePerformanceMonitoring: true,
32
52
  ...config
33
53
  }
34
54
 
35
55
  const [semanticState, setSemanticState] = useState<SemanticInputState>({
36
- detectedType,
37
- isOptimized,
38
- keyboardOptimized,
39
- autocompleteEnhanced,
40
- touchOptimized,
41
- performanceMetrics,
42
- optimizationTime,
43
- lastOptimization}
56
+ detectedType: null,
57
+ isOptimized: false,
58
+ keyboardOptimized: false,
59
+ autocompleteEnhanced: false,
60
+ touchOptimized: false,
61
+ performanceMetrics: {
62
+ detectionTime: 0,
63
+ optimizationTime: 0,
64
+ lastOptimization: 0
65
+ }
44
66
  })
45
67
 
46
68
  const inputRef = useRef<HTMLInputElement | null>(null)
47
69
  const optimizationTimerRef = useRef<NodeJS.Timeout | null>(null)
48
70
 
49
71
  // Detect input type based on content and context
50
- const detectInputType = useCallback((value, name, placeholder?)=> {
72
+ const detectInputType = useCallback((value: string, name: string, placeholder?: string): InputType => {
51
73
  const startTime = performance.now()
52
74
 
53
- let detectedType= { ...initialType }
75
+ let detectedType: InputType = { ...initialType }
54
76
 
55
77
  // Auto-detect based on field name
56
78
  if (defaultConfig.enableAutoDetection) {
@@ -60,58 +82,65 @@ export const useSemanticInput = (
60
82
  // Email detection
61
83
  if (fieldName.includes('email') || fieldName.includes('mail') || fieldValue.includes('@')) {
62
84
  detectedType = {
63
- type,
64
- autocomplete,
65
- inputMode,
66
- keyboardType}
85
+ type: 'email',
86
+ autocomplete: 'email',
87
+ inputMode: 'email',
88
+ keyboardType: 'email'
89
+ }
67
90
  }
68
91
  // Phone detection
69
92
  else if (fieldName.includes('phone') || fieldName.includes('tel') || fieldName.includes('mobile')) {
70
93
  detectedType = {
71
- type,
72
- autocomplete,
73
- inputMode,
74
- keyboardType}
94
+ type: 'tel',
95
+ autocomplete: 'tel',
96
+ inputMode: 'tel',
97
+ keyboardType: 'phone'
98
+ }
75
99
  }
76
100
  // URL detection
77
101
  else if (fieldName.includes('url') || fieldName.includes('website') || fieldName.includes('link')) {
78
102
  detectedType = {
79
- type,
80
- autocomplete,
81
- inputMode,
82
- keyboardType}
103
+ type: 'url',
104
+ autocomplete: 'url',
105
+ inputMode: 'url',
106
+ keyboardType: 'url'
107
+ }
83
108
  }
84
109
  // Search detection
85
110
  else if (fieldName.includes('search') || fieldName.includes('query')) {
86
111
  detectedType = {
87
- type,
88
- autocomplete,
89
- inputMode,
90
- keyboardType}
112
+ type: 'search',
113
+ autocomplete: 'off',
114
+ inputMode: 'search',
115
+ keyboardType: 'default'
116
+ }
91
117
  }
92
118
  // Number detection
93
119
  else if (fieldName.includes('number') || fieldName.includes('amount') || fieldName.includes('price') || fieldName.includes('quantity')) {
94
120
  detectedType = {
95
- type,
96
- autocomplete,
97
- inputMode,
98
- keyboardType}
121
+ type: 'number',
122
+ autocomplete: 'off',
123
+ inputMode: 'numeric',
124
+ keyboardType: 'numeric'
125
+ }
99
126
  }
100
127
  // Date detection
101
128
  else if (fieldName.includes('date') || fieldName.includes('birth') || fieldName.includes('anniversary')) {
102
129
  detectedType = {
103
- type,
104
- autocomplete,
105
- inputMode,
106
- keyboardType}
130
+ type: 'date',
131
+ autocomplete: 'bday',
132
+ inputMode: 'none',
133
+ keyboardType: 'default'
134
+ }
107
135
  }
108
136
  // Password detection
109
137
  else if (fieldName.includes('password') || fieldName.includes('pass') || fieldName.includes('secret')) {
110
138
  detectedType = {
111
- type,
112
- autocomplete,
113
- inputMode,
114
- keyboardType}
139
+ type: 'password',
140
+ autocomplete: 'current-password',
141
+ inputMode: 'text',
142
+ keyboardType: 'default'
143
+ }
115
144
  }
116
145
  }
117
146
 
@@ -121,22 +150,25 @@ export const useSemanticInput = (
121
150
 
122
151
  if (placeholderLower.includes('@') || placeholderLower.includes('email')) {
123
152
  detectedType = {
124
- type,
125
- autocomplete,
126
- inputMode,
127
- keyboardType}
153
+ type: 'email',
154
+ autocomplete: 'email',
155
+ inputMode: 'email',
156
+ keyboardType: 'email'
157
+ }
128
158
  } else if (placeholderLower.includes('http') || placeholderLower.includes('www')) {
129
159
  detectedType = {
130
- type,
131
- autocomplete,
132
- inputMode,
133
- keyboardType}
160
+ type: 'url',
161
+ autocomplete: 'url',
162
+ inputMode: 'url',
163
+ keyboardType: 'url'
164
+ }
134
165
  } else if (placeholderLower.includes('search') || placeholderLower.includes('find')) {
135
166
  detectedType = {
136
- type,
137
- autocomplete,
138
- inputMode,
139
- keyboardType}
167
+ type: 'search',
168
+ autocomplete: 'off',
169
+ inputMode: 'search',
170
+ keyboardType: 'default'
171
+ }
140
172
  }
141
173
  }
142
174
 
@@ -145,34 +177,38 @@ export const useSemanticInput = (
145
177
  // Email pattern
146
178
  if (/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value)) {
147
179
  detectedType = {
148
- type,
149
- autocomplete,
150
- inputMode,
151
- keyboardType}
180
+ type: 'email',
181
+ autocomplete: 'email',
182
+ inputMode: 'email',
183
+ keyboardType: 'email'
184
+ }
152
185
  }
153
186
  // Phone pattern
154
187
  else if (/^[\+]?[0-9\s\-\(\)]{7,}$/.test(value)) {
155
188
  detectedType = {
156
- type,
157
- autocomplete,
158
- inputMode,
159
- keyboardType}
189
+ type: 'tel',
190
+ autocomplete: 'tel',
191
+ inputMode: 'tel',
192
+ keyboardType: 'phone'
193
+ }
160
194
  }
161
195
  // URL pattern
162
- else if (/^https?)) {
196
+ else if (/^https?:\/\/.+/.test(value)) {
163
197
  detectedType = {
164
- type,
165
- autocomplete,
166
- inputMode,
167
- keyboardType}
198
+ type: 'url',
199
+ autocomplete: 'url',
200
+ inputMode: 'url',
201
+ keyboardType: 'url'
202
+ }
168
203
  }
169
204
  // Number pattern
170
205
  else if (/^[0-9]+(\.[0-9]+)?$/.test(value)) {
171
206
  detectedType = {
172
- type,
173
- autocomplete,
174
- inputMode,
175
- keyboardType}
207
+ type: 'number',
208
+ autocomplete: 'off',
209
+ inputMode: 'numeric',
210
+ keyboardType: 'numeric'
211
+ }
176
212
  }
177
213
  }
178
214
 
@@ -182,7 +218,8 @@ export const useSemanticInput = (
182
218
  setSemanticState(prev => ({
183
219
  ...prev,
184
220
  detectedType,
185
- performanceMetrics,
221
+ performanceMetrics: {
222
+ ...prev.performanceMetrics,
186
223
  detectionTime
187
224
  }
188
225
  }))
@@ -192,7 +229,7 @@ export const useSemanticInput = (
192
229
  }, [initialType, defaultConfig.enableAutoDetection, callbacks])
193
230
 
194
231
  // Optimize keyboard for mobile devices
195
- const optimizeKeyboard = useCallback((inputType) => {
232
+ const optimizeKeyboard = useCallback((inputType: InputType) => {
196
233
  if (!defaultConfig.enableKeyboardOptimization) return false
197
234
 
198
235
  const startTime = performance.now()
@@ -240,10 +277,11 @@ export const useSemanticInput = (
240
277
 
241
278
  setSemanticState(prev => ({
242
279
  ...prev,
243
- keyboardOptimized,
244
- performanceMetrics,
280
+ keyboardOptimized: optimized,
281
+ performanceMetrics: {
282
+ ...prev.performanceMetrics,
245
283
  optimizationTime,
246
- lastOptimization)
284
+ lastOptimization: Date.now()
247
285
  }
248
286
  }))
249
287
 
@@ -252,7 +290,7 @@ export const useSemanticInput = (
252
290
  }, [defaultConfig.enableKeyboardOptimization, defaultConfig.enableAutocomplete, callbacks])
253
291
 
254
292
  // Enhance autocomplete functionality
255
- const enhanceAutocomplete = useCallback((inputType) => {
293
+ const enhanceAutocomplete = useCallback((inputType: InputType) => {
256
294
  if (!defaultConfig.enableAutocomplete) return false
257
295
 
258
296
  let enhanced = false
@@ -262,25 +300,32 @@ export const useSemanticInput = (
262
300
 
263
301
  // Set appropriate autocomplete values
264
302
  switch (inputType.type) {
265
- case 'email', 'email')
303
+ case 'email':
304
+ input.setAttribute('autocomplete', 'email')
266
305
  enhanced = true
267
306
  break
268
- case 'tel', 'tel')
307
+ case 'tel':
308
+ input.setAttribute('autocomplete', 'tel')
269
309
  enhanced = true
270
310
  break
271
- case 'url', 'url')
311
+ case 'url':
312
+ input.setAttribute('autocomplete', 'url')
272
313
  enhanced = true
273
314
  break
274
- case 'password', 'current-password')
315
+ case 'password':
316
+ input.setAttribute('autocomplete', 'current-password')
275
317
  enhanced = true
276
318
  break
277
- case 'date', 'bday')
319
+ case 'date':
320
+ input.setAttribute('autocomplete', 'bday')
278
321
  enhanced = true
279
322
  break
280
- case 'search', 'off')
323
+ case 'search':
324
+ input.setAttribute('autocomplete', 'off')
281
325
  enhanced = true
282
326
  break
283
- case 'number', 'off')
327
+ case 'number':
328
+ input.setAttribute('autocomplete', 'off')
284
329
  enhanced = true
285
330
  break
286
331
  }
@@ -300,14 +345,15 @@ export const useSemanticInput = (
300
345
 
301
346
  setSemanticState(prev => ({
302
347
  ...prev,
303
- autocompleteEnhanced}))
348
+ autocompleteEnhanced: enhanced
349
+ }))
304
350
 
305
351
  callbacks.onAutocompleteEnhanced?.(enhanced)
306
352
  return enhanced
307
353
  }, [defaultConfig.enableAutocomplete, callbacks])
308
354
 
309
355
  // Optimize touch interactions
310
- const optimizeTouch = useCallback((inputType) => {
356
+ const optimizeTouch = useCallback((inputType: InputType) => {
311
357
  if (!defaultConfig.enableTouchOptimization) return false
312
358
 
313
359
  let optimized = false
@@ -343,14 +389,15 @@ export const useSemanticInput = (
343
389
 
344
390
  setSemanticState(prev => ({
345
391
  ...prev,
346
- touchOptimized}))
392
+ touchOptimized: optimized
393
+ }))
347
394
 
348
395
  callbacks.onTouchOptimized?.(optimized)
349
396
  return optimized
350
397
  }, [defaultConfig.enableTouchOptimization, callbacks])
351
398
 
352
399
  // Apply all optimizations
353
- const applyOptimizations = useCallback((inputType) => {
400
+ const applyOptimizations = useCallback((inputType: InputType) => {
354
401
  const keyboardOptimized = optimizeKeyboard(inputType)
355
402
  const autocompleteEnhanced = enhanceAutocomplete(inputType)
356
403
  const touchOptimized = optimizeTouch(inputType)
@@ -367,9 +414,10 @@ export const useSemanticInput = (
367
414
 
368
415
  // Handle input changes with optimization
369
416
  const handleInputChange = useCallback((
370
- value,
371
- name,
372
- placeholder?) => {
417
+ value: string,
418
+ name: string,
419
+ placeholder?: string
420
+ ) => {
373
421
  const detectedType = detectInputType(value, name, placeholder)
374
422
 
375
423
  // Apply optimizations with debouncing
@@ -383,10 +431,11 @@ export const useSemanticInput = (
383
431
  }, [detectInputType, applyOptimizations])
384
432
 
385
433
  // Get optimized input attributes
386
- const getOptimizedAttributes = useCallback((inputType) => {
387
- const attributes, string> = {
388
- type,
389
- 'data-semantic-optimized'}
434
+ const getOptimizedAttributes = useCallback((inputType: InputType) => {
435
+ const attributes: Record<string, string> = {
436
+ type: inputType.type,
437
+ 'data-semantic-optimized': 'true'
438
+ }
390
439
 
391
440
  if (inputType.inputMode) {
392
441
  attributes.inputmode = inputType.inputMode
@@ -460,10 +509,11 @@ export const useSemanticInput = (
460
509
 
461
510
  setSemanticState(prev => ({
462
511
  ...prev,
463
- isOptimized,
464
- keyboardOptimized,
465
- autocompleteEnhanced,
466
- touchOptimized}))
512
+ isOptimized: false,
513
+ keyboardOptimized: false,
514
+ autocompleteEnhanced: false,
515
+ touchOptimized: false
516
+ }))
467
517
  }, [])
468
518
 
469
519
  // Clean up timer on unmount
@@ -491,23 +541,25 @@ export const useSemanticInput = (
491
541
  }
492
542
 
493
543
  // Convenience hook for basic semantic input
494
- export const useBasicSemanticInput = (initialType) => {
544
+ export const useBasicSemanticInput = (initialType: InputType) => {
495
545
  return useSemanticInput(initialType, {}, {
496
- enableAutoDetection,
497
- enableKeyboardOptimization,
498
- enableAutocomplete,
499
- enableTouchOptimization,
500
- enableAccessibility,
501
- enablePerformanceMonitoring})
546
+ enableAutoDetection: true,
547
+ enableKeyboardOptimization: false,
548
+ enableAutocomplete: false,
549
+ enableTouchOptimization: false,
550
+ enableAccessibility: true,
551
+ enablePerformanceMonitoring: false
552
+ })
502
553
  }
503
554
 
504
555
  // Convenience hook for enhanced semantic input
505
- export const useEnhancedSemanticInput = (initialType) => {
556
+ export const useEnhancedSemanticInput = (initialType: InputType) => {
506
557
  return useSemanticInput(initialType, {}, {
507
- enableAutoDetection,
508
- enableKeyboardOptimization,
509
- enableAutocomplete,
510
- enableTouchOptimization,
511
- enableAccessibility,
512
- enablePerformanceMonitoring})
558
+ enableAutoDetection: true,
559
+ enableKeyboardOptimization: true,
560
+ enableAutocomplete: true,
561
+ enableTouchOptimization: true,
562
+ enableAccessibility: true,
563
+ enablePerformanceMonitoring: true
564
+ })
513
565
  }