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