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