@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.7 → 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 (462) 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/lib/utils.d.ts +3 -0
  345. package/dist/lib/utils.esm.js +6 -0
  346. package/dist/lib/utils.js +6 -0
  347. package/dist/plugins/theme-css-generator.d.ts +345 -0
  348. package/dist/plugins/theme-css-generator.esm.js +305 -0
  349. package/dist/plugins/theme-css-generator.js +305 -0
  350. package/dist/styles.css +1 -1
  351. package/dist/themes/ThemeContext.d.ts +27 -0
  352. package/dist/themes/ThemeContext.esm.js +31 -0
  353. package/dist/themes/ThemeContext.js +31 -0
  354. package/dist/themes/ThemeProvider.d.ts +222 -0
  355. package/dist/themes/ThemeProvider.esm.js +229 -0
  356. package/dist/themes/ThemeProvider.js +229 -0
  357. package/dist/themes/accessibility/index.d.ts +7 -0
  358. package/dist/themes/accessibility/index.esm.js +27 -0
  359. package/dist/themes/accessibility/index.js +27 -0
  360. package/dist/themes/accessibility.d.ts +259 -0
  361. package/dist/themes/accessibility.esm.js +220 -0
  362. package/dist/themes/accessibility.js +220 -0
  363. package/dist/themes/aria-patterns.d.ts +418 -0
  364. package/dist/themes/aria-patterns.esm.js +384 -0
  365. package/dist/themes/aria-patterns.js +384 -0
  366. package/dist/themes/base-themes.d.ts +34 -0
  367. package/dist/themes/base-themes.esm.js +52 -0
  368. package/dist/themes/base-themes.js +52 -0
  369. package/dist/themes/colorManager.d.ts +327 -0
  370. package/dist/themes/colorManager.esm.js +362 -0
  371. package/dist/themes/colorManager.js +362 -0
  372. package/dist/themes/examples/dark-theme.d.ts +139 -0
  373. package/dist/themes/examples/dark-theme.esm.js +124 -0
  374. package/dist/themes/examples/dark-theme.js +124 -0
  375. package/dist/themes/examples/minimal-theme.d.ts +93 -0
  376. package/dist/themes/examples/minimal-theme.esm.js +86 -0
  377. package/dist/themes/examples/minimal-theme.js +86 -0
  378. package/dist/themes/focus-management.d.ts +699 -0
  379. package/dist/themes/focus-management.esm.js +642 -0
  380. package/dist/themes/focus-management.js +642 -0
  381. package/dist/themes/fontLoader.d.ts +163 -0
  382. package/dist/themes/fontLoader.esm.js +192 -0
  383. package/dist/themes/fontLoader.js +192 -0
  384. package/dist/themes/high-contrast.d.ts +619 -0
  385. package/dist/themes/high-contrast.esm.js +573 -0
  386. package/dist/themes/high-contrast.js +573 -0
  387. package/dist/themes/index.d.ts +11 -0
  388. package/dist/themes/index.esm.js +19 -0
  389. package/dist/themes/index.js +19 -0
  390. package/dist/themes/inheritance.d.ts +160 -0
  391. package/dist/themes/inheritance.esm.js +219 -0
  392. package/dist/themes/inheritance.js +219 -0
  393. package/dist/themes/keyboard-navigation.d.ts +550 -0
  394. package/dist/themes/keyboard-navigation.esm.js +521 -0
  395. package/dist/themes/keyboard-navigation.js +521 -0
  396. package/dist/themes/motion-reduction.d.ts +660 -0
  397. package/dist/themes/motion-reduction.esm.js +602 -0
  398. package/dist/themes/motion-reduction.js +602 -0
  399. package/dist/themes/navigation.d.ts +232 -0
  400. package/dist/themes/navigation.esm.js +238 -0
  401. package/dist/themes/navigation.js +238 -0
  402. package/dist/themes/screen-reader.d.ts +645 -0
  403. package/dist/themes/screen-reader.esm.js +580 -0
  404. package/dist/themes/screen-reader.js +580 -0
  405. package/dist/themes/systemThemeDetector.d.ts +148 -0
  406. package/dist/themes/systemThemeDetector.esm.js +174 -0
  407. package/dist/themes/systemThemeDetector.js +174 -0
  408. package/dist/themes/themeCSSUpdater.d.ts +229 -0
  409. package/dist/themes/themeCSSUpdater.esm.js +250 -0
  410. package/dist/themes/themeCSSUpdater.js +250 -0
  411. package/dist/themes/themePersistence.d.ts +192 -0
  412. package/dist/themes/themePersistence.esm.js +217 -0
  413. package/dist/themes/themePersistence.js +217 -0
  414. package/dist/themes/themes/stan-design.d.ts +678 -0
  415. package/dist/themes/themes/stan-design.esm.js +518 -0
  416. package/dist/themes/themes/stan-design.js +518 -0
  417. package/dist/themes/types.d.ts +454 -0
  418. package/dist/themes/types.esm.js +446 -0
  419. package/dist/themes/types.js +446 -0
  420. package/dist/themes/useSystemTheme.d.ts +43 -0
  421. package/dist/themes/useSystemTheme.esm.js +48 -0
  422. package/dist/themes/useSystemTheme.js +48 -0
  423. package/dist/themes/useTheme.d.ts +20 -0
  424. package/dist/themes/useTheme.esm.js +87 -0
  425. package/dist/themes/useTheme.js +87 -0
  426. package/dist/themes/validation.d.ts +406 -0
  427. package/dist/themes/validation.esm.js +411 -0
  428. package/dist/themes/validation.js +411 -0
  429. package/dist/tokens/index.d.ts +25 -0
  430. package/dist/tokens/index.esm.js +23 -0
  431. package/dist/tokens/index.js +23 -0
  432. package/dist/tokens/tokenExporter.d.ts +336 -0
  433. package/dist/tokens/tokenExporter.esm.js +371 -0
  434. package/dist/tokens/tokenExporter.js +371 -0
  435. package/dist/tokens/tokenGenerator.d.ts +250 -0
  436. package/dist/tokens/tokenGenerator.esm.js +267 -0
  437. package/dist/tokens/tokenGenerator.js +267 -0
  438. package/dist/tokens/tokenManager.d.ts +194 -0
  439. package/dist/tokens/tokenManager.esm.js +235 -0
  440. package/dist/tokens/tokenManager.js +235 -0
  441. package/dist/tokens/tokenValidator.d.ts +488 -0
  442. package/dist/tokens/tokenValidator.esm.js +497 -0
  443. package/dist/tokens/tokenValidator.js +497 -0
  444. package/dist/tokens/types.d.ts +78 -0
  445. package/dist/tokens/types.esm.js +64 -0
  446. package/dist/tokens/types.js +64 -0
  447. package/dist/utils/bundle-analyzer.d.ts +260 -0
  448. package/dist/utils/bundle-analyzer.esm.js +242 -0
  449. package/dist/utils/bundle-analyzer.js +242 -0
  450. package/dist/utils/bundle-splitting.d.ts +483 -0
  451. package/dist/utils/bundle-splitting.esm.js +458 -0
  452. package/dist/utils/bundle-splitting.js +458 -0
  453. package/dist/utils/lazy-loading.d.ts +437 -0
  454. package/dist/utils/lazy-loading.esm.js +415 -0
  455. package/dist/utils/lazy-loading.js +415 -0
  456. package/dist/utils/performance-monitor.d.ts +513 -0
  457. package/dist/utils/performance-monitor.esm.js +472 -0
  458. package/dist/utils/performance-monitor.js +472 -0
  459. package/dist/utils/tree-shaking.d.ts +274 -0
  460. package/dist/utils/tree-shaking.esm.js +266 -0
  461. package/dist/utils/tree-shaking.js +266 -0
  462. package/package.json +1 -1
@@ -0,0 +1,313 @@
1
+ import { useState, useEffect, useCallback, useRef } from 'react'
2
+
3
+ export interface GPUInfo {
4
+ vendor}
5
+
6
+ export interface HardwareAccelerationMetrics {
7
+ fps}
8
+
9
+ export interface HardwareAccelerationConfig {
10
+ enableGPUMonitoring?}
11
+
12
+ export interface HardwareAccelerationCallbacks {
13
+ onGPUDetected?) => void
14
+ onPerformanceWarning?, metrics) => void
15
+ onBatteryWarning?, isLow) => void
16
+ onOptimizationApplied?) => void
17
+ }
18
+
19
+ export const useHardwareAcceleration = (
20
+ config= {},
21
+ callbacks= {}
22
+ ) => {
23
+ const {
24
+ enableGPUMonitoring = true,
25
+ enablePerformanceTracking = true,
26
+ enableBatteryOptimization = true,
27
+ enableAutomaticOptimization = true,
28
+ fpsTarget = 60,
29
+ memoryThreshold = 80,
30
+ batteryLowThreshold = 0.2
31
+ } = config
32
+
33
+ const [gpuInfo, setGpuInfo] = useState<GPUInfo | null>(null)
34
+ const [metrics, setMetrics] = useState<HardwareAccelerationMetrics>({
35
+ fps,
36
+ frameTime,
37
+ memoryUsage,
38
+ gpuUtilization,
39
+ batteryImpact,
40
+ performanceScore})
41
+ const [isOptimizing, setIsOptimizing] = useState(false)
42
+ const [optimizations, setOptimizations] = useState<string[]>([])
43
+ const [isHardwareAccelerated, setIsHardwareAccelerated] = useState(false)
44
+
45
+ const canvasRef = useRef<HTMLCanvasElement | null>(null)
46
+ const glRef = useRef<WebGLRenderingContext | null>(null)
47
+ const frameCountRef = useRef(0)
48
+ const lastFrameTimeRef = useRef(performance.now())
49
+ const performanceTimerRef = useRef<number | null>(null)
50
+
51
+ // GPU capability detection
52
+ const detectGPU = useCallback(()=> {
53
+ if (!enableGPUMonitoring) return null
54
+
55
+ try {
56
+ const canvas = document.createElement('canvas')
57
+ const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl') as WebGLRenderingContext
58
+
59
+ if (!gl) {
60
+ return {
61
+ vendor,
62
+ renderer,
63
+ version,
64
+ isWebGLSupported,
65
+ isWebGL2Supported,
66
+ maxTextureSize,
67
+ maxAnisotropy,
68
+ maxPrecision}
69
+ }
70
+
71
+ const debugInfo = gl.getExtension('WEBGL_debug_renderer_info')
72
+ const vendor = debugInfo ? gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL) = debugInfo ? gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL) = gl.getParameter(gl.VERSION) || 'Unknown'
73
+
74
+ // Check WebGL2 support
75
+ const canvas2 = document.createElement('canvas')
76
+ const gl2 = canvas2.getContext('webgl2')
77
+ const isWebGL2Supported = !!gl2
78
+
79
+ // Get GPU capabilities
80
+ const maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE) || 0
81
+ const maxAnisotropy = gl.getParameter((gl as any).MAX_TEXTURE_MAX_ANISOTROPY_EXT) || 0
82
+ const maxPrecision = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT)?.precision?.toString() || 'Unknown'
83
+
84
+ const gpuInfo= {
85
+ vendor,
86
+ renderer,
87
+ version,
88
+ isWebGLSupported,
89
+ isWebGL2Supported,
90
+ maxTextureSize,
91
+ maxAnisotropy,
92
+ maxPrecision
93
+ }
94
+
95
+ setGpuInfo(gpuInfo)
96
+ callbacks.onGPUDetected?.(gpuInfo)
97
+
98
+ return gpuInfo
99
+ } catch (error) {
100
+ console.warn('GPU detection failed, error)
101
+ return null
102
+ }
103
+ }, [enableGPUMonitoring, callbacks])
104
+
105
+ // Performance monitoring
106
+ const measurePerformance = useCallback(() => {
107
+ if (!enablePerformanceTracking) return
108
+
109
+ const now = performance.now()
110
+ frameCountRef.current++
111
+
112
+ if (now - lastFrameTimeRef.current >= 1000) {
113
+ const fps = Math.round((frameCountRef.current * 1000) / (now - lastFrameTimeRef.current))
114
+ const frameTime = 1000 / fps
115
+
116
+ // Simulate GPU utilization and memory usage
117
+ const gpuUtilization = Math.random() * 100
118
+ const memoryUsage = Math.random() * 100
119
+
120
+ // Calculate battery impact based on performance
121
+ const batteryImpact = Math.min((fps / fpsTarget) * 50 + (gpuUtilization / 100) * 30, 100)
122
+
123
+ // Calculate performance score
124
+ const fpsScore = Math.min((fps / fpsTarget) * 100, 100)
125
+ const timeScore = Math.max(100 - (frameTime - 16.67) * 10, 0)
126
+ const memoryScore = Math.max(100 - memoryUsage, 0)
127
+ const gpuScore = Math.max(100 - gpuUtilization, 0)
128
+
129
+ const performanceScore = Math.round((fpsScore + timeScore + memoryScore + gpuScore) / 4)
130
+
131
+ const newMetrics= {
132
+ fps,
133
+ frameTime,
134
+ memoryUsage,
135
+ gpuUtilization,
136
+ batteryImpact,
137
+ performanceScore
138
+ }
139
+
140
+ setMetrics(newMetrics)
141
+
142
+ // Check for performance warnings
143
+ if (fps < fpsTarget * 0.8) {
144
+ callbacks.onPerformanceWarning?.('FPS below target', newMetrics)
145
+ }
146
+
147
+ if (memoryUsage > memoryThreshold) {
148
+ callbacks.onPerformanceWarning?.('Memory usage high', newMetrics)
149
+ }
150
+
151
+ frameCountRef.current = 0
152
+ lastFrameTimeRef.current = now
153
+ }
154
+ }, [enablePerformanceTracking, fpsTarget, memoryThreshold, callbacks])
155
+
156
+ // Battery monitoring
157
+ const checkBatteryStatus = useCallback(async () => {
158
+ if (!enableBatteryOptimization || !('getBattery' in navigator)) return
159
+
160
+ try {
161
+ const battery = await (navigator as any).getBattery()
162
+ const level = battery.level
163
+
164
+ if (level < batteryLowThreshold) {
165
+ callbacks.onBatteryWarning?.(level, true)
166
+ applyBatteryOptimizations()
167
+ }
168
+ } catch (error) {
169
+ console.warn('Battery API not available, error)
170
+ }
171
+ }, [enableBatteryOptimization, batteryLowThreshold, callbacks])
172
+
173
+ // Apply battery optimizations
174
+ const applyBatteryOptimizations = useCallback(() => {
175
+ if (!enableBatteryOptimization) return
176
+
177
+ setIsOptimizing(true)
178
+
179
+ setTimeout(() => {
180
+ const optimizations = [
181
+ 'Reduced animation complexity for battery optimization',
182
+ 'Hardware acceleration throttled for power efficiency',
183
+ 'GPU utilization optimized for battery life'
184
+ ]
185
+
186
+ setOptimizations(prev => [...prev, ...optimizations])
187
+ setIsOptimizing(false)
188
+
189
+ optimizations.forEach(optimization => {
190
+ callbacks.onOptimizationApplied?.(optimization)
191
+ })
192
+ }, 300)
193
+ }, [enableBatteryOptimization, callbacks])
194
+
195
+ // Automatic optimization
196
+ const applyAutomaticOptimizations = useCallback(() => {
197
+ if (!enableAutomaticOptimization) return
198
+
199
+ setIsOptimizing(true)
200
+
201
+ setTimeout(() => {
202
+ const optimizations] = []
203
+
204
+ if (metrics.fps < fpsTarget * 0.8) {
205
+ optimizations.push('Hardware acceleration optimized for better FPS')
206
+ }
207
+
208
+ if (metrics.memoryUsage > memoryThreshold) {
209
+ optimizations.push('Memory usage optimized for better performance')
210
+ }
211
+
212
+ if (metrics.gpuUtilization > 80) {
213
+ optimizations.push('GPU utilization optimized for better efficiency')
214
+ }
215
+
216
+ if (optimizations.length > 0) {
217
+ setOptimizations(prev => [...prev, ...optimizations])
218
+ optimizations.forEach(optimization => {
219
+ callbacks.onOptimizationApplied?.(optimization)
220
+ })
221
+ }
222
+
223
+ setIsOptimizing(false)
224
+ }, 200)
225
+ }, [enableAutomaticOptimization, metrics, fpsTarget, memoryThreshold, callbacks])
226
+
227
+ // Hardware acceleration status check
228
+ const checkHardwareAcceleration = useCallback(() => {
229
+ if (!gpuInfo) return false
230
+
231
+ const isSupported = gpuInfo.isWebGLSupported || gpuInfo.isWebGL2Supported
232
+ const hasGoodPerformance = metrics.performanceScore >= 80
233
+
234
+ setIsHardwareAccelerated(isSupported && hasGoodPerformance)
235
+ return isSupported && hasGoodPerformance
236
+ }, [gpuInfo, metrics.performanceScore])
237
+
238
+ // Initialize monitoring
239
+ useEffect(() => {
240
+ try {
241
+ // Detect GPU on mount
242
+ const detectedGPU = detectGPU()
243
+
244
+ if (detectedGPU) {
245
+ canvasRef.current = document.createElement('canvas')
246
+ glRef.current = canvasRef.current.getContext('webgl')
247
+ }
248
+
249
+ // Set up performance monitoring
250
+ if (enablePerformanceTracking) {
251
+ performanceTimerRef.current = window.setInterval(measurePerformance, 1000)
252
+ }
253
+
254
+ // Set up battery monitoring
255
+ if (enableBatteryOptimization) {
256
+ checkBatteryStatus()
257
+ const batteryInterval = setInterval(checkBatteryStatus, 30000) // Check every 30 seconds
258
+
259
+ return () => {
260
+ if (batteryInterval) clearInterval(batteryInterval)
261
+ }
262
+ }
263
+ } catch (error) {
264
+ console.warn('Hardware acceleration initialization failed, error)
265
+ }
266
+ }, [detectGPU, enablePerformanceTracking, enableBatteryOptimization, checkBatteryStatus, measurePerformance])
267
+
268
+ // Check hardware acceleration status when metrics change
269
+ useEffect(() => {
270
+ checkHardwareAcceleration()
271
+ }, [checkHardwareAcceleration])
272
+
273
+ // Apply automatic optimizations when performance degrades
274
+ useEffect(() => {
275
+ if (enableAutomaticOptimization && metrics.performanceScore < 70) {
276
+ applyAutomaticOptimizations()
277
+ }
278
+ }, [enableAutomaticOptimization, metrics.performanceScore, applyAutomaticOptimizations])
279
+
280
+ // Cleanup on unmount
281
+ useEffect(() => {
282
+ return () => {
283
+ if (performanceTimerRef.current) {
284
+ clearInterval(performanceTimerRef.current)
285
+ }
286
+ }
287
+ }, [])
288
+
289
+ return {
290
+ // State
291
+ gpuInfo,
292
+ metrics,
293
+ isOptimizing,
294
+ optimizations,
295
+ isHardwareAccelerated,
296
+
297
+ // Actions
298
+ detectGPU,
299
+ measurePerformance,
300
+ checkBatteryStatus,
301
+ applyBatteryOptimizations,
302
+ applyAutomaticOptimizations,
303
+ checkHardwareAcceleration,
304
+
305
+ // Computed values
306
+ isGPUSupported,
307
+ isWebGL2Supported,
308
+ performanceLevel= 90 ? 'excellent' = 80 ? 'good' = 70 ? 'fair' ,
309
+ needsOptimization,
310
+ batteryOptimized}
311
+ }
312
+
313
+ export default useHardwareAcceleration
@@ -0,0 +1,313 @@
1
+ import { useState, useEffect, useCallback, useRef } from 'react'
2
+
3
+ export interface GPUInfo {
4
+ vendor}
5
+
6
+ export interface HardwareAccelerationMetrics {
7
+ fps}
8
+
9
+ export interface HardwareAccelerationConfig {
10
+ enableGPUMonitoring?}
11
+
12
+ export interface HardwareAccelerationCallbacks {
13
+ onGPUDetected?) => void
14
+ onPerformanceWarning?, metrics) => void
15
+ onBatteryWarning?, isLow) => void
16
+ onOptimizationApplied?) => void
17
+ }
18
+
19
+ export const useHardwareAcceleration = (
20
+ config= {},
21
+ callbacks= {}
22
+ ) => {
23
+ const {
24
+ enableGPUMonitoring = true,
25
+ enablePerformanceTracking = true,
26
+ enableBatteryOptimization = true,
27
+ enableAutomaticOptimization = true,
28
+ fpsTarget = 60,
29
+ memoryThreshold = 80,
30
+ batteryLowThreshold = 0.2
31
+ } = config
32
+
33
+ const [gpuInfo, setGpuInfo] = useState<GPUInfo | null>(null)
34
+ const [metrics, setMetrics] = useState<HardwareAccelerationMetrics>({
35
+ fps,
36
+ frameTime,
37
+ memoryUsage,
38
+ gpuUtilization,
39
+ batteryImpact,
40
+ performanceScore})
41
+ const [isOptimizing, setIsOptimizing] = useState(false)
42
+ const [optimizations, setOptimizations] = useState<string[]>([])
43
+ const [isHardwareAccelerated, setIsHardwareAccelerated] = useState(false)
44
+
45
+ const canvasRef = useRef<HTMLCanvasElement | null>(null)
46
+ const glRef = useRef<WebGLRenderingContext | null>(null)
47
+ const frameCountRef = useRef(0)
48
+ const lastFrameTimeRef = useRef(performance.now())
49
+ const performanceTimerRef = useRef<number | null>(null)
50
+
51
+ // GPU capability detection
52
+ const detectGPU = useCallback(()=> {
53
+ if (!enableGPUMonitoring) return null
54
+
55
+ try {
56
+ const canvas = document.createElement('canvas')
57
+ const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl') as WebGLRenderingContext
58
+
59
+ if (!gl) {
60
+ return {
61
+ vendor,
62
+ renderer,
63
+ version,
64
+ isWebGLSupported,
65
+ isWebGL2Supported,
66
+ maxTextureSize,
67
+ maxAnisotropy,
68
+ maxPrecision}
69
+ }
70
+
71
+ const debugInfo = gl.getExtension('WEBGL_debug_renderer_info')
72
+ const vendor = debugInfo ? gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL) = debugInfo ? gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL) = gl.getParameter(gl.VERSION) || 'Unknown'
73
+
74
+ // Check WebGL2 support
75
+ const canvas2 = document.createElement('canvas')
76
+ const gl2 = canvas2.getContext('webgl2')
77
+ const isWebGL2Supported = !!gl2
78
+
79
+ // Get GPU capabilities
80
+ const maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE) || 0
81
+ const maxAnisotropy = gl.getParameter((gl as any).MAX_TEXTURE_MAX_ANISOTROPY_EXT) || 0
82
+ const maxPrecision = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT)?.precision?.toString() || 'Unknown'
83
+
84
+ const gpuInfo= {
85
+ vendor,
86
+ renderer,
87
+ version,
88
+ isWebGLSupported,
89
+ isWebGL2Supported,
90
+ maxTextureSize,
91
+ maxAnisotropy,
92
+ maxPrecision
93
+ }
94
+
95
+ setGpuInfo(gpuInfo)
96
+ callbacks.onGPUDetected?.(gpuInfo)
97
+
98
+ return gpuInfo
99
+ } catch (error) {
100
+ console.warn('GPU detection failed, error)
101
+ return null
102
+ }
103
+ }, [enableGPUMonitoring, callbacks])
104
+
105
+ // Performance monitoring
106
+ const measurePerformance = useCallback(() => {
107
+ if (!enablePerformanceTracking) return
108
+
109
+ const now = performance.now()
110
+ frameCountRef.current++
111
+
112
+ if (now - lastFrameTimeRef.current >= 1000) {
113
+ const fps = Math.round((frameCountRef.current * 1000) / (now - lastFrameTimeRef.current))
114
+ const frameTime = 1000 / fps
115
+
116
+ // Simulate GPU utilization and memory usage
117
+ const gpuUtilization = Math.random() * 100
118
+ const memoryUsage = Math.random() * 100
119
+
120
+ // Calculate battery impact based on performance
121
+ const batteryImpact = Math.min((fps / fpsTarget) * 50 + (gpuUtilization / 100) * 30, 100)
122
+
123
+ // Calculate performance score
124
+ const fpsScore = Math.min((fps / fpsTarget) * 100, 100)
125
+ const timeScore = Math.max(100 - (frameTime - 16.67) * 10, 0)
126
+ const memoryScore = Math.max(100 - memoryUsage, 0)
127
+ const gpuScore = Math.max(100 - gpuUtilization, 0)
128
+
129
+ const performanceScore = Math.round((fpsScore + timeScore + memoryScore + gpuScore) / 4)
130
+
131
+ const newMetrics= {
132
+ fps,
133
+ frameTime,
134
+ memoryUsage,
135
+ gpuUtilization,
136
+ batteryImpact,
137
+ performanceScore
138
+ }
139
+
140
+ setMetrics(newMetrics)
141
+
142
+ // Check for performance warnings
143
+ if (fps < fpsTarget * 0.8) {
144
+ callbacks.onPerformanceWarning?.('FPS below target', newMetrics)
145
+ }
146
+
147
+ if (memoryUsage > memoryThreshold) {
148
+ callbacks.onPerformanceWarning?.('Memory usage high', newMetrics)
149
+ }
150
+
151
+ frameCountRef.current = 0
152
+ lastFrameTimeRef.current = now
153
+ }
154
+ }, [enablePerformanceTracking, fpsTarget, memoryThreshold, callbacks])
155
+
156
+ // Battery monitoring
157
+ const checkBatteryStatus = useCallback(async () => {
158
+ if (!enableBatteryOptimization || !('getBattery' in navigator)) return
159
+
160
+ try {
161
+ const battery = await (navigator as any).getBattery()
162
+ const level = battery.level
163
+
164
+ if (level < batteryLowThreshold) {
165
+ callbacks.onBatteryWarning?.(level, true)
166
+ applyBatteryOptimizations()
167
+ }
168
+ } catch (error) {
169
+ console.warn('Battery API not available, error)
170
+ }
171
+ }, [enableBatteryOptimization, batteryLowThreshold, callbacks])
172
+
173
+ // Apply battery optimizations
174
+ const applyBatteryOptimizations = useCallback(() => {
175
+ if (!enableBatteryOptimization) return
176
+
177
+ setIsOptimizing(true)
178
+
179
+ setTimeout(() => {
180
+ const optimizations = [
181
+ 'Reduced animation complexity for battery optimization',
182
+ 'Hardware acceleration throttled for power efficiency',
183
+ 'GPU utilization optimized for battery life'
184
+ ]
185
+
186
+ setOptimizations(prev => [...prev, ...optimizations])
187
+ setIsOptimizing(false)
188
+
189
+ optimizations.forEach(optimization => {
190
+ callbacks.onOptimizationApplied?.(optimization)
191
+ })
192
+ }, 300)
193
+ }, [enableBatteryOptimization, callbacks])
194
+
195
+ // Automatic optimization
196
+ const applyAutomaticOptimizations = useCallback(() => {
197
+ if (!enableAutomaticOptimization) return
198
+
199
+ setIsOptimizing(true)
200
+
201
+ setTimeout(() => {
202
+ const optimizations] = []
203
+
204
+ if (metrics.fps < fpsTarget * 0.8) {
205
+ optimizations.push('Hardware acceleration optimized for better FPS')
206
+ }
207
+
208
+ if (metrics.memoryUsage > memoryThreshold) {
209
+ optimizations.push('Memory usage optimized for better performance')
210
+ }
211
+
212
+ if (metrics.gpuUtilization > 80) {
213
+ optimizations.push('GPU utilization optimized for better efficiency')
214
+ }
215
+
216
+ if (optimizations.length > 0) {
217
+ setOptimizations(prev => [...prev, ...optimizations])
218
+ optimizations.forEach(optimization => {
219
+ callbacks.onOptimizationApplied?.(optimization)
220
+ })
221
+ }
222
+
223
+ setIsOptimizing(false)
224
+ }, 200)
225
+ }, [enableAutomaticOptimization, metrics, fpsTarget, memoryThreshold, callbacks])
226
+
227
+ // Hardware acceleration status check
228
+ const checkHardwareAcceleration = useCallback(() => {
229
+ if (!gpuInfo) return false
230
+
231
+ const isSupported = gpuInfo.isWebGLSupported || gpuInfo.isWebGL2Supported
232
+ const hasGoodPerformance = metrics.performanceScore >= 80
233
+
234
+ setIsHardwareAccelerated(isSupported && hasGoodPerformance)
235
+ return isSupported && hasGoodPerformance
236
+ }, [gpuInfo, metrics.performanceScore])
237
+
238
+ // Initialize monitoring
239
+ useEffect(() => {
240
+ try {
241
+ // Detect GPU on mount
242
+ const detectedGPU = detectGPU()
243
+
244
+ if (detectedGPU) {
245
+ canvasRef.current = document.createElement('canvas')
246
+ glRef.current = canvasRef.current.getContext('webgl')
247
+ }
248
+
249
+ // Set up performance monitoring
250
+ if (enablePerformanceTracking) {
251
+ performanceTimerRef.current = window.setInterval(measurePerformance, 1000)
252
+ }
253
+
254
+ // Set up battery monitoring
255
+ if (enableBatteryOptimization) {
256
+ checkBatteryStatus()
257
+ const batteryInterval = setInterval(checkBatteryStatus, 30000) // Check every 30 seconds
258
+
259
+ return () => {
260
+ if (batteryInterval) clearInterval(batteryInterval)
261
+ }
262
+ }
263
+ } catch (error) {
264
+ console.warn('Hardware acceleration initialization failed, error)
265
+ }
266
+ }, [detectGPU, enablePerformanceTracking, enableBatteryOptimization, checkBatteryStatus, measurePerformance])
267
+
268
+ // Check hardware acceleration status when metrics change
269
+ useEffect(() => {
270
+ checkHardwareAcceleration()
271
+ }, [checkHardwareAcceleration])
272
+
273
+ // Apply automatic optimizations when performance degrades
274
+ useEffect(() => {
275
+ if (enableAutomaticOptimization && metrics.performanceScore < 70) {
276
+ applyAutomaticOptimizations()
277
+ }
278
+ }, [enableAutomaticOptimization, metrics.performanceScore, applyAutomaticOptimizations])
279
+
280
+ // Cleanup on unmount
281
+ useEffect(() => {
282
+ return () => {
283
+ if (performanceTimerRef.current) {
284
+ clearInterval(performanceTimerRef.current)
285
+ }
286
+ }
287
+ }, [])
288
+
289
+ return {
290
+ // State
291
+ gpuInfo,
292
+ metrics,
293
+ isOptimizing,
294
+ optimizations,
295
+ isHardwareAccelerated,
296
+
297
+ // Actions
298
+ detectGPU,
299
+ measurePerformance,
300
+ checkBatteryStatus,
301
+ applyBatteryOptimizations,
302
+ applyAutomaticOptimizations,
303
+ checkHardwareAcceleration,
304
+
305
+ // Computed values
306
+ isGPUSupported,
307
+ isWebGL2Supported,
308
+ performanceLevel= 90 ? 'excellent' = 80 ? 'good' = 70 ? 'fair' ,
309
+ needsOptimization,
310
+ batteryOptimized}
311
+ }
312
+
313
+ export default useHardwareAcceleration