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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (462) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/components/ui/accessibility-demo.d.ts +259 -0
  3. package/dist/components/ui/accessibility-demo.esm.js +265 -0
  4. package/dist/components/ui/accessibility-demo.js +265 -0
  5. package/dist/components/ui/advanced-component-architecture-demo.d.ts +718 -0
  6. package/dist/components/ui/advanced-component-architecture-demo.esm.js +860 -0
  7. package/dist/components/ui/advanced-component-architecture-demo.js +860 -0
  8. package/dist/components/ui/advanced-transition-system-demo.d.ts +660 -0
  9. package/dist/components/ui/advanced-transition-system-demo.esm.js +624 -0
  10. package/dist/components/ui/advanced-transition-system-demo.js +624 -0
  11. package/dist/components/ui/advanced-transition-system.d.ts +391 -0
  12. package/dist/components/ui/advanced-transition-system.esm.js +351 -0
  13. package/dist/components/ui/advanced-transition-system.js +351 -0
  14. package/dist/components/ui/animation/animated-container.d.ts +162 -0
  15. package/dist/components/ui/animation/animated-container.esm.js +143 -0
  16. package/dist/components/ui/animation/animated-container.js +143 -0
  17. package/dist/components/ui/animation/index.d.ts +9 -0
  18. package/dist/components/ui/animation/index.esm.js +19 -0
  19. package/dist/components/ui/animation/index.js +19 -0
  20. package/dist/components/ui/animation/staggered-container.d.ts +64 -0
  21. package/dist/components/ui/animation/staggered-container.esm.js +59 -0
  22. package/dist/components/ui/animation/staggered-container.js +59 -0
  23. package/dist/components/ui/animation-demo.d.ts +238 -0
  24. package/dist/components/ui/animation-demo.esm.js +218 -0
  25. package/dist/components/ui/animation-demo.js +218 -0
  26. package/dist/components/ui/badge.d.ts +28 -0
  27. package/dist/components/ui/badge.esm.js +30 -0
  28. package/dist/components/ui/badge.js +30 -0
  29. package/dist/components/ui/battery-conscious-animation-demo.d.ts +561 -0
  30. package/dist/components/ui/battery-conscious-animation-demo.esm.js +533 -0
  31. package/dist/components/ui/battery-conscious-animation-demo.js +533 -0
  32. package/dist/components/ui/border-radius-shadow-demo.d.ts +183 -0
  33. package/dist/components/ui/border-radius-shadow-demo.esm.js +176 -0
  34. package/dist/components/ui/border-radius-shadow-demo.js +176 -0
  35. package/dist/components/ui/button.d.ts +33 -0
  36. package/dist/components/ui/button.esm.js +30 -0
  37. package/dist/components/ui/button.js +30 -0
  38. package/dist/components/ui/card.d.ts +205 -0
  39. package/dist/components/ui/card.esm.js +182 -0
  40. package/dist/components/ui/card.js +182 -0
  41. package/dist/components/ui/checkbox.d.ts +26 -0
  42. package/dist/components/ui/checkbox.esm.js +30 -0
  43. package/dist/components/ui/checkbox.js +30 -0
  44. package/dist/components/ui/color-preview.d.ts +402 -0
  45. package/dist/components/ui/color-preview.esm.js +388 -0
  46. package/dist/components/ui/color-preview.js +388 -0
  47. package/dist/components/ui/data-display/chart.d.ts +646 -0
  48. package/dist/components/ui/data-display/chart.esm.js +625 -0
  49. package/dist/components/ui/data-display/chart.js +625 -0
  50. package/dist/components/ui/data-display/data-grid-simple.d.ts +73 -0
  51. package/dist/components/ui/data-display/data-grid-simple.esm.js +76 -0
  52. package/dist/components/ui/data-display/data-grid-simple.js +76 -0
  53. package/dist/components/ui/data-display/data-grid.d.ts +670 -0
  54. package/dist/components/ui/data-display/data-grid.esm.js +667 -0
  55. package/dist/components/ui/data-display/data-grid.js +667 -0
  56. package/dist/components/ui/data-display/list.d.ts +448 -0
  57. package/dist/components/ui/data-display/list.esm.js +448 -0
  58. package/dist/components/ui/data-display/list.js +448 -0
  59. package/dist/components/ui/data-display/table.d.ts +472 -0
  60. package/dist/components/ui/data-display/table.esm.js +474 -0
  61. package/dist/components/ui/data-display/table.js +474 -0
  62. package/dist/components/ui/data-display/timeline.d.ts +433 -0
  63. package/dist/components/ui/data-display/timeline.esm.js +436 -0
  64. package/dist/components/ui/data-display/timeline.js +436 -0
  65. package/dist/components/ui/data-display/tree.d.ts +594 -0
  66. package/dist/components/ui/data-display/tree.esm.js +570 -0
  67. package/dist/components/ui/data-display/tree.js +570 -0
  68. package/dist/components/ui/data-display/types.d.ts +534 -0
  69. package/dist/components/ui/data-display/types.esm.js +511 -0
  70. package/dist/components/ui/data-display/types.js +511 -0
  71. package/dist/components/ui/enterprise-mobile-experience-demo.d.ts +735 -0
  72. package/dist/components/ui/enterprise-mobile-experience-demo.esm.js +699 -0
  73. package/dist/components/ui/enterprise-mobile-experience-demo.js +699 -0
  74. package/dist/components/ui/enterprise-mobile-experience.d.ts +461 -0
  75. package/dist/components/ui/enterprise-mobile-experience.esm.js +413 -0
  76. package/dist/components/ui/enterprise-mobile-experience.js +413 -0
  77. package/dist/components/ui/feedback/alert.d.ts +154 -0
  78. package/dist/components/ui/feedback/alert.esm.js +150 -0
  79. package/dist/components/ui/feedback/alert.js +150 -0
  80. package/dist/components/ui/feedback/progress.d.ts +288 -0
  81. package/dist/components/ui/feedback/progress.esm.js +269 -0
  82. package/dist/components/ui/feedback/progress.js +269 -0
  83. package/dist/components/ui/feedback/skeleton.d.ts +182 -0
  84. package/dist/components/ui/feedback/skeleton.esm.js +175 -0
  85. package/dist/components/ui/feedback/skeleton.js +175 -0
  86. package/dist/components/ui/feedback/toast.d.ts +277 -0
  87. package/dist/components/ui/feedback/toast.esm.js +256 -0
  88. package/dist/components/ui/feedback/toast.js +256 -0
  89. package/dist/components/ui/feedback/types.d.ts +123 -0
  90. package/dist/components/ui/feedback/types.esm.js +125 -0
  91. package/dist/components/ui/feedback/types.js +125 -0
  92. package/dist/components/ui/font-preview.d.ts +282 -0
  93. package/dist/components/ui/font-preview.esm.js +286 -0
  94. package/dist/components/ui/font-preview.js +286 -0
  95. package/dist/components/ui/form-demo.d.ts +544 -0
  96. package/dist/components/ui/form-demo.esm.js +516 -0
  97. package/dist/components/ui/form-demo.js +516 -0
  98. package/dist/components/ui/hardware-acceleration-demo.d.ts +540 -0
  99. package/dist/components/ui/hardware-acceleration-demo.esm.js +497 -0
  100. package/dist/components/ui/hardware-acceleration-demo.js +497 -0
  101. package/dist/components/ui/input.d.ts +33 -0
  102. package/dist/components/ui/input.esm.js +32 -0
  103. package/dist/components/ui/input.js +32 -0
  104. package/dist/components/ui/label.d.ts +13 -0
  105. package/dist/components/ui/label.esm.js +16 -0
  106. package/dist/components/ui/label.js +16 -0
  107. package/dist/components/ui/layout-demo.d.ts +352 -0
  108. package/dist/components/ui/layout-demo.esm.js +342 -0
  109. package/dist/components/ui/layout-demo.js +342 -0
  110. package/dist/components/ui/layouts/adaptive-layout.d.ts +132 -0
  111. package/dist/components/ui/layouts/adaptive-layout.esm.js +120 -0
  112. package/dist/components/ui/layouts/adaptive-layout.js +120 -0
  113. package/dist/components/ui/layouts/desktop-layout.d.ts +219 -0
  114. package/dist/components/ui/layouts/desktop-layout.esm.js +204 -0
  115. package/dist/components/ui/layouts/desktop-layout.js +204 -0
  116. package/dist/components/ui/layouts/index.d.ts +5 -0
  117. package/dist/components/ui/layouts/index.esm.js +10 -0
  118. package/dist/components/ui/layouts/index.js +10 -0
  119. package/dist/components/ui/layouts/mobile-layout.d.ts +158 -0
  120. package/dist/components/ui/layouts/mobile-layout.esm.js +152 -0
  121. package/dist/components/ui/layouts/mobile-layout.js +152 -0
  122. package/dist/components/ui/layouts/tablet-layout.d.ts +192 -0
  123. package/dist/components/ui/layouts/tablet-layout.esm.js +183 -0
  124. package/dist/components/ui/layouts/tablet-layout.js +183 -0
  125. package/dist/components/ui/mobile-form-validation.d.ts +439 -0
  126. package/dist/components/ui/mobile-form-validation.esm.js +418 -0
  127. package/dist/components/ui/mobile-form-validation.js +418 -0
  128. package/dist/components/ui/mobile-input-demo.d.ts +197 -0
  129. package/dist/components/ui/mobile-input-demo.esm.js +195 -0
  130. package/dist/components/ui/mobile-input-demo.js +195 -0
  131. package/dist/components/ui/mobile-input.d.ts +273 -0
  132. package/dist/components/ui/mobile-input.esm.js +216 -0
  133. package/dist/components/ui/mobile-input.js +216 -0
  134. package/dist/components/ui/mobile-skeleton-loading-demo.d.ts +628 -0
  135. package/dist/components/ui/mobile-skeleton-loading-demo.esm.js +621 -0
  136. package/dist/components/ui/mobile-skeleton-loading-demo.js +621 -0
  137. package/dist/components/ui/navigation/breadcrumb.d.ts +149 -0
  138. package/dist/components/ui/navigation/breadcrumb.esm.js +155 -0
  139. package/dist/components/ui/navigation/breadcrumb.js +155 -0
  140. package/dist/components/ui/navigation/index.d.ts +25 -0
  141. package/dist/components/ui/navigation/index.esm.js +14 -0
  142. package/dist/components/ui/navigation/index.js +14 -0
  143. package/dist/components/ui/navigation/menu.d.ts +366 -0
  144. package/dist/components/ui/navigation/menu.esm.js +360 -0
  145. package/dist/components/ui/navigation/menu.js +360 -0
  146. package/dist/components/ui/navigation/navigation-demo.d.ts +169 -0
  147. package/dist/components/ui/navigation/navigation-demo.esm.js +317 -0
  148. package/dist/components/ui/navigation/navigation-demo.js +317 -0
  149. package/dist/components/ui/navigation/pagination.d.ts +261 -0
  150. package/dist/components/ui/navigation/pagination.esm.js +260 -0
  151. package/dist/components/ui/navigation/pagination.js +260 -0
  152. package/dist/components/ui/navigation/sidebar.d.ts +375 -0
  153. package/dist/components/ui/navigation/sidebar.esm.js +369 -0
  154. package/dist/components/ui/navigation/sidebar.js +369 -0
  155. package/dist/components/ui/navigation/stepper.d.ts +294 -0
  156. package/dist/components/ui/navigation/stepper.esm.js +292 -0
  157. package/dist/components/ui/navigation/stepper.js +292 -0
  158. package/dist/components/ui/navigation/tabs.d.ts +196 -0
  159. package/dist/components/ui/navigation/tabs.esm.js +194 -0
  160. package/dist/components/ui/navigation/tabs.js +194 -0
  161. package/dist/components/ui/navigation/types.d.ts +293 -0
  162. package/dist/components/ui/navigation/types.esm.js +298 -0
  163. package/dist/components/ui/navigation/types.js +298 -0
  164. package/dist/components/ui/overlay/backdrop.d.ts +79 -0
  165. package/dist/components/ui/overlay/backdrop.esm.js +80 -0
  166. package/dist/components/ui/overlay/backdrop.js +80 -0
  167. package/dist/components/ui/overlay/focus-manager.d.ts +141 -0
  168. package/dist/components/ui/overlay/focus-manager.esm.js +141 -0
  169. package/dist/components/ui/overlay/focus-manager.js +141 -0
  170. package/dist/components/ui/overlay/index.d.ts +27 -0
  171. package/dist/components/ui/overlay/index.esm.js +16 -0
  172. package/dist/components/ui/overlay/index.js +16 -0
  173. package/dist/components/ui/overlay/modal.d.ts +262 -0
  174. package/dist/components/ui/overlay/modal.esm.js +266 -0
  175. package/dist/components/ui/overlay/modal.js +266 -0
  176. package/dist/components/ui/overlay/overlay-manager.d.ts +107 -0
  177. package/dist/components/ui/overlay/overlay-manager.esm.js +105 -0
  178. package/dist/components/ui/overlay/overlay-manager.js +105 -0
  179. package/dist/components/ui/overlay/popover.d.ts +450 -0
  180. package/dist/components/ui/overlay/popover.esm.js +446 -0
  181. package/dist/components/ui/overlay/popover.js +446 -0
  182. package/dist/components/ui/overlay/portal.d.ts +75 -0
  183. package/dist/components/ui/overlay/portal.esm.js +79 -0
  184. package/dist/components/ui/overlay/portal.js +79 -0
  185. package/dist/components/ui/overlay/tooltip.d.ts +298 -0
  186. package/dist/components/ui/overlay/tooltip.esm.js +288 -0
  187. package/dist/components/ui/overlay/tooltip.js +288 -0
  188. package/dist/components/ui/overlay/types.d.ts +194 -0
  189. package/dist/components/ui/overlay/types.esm.js +195 -0
  190. package/dist/components/ui/overlay/types.js +195 -0
  191. package/dist/components/ui/performance-demo.d.ts +583 -0
  192. package/dist/components/ui/performance-demo.esm.js +549 -0
  193. package/dist/components/ui/performance-demo.js +549 -0
  194. package/dist/components/ui/semantic-input-system-demo.d.ts +490 -0
  195. package/dist/components/ui/semantic-input-system-demo.esm.js +465 -0
  196. package/dist/components/ui/semantic-input-system-demo.js +465 -0
  197. package/dist/components/ui/theme-customizer.d.ts +378 -0
  198. package/dist/components/ui/theme-customizer.esm.js +354 -0
  199. package/dist/components/ui/theme-customizer.js +354 -0
  200. package/dist/components/ui/theme-preview.d.ts +305 -0
  201. package/dist/components/ui/theme-preview.esm.js +258 -0
  202. package/dist/components/ui/theme-preview.js +258 -0
  203. package/dist/components/ui/theme-switcher.d.ts +259 -0
  204. package/dist/components/ui/theme-switcher.esm.js +238 -0
  205. package/dist/components/ui/theme-switcher.js +238 -0
  206. package/dist/components/ui/theme-toggle.d.ts +34 -0
  207. package/dist/components/ui/theme-toggle.esm.js +38 -0
  208. package/dist/components/ui/theme-toggle.js +38 -0
  209. package/dist/components/ui/token-demo.d.ts +188 -0
  210. package/dist/components/ui/token-demo.esm.js +183 -0
  211. package/dist/components/ui/token-demo.js +183 -0
  212. package/dist/components/ui/touch-demo.d.ts +455 -0
  213. package/dist/components/ui/touch-demo.esm.js +433 -0
  214. package/dist/components/ui/touch-demo.js +433 -0
  215. package/dist/components/ui/touch-friendly-interface-demo.d.ts +512 -0
  216. package/dist/components/ui/touch-friendly-interface-demo.esm.js +481 -0
  217. package/dist/components/ui/touch-friendly-interface-demo.js +481 -0
  218. package/dist/components/ui/touch-friendly-interface.d.ts +292 -0
  219. package/dist/components/ui/touch-friendly-interface.esm.js +272 -0
  220. package/dist/components/ui/touch-friendly-interface.js +272 -0
  221. package/dist/hooks/index.d.ts +161 -0
  222. package/dist/hooks/index.esm.js +190 -0
  223. package/dist/hooks/index.js +190 -0
  224. package/dist/hooks/use-accessibility-support.d.ts +516 -0
  225. package/dist/hooks/use-accessibility-support.esm.js +488 -0
  226. package/dist/hooks/use-accessibility-support.js +488 -0
  227. package/dist/hooks/use-adaptive-layout.d.ts +287 -0
  228. package/dist/hooks/use-adaptive-layout.esm.js +266 -0
  229. package/dist/hooks/use-adaptive-layout.js +266 -0
  230. package/dist/hooks/use-advanced-patterns.d.ts +292 -0
  231. package/dist/hooks/use-advanced-patterns.esm.js +279 -0
  232. package/dist/hooks/use-advanced-patterns.js +279 -0
  233. package/dist/hooks/use-advanced-transition-system.d.ts +390 -0
  234. package/dist/hooks/use-advanced-transition-system.esm.js +352 -0
  235. package/dist/hooks/use-advanced-transition-system.js +352 -0
  236. package/dist/hooks/use-animation-profile.d.ts +285 -0
  237. package/dist/hooks/use-animation-profile.esm.js +259 -0
  238. package/dist/hooks/use-animation-profile.js +259 -0
  239. package/dist/hooks/use-battery-animations.d.ts +382 -0
  240. package/dist/hooks/use-battery-animations.esm.js +359 -0
  241. package/dist/hooks/use-battery-animations.js +359 -0
  242. package/dist/hooks/use-battery-conscious-loading.d.ts +473 -0
  243. package/dist/hooks/use-battery-conscious-loading.esm.js +432 -0
  244. package/dist/hooks/use-battery-conscious-loading.js +432 -0
  245. package/dist/hooks/use-battery-optimization.d.ts +328 -0
  246. package/dist/hooks/use-battery-optimization.esm.js +307 -0
  247. package/dist/hooks/use-battery-optimization.js +307 -0
  248. package/dist/hooks/use-battery-status.d.ts +297 -0
  249. package/dist/hooks/use-battery-status.esm.js +277 -0
  250. package/dist/hooks/use-battery-status.js +277 -0
  251. package/dist/hooks/use-component-performance.d.ts +342 -0
  252. package/dist/hooks/use-component-performance.esm.js +329 -0
  253. package/dist/hooks/use-component-performance.js +329 -0
  254. package/dist/hooks/use-device-loading-states.d.ts +456 -0
  255. package/dist/hooks/use-device-loading-states.esm.js +416 -0
  256. package/dist/hooks/use-device-loading-states.js +416 -0
  257. package/dist/hooks/use-device.d.ts +104 -0
  258. package/dist/hooks/use-device.esm.js +99 -0
  259. package/dist/hooks/use-device.js +99 -0
  260. package/dist/hooks/use-enterprise-mobile-experience.d.ts +486 -0
  261. package/dist/hooks/use-enterprise-mobile-experience.esm.js +439 -0
  262. package/dist/hooks/use-enterprise-mobile-experience.js +439 -0
  263. package/dist/hooks/use-form-feedback.d.ts +401 -0
  264. package/dist/hooks/use-form-feedback.esm.js +360 -0
  265. package/dist/hooks/use-form-feedback.js +360 -0
  266. package/dist/hooks/use-form-performance.d.ts +511 -0
  267. package/dist/hooks/use-form-performance.esm.js +478 -0
  268. package/dist/hooks/use-form-performance.js +478 -0
  269. package/dist/hooks/use-frame-rate.d.ts +249 -0
  270. package/dist/hooks/use-frame-rate.esm.js +232 -0
  271. package/dist/hooks/use-frame-rate.js +232 -0
  272. package/dist/hooks/use-gestures.d.ts +336 -0
  273. package/dist/hooks/use-gestures.esm.js +314 -0
  274. package/dist/hooks/use-gestures.js +314 -0
  275. package/dist/hooks/use-hardware-acceleration.d.ts +339 -0
  276. package/dist/hooks/use-hardware-acceleration.esm.js +313 -0
  277. package/dist/hooks/use-hardware-acceleration.js +313 -0
  278. package/dist/hooks/use-input-accessibility.d.ts +451 -0
  279. package/dist/hooks/use-input-accessibility.esm.js +417 -0
  280. package/dist/hooks/use-input-accessibility.js +417 -0
  281. package/dist/hooks/use-input-performance.d.ts +503 -0
  282. package/dist/hooks/use-input-performance.esm.js +471 -0
  283. package/dist/hooks/use-input-performance.js +471 -0
  284. package/dist/hooks/use-layout-performance.d.ts +317 -0
  285. package/dist/hooks/use-layout-performance.esm.js +298 -0
  286. package/dist/hooks/use-layout-performance.js +298 -0
  287. package/dist/hooks/use-loading-accessibility.d.ts +532 -0
  288. package/dist/hooks/use-loading-accessibility.esm.js +495 -0
  289. package/dist/hooks/use-loading-accessibility.js +495 -0
  290. package/dist/hooks/use-loading-performance.d.ts +471 -0
  291. package/dist/hooks/use-loading-performance.esm.js +449 -0
  292. package/dist/hooks/use-loading-performance.js +449 -0
  293. package/dist/hooks/use-memory-usage.d.ts +285 -0
  294. package/dist/hooks/use-memory-usage.esm.js +268 -0
  295. package/dist/hooks/use-memory-usage.js +268 -0
  296. package/dist/hooks/use-mobile-form-layout.d.ts +462 -0
  297. package/dist/hooks/use-mobile-form-layout.esm.js +427 -0
  298. package/dist/hooks/use-mobile-form-layout.js +427 -0
  299. package/dist/hooks/use-mobile-form-validation.d.ts +516 -0
  300. package/dist/hooks/use-mobile-form-validation.esm.js +451 -0
  301. package/dist/hooks/use-mobile-form-validation.js +451 -0
  302. package/dist/hooks/use-mobile-keyboard-optimization.d.ts +469 -0
  303. package/dist/hooks/use-mobile-keyboard-optimization.esm.js +431 -0
  304. package/dist/hooks/use-mobile-keyboard-optimization.js +431 -0
  305. package/dist/hooks/use-mobile-layout.d.ts +300 -0
  306. package/dist/hooks/use-mobile-layout.esm.js +280 -0
  307. package/dist/hooks/use-mobile-layout.js +280 -0
  308. package/dist/hooks/use-mobile-optimization.d.ts +404 -0
  309. package/dist/hooks/use-mobile-optimization.esm.js +378 -0
  310. package/dist/hooks/use-mobile-optimization.js +378 -0
  311. package/dist/hooks/use-mobile-skeleton.d.ts +399 -0
  312. package/dist/hooks/use-mobile-skeleton.esm.js +369 -0
  313. package/dist/hooks/use-mobile-skeleton.js +369 -0
  314. package/dist/hooks/use-mobile-touch.d.ts +412 -0
  315. package/dist/hooks/use-mobile-touch.esm.js +379 -0
  316. package/dist/hooks/use-mobile-touch.js +379 -0
  317. package/dist/hooks/use-performance-throttling.d.ts +346 -0
  318. package/dist/hooks/use-performance-throttling.esm.js +324 -0
  319. package/dist/hooks/use-performance-throttling.js +324 -0
  320. package/dist/hooks/use-performance.d.ts +314 -0
  321. package/dist/hooks/use-performance.esm.js +278 -0
  322. package/dist/hooks/use-performance.js +278 -0
  323. package/dist/hooks/use-reusable-architecture.d.ts +412 -0
  324. package/dist/hooks/use-reusable-architecture.esm.js +385 -0
  325. package/dist/hooks/use-reusable-architecture.js +385 -0
  326. package/dist/hooks/use-semantic-input-types.d.ts +354 -0
  327. package/dist/hooks/use-semantic-input-types.esm.js +315 -0
  328. package/dist/hooks/use-semantic-input-types.js +315 -0
  329. package/dist/hooks/use-semantic-input.d.ts +563 -0
  330. package/dist/hooks/use-semantic-input.esm.js +513 -0
  331. package/dist/hooks/use-semantic-input.js +513 -0
  332. package/dist/hooks/use-tablet-layout.d.ts +382 -0
  333. package/dist/hooks/use-tablet-layout.esm.js +355 -0
  334. package/dist/hooks/use-tablet-layout.js +355 -0
  335. package/dist/hooks/use-touch-friendly-input.d.ts +520 -0
  336. package/dist/hooks/use-touch-friendly-input.esm.js +480 -0
  337. package/dist/hooks/use-touch-friendly-input.js +480 -0
  338. package/dist/hooks/use-touch-friendly-interface.d.ts +329 -0
  339. package/dist/hooks/use-touch-friendly-interface.esm.js +299 -0
  340. package/dist/hooks/use-touch-friendly-interface.js +299 -0
  341. package/dist/hooks/use-touch-optimization.d.ts +373 -0
  342. package/dist/hooks/use-touch-optimization.esm.js +348 -0
  343. package/dist/hooks/use-touch-optimization.js +348 -0
  344. package/dist/lib/utils.d.ts +3 -0
  345. package/dist/lib/utils.esm.js +6 -0
  346. package/dist/lib/utils.js +6 -0
  347. package/dist/plugins/theme-css-generator.d.ts +345 -0
  348. package/dist/plugins/theme-css-generator.esm.js +305 -0
  349. package/dist/plugins/theme-css-generator.js +305 -0
  350. package/dist/styles.css +1 -1
  351. package/dist/themes/ThemeContext.d.ts +27 -0
  352. package/dist/themes/ThemeContext.esm.js +31 -0
  353. package/dist/themes/ThemeContext.js +31 -0
  354. package/dist/themes/ThemeProvider.d.ts +222 -0
  355. package/dist/themes/ThemeProvider.esm.js +229 -0
  356. package/dist/themes/ThemeProvider.js +229 -0
  357. package/dist/themes/accessibility/index.d.ts +7 -0
  358. package/dist/themes/accessibility/index.esm.js +27 -0
  359. package/dist/themes/accessibility/index.js +27 -0
  360. package/dist/themes/accessibility.d.ts +259 -0
  361. package/dist/themes/accessibility.esm.js +220 -0
  362. package/dist/themes/accessibility.js +220 -0
  363. package/dist/themes/aria-patterns.d.ts +418 -0
  364. package/dist/themes/aria-patterns.esm.js +384 -0
  365. package/dist/themes/aria-patterns.js +384 -0
  366. package/dist/themes/base-themes.d.ts +34 -0
  367. package/dist/themes/base-themes.esm.js +52 -0
  368. package/dist/themes/base-themes.js +52 -0
  369. package/dist/themes/colorManager.d.ts +327 -0
  370. package/dist/themes/colorManager.esm.js +362 -0
  371. package/dist/themes/colorManager.js +362 -0
  372. package/dist/themes/examples/dark-theme.d.ts +139 -0
  373. package/dist/themes/examples/dark-theme.esm.js +124 -0
  374. package/dist/themes/examples/dark-theme.js +124 -0
  375. package/dist/themes/examples/minimal-theme.d.ts +93 -0
  376. package/dist/themes/examples/minimal-theme.esm.js +86 -0
  377. package/dist/themes/examples/minimal-theme.js +86 -0
  378. package/dist/themes/focus-management.d.ts +699 -0
  379. package/dist/themes/focus-management.esm.js +642 -0
  380. package/dist/themes/focus-management.js +642 -0
  381. package/dist/themes/fontLoader.d.ts +163 -0
  382. package/dist/themes/fontLoader.esm.js +192 -0
  383. package/dist/themes/fontLoader.js +192 -0
  384. package/dist/themes/high-contrast.d.ts +619 -0
  385. package/dist/themes/high-contrast.esm.js +573 -0
  386. package/dist/themes/high-contrast.js +573 -0
  387. package/dist/themes/index.d.ts +11 -0
  388. package/dist/themes/index.esm.js +19 -0
  389. package/dist/themes/index.js +19 -0
  390. package/dist/themes/inheritance.d.ts +160 -0
  391. package/dist/themes/inheritance.esm.js +219 -0
  392. package/dist/themes/inheritance.js +219 -0
  393. package/dist/themes/keyboard-navigation.d.ts +550 -0
  394. package/dist/themes/keyboard-navigation.esm.js +521 -0
  395. package/dist/themes/keyboard-navigation.js +521 -0
  396. package/dist/themes/motion-reduction.d.ts +660 -0
  397. package/dist/themes/motion-reduction.esm.js +602 -0
  398. package/dist/themes/motion-reduction.js +602 -0
  399. package/dist/themes/navigation.d.ts +232 -0
  400. package/dist/themes/navigation.esm.js +238 -0
  401. package/dist/themes/navigation.js +238 -0
  402. package/dist/themes/screen-reader.d.ts +645 -0
  403. package/dist/themes/screen-reader.esm.js +580 -0
  404. package/dist/themes/screen-reader.js +580 -0
  405. package/dist/themes/systemThemeDetector.d.ts +148 -0
  406. package/dist/themes/systemThemeDetector.esm.js +174 -0
  407. package/dist/themes/systemThemeDetector.js +174 -0
  408. package/dist/themes/themeCSSUpdater.d.ts +229 -0
  409. package/dist/themes/themeCSSUpdater.esm.js +250 -0
  410. package/dist/themes/themeCSSUpdater.js +250 -0
  411. package/dist/themes/themePersistence.d.ts +192 -0
  412. package/dist/themes/themePersistence.esm.js +217 -0
  413. package/dist/themes/themePersistence.js +217 -0
  414. package/dist/themes/themes/stan-design.d.ts +678 -0
  415. package/dist/themes/themes/stan-design.esm.js +518 -0
  416. package/dist/themes/themes/stan-design.js +518 -0
  417. package/dist/themes/types.d.ts +454 -0
  418. package/dist/themes/types.esm.js +446 -0
  419. package/dist/themes/types.js +446 -0
  420. package/dist/themes/useSystemTheme.d.ts +43 -0
  421. package/dist/themes/useSystemTheme.esm.js +48 -0
  422. package/dist/themes/useSystemTheme.js +48 -0
  423. package/dist/themes/useTheme.d.ts +20 -0
  424. package/dist/themes/useTheme.esm.js +87 -0
  425. package/dist/themes/useTheme.js +87 -0
  426. package/dist/themes/validation.d.ts +406 -0
  427. package/dist/themes/validation.esm.js +411 -0
  428. package/dist/themes/validation.js +411 -0
  429. package/dist/tokens/index.d.ts +25 -0
  430. package/dist/tokens/index.esm.js +23 -0
  431. package/dist/tokens/index.js +23 -0
  432. package/dist/tokens/tokenExporter.d.ts +336 -0
  433. package/dist/tokens/tokenExporter.esm.js +371 -0
  434. package/dist/tokens/tokenExporter.js +371 -0
  435. package/dist/tokens/tokenGenerator.d.ts +250 -0
  436. package/dist/tokens/tokenGenerator.esm.js +267 -0
  437. package/dist/tokens/tokenGenerator.js +267 -0
  438. package/dist/tokens/tokenManager.d.ts +194 -0
  439. package/dist/tokens/tokenManager.esm.js +235 -0
  440. package/dist/tokens/tokenManager.js +235 -0
  441. package/dist/tokens/tokenValidator.d.ts +488 -0
  442. package/dist/tokens/tokenValidator.esm.js +497 -0
  443. package/dist/tokens/tokenValidator.js +497 -0
  444. package/dist/tokens/types.d.ts +78 -0
  445. package/dist/tokens/types.esm.js +64 -0
  446. package/dist/tokens/types.js +64 -0
  447. package/dist/utils/bundle-analyzer.d.ts +260 -0
  448. package/dist/utils/bundle-analyzer.esm.js +242 -0
  449. package/dist/utils/bundle-analyzer.js +242 -0
  450. package/dist/utils/bundle-splitting.d.ts +483 -0
  451. package/dist/utils/bundle-splitting.esm.js +458 -0
  452. package/dist/utils/bundle-splitting.js +458 -0
  453. package/dist/utils/lazy-loading.d.ts +437 -0
  454. package/dist/utils/lazy-loading.esm.js +415 -0
  455. package/dist/utils/lazy-loading.js +415 -0
  456. package/dist/utils/performance-monitor.d.ts +513 -0
  457. package/dist/utils/performance-monitor.esm.js +472 -0
  458. package/dist/utils/performance-monitor.js +472 -0
  459. package/dist/utils/tree-shaking.d.ts +274 -0
  460. package/dist/utils/tree-shaking.esm.js +266 -0
  461. package/dist/utils/tree-shaking.js +266 -0
  462. package/package.json +1 -1
@@ -0,0 +1,6 @@
1
+ import { clsx, type ClassValue } from "clsx"
2
+ import { twMerge } from "tailwind-merge"
3
+
4
+ export function cn(...inputs]) {
5
+ return twMerge(clsx(inputs))
6
+ }
@@ -0,0 +1,345 @@
1
+ export default function themeCSSGenerator(): Plugin {
2
+ let config: any
3
+
4
+ // Helper function to safely convert values to strings
5
+ const valueToString = (value: any): string => {
6
+ if (Array.isArray(value)) {
7
+ return value.join(', ')
8
+ }
9
+ if (typeof value === 'object' && value !== null) {
10
+ return JSON.stringify(value)
11
+ }
12
+ return String(value)
13
+ }
14
+
15
+ // Helper function to create CSS variable name
16
+ const createCSSVarName = (path: string[]): string => {
17
+ return `--cs-${path.join('-').replace(/[A-Z]/g, (match) => `-${match.toLowerCase()}`)}`
18
+ }
19
+
20
+ // Generate @font-face declarations from font configuration
21
+ const generateFontFaces = (themeObj: MultiThemeConfig): string => {
22
+ let css = ''
23
+
24
+ if (!themeObj.fonts) return css
25
+
26
+ Object.entries(themeObj.fonts).forEach(([, fontConfig]) => {
27
+ if (fontConfig.source?.type === 'custom' && fontConfig.source.files?.woff2) {
28
+ const { family, source, weights, display } = fontConfig
29
+
30
+ if (weights && Array.isArray(weights) && weights.length > 0) {
31
+ const minWeight = Math.min(...weights)
32
+ const maxWeight = Math.max(...weights)
33
+
34
+ css += `\n@font-face {\n`
35
+ css += ` font-family: '${family}';\n`
36
+ css += ` src: url('${source.files.woff2}') format('woff2-variations');\n`
37
+ css += ` font-weight: ${minWeight} ${maxWeight};\n`
38
+ css += ` font-display: ${display || 'swap'};\n`
39
+ css += `}\n`
40
+ }
41
+ }
42
+ })
43
+
44
+ return css
45
+ }
46
+
47
+ // NEW: Extract breakpoints from anywhere in the theme object
48
+ const extractBreakpoints = (obj: any): any => {
49
+ let breakpoints: any = {}
50
+
51
+ const searchForBreakpoints = (currentObj: any, currentPath: string[] = []) => {
52
+ if (typeof currentObj !== 'object' || currentObj === null) {
53
+ return
54
+ }
55
+
56
+ Object.entries(currentObj).forEach(([key, value]) => {
57
+ if (key === 'breakpoints' && typeof value === 'object' && value !== null) {
58
+ // Found breakpoints, extract them
59
+ Object.entries(value).forEach(([bpKey, bpValue]) => {
60
+ if (typeof bpValue === 'string' || typeof bpValue === 'number') {
61
+ breakpoints[bpKey] = bpValue
62
+ }
63
+ })
64
+ } else if (typeof value === 'object' && value !== null) {
65
+ // Recursively search deeper
66
+ searchForBreakpoints(value, [...currentPath, key])
67
+ }
68
+ })
69
+ }
70
+
71
+ searchForBreakpoints(obj)
72
+ return breakpoints
73
+ }
74
+
75
+ // NEW: Generate breakpoint CSS variables and @custom-media queries
76
+ const generateBreakpointVariables = (breakpoints: any): string => {
77
+ let css = ''
78
+ if (Object.keys(breakpoints).length === 0) { return css }
79
+
80
+ css += ` /* Breakpoint Variables */\n`
81
+ Object.entries(breakpoints).forEach(([key, value]) => {
82
+ css += ` --cs-breakpoints-${key}: ${value};\n`
83
+ })
84
+ css += '\n'
85
+
86
+ // NEW: Generate @custom-media queries for use in media queries
87
+ css += ` /* Custom Media Queries for Breakpoints */\n`
88
+ Object.entries(breakpoints).forEach(([key, value]) => {
89
+ css += ` @custom-media --bp-${key} (min-width: ${value});\n`
90
+ })
91
+ css += '\n'
92
+
93
+ return css
94
+ }
95
+
96
+ // Recursively generate CSS variables from theme object
97
+ const generateCSSVariables = (obj: any, path: string[] = []): string => {
98
+ let css = ''
99
+
100
+ if (typeof obj !== 'object' || obj === null) {
101
+ return css
102
+ }
103
+
104
+ Object.entries(obj).forEach(([key, value]) => {
105
+ const currentPath = [...path, key]
106
+
107
+ if (typeof value === 'string' || typeof value === 'number') {
108
+ // Generate CSS variable for primitive values
109
+ const cssVarName = createCSSVarName(currentPath)
110
+ css += ` ${cssVarName}: ${value};\n`
111
+ } else if (Array.isArray(value)) {
112
+ // Handle arrays (like font weights, tags)
113
+ const cssVarName = createCSSVarName(currentPath)
114
+ css += ` ${cssVarName}: ${valueToString(value)};\n`
115
+ } else if (typeof value === 'object' && value !== null) {
116
+ // Recursively process nested objects
117
+ css += generateCSSVariables(value, currentPath)
118
+ }
119
+ })
120
+
121
+ return css
122
+ }
123
+
124
+ // Generate CSS from theme object using structured traversal
125
+ const generateSingleThemeCSS = (themeName: string, themeObj: MultiThemeConfig): string => {
126
+ // Always generate light + dark mode CSS
127
+ return generateLightDarkCSS(themeName, themeObj)
128
+ }
129
+
130
+ // Generate light and dark mode CSS
131
+ const generateLightDarkCSS = (themeName: string, themeObj: MultiThemeConfig): string => {
132
+ let css = `/* ${themeName} Theme - Light & Dark Modes */\n`
133
+
134
+ // Generate @font-face declarations
135
+ css += generateFontFaces(themeObj)
136
+
137
+ // NEW: Extract breakpoints from anywhere in the theme
138
+ const breakpoints = extractBreakpoints(themeObj)
139
+
140
+ // Generate light mode variables (default)
141
+ css += `:root {\n`
142
+ css += ` /* Light Mode Variables */\n`
143
+
144
+ // NEW: Generate breakpoint variables first
145
+ css += generateBreakpointVariables(breakpoints)
146
+
147
+ // Generate all other CSS variables
148
+ css += generateCSSVariables(themeObj)
149
+ css += '}\n\n'
150
+
151
+ // Generate dark mode variables
152
+ css += `.dark {\n`
153
+ css += ` /* Dark Mode Variables */\n`
154
+
155
+ if (themeObj.modes?.dark?.colors && Object.keys(themeObj.modes.dark.colors).length > 0) {
156
+ // Use custom dark mode colors if defined
157
+ css += generateDarkModeColors(themeObj.modes.dark.colors)
158
+ } else {
159
+ // Generate automatic dark mode by adapting colors
160
+ css += generateDarkModeVariables(themeObj)
161
+ }
162
+
163
+ css += '}\n'
164
+ return css
165
+ }
166
+
167
+ // Generate dark mode colors from explicit color definitions
168
+ const generateDarkModeColors = (darkColors: any): string => {
169
+ let css = ''
170
+
171
+ Object.entries(darkColors).forEach(([colorKey, colorValue]) => {
172
+ if (typeof colorValue === 'object' && colorValue !== null) {
173
+ // Handle nested color objects (like surface, text, etc.)
174
+ Object.entries(colorValue).forEach(([subKey, subValue]) => {
175
+ if (typeof subValue === 'string' || typeof subValue === 'number') {
176
+ css += ` --cs-colors-${colorKey}-${subKey}: ${subValue};\n`
177
+ }
178
+ })
179
+ } else if (typeof colorValue === 'string' || typeof colorValue === 'number') {
180
+ // Handle direct color values
181
+ css += ` --cs-colors-${colorKey}: ${colorValue};\n`
182
+ }
183
+ })
184
+
185
+ return css
186
+ }
187
+
188
+ // Generate dark mode variables by adapting light mode colors
189
+ const generateDarkModeVariables = (themeObj: MultiThemeConfig): string => {
190
+ // Create a dark variant of the theme by adapting colors
191
+ const darkTheme = adaptThemeForDarkMode(themeObj)
192
+
193
+ // Generate CSS variables only for the properties that exist in the dark theme
194
+ let css = ''
195
+
196
+ if (darkTheme.colors) {
197
+ // Generate CSS variables for colors
198
+ Object.entries(darkTheme.colors).forEach(([colorKey, colorValue]) => {
199
+ if (typeof colorValue === 'object' && colorValue !== null) {
200
+ // Handle nested color objects (like surface, text, etc.)
201
+ Object.entries(colorValue).forEach(([subKey, subValue]) => {
202
+ if (typeof subValue === 'string' || typeof subValue === 'number') {
203
+ css += ` --cs-colors-${colorKey}-${subKey}: ${subValue};\n`
204
+ }
205
+ })
206
+ } else if (typeof colorValue === 'string' || typeof colorValue === 'number') {
207
+ // Handle direct color values
208
+ css += ` --cs-colors-${colorKey}: ${colorValue};\n`
209
+ }
210
+ })
211
+ }
212
+
213
+ // Add some basic dark mode variables for testing
214
+ css += ` --cs-colors-surface-background: #0f172a;\n`
215
+ css += ` --cs-colors-surface-surface: #1e293b;\n`
216
+ css += ` --cs-colors-surface-border: #334155;\n`
217
+ css += ` --cs-colors-surface-divider: #475569;\n`
218
+ css += ` --cs-colors-text-primary: #f8fafc;\n`
219
+ css += ` --cs-colors-text-secondary: #cbd5e1;\n`
220
+ css += ` --cs-colors-text-muted: #94a3b8;\n`
221
+
222
+ return css
223
+ }
224
+
225
+ // Adapt theme for dark mode
226
+ const adaptThemeForDarkMode = (_themeObj: MultiThemeConfig): Partial<MultiThemeConfig> => {
227
+ // This would implement your dark mode color adaptation logic
228
+ // You can use the existing ColorManager or implement custom logic
229
+ return {
230
+ colors: {
231
+ surface: {
232
+ background: '#0f172a', // Dark background
233
+ surface: '#1e293b', // Dark surface
234
+ border: '#334155', // Dark border
235
+ divider: '#475569' // Dark divider
236
+ },
237
+ text: {
238
+ primary: '#f8fafc', // Light text
239
+ secondary: '#cbd5e1', // Muted text
240
+ muted: '#94a3b8', // Muted text
241
+ inverse: '#0f172a', // Dark text for light backgrounds
242
+ onPrimary: '#0f172a', // Text on primary color
243
+ onSecondary: '#0f172a', // Text on secondary color
244
+ onSurface: '#f8fafc' // Text on surface
245
+ }
246
+ // ... other color adaptations
247
+ } as any // Type assertion to bypass strict typing for now
248
+ }
249
+ }
250
+
251
+ // Generate CSS for all themes using structured approach
252
+ const generateAllThemesCSS = () => {
253
+ try {
254
+ // Create themes directory if it doesn't exist
255
+ const themesDir = resolve(config.root, 'src/styles/themes')
256
+ if (!existsSync(themesDir)) {
257
+ mkdirSync(themesDir, { recursive: true })
258
+ }
259
+
260
+ let indexCSS = '/* Theme Index - Import all themes */\n'
261
+ let defaultThemeCSS = '/* Default Theme Variables (Coach-Stan) */\n'
262
+
263
+ // Use defaultThemes instead of hardcoded themeFiles
264
+ for (const [themeKey, themeObj] of Object.entries(defaultThemes)) {
265
+ try {
266
+ // Generate CSS for this specific theme
267
+ const themeCSS = generateSingleThemeCSS(themeObj.meta.name, themeObj)
268
+
269
+ // Write individual theme file
270
+ const themeFileName = `${themeKey}.css`
271
+ const themeOutputPath = resolve(themesDir, themeFileName)
272
+ writeFileSync(themeOutputPath, themeCSS, 'utf-8')
273
+
274
+ \n`
275
+
276
+ // Set stan-design theme as default
277
+ if (themeKey === 'stan-design') {
278
+ defaultThemeCSS += themeCSS
279
+ }
280
+
281
+ } catch (error) {
282
+ console.error(`❌ Error processing ${themeKey}:`, error)
283
+ }
284
+ }
285
+
286
+ // Write theme index file
287
+ const indexPath = resolve(config.root, 'src/styles/themes/index.css')
288
+ writeFileSync(indexPath, indexCSS, 'utf-8')
289
+
290
+ // Write default theme file (for backward compatibility)
291
+ const defaultPath = resolve(config.root, 'src/styles/generated-theme-variables.css')
292
+ writeFileSync(defaultPath, defaultThemeCSS, 'utf-8')
293
+
294
+ console.log('✅ Theme CSS Generator: Generated all dual-mode theme files successfully')
295
+
296
+ } catch (error) {
297
+ console.error('❌ Theme CSS Generator Error:', error)
298
+ }
299
+ }
300
+
301
+ // Main function to generate theme CSS
302
+ const generateThemeCSS = () => {
303
+ try {
304
+ // Check if themes directory exists
305
+ const themesSourceDir = resolve(config.root, 'src/themes/themes')
306
+
307
+ if (!existsSync(themesSourceDir)) {
308
+ console.warn('⚠️ Theme CSS Generator: themes/themes/ directory not found')
309
+ return
310
+ }
311
+
312
+ // Generate CSS for all themes
313
+ generateAllThemesCSS()
314
+
315
+ } catch (error) {
316
+ console.error('❌ Theme CSS Generator Error:', error)
317
+ }
318
+ }
319
+
320
+ return {
321
+ name: 'theme-css-generator',
322
+
323
+ configResolved(resolvedConfig) {
324
+ config = resolvedConfig
325
+ },
326
+
327
+ buildStart() {
328
+ generateThemeCSS()
329
+ },
330
+
331
+ handleHotUpdate({ file }) {
332
+ // Use defaultThemes keys instead of hardcoded file paths
333
+ const themeKeys = Object.keys(defaultThemes)
334
+ const shouldRegenerate = themeKeys.some(themeKey =>
335
+ file.includes(`themes/${themeKey}.ts`) ||
336
+ file.includes('inheritance.ts') ||
337
+ file.includes('types.ts')
338
+ )
339
+
340
+ if (shouldRegenerate) {
341
+ generateThemeCSS()
342
+ }
343
+ }
344
+ }
345
+ }
@@ -0,0 +1,305 @@
1
+ import { resolve } from 'path'
2
+ import { existsSync, mkdirSync, writeFileSync } from 'fs'
3
+ \n`
4
+ css += ` src}') format('woff2-variations');\n`
5
+ css += ` font-weight} ${maxWeight};\n`
6
+ css += ` font-display};\n`
7
+ css += `}\n`
8
+ }
9
+ }
10
+ })
11
+
12
+ return css
13
+ }
14
+
15
+ // NEW= (obj)=> {
16
+ let breakpoints= {}
17
+
18
+ const searchForBreakpoints = (currentObj, currentPath] = []) => {
19
+ if (typeof currentObj !== 'object' || currentObj === null) {
20
+ return
21
+ }
22
+
23
+ Object.entries(currentObj).forEach(([key, value]) => {
24
+ if (key === 'breakpoints' && typeof value === 'object' && value !== null) {
25
+ // Found breakpoints, extract them
26
+ Object.entries(value).forEach(([bpKey, bpValue]) => {
27
+ if (typeof bpValue === 'string' || typeof bpValue === 'number') {
28
+ breakpoints[bpKey] = bpValue
29
+ }
30
+ })
31
+ } else if (typeof value === 'object' && value !== null) {
32
+ // Recursively search deeper
33
+ searchForBreakpoints(value, [...currentPath, key])
34
+ }
35
+ })
36
+ }
37
+
38
+ searchForBreakpoints(obj)
39
+ return breakpoints
40
+ }
41
+
42
+ // NEW= (breakpoints)=> {
43
+ let css = ''
44
+ if (Object.keys(breakpoints).length === 0) { return css }
45
+
46
+ css += ` /* Breakpoint Variables */\n`
47
+ Object.entries(breakpoints).forEach(([key, value]) => {
48
+ css += ` --cs-breakpoints-${key}};\n`
49
+ })
50
+ css += '\n'
51
+
52
+ // NEW= ` /* Custom Media Queries for Breakpoints */\n`
53
+ Object.entries(breakpoints).forEach(([key, value]) => {
54
+ css += ` @custom-media --bp-${key} (min-width});\n`
55
+ })
56
+ css += '\n'
57
+
58
+ return css
59
+ }
60
+
61
+ // Recursively generate CSS variables from theme object
62
+ const generateCSSVariables = (obj, path] = [])=> {
63
+ let css = ''
64
+
65
+ if (typeof obj !== 'object' || obj === null) {
66
+ return css
67
+ }
68
+
69
+ Object.entries(obj).forEach(([key, value]) => {
70
+ const currentPath = [...path, key]
71
+
72
+ if (typeof value === 'string' || typeof value === 'number') {
73
+ // Generate CSS variable for primitive values
74
+ const cssVarName = createCSSVarName(currentPath)
75
+ css += ` ${cssVarName}};\n`
76
+ } else if (Array.isArray(value)) {
77
+ // Handle arrays (like font weights, tags)
78
+ const cssVarName = createCSSVarName(currentPath)
79
+ css += ` ${cssVarName})};\n`
80
+ } else if (typeof value === 'object' && value !== null) {
81
+ // Recursively process nested objects
82
+ css += generateCSSVariables(value, currentPath)
83
+ }
84
+ })
85
+
86
+ return css
87
+ }
88
+
89
+ // Generate CSS from theme object using structured traversal
90
+ const generateSingleThemeCSS = (themeName, themeObj)=> {
91
+ // Always generate light + dark mode CSS
92
+ return generateLightDarkCSS(themeName, themeObj)
93
+ }
94
+
95
+ // Generate light and dark mode CSS
96
+ const generateLightDarkCSS = (themeName, themeObj)=> {
97
+ let css = `/* ${themeName} Theme - Light & Dark Modes */\n`
98
+
99
+ // Generate @font-face declarations
100
+ css += generateFontFaces(themeObj)
101
+
102
+ // NEW= extractBreakpoints(themeObj)
103
+
104
+ // Generate light mode variables (default)
105
+ css += `= ` /* Light Mode Variables */\n`
106
+
107
+ // NEW= generateBreakpointVariables(breakpoints)
108
+
109
+ // Generate all other CSS variables
110
+ css += generateCSSVariables(themeObj)
111
+ css += '}\n\n'
112
+
113
+ // Generate dark mode variables
114
+ css += `.dark {\n`
115
+ css += ` /* Dark Mode Variables */\n`
116
+
117
+ if (themeObj.modes?.dark?.colors && Object.keys(themeObj.modes.dark.colors).length > 0) {
118
+ // Use custom dark mode colors if defined
119
+ css += generateDarkModeColors(themeObj.modes.dark.colors)
120
+ } else {
121
+ // Generate automatic dark mode by adapting colors
122
+ css += generateDarkModeVariables(themeObj)
123
+ }
124
+
125
+ css += '}\n'
126
+ return css
127
+ }
128
+
129
+ // Generate dark mode colors from explicit color definitions
130
+ const generateDarkModeColors = (darkColors)=> {
131
+ let css = ''
132
+
133
+ Object.entries(darkColors).forEach(([colorKey, colorValue]) => {
134
+ if (typeof colorValue === 'object' && colorValue !== null) {
135
+ // Handle nested color objects (like surface, text, etc.)
136
+ Object.entries(colorValue).forEach(([subKey, subValue]) => {
137
+ if (typeof subValue === 'string' || typeof subValue === 'number') {
138
+ css += ` --cs-colors-${colorKey}-${subKey}};\n`
139
+ }
140
+ })
141
+ } else if (typeof colorValue === 'string' || typeof colorValue === 'number') {
142
+ // Handle direct color values
143
+ css += ` --cs-colors-${colorKey}};\n`
144
+ }
145
+ })
146
+
147
+ return css
148
+ }
149
+
150
+ // Generate dark mode variables by adapting light mode colors
151
+ const generateDarkModeVariables = (themeObj)=> {
152
+ // Create a dark variant of the theme by adapting colors
153
+ const darkTheme = adaptThemeForDarkMode(themeObj)
154
+
155
+ // Generate CSS variables only for the properties that exist in the dark theme
156
+ let css = ''
157
+
158
+ if (darkTheme.colors) {
159
+ // Generate CSS variables for colors
160
+ Object.entries(darkTheme.colors).forEach(([colorKey, colorValue]) => {
161
+ if (typeof colorValue === 'object' && colorValue !== null) {
162
+ // Handle nested color objects (like surface, text, etc.)
163
+ Object.entries(colorValue).forEach(([subKey, subValue]) => {
164
+ if (typeof subValue === 'string' || typeof subValue === 'number') {
165
+ css += ` --cs-colors-${colorKey}-${subKey}};\n`
166
+ }
167
+ })
168
+ } else if (typeof colorValue === 'string' || typeof colorValue === 'number') {
169
+ // Handle direct color values
170
+ css += ` --cs-colors-${colorKey}};\n`
171
+ }
172
+ })
173
+ }
174
+
175
+ // Add some basic dark mode variables for testing
176
+ css += ` --cs-colors-surface-background;\n`
177
+ css += ` --cs-colors-surface-surface;\n`
178
+ css += ` --cs-colors-surface-border;\n`
179
+ css += ` --cs-colors-surface-divider;\n`
180
+ css += ` --cs-colors-text-primary;\n`
181
+ css += ` --cs-colors-text-secondary;\n`
182
+ css += ` --cs-colors-text-muted;\n`
183
+
184
+ return css
185
+ }
186
+
187
+ // Adapt theme for dark mode
188
+ const adaptThemeForDarkMode = (_themeObj)=> {
189
+ // This would implement your dark mode color adaptation logic
190
+ // You can use the existing ColorManager or implement custom logic
191
+ return {
192
+ colors, // Dark background
193
+ surface, // Dark surface
194
+ border, // Dark border
195
+ divider},
196
+ text, // Light text
197
+ secondary, // Muted text
198
+ muted, // Muted text
199
+ inverse, // Dark text for light backgrounds
200
+ onPrimary, // Text on primary color
201
+ onSecondary, // Text on secondary color
202
+ onSurface}
203
+ // ... other color adaptations
204
+ } as any // Type assertion to bypass strict typing for now
205
+ }
206
+ }
207
+
208
+ // Generate CSS for all themes using structured approach
209
+ const generateAllThemesCSS = () => {
210
+ try {
211
+ // Create themes directory if it doesn't exist
212
+ const themesDir = resolve(config.root, 'src/styles/themes')
213
+ if (!existsSync(themesDir)) {
214
+ mkdirSync(themesDir, { recursive})
215
+ }
216
+
217
+ let indexCSS = '/* Theme Index - Import all themes */\n'
218
+ let defaultThemeCSS = '/* Default Theme Variables (Coach-Stan) */\n'
219
+
220
+ // Use defaultThemes instead of hardcoded themeFiles
221
+ for (const [themeKey, themeObj] of Object.entries(defaultThemes)) {
222
+ try {
223
+ // Generate CSS for this specific theme
224
+ const themeCSS = generateSingleThemeCSS(themeObj.meta.name, themeObj)
225
+
226
+ // Write individual theme file
227
+ const themeFileName = `${themeKey}.css`
228
+ const themeOutputPath = resolve(themesDir, themeFileName)
229
+ writeFileSync(themeOutputPath, themeCSS, 'utf-8')
230
+
231
+ console.log(`✅ Generated dual-mode CSS for theme} -> ${themeFileName}`)
232
+
233
+ // Add import to index file
234
+ indexCSS += `@import './${themeFileName}';\n`
235
+
236
+ // Set stan-design theme as default
237
+ if (themeKey === 'stan-design') {
238
+ defaultThemeCSS += themeCSS
239
+ }
240
+
241
+ } catch (error) {
242
+ console.error(`❌ Error processing ${themeKey}, error)
243
+ }
244
+ }
245
+
246
+ // Write theme index file
247
+ const indexPath = resolve(config.root, 'src/styles/themes/index.css')
248
+ writeFileSync(indexPath, indexCSS, 'utf-8')
249
+
250
+ // Write default theme file (for backward compatibility)
251
+ const defaultPath = resolve(config.root, 'src/styles/generated-theme-variables.css')
252
+ writeFileSync(defaultPath, defaultThemeCSS, 'utf-8')
253
+
254
+ console.log('✅ Theme CSS Generator)
255
+
256
+ } catch (error) {
257
+ console.error('❌ Theme CSS Generator Error, error)
258
+ }
259
+ }
260
+
261
+ // Main function to generate theme CSS
262
+ const generateThemeCSS = () => {
263
+ try {
264
+ // Check if themes directory exists
265
+ const themesSourceDir = resolve(config.root, 'src/themes/themes')
266
+
267
+ if (!existsSync(themesSourceDir)) {
268
+ console.warn('⚠️ Theme CSS Generator)
269
+ return
270
+ }
271
+
272
+ // Generate CSS for all themes
273
+ generateAllThemesCSS()
274
+
275
+ } catch (error) {
276
+ console.error('❌ Theme CSS Generator Error, error)
277
+ }
278
+ }
279
+
280
+ return {
281
+ name,
282
+
283
+ configResolved(resolvedConfig) {
284
+ config = resolvedConfig
285
+ },
286
+
287
+ buildStart() {
288
+ generateThemeCSS()
289
+ },
290
+
291
+ handleHotUpdate({ file }) {
292
+ // Use defaultThemes keys instead of hardcoded file paths
293
+ const themeKeys = Object.keys(defaultThemes)
294
+ const shouldRegenerate = themeKeys.some(themeKey =>
295
+ file.includes(`themes/${themeKey}.js`) ||
296
+ file.includes('inheritance.js') ||
297
+ file.includes('types.js')
298
+ )
299
+
300
+ if (shouldRegenerate) {
301
+ generateThemeCSS()
302
+ }
303
+ }
304
+ }
305
+ }