@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,54 +1,79 @@
1
1
  import { useState, useCallback, useRef, useEffect } from 'react'
2
2
 
3
3
  export interface TouchTargetConfig {
4
- minSize?}
4
+ minSize?: number
5
+ spacing?: 'compact' | 'default' | 'generous'
6
+ feedback?: 'scale' | 'ripple' | 'color' | 'none'
7
+ performance?: boolean
8
+ accessibility?: boolean
9
+ }
5
10
 
6
11
  export interface TouchTargetState {
7
- size}
12
+ size: number
13
+ spacing: string
14
+ feedback: string
15
+ isOptimized: boolean
16
+ isAccessible: boolean
17
+ performanceScore: number
18
+ }
8
19
 
9
20
  export interface TouchInteractionState {
10
- isTouching}
21
+ isTouching: boolean
22
+ touchCount: number
23
+ touchStartTime: number
24
+ touchDuration: number
25
+ touchStartX: number
26
+ touchStartY: number
27
+ touchCurrentX: number
28
+ touchCurrentY: number
29
+ touchDeltaX: number
30
+ touchDeltaY: number
31
+ touchVelocity: number
32
+ gestureType: 'none' | 'tap' | 'double-tap' | 'long-press' | 'swipe' | 'pinch'
33
+ }
11
34
 
12
35
  export interface TouchFriendlyInterfaceCallbacks {
13
- onTouchTargetOptimized?) => void
14
- onTouchInteractionDetected?) => void
15
- onPerformanceOptimized?) => void
16
- onAccessibilityEnhanced?) => void
36
+ onTouchTargetOptimized?: (config: TouchTargetConfig) => void
37
+ onTouchInteractionDetected?: (interaction: TouchInteractionState) => void
38
+ onPerformanceOptimized?: (score: number) => void
39
+ onAccessibilityEnhanced?: (feature: string) => void
17
40
  }
18
41
 
19
42
  export const useTouchFriendlyInterface = (
20
- config= {},
21
- callbacks= {}
43
+ config: TouchTargetConfig = {},
44
+ callbacks: TouchFriendlyInterfaceCallbacks = {}
22
45
  ) => {
23
46
  const {
24
47
  minSize = 44,
25
48
  spacing = 'default',
26
49
  feedback = 'scale',
27
- performance= true,
50
+ performance: enablePerformance = true,
28
51
  accessibility = true
29
52
  } = config
30
53
 
31
54
  const [touchTargetState, setTouchTargetState] = useState<TouchTargetState>({
32
- size,
55
+ size: minSize,
33
56
  spacing,
34
57
  feedback,
35
- isOptimized,
36
- isAccessible,
37
- performanceScore})
58
+ isOptimized: false,
59
+ isAccessible: false,
60
+ performanceScore: 0
61
+ })
38
62
 
39
63
  const [touchInteractionState, setTouchInteractionState] = useState<TouchInteractionState>({
40
- isTouching,
41
- touchCount,
42
- touchStartTime,
43
- touchDuration,
44
- touchStartX,
45
- touchStartY,
46
- touchCurrentX,
47
- touchCurrentY,
48
- touchDeltaX,
49
- touchDeltaY,
50
- touchVelocity,
51
- gestureType})
64
+ isTouching: false,
65
+ touchCount: 0,
66
+ touchStartTime: 0,
67
+ touchDuration: 0,
68
+ touchStartX: 0,
69
+ touchStartY: 0,
70
+ touchCurrentX: 0,
71
+ touchCurrentY: 0,
72
+ touchDeltaX: 0,
73
+ touchDeltaY: 0,
74
+ touchVelocity: 0,
75
+ gestureType: 'none'
76
+ })
52
77
 
53
78
  const [isOptimizing, setIsOptimizing] = useState(false)
54
79
  const [optimizations, setOptimizations] = useState<string[]>([])
@@ -63,22 +88,25 @@ export const useTouchFriendlyInterface = (
63
88
  setIsOptimizing(true)
64
89
 
65
90
  setTimeout(() => {
66
- const newOptimizations] = []
91
+ const newOptimizations: string[] = []
67
92
 
68
93
  // Check and optimize touch target size
69
94
  if (touchTargetState.size < 44) {
70
95
  setTouchTargetState(prev => ({
71
96
  ...prev,
72
- size,
73
- isOptimized}))
97
+ size: 44,
98
+ isOptimized: true
99
+ }))
74
100
  newOptimizations.push('Touch target size optimized to 44px minimum')
75
101
  }
76
102
 
77
103
  // Optimize spacing based on device
78
- const deviceSpacing = window.innerWidth <= 768 ? 'generous' == deviceSpacing) {
104
+ const deviceSpacing = window.innerWidth <= 768 ? 'generous' : 'default'
105
+ if (touchTargetState.spacing !== deviceSpacing) {
79
106
  setTouchTargetState(prev => ({
80
107
  ...prev,
81
- spacing}))
108
+ spacing: deviceSpacing
109
+ }))
82
110
  newOptimizations.push(`Touch spacing optimized for ${deviceSpacing} layout`)
83
111
  }
84
112
 
@@ -86,7 +114,8 @@ export const useTouchFriendlyInterface = (
86
114
  if (enablePerformance) {
87
115
  setTouchTargetState(prev => ({
88
116
  ...prev,
89
- performanceScore}))
117
+ performanceScore: 95
118
+ }))
90
119
  newOptimizations.push('Touch performance optimized with hardware acceleration')
91
120
  }
92
121
 
@@ -94,7 +123,8 @@ export const useTouchFriendlyInterface = (
94
123
  if (accessibility) {
95
124
  setTouchTargetState(prev => ({
96
125
  ...prev,
97
- isAccessible}))
126
+ isAccessible: true
127
+ }))
98
128
  newOptimizations.push('Touch accessibility enhanced with ARIA support')
99
129
  }
100
130
 
@@ -108,28 +138,29 @@ export const useTouchFriendlyInterface = (
108
138
  }, [touchTargetState.size, touchTargetState.spacing, performance, accessibility, config, callbacks])
109
139
 
110
140
  // Handle touch start events
111
- const handleTouchStart = useCallback((event) => {
141
+ const handleTouchStart = useCallback((event: TouchEvent) => {
112
142
  const touch = event.touches[0]
113
143
  const currentTime = performance.now()
114
144
 
115
145
  setTouchInteractionState(prev => ({
116
146
  ...prev,
117
- isTouching,
118
- touchCount,
119
- touchStartTime,
120
- touchStartX,
121
- touchStartY,
122
- touchCurrentX,
123
- touchCurrentY,
124
- touchDeltaX,
125
- touchDeltaY}))
147
+ isTouching: true,
148
+ touchCount: event.touches.length,
149
+ touchStartTime: currentTime,
150
+ touchStartX: touch.clientX,
151
+ touchStartY: touch.clientY,
152
+ touchCurrentX: touch.clientX,
153
+ touchCurrentY: touch.clientY,
154
+ touchDeltaX: 0,
155
+ touchDeltaY: 0
156
+ }))
126
157
 
127
158
  touchStartTimeRef.current = currentTime
128
159
  touchCountRef.current = event.touches.length
129
160
  }, [])
130
161
 
131
162
  // Handle touch move events
132
- const handleTouchMove = useCallback((event) => {
163
+ const handleTouchMove = useCallback((event: TouchEvent) => {
133
164
  const touch = event.touches[0]
134
165
  const currentTime = performance.now()
135
166
  const deltaX = touch.clientX - touchInteractionState.touchStartX
@@ -139,12 +170,13 @@ export const useTouchFriendlyInterface = (
139
170
 
140
171
  setTouchInteractionState(prev => ({
141
172
  ...prev,
142
- touchCurrentX,
143
- touchCurrentY,
144
- touchDeltaX,
145
- touchDeltaY,
146
- touchDuration,
147
- touchVelocity}))
173
+ touchCurrentX: touch.clientX,
174
+ touchCurrentY: touch.clientY,
175
+ touchDeltaX: deltaX,
176
+ touchDeltaY: deltaY,
177
+ touchDuration: duration,
178
+ touchVelocity: velocity
179
+ }))
148
180
  }, [touchInteractionState.touchStartX, touchInteractionState.touchStartY])
149
181
 
150
182
  // Handle touch end events
@@ -157,7 +189,7 @@ export const useTouchFriendlyInterface = (
157
189
  )
158
190
 
159
191
  // Detect gesture type
160
- let gestureType] = 'none'
192
+ let gestureType: TouchInteractionState['gestureType'] = 'none'
161
193
 
162
194
  if (duration < 200 && distance < 10) {
163
195
  // Tap detection
@@ -177,7 +209,7 @@ export const useTouchFriendlyInterface = (
177
209
 
178
210
  setTouchInteractionState(prev => ({
179
211
  ...prev,
180
- isTouching,
212
+ isTouching: false,
181
213
  gestureType
182
214
  }))
183
215
 
@@ -186,7 +218,7 @@ export const useTouchFriendlyInterface = (
186
218
  // Trigger callback
187
219
  callbacks.onTouchInteractionDetected?.({
188
220
  ...touchInteractionState,
189
- isTouching,
221
+ isTouching: false,
190
222
  gestureType
191
223
  })
192
224
  }, [touchInteractionState, callbacks])
@@ -203,7 +235,7 @@ export const useTouchFriendlyInterface = (
203
235
 
204
236
  setTouchTargetState(prev => ({
205
237
  ...prev,
206
- performanceScore)
238
+ performanceScore: Math.round(score)
207
239
  }))
208
240
 
209
241
  callbacks.onPerformanceOptimized?.(score)
@@ -238,9 +270,9 @@ export const useTouchFriendlyInterface = (
238
270
 
239
271
  // Initialize touch event listeners
240
272
  useEffect(() => {
241
- document.addEventListener('touchstart', handleTouchStart, { passive})
242
- document.addEventListener('touchmove', handleTouchMove, { passive})
243
- document.addEventListener('touchend', handleTouchEnd, { passive})
273
+ document.addEventListener('touchstart', handleTouchStart, { passive: false })
274
+ document.addEventListener('touchmove', handleTouchMove, { passive: false })
275
+ document.addEventListener('touchend', handleTouchEnd, { passive: false })
244
276
 
245
277
  return () => {
246
278
  document.removeEventListener('touchstart', handleTouchStart)
@@ -283,16 +315,16 @@ export const useTouchFriendlyInterface = (
283
315
  startPerformanceMonitoring,
284
316
 
285
317
  // Utility functions
286
- getTouchTargetSize) => touchTargetState.size,
287
- isTouchTargetCompliant) => touchTargetState.size >= 44,
288
- getTouchSpacing) => touchTargetState.spacing,
289
- getTouchFeedback) => touchTargetState.feedback,
290
- getPerformanceScore) => touchTargetState.performanceScore,
291
- isPerformanceOptimal) => touchTargetState.performanceScore >= 80,
292
- isAccessibilityCompliant) => touchTargetState.isAccessible,
293
- getTouchGestureType) => touchInteractionState.gestureType,
294
- getTouchVelocity) => touchInteractionState.touchVelocity,
295
- clearOptimizations) => setOptimizations([])
318
+ getTouchTargetSize: () => touchTargetState.size,
319
+ isTouchTargetCompliant: () => touchTargetState.size >= 44,
320
+ getTouchSpacing: () => touchTargetState.spacing,
321
+ getTouchFeedback: () => touchTargetState.feedback,
322
+ getPerformanceScore: () => touchTargetState.performanceScore,
323
+ isPerformanceOptimal: () => touchTargetState.performanceScore >= 80,
324
+ isAccessibilityCompliant: () => touchTargetState.isAccessible,
325
+ getTouchGestureType: () => touchInteractionState.gestureType,
326
+ getTouchVelocity: () => touchInteractionState.touchVelocity,
327
+ clearOptimizations: () => setOptimizations([])
296
328
  }
297
329
  }
298
330
 
@@ -1,54 +1,79 @@
1
1
  import { useState, useCallback, useRef, useEffect } from 'react'
2
2
 
3
3
  export interface TouchTargetConfig {
4
- minSize?}
4
+ minSize?: number
5
+ spacing?: 'compact' | 'default' | 'generous'
6
+ feedback?: 'scale' | 'ripple' | 'color' | 'none'
7
+ performance?: boolean
8
+ accessibility?: boolean
9
+ }
5
10
 
6
11
  export interface TouchTargetState {
7
- size}
12
+ size: number
13
+ spacing: string
14
+ feedback: string
15
+ isOptimized: boolean
16
+ isAccessible: boolean
17
+ performanceScore: number
18
+ }
8
19
 
9
20
  export interface TouchInteractionState {
10
- isTouching}
21
+ isTouching: boolean
22
+ touchCount: number
23
+ touchStartTime: number
24
+ touchDuration: number
25
+ touchStartX: number
26
+ touchStartY: number
27
+ touchCurrentX: number
28
+ touchCurrentY: number
29
+ touchDeltaX: number
30
+ touchDeltaY: number
31
+ touchVelocity: number
32
+ gestureType: 'none' | 'tap' | 'double-tap' | 'long-press' | 'swipe' | 'pinch'
33
+ }
11
34
 
12
35
  export interface TouchFriendlyInterfaceCallbacks {
13
- onTouchTargetOptimized?) => void
14
- onTouchInteractionDetected?) => void
15
- onPerformanceOptimized?) => void
16
- onAccessibilityEnhanced?) => void
36
+ onTouchTargetOptimized?: (config: TouchTargetConfig) => void
37
+ onTouchInteractionDetected?: (interaction: TouchInteractionState) => void
38
+ onPerformanceOptimized?: (score: number) => void
39
+ onAccessibilityEnhanced?: (feature: string) => void
17
40
  }
18
41
 
19
42
  export const useTouchFriendlyInterface = (
20
- config= {},
21
- callbacks= {}
43
+ config: TouchTargetConfig = {},
44
+ callbacks: TouchFriendlyInterfaceCallbacks = {}
22
45
  ) => {
23
46
  const {
24
47
  minSize = 44,
25
48
  spacing = 'default',
26
49
  feedback = 'scale',
27
- performance= true,
50
+ performance: enablePerformance = true,
28
51
  accessibility = true
29
52
  } = config
30
53
 
31
54
  const [touchTargetState, setTouchTargetState] = useState<TouchTargetState>({
32
- size,
55
+ size: minSize,
33
56
  spacing,
34
57
  feedback,
35
- isOptimized,
36
- isAccessible,
37
- performanceScore})
58
+ isOptimized: false,
59
+ isAccessible: false,
60
+ performanceScore: 0
61
+ })
38
62
 
39
63
  const [touchInteractionState, setTouchInteractionState] = useState<TouchInteractionState>({
40
- isTouching,
41
- touchCount,
42
- touchStartTime,
43
- touchDuration,
44
- touchStartX,
45
- touchStartY,
46
- touchCurrentX,
47
- touchCurrentY,
48
- touchDeltaX,
49
- touchDeltaY,
50
- touchVelocity,
51
- gestureType})
64
+ isTouching: false,
65
+ touchCount: 0,
66
+ touchStartTime: 0,
67
+ touchDuration: 0,
68
+ touchStartX: 0,
69
+ touchStartY: 0,
70
+ touchCurrentX: 0,
71
+ touchCurrentY: 0,
72
+ touchDeltaX: 0,
73
+ touchDeltaY: 0,
74
+ touchVelocity: 0,
75
+ gestureType: 'none'
76
+ })
52
77
 
53
78
  const [isOptimizing, setIsOptimizing] = useState(false)
54
79
  const [optimizations, setOptimizations] = useState<string[]>([])
@@ -63,22 +88,25 @@ export const useTouchFriendlyInterface = (
63
88
  setIsOptimizing(true)
64
89
 
65
90
  setTimeout(() => {
66
- const newOptimizations] = []
91
+ const newOptimizations: string[] = []
67
92
 
68
93
  // Check and optimize touch target size
69
94
  if (touchTargetState.size < 44) {
70
95
  setTouchTargetState(prev => ({
71
96
  ...prev,
72
- size,
73
- isOptimized}))
97
+ size: 44,
98
+ isOptimized: true
99
+ }))
74
100
  newOptimizations.push('Touch target size optimized to 44px minimum')
75
101
  }
76
102
 
77
103
  // Optimize spacing based on device
78
- const deviceSpacing = window.innerWidth <= 768 ? 'generous' == deviceSpacing) {
104
+ const deviceSpacing = window.innerWidth <= 768 ? 'generous' : 'default'
105
+ if (touchTargetState.spacing !== deviceSpacing) {
79
106
  setTouchTargetState(prev => ({
80
107
  ...prev,
81
- spacing}))
108
+ spacing: deviceSpacing
109
+ }))
82
110
  newOptimizations.push(`Touch spacing optimized for ${deviceSpacing} layout`)
83
111
  }
84
112
 
@@ -86,7 +114,8 @@ export const useTouchFriendlyInterface = (
86
114
  if (enablePerformance) {
87
115
  setTouchTargetState(prev => ({
88
116
  ...prev,
89
- performanceScore}))
117
+ performanceScore: 95
118
+ }))
90
119
  newOptimizations.push('Touch performance optimized with hardware acceleration')
91
120
  }
92
121
 
@@ -94,7 +123,8 @@ export const useTouchFriendlyInterface = (
94
123
  if (accessibility) {
95
124
  setTouchTargetState(prev => ({
96
125
  ...prev,
97
- isAccessible}))
126
+ isAccessible: true
127
+ }))
98
128
  newOptimizations.push('Touch accessibility enhanced with ARIA support')
99
129
  }
100
130
 
@@ -108,28 +138,29 @@ export const useTouchFriendlyInterface = (
108
138
  }, [touchTargetState.size, touchTargetState.spacing, performance, accessibility, config, callbacks])
109
139
 
110
140
  // Handle touch start events
111
- const handleTouchStart = useCallback((event) => {
141
+ const handleTouchStart = useCallback((event: TouchEvent) => {
112
142
  const touch = event.touches[0]
113
143
  const currentTime = performance.now()
114
144
 
115
145
  setTouchInteractionState(prev => ({
116
146
  ...prev,
117
- isTouching,
118
- touchCount,
119
- touchStartTime,
120
- touchStartX,
121
- touchStartY,
122
- touchCurrentX,
123
- touchCurrentY,
124
- touchDeltaX,
125
- touchDeltaY}))
147
+ isTouching: true,
148
+ touchCount: event.touches.length,
149
+ touchStartTime: currentTime,
150
+ touchStartX: touch.clientX,
151
+ touchStartY: touch.clientY,
152
+ touchCurrentX: touch.clientX,
153
+ touchCurrentY: touch.clientY,
154
+ touchDeltaX: 0,
155
+ touchDeltaY: 0
156
+ }))
126
157
 
127
158
  touchStartTimeRef.current = currentTime
128
159
  touchCountRef.current = event.touches.length
129
160
  }, [])
130
161
 
131
162
  // Handle touch move events
132
- const handleTouchMove = useCallback((event) => {
163
+ const handleTouchMove = useCallback((event: TouchEvent) => {
133
164
  const touch = event.touches[0]
134
165
  const currentTime = performance.now()
135
166
  const deltaX = touch.clientX - touchInteractionState.touchStartX
@@ -139,12 +170,13 @@ export const useTouchFriendlyInterface = (
139
170
 
140
171
  setTouchInteractionState(prev => ({
141
172
  ...prev,
142
- touchCurrentX,
143
- touchCurrentY,
144
- touchDeltaX,
145
- touchDeltaY,
146
- touchDuration,
147
- touchVelocity}))
173
+ touchCurrentX: touch.clientX,
174
+ touchCurrentY: touch.clientY,
175
+ touchDeltaX: deltaX,
176
+ touchDeltaY: deltaY,
177
+ touchDuration: duration,
178
+ touchVelocity: velocity
179
+ }))
148
180
  }, [touchInteractionState.touchStartX, touchInteractionState.touchStartY])
149
181
 
150
182
  // Handle touch end events
@@ -157,7 +189,7 @@ export const useTouchFriendlyInterface = (
157
189
  )
158
190
 
159
191
  // Detect gesture type
160
- let gestureType] = 'none'
192
+ let gestureType: TouchInteractionState['gestureType'] = 'none'
161
193
 
162
194
  if (duration < 200 && distance < 10) {
163
195
  // Tap detection
@@ -177,7 +209,7 @@ export const useTouchFriendlyInterface = (
177
209
 
178
210
  setTouchInteractionState(prev => ({
179
211
  ...prev,
180
- isTouching,
212
+ isTouching: false,
181
213
  gestureType
182
214
  }))
183
215
 
@@ -186,7 +218,7 @@ export const useTouchFriendlyInterface = (
186
218
  // Trigger callback
187
219
  callbacks.onTouchInteractionDetected?.({
188
220
  ...touchInteractionState,
189
- isTouching,
221
+ isTouching: false,
190
222
  gestureType
191
223
  })
192
224
  }, [touchInteractionState, callbacks])
@@ -203,7 +235,7 @@ export const useTouchFriendlyInterface = (
203
235
 
204
236
  setTouchTargetState(prev => ({
205
237
  ...prev,
206
- performanceScore)
238
+ performanceScore: Math.round(score)
207
239
  }))
208
240
 
209
241
  callbacks.onPerformanceOptimized?.(score)
@@ -238,9 +270,9 @@ export const useTouchFriendlyInterface = (
238
270
 
239
271
  // Initialize touch event listeners
240
272
  useEffect(() => {
241
- document.addEventListener('touchstart', handleTouchStart, { passive})
242
- document.addEventListener('touchmove', handleTouchMove, { passive})
243
- document.addEventListener('touchend', handleTouchEnd, { passive})
273
+ document.addEventListener('touchstart', handleTouchStart, { passive: false })
274
+ document.addEventListener('touchmove', handleTouchMove, { passive: false })
275
+ document.addEventListener('touchend', handleTouchEnd, { passive: false })
244
276
 
245
277
  return () => {
246
278
  document.removeEventListener('touchstart', handleTouchStart)
@@ -283,16 +315,16 @@ export const useTouchFriendlyInterface = (
283
315
  startPerformanceMonitoring,
284
316
 
285
317
  // Utility functions
286
- getTouchTargetSize) => touchTargetState.size,
287
- isTouchTargetCompliant) => touchTargetState.size >= 44,
288
- getTouchSpacing) => touchTargetState.spacing,
289
- getTouchFeedback) => touchTargetState.feedback,
290
- getPerformanceScore) => touchTargetState.performanceScore,
291
- isPerformanceOptimal) => touchTargetState.performanceScore >= 80,
292
- isAccessibilityCompliant) => touchTargetState.isAccessible,
293
- getTouchGestureType) => touchInteractionState.gestureType,
294
- getTouchVelocity) => touchInteractionState.touchVelocity,
295
- clearOptimizations) => setOptimizations([])
318
+ getTouchTargetSize: () => touchTargetState.size,
319
+ isTouchTargetCompliant: () => touchTargetState.size >= 44,
320
+ getTouchSpacing: () => touchTargetState.spacing,
321
+ getTouchFeedback: () => touchTargetState.feedback,
322
+ getPerformanceScore: () => touchTargetState.performanceScore,
323
+ isPerformanceOptimal: () => touchTargetState.performanceScore >= 80,
324
+ isAccessibilityCompliant: () => touchTargetState.isAccessible,
325
+ getTouchGestureType: () => touchInteractionState.gestureType,
326
+ getTouchVelocity: () => touchInteractionState.touchVelocity,
327
+ clearOptimizations: () => setOptimizations([])
296
328
  }
297
329
  }
298
330