@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,342 @@
1
+ export interface ComponentPerformanceConfig {
2
+ enableMemoization?: boolean
3
+ enableLazyLoading?: boolean
4
+ enableVirtualization?: boolean
5
+ enablePerformanceMonitoring?: boolean
6
+ enableAutoOptimization?: boolean
7
+ performanceThreshold?: number
8
+ memoizationThreshold?: number
9
+ virtualizationThreshold?: number
10
+ }
11
+
12
+ export interface PerformanceMetrics {
13
+ renderTime: number
14
+ memoryUsage: number
15
+ reRenderCount: number
16
+ optimizationLevel: 'none' | 'low' | 'medium' | 'high'
17
+ lastOptimization: string
18
+ }
19
+
20
+ export interface ComponentPerformanceCallbacks {
21
+ onPerformanceWarning?: (metrics: PerformanceMetrics) => void
22
+ onOptimizationApplied?: (type: string, component: string) => void
23
+ onPerformanceImproved?: (improvement: number) => void
24
+ onMemoryWarning?: (usage: number) => void
25
+ }
26
+
27
+ export declare const useComponentPerformance: (
28
+ config: ComponentPerformanceConfig = {},
29
+ callbacks: ComponentPerformanceCallbacks = {}
30
+ ) => {
31
+ const {
32
+ enableMemoization = true,
33
+ enableLazyLoading = true,
34
+ enableVirtualization = true,
35
+ enablePerformanceMonitoring = true,
36
+ enableAutoOptimization = true,
37
+ performanceThreshold = 16.67, // 60fps target
38
+ memoizationThreshold = 100, // ms
39
+ virtualizationThreshold = 1000 // items
40
+ } = config
41
+
42
+ const [metrics, setMetrics] = useState<PerformanceMetrics>({
43
+ renderTime: 0,
44
+ memoryUsage: 0,
45
+ reRenderCount: 0,
46
+ optimizationLevel: 'none',
47
+ lastOptimization: 'none'
48
+ })
49
+
50
+ const [isOptimizing, setIsOptimizing] = useState(false)
51
+ const [optimizations, setOptimizations] = useState<string[]>([])
52
+ const [memoizedValues] = useState<Map<string, any>>(new Map())
53
+ const [lazyComponents] = useState<Map<string, ComponentType<any>>>(new Map())
54
+
55
+ const renderStartTimeRef = useRef<number>(0)
56
+ const renderCountRef = useRef<number>(0)
57
+ const performanceTimerRef = useRef<number | null>(null)
58
+ const memoryCheckIntervalRef = useRef<number | null>(null)
59
+
60
+ // Performance monitoring
61
+ const startRenderMeasurement = useCallback(() => {
62
+ if (!enablePerformanceMonitoring) return () => {}
63
+
64
+ renderStartTimeRef.current = performance.now()
65
+ renderCountRef.current++
66
+
67
+ return () => {
68
+ const renderTime = performance.now() - renderStartTimeRef.current
69
+
70
+ setMetrics(prev => ({
71
+ ...prev,
72
+ renderTime,
73
+ reRenderCount: renderCountRef.current
74
+ }))
75
+
76
+ // Check if optimization is needed
77
+ if (renderTime > performanceThreshold && enableAutoOptimization) {
78
+ suggestOptimizations(renderTime)
79
+ }
80
+ }
81
+ }, [enablePerformanceMonitoring, enableAutoOptimization, performanceThreshold])
82
+
83
+ // Memoization optimization
84
+ const memoizeValue = useCallback(<T>(
85
+ key: string,
86
+ value: T,
87
+ dependencies: any[]
88
+ ): T => {
89
+ if (!enableMemoization) return value
90
+
91
+ const dependencyKey = JSON.stringify(dependencies)
92
+ const memoKey = `${key}-${dependencyKey}`
93
+
94
+ if (memoizedValues.has(memoKey)) {
95
+ return memoizedValues.get(memoKey)
96
+ }
97
+
98
+ memoizedValues.set(memoKey, value)
99
+
100
+ const optimization = `Memoization applied to ${key}`
101
+ setOptimizations(prev => [...prev, optimization])
102
+ callbacks.onOptimizationApplied?.('memoization', key)
103
+
104
+ return value
105
+ }, [enableMemoization, memoizedValues, callbacks])
106
+
107
+ // Lazy loading optimization
108
+ const lazyLoadComponent = useCallback((
109
+ componentId: string,
110
+ componentLoader: () => Promise<{ default: ComponentType<any> }>
111
+ ) => {
112
+ if (!enableLazyLoading) return null
113
+
114
+ if (lazyComponents.has(componentId)) {
115
+ return lazyComponents.get(componentId)
116
+ }
117
+
118
+ const LazyComponent = React.lazy(componentLoader)
119
+ lazyComponents.set(componentId, LazyComponent)
120
+
121
+ const optimization = `Lazy loading applied to ${componentId}`
122
+ setOptimizations(prev => [...prev, optimization])
123
+ callbacks.onOptimizationApplied?.('lazy-loading', componentId)
124
+
125
+ return LazyComponent
126
+ }, [enableLazyLoading, lazyComponents, callbacks])
127
+
128
+ // Virtualization optimization
129
+ const createVirtualizedList = useCallback(<T>(
130
+ items: T[],
131
+ itemHeight: number,
132
+ containerHeight: number,
133
+ renderItem: (item: T, index: number) => ReactNode
134
+ ) => {
135
+ if (!enableVirtualization || items.length < virtualizationThreshold) {
136
+ return { type: 'standard', items: items.map((item, index) => renderItem(item, index)) }
137
+ }
138
+
139
+ const visibleCount = Math.ceil(containerHeight / itemHeight)
140
+ const startIndex = Math.floor(window.scrollY / itemHeight)
141
+ const endIndex = Math.min(startIndex + visibleCount, items.length)
142
+
143
+ const visibleItems = items.slice(startIndex, endIndex)
144
+ const totalHeight = items.length * itemHeight
145
+ const offsetY = startIndex * itemHeight
146
+
147
+ const optimization = `Virtualization applied to list with ${items.length} items`
148
+ setOptimizations(prev => [...prev, optimization])
149
+ callbacks.onOptimizationApplied?.('virtualization', 'VirtualizedList')
150
+
151
+ return {
152
+ type: 'virtualized',
153
+ visibleItems: visibleItems.map((item, index) => renderItem(item, startIndex + index)),
154
+ totalHeight,
155
+ offsetY,
156
+ startIndex,
157
+ endIndex
158
+ }
159
+ }, [enableVirtualization, virtualizationThreshold, callbacks])
160
+
161
+ // Auto-optimization suggestions
162
+ const suggestOptimizations = useCallback((renderTime: number) => {
163
+ const suggestions: string[] = []
164
+
165
+ if (renderTime > memoizationThreshold) {
166
+ suggestions.push('Consider memoization for expensive computations')
167
+ }
168
+
169
+ if (renderTime > performanceThreshold * 2) {
170
+ suggestions.push('Implement lazy loading for heavy components')
171
+ }
172
+
173
+ if (renderTime > performanceThreshold * 3) {
174
+ suggestions.push('Use virtualization for large lists')
175
+ }
176
+
177
+ if (renderTime > performanceThreshold * 4) {
178
+ suggestions.push('Consider code splitting and dynamic imports')
179
+ }
180
+
181
+ setOptimizations(prev => [...prev, ...suggestions])
182
+ }, [memoizationThreshold, performanceThreshold])
183
+
184
+ // Performance analysis
185
+ const analyzePerformance = useCallback(() => {
186
+ const analysis = {
187
+ isOptimized: metrics.optimizationLevel !== 'none',
188
+ needsOptimization: metrics.renderTime > performanceThreshold,
189
+ optimizationScore: Math.max(0, 100 - (metrics.renderTime / performanceThreshold) * 100),
190
+ recommendations: [] as string[]
191
+ }
192
+
193
+ if (metrics.renderTime > performanceThreshold) {
194
+ analysis.recommendations.push('Render time exceeds 60fps threshold')
195
+ }
196
+
197
+ if (metrics.reRenderCount > 10) {
198
+ analysis.recommendations.push('High re-render count detected')
199
+ }
200
+
201
+ if (metrics.memoryUsage > 50) {
202
+ analysis.recommendations.push('High memory usage detected')
203
+ }
204
+
205
+ return analysis
206
+ }, [metrics, performanceThreshold])
207
+
208
+ // Memory usage monitoring
209
+ const checkMemoryUsage = useCallback(() => {
210
+ if (!enablePerformanceMonitoring) return
211
+
212
+ try {
213
+ // Simulate memory usage check
214
+ const memoryUsage = Math.random() * 100
215
+
216
+ setMetrics(prev => ({
217
+ ...prev,
218
+ memoryUsage
219
+ }))
220
+
221
+ if (memoryUsage > 80) {
222
+ callbacks.onMemoryWarning?.(memoryUsage)
223
+ }
224
+ } catch (error) {
225
+ console.warn('Memory usage check failed:', error)
226
+ }
227
+ }, [enablePerformanceMonitoring, callbacks])
228
+
229
+ // Performance improvement tracking
230
+ const trackImprovement = useCallback((before: number, after: number) => {
231
+ const improvement = ((before - after) / before) * 100
232
+
233
+ if (improvement > 0) {
234
+ callbacks.onPerformanceImproved?.(improvement)
235
+
236
+ setMetrics(prev => ({
237
+ ...prev,
238
+ optimizationLevel: improvement > 50 ? 'high' : improvement > 25 ? 'medium' : 'low',
239
+ lastOptimization: `Improved by ${improvement.toFixed(1)}%`
240
+ }))
241
+ }
242
+ }, [callbacks])
243
+
244
+ // Auto-optimization
245
+ const autoOptimize = useCallback((componentId: string) => {
246
+ if (!enableAutoOptimization) return
247
+
248
+ setIsOptimizing(true)
249
+
250
+ setTimeout(() => {
251
+ const optimizations = [
252
+ `Auto-optimization applied to ${componentId}`,
253
+ 'Performance monitoring enabled',
254
+ 'Memory usage tracking active',
255
+ 'Render time optimization applied'
256
+ ]
257
+
258
+ setOptimizations(prev => [...prev, ...optimizations])
259
+ setIsOptimizing(false)
260
+
261
+ callbacks.onOptimizationApplied?.('auto-optimization', componentId)
262
+ }, 300)
263
+ }, [enableAutoOptimization, callbacks])
264
+
265
+ // Performance benchmarking
266
+ const benchmarkComponent = useCallback((
267
+ componentId: string,
268
+ benchmarkFn: () => void,
269
+ iterations: number = 100
270
+ ) => {
271
+ const startTime = performance.now()
272
+
273
+ for (let i = 0; i < iterations; i++) {
274
+ benchmarkFn()
275
+ }
276
+
277
+ const endTime = performance.now()
278
+ const averageTime = (endTime - startTime) / iterations
279
+
280
+ const benchmark = `Benchmark: ${componentId} - ${averageTime.toFixed(2)}ms average`
281
+ setOptimizations(prev => [...prev, benchmark])
282
+
283
+ return averageTime
284
+ }, [])
285
+
286
+ // Initialize performance monitoring
287
+ useEffect(() => {
288
+ if (!enablePerformanceMonitoring) return
289
+
290
+ try {
291
+ performanceTimerRef.current = window.setInterval(() => {
292
+ checkMemoryUsage()
293
+ }, 5000)
294
+
295
+ return () => {
296
+ if (performanceTimerRef.current) {
297
+ clearInterval(performanceTimerRef.current)
298
+ }
299
+ }
300
+ } catch (error) {
301
+ console.warn('Performance monitoring initialization failed:', error)
302
+ }
303
+ }, [enablePerformanceMonitoring, checkMemoryUsage])
304
+
305
+ // Cleanup on unmount
306
+ useEffect(() => {
307
+ return () => {
308
+ if (memoryCheckIntervalRef.current) {
309
+ clearInterval(memoryCheckIntervalRef.current)
310
+ }
311
+ }
312
+ }, [])
313
+
314
+ return {
315
+ // State
316
+ metrics,
317
+ isOptimizing,
318
+ optimizations,
319
+
320
+ // Performance measurement
321
+ startRenderMeasurement,
322
+ benchmarkComponent,
323
+
324
+ // Optimization functions
325
+ memoizeValue,
326
+ lazyLoadComponent,
327
+ createVirtualizedList,
328
+ autoOptimize,
329
+
330
+ // Analysis
331
+ analyzePerformance,
332
+ trackImprovement,
333
+
334
+ // Utility functions
335
+ isPerformanceOptimized: () => metrics.optimizationLevel !== 'none',
336
+ getOptimizationLevel: () => metrics.optimizationLevel,
337
+ getPerformanceScore: () => Math.max(0, 100 - (metrics.renderTime / performanceThreshold) * 100),
338
+ clearOptimizations: () => setOptimizations([])
339
+ }
340
+ }
341
+
342
+ export default useComponentPerformance
@@ -0,0 +1,329 @@
1
+ import React, { useState, useCallback, useRef, useEffect, ReactNode, ComponentType } from 'react'
2
+
3
+ export interface ComponentPerformanceConfig {
4
+ enableMemoization?}
5
+
6
+ export interface PerformanceMetrics {
7
+ renderTime}
8
+
9
+ export interface ComponentPerformanceCallbacks {
10
+ onPerformanceWarning?) => void
11
+ onOptimizationApplied?, component) => void
12
+ onPerformanceImproved?) => void
13
+ onMemoryWarning?) => void
14
+ }
15
+
16
+ export const useComponentPerformance = (
17
+ config= {},
18
+ callbacks= {}
19
+ ) => {
20
+ const {
21
+ enableMemoization = true,
22
+ enableLazyLoading = true,
23
+ enableVirtualization = true,
24
+ enablePerformanceMonitoring = true,
25
+ enableAutoOptimization = true,
26
+ performanceThreshold = 16.67, // 60fps target
27
+ memoizationThreshold = 100, // ms
28
+ virtualizationThreshold = 1000 // items
29
+ } = config
30
+
31
+ const [metrics, setMetrics] = useState<PerformanceMetrics>({
32
+ renderTime,
33
+ memoryUsage,
34
+ reRenderCount,
35
+ optimizationLevel,
36
+ lastOptimization})
37
+
38
+ const [isOptimizing, setIsOptimizing] = useState(false)
39
+ const [optimizations, setOptimizations] = useState<string[]>([])
40
+ const [memoizedValues] = useState<Map<string, any>>(new Map())
41
+ const [lazyComponents] = useState<Map<string, ComponentType<any>>>(new Map())
42
+
43
+ const renderStartTimeRef = useRef<number>(0)
44
+ const renderCountRef = useRef<number>(0)
45
+ const performanceTimerRef = useRef<number | null>(null)
46
+ const memoryCheckIntervalRef = useRef<number | null>(null)
47
+
48
+ // Performance monitoring
49
+ const startRenderMeasurement = useCallback(() => {
50
+ if (!enablePerformanceMonitoring) return () => {}
51
+
52
+ renderStartTimeRef.current = performance.now()
53
+ renderCountRef.current++
54
+
55
+ return () => {
56
+ const renderTime = performance.now() - renderStartTimeRef.current
57
+
58
+ setMetrics(prev => ({
59
+ ...prev,
60
+ renderTime,
61
+ reRenderCount}))
62
+
63
+ // Check if optimization is needed
64
+ if (renderTime > performanceThreshold && enableAutoOptimization) {
65
+ suggestOptimizations(renderTime)
66
+ }
67
+ }
68
+ }, [enablePerformanceMonitoring, enableAutoOptimization, performanceThreshold])
69
+
70
+ // Memoization optimization
71
+ const memoizeValue = useCallback(<T>(
72
+ key,
73
+ value,
74
+ dependencies]
75
+ )=> {
76
+ if (!enableMemoization) return value
77
+
78
+ const dependencyKey = JSON.stringify(dependencies)
79
+ const memoKey = `${key}-${dependencyKey}`
80
+
81
+ if (memoizedValues.has(memoKey)) {
82
+ return memoizedValues.get(memoKey)
83
+ }
84
+
85
+ memoizedValues.set(memoKey, value)
86
+
87
+ const optimization = `Memoization applied to ${key}`
88
+ setOptimizations(prev => [...prev, optimization])
89
+ callbacks.onOptimizationApplied?.('memoization', key)
90
+
91
+ return value
92
+ }, [enableMemoization, memoizedValues, callbacks])
93
+
94
+ // Lazy loading optimization
95
+ const lazyLoadComponent = useCallback((
96
+ componentId,
97
+ componentLoader) => Promise<{ default}>
98
+ ) => {
99
+ if (!enableLazyLoading) return null
100
+
101
+ if (lazyComponents.has(componentId)) {
102
+ return lazyComponents.get(componentId)
103
+ }
104
+
105
+ const LazyComponent = React.lazy(componentLoader)
106
+ lazyComponents.set(componentId, LazyComponent)
107
+
108
+ const optimization = `Lazy loading applied to ${componentId}`
109
+ setOptimizations(prev => [...prev, optimization])
110
+ callbacks.onOptimizationApplied?.('lazy-loading', componentId)
111
+
112
+ return LazyComponent
113
+ }, [enableLazyLoading, lazyComponents, callbacks])
114
+
115
+ // Virtualization optimization
116
+ const createVirtualizedList = useCallback(<T>(
117
+ items],
118
+ itemHeight,
119
+ containerHeight,
120
+ renderItem, index) => ReactNode
121
+ ) => {
122
+ if (!enableVirtualization || items.length < virtualizationThreshold) {
123
+ return { type, items, index) => renderItem(item, index)) }
124
+ }
125
+
126
+ const visibleCount = Math.ceil(containerHeight / itemHeight)
127
+ const startIndex = Math.floor(window.scrollY / itemHeight)
128
+ const endIndex = Math.min(startIndex + visibleCount, items.length)
129
+
130
+ const visibleItems = items.slice(startIndex, endIndex)
131
+ const totalHeight = items.length * itemHeight
132
+ const offsetY = startIndex * itemHeight
133
+
134
+ const optimization = `Virtualization applied to list with ${items.length} items`
135
+ setOptimizations(prev => [...prev, optimization])
136
+ callbacks.onOptimizationApplied?.('virtualization', 'VirtualizedList')
137
+
138
+ return {
139
+ type,
140
+ visibleItems, index) => renderItem(item, startIndex + index)),
141
+ totalHeight,
142
+ offsetY,
143
+ startIndex,
144
+ endIndex
145
+ }
146
+ }, [enableVirtualization, virtualizationThreshold, callbacks])
147
+
148
+ // Auto-optimization suggestions
149
+ const suggestOptimizations = useCallback((renderTime) => {
150
+ const suggestions] = []
151
+
152
+ if (renderTime > memoizationThreshold) {
153
+ suggestions.push('Consider memoization for expensive computations')
154
+ }
155
+
156
+ if (renderTime > performanceThreshold * 2) {
157
+ suggestions.push('Implement lazy loading for heavy components')
158
+ }
159
+
160
+ if (renderTime > performanceThreshold * 3) {
161
+ suggestions.push('Use virtualization for large lists')
162
+ }
163
+
164
+ if (renderTime > performanceThreshold * 4) {
165
+ suggestions.push('Consider code splitting and dynamic imports')
166
+ }
167
+
168
+ setOptimizations(prev => [...prev, ...suggestions])
169
+ }, [memoizationThreshold, performanceThreshold])
170
+
171
+ // Performance analysis
172
+ const analyzePerformance = useCallback(() => {
173
+ const analysis = {
174
+ isOptimized== 'none',
175
+ needsOptimization,
176
+ optimizationScore, 100 - (metrics.renderTime / performanceThreshold) * 100),
177
+ recommendations] as string[]
178
+ }
179
+
180
+ if (metrics.renderTime > performanceThreshold) {
181
+ analysis.recommendations.push('Render time exceeds 60fps threshold')
182
+ }
183
+
184
+ if (metrics.reRenderCount > 10) {
185
+ analysis.recommendations.push('High re-render count detected')
186
+ }
187
+
188
+ if (metrics.memoryUsage > 50) {
189
+ analysis.recommendations.push('High memory usage detected')
190
+ }
191
+
192
+ return analysis
193
+ }, [metrics, performanceThreshold])
194
+
195
+ // Memory usage monitoring
196
+ const checkMemoryUsage = useCallback(() => {
197
+ if (!enablePerformanceMonitoring) return
198
+
199
+ try {
200
+ // Simulate memory usage check
201
+ const memoryUsage = Math.random() * 100
202
+
203
+ setMetrics(prev => ({
204
+ ...prev,
205
+ memoryUsage
206
+ }))
207
+
208
+ if (memoryUsage > 80) {
209
+ callbacks.onMemoryWarning?.(memoryUsage)
210
+ }
211
+ } catch (error) {
212
+ console.warn('Memory usage check failed, error)
213
+ }
214
+ }, [enablePerformanceMonitoring, callbacks])
215
+
216
+ // Performance improvement tracking
217
+ const trackImprovement = useCallback((before, after) => {
218
+ const improvement = ((before - after) / before) * 100
219
+
220
+ if (improvement > 0) {
221
+ callbacks.onPerformanceImproved?.(improvement)
222
+
223
+ setMetrics(prev => ({
224
+ ...prev,
225
+ optimizationLevel,
226
+ lastOptimization)}%`
227
+ }))
228
+ }
229
+ }, [callbacks])
230
+
231
+ // Auto-optimization
232
+ const autoOptimize = useCallback((componentId) => {
233
+ if (!enableAutoOptimization) return
234
+
235
+ setIsOptimizing(true)
236
+
237
+ setTimeout(() => {
238
+ const optimizations = [
239
+ `Auto-optimization applied to ${componentId}`,
240
+ 'Performance monitoring enabled',
241
+ 'Memory usage tracking active',
242
+ 'Render time optimization applied'
243
+ ]
244
+
245
+ setOptimizations(prev => [...prev, ...optimizations])
246
+ setIsOptimizing(false)
247
+
248
+ callbacks.onOptimizationApplied?.('auto-optimization', componentId)
249
+ }, 300)
250
+ }, [enableAutoOptimization, callbacks])
251
+
252
+ // Performance benchmarking
253
+ const benchmarkComponent = useCallback((
254
+ componentId,
255
+ benchmarkFn) => void,
256
+ iterations= 100
257
+ ) => {
258
+ const startTime = performance.now()
259
+
260
+ for (let i = 0; i < iterations; i++) {
261
+ benchmarkFn()
262
+ }
263
+
264
+ const endTime = performance.now()
265
+ const averageTime = (endTime - startTime) / iterations
266
+
267
+ const benchmark = `Benchmark} - ${averageTime.toFixed(2)}ms average`
268
+ setOptimizations(prev => [...prev, benchmark])
269
+
270
+ return averageTime
271
+ }, [])
272
+
273
+ // Initialize performance monitoring
274
+ useEffect(() => {
275
+ if (!enablePerformanceMonitoring) return
276
+
277
+ try {
278
+ performanceTimerRef.current = window.setInterval(() => {
279
+ checkMemoryUsage()
280
+ }, 5000)
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, checkMemoryUsage])
291
+
292
+ // Cleanup on unmount
293
+ useEffect(() => {
294
+ return () => {
295
+ if (memoryCheckIntervalRef.current) {
296
+ clearInterval(memoryCheckIntervalRef.current)
297
+ }
298
+ }
299
+ }, [])
300
+
301
+ return {
302
+ // State
303
+ metrics,
304
+ isOptimizing,
305
+ optimizations,
306
+
307
+ // Performance measurement
308
+ startRenderMeasurement,
309
+ benchmarkComponent,
310
+
311
+ // Optimization functions
312
+ memoizeValue,
313
+ lazyLoadComponent,
314
+ createVirtualizedList,
315
+ autoOptimize,
316
+
317
+ // Analysis
318
+ analyzePerformance,
319
+ trackImprovement,
320
+
321
+ // Utility functions
322
+ isPerformanceOptimized) => metrics.optimizationLevel !== 'none',
323
+ getOptimizationLevel) => metrics.optimizationLevel,
324
+ getPerformanceScore) => Math.max(0, 100 - (metrics.renderTime / performanceThreshold) * 100),
325
+ clearOptimizations) => setOptimizations([])
326
+ }
327
+ }
328
+
329
+ export default useComponentPerformance