@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,250 @@
1
+ /**
2
+ * Theme CSS Variable Updater
3
+ * Applies theme configurations to CSS custom properties
4
+ */
5
+
6
+ import { CompleteThemeConfig } from './types';
7
+
8
+ export class ThemeCSSUpdater {
9
+ private root;
10
+
11
+ constructor() {
12
+ this.root = document.documentElement;
13
+ }
14
+
15
+ /**
16
+ * Apply a complete theme configuration to CSS custom properties
17
+ */
18
+ applyTheme(theme));
19
+ this.applyFonts(theme.fonts);
20
+ this.applySpacing(theme.spacing);
21
+ this.applyShadows(theme.shadows);
22
+ this.applyTransitions(theme.transitions);
23
+ this.applyBorderRadius(theme.borderRadius);
24
+ }
25
+
26
+ /**
27
+ * Apply color variables to CSS custom properties
28
+ */
29
+ private applyColors(colors])).forEach(([shade, value]) => {
30
+ // Set flat version (for backward compatibility)
31
+ this.root.style.setProperty(`--cs-primary-${shade}`, value);
32
+ // Set nested version (for badge CSS and other components)
33
+ this.root.style.setProperty(`--cs-colors-primary-${shade}`, value);
34
+ });
35
+
36
+ // Secondary colors - set both flat and nested versions
37
+ Object.entries(colors.secondary).forEach(([shade, value]) => {
38
+ // Set flat version (for backward compatibility)
39
+ this.root.style.setProperty(`--cs-secondary-${shade}`, value);
40
+ // Set nested version (for badge CSS and other components)
41
+ this.root.style.setProperty(`--cs-colors-secondary-${shade}`, value);
42
+ });
43
+
44
+ // Semantic colors - set both flat and nested versions
45
+ this.root.style.setProperty('--cs-success', colors.semantic.success);
46
+ this.root.style.setProperty('--cs-colors-semantic-success', colors.semantic.success);
47
+ this.root.style.setProperty('--cs-warning', colors.semantic.warning);
48
+ this.root.style.setProperty('--cs-colors-semantic-warning', colors.semantic.warning);
49
+ this.root.style.setProperty('--cs-error', colors.semantic.error);
50
+ this.root.style.setProperty('--cs-colors-semantic-error', colors.semantic.error);
51
+ this.root.style.setProperty('--cs-info', colors.semantic.info);
52
+ this.root.style.setProperty('--cs-colors-semantic-info', colors.semantic.info);
53
+
54
+ // Neutral colors - set both flat and nested versions
55
+ Object.entries(colors.neutral).forEach(([shade, value]) => {
56
+ // Set flat version (for backward compatibility)
57
+ this.root.style.setProperty(`--cs-neutral-${shade}`, value);
58
+ // Set nested version (for components that expect it)
59
+ this.root.style.setProperty(`--cs-colors-neutral-${shade}`, value);
60
+ });
61
+
62
+ // Surface colors - set both flat and nested versions
63
+ this.root.style.setProperty('--cs-page-bg', colors.surface.background);
64
+ this.root.style.setProperty('--cs-colors-surface-background', colors.surface.background);
65
+ this.root.style.setProperty('--cs-surface-bg', colors.surface.surface);
66
+ this.root.style.setProperty('--cs-colors-surface-surface', colors.surface.surface);
67
+ this.root.style.setProperty('--cs-border', colors.surface.border);
68
+ this.root.style.setProperty('--cs-colors-border', colors.surface.border);
69
+ this.root.style.setProperty('--cs-divider', colors.surface.divider);
70
+ this.root.style.setProperty('--cs-colors-divider', colors.surface.divider);
71
+
72
+ // Text colors - set both flat and nested versions
73
+ this.root.style.setProperty('--cs-text-primary', colors.text.primary);
74
+ this.root.style.setProperty('--cs-colors-text-primary', colors.text.primary);
75
+ this.root.style.setProperty('--cs-text-secondary', colors.text.secondary);
76
+ this.root.style.setProperty('--cs-colors-text-secondary', colors.text.secondary);
77
+ this.root.style.setProperty('--cs-text-muted', colors.text.muted);
78
+ this.root.style.setProperty('--cs-colors-text-muted', colors.text.muted);
79
+ this.root.style.setProperty('--cs-text-inverse', colors.text.inverse);
80
+ this.root.style.setProperty('--cs-colors-text-inverse', colors.text.inverse);
81
+ this.root.style.setProperty('--cs-text-on-primary', colors.text.onPrimary);
82
+ this.root.style.setProperty('--cs-colors-text-on-primary', colors.text.onPrimary);
83
+ this.root.style.setProperty('--cs-text-on-secondary', colors.text.onSecondary);
84
+ this.root.style.setProperty('--cs-colors-text-on-secondary', colors.text.onSecondary);
85
+ this.root.style.setProperty('--cs-text-on-surface', colors.text.onSurface);
86
+ this.root.style.setProperty('--cs-colors-text-on-surface', colors.text.onSurface);
87
+
88
+ // Interactive colors - set both flat and nested versions
89
+ this.root.style.setProperty('--cs-hover-bg', colors.interactive.hover);
90
+ this.root.style.setProperty('--cs-colors-interactive-hover', colors.interactive.hover);
91
+ this.root.style.setProperty('--cs-active-bg', colors.interactive.active);
92
+ this.root.style.setProperty('--cs-colors-interactive-active', colors.interactive.active);
93
+ this.root.style.setProperty('--cs-focus', colors.interactive.focus);
94
+ this.root.style.setProperty('--cs-colors-interactive-focus', colors.interactive.focus);
95
+ this.root.style.setProperty('--cs-disabled', colors.interactive.disabled);
96
+ this.root.style.setProperty('--cs-colors-interactive-disabled', colors.interactive.disabled);
97
+ }
98
+
99
+ /**
100
+ * Apply font variables to CSS custom properties
101
+ */
102
+ private applyFonts(fonts])= (config) => {
103
+ if (config.fallbacks && config.fallbacks.length > 0) {
104
+ return `${config.family}, ${config.fallbacks.join(', ')}`;
105
+ }
106
+ return config.family;
107
+ };
108
+
109
+ // Primary font
110
+ this.root.style.setProperty('--cs-fonts-primary-family', buildFontFamily(fonts.primary));
111
+ this.root.style.setProperty('--cs-fonts-primary-weights', fonts.primary.weights.join(', '));
112
+
113
+ // Font sizes
114
+ Object.entries(fonts.primary.sizes).forEach(([size, value]) => {
115
+ this.root.style.setProperty(`--cs-fonts-primary-sizes-${size}`, value);
116
+ });
117
+
118
+ // Line heights
119
+ Object.entries(fonts.primary.lineHeights).forEach(([height, value]) => {
120
+ this.root.style.setProperty(`--cs-fonts-primary-line-heights-${height}`, value);
121
+ });
122
+
123
+ // Letter spacing
124
+ Object.entries(fonts.primary.letterSpacing).forEach(([spacing, value]) => {
125
+ this.root.style.setProperty(`--cs-fonts-primary-letter-spacing-${spacing}`, value);
126
+ });
127
+
128
+ // Secondary font
129
+ this.root.style.setProperty('--cs-fonts-secondary-family', buildFontFamily(fonts.secondary));
130
+
131
+ // Display font
132
+ this.root.style.setProperty('--cs-fonts-display-family', buildFontFamily(fonts.display));
133
+
134
+ // Body font
135
+ this.root.style.setProperty('--cs-fonts-body-family', buildFontFamily(fonts.body));
136
+
137
+ // Mono font
138
+ this.root.style.setProperty('--cs-fonts-mono-family', buildFontFamily(fonts.mono));
139
+ }
140
+
141
+ /**
142
+ * Apply spacing variables to CSS custom properties
143
+ */
144
+ private applySpacing(spacing])).forEach(([size, value]) => {
145
+ // Set flat version (for backward compatibility)
146
+ this.root.style.setProperty(`--cs-spacing-${size}`, value);
147
+ // Set nested version (for badge CSS and other components)
148
+ this.root.style.setProperty(`--cs-spacing-scale-${size}`, value);
149
+ });
150
+
151
+ // Component spacing
152
+ this.root.style.setProperty('--cs-button-padding', spacing.component.button.padding);
153
+ this.root.style.setProperty('--cs-button-margin', spacing.component.button.margin);
154
+ this.root.style.setProperty('--cs-button-gap', spacing.component.button.gap);
155
+
156
+ this.root.style.setProperty('--cs-input-padding', spacing.component.input.padding);
157
+ this.root.style.setProperty('--cs-input-margin', spacing.component.input.margin);
158
+ this.root.style.setProperty('--cs-input-gap', spacing.component.input.gap);
159
+
160
+ this.root.style.setProperty('--cs-card-padding', spacing.component.card.padding);
161
+ this.root.style.setProperty('--cs-card-margin', spacing.component.card.margin);
162
+ this.root.style.setProperty('--cs-card-gap', spacing.component.card.gap);
163
+
164
+ // Layout spacing
165
+ this.root.style.setProperty('--cs-page-spacing', spacing.layout.page);
166
+ this.root.style.setProperty('--cs-section-spacing', spacing.layout.section);
167
+ this.root.style.setProperty('--cs-container-spacing', spacing.layout.container);
168
+ this.root.style.setProperty('--cs-grid-spacing', spacing.layout.grid);
169
+ }
170
+
171
+ /**
172
+ * Apply shadow variables to CSS custom properties
173
+ */
174
+ private applyShadows(shadows])).forEach(([shadow, value]) => {
175
+ // Set flat version (for backward compatibility)
176
+ this.root.style.setProperty(`--cs-shadow-${shadow}`, value);
177
+ // Set nested version (for badge CSS and other components)
178
+ this.root.style.setProperty(`--cs-shadows-${shadow}`, value);
179
+ });
180
+ }
181
+
182
+ /**
183
+ * Apply transition variables to CSS custom properties
184
+ */
185
+ private applyTransitions(transitions])).forEach(([duration, value]) => {
186
+ // Set flat version (for backward compatibility)
187
+ this.root.style.setProperty(`--cs-transition-duration-${duration}`, value);
188
+ // Set nested version (for badge CSS and other components)
189
+ this.root.style.setProperty(`--cs-transitions-duration-${duration}`, value);
190
+ });
191
+
192
+ // Easing - set both flat and nested versions
193
+ Object.entries(transitions.easing).forEach(([ease, value]) => {
194
+ // Set flat version (for backward compatibility)
195
+ this.root.style.setProperty(`--cs-transition-easing-${ease}`, value);
196
+ // Set nested version (for badge CSS and other components)
197
+ this.root.style.setProperty(`--cs-transitions-easing-${ease}`, value);
198
+ });
199
+
200
+ // Properties - set both flat and nested versions
201
+ Object.entries(transitions.properties).forEach(([property, value]) => {
202
+ // Set flat version (for backward compatibility)
203
+ this.root.style.setProperty(`--cs-transition-${property}`, value);
204
+ // Set nested version (for badge CSS and other components)
205
+ this.root.style.setProperty(`--cs-transitions-properties-${property}`, value);
206
+ });
207
+ }
208
+
209
+ /**
210
+ * Apply border radius variables to CSS custom properties
211
+ */
212
+ private applyBorderRadius(borderRadius])).forEach(([size, value]) => {
213
+ // Set flat version (for backward compatibility)
214
+ this.root.style.setProperty(`--cs-border-radius-${size}`, value);
215
+ // Set nested version (for badge CSS and other components)
216
+ this.root.style.setProperty(`--cs-border-radius-${size}`, value);
217
+ });
218
+ }
219
+
220
+ /**
221
+ * Clear all theme CSS variables
222
+ */
223
+ clearTheme()= [
224
+ '--cs-primary-50', '--cs-primary-100', '--cs-primary-200', '--cs-primary-300',
225
+ '--cs-primary-400', '--cs-primary-500', '--cs-primary-600', '--cs-primary-700',
226
+ '--cs-primary-800', '--cs-primary-900',
227
+ '--cs-secondary-50', '--cs-secondary-100', '--cs-secondary-200', '--cs-secondary-300',
228
+ '--cs-secondary-400', '--cs-secondary-500', '--cs-secondary-600', '--cs-secondary-700',
229
+ '--cs-secondary-800', '--cs-secondary-900',
230
+ '--cs-success', '--cs-warning', '--cs-error', '--cs-info',
231
+ '--cs-neutral-50', '--cs-neutral-100', '--cs-neutral-200', '--cs-neutral-300',
232
+ '--cs-neutral-400', '--cs-neutral-500', '--cs-neutral-600', '--cs-neutral-700',
233
+ '--cs-neutral-800', '--cs-neutral-900',
234
+ '--cs-page-bg', '--cs-surface-bg', '--cs-border', '--cs-divider',
235
+ '--cs-text-primary', '--cs-text-secondary', '--cs-text-muted', '--cs-text-inverse',
236
+ '--cs-text-on-primary', '--cs-text-on-secondary', '--cs-text-on-surface',
237
+ '--cs-hover-bg', '--cs-active-bg', '--cs-focus', '--cs-disabled',
238
+ '--cs-font-primary', '--cs-font-secondary', '--cs-font-display', '--cs-font-body', '--cs-font-mono'
239
+ ];
240
+
241
+ cssVars.forEach(varName => {
242
+ this.root.style.removeProperty(varName);
243
+ });
244
+ }
245
+ }
246
+
247
+ /**
248
+ * Default theme CSS updater instance
249
+ */
250
+ export const themeCSSUpdater = new ThemeCSSUpdater();
@@ -0,0 +1,192 @@
1
+
2
+ export interface ThemePersistenceOptions {
3
+ storageKey?: string;
4
+ defaultTheme?: string;
5
+ enableSystemPreference?: boolean;
6
+ enableSystemThemeDetection?: boolean;
7
+ systemThemeStorageKey?: string;
8
+ }
9
+
10
+ export class ThemePersistence {
11
+ private storageKey: string;
12
+ private defaultTheme: string;
13
+ private enableSystemPreference: boolean;
14
+ private enableSystemThemeDetection: boolean;
15
+ private systemThemeStorageKey: string;
16
+
17
+ constructor(options: ThemePersistenceOptions = {}) {
18
+ this.storageKey = options.storageKey || 'stan-design-theme';
19
+ this.defaultTheme = options.defaultTheme || 'stan-design';
20
+ this.enableSystemPreference = options.enableSystemPreference ?? true;
21
+ this.enableSystemThemeDetection = options.enableSystemThemeDetection ?? true;
22
+ this.systemThemeStorageKey = options.systemThemeStorageKey || 'stan-design-system-theme';
23
+ }
24
+
25
+ getStoredTheme(): string {
26
+ try {
27
+ // Check localStorage first
28
+ const stored = localStorage.getItem(this.storageKey);
29
+ if (stored) {
30
+ return stored;
31
+ }
32
+
33
+ // Fall back to system preference if enabled
34
+ if (this.enableSystemPreference) {
35
+ const systemPreference = this.getSystemPreference();
36
+ if (systemPreference) {
37
+ return systemPreference;
38
+ }
39
+ }
40
+
41
+ // Finally fall back to default
42
+ return this.defaultTheme;
43
+ } catch (error) {
44
+ console.warn('Failed to read theme from storage:', error);
45
+ return this.defaultTheme;
46
+ }
47
+ }
48
+
49
+ setStoredTheme(themeName: string): void {
50
+ try {
51
+ localStorage.setItem(this.storageKey, themeName);
52
+ } catch (error) {
53
+ console.warn('Failed to store theme preference:', error);
54
+ }
55
+ }
56
+
57
+ clearStoredTheme(): void {
58
+ try {
59
+ localStorage.removeItem(this.storageKey);
60
+ } catch (error) {
61
+ console.warn('Failed to clear theme preference:', error);
62
+ }
63
+ }
64
+
65
+ private getSystemPreference(): string | null {
66
+ try {
67
+ if (typeof window !== 'undefined' && window.matchMedia) {
68
+ const darkModeQuery = window.matchMedia('(prefers-color-scheme: dark)');
69
+ return darkModeQuery.matches ? 'dark' : 'light';
70
+ }
71
+ } catch (error) {
72
+ console.warn('Failed to detect system preference:', error);
73
+ }
74
+ return null;
75
+ }
76
+
77
+ onSystemPreferenceChange(callback: (preference: string) => void): (() => void) | null {
78
+ try {
79
+ if (typeof window !== 'undefined' && window.matchMedia) {
80
+ const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
81
+
82
+ const handleChange = (event: MediaQueryListEvent) => {
83
+ const preference = event.matches ? 'dark' : 'light';
84
+ callback(preference);
85
+ };
86
+
87
+ // Modern browsers
88
+ if (mediaQuery.addEventListener) {
89
+ mediaQuery.addEventListener('change', handleChange);
90
+ return () => mediaQuery.removeEventListener('change', handleChange);
91
+ }
92
+ // Legacy browsers
93
+ else if (mediaQuery.addListener) {
94
+ mediaQuery.addListener(handleChange);
95
+ return () => mediaQuery.removeListener(handleChange);
96
+ }
97
+ }
98
+ } catch (error) {
99
+ console.warn('Failed to set up system preference listener:', error);
100
+ }
101
+ return null;
102
+ }
103
+
104
+ isStorageAvailable(): boolean {
105
+ try {
106
+ const test = '__test__';
107
+ localStorage.setItem(test, test);
108
+ localStorage.removeItem(test);
109
+ return true;
110
+ } catch {
111
+ return false;
112
+ }
113
+ }
114
+
115
+ getThemeKeys(): string[] {
116
+ try {
117
+ const keys: string[] = [];
118
+ for (let i = 0; i < localStorage.length; i++) {
119
+ const key = localStorage.key(i);
120
+ if (key && key.includes('theme')) {
121
+ keys.push(key);
122
+ }
123
+ }
124
+ return keys;
125
+ } catch (error) {
126
+ console.warn('Failed to get theme keys:', error);
127
+ return [];
128
+ }
129
+ }
130
+
131
+ getStoredSystemTheme(): 'light' | 'dark' | null {
132
+ try {
133
+ const stored = localStorage.getItem(this.systemThemeStorageKey);
134
+ if (stored === 'light' || stored === 'dark') {
135
+ return stored;
136
+ }
137
+ } catch (error) {
138
+ console.warn('Failed to read system theme from storage:', error);
139
+ }
140
+ return null;
141
+ }
142
+
143
+ setStoredSystemTheme(theme: 'light' | 'dark'): void {
144
+ try {
145
+ localStorage.setItem(this.systemThemeStorageKey, theme);
146
+ } catch (error) {
147
+ console.warn('Failed to store system theme preference:', error);
148
+ }
149
+ }
150
+
151
+ clearStoredSystemTheme(): void {
152
+ try {
153
+ localStorage.removeItem(this.systemThemeStorageKey);
154
+ } catch (error) {
155
+ console.warn('Failed to clear system theme preference:', error);
156
+ }
157
+ }
158
+
159
+ getThemeState(): {
160
+ theme: string;
161
+ systemTheme: 'light' | 'dark' | null;
162
+ isSystemThemeEnabled: boolean;
163
+ } {
164
+ return {
165
+ theme: this.getStoredTheme(),
166
+ systemTheme: this.getStoredSystemTheme(),
167
+ isSystemThemeEnabled: this.enableSystemThemeDetection
168
+ };
169
+ }
170
+
171
+ setThemeState(state: {
172
+ theme?: string;
173
+ systemTheme?: 'light' | 'dark';
174
+ enableSystemTheme?: boolean;
175
+ }): void {
176
+ if (state.theme !== undefined) {
177
+ this.setStoredTheme(state.theme);
178
+ }
179
+ if (state.systemTheme !== undefined) {
180
+ this.setStoredSystemTheme(state.systemTheme);
181
+ }
182
+ if (state.enableSystemTheme !== undefined) {
183
+ this.enableSystemThemeDetection = state.enableSystemTheme;
184
+ }
185
+ }
186
+ }
187
+
188
+ export declare const defaultThemePersistence: new ThemePersistence();
189
+
190
+ export declare const createThemePersistence: (options: ThemePersistenceOptions) => {
191
+ return new ThemePersistence(options);
192
+ };
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Theme persistence utilities for managing theme preferences in localStorage
3
+ */
4
+
5
+ export interface ThemePersistenceOptions {
6
+ storageKey?;
7
+ defaultTheme?;
8
+ enableSystemPreference?;
9
+ enableSystemThemeDetection?;
10
+ systemThemeStorageKey?;
11
+ }
12
+
13
+ export class ThemePersistence {
14
+ private storageKey;
15
+ private defaultTheme;
16
+ private enableSystemPreference;
17
+ private enableSystemThemeDetection;
18
+ private systemThemeStorageKey;
19
+
20
+ constructor(options= {}) {
21
+ this.storageKey = options.storageKey || 'stan-design-theme';
22
+ this.defaultTheme = options.defaultTheme || 'stan-design';
23
+ this.enableSystemPreference = options.enableSystemPreference ?? true;
24
+ this.enableSystemThemeDetection = options.enableSystemThemeDetection ?? true;
25
+ this.systemThemeStorageKey = options.systemThemeStorageKey || 'stan-design-system-theme';
26
+ }
27
+
28
+ /**
29
+ * Get the stored theme preference
30
+ * Falls back to system preference if enabled, then default theme
31
+ */
32
+ getStoredTheme()= localStorage.getItem(this.storageKey);
33
+ if (stored) {
34
+ return stored;
35
+ }
36
+
37
+ // Fall back to system preference if enabled
38
+ if (this.enableSystemPreference) {
39
+ const systemPreference = this.getSystemPreference();
40
+ if (systemPreference) {
41
+ return systemPreference;
42
+ }
43
+ }
44
+
45
+ // Finally fall back to default
46
+ return this.defaultTheme;
47
+ } catch (error) {
48
+ console.warn('Failed to read theme from storage, error);
49
+ return this.defaultTheme;
50
+ }
51
+ }
52
+
53
+ /**
54
+ * Store the theme preference
55
+ */
56
+ setStoredTheme(themeName), themeName);
57
+ } catch (error) {
58
+ console.warn('Failed to store theme preference, error);
59
+ }
60
+ }
61
+
62
+ /**
63
+ * Clear the stored theme preference
64
+ */
65
+ clearStoredTheme());
66
+ } catch (error) {
67
+ console.warn('Failed to clear theme preference, error);
68
+ }
69
+ }
70
+
71
+ /**
72
+ * Get system color scheme preference
73
+ */
74
+ private getSystemPreference()== 'undefined' && window.matchMedia) {
75
+ const darkModeQuery = window.matchMedia('(prefers-color-scheme)');
76
+ return darkModeQuery.matches ? 'dark' ;
77
+ }
78
+ } catch (error) {
79
+ console.warn('Failed to detect system preference, error);
80
+ }
81
+ return null;
82
+ }
83
+
84
+ /**
85
+ * Listen for system preference changes
86
+ */
87
+ onSystemPreferenceChange(callback) => void)) => void) | null {
88
+ try {
89
+ if (typeof window !== 'undefined' && window.matchMedia) {
90
+ const mediaQuery = window.matchMedia('(prefers-color-scheme)');
91
+
92
+ const handleChange = (event) => {
93
+ const preference = event.matches ? 'dark' ;
94
+ callback(preference);
95
+ };
96
+
97
+ // Modern browsers
98
+ if (mediaQuery.addEventListener) {
99
+ mediaQuery.addEventListener('change', handleChange);
100
+ return () => mediaQuery.removeEventListener('change', handleChange);
101
+ }
102
+ // Legacy browsers
103
+ else if (mediaQuery.addListener) {
104
+ mediaQuery.addListener(handleChange);
105
+ return () => mediaQuery.removeListener(handleChange);
106
+ }
107
+ }
108
+ } catch (error) {
109
+ console.warn('Failed to set up system preference listener, error);
110
+ }
111
+ return null;
112
+ }
113
+
114
+ /**
115
+ * Check if localStorage is available
116
+ */
117
+ isStorageAvailable()= '__test__';
118
+ localStorage.setItem(test, test);
119
+ localStorage.removeItem(test);
120
+ return true;
121
+ } catch {
122
+ return false;
123
+ }
124
+ }
125
+
126
+ /**
127
+ * Get all available storage keys related to themes
128
+ */
129
+ getThemeKeys()] {
130
+ try {
131
+ const keys] = [];
132
+ for (let i = 0; i < localStorage.length; i++) {
133
+ const key = localStorage.key(i);
134
+ if (key && key.includes('theme')) {
135
+ keys.push(key);
136
+ }
137
+ }
138
+ return keys;
139
+ } catch (error) {
140
+ console.warn('Failed to get theme keys, error);
141
+ return [];
142
+ }
143
+ }
144
+
145
+ /**
146
+ * Get stored system theme preference
147
+ */
148
+ getStoredSystemTheme()= localStorage.getItem(this.systemThemeStorageKey);
149
+ if (stored === 'light' || stored === 'dark') {
150
+ return stored;
151
+ }
152
+ } catch (error) {
153
+ console.warn('Failed to read system theme from storage, error);
154
+ }
155
+ return null;
156
+ }
157
+
158
+ /**
159
+ * Store system theme preference
160
+ */
161
+ setStoredSystemTheme(theme), theme);
162
+ } catch (error) {
163
+ console.warn('Failed to store system theme preference, error);
164
+ }
165
+ }
166
+
167
+ /**
168
+ * Clear stored system theme preference
169
+ */
170
+ clearStoredSystemTheme());
171
+ } catch (error) {
172
+ console.warn('Failed to clear system theme preference, error);
173
+ }
174
+ }
175
+
176
+ /**
177
+ * Get comprehensive theme state including system theme
178
+ */
179
+ getThemeState();
180
+ systemTheme;
181
+ isSystemThemeEnabled;
182
+ } {
183
+ return {
184
+ theme),
185
+ systemTheme),
186
+ isSystemThemeEnabled};
187
+ }
188
+
189
+ /**
190
+ * Set comprehensive theme state
191
+ */
192
+ setThemeState(state;
193
+ systemTheme?;
194
+ enableSystemTheme?;
195
+ })== undefined) {
196
+ this.setStoredTheme(state.theme);
197
+ }
198
+ if (state.systemTheme !== undefined) {
199
+ this.setStoredSystemTheme(state.systemTheme);
200
+ }
201
+ if (state.enableSystemTheme !== undefined) {
202
+ this.enableSystemThemeDetection = state.enableSystemTheme;
203
+ }
204
+ }
205
+ }
206
+
207
+ /**
208
+ * Default theme persistence instance
209
+ */
210
+ export const defaultThemePersistence = new ThemePersistence();
211
+
212
+ /**
213
+ * Create a custom theme persistence instance
214
+ */
215
+ export const createThemePersistence = (options) => {
216
+ return new ThemePersistence(options);
217
+ };