@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.7 → 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 (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,259 @@
1
+ import { useState, useEffect, useCallback, useMemo } from 'react'
2
+ import { useDevice } from './use-device'
3
+
4
+ export interface AnimationProfile {
5
+ duration}
6
+ easing}
7
+ performance}
8
+ }
9
+
10
+ export interface PerformanceMetrics {
11
+ fps}
12
+
13
+ export const useAnimationProfile = () => {
14
+ const deviceInfo = useDevice()
15
+ const [performanceMetrics, setPerformanceMetrics] = useState<PerformanceMetrics>({
16
+ fps,
17
+ memoryUsage,
18
+ batteryLevel,
19
+ isLowPowerMode})
20
+ const [isReducedMotion, setIsReducedMotion] = useState(false)
21
+
22
+ // Check for reduced motion preference
23
+ useEffect(() => {
24
+ const checkReducedMotion = () => {
25
+ if (typeof window !== 'undefined' && window.matchMedia) {
26
+ const reducedMotionQuery = window.matchMedia('(prefers-reduced-motion)')
27
+ setIsReducedMotion(reducedMotionQuery.matches)
28
+
29
+ reducedMotionQuery.addEventListener('change', (e) => {
30
+ setIsReducedMotion(e.matches)
31
+ })
32
+ }
33
+ }
34
+
35
+ checkReducedMotion()
36
+ }, [])
37
+
38
+ // Monitor frame rate
39
+ useEffect(() => {
40
+ let frameCount = 0
41
+ let lastTime = performance.now()
42
+ let animationId= () => {
43
+ frameCount++
44
+ const currentTime = performance.now()
45
+
46
+ if (currentTime - lastTime >= 1000) {
47
+ const fps = Math.round((frameCount * 1000) / (currentTime - lastTime))
48
+ setPerformanceMetrics(prev => ({ ...prev, fps }))
49
+ frameCount = 0
50
+ lastTime = currentTime
51
+ }
52
+
53
+ animationId = requestAnimationFrame(measureFPS)
54
+ }
55
+
56
+ animationId = requestAnimationFrame(measureFPS)
57
+
58
+ return () => {
59
+ if (animationId) {
60
+ cancelAnimationFrame(animationId)
61
+ }
62
+ }
63
+ }, [])
64
+
65
+ // Monitor memory usage (if available)
66
+ useEffect(() => {
67
+ const updateMemoryInfo = () => {
68
+ if ('memory' in performance) {
69
+ const memory = (performance as any).memory
70
+ setPerformanceMetrics(prev => ({
71
+ ...prev,
72
+ memoryUsage}))
73
+ }
74
+ }
75
+
76
+ const interval = setInterval(updateMemoryInfo, 5000)
77
+ updateMemoryInfo()
78
+
79
+ return () => clearInterval(interval)
80
+ }, [])
81
+
82
+ // Monitor battery status (if available)
83
+ useEffect(() => {
84
+ const updateBatteryInfo = async () => {
85
+ if ('getBattery' in navigator) {
86
+ try {
87
+ const battery = await (navigator as any).getBattery()
88
+ setPerformanceMetrics(prev => ({
89
+ ...prev,
90
+ batteryLevel,
91
+ isLowPowerMode}))
92
+
93
+ battery.addEventListener('levelchange', () => {
94
+ setPerformanceMetrics(prev => ({
95
+ ...prev,
96
+ batteryLevel,
97
+ isLowPowerMode}))
98
+ })
99
+ } catch (error) {
100
+ console.warn('Battery API not available, error)
101
+ }
102
+ }
103
+ }
104
+
105
+ updateBatteryInfo()
106
+ }, [])
107
+
108
+ // Determine performance mode based on metrics
109
+ const performanceMode = useMemo(() => {
110
+ if (performanceMetrics.fps < 30) return 'low'
111
+ if (performanceMetrics.fps < 50) return 'medium'
112
+ return 'high'
113
+ }, [performanceMetrics.fps])
114
+
115
+ // Determine if battery optimization should be enabled
116
+ const shouldOptimizeForBattery = useMemo(() => {
117
+ return (
118
+ performanceMetrics.isLowPowerMode ||
119
+ (performanceMetrics.batteryLevel !== undefined && performanceMetrics.batteryLevel < 0.3) ||
120
+ performanceMode === 'low'
121
+ )
122
+ }, [performanceMetrics.isLowPowerMode, performanceMetrics.batteryLevel, performanceMode])
123
+
124
+ // Get device-specific animation profile
125
+ const getAnimationProfile = useCallback(()=> {
126
+ const baseProfile= {
127
+ duration,
128
+ normal,
129
+ slow},
130
+ easing,
131
+ easeIn,
132
+ easeOut,
133
+ easeInOut,
134
+ bounce, -0.55, 0.265, 1.55)'
135
+ },
136
+ performance,
137
+ batteryOptimized,
138
+ reducedMotion}
139
+ }
140
+
141
+ // Apply device-specific optimizations
142
+ if (deviceInfo.isMobile) {
143
+ baseProfile.duration.fast = '0.1s'
144
+ baseProfile.duration.normal = '0.2s'
145
+ baseProfile.duration.slow = '0.3s'
146
+ } else if (deviceInfo.isTablet) {
147
+ baseProfile.duration.fast = '0.15s'
148
+ baseProfile.duration.normal = '0.25s'
149
+ baseProfile.duration.slow = '0.4s'
150
+ }
151
+
152
+ // Apply performance-based optimizations
153
+ if (performanceMode === 'low' || shouldOptimizeForBattery) {
154
+ baseProfile.duration.fast = '0.05s'
155
+ baseProfile.duration.normal = '0.1s'
156
+ baseProfile.duration.slow = '0.15s'
157
+ }
158
+
159
+ // Apply reduced motion preferences
160
+ if (isReducedMotion) {
161
+ baseProfile.duration.fast = '0.01s'
162
+ baseProfile.duration.normal = '0.01s'
163
+ baseProfile.duration.slow = '0.01s'
164
+ baseProfile.easing.ease = 'linear'
165
+ baseProfile.easing.easeIn = 'linear'
166
+ baseProfile.easing.easeOut = 'linear'
167
+ baseProfile.easing.easeInOut = 'linear'
168
+ baseProfile.easing.bounce = 'linear'
169
+ }
170
+
171
+ return baseProfile
172
+ }, [deviceInfo.isMobile, deviceInfo.isTablet, performanceMode, shouldOptimizeForBattery, isReducedMotion])
173
+
174
+ // Get CSS classes for the current animation profile
175
+ const getAnimationClasses = useCallback(() => {
176
+ const profile = getAnimationProfile()
177
+ const classes = []
178
+
179
+ // Device-specific classes
180
+ if (deviceInfo.isMobile) {
181
+ classes.push('coach-stan-mobile-animation')
182
+ } else if (deviceInfo.isTablet) {
183
+ classes.push('coach-stan-tablet-animation')
184
+ } else {
185
+ classes.push('coach-stan-desktop-animation')
186
+ }
187
+
188
+ // Performance-based classes
189
+ if (profile.performance.mode === 'low' || profile.performance.batteryOptimized) {
190
+ classes.push('coach-stan-performance-mode')
191
+ }
192
+
193
+ if (profile.performance.batteryOptimized) {
194
+ classes.push('coach-stan-battery-saver')
195
+ }
196
+
197
+ // Reduced motion classes
198
+ if (profile.performance.reducedMotion) {
199
+ classes.push('reduced-motion')
200
+ }
201
+
202
+ return classes.join(' ')
203
+ }, [deviceInfo.isMobile, deviceInfo.isTablet, getAnimationProfile])
204
+
205
+ // Get optimized duration for specific use case
206
+ const getOptimizedDuration = useCallback((type= 'normal') => {
207
+ const profile = getAnimationProfile()
208
+ return profile.duration[type]
209
+ }, [getAnimationProfile])
210
+
211
+ // Get optimized easing for specific use case
212
+ const getOptimizedEasing = useCallback((type] = 'ease') => {
213
+ const profile = getAnimationProfile()
214
+ return profile.easing[type]
215
+ }, [getAnimationProfile])
216
+
217
+ // Check if animations should be disabled
218
+ const shouldDisableAnimations = useCallback(() => {
219
+ return (
220
+ isReducedMotion ||
221
+ performanceMode === 'low' ||
222
+ shouldOptimizeForBattery
223
+ )
224
+ }, [isReducedMotion, performanceMode, shouldOptimizeForBattery])
225
+
226
+ return {
227
+ profile),
228
+ performanceMetrics,
229
+ deviceInfo,
230
+ getAnimationClasses,
231
+ getOptimizedDuration,
232
+ getOptimizedEasing,
233
+ shouldDisableAnimations,
234
+ isReducedMotion,
235
+ performanceMode,
236
+ shouldOptimizeForBattery
237
+ }
238
+ }
239
+
240
+ // Convenience hooks for specific use cases
241
+ export const useAnimationDuration = (type= 'normal') => {
242
+ const { getOptimizedDuration } = useAnimationProfile()
243
+ return getOptimizedDuration(type)
244
+ }
245
+
246
+ export const useAnimationEasing = (type] = 'ease') => {
247
+ const { getOptimizedEasing } = useAnimationProfile()
248
+ return getOptimizedEasing(type)
249
+ }
250
+
251
+ export const useAnimationClasses = () => {
252
+ const { getAnimationClasses } = useAnimationProfile()
253
+ return getAnimationClasses()
254
+ }
255
+
256
+ export const usePerformanceMode = () => {
257
+ const { performanceMode, shouldOptimizeForBattery } = useAnimationProfile()
258
+ return { performanceMode, shouldOptimizeForBattery }
259
+ }
@@ -0,0 +1,382 @@
1
+ export interface BatteryAnimationConfig {
2
+ enableBatteryMonitoring?: boolean
3
+ enablePerformanceThrottling?: boolean
4
+ enableReducedMotion?: boolean
5
+ enableUserPreferences?: boolean
6
+ enableAutomaticOptimization?: boolean
7
+ lowBatteryThreshold?: number
8
+ criticalBatteryThreshold?: number
9
+ performanceThrottleThreshold?: number
10
+ animationComplexityLevels?: 'low' | 'medium' | 'high'
11
+ }
12
+
13
+ export interface BatteryAnimationState {
14
+ batteryLevel: number
15
+ isLowBattery: boolean
16
+ isCriticalBattery: boolean
17
+ isCharging: boolean
18
+ performanceScore: number
19
+ shouldThrottle: boolean
20
+ throttleLevel: 'none' | 'light' | 'moderate' | 'aggressive'
21
+ reducedMotion: boolean
22
+ userPreference: 'performance' | 'balanced' | 'battery' | 'accessibility'
23
+ }
24
+
25
+ export interface BatteryAnimationCallbacks {
26
+ onBatteryLevelChange?: (level: number, isLow: boolean) => void
27
+ onPerformanceWarning?: (score: number, shouldThrottle: boolean) => void
28
+ onAnimationThrottled?: (level: string, reason: string) => void
29
+ onUserPreferenceChange?: (preference: string) => void
30
+ onReducedMotionChange?: (enabled: boolean) => void
31
+ }
32
+
33
+ export declare const useBatteryAnimations: (
34
+ config: BatteryAnimationConfig = {},
35
+ callbacks: BatteryAnimationCallbacks = {}
36
+ ) => {
37
+ const {
38
+ enableBatteryMonitoring = true,
39
+ enablePerformanceThrottling = true,
40
+ enableReducedMotion = true,
41
+ enableUserPreferences = true,
42
+ enableAutomaticOptimization = true,
43
+ lowBatteryThreshold = 0.2,
44
+ criticalBatteryThreshold = 0.1,
45
+ performanceThrottleThreshold = 70
46
+ } = config
47
+
48
+ const [state, setState] = useState<BatteryAnimationState>({
49
+ batteryLevel: 1,
50
+ isLowBattery: false,
51
+ isCriticalBattery: false,
52
+ isCharging: false,
53
+ performanceScore: 100,
54
+ shouldThrottle: false,
55
+ throttleLevel: 'none',
56
+ reducedMotion: false,
57
+ userPreference: 'balanced'
58
+ })
59
+
60
+ const [isOptimizing, setIsOptimizing] = useState(false)
61
+ const [optimizations, setOptimizations] = useState<string[]>([])
62
+ const batteryRef = useRef<any>(null)
63
+ const performanceTimerRef = useRef<number | null>(null)
64
+ const batteryCheckIntervalRef = useRef<number | null>(null)
65
+
66
+ // Battery level detection
67
+ const getBatteryStatus = useCallback(async (): Promise<void> => {
68
+ if (!enableBatteryMonitoring || !('getBattery' in navigator)) return
69
+
70
+ try {
71
+ const battery = await (navigator as any).getBattery()
72
+ batteryRef.current = battery
73
+
74
+ const batteryLevel = battery.level
75
+ const isCharging = battery.charging
76
+ const isLowBattery = batteryLevel <= lowBatteryThreshold
77
+ const isCriticalBattery = batteryLevel <= criticalBatteryThreshold
78
+
79
+ setState(prev => ({
80
+ ...prev,
81
+ batteryLevel,
82
+ isLowBattery,
83
+ isCriticalBattery,
84
+ isCharging
85
+ }))
86
+
87
+ callbacks.onBatteryLevelChange?.(batteryLevel, isLowBattery)
88
+ } catch (error) {
89
+ console.warn('Battery API not available:', error)
90
+ }
91
+ }, [enableBatteryMonitoring, lowBatteryThreshold, criticalBatteryThreshold, callbacks])
92
+
93
+ // Performance monitoring
94
+ const measurePerformance = useCallback(() => {
95
+ if (!enablePerformanceThrottling) return
96
+
97
+ try {
98
+ // Simulate performance measurement
99
+ const performanceScore = Math.random() * 100
100
+ const shouldThrottle = performanceScore < performanceThrottleThreshold
101
+
102
+ setState(prev => ({
103
+ ...prev,
104
+ performanceScore,
105
+ shouldThrottle
106
+ }))
107
+
108
+ if (shouldThrottle) {
109
+ callbacks.onPerformanceWarning?.(performanceScore, shouldThrottle)
110
+ }
111
+ } catch (error) {
112
+ console.warn('Performance measurement failed:', error)
113
+ }
114
+ }, [enablePerformanceThrottling, performanceThrottleThreshold, callbacks])
115
+
116
+ // Reduced motion detection
117
+ const checkReducedMotion = useCallback(() => {
118
+ if (!enableReducedMotion) return
119
+
120
+ try {
121
+ const reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches
122
+
123
+ setState(prev => ({
124
+ ...prev,
125
+ reducedMotion
126
+ }))
127
+
128
+ callbacks.onReducedMotionChange?.(reducedMotion)
129
+ } catch (error) {
130
+ console.warn('Reduced motion detection failed:', error)
131
+ }
132
+ }, [enableReducedMotion, callbacks])
133
+
134
+ // Animation throttling based on battery and performance
135
+ const applyAnimationThrottling = useCallback(() => {
136
+ if (!enablePerformanceThrottling) return
137
+
138
+ setIsOptimizing(true)
139
+
140
+ setTimeout(() => {
141
+ let throttleLevel: 'none' | 'light' | 'moderate' | 'aggressive' = 'none'
142
+ let optimizations: string[] = []
143
+
144
+ // Battery-based throttling
145
+ if (state.isCriticalBattery) {
146
+ throttleLevel = 'aggressive'
147
+ optimizations.push('Critical battery: Maximum animation throttling applied')
148
+ optimizations.push('All non-essential animations disabled')
149
+ optimizations.push('Only essential UI transitions enabled')
150
+ } else if (state.isLowBattery) {
151
+ throttleLevel = 'moderate'
152
+ optimizations.push('Low battery: Enhanced animation throttling applied')
153
+ optimizations.push('Animation complexity reduced by 60%')
154
+ optimizations.push('Performance optimizations enabled')
155
+ } else if (state.batteryLevel < 0.5) {
156
+ throttleLevel = 'light'
157
+ optimizations.push('Medium battery: Light animation throttling applied')
158
+ optimizations.push('Animation complexity reduced by 30%')
159
+ optimizations.push('Battery optimization enabled')
160
+ }
161
+
162
+ // Performance-based throttling
163
+ if (state.shouldThrottle) {
164
+ if (throttleLevel === 'none') throttleLevel = 'light'
165
+ optimizations.push('Performance-based throttling applied')
166
+ optimizations.push('Animation frame rate optimized')
167
+ }
168
+
169
+ // Reduced motion support
170
+ if (state.reducedMotion) {
171
+ if (throttleLevel === 'none') throttleLevel = 'light'
172
+ optimizations.push('Reduced motion preference respected')
173
+ optimizations.push('Animation duration minimized')
174
+ }
175
+
176
+ // User preference consideration
177
+ if (state.userPreference === 'battery') {
178
+ if (throttleLevel === 'none') throttleLevel = 'light'
179
+ optimizations.push('User preference: Battery optimization enabled')
180
+ } else if (state.userPreference === 'accessibility') {
181
+ if (throttleLevel === 'none') throttleLevel = 'light'
182
+ optimizations.push('User preference: Accessibility optimization enabled')
183
+ }
184
+
185
+ setState(prev => ({
186
+ ...prev,
187
+ throttleLevel
188
+ }))
189
+
190
+ setOptimizations(prev => [...prev, ...optimizations])
191
+ setIsOptimizing(false)
192
+
193
+ callbacks.onAnimationThrottled?.(throttleLevel, 'Battery and performance optimization')
194
+
195
+ optimizations.forEach(optimization => {
196
+ console.log('Animation optimization:', optimization)
197
+ })
198
+ }, 300)
199
+ }, [enablePerformanceThrottling, state, callbacks])
200
+
201
+ // Get animation recommendations
202
+ const getAnimationRecommendations = useCallback(() => {
203
+ const recommendations = []
204
+
205
+ if (state.isCriticalBattery) {
206
+ recommendations.push('Critical battery: Disable all animations except essential transitions')
207
+ recommendations.push('Use static UI elements instead of animated ones')
208
+ recommendations.push('Minimize DOM updates and reflows')
209
+ } else if (state.isLowBattery) {
210
+ recommendations.push('Low battery: Reduce animation complexity significantly')
211
+ recommendations.push('Use simple transforms instead of complex animations')
212
+ recommendations.push('Limit animation duration to under 300ms')
213
+ } else if (state.batteryLevel < 0.5) {
214
+ recommendations.push('Medium battery: Consider light animation optimization')
215
+ recommendations.push('Use CSS transforms instead of JavaScript animations')
216
+ recommendations.push('Implement animation pausing when not in viewport')
217
+ }
218
+
219
+ if (state.shouldThrottle) {
220
+ recommendations.push('Performance issue: Reduce animation frame rate')
221
+ recommendations.push('Use requestAnimationFrame for smooth animations')
222
+ recommendations.push('Implement animation debouncing')
223
+ }
224
+
225
+ if (state.reducedMotion) {
226
+ recommendations.push('Accessibility: Respect reduced motion preference')
227
+ recommendations.push('Provide alternative non-animated experiences')
228
+ recommendations.push('Use subtle transitions instead of animations')
229
+ }
230
+
231
+ return recommendations
232
+ }, [state])
233
+
234
+ // Get optimal animation settings
235
+ const getOptimalAnimationSettings = useCallback(() => {
236
+ const settings = {
237
+ duration: 300,
238
+ easing: 'ease-out',
239
+ shouldAnimate: true,
240
+ complexity: 'medium',
241
+ frameRate: 60
242
+ }
243
+
244
+ switch (state.throttleLevel) {
245
+ case 'aggressive':
246
+ settings.duration = 150
247
+ settings.easing = 'linear'
248
+ settings.shouldAnimate = false
249
+ settings.complexity = 'minimal'
250
+ settings.frameRate = 30
251
+ break
252
+ case 'moderate':
253
+ settings.duration = 200
254
+ settings.easing = 'ease-out'
255
+ settings.shouldAnimate = true
256
+ settings.complexity = 'low'
257
+ settings.frameRate = 45
258
+ break
259
+ case 'light':
260
+ settings.duration = 250
261
+ settings.easing = 'ease-out'
262
+ settings.shouldAnimate = true
263
+ settings.complexity = 'medium'
264
+ settings.frameRate = 50
265
+ break
266
+ default:
267
+ settings.duration = 300
268
+ settings.easing = 'ease-out'
269
+ settings.shouldAnimate = true
270
+ settings.complexity = 'high'
271
+ settings.frameRate = 60
272
+ }
273
+
274
+ // Override for reduced motion
275
+ if (state.reducedMotion) {
276
+ settings.duration = 100
277
+ settings.easing = 'linear'
278
+ settings.complexity = 'minimal'
279
+ settings.frameRate = 30
280
+ }
281
+
282
+ return settings
283
+ }, [state.throttleLevel, state.reducedMotion])
284
+
285
+ // Update user preferences
286
+ const updateUserPreference = useCallback((preference: string) => {
287
+ if (!enableUserPreferences) return
288
+
289
+ setState(prev => ({
290
+ ...prev,
291
+ userPreference: preference as any
292
+ }))
293
+
294
+ callbacks.onUserPreferenceChange?.(preference)
295
+
296
+ // Apply optimizations based on new preference
297
+ setTimeout(() => {
298
+ applyAnimationThrottling()
299
+ }, 100)
300
+ }, [enableUserPreferences, callbacks, applyAnimationThrottling])
301
+
302
+ // Initialize monitoring
303
+ useEffect(() => {
304
+ try {
305
+ // Get initial battery status
306
+ if (enableBatteryMonitoring) {
307
+ getBatteryStatus()
308
+ batteryCheckIntervalRef.current = window.setInterval(getBatteryStatus, 10000)
309
+ }
310
+
311
+ // Set up performance monitoring
312
+ if (enablePerformanceThrottling) {
313
+ performanceTimerRef.current = window.setInterval(measurePerformance, 5000)
314
+ }
315
+
316
+ // Check reduced motion preference
317
+ if (enableReducedMotion) {
318
+ checkReducedMotion()
319
+
320
+ // Listen for preference changes
321
+ const mediaQuery = window.matchMedia('(prefers-reduced-motion: reduce)')
322
+ const handleChange = () => checkReducedMotion()
323
+ mediaQuery.addEventListener('change', handleChange)
324
+
325
+ return () => mediaQuery.removeEventListener('change', handleChange)
326
+ }
327
+ } catch (error) {
328
+ console.warn('Battery animation initialization failed:', error)
329
+ }
330
+ }, [enableBatteryMonitoring, enablePerformanceThrottling, enableReducedMotion, getBatteryStatus, measurePerformance, checkReducedMotion])
331
+
332
+ // Apply throttling when state changes
333
+ useEffect(() => {
334
+ if (enableAutomaticOptimization) {
335
+ applyAnimationThrottling()
336
+ }
337
+ }, [enableAutomaticOptimization, applyAnimationThrottling])
338
+
339
+ // Cleanup on unmount
340
+ useEffect(() => {
341
+ return () => {
342
+ if (performanceTimerRef.current) {
343
+ clearInterval(performanceTimerRef.current)
344
+ }
345
+ if (batteryCheckIntervalRef.current) {
346
+ clearInterval(batteryCheckIntervalRef.current)
347
+ }
348
+ }
349
+ }, [])
350
+
351
+ return {
352
+ // State
353
+ state,
354
+ isOptimizing,
355
+ optimizations,
356
+
357
+ // Actions
358
+ getBatteryStatus,
359
+ measurePerformance,
360
+ checkReducedMotion,
361
+ applyAnimationThrottling,
362
+ updateUserPreference,
363
+
364
+ // Computed values
365
+ batteryPercentage: Math.round(state.batteryLevel * 100),
366
+ shouldDisableAnimations: state.throttleLevel === 'aggressive' || state.reducedMotion,
367
+ animationSettings: getOptimalAnimationSettings(),
368
+ recommendations: getAnimationRecommendations(),
369
+
370
+ // Utility functions
371
+ isAnimationOptimized: () => state.throttleLevel !== 'none',
372
+ getBatteryHealth: () => {
373
+ if (state.batteryLevel >= 0.8) return 'excellent'
374
+ if (state.batteryLevel >= 0.6) return 'good'
375
+ if (state.batteryLevel >= 0.4) return 'fair'
376
+ if (state.batteryLevel >= 0.2) return 'poor'
377
+ return 'critical'
378
+ }
379
+ }
380
+ }
381
+
382
+ export default useBatteryAnimations