@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,324 @@
1
+ import { useState, useEffect, useCallback, useRef } from 'react'
2
+
3
+ export interface PerformanceThrottlingConfig {
4
+ enablePerformanceMonitoring?}
5
+
6
+ export interface PerformanceMetrics {
7
+ fps}
8
+
9
+ export interface PerformanceThrottlingCallbacks {
10
+ onPerformanceWarning?) => void
11
+ onThrottlingApplied?, reason) => void
12
+ onPerformanceRecovery?) => void
13
+ onUserExperienceOptimized?) => void
14
+ }
15
+
16
+ export const usePerformanceThrottling = (
17
+ config= {},
18
+ callbacks= {}
19
+ ) => {
20
+ const {
21
+ enablePerformanceMonitoring = true,
22
+ enableAutomaticThrottling = true,
23
+ enableUserExperienceOptimization = true,
24
+ enableBatteryPreservation = true,
25
+ performanceThreshold = 70,
26
+ frameRateTarget = 60,
27
+ memoryThreshold = 80,
28
+ cpuThreshold = 80
29
+ } = config
30
+
31
+ const [metrics, setMetrics] = useState<PerformanceMetrics>({
32
+ fps,
33
+ frameTime,
34
+ memoryUsage,
35
+ cpuUsage,
36
+ performanceScore,
37
+ isThrottling,
38
+ throttleReason})
39
+
40
+ const [isOptimizing, setIsOptimizing] = useState(false)
41
+ const [optimizations, setOptimizations] = useState<string[]>([])
42
+ const [throttleLevel, setThrottleLevel] = useState<'none' | 'light' | 'moderate' | 'aggressive'>('none')
43
+
44
+ const frameCountRef = useRef(0)
45
+ const lastFrameTimeRef = useRef(performance.now())
46
+ const performanceTimerRef = useRef<number | null>(null)
47
+ const throttlingTimerRef = useRef<number | null>(null)
48
+
49
+ // Performance monitoring
50
+ const measurePerformance = useCallback(() => {
51
+ if (!enablePerformanceMonitoring) return
52
+
53
+ try {
54
+ const now = performance.now()
55
+ frameCountRef.current++
56
+
57
+ if (now - lastFrameTimeRef.current >= 1000) {
58
+ const fps = Math.round((frameCountRef.current * 1000) / (now - lastFrameTimeRef.current))
59
+ const frameTime = 1000 / fps
60
+
61
+ // Simulate memory and CPU usage
62
+ const memoryUsage = Math.random() * 100
63
+ const cpuUsage = Math.random() * 100
64
+
65
+ // Calculate performance score
66
+ const fpsScore = Math.min((fps / frameRateTarget) * 100, 100)
67
+ const timeScore = Math.max(100 - (frameTime - 16.67) * 10, 0)
68
+ const memoryScore = Math.max(100 - memoryUsage, 0)
69
+ const cpuScore = Math.max(100 - cpuUsage, 0)
70
+
71
+ const performanceScore = Math.round((fpsScore + timeScore + memoryScore + cpuScore) / 4)
72
+
73
+ // Determine if throttling is needed
74
+ const isThrottling = performanceScore < performanceThreshold ||
75
+ fps < frameRateTarget * 0.8 ||
76
+ memoryUsage > memoryThreshold ||
77
+ cpuUsage > cpuThreshold
78
+
79
+ let throttleReason = 'none'
80
+ if (performanceScore < performanceThreshold) throttleReason = 'low_performance'
81
+ else if (fps < frameRateTarget * 0.8) throttleReason = 'low_fps'
82
+ else if (memoryUsage > memoryThreshold) throttleReason = 'high_memory'
83
+ else if (cpuUsage > cpuThreshold) throttleReason = 'high_cpu'
84
+
85
+ const newMetrics= {
86
+ fps,
87
+ frameTime,
88
+ memoryUsage,
89
+ cpuUsage,
90
+ performanceScore,
91
+ isThrottling,
92
+ throttleReason
93
+ }
94
+
95
+ setMetrics(newMetrics)
96
+
97
+ // Trigger callbacks
98
+ if (isThrottling) {
99
+ callbacks.onPerformanceWarning?.(newMetrics)
100
+ } else if (metrics.isThrottling) {
101
+ callbacks.onPerformanceRecovery?.(newMetrics)
102
+ }
103
+
104
+ frameCountRef.current = 0
105
+ lastFrameTimeRef.current = now
106
+ }
107
+ } catch (error) {
108
+ console.warn('Performance measurement failed, error)
109
+ }
110
+ }, [enablePerformanceMonitoring, performanceThreshold, frameRateTarget, memoryThreshold, cpuThreshold, callbacks, metrics.isThrottling])
111
+
112
+ // Automatic throttling
113
+ const applyPerformanceThrottling = useCallback(() => {
114
+ if (!enableAutomaticThrottling) return
115
+
116
+ setIsOptimizing(true)
117
+
118
+ setTimeout(() => {
119
+ let newThrottleLevel= 'none'
120
+ let optimizations] = []
121
+
122
+ // Determine throttle level based on performance metrics
123
+ if (metrics.performanceScore < 50 || metrics.fps < 30) {
124
+ newThrottleLevel = 'aggressive'
125
+ optimizations.push('Critical performance)
126
+ optimizations.push('All non-essential animations disabled')
127
+ optimizations.push('Frame rate limited to 30fps')
128
+ optimizations.push('Memory usage optimized')
129
+ } else if (metrics.performanceScore < 70 || metrics.fps < 45) {
130
+ newThrottleLevel = 'moderate'
131
+ optimizations.push('Performance issue)
132
+ optimizations.push('Animation complexity reduced by 50%')
133
+ optimizations.push('Frame rate limited to 45fps')
134
+ optimizations.push('Memory optimization enabled')
135
+ } else if (metrics.performanceScore < 85 || metrics.fps < 55) {
136
+ newThrottleLevel = 'light'
137
+ optimizations.push('Performance warning)
138
+ optimizations.push('Animation complexity reduced by 25%')
139
+ optimizations.push('Frame rate limited to 55fps')
140
+ optimizations.push('Performance monitoring enhanced')
141
+ }
142
+
143
+ // Battery preservation considerations
144
+ if (enableBatteryPreservation && newThrottleLevel !== 'none') {
145
+ optimizations.push('Battery preservation)
146
+ optimizations.push('GPU usage minimized for power efficiency')
147
+ }
148
+
149
+ // User experience optimization
150
+ if (enableUserExperienceOptimization && newThrottleLevel !== 'none') {
151
+ optimizations.push('User experience)
152
+ optimizations.push('Animation quality balanced with performance')
153
+ optimizations.push('Responsive interactions maintained')
154
+ }
155
+
156
+ setThrottleLevel(newThrottleLevel)
157
+ setOptimizations(prev => [...prev, ...optimizations])
158
+ setIsOptimizing(false)
159
+
160
+ callbacks.onThrottlingApplied?.(newThrottleLevel, metrics.throttleReason)
161
+
162
+ optimizations.forEach(optimization => {
163
+ callbacks.onUserExperienceOptimized?.(optimization)
164
+ })
165
+ }, 200)
166
+ }, [enableAutomaticThrottling, enableBatteryPreservation, enableUserExperienceOptimization, metrics, callbacks])
167
+
168
+ // Get throttling recommendations
169
+ const getThrottlingRecommendations = useCallback(() => {
170
+ const recommendations = []
171
+
172
+ if (metrics.performanceScore < 50) {
173
+ recommendations.push('Critical)
174
+ recommendations.push('Use static UI elements and minimal interactions')
175
+ recommendations.push('Implement aggressive memory cleanup')
176
+ } else if (metrics.performanceScore < 70) {
177
+ recommendations.push('High)
178
+ recommendations.push('Limit concurrent animations to 2-3 maximum')
179
+ recommendations.push('Use CSS transforms instead of JavaScript animations')
180
+ } else if (metrics.performanceScore < 85) {
181
+ recommendations.push('Medium)
182
+ recommendations.push('Monitor animation frame rates closely')
183
+ recommendations.push('Implement animation debouncing')
184
+ }
185
+
186
+ if (metrics.fps < frameRateTarget * 0.8) {
187
+ recommendations.push('Low FPS)
188
+ recommendations.push('Use requestAnimationFrame for smooth animations')
189
+ recommendations.push('Implement frame skipping for complex animations')
190
+ }
191
+
192
+ if (metrics.memoryUsage > memoryThreshold) {
193
+ recommendations.push('High Memory)
194
+ recommendations.push('Clean up animation references')
195
+ recommendations.push('Use object pooling for repeated animations')
196
+ }
197
+
198
+ if (metrics.cpuUsage > cpuThreshold) {
199
+ recommendations.push('High CPU)
200
+ recommendations.push('Use CSS animations instead of JavaScript')
201
+ recommendations.push('Implement animation pausing when not visible')
202
+ }
203
+
204
+ return recommendations
205
+ }, [metrics, frameRateTarget, memoryThreshold, cpuThreshold])
206
+
207
+ // Get optimal performance settings
208
+ const getOptimalPerformanceSettings = useCallback(() => {
209
+ const settings = {
210
+ maxConcurrentAnimations,
211
+ frameRateLimit,
212
+ animationQuality,
213
+ memoryOptimization,
214
+ cpuOptimization}
215
+
216
+ switch (throttleLevel) {
217
+ case 'aggressive'= 1
218
+ settings.frameRateLimit = 30
219
+ settings.animationQuality = 'minimal'
220
+ settings.memoryOptimization = true
221
+ settings.cpuOptimization = true
222
+ break
223
+ case 'moderate'= 2
224
+ settings.frameRateLimit = 45
225
+ settings.animationQuality = 'medium'
226
+ settings.memoryOptimization = true
227
+ settings.cpuOptimization = true
228
+ break
229
+ case 'light'= 3
230
+ settings.frameRateLimit = 55
231
+ settings.animationQuality = 'high'
232
+ settings.memoryOptimization = true
233
+ settings.cpuOptimization = false
234
+ break
235
+ default= 5
236
+ settings.frameRateLimit = 60
237
+ settings.animationQuality = 'high'
238
+ settings.memoryOptimization = false
239
+ settings.cpuOptimization = false
240
+ }
241
+
242
+ return settings
243
+ }, [throttleLevel])
244
+
245
+ // Reset throttling
246
+ const resetThrottling = useCallback(() => {
247
+ setThrottleLevel('none')
248
+ setOptimizations([])
249
+ setMetrics(prev => ({
250
+ ...prev,
251
+ isThrottling,
252
+ throttleReason}))
253
+ }, [])
254
+
255
+ // Initialize performance monitoring
256
+ useEffect(() => {
257
+ if (!enablePerformanceMonitoring) return
258
+
259
+ try {
260
+ performanceTimerRef.current = window.setInterval(measurePerformance, 1000)
261
+
262
+ return () => {
263
+ if (performanceTimerRef.current) {
264
+ clearInterval(performanceTimerRef.current)
265
+ }
266
+ }
267
+ } catch (error) {
268
+ console.warn('Performance monitoring initialization failed, error)
269
+ }
270
+ }, [enablePerformanceMonitoring, measurePerformance])
271
+
272
+ // Apply throttling when performance degrades
273
+ useEffect(() => {
274
+ if (enableAutomaticThrottling && metrics.isThrottling) {
275
+ throttlingTimerRef.current = window.setTimeout(applyPerformanceThrottling, 1000)
276
+
277
+ return () => {
278
+ if (throttlingTimerRef.current) {
279
+ clearTimeout(throttlingTimerRef.current)
280
+ }
281
+ }
282
+ }
283
+ }, [enableAutomaticThrottling, metrics.isThrottling, applyPerformanceThrottling])
284
+
285
+ // Cleanup on unmount
286
+ useEffect(() => {
287
+ return () => {
288
+ if (throttlingTimerRef.current) {
289
+ clearTimeout(throttlingTimerRef.current)
290
+ }
291
+ }
292
+ }, [])
293
+
294
+ return {
295
+ // State
296
+ metrics,
297
+ isOptimizing,
298
+ optimizations,
299
+ throttleLevel,
300
+
301
+ // Actions
302
+ measurePerformance,
303
+ applyPerformanceThrottling,
304
+ resetThrottling,
305
+
306
+ // Computed values
307
+ isThrottling== 'none',
308
+ performanceLevel= 90 ? 'excellent' = 80 ? 'good' = 70 ? 'fair' ,
309
+ needsOptimization,
310
+ recommendations),
311
+ performanceSettings),
312
+
313
+ // Utility functions
314
+ getPerformanceHealth) => {
315
+ if (metrics.performanceScore >= 90) return 'excellent'
316
+ if (metrics.performanceScore >= 80) return 'good'
317
+ if (metrics.performanceScore >= 70) return 'fair'
318
+ if (metrics.performanceScore >= 50) return 'poor'
319
+ return 'critical'
320
+ }
321
+ }
322
+ }
323
+
324
+ export default usePerformanceThrottling
@@ -0,0 +1,314 @@
1
+ export interface PerformanceMetrics {
2
+ fps: number
3
+ frameTime: number
4
+ memoryUsage?: number
5
+ memoryLimit?: number
6
+ memoryPercentage?: number
7
+ batteryLevel?: number
8
+ isLowPowerMode?: boolean
9
+ isCharging?: boolean
10
+ performanceMode: 'high' | 'medium' | 'low'
11
+ throttlingEnabled: boolean
12
+ throttlingReason?: string
13
+ }
14
+
15
+ export interface PerformanceThresholds {
16
+ fps: {
17
+ warning: number
18
+ critical: number
19
+ }
20
+ memory: {
21
+ warning: number
22
+ critical: number
23
+ }
24
+ battery: {
25
+ low: number
26
+ critical: number
27
+ }
28
+ }
29
+
30
+ export interface PerformanceCallbacks {
31
+ onFPSWarning?: (fps: number) => void
32
+ onMemoryWarning?: (usage: number) => void
33
+ onBatteryLow?: (level: number) => void
34
+ onPerformanceModeChange?: (mode: PerformanceMetrics['performanceMode']) => void
35
+ onThrottlingChange?: (enabled: boolean, reason?: string) => void
36
+ }
37
+
38
+ export interface PerformanceOptions {
39
+ updateInterval?: number
40
+ thresholds?: Partial<PerformanceThresholds>
41
+ enableThrottling?: boolean
42
+ enableBatteryOptimization?: boolean
43
+ callbacks?: PerformanceCallbacks
44
+ }
45
+
46
+ const DEFAULT_THRESHOLDS: PerformanceThresholds = {
47
+ fps: {
48
+ warning: 45,
49
+ critical: 30
50
+ },
51
+ memory: {
52
+ warning: 0.7,
53
+ critical: 0.85
54
+ },
55
+ battery: {
56
+ low: 0.3,
57
+ critical: 0.15
58
+ }
59
+ }
60
+
61
+ export declare const usePerformance: (options: PerformanceOptions = {}) => {
62
+ const {
63
+ updateInterval = 1000,
64
+ thresholds = {},
65
+ enableThrottling = true,
66
+ enableBatteryOptimization = true,
67
+ callbacks = {}
68
+ } = options
69
+
70
+ const [metrics, setMetrics] = useState<PerformanceMetrics>({
71
+ fps: 60,
72
+ frameTime: 16.67,
73
+ performanceMode: 'high',
74
+ throttlingEnabled: false
75
+ })
76
+
77
+ const [isMonitoring, setIsMonitoring] = useState(false)
78
+ const frameCountRef = useRef(0)
79
+ const lastTimeRef = useRef(performance.now())
80
+ const animationIdRef = useRef<number>()
81
+ const intervalIdRef = useRef<NodeJS.Timeout>()
82
+
83
+ // Merge default thresholds with custom ones
84
+ const finalThresholds = useMemo(() => ({
85
+ ...DEFAULT_THRESHOLDS,
86
+ ...thresholds
87
+ }), [thresholds])
88
+
89
+ // Frame rate monitoring
90
+ const measureFrameRate = useCallback(() => {
91
+ frameCountRef.current++
92
+ const currentTime = performance.now()
93
+
94
+ if (currentTime - lastTimeRef.current >= updateInterval) {
95
+ const fps = Math.round((frameCountRef.current * 1000) / (currentTime - lastTimeRef.current))
96
+ const frameTime = 1000 / fps
97
+
98
+ setMetrics(prev => ({
99
+ ...prev,
100
+ fps,
101
+ frameTime
102
+ }))
103
+
104
+ // Check FPS thresholds
105
+ if (fps <= finalThresholds.fps.critical && callbacks.onFPSWarning) {
106
+ callbacks.onFPSWarning(fps)
107
+ }
108
+
109
+ frameCountRef.current = 0
110
+ lastTimeRef.current = currentTime
111
+ }
112
+
113
+ animationIdRef.current = requestAnimationFrame(measureFrameRate)
114
+ }, [updateInterval, finalThresholds.fps.critical, callbacks.onFPSWarning])
115
+
116
+ // Memory usage monitoring
117
+ const updateMemoryInfo = useCallback(() => {
118
+ if ('memory' in performance) {
119
+ const memory = (performance as any).memory
120
+ const memoryUsage = memory.usedJSHeapSize / memory.jsHeapSizeLimit
121
+
122
+ setMetrics(prev => ({
123
+ ...prev,
124
+ memoryUsage,
125
+ memoryLimit: memory.jsHeapSizeLimit,
126
+ memoryPercentage: memoryUsage * 100
127
+ }))
128
+
129
+ // Check memory thresholds
130
+ if (memoryUsage >= finalThresholds.memory.critical && callbacks.onMemoryWarning) {
131
+ callbacks.onMemoryWarning(memoryUsage)
132
+ }
133
+ }
134
+ }, [finalThresholds.memory.critical, callbacks.onMemoryWarning])
135
+
136
+ // Battery status monitoring
137
+ const updateBatteryInfo = useCallback(async () => {
138
+ if ('getBattery' in navigator) {
139
+ try {
140
+ const battery = await (navigator as any).getBattery()
141
+
142
+ setMetrics(prev => ({
143
+ ...prev,
144
+ batteryLevel: battery.level,
145
+ isLowPowerMode: battery.level < finalThresholds.battery.low,
146
+ isCharging: battery.charging
147
+ }))
148
+
149
+ // Check battery thresholds
150
+ if (battery.level <= finalThresholds.battery.critical && callbacks.onBatteryLow) {
151
+ callbacks.onBatteryLow(battery.level)
152
+ }
153
+ } catch (error) {
154
+ console.warn('Battery API not available:', error)
155
+ }
156
+ }
157
+ }, [finalThresholds.battery.low, finalThresholds.battery.critical, callbacks.onBatteryLow])
158
+
159
+ // Performance mode determination
160
+ const determinePerformanceMode = useCallback((fps: number, memoryUsage?: number): PerformanceMetrics['performanceMode'] => {
161
+ if (fps < finalThresholds.fps.critical || (memoryUsage && memoryUsage > finalThresholds.memory.critical)) {
162
+ return 'low'
163
+ }
164
+ if (fps < finalThresholds.fps.warning || (memoryUsage && memoryUsage > finalThresholds.memory.warning)) {
165
+ return 'medium'
166
+ }
167
+ return 'high'
168
+ }, [finalThresholds])
169
+
170
+ // Performance throttling logic
171
+ const shouldThrottle = useCallback((): { should: boolean; reason?: string } => {
172
+ const { fps, memoryPercentage, batteryLevel, isLowPowerMode } = metrics
173
+
174
+ // FPS-based throttling
175
+ if (fps < finalThresholds.fps.critical) {
176
+ return { should: true, reason: 'Low FPS' }
177
+ }
178
+
179
+ // Memory-based throttling
180
+ if (memoryPercentage && memoryPercentage > finalThresholds.memory.critical * 100) {
181
+ return { should: true, reason: 'High memory usage' }
182
+ }
183
+
184
+ // Battery-based throttling
185
+ if (enableBatteryOptimization && (isLowPowerMode || (batteryLevel && batteryLevel < finalThresholds.battery.low))) {
186
+ return { should: true, reason: 'Low battery' }
187
+ }
188
+
189
+ return { should: false }
190
+ }, [metrics, finalThresholds, enableBatteryOptimization])
191
+
192
+ // Update performance mode and throttling
193
+ useEffect(() => {
194
+ const newMode = determinePerformanceMode(metrics.fps, metrics.memoryUsage)
195
+ const { should: shouldThrottleNow, reason } = shouldThrottle()
196
+
197
+ setMetrics(prev => ({
198
+ ...prev,
199
+ performanceMode: newMode,
200
+ throttlingEnabled: enableThrottling && shouldThrottleNow,
201
+ throttlingReason: reason
202
+ }))
203
+
204
+ // Notify callbacks
205
+ if (newMode !== metrics.performanceMode && callbacks.onPerformanceModeChange) {
206
+ callbacks.onPerformanceModeChange(newMode)
207
+ }
208
+
209
+ if (enableThrottling && shouldThrottleNow !== metrics.throttlingEnabled && callbacks.onThrottlingChange) {
210
+ callbacks.onThrottlingChange(shouldThrottleNow, reason)
211
+ }
212
+ }, [metrics.fps, metrics.memoryUsage, metrics.batteryLevel, metrics.isLowPowerMode, enableThrottling, determinePerformanceMode, shouldThrottle, callbacks, metrics.performanceMode, metrics.throttlingEnabled])
213
+
214
+ // Start monitoring
215
+ const startMonitoring = useCallback(() => {
216
+ if (isMonitoring) return
217
+
218
+ setIsMonitoring(true)
219
+ measureFrameRate()
220
+
221
+ // Set up interval for memory and battery updates
222
+ intervalIdRef.current = setInterval(() => {
223
+ updateMemoryInfo()
224
+ updateBatteryInfo()
225
+ }, updateInterval)
226
+ }, [isMonitoring, measureFrameRate, updateMemoryInfo, updateBatteryInfo, updateInterval])
227
+
228
+ // Stop monitoring
229
+ const stopMonitoring = useCallback(() => {
230
+ setIsMonitoring(false)
231
+
232
+ if (animationIdRef.current) {
233
+ cancelAnimationFrame(animationIdRef.current)
234
+ }
235
+
236
+ if (intervalIdRef.current) {
237
+ clearInterval(intervalIdRef.current)
238
+ }
239
+ }, [])
240
+
241
+ // Auto-start monitoring on mount
242
+ useEffect(() => {
243
+ startMonitoring()
244
+ return () => stopMonitoring()
245
+ }, [startMonitoring, stopMonitoring])
246
+
247
+ // Performance optimization recommendations
248
+ const getOptimizationRecommendations = useCallback(() => {
249
+ const recommendations: string[] = []
250
+
251
+ if (metrics.fps < finalThresholds.fps.warning) {
252
+ recommendations.push('Consider reducing animation complexity or enabling performance mode')
253
+ }
254
+
255
+ if (metrics.memoryPercentage && metrics.memoryPercentage > finalThresholds.memory.warning * 100) {
256
+ recommendations.push('Memory usage is high - consider implementing lazy loading or cleanup')
257
+ }
258
+
259
+ if (metrics.isLowPowerMode) {
260
+ recommendations.push('Low battery detected - performance optimizations are active')
261
+ }
262
+
263
+ return recommendations
264
+ }, [metrics, finalThresholds])
265
+
266
+ // Throttling controls
267
+ const enableThrottlingMode = useCallback(() => {
268
+ setMetrics(prev => ({
269
+ ...prev,
270
+ throttlingEnabled: true,
271
+ throttlingReason: 'Manual override'
272
+ }))
273
+ }, [])
274
+
275
+ const disableThrottlingMode = useCallback(() => {
276
+ setMetrics(prev => ({
277
+ ...prev,
278
+ throttlingEnabled: false,
279
+ throttlingReason: undefined
280
+ }))
281
+ }, [])
282
+
283
+ return {
284
+ // Metrics
285
+ metrics,
286
+
287
+ // Controls
288
+ startMonitoring,
289
+ stopMonitoring,
290
+ isMonitoring,
291
+
292
+ // Throttling
293
+ throttlingEnabled: metrics.throttlingEnabled,
294
+ throttlingReason: metrics.throttlingReason,
295
+ enableThrottlingMode,
296
+ disableThrottlingMode,
297
+
298
+ // Performance mode
299
+ performanceMode: metrics.performanceMode,
300
+
301
+ // Recommendations
302
+ getOptimizationRecommendations,
303
+
304
+ // Thresholds
305
+ thresholds: finalThresholds,
306
+
307
+ // Raw values for advanced usage
308
+ fps: metrics.fps,
309
+ frameTime: metrics.frameTime,
310
+ memoryUsage: metrics.memoryUsage,
311
+ batteryLevel: metrics.batteryLevel,
312
+ isLowPowerMode: metrics.isLowPowerMode
313
+ }
314
+ }