@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.6 → 0.2.8

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 (468) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/components/ui/accessibility-demo.d.ts +259 -0
  3. package/dist/components/ui/accessibility-demo.esm.js +265 -0
  4. package/dist/components/ui/accessibility-demo.js +265 -0
  5. package/dist/components/ui/advanced-component-architecture-demo.d.ts +718 -0
  6. package/dist/components/ui/advanced-component-architecture-demo.esm.js +860 -0
  7. package/dist/components/ui/advanced-component-architecture-demo.js +860 -0
  8. package/dist/components/ui/advanced-transition-system-demo.d.ts +660 -0
  9. package/dist/components/ui/advanced-transition-system-demo.esm.js +624 -0
  10. package/dist/components/ui/advanced-transition-system-demo.js +624 -0
  11. package/dist/components/ui/advanced-transition-system.d.ts +391 -0
  12. package/dist/components/ui/advanced-transition-system.esm.js +351 -0
  13. package/dist/components/ui/advanced-transition-system.js +351 -0
  14. package/dist/components/ui/animation/animated-container.d.ts +162 -0
  15. package/dist/components/ui/animation/animated-container.esm.js +143 -0
  16. package/dist/components/ui/animation/animated-container.js +143 -0
  17. package/dist/components/ui/animation/index.d.ts +9 -0
  18. package/dist/components/ui/animation/index.esm.js +19 -0
  19. package/dist/components/ui/animation/index.js +19 -0
  20. package/dist/components/ui/animation/staggered-container.d.ts +64 -0
  21. package/dist/components/ui/animation/staggered-container.esm.js +59 -0
  22. package/dist/components/ui/animation/staggered-container.js +59 -0
  23. package/dist/components/ui/animation-demo.d.ts +238 -0
  24. package/dist/components/ui/animation-demo.esm.js +218 -0
  25. package/dist/components/ui/animation-demo.js +218 -0
  26. package/dist/components/ui/badge.d.ts +28 -0
  27. package/dist/components/ui/badge.esm.js +30 -0
  28. package/dist/components/ui/badge.js +30 -0
  29. package/dist/components/ui/battery-conscious-animation-demo.d.ts +561 -0
  30. package/dist/components/ui/battery-conscious-animation-demo.esm.js +533 -0
  31. package/dist/components/ui/battery-conscious-animation-demo.js +533 -0
  32. package/dist/components/ui/border-radius-shadow-demo.d.ts +183 -0
  33. package/dist/components/ui/border-radius-shadow-demo.esm.js +176 -0
  34. package/dist/components/ui/border-radius-shadow-demo.js +176 -0
  35. package/dist/components/ui/button.d.ts +33 -0
  36. package/dist/components/ui/button.esm.js +30 -0
  37. package/dist/components/ui/button.js +30 -0
  38. package/dist/components/ui/card.d.ts +205 -0
  39. package/dist/components/ui/card.esm.js +182 -0
  40. package/dist/components/ui/card.js +182 -0
  41. package/dist/components/ui/checkbox.d.ts +26 -0
  42. package/dist/components/ui/checkbox.esm.js +30 -0
  43. package/dist/components/ui/checkbox.js +30 -0
  44. package/dist/components/ui/color-preview.d.ts +402 -0
  45. package/dist/components/ui/color-preview.esm.js +388 -0
  46. package/dist/components/ui/color-preview.js +388 -0
  47. package/dist/components/ui/data-display/chart.d.ts +646 -0
  48. package/dist/components/ui/data-display/chart.esm.js +625 -0
  49. package/dist/components/ui/data-display/chart.js +625 -0
  50. package/dist/components/ui/data-display/data-grid-simple.d.ts +73 -0
  51. package/dist/components/ui/data-display/data-grid-simple.esm.js +76 -0
  52. package/dist/components/ui/data-display/data-grid-simple.js +76 -0
  53. package/dist/components/ui/data-display/data-grid.d.ts +670 -0
  54. package/dist/components/ui/data-display/data-grid.esm.js +667 -0
  55. package/dist/components/ui/data-display/data-grid.js +667 -0
  56. package/dist/components/ui/data-display/list.d.ts +448 -0
  57. package/dist/components/ui/data-display/list.esm.js +448 -0
  58. package/dist/components/ui/data-display/list.js +448 -0
  59. package/dist/components/ui/data-display/table.d.ts +472 -0
  60. package/dist/components/ui/data-display/table.esm.js +474 -0
  61. package/dist/components/ui/data-display/table.js +474 -0
  62. package/dist/components/ui/data-display/timeline.d.ts +433 -0
  63. package/dist/components/ui/data-display/timeline.esm.js +436 -0
  64. package/dist/components/ui/data-display/timeline.js +436 -0
  65. package/dist/components/ui/data-display/tree.d.ts +594 -0
  66. package/dist/components/ui/data-display/tree.esm.js +570 -0
  67. package/dist/components/ui/data-display/tree.js +570 -0
  68. package/dist/components/ui/data-display/types.d.ts +534 -0
  69. package/dist/components/ui/data-display/types.esm.js +511 -0
  70. package/dist/components/ui/data-display/types.js +511 -0
  71. package/dist/components/ui/enterprise-mobile-experience-demo.d.ts +735 -0
  72. package/dist/components/ui/enterprise-mobile-experience-demo.esm.js +699 -0
  73. package/dist/components/ui/enterprise-mobile-experience-demo.js +699 -0
  74. package/dist/components/ui/enterprise-mobile-experience.d.ts +461 -0
  75. package/dist/components/ui/enterprise-mobile-experience.esm.js +413 -0
  76. package/dist/components/ui/enterprise-mobile-experience.js +413 -0
  77. package/dist/components/ui/feedback/alert.d.ts +154 -0
  78. package/dist/components/ui/feedback/alert.esm.js +150 -0
  79. package/dist/components/ui/feedback/alert.js +150 -0
  80. package/dist/components/ui/feedback/progress.d.ts +288 -0
  81. package/dist/components/ui/feedback/progress.esm.js +269 -0
  82. package/dist/components/ui/feedback/progress.js +269 -0
  83. package/dist/components/ui/feedback/skeleton.d.ts +182 -0
  84. package/dist/components/ui/feedback/skeleton.esm.js +175 -0
  85. package/dist/components/ui/feedback/skeleton.js +175 -0
  86. package/dist/components/ui/feedback/toast.d.ts +277 -0
  87. package/dist/components/ui/feedback/toast.esm.js +256 -0
  88. package/dist/components/ui/feedback/toast.js +256 -0
  89. package/dist/components/ui/feedback/types.d.ts +123 -0
  90. package/dist/components/ui/feedback/types.esm.js +125 -0
  91. package/dist/components/ui/feedback/types.js +125 -0
  92. package/dist/components/ui/font-preview.d.ts +282 -0
  93. package/dist/components/ui/font-preview.esm.js +286 -0
  94. package/dist/components/ui/font-preview.js +286 -0
  95. package/dist/components/ui/form-demo.d.ts +544 -0
  96. package/dist/components/ui/form-demo.esm.js +516 -0
  97. package/dist/components/ui/form-demo.js +516 -0
  98. package/dist/components/ui/hardware-acceleration-demo.d.ts +540 -0
  99. package/dist/components/ui/hardware-acceleration-demo.esm.js +497 -0
  100. package/dist/components/ui/hardware-acceleration-demo.js +497 -0
  101. package/dist/components/ui/input.d.ts +33 -0
  102. package/dist/components/ui/input.esm.js +32 -0
  103. package/dist/components/ui/input.js +32 -0
  104. package/dist/components/ui/label.d.ts +13 -0
  105. package/dist/components/ui/label.esm.js +16 -0
  106. package/dist/components/ui/label.js +16 -0
  107. package/dist/components/ui/layout-demo.d.ts +352 -0
  108. package/dist/components/ui/layout-demo.esm.js +342 -0
  109. package/dist/components/ui/layout-demo.js +342 -0
  110. package/dist/components/ui/layouts/adaptive-layout.d.ts +132 -0
  111. package/dist/components/ui/layouts/adaptive-layout.esm.js +120 -0
  112. package/dist/components/ui/layouts/adaptive-layout.js +120 -0
  113. package/dist/components/ui/layouts/desktop-layout.d.ts +219 -0
  114. package/dist/components/ui/layouts/desktop-layout.esm.js +204 -0
  115. package/dist/components/ui/layouts/desktop-layout.js +204 -0
  116. package/dist/components/ui/layouts/index.d.ts +5 -0
  117. package/dist/components/ui/layouts/index.esm.js +10 -0
  118. package/dist/components/ui/layouts/index.js +10 -0
  119. package/dist/components/ui/layouts/mobile-layout.d.ts +158 -0
  120. package/dist/components/ui/layouts/mobile-layout.esm.js +152 -0
  121. package/dist/components/ui/layouts/mobile-layout.js +152 -0
  122. package/dist/components/ui/layouts/tablet-layout.d.ts +192 -0
  123. package/dist/components/ui/layouts/tablet-layout.esm.js +183 -0
  124. package/dist/components/ui/layouts/tablet-layout.js +183 -0
  125. package/dist/components/ui/mobile-form-validation.d.ts +439 -0
  126. package/dist/components/ui/mobile-form-validation.esm.js +418 -0
  127. package/dist/components/ui/mobile-form-validation.js +418 -0
  128. package/dist/components/ui/mobile-input-demo.d.ts +197 -0
  129. package/dist/components/ui/mobile-input-demo.esm.js +195 -0
  130. package/dist/components/ui/mobile-input-demo.js +195 -0
  131. package/dist/components/ui/mobile-input.d.ts +273 -0
  132. package/dist/components/ui/mobile-input.esm.js +216 -0
  133. package/dist/components/ui/mobile-input.js +216 -0
  134. package/dist/components/ui/mobile-skeleton-loading-demo.d.ts +628 -0
  135. package/dist/components/ui/mobile-skeleton-loading-demo.esm.js +621 -0
  136. package/dist/components/ui/mobile-skeleton-loading-demo.js +621 -0
  137. package/dist/components/ui/navigation/breadcrumb.d.ts +149 -0
  138. package/dist/components/ui/navigation/breadcrumb.esm.js +155 -0
  139. package/dist/components/ui/navigation/breadcrumb.js +155 -0
  140. package/dist/components/ui/navigation/index.d.ts +25 -0
  141. package/dist/components/ui/navigation/index.esm.js +14 -0
  142. package/dist/components/ui/navigation/index.js +14 -0
  143. package/dist/components/ui/navigation/menu.d.ts +366 -0
  144. package/dist/components/ui/navigation/menu.esm.js +360 -0
  145. package/dist/components/ui/navigation/menu.js +360 -0
  146. package/dist/components/ui/navigation/navigation-demo.d.ts +169 -0
  147. package/dist/components/ui/navigation/navigation-demo.esm.js +317 -0
  148. package/dist/components/ui/navigation/navigation-demo.js +317 -0
  149. package/dist/components/ui/navigation/pagination.d.ts +261 -0
  150. package/dist/components/ui/navigation/pagination.esm.js +260 -0
  151. package/dist/components/ui/navigation/pagination.js +260 -0
  152. package/dist/components/ui/navigation/sidebar.d.ts +375 -0
  153. package/dist/components/ui/navigation/sidebar.esm.js +369 -0
  154. package/dist/components/ui/navigation/sidebar.js +369 -0
  155. package/dist/components/ui/navigation/stepper.d.ts +294 -0
  156. package/dist/components/ui/navigation/stepper.esm.js +292 -0
  157. package/dist/components/ui/navigation/stepper.js +292 -0
  158. package/dist/components/ui/navigation/tabs.d.ts +196 -0
  159. package/dist/components/ui/navigation/tabs.esm.js +194 -0
  160. package/dist/components/ui/navigation/tabs.js +194 -0
  161. package/dist/components/ui/navigation/types.d.ts +293 -0
  162. package/dist/components/ui/navigation/types.esm.js +298 -0
  163. package/dist/components/ui/navigation/types.js +298 -0
  164. package/dist/components/ui/overlay/backdrop.d.ts +79 -0
  165. package/dist/components/ui/overlay/backdrop.esm.js +80 -0
  166. package/dist/components/ui/overlay/backdrop.js +80 -0
  167. package/dist/components/ui/overlay/focus-manager.d.ts +141 -0
  168. package/dist/components/ui/overlay/focus-manager.esm.js +141 -0
  169. package/dist/components/ui/overlay/focus-manager.js +141 -0
  170. package/dist/components/ui/overlay/index.d.ts +27 -0
  171. package/dist/components/ui/overlay/index.esm.js +16 -0
  172. package/dist/components/ui/overlay/index.js +16 -0
  173. package/dist/components/ui/overlay/modal.d.ts +262 -0
  174. package/dist/components/ui/overlay/modal.esm.js +266 -0
  175. package/dist/components/ui/overlay/modal.js +266 -0
  176. package/dist/components/ui/overlay/overlay-manager.d.ts +107 -0
  177. package/dist/components/ui/overlay/overlay-manager.esm.js +105 -0
  178. package/dist/components/ui/overlay/overlay-manager.js +105 -0
  179. package/dist/components/ui/overlay/popover.d.ts +450 -0
  180. package/dist/components/ui/overlay/popover.esm.js +446 -0
  181. package/dist/components/ui/overlay/popover.js +446 -0
  182. package/dist/components/ui/overlay/portal.d.ts +75 -0
  183. package/dist/components/ui/overlay/portal.esm.js +79 -0
  184. package/dist/components/ui/overlay/portal.js +79 -0
  185. package/dist/components/ui/overlay/tooltip.d.ts +298 -0
  186. package/dist/components/ui/overlay/tooltip.esm.js +288 -0
  187. package/dist/components/ui/overlay/tooltip.js +288 -0
  188. package/dist/components/ui/overlay/types.d.ts +194 -0
  189. package/dist/components/ui/overlay/types.esm.js +195 -0
  190. package/dist/components/ui/overlay/types.js +195 -0
  191. package/dist/components/ui/performance-demo.d.ts +583 -0
  192. package/dist/components/ui/performance-demo.esm.js +549 -0
  193. package/dist/components/ui/performance-demo.js +549 -0
  194. package/dist/components/ui/semantic-input-system-demo.d.ts +490 -0
  195. package/dist/components/ui/semantic-input-system-demo.esm.js +465 -0
  196. package/dist/components/ui/semantic-input-system-demo.js +465 -0
  197. package/dist/components/ui/theme-customizer.d.ts +378 -0
  198. package/dist/components/ui/theme-customizer.esm.js +354 -0
  199. package/dist/components/ui/theme-customizer.js +354 -0
  200. package/dist/components/ui/theme-preview.d.ts +305 -0
  201. package/dist/components/ui/theme-preview.esm.js +258 -0
  202. package/dist/components/ui/theme-preview.js +258 -0
  203. package/dist/components/ui/theme-switcher.d.ts +259 -0
  204. package/dist/components/ui/theme-switcher.esm.js +238 -0
  205. package/dist/components/ui/theme-switcher.js +238 -0
  206. package/dist/components/ui/theme-toggle.d.ts +34 -0
  207. package/dist/components/ui/theme-toggle.esm.js +38 -0
  208. package/dist/components/ui/theme-toggle.js +38 -0
  209. package/dist/components/ui/token-demo.d.ts +188 -0
  210. package/dist/components/ui/token-demo.esm.js +183 -0
  211. package/dist/components/ui/token-demo.js +183 -0
  212. package/dist/components/ui/touch-demo.d.ts +455 -0
  213. package/dist/components/ui/touch-demo.esm.js +433 -0
  214. package/dist/components/ui/touch-demo.js +433 -0
  215. package/dist/components/ui/touch-friendly-interface-demo.d.ts +512 -0
  216. package/dist/components/ui/touch-friendly-interface-demo.esm.js +481 -0
  217. package/dist/components/ui/touch-friendly-interface-demo.js +481 -0
  218. package/dist/components/ui/touch-friendly-interface.d.ts +292 -0
  219. package/dist/components/ui/touch-friendly-interface.esm.js +272 -0
  220. package/dist/components/ui/touch-friendly-interface.js +272 -0
  221. package/dist/hooks/index.d.ts +161 -0
  222. package/dist/hooks/index.esm.js +190 -0
  223. package/dist/hooks/index.js +190 -0
  224. package/dist/hooks/use-accessibility-support.d.ts +516 -0
  225. package/dist/hooks/use-accessibility-support.esm.js +488 -0
  226. package/dist/hooks/use-accessibility-support.js +488 -0
  227. package/dist/hooks/use-adaptive-layout.d.ts +287 -0
  228. package/dist/hooks/use-adaptive-layout.esm.js +266 -0
  229. package/dist/hooks/use-adaptive-layout.js +266 -0
  230. package/dist/hooks/use-advanced-patterns.d.ts +292 -0
  231. package/dist/hooks/use-advanced-patterns.esm.js +279 -0
  232. package/dist/hooks/use-advanced-patterns.js +279 -0
  233. package/dist/hooks/use-advanced-transition-system.d.ts +390 -0
  234. package/dist/hooks/use-advanced-transition-system.esm.js +352 -0
  235. package/dist/hooks/use-advanced-transition-system.js +352 -0
  236. package/dist/hooks/use-animation-profile.d.ts +285 -0
  237. package/dist/hooks/use-animation-profile.esm.js +259 -0
  238. package/dist/hooks/use-animation-profile.js +259 -0
  239. package/dist/hooks/use-battery-animations.d.ts +382 -0
  240. package/dist/hooks/use-battery-animations.esm.js +359 -0
  241. package/dist/hooks/use-battery-animations.js +359 -0
  242. package/dist/hooks/use-battery-conscious-loading.d.ts +473 -0
  243. package/dist/hooks/use-battery-conscious-loading.esm.js +432 -0
  244. package/dist/hooks/use-battery-conscious-loading.js +432 -0
  245. package/dist/hooks/use-battery-optimization.d.ts +328 -0
  246. package/dist/hooks/use-battery-optimization.esm.js +307 -0
  247. package/dist/hooks/use-battery-optimization.js +307 -0
  248. package/dist/hooks/use-battery-status.d.ts +297 -0
  249. package/dist/hooks/use-battery-status.esm.js +277 -0
  250. package/dist/hooks/use-battery-status.js +277 -0
  251. package/dist/hooks/use-component-performance.d.ts +342 -0
  252. package/dist/hooks/use-component-performance.esm.js +329 -0
  253. package/dist/hooks/use-component-performance.js +329 -0
  254. package/dist/hooks/use-device-loading-states.d.ts +456 -0
  255. package/dist/hooks/use-device-loading-states.esm.js +416 -0
  256. package/dist/hooks/use-device-loading-states.js +416 -0
  257. package/dist/hooks/use-device.d.ts +104 -0
  258. package/dist/hooks/use-device.esm.js +99 -0
  259. package/dist/hooks/use-device.js +99 -0
  260. package/dist/hooks/use-enterprise-mobile-experience.d.ts +486 -0
  261. package/dist/hooks/use-enterprise-mobile-experience.esm.js +439 -0
  262. package/dist/hooks/use-enterprise-mobile-experience.js +439 -0
  263. package/dist/hooks/use-form-feedback.d.ts +401 -0
  264. package/dist/hooks/use-form-feedback.esm.js +360 -0
  265. package/dist/hooks/use-form-feedback.js +360 -0
  266. package/dist/hooks/use-form-performance.d.ts +511 -0
  267. package/dist/hooks/use-form-performance.esm.js +478 -0
  268. package/dist/hooks/use-form-performance.js +478 -0
  269. package/dist/hooks/use-frame-rate.d.ts +249 -0
  270. package/dist/hooks/use-frame-rate.esm.js +232 -0
  271. package/dist/hooks/use-frame-rate.js +232 -0
  272. package/dist/hooks/use-gestures.d.ts +336 -0
  273. package/dist/hooks/use-gestures.esm.js +314 -0
  274. package/dist/hooks/use-gestures.js +314 -0
  275. package/dist/hooks/use-hardware-acceleration.d.ts +339 -0
  276. package/dist/hooks/use-hardware-acceleration.esm.js +313 -0
  277. package/dist/hooks/use-hardware-acceleration.js +313 -0
  278. package/dist/hooks/use-input-accessibility.d.ts +451 -0
  279. package/dist/hooks/use-input-accessibility.esm.js +417 -0
  280. package/dist/hooks/use-input-accessibility.js +417 -0
  281. package/dist/hooks/use-input-performance.d.ts +503 -0
  282. package/dist/hooks/use-input-performance.esm.js +471 -0
  283. package/dist/hooks/use-input-performance.js +471 -0
  284. package/dist/hooks/use-layout-performance.d.ts +317 -0
  285. package/dist/hooks/use-layout-performance.esm.js +298 -0
  286. package/dist/hooks/use-layout-performance.js +298 -0
  287. package/dist/hooks/use-loading-accessibility.d.ts +532 -0
  288. package/dist/hooks/use-loading-accessibility.esm.js +495 -0
  289. package/dist/hooks/use-loading-accessibility.js +495 -0
  290. package/dist/hooks/use-loading-performance.d.ts +471 -0
  291. package/dist/hooks/use-loading-performance.esm.js +449 -0
  292. package/dist/hooks/use-loading-performance.js +449 -0
  293. package/dist/hooks/use-memory-usage.d.ts +285 -0
  294. package/dist/hooks/use-memory-usage.esm.js +268 -0
  295. package/dist/hooks/use-memory-usage.js +268 -0
  296. package/dist/hooks/use-mobile-form-layout.d.ts +462 -0
  297. package/dist/hooks/use-mobile-form-layout.esm.js +427 -0
  298. package/dist/hooks/use-mobile-form-layout.js +427 -0
  299. package/dist/hooks/use-mobile-form-validation.d.ts +516 -0
  300. package/dist/hooks/use-mobile-form-validation.esm.js +451 -0
  301. package/dist/hooks/use-mobile-form-validation.js +451 -0
  302. package/dist/hooks/use-mobile-keyboard-optimization.d.ts +469 -0
  303. package/dist/hooks/use-mobile-keyboard-optimization.esm.js +431 -0
  304. package/dist/hooks/use-mobile-keyboard-optimization.js +431 -0
  305. package/dist/hooks/use-mobile-layout.d.ts +300 -0
  306. package/dist/hooks/use-mobile-layout.esm.js +280 -0
  307. package/dist/hooks/use-mobile-layout.js +280 -0
  308. package/dist/hooks/use-mobile-optimization.d.ts +404 -0
  309. package/dist/hooks/use-mobile-optimization.esm.js +378 -0
  310. package/dist/hooks/use-mobile-optimization.js +378 -0
  311. package/dist/hooks/use-mobile-skeleton.d.ts +399 -0
  312. package/dist/hooks/use-mobile-skeleton.esm.js +369 -0
  313. package/dist/hooks/use-mobile-skeleton.js +369 -0
  314. package/dist/hooks/use-mobile-touch.d.ts +412 -0
  315. package/dist/hooks/use-mobile-touch.esm.js +379 -0
  316. package/dist/hooks/use-mobile-touch.js +379 -0
  317. package/dist/hooks/use-performance-throttling.d.ts +346 -0
  318. package/dist/hooks/use-performance-throttling.esm.js +324 -0
  319. package/dist/hooks/use-performance-throttling.js +324 -0
  320. package/dist/hooks/use-performance.d.ts +314 -0
  321. package/dist/hooks/use-performance.esm.js +278 -0
  322. package/dist/hooks/use-performance.js +278 -0
  323. package/dist/hooks/use-reusable-architecture.d.ts +412 -0
  324. package/dist/hooks/use-reusable-architecture.esm.js +385 -0
  325. package/dist/hooks/use-reusable-architecture.js +385 -0
  326. package/dist/hooks/use-semantic-input-types.d.ts +354 -0
  327. package/dist/hooks/use-semantic-input-types.esm.js +315 -0
  328. package/dist/hooks/use-semantic-input-types.js +315 -0
  329. package/dist/hooks/use-semantic-input.d.ts +563 -0
  330. package/dist/hooks/use-semantic-input.esm.js +513 -0
  331. package/dist/hooks/use-semantic-input.js +513 -0
  332. package/dist/hooks/use-tablet-layout.d.ts +382 -0
  333. package/dist/hooks/use-tablet-layout.esm.js +355 -0
  334. package/dist/hooks/use-tablet-layout.js +355 -0
  335. package/dist/hooks/use-touch-friendly-input.d.ts +520 -0
  336. package/dist/hooks/use-touch-friendly-input.esm.js +480 -0
  337. package/dist/hooks/use-touch-friendly-input.js +480 -0
  338. package/dist/hooks/use-touch-friendly-interface.d.ts +329 -0
  339. package/dist/hooks/use-touch-friendly-interface.esm.js +299 -0
  340. package/dist/hooks/use-touch-friendly-interface.js +299 -0
  341. package/dist/hooks/use-touch-optimization.d.ts +373 -0
  342. package/dist/hooks/use-touch-optimization.esm.js +348 -0
  343. package/dist/hooks/use-touch-optimization.js +348 -0
  344. package/dist/index.esm.js +2 -2
  345. package/dist/index.js +2 -2
  346. package/dist/lib/utils.d.ts +3 -0
  347. package/dist/lib/utils.esm.js +6 -0
  348. package/dist/lib/utils.js +6 -0
  349. package/dist/plugins/theme-css-generator.d.ts +345 -0
  350. package/dist/plugins/theme-css-generator.esm.js +305 -0
  351. package/dist/plugins/theme-css-generator.js +305 -0
  352. package/dist/styles.css +1 -1
  353. package/dist/themes/ThemeContext.d.ts +27 -0
  354. package/dist/themes/ThemeContext.esm.js +31 -0
  355. package/dist/themes/ThemeContext.js +31 -0
  356. package/dist/themes/ThemeProvider.d.ts +222 -0
  357. package/dist/themes/ThemeProvider.esm.js +229 -0
  358. package/dist/themes/ThemeProvider.js +229 -0
  359. package/dist/themes/accessibility/index.d.ts +7 -0
  360. package/dist/themes/accessibility/index.esm.js +27 -0
  361. package/dist/themes/accessibility/index.js +27 -0
  362. package/dist/themes/accessibility.d.ts +259 -0
  363. package/dist/themes/accessibility.esm.js +220 -0
  364. package/dist/themes/accessibility.js +220 -0
  365. package/dist/themes/aria-patterns.d.ts +418 -0
  366. package/dist/themes/aria-patterns.esm.js +384 -0
  367. package/dist/themes/aria-patterns.js +384 -0
  368. package/dist/themes/base-themes.d.ts +34 -0
  369. package/dist/themes/base-themes.esm.js +52 -0
  370. package/dist/themes/base-themes.js +52 -0
  371. package/dist/themes/colorManager.d.ts +327 -0
  372. package/dist/themes/colorManager.esm.js +362 -0
  373. package/dist/themes/colorManager.js +362 -0
  374. package/dist/themes/examples/dark-theme.d.ts +139 -0
  375. package/dist/themes/examples/dark-theme.esm.js +124 -0
  376. package/dist/themes/examples/dark-theme.js +124 -0
  377. package/dist/themes/examples/minimal-theme.d.ts +93 -0
  378. package/dist/themes/examples/minimal-theme.esm.js +86 -0
  379. package/dist/themes/examples/minimal-theme.js +86 -0
  380. package/dist/themes/focus-management.d.ts +699 -0
  381. package/dist/themes/focus-management.esm.js +642 -0
  382. package/dist/themes/focus-management.js +642 -0
  383. package/dist/themes/fontLoader.d.ts +163 -0
  384. package/dist/themes/fontLoader.esm.js +192 -0
  385. package/dist/themes/fontLoader.js +192 -0
  386. package/dist/themes/high-contrast.d.ts +619 -0
  387. package/dist/themes/high-contrast.esm.js +573 -0
  388. package/dist/themes/high-contrast.js +573 -0
  389. package/dist/themes/index.d.ts +11 -0
  390. package/dist/themes/index.esm.js +19 -0
  391. package/dist/themes/index.js +19 -0
  392. package/dist/themes/inheritance.d.ts +160 -0
  393. package/dist/themes/inheritance.esm.js +219 -0
  394. package/dist/themes/inheritance.js +219 -0
  395. package/dist/themes/keyboard-navigation.d.ts +550 -0
  396. package/dist/themes/keyboard-navigation.esm.js +521 -0
  397. package/dist/themes/keyboard-navigation.js +521 -0
  398. package/dist/themes/motion-reduction.d.ts +660 -0
  399. package/dist/themes/motion-reduction.esm.js +602 -0
  400. package/dist/themes/motion-reduction.js +602 -0
  401. package/dist/themes/navigation.d.ts +232 -0
  402. package/dist/themes/navigation.esm.js +238 -0
  403. package/dist/themes/navigation.js +238 -0
  404. package/dist/themes/screen-reader.d.ts +645 -0
  405. package/dist/themes/screen-reader.esm.js +580 -0
  406. package/dist/themes/screen-reader.js +580 -0
  407. package/dist/themes/systemThemeDetector.d.ts +148 -0
  408. package/dist/themes/systemThemeDetector.esm.js +174 -0
  409. package/dist/themes/systemThemeDetector.js +174 -0
  410. package/dist/themes/themeCSSUpdater.d.ts +229 -0
  411. package/dist/themes/themeCSSUpdater.esm.js +250 -0
  412. package/dist/themes/themeCSSUpdater.js +250 -0
  413. package/dist/themes/themePersistence.d.ts +192 -0
  414. package/dist/themes/themePersistence.esm.js +217 -0
  415. package/dist/themes/themePersistence.js +217 -0
  416. package/dist/themes/themes/stan-design.d.ts +678 -0
  417. package/dist/themes/themes/stan-design.esm.js +518 -0
  418. package/dist/themes/themes/stan-design.js +518 -0
  419. package/dist/themes/types.d.ts +454 -0
  420. package/dist/themes/types.esm.js +446 -0
  421. package/dist/themes/types.js +446 -0
  422. package/dist/themes/useSystemTheme.d.ts +43 -0
  423. package/dist/themes/useSystemTheme.esm.js +48 -0
  424. package/dist/themes/useSystemTheme.js +48 -0
  425. package/dist/themes/useTheme.d.ts +20 -0
  426. package/dist/themes/useTheme.esm.js +87 -0
  427. package/dist/themes/useTheme.js +87 -0
  428. package/dist/themes/validation.d.ts +406 -0
  429. package/dist/themes/validation.esm.js +411 -0
  430. package/dist/themes/validation.js +411 -0
  431. package/dist/tokens/index.d.ts +25 -0
  432. package/dist/tokens/index.esm.js +23 -0
  433. package/dist/tokens/index.js +23 -0
  434. package/dist/tokens/tokenExporter.d.ts +336 -0
  435. package/dist/tokens/tokenExporter.esm.js +371 -0
  436. package/dist/tokens/tokenExporter.js +371 -0
  437. package/dist/tokens/tokenGenerator.d.ts +250 -0
  438. package/dist/tokens/tokenGenerator.esm.js +267 -0
  439. package/dist/tokens/tokenGenerator.js +267 -0
  440. package/dist/tokens/tokenManager.d.ts +194 -0
  441. package/dist/tokens/tokenManager.esm.js +235 -0
  442. package/dist/tokens/tokenManager.js +235 -0
  443. package/dist/tokens/tokenValidator.d.ts +488 -0
  444. package/dist/tokens/tokenValidator.esm.js +497 -0
  445. package/dist/tokens/tokenValidator.js +497 -0
  446. package/dist/tokens/types.d.ts +78 -0
  447. package/dist/tokens/types.esm.js +64 -0
  448. package/dist/tokens/types.js +64 -0
  449. package/dist/utils/bundle-analyzer.d.ts +260 -0
  450. package/dist/utils/bundle-analyzer.esm.js +242 -0
  451. package/dist/utils/bundle-analyzer.js +242 -0
  452. package/dist/utils/bundle-splitting.d.ts +483 -0
  453. package/dist/utils/bundle-splitting.esm.js +458 -0
  454. package/dist/utils/bundle-splitting.js +458 -0
  455. package/dist/utils/lazy-loading.d.ts +437 -0
  456. package/dist/utils/lazy-loading.esm.js +415 -0
  457. package/dist/utils/lazy-loading.js +415 -0
  458. package/dist/utils/performance-monitor.d.ts +513 -0
  459. package/dist/utils/performance-monitor.esm.js +472 -0
  460. package/dist/utils/performance-monitor.js +472 -0
  461. package/dist/utils/tree-shaking.d.ts +274 -0
  462. package/dist/utils/tree-shaking.esm.js +266 -0
  463. package/dist/utils/tree-shaking.js +266 -0
  464. package/package.json +1 -1
  465. package/src/index.ts +2 -2
  466. package/src/themes/accessibility/index.ts +1 -1
  467. package/src/themes/focus-management.ts +3 -3
  468. package/src/themes/keyboard-navigation.ts +3 -3
@@ -0,0 +1,299 @@
1
+ import { useState, useCallback, useRef, useEffect } from 'react'
2
+
3
+ export interface TouchTargetConfig {
4
+ minSize?}
5
+
6
+ export interface TouchTargetState {
7
+ size}
8
+
9
+ export interface TouchInteractionState {
10
+ isTouching}
11
+
12
+ export interface TouchFriendlyInterfaceCallbacks {
13
+ onTouchTargetOptimized?) => void
14
+ onTouchInteractionDetected?) => void
15
+ onPerformanceOptimized?) => void
16
+ onAccessibilityEnhanced?) => void
17
+ }
18
+
19
+ export const useTouchFriendlyInterface = (
20
+ config= {},
21
+ callbacks= {}
22
+ ) => {
23
+ const {
24
+ minSize = 44,
25
+ spacing = 'default',
26
+ feedback = 'scale',
27
+ performance= true,
28
+ accessibility = true
29
+ } = config
30
+
31
+ const [touchTargetState, setTouchTargetState] = useState<TouchTargetState>({
32
+ size,
33
+ spacing,
34
+ feedback,
35
+ isOptimized,
36
+ isAccessible,
37
+ performanceScore})
38
+
39
+ 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})
52
+
53
+ const [isOptimizing, setIsOptimizing] = useState(false)
54
+ const [optimizations, setOptimizations] = useState<string[]>([])
55
+
56
+ const touchStartTimeRef = useRef(0)
57
+ const lastTouchTimeRef = useRef(0)
58
+ const touchCountRef = useRef(0)
59
+ const performanceTimerRef = useRef<number | null>(null)
60
+
61
+ // Optimize touch targets for 44px compliance
62
+ const optimizeTouchTargets = useCallback(() => {
63
+ setIsOptimizing(true)
64
+
65
+ setTimeout(() => {
66
+ const newOptimizations] = []
67
+
68
+ // Check and optimize touch target size
69
+ if (touchTargetState.size < 44) {
70
+ setTouchTargetState(prev => ({
71
+ ...prev,
72
+ size,
73
+ isOptimized}))
74
+ newOptimizations.push('Touch target size optimized to 44px minimum')
75
+ }
76
+
77
+ // Optimize spacing based on device
78
+ const deviceSpacing = window.innerWidth <= 768 ? 'generous' == deviceSpacing) {
79
+ setTouchTargetState(prev => ({
80
+ ...prev,
81
+ spacing}))
82
+ newOptimizations.push(`Touch spacing optimized for ${deviceSpacing} layout`)
83
+ }
84
+
85
+ // Performance optimization
86
+ if (enablePerformance) {
87
+ setTouchTargetState(prev => ({
88
+ ...prev,
89
+ performanceScore}))
90
+ newOptimizations.push('Touch performance optimized with hardware acceleration')
91
+ }
92
+
93
+ // Accessibility optimization
94
+ if (accessibility) {
95
+ setTouchTargetState(prev => ({
96
+ ...prev,
97
+ isAccessible}))
98
+ newOptimizations.push('Touch accessibility enhanced with ARIA support')
99
+ }
100
+
101
+ setOptimizations(prev => [...prev, ...newOptimizations])
102
+ setIsOptimizing(false)
103
+
104
+ newOptimizations.forEach(() => {
105
+ callbacks.onTouchTargetOptimized?.(config)
106
+ })
107
+ }, 200)
108
+ }, [touchTargetState.size, touchTargetState.spacing, performance, accessibility, config, callbacks])
109
+
110
+ // Handle touch start events
111
+ const handleTouchStart = useCallback((event) => {
112
+ const touch = event.touches[0]
113
+ const currentTime = performance.now()
114
+
115
+ setTouchInteractionState(prev => ({
116
+ ...prev,
117
+ isTouching,
118
+ touchCount,
119
+ touchStartTime,
120
+ touchStartX,
121
+ touchStartY,
122
+ touchCurrentX,
123
+ touchCurrentY,
124
+ touchDeltaX,
125
+ touchDeltaY}))
126
+
127
+ touchStartTimeRef.current = currentTime
128
+ touchCountRef.current = event.touches.length
129
+ }, [])
130
+
131
+ // Handle touch move events
132
+ const handleTouchMove = useCallback((event) => {
133
+ const touch = event.touches[0]
134
+ const currentTime = performance.now()
135
+ const deltaX = touch.clientX - touchInteractionState.touchStartX
136
+ const deltaY = touch.clientY - touchInteractionState.touchStartY
137
+ const duration = currentTime - touchInteractionState.touchStartTime
138
+ const velocity = Math.sqrt(deltaX * deltaX + deltaY * deltaY) / duration
139
+
140
+ setTouchInteractionState(prev => ({
141
+ ...prev,
142
+ touchCurrentX,
143
+ touchCurrentY,
144
+ touchDeltaX,
145
+ touchDeltaY,
146
+ touchDuration,
147
+ touchVelocity}))
148
+ }, [touchInteractionState.touchStartX, touchInteractionState.touchStartY])
149
+
150
+ // Handle touch end events
151
+ const handleTouchEnd = useCallback(() => {
152
+ const currentTime = performance.now()
153
+ const duration = currentTime - touchInteractionState.touchStartTime
154
+ const distance = Math.sqrt(
155
+ touchInteractionState.touchDeltaX * touchInteractionState.touchDeltaX +
156
+ touchInteractionState.touchDeltaY * touchInteractionState.touchDeltaY
157
+ )
158
+
159
+ // Detect gesture type
160
+ let gestureType] = 'none'
161
+
162
+ if (duration < 200 && distance < 10) {
163
+ // Tap detection
164
+ const timeSinceLastTouch = currentTime - lastTouchTimeRef.current
165
+ if (timeSinceLastTouch < 300) {
166
+ gestureType = 'double-tap'
167
+ touchCountRef.current++
168
+ } else {
169
+ gestureType = 'tap'
170
+ touchCountRef.current = 1
171
+ }
172
+ } else if (duration > 500 && distance < 10) {
173
+ gestureType = 'long-press'
174
+ } else if (distance > 50) {
175
+ gestureType = 'swipe'
176
+ }
177
+
178
+ setTouchInteractionState(prev => ({
179
+ ...prev,
180
+ isTouching,
181
+ gestureType
182
+ }))
183
+
184
+ lastTouchTimeRef.current = currentTime
185
+
186
+ // Trigger callback
187
+ callbacks.onTouchInteractionDetected?.({
188
+ ...touchInteractionState,
189
+ isTouching,
190
+ gestureType
191
+ })
192
+ }, [touchInteractionState, callbacks])
193
+
194
+ // Performance monitoring
195
+ const startPerformanceMonitoring = useCallback(() => {
196
+ if (!enablePerformance) return () => {}
197
+
198
+ const measurePerformance = () => {
199
+ const frameRate = 60 // Simplified for demo
200
+ const memoryUsage = 0 // Simplified for demo
201
+
202
+ const score = Math.max(0, 100 - Math.abs(frameRate - 60) - memoryUsage)
203
+
204
+ setTouchTargetState(prev => ({
205
+ ...prev,
206
+ performanceScore)
207
+ }))
208
+
209
+ callbacks.onPerformanceOptimized?.(score)
210
+
211
+ performanceTimerRef.current = requestAnimationFrame(measurePerformance)
212
+ }
213
+
214
+ performanceTimerRef.current = requestAnimationFrame(measurePerformance)
215
+
216
+ return () => {
217
+ if (performanceTimerRef.current) {
218
+ cancelAnimationFrame(performanceTimerRef.current)
219
+ }
220
+ }
221
+ }, [performance, callbacks])
222
+
223
+ // Accessibility enhancement
224
+ const enhanceAccessibility = useCallback(() => {
225
+ if (!accessibility) return
226
+
227
+ const enhancements = [
228
+ 'ARIA labels for touch targets',
229
+ 'Focus management for touch interactions',
230
+ 'Screen reader support for touch gestures',
231
+ 'Keyboard navigation for touch elements'
232
+ ]
233
+
234
+ enhancements.forEach(enhancement => {
235
+ callbacks.onAccessibilityEnhanced?.(enhancement)
236
+ })
237
+ }, [accessibility, callbacks])
238
+
239
+ // Initialize touch event listeners
240
+ useEffect(() => {
241
+ document.addEventListener('touchstart', handleTouchStart, { passive})
242
+ document.addEventListener('touchmove', handleTouchMove, { passive})
243
+ document.addEventListener('touchend', handleTouchEnd, { passive})
244
+
245
+ return () => {
246
+ document.removeEventListener('touchstart', handleTouchStart)
247
+ document.removeEventListener('touchmove', handleTouchMove)
248
+ document.removeEventListener('touchend', handleTouchEnd)
249
+ }
250
+ }, [handleTouchStart, handleTouchMove, handleTouchEnd])
251
+
252
+ // Start performance monitoring
253
+ useEffect(() => {
254
+ const stopPerformanceMonitoring = startPerformanceMonitoring()
255
+ return stopPerformanceMonitoring
256
+ }, [startPerformanceMonitoring])
257
+
258
+ // Auto-optimize on mount
259
+ useEffect(() => {
260
+ optimizeTouchTargets()
261
+ enhanceAccessibility()
262
+ }, [optimizeTouchTargets, enhanceAccessibility])
263
+
264
+ // Cleanup on unmount
265
+ useEffect(() => {
266
+ return () => {
267
+ if (performanceTimerRef.current) {
268
+ cancelAnimationFrame(performanceTimerRef.current)
269
+ }
270
+ }
271
+ }, [])
272
+
273
+ return {
274
+ // State
275
+ touchTargetState,
276
+ touchInteractionState,
277
+ isOptimizing,
278
+ optimizations,
279
+
280
+ // Functions
281
+ optimizeTouchTargets,
282
+ enhanceAccessibility,
283
+ startPerformanceMonitoring,
284
+
285
+ // 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([])
296
+ }
297
+ }
298
+
299
+ export default useTouchFriendlyInterface
@@ -0,0 +1,373 @@
1
+ export interface TouchOptimizationConfig {
2
+ enablePassiveListeners: boolean
3
+ enableTouchActionOptimization: boolean
4
+ enableBatteryOptimization: boolean
5
+ enablePerformanceMonitoring: boolean
6
+ touchActionMode: 'auto' | 'manipulation' | 'pan-x' | 'pan-y' | 'none'
7
+ maxTouchPoints: number
8
+ touchEventThrottling: number
9
+ }
10
+
11
+ export interface TouchPerformanceMetrics {
12
+ touchEventCount: number
13
+ averageTouchDuration: number
14
+ touchEventLatency: number
15
+ batteryImpact: 'low' | 'medium' | 'high'
16
+ performanceScore: 'excellent' | 'good' | 'fair' | 'poor'
17
+ }
18
+
19
+ export interface TouchOptimizationCallbacks {
20
+ onTouchPerformanceWarning?: (metrics: TouchPerformanceMetrics) => void
21
+ onBatteryOptimization?: (enabled: boolean) => void
22
+ onTouchEventThrottling?: (enabled: boolean) => void
23
+ }
24
+
25
+ export interface TouchOptimizationState {
26
+ isOptimized: boolean
27
+ currentTouchAction: string
28
+ passiveListenersEnabled: boolean
29
+ batteryOptimizationEnabled: boolean
30
+ throttlingEnabled: boolean
31
+ lastOptimization: Date | null
32
+ }
33
+
34
+ export declare const useTouchOptimization: (
35
+ elementRef: React.RefObject<HTMLElement>,
36
+ callbacks: TouchOptimizationCallbacks = {},
37
+ config: Partial<TouchOptimizationConfig> = {}
38
+ ) => {
39
+ const defaultConfig: TouchOptimizationConfig = {
40
+ enablePassiveListeners: true,
41
+ enableTouchActionOptimization: true,
42
+ enableBatteryOptimization: true,
43
+ enablePerformanceMonitoring: true,
44
+ touchActionMode: 'manipulation',
45
+ maxTouchPoints: 5,
46
+ touchEventThrottling: 16, // ~60fps
47
+ ...config
48
+ }
49
+
50
+ const [optimizationState, setOptimizationState] = useState<TouchOptimizationState>({
51
+ isOptimized: false,
52
+ currentTouchAction: defaultConfig.touchActionMode,
53
+ passiveListenersEnabled: false,
54
+ batteryOptimizationEnabled: false,
55
+ throttlingEnabled: false,
56
+ lastOptimization: null
57
+ })
58
+
59
+ const [performanceMetrics, setPerformanceMetrics] = useState<TouchPerformanceMetrics>({
60
+ touchEventCount: 0,
61
+ averageTouchDuration: 0,
62
+ touchEventLatency: 0,
63
+ batteryImpact: 'low',
64
+ performanceScore: 'excellent'
65
+ })
66
+
67
+ const touchEventTimesRef = useRef<number[]>([])
68
+ const lastTouchEventRef = useRef<number>(0)
69
+ const touchEventThrottleTimerRef = useRef<NodeJS.Timeout | null>(null)
70
+ const batteryLevelRef = useRef<number | null>(null)
71
+ const isLowPowerModeRef = useRef<boolean>(false)
72
+
73
+ // Check battery status for optimization
74
+ useEffect(() => {
75
+ const checkBatteryStatus = async () => {
76
+ if ('getBattery' in navigator) {
77
+ try {
78
+ const battery = await (navigator as any).getBattery()
79
+ batteryLevelRef.current = battery.level
80
+ isLowPowerModeRef.current = battery.level < 0.2
81
+
82
+ if (defaultConfig.enableBatteryOptimization && isLowPowerModeRef.current) {
83
+ setOptimizationState(prev => ({ ...prev, batteryOptimizationEnabled: true }))
84
+ callbacks.onBatteryOptimization?.(true)
85
+ }
86
+ } catch (error) {
87
+ console.warn('Battery API not supported:', error)
88
+ }
89
+ }
90
+ }
91
+
92
+ checkBatteryStatus()
93
+ }, [defaultConfig.enableBatteryOptimization, callbacks])
94
+
95
+ // Calculate performance score
96
+ const calculatePerformanceScore = useCallback((metrics: TouchPerformanceMetrics): 'excellent' | 'good' | 'fair' | 'poor' => {
97
+ if (metrics.touchEventLatency < 16 && metrics.averageTouchDuration < 50) return 'excellent'
98
+ if (metrics.touchEventLatency < 32 && metrics.averageTouchDuration < 100) return 'good'
99
+ if (metrics.touchEventLatency < 64 && metrics.averageTouchDuration < 200) return 'fair'
100
+ return 'poor'
101
+ }, [])
102
+
103
+ // Update performance metrics
104
+ const updatePerformanceMetrics = useCallback((touchDuration: number, latency: number) => {
105
+ const currentTime = Date.now()
106
+ touchEventTimesRef.current.push(currentTime)
107
+
108
+ // Keep only last 100 touch events for averaging
109
+ if (touchEventTimesRef.current.length > 100) {
110
+ touchEventTimesRef.current.shift()
111
+ }
112
+
113
+ setPerformanceMetrics(prev => {
114
+ const newCount = prev.touchEventCount + 1
115
+ const newAverageDuration = (prev.averageTouchDuration * prev.touchEventCount + touchDuration) / newCount
116
+ const newAverageLatency = (prev.touchEventLatency * prev.touchEventCount + latency) / newCount
117
+
118
+ const batteryImpact: 'low' | 'medium' | 'high' = isLowPowerModeRef.current ? 'high' : batteryLevelRef.current && batteryLevelRef.current < 0.5 ? 'medium' : 'low'
119
+
120
+ const newMetrics: TouchPerformanceMetrics = {
121
+ touchEventCount: newCount,
122
+ averageTouchDuration: newAverageDuration,
123
+ touchEventLatency: newAverageLatency,
124
+ batteryImpact,
125
+ performanceScore: 'excellent'
126
+ }
127
+
128
+ newMetrics.performanceScore = calculatePerformanceScore(newMetrics)
129
+
130
+ // Check for performance warnings
131
+ if (newMetrics.performanceScore === 'poor' || newMetrics.touchEventLatency > 100) {
132
+ callbacks.onTouchPerformanceWarning?.(newMetrics)
133
+ }
134
+
135
+ return newMetrics
136
+ })
137
+ }, [callbacks, calculatePerformanceScore])
138
+
139
+ // Optimize touch action CSS
140
+ const optimizeTouchAction = useCallback(() => {
141
+ const element = elementRef.current
142
+ if (!element || !defaultConfig.enableTouchActionOptimization) return
143
+
144
+ const currentTouchAction = getComputedStyle(element).touchAction
145
+
146
+ if (currentTouchAction !== defaultConfig.touchActionMode) {
147
+ element.style.touchAction = defaultConfig.touchActionMode
148
+ setOptimizationState(prev => ({
149
+ ...prev,
150
+ currentTouchAction: defaultConfig.touchActionMode,
151
+ lastOptimization: new Date()
152
+ }))
153
+ }
154
+ }, [elementRef, defaultConfig.enableTouchActionOptimization, defaultConfig.touchActionMode])
155
+
156
+ // Enable passive listeners for better performance
157
+ const enablePassiveListeners = useCallback(() => {
158
+ const element = elementRef.current
159
+ if (!element || !defaultConfig.enablePassiveListeners) return
160
+
161
+ // Check if passive listeners are supported
162
+ let supportsPassive = false
163
+ try {
164
+ const opts = Object.defineProperty({}, 'passive', {
165
+ get: () => { supportsPassive = true; return true; }
166
+ })
167
+ // Use a dummy event listener to test passive support
168
+ const testListener = () => {}
169
+ window.addEventListener('test', testListener, opts)
170
+ window.removeEventListener('test', testListener, opts)
171
+ } catch (e) {
172
+ // Passive listeners not supported
173
+ }
174
+
175
+ if (supportsPassive) {
176
+ setOptimizationState(prev => ({ ...prev, passiveListenersEnabled: true }))
177
+ }
178
+ }, [elementRef, defaultConfig.enablePassiveListeners])
179
+
180
+ // Touch event throttling for performance
181
+ const enableTouchEventThrottling = useCallback(() => {
182
+ if (!defaultConfig.enablePerformanceMonitoring) return
183
+
184
+ setOptimizationState(prev => ({ ...prev, throttlingEnabled: true }))
185
+ callbacks.onTouchEventThrottling?.(true)
186
+ }, [defaultConfig.enablePerformanceMonitoring, callbacks])
187
+
188
+ // Optimize touch event handling
189
+ const optimizeTouchEventHandling = useCallback((event: TouchEvent) => {
190
+ const currentTime = Date.now()
191
+ const touchDuration = currentTime - lastTouchEventRef.current
192
+ const latency = performance.now() - event.timeStamp
193
+
194
+ // Update performance metrics
195
+ updatePerformanceMetrics(touchDuration, latency)
196
+
197
+ // Apply throttling if enabled
198
+ if (optimizationState.throttlingEnabled && touchEventThrottleTimerRef.current) {
199
+ return // Skip this event due to throttling
200
+ }
201
+
202
+ // Set up throttling for next event
203
+ if (optimizationState.throttlingEnabled) {
204
+ touchEventThrottleTimerRef.current = setTimeout(() => {
205
+ touchEventThrottleTimerRef.current = null
206
+ }, defaultConfig.touchEventThrottling)
207
+ }
208
+
209
+ lastTouchEventRef.current = currentTime
210
+ }, [optimizationState.throttlingEnabled, updatePerformanceMetrics, defaultConfig.touchEventThrottling])
211
+
212
+ // Apply all optimizations
213
+ const applyOptimizations = useCallback(() => {
214
+ optimizeTouchAction()
215
+ enablePassiveListeners()
216
+
217
+ if (defaultConfig.enableBatteryOptimization && isLowPowerModeRef.current) {
218
+ enableTouchEventThrottling()
219
+ }
220
+
221
+ setOptimizationState(prev => ({
222
+ ...prev,
223
+ isOptimized: true,
224
+ lastOptimization: new Date()
225
+ }))
226
+ }, [
227
+ optimizeTouchAction,
228
+ enablePassiveListeners,
229
+ enableTouchEventThrottling,
230
+ defaultConfig.enableBatteryOptimization
231
+ ])
232
+
233
+ // Reset optimizations
234
+ const resetOptimizations = useCallback(() => {
235
+ const element = elementRef.current
236
+ if (element) {
237
+ element.style.touchAction = 'auto'
238
+ }
239
+
240
+ setOptimizationState({
241
+ isOptimized: false,
242
+ currentTouchAction: 'auto',
243
+ passiveListenersEnabled: false,
244
+ batteryOptimizationEnabled: false,
245
+ throttlingEnabled: false,
246
+ lastOptimization: null
247
+ })
248
+
249
+ setPerformanceMetrics({
250
+ touchEventCount: 0,
251
+ averageTouchDuration: 0,
252
+ touchEventLatency: 0,
253
+ batteryImpact: 'low',
254
+ performanceScore: 'excellent'
255
+ })
256
+
257
+ if (touchEventThrottleTimerRef.current) {
258
+ clearTimeout(touchEventThrottleTimerRef.current)
259
+ touchEventThrottleTimerRef.current = null
260
+ }
261
+ }, [elementRef])
262
+
263
+ // Set up touch event listeners with optimization
264
+ useEffect(() => {
265
+ const element = elementRef.current
266
+ if (!element) return
267
+
268
+ // Apply initial optimizations
269
+ applyOptimizations()
270
+
271
+ // Add touch event listener
272
+ const handleTouchEvent = (event: TouchEvent) => {
273
+ if (defaultConfig.enablePerformanceMonitoring) {
274
+ optimizeTouchEventHandling(event)
275
+ }
276
+ }
277
+
278
+ const eventOptions = optimizationState.passiveListenersEnabled ? { passive: true } : {}
279
+ element.addEventListener('touchstart', handleTouchEvent, eventOptions)
280
+ element.addEventListener('touchmove', handleTouchEvent, eventOptions)
281
+ element.addEventListener('touchend', handleTouchEvent, eventOptions)
282
+
283
+ return () => {
284
+ element.removeEventListener('touchstart', handleTouchEvent)
285
+ element.removeEventListener('touchmove', handleTouchEvent)
286
+ element.removeEventListener('touchend', handleTouchEvent)
287
+
288
+ if (touchEventThrottleTimerRef.current) {
289
+ clearTimeout(touchEventThrottleTimerRef.current)
290
+ }
291
+ }
292
+ }, [
293
+ elementRef,
294
+ applyOptimizations,
295
+ optimizationState.passiveListenersEnabled,
296
+ defaultConfig.enablePerformanceMonitoring,
297
+ optimizeTouchEventHandling
298
+ ])
299
+
300
+ // Monitor battery changes
301
+ useEffect(() => {
302
+ const handleBatteryChange = () => {
303
+ if (defaultConfig.enableBatteryOptimization) {
304
+ applyOptimizations()
305
+ }
306
+ }
307
+
308
+ if ('getBattery' in navigator) {
309
+ // Battery change events are not widely supported, so we'll check periodically
310
+ const batteryCheckInterval = setInterval(handleBatteryChange, 30000) // Check every 30 seconds
311
+
312
+ return () => clearInterval(batteryCheckInterval)
313
+ }
314
+ }, [defaultConfig.enableBatteryOptimization, applyOptimizations])
315
+
316
+ // Utility functions
317
+ const getOptimizationReport = useCallback(() => {
318
+ return {
319
+ state: optimizationState,
320
+ metrics: performanceMetrics,
321
+ recommendations: getOptimizationRecommendations()
322
+ }
323
+ }, [optimizationState, performanceMetrics])
324
+
325
+ const getOptimizationRecommendations = useCallback(() => {
326
+ const recommendations: string[] = []
327
+
328
+ if (performanceMetrics.performanceScore === 'poor') {
329
+ recommendations.push('Consider enabling touch event throttling')
330
+ recommendations.push('Reduce touch event complexity')
331
+ }
332
+
333
+ if (performanceMetrics.batteryImpact === 'high') {
334
+ recommendations.push('Enable battery optimization mode')
335
+ recommendations.push('Reduce touch event frequency')
336
+ }
337
+
338
+ if (!optimizationState.passiveListenersEnabled) {
339
+ recommendations.push('Enable passive event listeners for better performance')
340
+ }
341
+
342
+ return recommendations
343
+ }, [performanceMetrics, optimizationState])
344
+
345
+ return {
346
+ optimizationState,
347
+ performanceMetrics,
348
+ applyOptimizations,
349
+ resetOptimizations,
350
+ getOptimizationReport,
351
+ getOptimizationRecommendations
352
+ }
353
+ }
354
+
355
+ // Convenience hook for basic touch optimization
356
+ export declare const useBasicTouchOptimization: (elementRef: React.RefObject<HTMLElement>) => {
357
+ return useTouchOptimization(elementRef, {}, {
358
+ enablePassiveListeners: true,
359
+ enableTouchActionOptimization: true,
360
+ enableBatteryOptimization: false,
361
+ enablePerformanceMonitoring: false
362
+ })
363
+ }
364
+
365
+ // Convenience hook for battery-aware touch optimization
366
+ export declare const useBatteryAwareTouchOptimization: (elementRef: React.RefObject<HTMLElement>) => {
367
+ return useTouchOptimization(elementRef, {}, {
368
+ enablePassiveListeners: true,
369
+ enableTouchActionOptimization: true,
370
+ enableBatteryOptimization: true,
371
+ enablePerformanceMonitoring: true
372
+ })
373
+ }