@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,277 @@
1
+ import { useState, useEffect, useCallback, useRef, useMemo } from 'react'
2
+
3
+ export interface BatteryMetrics {
4
+ level}
5
+
6
+ export interface BatteryThresholds {
7
+ low}
8
+
9
+ export interface BatteryCallbacks {
10
+ onBatteryLow?) => void
11
+ onBatteryCritical?) => void
12
+ onChargingStateChange?) => void
13
+ onPerformanceModeChange?]) => void
14
+ onThrottlingChange?, reason?) => void
15
+ }
16
+
17
+ export interface BatteryOptions {
18
+ updateInterval?}
19
+
20
+ const DEFAULT_THRESHOLDS= {
21
+ low,
22
+ critical,
23
+ warning}
24
+
25
+ export const useBatteryStatus = (options= {}) => {
26
+ const {
27
+ updateInterval = 5000,
28
+ thresholds = {},
29
+ enableThrottling = true,
30
+ callbacks = {}
31
+ } = options
32
+
33
+ const [metrics, setMetrics] = useState<BatteryMetrics>({
34
+ level,
35
+ charging,
36
+ chargingTime,
37
+ dischargingTime,
38
+ isLowPowerMode,
39
+ isCriticalBattery,
40
+ performanceMode,
41
+ throttlingEnabled})
42
+
43
+ const [isMonitoring, setIsMonitoring] = useState(false)
44
+ const intervalIdRef = useRef<NodeJS.Timeout>()
45
+ const batteryRef = useRef<any>(null)
46
+
47
+ // Merge default thresholds with custom ones
48
+ const finalThresholds = useMemo(() => ({
49
+ ...DEFAULT_THRESHOLDS,
50
+ ...thresholds
51
+ }), [thresholds])
52
+
53
+ // Determine performance mode based on battery level
54
+ const determinePerformanceMode = useCallback((level, charging)] => {
55
+ if (charging) return 'high'
56
+ if (level <= finalThresholds.critical) return 'low'
57
+ if (level <= finalThresholds.low) return 'medium'
58
+ return 'high'
59
+ }, [finalThresholds])
60
+
61
+ // Determine if throttling should be enabled
62
+ const shouldThrottle = useCallback((level, charging); reason?} => {
63
+ if (!enableThrottling) return { should}
64
+
65
+ if (level <= finalThresholds.critical) {
66
+ return { should, reason}
67
+ }
68
+
69
+ if (level <= finalThresholds.low && !charging) {
70
+ return { should, reason}
71
+ }
72
+
73
+ return { should}
74
+ }, [enableThrottling, finalThresholds])
75
+
76
+ // Update battery information
77
+ const updateBatteryInfo = useCallback(async () => {
78
+ if ('getBattery' in navigator) {
79
+ try {
80
+ if (!batteryRef.current) {
81
+ batteryRef.current = await (navigator as any).getBattery()
82
+ }
83
+
84
+ const battery = batteryRef.current
85
+ const level = battery.level
86
+ const charging = battery.charging
87
+ const chargingTime = battery.chargingTime
88
+ const dischargingTime = battery.dischargingTime
89
+
90
+ const isLowPowerMode = level < finalThresholds.low
91
+ const isCriticalBattery = level < finalThresholds.critical
92
+
93
+ // Determine performance mode
94
+ const performanceMode = determinePerformanceMode(level, charging)
95
+
96
+ // Determine throttling
97
+ const { should, reason } = shouldThrottle(level, charging)
98
+
99
+ const newMetrics= {
100
+ level,
101
+ charging,
102
+ chargingTime,
103
+ dischargingTime,
104
+ isLowPowerMode,
105
+ isCriticalBattery,
106
+ performanceMode,
107
+ throttlingEnabled,
108
+ throttlingReason}
109
+
110
+ setMetrics(newMetrics)
111
+
112
+ // Check thresholds and call callbacks
113
+ if (level <= finalThresholds.critical && callbacks.onBatteryCritical) {
114
+ callbacks.onBatteryCritical(level)
115
+ } else if (level <= finalThresholds.low && callbacks.onBatteryLow) {
116
+ callbacks.onBatteryLow(level)
117
+ }
118
+
119
+ if (charging !== metrics.charging && callbacks.onChargingStateChange) {
120
+ callbacks.onChargingStateChange(charging)
121
+ }
122
+
123
+ if (performanceMode !== metrics.performanceMode && callbacks.onPerformanceModeChange) {
124
+ callbacks.onPerformanceModeChange(performanceMode)
125
+ }
126
+
127
+ if (shouldThrottleNow !== metrics.throttlingEnabled && callbacks.onThrottlingChange) {
128
+ callbacks.onThrottlingChange(shouldThrottleNow, reason)
129
+ }
130
+
131
+ } catch (error) {
132
+ console.warn('Battery API not available, error)
133
+ }
134
+ }
135
+ }, [finalThresholds, callbacks, metrics.charging, metrics.performanceMode, metrics.throttlingEnabled, determinePerformanceMode, shouldThrottle])
136
+
137
+ // Start monitoring
138
+ const startMonitoring = useCallback(() => {
139
+ if (isMonitoring) return
140
+
141
+ setIsMonitoring(true)
142
+
143
+ // Initial battery check
144
+ updateBatteryInfo()
145
+
146
+ // Set up interval for battery updates
147
+ intervalIdRef.current = setInterval(updateBatteryInfo, updateInterval)
148
+ }, [isMonitoring, updateBatteryInfo, updateInterval])
149
+
150
+ // Stop monitoring
151
+ const stopMonitoring = useCallback(() => {
152
+ setIsMonitoring(false)
153
+
154
+ if (intervalIdRef.current) {
155
+ clearInterval(intervalIdRef.current)
156
+ }
157
+ }, [])
158
+
159
+ // Manual throttling controls
160
+ const enableThrottlingMode = useCallback((reason?) => {
161
+ setMetrics(prev => ({
162
+ ...prev,
163
+ throttlingEnabled,
164
+ throttlingReason}))
165
+ }, [])
166
+
167
+ const disableThrottlingMode = useCallback(() => {
168
+ setMetrics(prev => ({
169
+ ...prev,
170
+ throttlingEnabled,
171
+ throttlingReason}))
172
+ }, [])
173
+
174
+ // Auto-start monitoring on mount
175
+ useEffect(() => {
176
+ startMonitoring()
177
+ return () => stopMonitoring()
178
+ }, [startMonitoring, stopMonitoring])
179
+
180
+ // Battery optimization recommendations
181
+ const getOptimizationRecommendations = useCallback(() => {
182
+ const recommendations] = []
183
+
184
+ if (metrics.isCriticalBattery) {
185
+ recommendations.push('Critical battery level - enable maximum power saving mode')
186
+ recommendations.push('Reduce animation complexity and disable non-essential features')
187
+ recommendations.push('Consider switching to low-power theme')
188
+ } else if (metrics.isLowPowerMode) {
189
+ recommendations.push('Low battery detected - enable power saving optimizations')
190
+ recommendations.push('Reduce background processing and network requests')
191
+ recommendations.push('Optimize rendering performance')
192
+ }
193
+
194
+ if (metrics.throttlingEnabled) {
195
+ recommendations.push('Performance throttling active - adjust user experience accordingly')
196
+ }
197
+
198
+ if (!metrics.charging && metrics.level < 0.5) {
199
+ recommendations.push('Battery below 50% - consider enabling power saving features')
200
+ }
201
+
202
+ return recommendations
203
+ }, [metrics])
204
+
205
+ // Power saving suggestions
206
+ const getPowerSavingSuggestions = useCallback(() => {
207
+ const suggestions] = []
208
+
209
+ if (metrics.isLowPowerMode) {
210
+ suggestions.push('Reduce animation frame rate')
211
+ suggestions.push('Implement lazy loading for images and content')
212
+ suggestions.push('Use CSS transforms instead of JavaScript animations')
213
+ suggestions.push('Optimize network requests and caching')
214
+ suggestions.push('Consider using Intersection Observer for scroll-based animations')
215
+ }
216
+
217
+ if (metrics.isCriticalBattery) {
218
+ suggestions.push('Disable all non-essential animations')
219
+ suggestions.push('Implement aggressive content virtualization')
220
+ suggestions.push('Reduce DOM manipulation frequency')
221
+ suggestions.push('Use passive event listeners')
222
+ }
223
+
224
+ return suggestions
225
+ }, [metrics])
226
+
227
+ // Battery status summary
228
+ const getBatteryStatus = useCallback(() => {
229
+ if (metrics.charging) {
230
+ return `Charging (${Math.round(metrics.level * 100)}%)`
231
+ }
232
+
233
+ if (metrics.isCriticalBattery) {
234
+ return `Critical (${Math.round(metrics.level * 100)}%)`
235
+ }
236
+
237
+ if (metrics.isLowPowerMode) {
238
+ return `Low (${Math.round(metrics.level * 100)}%)`
239
+ }
240
+
241
+ return `Good (${Math.round(metrics.level * 100)}%)`
242
+ }, [metrics])
243
+
244
+ return {
245
+ // Metrics
246
+ metrics,
247
+
248
+ // Controls
249
+ startMonitoring,
250
+ stopMonitoring,
251
+ isMonitoring,
252
+ enableThrottlingMode,
253
+ disableThrottlingMode,
254
+
255
+ // Status
256
+ batteryLevel,
257
+ isCharging,
258
+ isLowPowerMode,
259
+ isCriticalBattery,
260
+ performanceMode,
261
+ throttlingEnabled,
262
+ throttlingReason,
263
+
264
+ // Optimization
265
+ getOptimizationRecommendations,
266
+ getPowerSavingSuggestions,
267
+ getBatteryStatus,
268
+
269
+ // Raw values
270
+ level,
271
+ charging,
272
+ chargingTime,
273
+ dischargingTime,
274
+
275
+ // Thresholds
276
+ thresholds}
277
+ }
@@ -0,0 +1,277 @@
1
+ import { useState, useEffect, useCallback, useRef, useMemo } from 'react'
2
+
3
+ export interface BatteryMetrics {
4
+ level}
5
+
6
+ export interface BatteryThresholds {
7
+ low}
8
+
9
+ export interface BatteryCallbacks {
10
+ onBatteryLow?) => void
11
+ onBatteryCritical?) => void
12
+ onChargingStateChange?) => void
13
+ onPerformanceModeChange?]) => void
14
+ onThrottlingChange?, reason?) => void
15
+ }
16
+
17
+ export interface BatteryOptions {
18
+ updateInterval?}
19
+
20
+ const DEFAULT_THRESHOLDS= {
21
+ low,
22
+ critical,
23
+ warning}
24
+
25
+ export const useBatteryStatus = (options= {}) => {
26
+ const {
27
+ updateInterval = 5000,
28
+ thresholds = {},
29
+ enableThrottling = true,
30
+ callbacks = {}
31
+ } = options
32
+
33
+ const [metrics, setMetrics] = useState<BatteryMetrics>({
34
+ level,
35
+ charging,
36
+ chargingTime,
37
+ dischargingTime,
38
+ isLowPowerMode,
39
+ isCriticalBattery,
40
+ performanceMode,
41
+ throttlingEnabled})
42
+
43
+ const [isMonitoring, setIsMonitoring] = useState(false)
44
+ const intervalIdRef = useRef<NodeJS.Timeout>()
45
+ const batteryRef = useRef<any>(null)
46
+
47
+ // Merge default thresholds with custom ones
48
+ const finalThresholds = useMemo(() => ({
49
+ ...DEFAULT_THRESHOLDS,
50
+ ...thresholds
51
+ }), [thresholds])
52
+
53
+ // Determine performance mode based on battery level
54
+ const determinePerformanceMode = useCallback((level, charging)] => {
55
+ if (charging) return 'high'
56
+ if (level <= finalThresholds.critical) return 'low'
57
+ if (level <= finalThresholds.low) return 'medium'
58
+ return 'high'
59
+ }, [finalThresholds])
60
+
61
+ // Determine if throttling should be enabled
62
+ const shouldThrottle = useCallback((level, charging); reason?} => {
63
+ if (!enableThrottling) return { should}
64
+
65
+ if (level <= finalThresholds.critical) {
66
+ return { should, reason}
67
+ }
68
+
69
+ if (level <= finalThresholds.low && !charging) {
70
+ return { should, reason}
71
+ }
72
+
73
+ return { should}
74
+ }, [enableThrottling, finalThresholds])
75
+
76
+ // Update battery information
77
+ const updateBatteryInfo = useCallback(async () => {
78
+ if ('getBattery' in navigator) {
79
+ try {
80
+ if (!batteryRef.current) {
81
+ batteryRef.current = await (navigator as any).getBattery()
82
+ }
83
+
84
+ const battery = batteryRef.current
85
+ const level = battery.level
86
+ const charging = battery.charging
87
+ const chargingTime = battery.chargingTime
88
+ const dischargingTime = battery.dischargingTime
89
+
90
+ const isLowPowerMode = level < finalThresholds.low
91
+ const isCriticalBattery = level < finalThresholds.critical
92
+
93
+ // Determine performance mode
94
+ const performanceMode = determinePerformanceMode(level, charging)
95
+
96
+ // Determine throttling
97
+ const { should, reason } = shouldThrottle(level, charging)
98
+
99
+ const newMetrics= {
100
+ level,
101
+ charging,
102
+ chargingTime,
103
+ dischargingTime,
104
+ isLowPowerMode,
105
+ isCriticalBattery,
106
+ performanceMode,
107
+ throttlingEnabled,
108
+ throttlingReason}
109
+
110
+ setMetrics(newMetrics)
111
+
112
+ // Check thresholds and call callbacks
113
+ if (level <= finalThresholds.critical && callbacks.onBatteryCritical) {
114
+ callbacks.onBatteryCritical(level)
115
+ } else if (level <= finalThresholds.low && callbacks.onBatteryLow) {
116
+ callbacks.onBatteryLow(level)
117
+ }
118
+
119
+ if (charging !== metrics.charging && callbacks.onChargingStateChange) {
120
+ callbacks.onChargingStateChange(charging)
121
+ }
122
+
123
+ if (performanceMode !== metrics.performanceMode && callbacks.onPerformanceModeChange) {
124
+ callbacks.onPerformanceModeChange(performanceMode)
125
+ }
126
+
127
+ if (shouldThrottleNow !== metrics.throttlingEnabled && callbacks.onThrottlingChange) {
128
+ callbacks.onThrottlingChange(shouldThrottleNow, reason)
129
+ }
130
+
131
+ } catch (error) {
132
+ console.warn('Battery API not available, error)
133
+ }
134
+ }
135
+ }, [finalThresholds, callbacks, metrics.charging, metrics.performanceMode, metrics.throttlingEnabled, determinePerformanceMode, shouldThrottle])
136
+
137
+ // Start monitoring
138
+ const startMonitoring = useCallback(() => {
139
+ if (isMonitoring) return
140
+
141
+ setIsMonitoring(true)
142
+
143
+ // Initial battery check
144
+ updateBatteryInfo()
145
+
146
+ // Set up interval for battery updates
147
+ intervalIdRef.current = setInterval(updateBatteryInfo, updateInterval)
148
+ }, [isMonitoring, updateBatteryInfo, updateInterval])
149
+
150
+ // Stop monitoring
151
+ const stopMonitoring = useCallback(() => {
152
+ setIsMonitoring(false)
153
+
154
+ if (intervalIdRef.current) {
155
+ clearInterval(intervalIdRef.current)
156
+ }
157
+ }, [])
158
+
159
+ // Manual throttling controls
160
+ const enableThrottlingMode = useCallback((reason?) => {
161
+ setMetrics(prev => ({
162
+ ...prev,
163
+ throttlingEnabled,
164
+ throttlingReason}))
165
+ }, [])
166
+
167
+ const disableThrottlingMode = useCallback(() => {
168
+ setMetrics(prev => ({
169
+ ...prev,
170
+ throttlingEnabled,
171
+ throttlingReason}))
172
+ }, [])
173
+
174
+ // Auto-start monitoring on mount
175
+ useEffect(() => {
176
+ startMonitoring()
177
+ return () => stopMonitoring()
178
+ }, [startMonitoring, stopMonitoring])
179
+
180
+ // Battery optimization recommendations
181
+ const getOptimizationRecommendations = useCallback(() => {
182
+ const recommendations] = []
183
+
184
+ if (metrics.isCriticalBattery) {
185
+ recommendations.push('Critical battery level - enable maximum power saving mode')
186
+ recommendations.push('Reduce animation complexity and disable non-essential features')
187
+ recommendations.push('Consider switching to low-power theme')
188
+ } else if (metrics.isLowPowerMode) {
189
+ recommendations.push('Low battery detected - enable power saving optimizations')
190
+ recommendations.push('Reduce background processing and network requests')
191
+ recommendations.push('Optimize rendering performance')
192
+ }
193
+
194
+ if (metrics.throttlingEnabled) {
195
+ recommendations.push('Performance throttling active - adjust user experience accordingly')
196
+ }
197
+
198
+ if (!metrics.charging && metrics.level < 0.5) {
199
+ recommendations.push('Battery below 50% - consider enabling power saving features')
200
+ }
201
+
202
+ return recommendations
203
+ }, [metrics])
204
+
205
+ // Power saving suggestions
206
+ const getPowerSavingSuggestions = useCallback(() => {
207
+ const suggestions] = []
208
+
209
+ if (metrics.isLowPowerMode) {
210
+ suggestions.push('Reduce animation frame rate')
211
+ suggestions.push('Implement lazy loading for images and content')
212
+ suggestions.push('Use CSS transforms instead of JavaScript animations')
213
+ suggestions.push('Optimize network requests and caching')
214
+ suggestions.push('Consider using Intersection Observer for scroll-based animations')
215
+ }
216
+
217
+ if (metrics.isCriticalBattery) {
218
+ suggestions.push('Disable all non-essential animations')
219
+ suggestions.push('Implement aggressive content virtualization')
220
+ suggestions.push('Reduce DOM manipulation frequency')
221
+ suggestions.push('Use passive event listeners')
222
+ }
223
+
224
+ return suggestions
225
+ }, [metrics])
226
+
227
+ // Battery status summary
228
+ const getBatteryStatus = useCallback(() => {
229
+ if (metrics.charging) {
230
+ return `Charging (${Math.round(metrics.level * 100)}%)`
231
+ }
232
+
233
+ if (metrics.isCriticalBattery) {
234
+ return `Critical (${Math.round(metrics.level * 100)}%)`
235
+ }
236
+
237
+ if (metrics.isLowPowerMode) {
238
+ return `Low (${Math.round(metrics.level * 100)}%)`
239
+ }
240
+
241
+ return `Good (${Math.round(metrics.level * 100)}%)`
242
+ }, [metrics])
243
+
244
+ return {
245
+ // Metrics
246
+ metrics,
247
+
248
+ // Controls
249
+ startMonitoring,
250
+ stopMonitoring,
251
+ isMonitoring,
252
+ enableThrottlingMode,
253
+ disableThrottlingMode,
254
+
255
+ // Status
256
+ batteryLevel,
257
+ isCharging,
258
+ isLowPowerMode,
259
+ isCriticalBattery,
260
+ performanceMode,
261
+ throttlingEnabled,
262
+ throttlingReason,
263
+
264
+ // Optimization
265
+ getOptimizationRecommendations,
266
+ getPowerSavingSuggestions,
267
+ getBatteryStatus,
268
+
269
+ // Raw values
270
+ level,
271
+ charging,
272
+ chargingTime,
273
+ dischargingTime,
274
+
275
+ // Thresholds
276
+ thresholds}
277
+ }