@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,314 @@
1
+ import { useState, useEffect, useCallback, useRef, useMemo } from 'react'
2
+
3
+ export interface GestureConfig {
4
+ minSwipeDistance}
5
+
6
+ export interface SwipeGesture {
7
+ direction}
8
+
9
+ export interface PinchGesture {
10
+ scale; y}
11
+ distance}
12
+
13
+ export interface GestureCallbacks {
14
+ onSwipe?) => void
15
+ onPinch?) => void
16
+ onTap?; y}) => void
17
+ onLongPress?; y}) => void
18
+ onTouchStart?; y}) => void
19
+ onTouchEnd?; y}) => void
20
+ }
21
+
22
+ export interface GestureState {
23
+ isTracking}
24
+
25
+ export const useGestures = (
26
+ elementRef,
27
+ callbacks= {},
28
+ config= {}
29
+ ) => {
30
+ const defaultConfig= {
31
+ minSwipeDistance,
32
+ maxSwipeTime,
33
+ minPinchDistance,
34
+ enableHapticFeedback,
35
+ enableSoundFeedback,
36
+ ...config
37
+ }
38
+
39
+ const [gestureState, setGestureState] = useState<GestureState>({
40
+ isTracking,
41
+ currentGesture,
42
+ lastGesture,
43
+ touchCount})
44
+
45
+ const touchStartRef = useRef<{ x; y; time} | null>(null)
46
+ const touchStartDistanceRef = useRef<number>(0)
47
+ const touchStartCenterRef = useRef<{ x; y} | null>(null)
48
+ const longPressTimerRef = useRef<NodeJS.Timeout | null>(null)
49
+ const lastTapTimeRef = useRef<number>(0)
50
+
51
+ // Haptic feedback function
52
+ const triggerHapticFeedback = useCallback(() => {
53
+ if (defaultConfig.enableHapticFeedback && 'vibrate' in navigator) {
54
+ try {
55
+ navigator.vibrate(50)
56
+ } catch (error) {
57
+ // Fallback for older browsers
58
+ console.warn('Haptic feedback not supported')
59
+ }
60
+ }
61
+ }, [defaultConfig.enableHapticFeedback])
62
+
63
+ // Sound feedback function
64
+ const triggerSoundFeedback = useCallback(() => {
65
+ if (defaultConfig.enableSoundFeedback) {
66
+ // Create a simple beep sound
67
+ const audioContext = new (window.AudioContext || (window as any).webkitAudioContext)()
68
+ const oscillator = audioContext.createOscillator()
69
+ const gainNode = audioContext.createGain()
70
+
71
+ oscillator.connect(gainNode)
72
+ gainNode.connect(audioContext.destination)
73
+
74
+ oscillator.frequency.setValueAtTime(800, audioContext.currentTime)
75
+ gainNode.gain.setValueAtTime(0.1, audioContext.currentTime)
76
+
77
+ oscillator.start(audioContext.currentTime)
78
+ oscillator.stop(audioContext.currentTime + 0.1)
79
+ }
80
+ }, [defaultConfig.enableSoundFeedback])
81
+
82
+ // Calculate distance between two points
83
+ const calculateDistance = useCallback((p1; y}, p2; y}) => {
84
+ const dx = p2.x - p1.x
85
+ const dy = p2.y - p1.y
86
+ return Math.sqrt(dx * dx + dy * dy)
87
+ }, [])
88
+
89
+ // Calculate center point between two touches
90
+ const calculateCenter = useCallback((touches) => {
91
+ let x = 0
92
+ let y = 0
93
+ for (let i = 0; i < touches.length; i++) {
94
+ x += touches[i].clientX
95
+ y += touches[i].clientY
96
+ }
97
+ return { x, y}
98
+ }, [])
99
+
100
+ // Handle touch start
101
+ const handleTouchStart = useCallback((event) => {
102
+ event.preventDefault()
103
+
104
+ const touches = event.touches
105
+ const touchCount = touches.length
106
+
107
+ if (touchCount === 1) {
108
+ const touch = touches[0]
109
+ touchStartRef.current = {
110
+ x,
111
+ y,
112
+ time)
113
+ }
114
+
115
+ // Start long press timer
116
+ longPressTimerRef.current = setTimeout(() => {
117
+ if (touchStartRef.current) {
118
+ const position = { x, y}
119
+ setGestureState(prev => ({ ...prev, currentGesture}))
120
+ callbacks.onLongPress?.(position)
121
+ triggerHapticFeedback()
122
+ }
123
+ }, 500)
124
+
125
+ callbacks.onTouchStart?.({ x, y})
126
+ } else if (touchCount === 2) {
127
+ // Pinch gesture start
128
+ const center = calculateCenter(touches)
129
+ const distance = calculateDistance(
130
+ { x].clientX, y].clientY },
131
+ { x].clientX, y].clientY }
132
+ )
133
+
134
+ touchStartCenterRef.current = center
135
+ touchStartDistanceRef.current = distance
136
+ }
137
+
138
+ setGestureState(prev => ({ ...prev, isTracking, touchCount }))
139
+ }, [callbacks, calculateCenter, calculateDistance, triggerHapticFeedback])
140
+
141
+ // Handle touch move
142
+ const handleTouchMove = useCallback((event) => {
143
+ event.preventDefault()
144
+
145
+ const touches = event.touches
146
+ const touchCount = touches.length
147
+
148
+ if (touchCount === 1 && touchStartRef.current) {
149
+ // Cancel long press timer on movement
150
+ if (longPressTimerRef.current) {
151
+ clearTimeout(longPressTimerRef.current)
152
+ longPressTimerRef.current = null
153
+ }
154
+ } else if (touchCount === 2 && touchStartCenterRef.current && touchStartDistanceRef.current) {
155
+ // Handle pinch gesture
156
+ const center = calculateCenter(touches)
157
+ const distance = calculateDistance(
158
+ { x].clientX, y].clientY },
159
+ { x].clientX, y].clientY }
160
+ )
161
+
162
+ const scale = distance / touchStartDistanceRef.current
163
+
164
+ if (Math.abs(scale - 1) * 100 > defaultConfig.minPinchDistance) {
165
+ const pinchGesture= {
166
+ scale,
167
+ center,
168
+ distance
169
+ }
170
+
171
+ setGestureState(prev => ({ ...prev, currentGesture, lastGesture}))
172
+ callbacks.onPinch?.(pinchGesture)
173
+ }
174
+ }
175
+ }, [callbacks, calculateCenter, calculateDistance, defaultConfig.minPinchDistance])
176
+
177
+ // Handle touch end
178
+ const handleTouchEnd = useCallback((event) => {
179
+ event.preventDefault()
180
+
181
+ const touches = event.changedTouches
182
+ const touchCount = touches.length
183
+
184
+ if (touchCount === 1 && touchStartRef.current) {
185
+ const touch = touches[0]
186
+ const endTime = Date.now()
187
+ const duration = endTime - touchStartRef.current.time
188
+
189
+ // Calculate swipe gesture
190
+ const dx = touch.clientX - touchStartRef.current.x
191
+ const dy = touch.clientY - touchStartRef.current.y
192
+ const distance = Math.sqrt(dx * dx + dy * dy)
193
+
194
+ if (distance >= defaultConfig.minSwipeDistance && duration <= defaultConfig.maxSwipeTime) {
195
+ // Determine swipe direction
196
+ let direction) > Math.abs(dy)) {
197
+ direction = dx > 0 ? 'right' } else {
198
+ direction = dy > 0 ? 'down' }
199
+
200
+ const velocity = distance / duration
201
+ const swipeGesture= {
202
+ direction,
203
+ distance,
204
+ velocity,
205
+ duration
206
+ }
207
+
208
+ setGestureState(prev => ({ ...prev, currentGesture, lastGesture}))
209
+ callbacks.onSwipe?.(swipeGesture)
210
+ triggerHapticFeedback()
211
+ triggerSoundFeedback()
212
+ } else if (distance < 10 && duration < 200) {
213
+ // Handle tap gesture
214
+ const currentTime = Date.now()
215
+ const timeSinceLastTap = currentTime - lastTapTimeRef.current
216
+
217
+ if (timeSinceLastTap < 300) {
218
+ // Double tap detected
219
+ const position = { x, y}
220
+ callbacks.onTap?.(position)
221
+ triggerHapticFeedback()
222
+ }
223
+
224
+ lastTapTimeRef.current = currentTime
225
+ }
226
+
227
+ // Clear long press timer
228
+ if (longPressTimerRef.current) {
229
+ clearTimeout(longPressTimerRef.current)
230
+ longPressTimerRef.current = null
231
+ }
232
+
233
+ touchStartRef.current = null
234
+ callbacks.onTouchEnd?.({ x, y})
235
+ } else if (touchCount === 0) {
236
+ // All touches ended
237
+ touchStartCenterRef.current = null
238
+ touchStartDistanceRef.current = 0
239
+ }
240
+
241
+ setGestureState(prev => ({ ...prev, isTracking, currentGesture}))
242
+ }, [callbacks, defaultConfig.minSwipeDistance, defaultConfig.maxSwipeTime, triggerHapticFeedback, triggerSoundFeedback])
243
+
244
+ // Set up event listeners
245
+ useEffect(() => {
246
+ const element = elementRef.current
247
+ if (!element) return
248
+
249
+ element.addEventListener('touchstart', handleTouchStart, { passive})
250
+ element.addEventListener('touchmove', handleTouchMove, { passive})
251
+ element.addEventListener('touchend', handleTouchEnd, { passive})
252
+
253
+ return () => {
254
+ element.removeEventListener('touchstart', handleTouchStart)
255
+ element.removeEventListener('touchmove', handleTouchMove)
256
+ element.removeEventListener('touchend', handleTouchEnd)
257
+
258
+ // Clean up timers
259
+ if (longPressTimerRef.current) {
260
+ clearTimeout(longPressTimerRef.current)
261
+ }
262
+ }
263
+ }, [elementRef, handleTouchStart, handleTouchMove, handleTouchEnd])
264
+
265
+ // Utility functions
266
+ const resetGestureState = useCallback(() => {
267
+ setGestureState({
268
+ isTracking,
269
+ currentGesture,
270
+ lastGesture,
271
+ touchCount})
272
+ }, [])
273
+
274
+ const isGestureActive = useMemo(() => gestureState.isTracking, [gestureState.isTracking])
275
+ const currentGestureType = useMemo(() => gestureState.currentGesture, [gestureState.currentGesture])
276
+
277
+ return {
278
+ gestureState,
279
+ isGestureActive,
280
+ currentGestureType,
281
+ resetGestureState,
282
+ triggerHapticFeedback,
283
+ triggerSoundFeedback
284
+ }
285
+ }
286
+
287
+ // Convenience hooks for specific gestures
288
+ export const useSwipeGesture = (
289
+ elementRef,
290
+ onSwipe) => void,
291
+ config?) => {
292
+ return useGestures(elementRef, { onSwipe }, config)
293
+ }
294
+
295
+ export const usePinchGesture = (
296
+ elementRef,
297
+ onPinch) => void,
298
+ config?) => {
299
+ return useGestures(elementRef, { onPinch }, config)
300
+ }
301
+
302
+ export const useTapGesture = (
303
+ elementRef,
304
+ onTap; y}) => void,
305
+ config?) => {
306
+ return useGestures(elementRef, { onTap }, config)
307
+ }
308
+
309
+ export const useLongPressGesture = (
310
+ elementRef,
311
+ onLongPress; y}) => void,
312
+ config?) => {
313
+ return useGestures(elementRef, { onLongPress }, config)
314
+ }
@@ -0,0 +1,339 @@
1
+ export interface GPUInfo {
2
+ vendor: string
3
+ renderer: string
4
+ version: string
5
+ isWebGLSupported: boolean
6
+ isWebGL2Supported: boolean
7
+ maxTextureSize: number
8
+ maxAnisotropy: number
9
+ maxPrecision: string
10
+ }
11
+
12
+ export interface HardwareAccelerationMetrics {
13
+ fps: number
14
+ frameTime: number
15
+ memoryUsage: number
16
+ gpuUtilization: number
17
+ batteryImpact: number
18
+ performanceScore: number
19
+ }
20
+
21
+ export interface HardwareAccelerationConfig {
22
+ enableGPUMonitoring?: boolean
23
+ enablePerformanceTracking?: boolean
24
+ enableBatteryOptimization?: boolean
25
+ enableAutomaticOptimization?: boolean
26
+ fpsTarget?: number
27
+ memoryThreshold?: number
28
+ batteryLowThreshold?: number
29
+ }
30
+
31
+ export interface HardwareAccelerationCallbacks {
32
+ onGPUDetected?: (gpuInfo: GPUInfo) => void
33
+ onPerformanceWarning?: (warning: string, metrics: HardwareAccelerationMetrics) => void
34
+ onBatteryWarning?: (level: number, isLow: boolean) => void
35
+ onOptimizationApplied?: (optimization: string) => void
36
+ }
37
+
38
+ export declare const useHardwareAcceleration: (
39
+ config: HardwareAccelerationConfig = {},
40
+ callbacks: HardwareAccelerationCallbacks = {}
41
+ ) => {
42
+ const {
43
+ enableGPUMonitoring = true,
44
+ enablePerformanceTracking = true,
45
+ enableBatteryOptimization = true,
46
+ enableAutomaticOptimization = true,
47
+ fpsTarget = 60,
48
+ memoryThreshold = 80,
49
+ batteryLowThreshold = 0.2
50
+ } = config
51
+
52
+ const [gpuInfo, setGpuInfo] = useState<GPUInfo | null>(null)
53
+ const [metrics, setMetrics] = useState<HardwareAccelerationMetrics>({
54
+ fps: 60,
55
+ frameTime: 16.67,
56
+ memoryUsage: 0,
57
+ gpuUtilization: 0,
58
+ batteryImpact: 0,
59
+ performanceScore: 100
60
+ })
61
+ const [isOptimizing, setIsOptimizing] = useState(false)
62
+ const [optimizations, setOptimizations] = useState<string[]>([])
63
+ const [isHardwareAccelerated, setIsHardwareAccelerated] = useState(false)
64
+
65
+ const canvasRef = useRef<HTMLCanvasElement | null>(null)
66
+ const glRef = useRef<WebGLRenderingContext | null>(null)
67
+ const frameCountRef = useRef(0)
68
+ const lastFrameTimeRef = useRef(performance.now())
69
+ const performanceTimerRef = useRef<number | null>(null)
70
+
71
+ // GPU capability detection
72
+ const detectGPU = useCallback((): GPUInfo | null => {
73
+ if (!enableGPUMonitoring) return null
74
+
75
+ try {
76
+ const canvas = document.createElement('canvas')
77
+ const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl') as WebGLRenderingContext
78
+
79
+ if (!gl) {
80
+ return {
81
+ vendor: 'Unknown',
82
+ renderer: 'WebGL not supported',
83
+ version: 'Unknown',
84
+ isWebGLSupported: false,
85
+ isWebGL2Supported: false,
86
+ maxTextureSize: 0,
87
+ maxAnisotropy: 0,
88
+ maxPrecision: 'Unknown'
89
+ }
90
+ }
91
+
92
+ const debugInfo = gl.getExtension('WEBGL_debug_renderer_info')
93
+ const vendor = debugInfo ? gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL) : 'Unknown'
94
+ const renderer = debugInfo ? gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL) : 'Unknown'
95
+ const version = gl.getParameter(gl.VERSION) || 'Unknown'
96
+
97
+ // Check WebGL2 support
98
+ const canvas2 = document.createElement('canvas')
99
+ const gl2 = canvas2.getContext('webgl2')
100
+ const isWebGL2Supported = !!gl2
101
+
102
+ // Get GPU capabilities
103
+ const maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE) || 0
104
+ const maxAnisotropy = gl.getParameter((gl as any).MAX_TEXTURE_MAX_ANISOTROPY_EXT) || 0
105
+ const maxPrecision = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT)?.precision?.toString() || 'Unknown'
106
+
107
+ const gpuInfo: GPUInfo = {
108
+ vendor,
109
+ renderer,
110
+ version,
111
+ isWebGLSupported: true,
112
+ isWebGL2Supported,
113
+ maxTextureSize,
114
+ maxAnisotropy,
115
+ maxPrecision
116
+ }
117
+
118
+ setGpuInfo(gpuInfo)
119
+ callbacks.onGPUDetected?.(gpuInfo)
120
+
121
+ return gpuInfo
122
+ } catch (error) {
123
+ console.warn('GPU detection failed:', error)
124
+ return null
125
+ }
126
+ }, [enableGPUMonitoring, callbacks])
127
+
128
+ // Performance monitoring
129
+ const measurePerformance = useCallback(() => {
130
+ if (!enablePerformanceTracking) return
131
+
132
+ const now = performance.now()
133
+ frameCountRef.current++
134
+
135
+ if (now - lastFrameTimeRef.current >= 1000) {
136
+ const fps = Math.round((frameCountRef.current * 1000) / (now - lastFrameTimeRef.current))
137
+ const frameTime = 1000 / fps
138
+
139
+ // Simulate GPU utilization and memory usage
140
+ const gpuUtilization = Math.random() * 100
141
+ const memoryUsage = Math.random() * 100
142
+
143
+ // Calculate battery impact based on performance
144
+ const batteryImpact = Math.min((fps / fpsTarget) * 50 + (gpuUtilization / 100) * 30, 100)
145
+
146
+ // Calculate performance score
147
+ const fpsScore = Math.min((fps / fpsTarget) * 100, 100)
148
+ const timeScore = Math.max(100 - (frameTime - 16.67) * 10, 0)
149
+ const memoryScore = Math.max(100 - memoryUsage, 0)
150
+ const gpuScore = Math.max(100 - gpuUtilization, 0)
151
+
152
+ const performanceScore = Math.round((fpsScore + timeScore + memoryScore + gpuScore) / 4)
153
+
154
+ const newMetrics: HardwareAccelerationMetrics = {
155
+ fps,
156
+ frameTime,
157
+ memoryUsage,
158
+ gpuUtilization,
159
+ batteryImpact,
160
+ performanceScore
161
+ }
162
+
163
+ setMetrics(newMetrics)
164
+
165
+ // Check for performance warnings
166
+ if (fps < fpsTarget * 0.8) {
167
+ callbacks.onPerformanceWarning?.('FPS below target', newMetrics)
168
+ }
169
+
170
+ if (memoryUsage > memoryThreshold) {
171
+ callbacks.onPerformanceWarning?.('Memory usage high', newMetrics)
172
+ }
173
+
174
+ frameCountRef.current = 0
175
+ lastFrameTimeRef.current = now
176
+ }
177
+ }, [enablePerformanceTracking, fpsTarget, memoryThreshold, callbacks])
178
+
179
+ // Battery monitoring
180
+ const checkBatteryStatus = useCallback(async () => {
181
+ if (!enableBatteryOptimization || !('getBattery' in navigator)) return
182
+
183
+ try {
184
+ const battery = await (navigator as any).getBattery()
185
+ const level = battery.level
186
+
187
+ if (level < batteryLowThreshold) {
188
+ callbacks.onBatteryWarning?.(level, true)
189
+ applyBatteryOptimizations()
190
+ }
191
+ } catch (error) {
192
+ console.warn('Battery API not available:', error)
193
+ }
194
+ }, [enableBatteryOptimization, batteryLowThreshold, callbacks])
195
+
196
+ // Apply battery optimizations
197
+ const applyBatteryOptimizations = useCallback(() => {
198
+ if (!enableBatteryOptimization) return
199
+
200
+ setIsOptimizing(true)
201
+
202
+ setTimeout(() => {
203
+ const optimizations = [
204
+ 'Reduced animation complexity for battery optimization',
205
+ 'Hardware acceleration throttled for power efficiency',
206
+ 'GPU utilization optimized for battery life'
207
+ ]
208
+
209
+ setOptimizations(prev => [...prev, ...optimizations])
210
+ setIsOptimizing(false)
211
+
212
+ optimizations.forEach(optimization => {
213
+ callbacks.onOptimizationApplied?.(optimization)
214
+ })
215
+ }, 300)
216
+ }, [enableBatteryOptimization, callbacks])
217
+
218
+ // Automatic optimization
219
+ const applyAutomaticOptimizations = useCallback(() => {
220
+ if (!enableAutomaticOptimization) return
221
+
222
+ setIsOptimizing(true)
223
+
224
+ setTimeout(() => {
225
+ const optimizations: string[] = []
226
+
227
+ if (metrics.fps < fpsTarget * 0.8) {
228
+ optimizations.push('Hardware acceleration optimized for better FPS')
229
+ }
230
+
231
+ if (metrics.memoryUsage > memoryThreshold) {
232
+ optimizations.push('Memory usage optimized for better performance')
233
+ }
234
+
235
+ if (metrics.gpuUtilization > 80) {
236
+ optimizations.push('GPU utilization optimized for better efficiency')
237
+ }
238
+
239
+ if (optimizations.length > 0) {
240
+ setOptimizations(prev => [...prev, ...optimizations])
241
+ optimizations.forEach(optimization => {
242
+ callbacks.onOptimizationApplied?.(optimization)
243
+ })
244
+ }
245
+
246
+ setIsOptimizing(false)
247
+ }, 200)
248
+ }, [enableAutomaticOptimization, metrics, fpsTarget, memoryThreshold, callbacks])
249
+
250
+ // Hardware acceleration status check
251
+ const checkHardwareAcceleration = useCallback(() => {
252
+ if (!gpuInfo) return false
253
+
254
+ const isSupported = gpuInfo.isWebGLSupported || gpuInfo.isWebGL2Supported
255
+ const hasGoodPerformance = metrics.performanceScore >= 80
256
+
257
+ setIsHardwareAccelerated(isSupported && hasGoodPerformance)
258
+ return isSupported && hasGoodPerformance
259
+ }, [gpuInfo, metrics.performanceScore])
260
+
261
+ // Initialize monitoring
262
+ useEffect(() => {
263
+ try {
264
+ // Detect GPU on mount
265
+ const detectedGPU = detectGPU()
266
+
267
+ if (detectedGPU) {
268
+ canvasRef.current = document.createElement('canvas')
269
+ glRef.current = canvasRef.current.getContext('webgl')
270
+ }
271
+
272
+ // Set up performance monitoring
273
+ if (enablePerformanceTracking) {
274
+ performanceTimerRef.current = window.setInterval(measurePerformance, 1000)
275
+ }
276
+
277
+ // Set up battery monitoring
278
+ if (enableBatteryOptimization) {
279
+ checkBatteryStatus()
280
+ const batteryInterval = setInterval(checkBatteryStatus, 30000) // Check every 30 seconds
281
+
282
+ return () => {
283
+ if (batteryInterval) clearInterval(batteryInterval)
284
+ }
285
+ }
286
+ } catch (error) {
287
+ console.warn('Hardware acceleration initialization failed:', error)
288
+ }
289
+ }, [detectGPU, enablePerformanceTracking, enableBatteryOptimization, checkBatteryStatus, measurePerformance])
290
+
291
+ // Check hardware acceleration status when metrics change
292
+ useEffect(() => {
293
+ checkHardwareAcceleration()
294
+ }, [checkHardwareAcceleration])
295
+
296
+ // Apply automatic optimizations when performance degrades
297
+ useEffect(() => {
298
+ if (enableAutomaticOptimization && metrics.performanceScore < 70) {
299
+ applyAutomaticOptimizations()
300
+ }
301
+ }, [enableAutomaticOptimization, metrics.performanceScore, applyAutomaticOptimizations])
302
+
303
+ // Cleanup on unmount
304
+ useEffect(() => {
305
+ return () => {
306
+ if (performanceTimerRef.current) {
307
+ clearInterval(performanceTimerRef.current)
308
+ }
309
+ }
310
+ }, [])
311
+
312
+ return {
313
+ // State
314
+ gpuInfo,
315
+ metrics,
316
+ isOptimizing,
317
+ optimizations,
318
+ isHardwareAccelerated,
319
+
320
+ // Actions
321
+ detectGPU,
322
+ measurePerformance,
323
+ checkBatteryStatus,
324
+ applyBatteryOptimizations,
325
+ applyAutomaticOptimizations,
326
+ checkHardwareAcceleration,
327
+
328
+ // Computed values
329
+ isGPUSupported: !!gpuInfo?.isWebGLSupported,
330
+ isWebGL2Supported: !!gpuInfo?.isWebGL2Supported,
331
+ performanceLevel: metrics.performanceScore >= 90 ? 'excellent' :
332
+ metrics.performanceScore >= 80 ? 'good' :
333
+ metrics.performanceScore >= 70 ? 'fair' : 'poor',
334
+ needsOptimization: metrics.performanceScore < 70,
335
+ batteryOptimized: metrics.batteryImpact < 50
336
+ }
337
+ }
338
+
339
+ export default useHardwareAcceleration