@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.7 → 0.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (462) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/components/ui/accessibility-demo.d.ts +259 -0
  3. package/dist/components/ui/accessibility-demo.esm.js +265 -0
  4. package/dist/components/ui/accessibility-demo.js +265 -0
  5. package/dist/components/ui/advanced-component-architecture-demo.d.ts +718 -0
  6. package/dist/components/ui/advanced-component-architecture-demo.esm.js +860 -0
  7. package/dist/components/ui/advanced-component-architecture-demo.js +860 -0
  8. package/dist/components/ui/advanced-transition-system-demo.d.ts +660 -0
  9. package/dist/components/ui/advanced-transition-system-demo.esm.js +624 -0
  10. package/dist/components/ui/advanced-transition-system-demo.js +624 -0
  11. package/dist/components/ui/advanced-transition-system.d.ts +391 -0
  12. package/dist/components/ui/advanced-transition-system.esm.js +351 -0
  13. package/dist/components/ui/advanced-transition-system.js +351 -0
  14. package/dist/components/ui/animation/animated-container.d.ts +162 -0
  15. package/dist/components/ui/animation/animated-container.esm.js +143 -0
  16. package/dist/components/ui/animation/animated-container.js +143 -0
  17. package/dist/components/ui/animation/index.d.ts +9 -0
  18. package/dist/components/ui/animation/index.esm.js +19 -0
  19. package/dist/components/ui/animation/index.js +19 -0
  20. package/dist/components/ui/animation/staggered-container.d.ts +64 -0
  21. package/dist/components/ui/animation/staggered-container.esm.js +59 -0
  22. package/dist/components/ui/animation/staggered-container.js +59 -0
  23. package/dist/components/ui/animation-demo.d.ts +238 -0
  24. package/dist/components/ui/animation-demo.esm.js +218 -0
  25. package/dist/components/ui/animation-demo.js +218 -0
  26. package/dist/components/ui/badge.d.ts +28 -0
  27. package/dist/components/ui/badge.esm.js +30 -0
  28. package/dist/components/ui/badge.js +30 -0
  29. package/dist/components/ui/battery-conscious-animation-demo.d.ts +561 -0
  30. package/dist/components/ui/battery-conscious-animation-demo.esm.js +533 -0
  31. package/dist/components/ui/battery-conscious-animation-demo.js +533 -0
  32. package/dist/components/ui/border-radius-shadow-demo.d.ts +183 -0
  33. package/dist/components/ui/border-radius-shadow-demo.esm.js +176 -0
  34. package/dist/components/ui/border-radius-shadow-demo.js +176 -0
  35. package/dist/components/ui/button.d.ts +33 -0
  36. package/dist/components/ui/button.esm.js +30 -0
  37. package/dist/components/ui/button.js +30 -0
  38. package/dist/components/ui/card.d.ts +205 -0
  39. package/dist/components/ui/card.esm.js +182 -0
  40. package/dist/components/ui/card.js +182 -0
  41. package/dist/components/ui/checkbox.d.ts +26 -0
  42. package/dist/components/ui/checkbox.esm.js +30 -0
  43. package/dist/components/ui/checkbox.js +30 -0
  44. package/dist/components/ui/color-preview.d.ts +402 -0
  45. package/dist/components/ui/color-preview.esm.js +388 -0
  46. package/dist/components/ui/color-preview.js +388 -0
  47. package/dist/components/ui/data-display/chart.d.ts +646 -0
  48. package/dist/components/ui/data-display/chart.esm.js +625 -0
  49. package/dist/components/ui/data-display/chart.js +625 -0
  50. package/dist/components/ui/data-display/data-grid-simple.d.ts +73 -0
  51. package/dist/components/ui/data-display/data-grid-simple.esm.js +76 -0
  52. package/dist/components/ui/data-display/data-grid-simple.js +76 -0
  53. package/dist/components/ui/data-display/data-grid.d.ts +670 -0
  54. package/dist/components/ui/data-display/data-grid.esm.js +667 -0
  55. package/dist/components/ui/data-display/data-grid.js +667 -0
  56. package/dist/components/ui/data-display/list.d.ts +448 -0
  57. package/dist/components/ui/data-display/list.esm.js +448 -0
  58. package/dist/components/ui/data-display/list.js +448 -0
  59. package/dist/components/ui/data-display/table.d.ts +472 -0
  60. package/dist/components/ui/data-display/table.esm.js +474 -0
  61. package/dist/components/ui/data-display/table.js +474 -0
  62. package/dist/components/ui/data-display/timeline.d.ts +433 -0
  63. package/dist/components/ui/data-display/timeline.esm.js +436 -0
  64. package/dist/components/ui/data-display/timeline.js +436 -0
  65. package/dist/components/ui/data-display/tree.d.ts +594 -0
  66. package/dist/components/ui/data-display/tree.esm.js +570 -0
  67. package/dist/components/ui/data-display/tree.js +570 -0
  68. package/dist/components/ui/data-display/types.d.ts +534 -0
  69. package/dist/components/ui/data-display/types.esm.js +511 -0
  70. package/dist/components/ui/data-display/types.js +511 -0
  71. package/dist/components/ui/enterprise-mobile-experience-demo.d.ts +735 -0
  72. package/dist/components/ui/enterprise-mobile-experience-demo.esm.js +699 -0
  73. package/dist/components/ui/enterprise-mobile-experience-demo.js +699 -0
  74. package/dist/components/ui/enterprise-mobile-experience.d.ts +461 -0
  75. package/dist/components/ui/enterprise-mobile-experience.esm.js +413 -0
  76. package/dist/components/ui/enterprise-mobile-experience.js +413 -0
  77. package/dist/components/ui/feedback/alert.d.ts +154 -0
  78. package/dist/components/ui/feedback/alert.esm.js +150 -0
  79. package/dist/components/ui/feedback/alert.js +150 -0
  80. package/dist/components/ui/feedback/progress.d.ts +288 -0
  81. package/dist/components/ui/feedback/progress.esm.js +269 -0
  82. package/dist/components/ui/feedback/progress.js +269 -0
  83. package/dist/components/ui/feedback/skeleton.d.ts +182 -0
  84. package/dist/components/ui/feedback/skeleton.esm.js +175 -0
  85. package/dist/components/ui/feedback/skeleton.js +175 -0
  86. package/dist/components/ui/feedback/toast.d.ts +277 -0
  87. package/dist/components/ui/feedback/toast.esm.js +256 -0
  88. package/dist/components/ui/feedback/toast.js +256 -0
  89. package/dist/components/ui/feedback/types.d.ts +123 -0
  90. package/dist/components/ui/feedback/types.esm.js +125 -0
  91. package/dist/components/ui/feedback/types.js +125 -0
  92. package/dist/components/ui/font-preview.d.ts +282 -0
  93. package/dist/components/ui/font-preview.esm.js +286 -0
  94. package/dist/components/ui/font-preview.js +286 -0
  95. package/dist/components/ui/form-demo.d.ts +544 -0
  96. package/dist/components/ui/form-demo.esm.js +516 -0
  97. package/dist/components/ui/form-demo.js +516 -0
  98. package/dist/components/ui/hardware-acceleration-demo.d.ts +540 -0
  99. package/dist/components/ui/hardware-acceleration-demo.esm.js +497 -0
  100. package/dist/components/ui/hardware-acceleration-demo.js +497 -0
  101. package/dist/components/ui/input.d.ts +33 -0
  102. package/dist/components/ui/input.esm.js +32 -0
  103. package/dist/components/ui/input.js +32 -0
  104. package/dist/components/ui/label.d.ts +13 -0
  105. package/dist/components/ui/label.esm.js +16 -0
  106. package/dist/components/ui/label.js +16 -0
  107. package/dist/components/ui/layout-demo.d.ts +352 -0
  108. package/dist/components/ui/layout-demo.esm.js +342 -0
  109. package/dist/components/ui/layout-demo.js +342 -0
  110. package/dist/components/ui/layouts/adaptive-layout.d.ts +132 -0
  111. package/dist/components/ui/layouts/adaptive-layout.esm.js +120 -0
  112. package/dist/components/ui/layouts/adaptive-layout.js +120 -0
  113. package/dist/components/ui/layouts/desktop-layout.d.ts +219 -0
  114. package/dist/components/ui/layouts/desktop-layout.esm.js +204 -0
  115. package/dist/components/ui/layouts/desktop-layout.js +204 -0
  116. package/dist/components/ui/layouts/index.d.ts +5 -0
  117. package/dist/components/ui/layouts/index.esm.js +10 -0
  118. package/dist/components/ui/layouts/index.js +10 -0
  119. package/dist/components/ui/layouts/mobile-layout.d.ts +158 -0
  120. package/dist/components/ui/layouts/mobile-layout.esm.js +152 -0
  121. package/dist/components/ui/layouts/mobile-layout.js +152 -0
  122. package/dist/components/ui/layouts/tablet-layout.d.ts +192 -0
  123. package/dist/components/ui/layouts/tablet-layout.esm.js +183 -0
  124. package/dist/components/ui/layouts/tablet-layout.js +183 -0
  125. package/dist/components/ui/mobile-form-validation.d.ts +439 -0
  126. package/dist/components/ui/mobile-form-validation.esm.js +418 -0
  127. package/dist/components/ui/mobile-form-validation.js +418 -0
  128. package/dist/components/ui/mobile-input-demo.d.ts +197 -0
  129. package/dist/components/ui/mobile-input-demo.esm.js +195 -0
  130. package/dist/components/ui/mobile-input-demo.js +195 -0
  131. package/dist/components/ui/mobile-input.d.ts +273 -0
  132. package/dist/components/ui/mobile-input.esm.js +216 -0
  133. package/dist/components/ui/mobile-input.js +216 -0
  134. package/dist/components/ui/mobile-skeleton-loading-demo.d.ts +628 -0
  135. package/dist/components/ui/mobile-skeleton-loading-demo.esm.js +621 -0
  136. package/dist/components/ui/mobile-skeleton-loading-demo.js +621 -0
  137. package/dist/components/ui/navigation/breadcrumb.d.ts +149 -0
  138. package/dist/components/ui/navigation/breadcrumb.esm.js +155 -0
  139. package/dist/components/ui/navigation/breadcrumb.js +155 -0
  140. package/dist/components/ui/navigation/index.d.ts +25 -0
  141. package/dist/components/ui/navigation/index.esm.js +14 -0
  142. package/dist/components/ui/navigation/index.js +14 -0
  143. package/dist/components/ui/navigation/menu.d.ts +366 -0
  144. package/dist/components/ui/navigation/menu.esm.js +360 -0
  145. package/dist/components/ui/navigation/menu.js +360 -0
  146. package/dist/components/ui/navigation/navigation-demo.d.ts +169 -0
  147. package/dist/components/ui/navigation/navigation-demo.esm.js +317 -0
  148. package/dist/components/ui/navigation/navigation-demo.js +317 -0
  149. package/dist/components/ui/navigation/pagination.d.ts +261 -0
  150. package/dist/components/ui/navigation/pagination.esm.js +260 -0
  151. package/dist/components/ui/navigation/pagination.js +260 -0
  152. package/dist/components/ui/navigation/sidebar.d.ts +375 -0
  153. package/dist/components/ui/navigation/sidebar.esm.js +369 -0
  154. package/dist/components/ui/navigation/sidebar.js +369 -0
  155. package/dist/components/ui/navigation/stepper.d.ts +294 -0
  156. package/dist/components/ui/navigation/stepper.esm.js +292 -0
  157. package/dist/components/ui/navigation/stepper.js +292 -0
  158. package/dist/components/ui/navigation/tabs.d.ts +196 -0
  159. package/dist/components/ui/navigation/tabs.esm.js +194 -0
  160. package/dist/components/ui/navigation/tabs.js +194 -0
  161. package/dist/components/ui/navigation/types.d.ts +293 -0
  162. package/dist/components/ui/navigation/types.esm.js +298 -0
  163. package/dist/components/ui/navigation/types.js +298 -0
  164. package/dist/components/ui/overlay/backdrop.d.ts +79 -0
  165. package/dist/components/ui/overlay/backdrop.esm.js +80 -0
  166. package/dist/components/ui/overlay/backdrop.js +80 -0
  167. package/dist/components/ui/overlay/focus-manager.d.ts +141 -0
  168. package/dist/components/ui/overlay/focus-manager.esm.js +141 -0
  169. package/dist/components/ui/overlay/focus-manager.js +141 -0
  170. package/dist/components/ui/overlay/index.d.ts +27 -0
  171. package/dist/components/ui/overlay/index.esm.js +16 -0
  172. package/dist/components/ui/overlay/index.js +16 -0
  173. package/dist/components/ui/overlay/modal.d.ts +262 -0
  174. package/dist/components/ui/overlay/modal.esm.js +266 -0
  175. package/dist/components/ui/overlay/modal.js +266 -0
  176. package/dist/components/ui/overlay/overlay-manager.d.ts +107 -0
  177. package/dist/components/ui/overlay/overlay-manager.esm.js +105 -0
  178. package/dist/components/ui/overlay/overlay-manager.js +105 -0
  179. package/dist/components/ui/overlay/popover.d.ts +450 -0
  180. package/dist/components/ui/overlay/popover.esm.js +446 -0
  181. package/dist/components/ui/overlay/popover.js +446 -0
  182. package/dist/components/ui/overlay/portal.d.ts +75 -0
  183. package/dist/components/ui/overlay/portal.esm.js +79 -0
  184. package/dist/components/ui/overlay/portal.js +79 -0
  185. package/dist/components/ui/overlay/tooltip.d.ts +298 -0
  186. package/dist/components/ui/overlay/tooltip.esm.js +288 -0
  187. package/dist/components/ui/overlay/tooltip.js +288 -0
  188. package/dist/components/ui/overlay/types.d.ts +194 -0
  189. package/dist/components/ui/overlay/types.esm.js +195 -0
  190. package/dist/components/ui/overlay/types.js +195 -0
  191. package/dist/components/ui/performance-demo.d.ts +583 -0
  192. package/dist/components/ui/performance-demo.esm.js +549 -0
  193. package/dist/components/ui/performance-demo.js +549 -0
  194. package/dist/components/ui/semantic-input-system-demo.d.ts +490 -0
  195. package/dist/components/ui/semantic-input-system-demo.esm.js +465 -0
  196. package/dist/components/ui/semantic-input-system-demo.js +465 -0
  197. package/dist/components/ui/theme-customizer.d.ts +378 -0
  198. package/dist/components/ui/theme-customizer.esm.js +354 -0
  199. package/dist/components/ui/theme-customizer.js +354 -0
  200. package/dist/components/ui/theme-preview.d.ts +305 -0
  201. package/dist/components/ui/theme-preview.esm.js +258 -0
  202. package/dist/components/ui/theme-preview.js +258 -0
  203. package/dist/components/ui/theme-switcher.d.ts +259 -0
  204. package/dist/components/ui/theme-switcher.esm.js +238 -0
  205. package/dist/components/ui/theme-switcher.js +238 -0
  206. package/dist/components/ui/theme-toggle.d.ts +34 -0
  207. package/dist/components/ui/theme-toggle.esm.js +38 -0
  208. package/dist/components/ui/theme-toggle.js +38 -0
  209. package/dist/components/ui/token-demo.d.ts +188 -0
  210. package/dist/components/ui/token-demo.esm.js +183 -0
  211. package/dist/components/ui/token-demo.js +183 -0
  212. package/dist/components/ui/touch-demo.d.ts +455 -0
  213. package/dist/components/ui/touch-demo.esm.js +433 -0
  214. package/dist/components/ui/touch-demo.js +433 -0
  215. package/dist/components/ui/touch-friendly-interface-demo.d.ts +512 -0
  216. package/dist/components/ui/touch-friendly-interface-demo.esm.js +481 -0
  217. package/dist/components/ui/touch-friendly-interface-demo.js +481 -0
  218. package/dist/components/ui/touch-friendly-interface.d.ts +292 -0
  219. package/dist/components/ui/touch-friendly-interface.esm.js +272 -0
  220. package/dist/components/ui/touch-friendly-interface.js +272 -0
  221. package/dist/hooks/index.d.ts +161 -0
  222. package/dist/hooks/index.esm.js +190 -0
  223. package/dist/hooks/index.js +190 -0
  224. package/dist/hooks/use-accessibility-support.d.ts +516 -0
  225. package/dist/hooks/use-accessibility-support.esm.js +488 -0
  226. package/dist/hooks/use-accessibility-support.js +488 -0
  227. package/dist/hooks/use-adaptive-layout.d.ts +287 -0
  228. package/dist/hooks/use-adaptive-layout.esm.js +266 -0
  229. package/dist/hooks/use-adaptive-layout.js +266 -0
  230. package/dist/hooks/use-advanced-patterns.d.ts +292 -0
  231. package/dist/hooks/use-advanced-patterns.esm.js +279 -0
  232. package/dist/hooks/use-advanced-patterns.js +279 -0
  233. package/dist/hooks/use-advanced-transition-system.d.ts +390 -0
  234. package/dist/hooks/use-advanced-transition-system.esm.js +352 -0
  235. package/dist/hooks/use-advanced-transition-system.js +352 -0
  236. package/dist/hooks/use-animation-profile.d.ts +285 -0
  237. package/dist/hooks/use-animation-profile.esm.js +259 -0
  238. package/dist/hooks/use-animation-profile.js +259 -0
  239. package/dist/hooks/use-battery-animations.d.ts +382 -0
  240. package/dist/hooks/use-battery-animations.esm.js +359 -0
  241. package/dist/hooks/use-battery-animations.js +359 -0
  242. package/dist/hooks/use-battery-conscious-loading.d.ts +473 -0
  243. package/dist/hooks/use-battery-conscious-loading.esm.js +432 -0
  244. package/dist/hooks/use-battery-conscious-loading.js +432 -0
  245. package/dist/hooks/use-battery-optimization.d.ts +328 -0
  246. package/dist/hooks/use-battery-optimization.esm.js +307 -0
  247. package/dist/hooks/use-battery-optimization.js +307 -0
  248. package/dist/hooks/use-battery-status.d.ts +297 -0
  249. package/dist/hooks/use-battery-status.esm.js +277 -0
  250. package/dist/hooks/use-battery-status.js +277 -0
  251. package/dist/hooks/use-component-performance.d.ts +342 -0
  252. package/dist/hooks/use-component-performance.esm.js +329 -0
  253. package/dist/hooks/use-component-performance.js +329 -0
  254. package/dist/hooks/use-device-loading-states.d.ts +456 -0
  255. package/dist/hooks/use-device-loading-states.esm.js +416 -0
  256. package/dist/hooks/use-device-loading-states.js +416 -0
  257. package/dist/hooks/use-device.d.ts +104 -0
  258. package/dist/hooks/use-device.esm.js +99 -0
  259. package/dist/hooks/use-device.js +99 -0
  260. package/dist/hooks/use-enterprise-mobile-experience.d.ts +486 -0
  261. package/dist/hooks/use-enterprise-mobile-experience.esm.js +439 -0
  262. package/dist/hooks/use-enterprise-mobile-experience.js +439 -0
  263. package/dist/hooks/use-form-feedback.d.ts +401 -0
  264. package/dist/hooks/use-form-feedback.esm.js +360 -0
  265. package/dist/hooks/use-form-feedback.js +360 -0
  266. package/dist/hooks/use-form-performance.d.ts +511 -0
  267. package/dist/hooks/use-form-performance.esm.js +478 -0
  268. package/dist/hooks/use-form-performance.js +478 -0
  269. package/dist/hooks/use-frame-rate.d.ts +249 -0
  270. package/dist/hooks/use-frame-rate.esm.js +232 -0
  271. package/dist/hooks/use-frame-rate.js +232 -0
  272. package/dist/hooks/use-gestures.d.ts +336 -0
  273. package/dist/hooks/use-gestures.esm.js +314 -0
  274. package/dist/hooks/use-gestures.js +314 -0
  275. package/dist/hooks/use-hardware-acceleration.d.ts +339 -0
  276. package/dist/hooks/use-hardware-acceleration.esm.js +313 -0
  277. package/dist/hooks/use-hardware-acceleration.js +313 -0
  278. package/dist/hooks/use-input-accessibility.d.ts +451 -0
  279. package/dist/hooks/use-input-accessibility.esm.js +417 -0
  280. package/dist/hooks/use-input-accessibility.js +417 -0
  281. package/dist/hooks/use-input-performance.d.ts +503 -0
  282. package/dist/hooks/use-input-performance.esm.js +471 -0
  283. package/dist/hooks/use-input-performance.js +471 -0
  284. package/dist/hooks/use-layout-performance.d.ts +317 -0
  285. package/dist/hooks/use-layout-performance.esm.js +298 -0
  286. package/dist/hooks/use-layout-performance.js +298 -0
  287. package/dist/hooks/use-loading-accessibility.d.ts +532 -0
  288. package/dist/hooks/use-loading-accessibility.esm.js +495 -0
  289. package/dist/hooks/use-loading-accessibility.js +495 -0
  290. package/dist/hooks/use-loading-performance.d.ts +471 -0
  291. package/dist/hooks/use-loading-performance.esm.js +449 -0
  292. package/dist/hooks/use-loading-performance.js +449 -0
  293. package/dist/hooks/use-memory-usage.d.ts +285 -0
  294. package/dist/hooks/use-memory-usage.esm.js +268 -0
  295. package/dist/hooks/use-memory-usage.js +268 -0
  296. package/dist/hooks/use-mobile-form-layout.d.ts +462 -0
  297. package/dist/hooks/use-mobile-form-layout.esm.js +427 -0
  298. package/dist/hooks/use-mobile-form-layout.js +427 -0
  299. package/dist/hooks/use-mobile-form-validation.d.ts +516 -0
  300. package/dist/hooks/use-mobile-form-validation.esm.js +451 -0
  301. package/dist/hooks/use-mobile-form-validation.js +451 -0
  302. package/dist/hooks/use-mobile-keyboard-optimization.d.ts +469 -0
  303. package/dist/hooks/use-mobile-keyboard-optimization.esm.js +431 -0
  304. package/dist/hooks/use-mobile-keyboard-optimization.js +431 -0
  305. package/dist/hooks/use-mobile-layout.d.ts +300 -0
  306. package/dist/hooks/use-mobile-layout.esm.js +280 -0
  307. package/dist/hooks/use-mobile-layout.js +280 -0
  308. package/dist/hooks/use-mobile-optimization.d.ts +404 -0
  309. package/dist/hooks/use-mobile-optimization.esm.js +378 -0
  310. package/dist/hooks/use-mobile-optimization.js +378 -0
  311. package/dist/hooks/use-mobile-skeleton.d.ts +399 -0
  312. package/dist/hooks/use-mobile-skeleton.esm.js +369 -0
  313. package/dist/hooks/use-mobile-skeleton.js +369 -0
  314. package/dist/hooks/use-mobile-touch.d.ts +412 -0
  315. package/dist/hooks/use-mobile-touch.esm.js +379 -0
  316. package/dist/hooks/use-mobile-touch.js +379 -0
  317. package/dist/hooks/use-performance-throttling.d.ts +346 -0
  318. package/dist/hooks/use-performance-throttling.esm.js +324 -0
  319. package/dist/hooks/use-performance-throttling.js +324 -0
  320. package/dist/hooks/use-performance.d.ts +314 -0
  321. package/dist/hooks/use-performance.esm.js +278 -0
  322. package/dist/hooks/use-performance.js +278 -0
  323. package/dist/hooks/use-reusable-architecture.d.ts +412 -0
  324. package/dist/hooks/use-reusable-architecture.esm.js +385 -0
  325. package/dist/hooks/use-reusable-architecture.js +385 -0
  326. package/dist/hooks/use-semantic-input-types.d.ts +354 -0
  327. package/dist/hooks/use-semantic-input-types.esm.js +315 -0
  328. package/dist/hooks/use-semantic-input-types.js +315 -0
  329. package/dist/hooks/use-semantic-input.d.ts +563 -0
  330. package/dist/hooks/use-semantic-input.esm.js +513 -0
  331. package/dist/hooks/use-semantic-input.js +513 -0
  332. package/dist/hooks/use-tablet-layout.d.ts +382 -0
  333. package/dist/hooks/use-tablet-layout.esm.js +355 -0
  334. package/dist/hooks/use-tablet-layout.js +355 -0
  335. package/dist/hooks/use-touch-friendly-input.d.ts +520 -0
  336. package/dist/hooks/use-touch-friendly-input.esm.js +480 -0
  337. package/dist/hooks/use-touch-friendly-input.js +480 -0
  338. package/dist/hooks/use-touch-friendly-interface.d.ts +329 -0
  339. package/dist/hooks/use-touch-friendly-interface.esm.js +299 -0
  340. package/dist/hooks/use-touch-friendly-interface.js +299 -0
  341. package/dist/hooks/use-touch-optimization.d.ts +373 -0
  342. package/dist/hooks/use-touch-optimization.esm.js +348 -0
  343. package/dist/hooks/use-touch-optimization.js +348 -0
  344. package/dist/lib/utils.d.ts +3 -0
  345. package/dist/lib/utils.esm.js +6 -0
  346. package/dist/lib/utils.js +6 -0
  347. package/dist/plugins/theme-css-generator.d.ts +345 -0
  348. package/dist/plugins/theme-css-generator.esm.js +305 -0
  349. package/dist/plugins/theme-css-generator.js +305 -0
  350. package/dist/styles.css +1 -1
  351. package/dist/themes/ThemeContext.d.ts +27 -0
  352. package/dist/themes/ThemeContext.esm.js +31 -0
  353. package/dist/themes/ThemeContext.js +31 -0
  354. package/dist/themes/ThemeProvider.d.ts +222 -0
  355. package/dist/themes/ThemeProvider.esm.js +229 -0
  356. package/dist/themes/ThemeProvider.js +229 -0
  357. package/dist/themes/accessibility/index.d.ts +7 -0
  358. package/dist/themes/accessibility/index.esm.js +27 -0
  359. package/dist/themes/accessibility/index.js +27 -0
  360. package/dist/themes/accessibility.d.ts +259 -0
  361. package/dist/themes/accessibility.esm.js +220 -0
  362. package/dist/themes/accessibility.js +220 -0
  363. package/dist/themes/aria-patterns.d.ts +418 -0
  364. package/dist/themes/aria-patterns.esm.js +384 -0
  365. package/dist/themes/aria-patterns.js +384 -0
  366. package/dist/themes/base-themes.d.ts +34 -0
  367. package/dist/themes/base-themes.esm.js +52 -0
  368. package/dist/themes/base-themes.js +52 -0
  369. package/dist/themes/colorManager.d.ts +327 -0
  370. package/dist/themes/colorManager.esm.js +362 -0
  371. package/dist/themes/colorManager.js +362 -0
  372. package/dist/themes/examples/dark-theme.d.ts +139 -0
  373. package/dist/themes/examples/dark-theme.esm.js +124 -0
  374. package/dist/themes/examples/dark-theme.js +124 -0
  375. package/dist/themes/examples/minimal-theme.d.ts +93 -0
  376. package/dist/themes/examples/minimal-theme.esm.js +86 -0
  377. package/dist/themes/examples/minimal-theme.js +86 -0
  378. package/dist/themes/focus-management.d.ts +699 -0
  379. package/dist/themes/focus-management.esm.js +642 -0
  380. package/dist/themes/focus-management.js +642 -0
  381. package/dist/themes/fontLoader.d.ts +163 -0
  382. package/dist/themes/fontLoader.esm.js +192 -0
  383. package/dist/themes/fontLoader.js +192 -0
  384. package/dist/themes/high-contrast.d.ts +619 -0
  385. package/dist/themes/high-contrast.esm.js +573 -0
  386. package/dist/themes/high-contrast.js +573 -0
  387. package/dist/themes/index.d.ts +11 -0
  388. package/dist/themes/index.esm.js +19 -0
  389. package/dist/themes/index.js +19 -0
  390. package/dist/themes/inheritance.d.ts +160 -0
  391. package/dist/themes/inheritance.esm.js +219 -0
  392. package/dist/themes/inheritance.js +219 -0
  393. package/dist/themes/keyboard-navigation.d.ts +550 -0
  394. package/dist/themes/keyboard-navigation.esm.js +521 -0
  395. package/dist/themes/keyboard-navigation.js +521 -0
  396. package/dist/themes/motion-reduction.d.ts +660 -0
  397. package/dist/themes/motion-reduction.esm.js +602 -0
  398. package/dist/themes/motion-reduction.js +602 -0
  399. package/dist/themes/navigation.d.ts +232 -0
  400. package/dist/themes/navigation.esm.js +238 -0
  401. package/dist/themes/navigation.js +238 -0
  402. package/dist/themes/screen-reader.d.ts +645 -0
  403. package/dist/themes/screen-reader.esm.js +580 -0
  404. package/dist/themes/screen-reader.js +580 -0
  405. package/dist/themes/systemThemeDetector.d.ts +148 -0
  406. package/dist/themes/systemThemeDetector.esm.js +174 -0
  407. package/dist/themes/systemThemeDetector.js +174 -0
  408. package/dist/themes/themeCSSUpdater.d.ts +229 -0
  409. package/dist/themes/themeCSSUpdater.esm.js +250 -0
  410. package/dist/themes/themeCSSUpdater.js +250 -0
  411. package/dist/themes/themePersistence.d.ts +192 -0
  412. package/dist/themes/themePersistence.esm.js +217 -0
  413. package/dist/themes/themePersistence.js +217 -0
  414. package/dist/themes/themes/stan-design.d.ts +678 -0
  415. package/dist/themes/themes/stan-design.esm.js +518 -0
  416. package/dist/themes/themes/stan-design.js +518 -0
  417. package/dist/themes/types.d.ts +454 -0
  418. package/dist/themes/types.esm.js +446 -0
  419. package/dist/themes/types.js +446 -0
  420. package/dist/themes/useSystemTheme.d.ts +43 -0
  421. package/dist/themes/useSystemTheme.esm.js +48 -0
  422. package/dist/themes/useSystemTheme.js +48 -0
  423. package/dist/themes/useTheme.d.ts +20 -0
  424. package/dist/themes/useTheme.esm.js +87 -0
  425. package/dist/themes/useTheme.js +87 -0
  426. package/dist/themes/validation.d.ts +406 -0
  427. package/dist/themes/validation.esm.js +411 -0
  428. package/dist/themes/validation.js +411 -0
  429. package/dist/tokens/index.d.ts +25 -0
  430. package/dist/tokens/index.esm.js +23 -0
  431. package/dist/tokens/index.js +23 -0
  432. package/dist/tokens/tokenExporter.d.ts +336 -0
  433. package/dist/tokens/tokenExporter.esm.js +371 -0
  434. package/dist/tokens/tokenExporter.js +371 -0
  435. package/dist/tokens/tokenGenerator.d.ts +250 -0
  436. package/dist/tokens/tokenGenerator.esm.js +267 -0
  437. package/dist/tokens/tokenGenerator.js +267 -0
  438. package/dist/tokens/tokenManager.d.ts +194 -0
  439. package/dist/tokens/tokenManager.esm.js +235 -0
  440. package/dist/tokens/tokenManager.js +235 -0
  441. package/dist/tokens/tokenValidator.d.ts +488 -0
  442. package/dist/tokens/tokenValidator.esm.js +497 -0
  443. package/dist/tokens/tokenValidator.js +497 -0
  444. package/dist/tokens/types.d.ts +78 -0
  445. package/dist/tokens/types.esm.js +64 -0
  446. package/dist/tokens/types.js +64 -0
  447. package/dist/utils/bundle-analyzer.d.ts +260 -0
  448. package/dist/utils/bundle-analyzer.esm.js +242 -0
  449. package/dist/utils/bundle-analyzer.js +242 -0
  450. package/dist/utils/bundle-splitting.d.ts +483 -0
  451. package/dist/utils/bundle-splitting.esm.js +458 -0
  452. package/dist/utils/bundle-splitting.js +458 -0
  453. package/dist/utils/lazy-loading.d.ts +437 -0
  454. package/dist/utils/lazy-loading.esm.js +415 -0
  455. package/dist/utils/lazy-loading.js +415 -0
  456. package/dist/utils/performance-monitor.d.ts +513 -0
  457. package/dist/utils/performance-monitor.esm.js +472 -0
  458. package/dist/utils/performance-monitor.js +472 -0
  459. package/dist/utils/tree-shaking.d.ts +274 -0
  460. package/dist/utils/tree-shaking.esm.js +266 -0
  461. package/dist/utils/tree-shaking.js +266 -0
  462. package/package.json +1 -1
@@ -0,0 +1,317 @@
1
+ export interface LayoutPerformanceMetrics {
2
+ renderTime: number
3
+ layoutTime: number
4
+ memoryUsage: number
5
+ batteryLevel: number
6
+ fps: number
7
+ performanceScore: number
8
+ }
9
+
10
+ export interface LayoutPerformanceConfig {
11
+ enableLayoutCalculationOptimization?: boolean
12
+ enableMemoryManagement?: boolean
13
+ enableBatteryOptimization?: boolean
14
+ enablePerformanceMonitoring?: boolean
15
+ layoutThrottleMs?: number
16
+ memoryCleanupThreshold?: number
17
+ batteryLowThreshold?: number
18
+ fpsTarget?: number
19
+ }
20
+
21
+ export interface LayoutPerformanceCallbacks {
22
+ onPerformanceWarning?: (warning: string, metrics: LayoutPerformanceMetrics) => void
23
+ onMemoryWarning?: (usage: number, threshold: number) => void
24
+ onBatteryWarning?: (level: number, isLow: boolean) => void
25
+ onLayoutOptimization?: (optimization: string) => void
26
+ }
27
+
28
+ export declare const useLayoutPerformance: (
29
+ config: LayoutPerformanceConfig = {},
30
+ callbacks: LayoutPerformanceCallbacks = {}
31
+ ) => {
32
+ const {
33
+ enableLayoutCalculationOptimization = true,
34
+ enableMemoryManagement = true,
35
+ enableBatteryOptimization = true,
36
+ enablePerformanceMonitoring = true,
37
+ layoutThrottleMs = 16, // ~60fps
38
+ memoryCleanupThreshold = 80,
39
+ batteryLowThreshold = 0.2,
40
+ fpsTarget = 60
41
+ } = config
42
+
43
+ const [metrics, setMetrics] = useState<LayoutPerformanceMetrics>({
44
+ renderTime: 0,
45
+ layoutTime: 0,
46
+ memoryUsage: 0,
47
+ batteryLevel: 1,
48
+ fps: 60,
49
+ performanceScore: 100
50
+ })
51
+
52
+ const [isOptimizing, setIsOptimizing] = useState(false)
53
+ const [optimizations, setOptimizations] = useState<string[]>([])
54
+
55
+ const frameCountRef = useRef(0)
56
+ const lastFrameTimeRef = useRef(performance.now())
57
+ const layoutThrottleRef = useRef<number | null>(null)
58
+ const memoryCleanupRef = useRef<number | null>(null)
59
+ const batteryCheckRef = useRef<number | null>(null)
60
+
61
+ // FPS calculation
62
+ const calculateFPS = useCallback(() => {
63
+ const now = performance.now()
64
+ frameCountRef.current++
65
+
66
+ if (now - lastFrameTimeRef.current >= 1000) {
67
+ const fps = Math.round((frameCountRef.current * 1000) / (now - lastFrameTimeRef.current))
68
+ frameCountRef.current = 0
69
+ lastFrameTimeRef.current = now
70
+
71
+ setMetrics(prev => ({ ...prev, fps }))
72
+ return fps
73
+ }
74
+ return null
75
+ }, [])
76
+
77
+ // Layout calculation optimization
78
+ const optimizedLayoutCalculation = useCallback((callback: () => void) => {
79
+ if (!enableLayoutCalculationOptimization) {
80
+ callback()
81
+ return
82
+ }
83
+
84
+ if (layoutThrottleRef.current) {
85
+ return
86
+ }
87
+
88
+ layoutThrottleRef.current = window.setTimeout(() => {
89
+ const startTime = performance.now()
90
+ callback()
91
+ const endTime = performance.now()
92
+ const layoutTime = endTime - startTime
93
+
94
+ setMetrics(prev => ({ ...prev, layoutTime }))
95
+ layoutThrottleRef.current = null
96
+ }, layoutThrottleMs)
97
+ }, [enableLayoutCalculationOptimization, layoutThrottleMs])
98
+
99
+ // Memory management
100
+ const checkMemoryUsage = useCallback(() => {
101
+ if (!enableMemoryManagement || !('memory' in performance)) return
102
+
103
+ const memory = (performance as any).memory
104
+ const usage = (memory.usedJSHeapSize / memory.jsHeapSizeLimit) * 100
105
+
106
+ setMetrics(prev => ({ ...prev, memoryUsage: usage }))
107
+
108
+ if (usage > memoryCleanupThreshold) {
109
+ callbacks.onMemoryWarning?.(usage, memoryCleanupThreshold)
110
+ triggerMemoryCleanup()
111
+ }
112
+ }, [enableMemoryManagement, memoryCleanupThreshold, callbacks])
113
+
114
+ const triggerMemoryCleanup = useCallback(() => {
115
+ if (!enableMemoryManagement) return
116
+
117
+ setIsOptimizing(true)
118
+
119
+ // Simulate memory cleanup
120
+ setTimeout(() => {
121
+ // Force garbage collection if available
122
+ if ('gc' in window) {
123
+ (window as any).gc()
124
+ }
125
+
126
+ // Clear any cached data
127
+ if ('caches' in window) {
128
+ caches.keys().then(names => {
129
+ names.forEach(name => caches.delete(name))
130
+ })
131
+ }
132
+
133
+ setIsOptimizing(false)
134
+ setOptimizations(prev => [...prev, 'Memory cleanup completed'])
135
+ }, 100)
136
+ }, [enableMemoryManagement])
137
+
138
+ // Battery optimization
139
+ const checkBatteryStatus = useCallback(async () => {
140
+ if (!enableBatteryOptimization || !('getBattery' in navigator)) return
141
+
142
+ try {
143
+ const battery = await (navigator as any).getBattery()
144
+ const level = battery.level
145
+
146
+ setMetrics(prev => ({ ...prev, batteryLevel: level }))
147
+
148
+ if (level < batteryLowThreshold) {
149
+ callbacks.onBatteryWarning?.(level, true)
150
+ enableBatteryOptimizations()
151
+ }
152
+ } catch (error) {
153
+ console.warn('Battery API not available:', error)
154
+ }
155
+ }, [enableBatteryOptimization, batteryLowThreshold, callbacks])
156
+
157
+ const enableBatteryOptimizations = useCallback(() => {
158
+ if (!enableBatteryOptimization) return
159
+
160
+ setIsOptimizing(true)
161
+
162
+ // Simulate battery optimizations
163
+ setTimeout(() => {
164
+ // Reduce animation complexity
165
+ // Reduce layout calculations
166
+ // Optimize touch events
167
+
168
+ setIsOptimizing(false)
169
+ setOptimizations(prev => [...prev, 'Battery optimizations enabled'])
170
+ }, 200)
171
+ }, [enableBatteryOptimization])
172
+
173
+ // Performance monitoring
174
+ const measurePerformance = useCallback(() => {
175
+ if (!enablePerformanceMonitoring) return
176
+
177
+ const startTime = performance.now()
178
+
179
+ // Simulate performance measurement
180
+ setTimeout(() => {
181
+ const endTime = performance.now()
182
+ const renderTime = endTime - startTime
183
+
184
+ // Calculate performance score
185
+ const fpsScore = Math.min((metrics.fps / fpsTarget) * 100, 100)
186
+ const timeScore = Math.max(100 - (renderTime * 10), 0)
187
+ const memoryScore = Math.max(100 - metrics.memoryUsage, 0)
188
+ const batteryScore = metrics.batteryLevel * 100
189
+
190
+ const performanceScore = Math.round((fpsScore + timeScore + memoryScore + batteryScore) / 4)
191
+
192
+ setMetrics(prev => ({ ...prev, renderTime, performanceScore }))
193
+
194
+ if (performanceScore < 70) {
195
+ callbacks.onPerformanceWarning?.('Performance below target', { ...metrics, renderTime, performanceScore })
196
+ }
197
+ }, 10)
198
+ }, [enablePerformanceMonitoring, metrics, fpsTarget, callbacks])
199
+
200
+ // Layout optimization suggestions
201
+ const getLayoutOptimizations = useCallback(() => {
202
+ const suggestions: string[] = []
203
+
204
+ if (metrics.fps < fpsTarget * 0.8) {
205
+ suggestions.push('Reduce layout complexity to improve FPS')
206
+ }
207
+
208
+ if (metrics.memoryUsage > memoryCleanupThreshold) {
209
+ suggestions.push('Consider implementing virtual scrolling for large lists')
210
+ }
211
+
212
+ if (metrics.batteryLevel < batteryLowThreshold) {
213
+ suggestions.push('Reduce animations and effects for better battery life')
214
+ }
215
+
216
+ if (metrics.layoutTime > 16) {
217
+ suggestions.push('Optimize layout calculations to stay under 16ms')
218
+ }
219
+
220
+ return suggestions
221
+ }, [metrics, fpsTarget, memoryCleanupThreshold, batteryLowThreshold])
222
+
223
+ // Apply layout optimizations
224
+ const applyLayoutOptimizations = useCallback((optimizationType: string) => {
225
+ setIsOptimizing(true)
226
+
227
+ setTimeout(() => {
228
+ let optimization = ''
229
+
230
+ switch (optimizationType) {
231
+ case 'reduce-layout-complexity':
232
+ optimization = 'Layout complexity reduced - simplified DOM structure'
233
+ break
234
+ case 'virtual-scrolling':
235
+ optimization = 'Virtual scrolling implemented for better performance'
236
+ break
237
+ case 'animation-optimization':
238
+ optimization = 'Animations optimized for current device capabilities'
239
+ break
240
+ case 'touch-optimization':
241
+ optimization = 'Touch events optimized for better responsiveness'
242
+ break
243
+ default:
244
+ optimization = 'Layout optimization applied'
245
+ }
246
+
247
+ setOptimizations(prev => [...prev, optimization])
248
+ setIsOptimizing(false)
249
+ callbacks.onLayoutOptimization?.(optimization)
250
+ }, 300)
251
+ }, [callbacks])
252
+
253
+ // Initialize monitoring
254
+ useEffect(() => {
255
+ if (!enablePerformanceMonitoring) return
256
+
257
+ const interval = setInterval(() => {
258
+ calculateFPS()
259
+ measurePerformance()
260
+ }, 1000)
261
+
262
+ return () => clearInterval(interval)
263
+ }, [enablePerformanceMonitoring, calculateFPS, measurePerformance])
264
+
265
+ // Memory monitoring
266
+ useEffect(() => {
267
+ if (!enableMemoryManagement) return
268
+
269
+ const interval = setInterval(checkMemoryUsage, 5000)
270
+ return () => clearInterval(interval)
271
+ }, [enableMemoryManagement, checkMemoryUsage])
272
+
273
+ // Battery monitoring
274
+ useEffect(() => {
275
+ if (!enableBatteryOptimization) return
276
+
277
+ checkBatteryStatus()
278
+ const interval = setInterval(checkBatteryStatus, 30000) // Check every 30 seconds
279
+ return () => clearInterval(interval)
280
+ }, [enableBatteryOptimization, checkBatteryStatus])
281
+
282
+ // Cleanup on unmount
283
+ useEffect(() => {
284
+ return () => {
285
+ if (layoutThrottleRef.current) {
286
+ clearTimeout(layoutThrottleRef.current)
287
+ }
288
+ if (memoryCleanupRef.current) {
289
+ clearTimeout(memoryCleanupRef.current)
290
+ }
291
+ if (batteryCheckRef.current) {
292
+ clearTimeout(batteryCheckRef.current)
293
+ }
294
+ }
295
+ }, [])
296
+
297
+ return {
298
+ // State
299
+ metrics,
300
+ isOptimizing,
301
+ optimizations,
302
+
303
+ // Actions
304
+ optimizedLayoutCalculation,
305
+ triggerMemoryCleanup,
306
+ enableBatteryOptimizations,
307
+ applyLayoutOptimizations,
308
+
309
+ // Computed values
310
+ layoutOptimizations: getLayoutOptimizations(),
311
+ isPerformanceOptimal: metrics.performanceScore >= 80,
312
+ isMemoryOptimal: metrics.memoryUsage < memoryCleanupThreshold,
313
+ isBatteryOptimal: metrics.batteryLevel > batteryLowThreshold
314
+ }
315
+ }
316
+
317
+ export default useLayoutPerformance
@@ -0,0 +1,298 @@
1
+ import { useState, useEffect, useCallback, useRef } from 'react'
2
+
3
+ export interface LayoutPerformanceMetrics {
4
+ renderTime}
5
+
6
+ export interface LayoutPerformanceConfig {
7
+ enableLayoutCalculationOptimization?}
8
+
9
+ export interface LayoutPerformanceCallbacks {
10
+ onPerformanceWarning?, metrics) => void
11
+ onMemoryWarning?, threshold) => void
12
+ onBatteryWarning?, isLow) => void
13
+ onLayoutOptimization?) => void
14
+ }
15
+
16
+ export const useLayoutPerformance = (
17
+ config= {},
18
+ callbacks= {}
19
+ ) => {
20
+ const {
21
+ enableLayoutCalculationOptimization = true,
22
+ enableMemoryManagement = true,
23
+ enableBatteryOptimization = true,
24
+ enablePerformanceMonitoring = true,
25
+ layoutThrottleMs = 16, // ~60fps
26
+ memoryCleanupThreshold = 80,
27
+ batteryLowThreshold = 0.2,
28
+ fpsTarget = 60
29
+ } = config
30
+
31
+ const [metrics, setMetrics] = useState<LayoutPerformanceMetrics>({
32
+ renderTime,
33
+ layoutTime,
34
+ memoryUsage,
35
+ batteryLevel,
36
+ fps,
37
+ performanceScore})
38
+
39
+ const [isOptimizing, setIsOptimizing] = useState(false)
40
+ const [optimizations, setOptimizations] = useState<string[]>([])
41
+
42
+ const frameCountRef = useRef(0)
43
+ const lastFrameTimeRef = useRef(performance.now())
44
+ const layoutThrottleRef = useRef<number | null>(null)
45
+ const memoryCleanupRef = useRef<number | null>(null)
46
+ const batteryCheckRef = useRef<number | null>(null)
47
+
48
+ // FPS calculation
49
+ const calculateFPS = useCallback(() => {
50
+ const now = performance.now()
51
+ frameCountRef.current++
52
+
53
+ if (now - lastFrameTimeRef.current >= 1000) {
54
+ const fps = Math.round((frameCountRef.current * 1000) / (now - lastFrameTimeRef.current))
55
+ frameCountRef.current = 0
56
+ lastFrameTimeRef.current = now
57
+
58
+ setMetrics(prev => ({ ...prev, fps }))
59
+ return fps
60
+ }
61
+ return null
62
+ }, [])
63
+
64
+ // Layout calculation optimization
65
+ const optimizedLayoutCalculation = useCallback((callback) => void) => {
66
+ if (!enableLayoutCalculationOptimization) {
67
+ callback()
68
+ return
69
+ }
70
+
71
+ if (layoutThrottleRef.current) {
72
+ return
73
+ }
74
+
75
+ layoutThrottleRef.current = window.setTimeout(() => {
76
+ const startTime = performance.now()
77
+ callback()
78
+ const endTime = performance.now()
79
+ const layoutTime = endTime - startTime
80
+
81
+ setMetrics(prev => ({ ...prev, layoutTime }))
82
+ layoutThrottleRef.current = null
83
+ }, layoutThrottleMs)
84
+ }, [enableLayoutCalculationOptimization, layoutThrottleMs])
85
+
86
+ // Memory management
87
+ const checkMemoryUsage = useCallback(() => {
88
+ if (!enableMemoryManagement || !('memory' in performance)) return
89
+
90
+ const memory = (performance as any).memory
91
+ const usage = (memory.usedJSHeapSize / memory.jsHeapSizeLimit) * 100
92
+
93
+ setMetrics(prev => ({ ...prev, memoryUsage}))
94
+
95
+ if (usage > memoryCleanupThreshold) {
96
+ callbacks.onMemoryWarning?.(usage, memoryCleanupThreshold)
97
+ triggerMemoryCleanup()
98
+ }
99
+ }, [enableMemoryManagement, memoryCleanupThreshold, callbacks])
100
+
101
+ const triggerMemoryCleanup = useCallback(() => {
102
+ if (!enableMemoryManagement) return
103
+
104
+ setIsOptimizing(true)
105
+
106
+ // Simulate memory cleanup
107
+ setTimeout(() => {
108
+ // Force garbage collection if available
109
+ if ('gc' in window) {
110
+ (window as any).gc()
111
+ }
112
+
113
+ // Clear any cached data
114
+ if ('caches' in window) {
115
+ caches.keys().then(names => {
116
+ names.forEach(name => caches.delete(name))
117
+ })
118
+ }
119
+
120
+ setIsOptimizing(false)
121
+ setOptimizations(prev => [...prev, 'Memory cleanup completed'])
122
+ }, 100)
123
+ }, [enableMemoryManagement])
124
+
125
+ // Battery optimization
126
+ const checkBatteryStatus = useCallback(async () => {
127
+ if (!enableBatteryOptimization || !('getBattery' in navigator)) return
128
+
129
+ try {
130
+ const battery = await (navigator as any).getBattery()
131
+ const level = battery.level
132
+
133
+ setMetrics(prev => ({ ...prev, batteryLevel}))
134
+
135
+ if (level < batteryLowThreshold) {
136
+ callbacks.onBatteryWarning?.(level, true)
137
+ enableBatteryOptimizations()
138
+ }
139
+ } catch (error) {
140
+ console.warn('Battery API not available, error)
141
+ }
142
+ }, [enableBatteryOptimization, batteryLowThreshold, callbacks])
143
+
144
+ const enableBatteryOptimizations = useCallback(() => {
145
+ if (!enableBatteryOptimization) return
146
+
147
+ setIsOptimizing(true)
148
+
149
+ // Simulate battery optimizations
150
+ setTimeout(() => {
151
+ // Reduce animation complexity
152
+ // Reduce layout calculations
153
+ // Optimize touch events
154
+
155
+ setIsOptimizing(false)
156
+ setOptimizations(prev => [...prev, 'Battery optimizations enabled'])
157
+ }, 200)
158
+ }, [enableBatteryOptimization])
159
+
160
+ // Performance monitoring
161
+ const measurePerformance = useCallback(() => {
162
+ if (!enablePerformanceMonitoring) return
163
+
164
+ const startTime = performance.now()
165
+
166
+ // Simulate performance measurement
167
+ setTimeout(() => {
168
+ const endTime = performance.now()
169
+ const renderTime = endTime - startTime
170
+
171
+ // Calculate performance score
172
+ const fpsScore = Math.min((metrics.fps / fpsTarget) * 100, 100)
173
+ const timeScore = Math.max(100 - (renderTime * 10), 0)
174
+ const memoryScore = Math.max(100 - metrics.memoryUsage, 0)
175
+ const batteryScore = metrics.batteryLevel * 100
176
+
177
+ const performanceScore = Math.round((fpsScore + timeScore + memoryScore + batteryScore) / 4)
178
+
179
+ setMetrics(prev => ({ ...prev, renderTime, performanceScore }))
180
+
181
+ if (performanceScore < 70) {
182
+ callbacks.onPerformanceWarning?.('Performance below target', { ...metrics, renderTime, performanceScore })
183
+ }
184
+ }, 10)
185
+ }, [enablePerformanceMonitoring, metrics, fpsTarget, callbacks])
186
+
187
+ // Layout optimization suggestions
188
+ const getLayoutOptimizations = useCallback(() => {
189
+ const suggestions] = []
190
+
191
+ if (metrics.fps < fpsTarget * 0.8) {
192
+ suggestions.push('Reduce layout complexity to improve FPS')
193
+ }
194
+
195
+ if (metrics.memoryUsage > memoryCleanupThreshold) {
196
+ suggestions.push('Consider implementing virtual scrolling for large lists')
197
+ }
198
+
199
+ if (metrics.batteryLevel < batteryLowThreshold) {
200
+ suggestions.push('Reduce animations and effects for better battery life')
201
+ }
202
+
203
+ if (metrics.layoutTime > 16) {
204
+ suggestions.push('Optimize layout calculations to stay under 16ms')
205
+ }
206
+
207
+ return suggestions
208
+ }, [metrics, fpsTarget, memoryCleanupThreshold, batteryLowThreshold])
209
+
210
+ // Apply layout optimizations
211
+ const applyLayoutOptimizations = useCallback((optimizationType) => {
212
+ setIsOptimizing(true)
213
+
214
+ setTimeout(() => {
215
+ let optimization = ''
216
+
217
+ switch (optimizationType) {
218
+ case 'reduce-layout-complexity'= 'Layout complexity reduced - simplified DOM structure'
219
+ break
220
+ case 'virtual-scrolling'= 'Virtual scrolling implemented for better performance'
221
+ break
222
+ case 'animation-optimization'= 'Animations optimized for current device capabilities'
223
+ break
224
+ case 'touch-optimization'= 'Touch events optimized for better responsiveness'
225
+ break
226
+ default= 'Layout optimization applied'
227
+ }
228
+
229
+ setOptimizations(prev => [...prev, optimization])
230
+ setIsOptimizing(false)
231
+ callbacks.onLayoutOptimization?.(optimization)
232
+ }, 300)
233
+ }, [callbacks])
234
+
235
+ // Initialize monitoring
236
+ useEffect(() => {
237
+ if (!enablePerformanceMonitoring) return
238
+
239
+ const interval = setInterval(() => {
240
+ calculateFPS()
241
+ measurePerformance()
242
+ }, 1000)
243
+
244
+ return () => clearInterval(interval)
245
+ }, [enablePerformanceMonitoring, calculateFPS, measurePerformance])
246
+
247
+ // Memory monitoring
248
+ useEffect(() => {
249
+ if (!enableMemoryManagement) return
250
+
251
+ const interval = setInterval(checkMemoryUsage, 5000)
252
+ return () => clearInterval(interval)
253
+ }, [enableMemoryManagement, checkMemoryUsage])
254
+
255
+ // Battery monitoring
256
+ useEffect(() => {
257
+ if (!enableBatteryOptimization) return
258
+
259
+ checkBatteryStatus()
260
+ const interval = setInterval(checkBatteryStatus, 30000) // Check every 30 seconds
261
+ return () => clearInterval(interval)
262
+ }, [enableBatteryOptimization, checkBatteryStatus])
263
+
264
+ // Cleanup on unmount
265
+ useEffect(() => {
266
+ return () => {
267
+ if (layoutThrottleRef.current) {
268
+ clearTimeout(layoutThrottleRef.current)
269
+ }
270
+ if (memoryCleanupRef.current) {
271
+ clearTimeout(memoryCleanupRef.current)
272
+ }
273
+ if (batteryCheckRef.current) {
274
+ clearTimeout(batteryCheckRef.current)
275
+ }
276
+ }
277
+ }, [])
278
+
279
+ return {
280
+ // State
281
+ metrics,
282
+ isOptimizing,
283
+ optimizations,
284
+
285
+ // Actions
286
+ optimizedLayoutCalculation,
287
+ triggerMemoryCleanup,
288
+ enableBatteryOptimizations,
289
+ applyLayoutOptimizations,
290
+
291
+ // Computed values
292
+ layoutOptimizations),
293
+ isPerformanceOptimal= 80,
294
+ isMemoryOptimal,
295
+ isBatteryOptimal}
296
+ }
297
+
298
+ export default useLayoutPerformance