@shohojdhara/atomix 0.3.1 → 0.3.3

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 (449) hide show
  1. package/CHANGELOG.md +0 -1
  2. package/README.md +41 -24
  3. package/dist/atomix.css +540 -666
  4. package/dist/atomix.min.css +3 -3
  5. package/dist/index.d.ts +7559 -5717
  6. package/dist/index.esm.js +5013 -2301
  7. package/dist/index.esm.js.map +1 -1
  8. package/dist/index.js +5084 -2356
  9. package/dist/index.js.map +1 -1
  10. package/dist/index.min.js +1 -1
  11. package/dist/index.min.js.map +1 -1
  12. package/dist/themes/applemix.css +1683 -722
  13. package/dist/themes/applemix.css.map +1 -0
  14. package/dist/themes/applemix.min.css +13 -10
  15. package/dist/themes/boomdevs.css +1358 -544
  16. package/dist/themes/boomdevs.css.map +1 -0
  17. package/dist/themes/boomdevs.min.css +13 -10
  18. package/dist/themes/esrar.css +1743 -718
  19. package/dist/themes/esrar.css.map +1 -0
  20. package/dist/themes/esrar.min.css +41 -7
  21. package/dist/themes/flashtrade.css +1735 -752
  22. package/dist/themes/flashtrade.css.map +1 -0
  23. package/dist/themes/flashtrade.min.css +19 -13
  24. package/dist/themes/mashroom.css +1765 -787
  25. package/dist/themes/mashroom.css.map +1 -0
  26. package/dist/themes/mashroom.min.css +87 -38
  27. package/dist/themes/shaj-default.css +1685 -713
  28. package/dist/themes/shaj-default.css.map +1 -0
  29. package/dist/themes/shaj-default.min.css +11 -7
  30. package/package.json +95 -26
  31. package/scripts/atomix-cli.js +1428 -0
  32. package/scripts/build-themes.js +208 -0
  33. package/scripts/cli/interactive-init.js +528 -0
  34. package/scripts/cli/migration-tools.js +603 -0
  35. package/scripts/cli/token-manager.js +519 -0
  36. package/scripts/sync-theme-config.js +309 -0
  37. package/src/components/List/ListGroup.tsx +1 -2
  38. package/src/components/Popover/Popover.tsx +2 -2
  39. package/src/components/Tooltip/Tooltip.stories.tsx +49 -12
  40. package/src/components/Tooltip/Tooltip.tsx +32 -58
  41. package/src/lib/composables/useAtomixGlass.ts +46 -46
  42. package/src/lib/composables/useTooltip.ts +285 -0
  43. package/src/lib/constants/cssVariables.ts +390 -0
  44. package/src/lib/hooks/__tests__/useComponentCustomization.test.ts +151 -0
  45. package/src/lib/hooks/index.ts +19 -0
  46. package/src/lib/hooks/useComponentCustomization.ts +175 -0
  47. package/src/lib/index.ts +10 -1
  48. package/src/lib/patterns/__tests__/slots.test.ts +108 -0
  49. package/src/lib/patterns/index.ts +35 -0
  50. package/src/lib/patterns/slots.tsx +421 -0
  51. package/src/lib/theme/__tests__/ThemeBuilder.test.ts +223 -0
  52. package/src/lib/theme/builders/ThemeBuilder.ts +372 -0
  53. package/src/lib/theme/config/index.ts +21 -0
  54. package/src/lib/theme/config/loader.ts +276 -0
  55. package/src/lib/theme/config/types.ts +98 -0
  56. package/src/lib/theme/config/validator.ts +326 -0
  57. package/src/lib/theme/constants.ts +183 -0
  58. package/src/lib/theme/core/ThemeCache.ts +283 -0
  59. package/src/lib/theme/core/ThemeEngine.test.ts +146 -0
  60. package/src/lib/theme/core/ThemeEngine.ts +657 -0
  61. package/src/lib/theme/core/ThemeRegistry.ts +284 -0
  62. package/src/lib/theme/core/ThemeValidator.ts +530 -0
  63. package/src/lib/theme/core/index.ts +24 -0
  64. package/src/lib/theme/createTheme.ts +83 -204
  65. package/src/lib/theme/cssVariableMapper.ts +261 -0
  66. package/src/lib/theme/devtools/CLI.ts +279 -0
  67. package/src/lib/theme/devtools/Inspector.tsx +594 -0
  68. package/src/lib/theme/devtools/Preview.tsx +392 -0
  69. package/src/lib/theme/devtools/index.ts +21 -0
  70. package/src/lib/theme/errors.test.ts +207 -0
  71. package/src/lib/theme/errors.ts +233 -0
  72. package/src/lib/theme/generateCSSVariables.ts +93 -9
  73. package/src/lib/theme/generators/CSSGenerator.ts +311 -0
  74. package/src/lib/theme/generators/ConfigGenerator.ts +287 -0
  75. package/src/lib/theme/generators/TypeGenerator.ts +228 -0
  76. package/src/lib/theme/generators/index.ts +21 -0
  77. package/src/lib/theme/i18n/index.ts +9 -0
  78. package/src/lib/theme/i18n/rtl.ts +325 -0
  79. package/src/lib/theme/index.ts +36 -109
  80. package/src/lib/theme/monitoring/ThemeAnalytics.ts +409 -0
  81. package/src/lib/theme/monitoring/index.ts +17 -0
  82. package/src/lib/theme/overrides/ComponentOverrides.ts +243 -0
  83. package/src/lib/theme/overrides/index.ts +15 -0
  84. package/src/lib/theme/runtime/ThemeApplicator.ts +252 -0
  85. package/src/lib/theme/runtime/ThemeErrorBoundary.tsx +233 -0
  86. package/src/lib/theme/runtime/ThemeManager.test.ts +176 -0
  87. package/src/lib/theme/runtime/ThemeManager.ts +442 -0
  88. package/src/lib/theme/runtime/ThemeProvider.tsx +318 -0
  89. package/src/lib/theme/runtime/index.ts +17 -0
  90. package/src/lib/theme/runtime/useTheme.ts +52 -0
  91. package/src/lib/theme/themeUtils.ts +27 -5
  92. package/src/lib/theme/types.ts +62 -1
  93. package/src/lib/theme/utils.ts +23 -22
  94. package/src/lib/theme/whitelabel/WhiteLabelManager.ts +364 -0
  95. package/src/lib/theme/whitelabel/index.ts +13 -0
  96. package/src/lib/theme-tools.ts +185 -0
  97. package/src/lib/types/components.ts +194 -0
  98. package/src/lib/types/partProps.ts +426 -0
  99. package/src/lib/utils/__tests__/componentUtils.test.ts +144 -0
  100. package/src/lib/utils/componentUtils.ts +163 -0
  101. package/src/lib/utils/index.ts +17 -57
  102. package/src/styles/01-settings/_settings.badge.scss +1 -1
  103. package/src/styles/01-settings/_settings.callout.scss +1 -1
  104. package/src/styles/01-settings/_settings.card.scss +1 -1
  105. package/src/styles/01-settings/_settings.colors.scss +10 -10
  106. package/src/styles/01-settings/_settings.input.scss +1 -1
  107. package/src/styles/01-settings/_settings.navbar.scss +1 -1
  108. package/src/styles/01-settings/_settings.tooltip.scss +1 -1
  109. package/src/styles/01-settings/_settings.upload.scss +1 -1
  110. package/src/styles/06-components/_components.chart.scss +2 -2
  111. package/src/styles/06-components/_components.tooltip.scss +31 -81
  112. package/src/styles/99-utilities/_utilities.border.scss +27 -58
  113. package/src/styles/99-utilities/_utilities.gradient.scss +12 -0
  114. package/src/styles/99-utilities/_utilities.position.scss +8 -15
  115. package/src/styles/99-utilities/_utilities.scss +2 -0
  116. package/src/styles/99-utilities/_utilities.spacing.scss +76 -121
  117. package/src/styles/99-utilities/_utilities.text.scss +30 -49
  118. package/src/themes/README.md +443 -0
  119. package/src/themes/THEME_CHECKLIST.md +74 -0
  120. package/src/themes/applemix/01-settings/_index.scss +24 -0
  121. package/src/themes/applemix/01-settings/_settings.animations.scss +0 -0
  122. package/src/themes/applemix/01-settings/_settings.background.scss +6 -0
  123. package/src/themes/applemix/01-settings/_settings.colors.scss +75 -0
  124. package/src/themes/applemix/01-settings/_settings.config.scss +15 -0
  125. package/src/themes/applemix/01-settings/_settings.typography.scss +30 -0
  126. package/src/themes/applemix/02-tools/_index.scss +4 -0
  127. package/src/themes/applemix/03-generic/_index.scss +7 -0
  128. package/src/themes/applemix/04-elements/_index.scss +7 -0
  129. package/src/themes/applemix/05-objects/_index.scss +7 -0
  130. package/src/themes/applemix/06-components/_index.scss +15 -0
  131. package/src/themes/applemix/99-utilities/_index.scss +7 -0
  132. package/src/themes/applemix/README.md +378 -0
  133. package/src/themes/applemix/index.scss +33 -0
  134. package/src/themes/boomdevs/01-settings/_index.scss +38 -0
  135. package/src/themes/boomdevs/01-settings/_settings.accordion.scss +12 -0
  136. package/src/themes/boomdevs/01-settings/_settings.animations.scss +11 -0
  137. package/src/themes/boomdevs/01-settings/_settings.avatar.scss +9 -0
  138. package/src/themes/boomdevs/01-settings/_settings.badge.scss +11 -0
  139. package/src/themes/boomdevs/01-settings/_settings.border-radius.scss +16 -0
  140. package/src/themes/boomdevs/01-settings/_settings.border.scss +10 -0
  141. package/src/themes/boomdevs/01-settings/_settings.box-shadow.scss +14 -0
  142. package/src/themes/boomdevs/01-settings/_settings.breadcrumb.scss +13 -0
  143. package/src/themes/boomdevs/01-settings/_settings.breakpoints.scss +15 -0
  144. package/src/themes/boomdevs/01-settings/_settings.button.scss +9 -0
  145. package/src/themes/boomdevs/01-settings/_settings.callout.scss +9 -0
  146. package/src/themes/boomdevs/01-settings/_settings.card.scss +11 -0
  147. package/src/themes/boomdevs/01-settings/_settings.checkbox.scss +9 -0
  148. package/src/themes/boomdevs/01-settings/_settings.colors.scss +145 -0
  149. package/src/themes/boomdevs/01-settings/_settings.dropdown.scss +11 -0
  150. package/src/themes/boomdevs/01-settings/_settings.grid.scss +16 -0
  151. package/src/themes/boomdevs/01-settings/_settings.input.scss +14 -0
  152. package/src/themes/boomdevs/01-settings/_settings.link.scss +11 -0
  153. package/src/themes/boomdevs/01-settings/_settings.list.scss +10 -0
  154. package/src/themes/boomdevs/01-settings/_settings.modal.scss +16 -0
  155. package/src/themes/boomdevs/01-settings/_settings.navbar.scss +16 -0
  156. package/src/themes/boomdevs/01-settings/_settings.pagination.scss +13 -0
  157. package/src/themes/boomdevs/01-settings/_settings.progress.scss +11 -0
  158. package/src/themes/boomdevs/01-settings/_settings.rating.scss +10 -0
  159. package/src/themes/boomdevs/01-settings/_settings.spacing.scss +33 -0
  160. package/src/themes/boomdevs/01-settings/_settings.spinner.scss +11 -0
  161. package/src/themes/boomdevs/01-settings/_settings.steps.scss +12 -0
  162. package/src/themes/boomdevs/01-settings/_settings.tabs.scss +12 -0
  163. package/src/themes/boomdevs/01-settings/_settings.todo.scss +15 -0
  164. package/src/themes/boomdevs/01-settings/_settings.toggle.scss +14 -0
  165. package/src/themes/boomdevs/01-settings/_settings.tooltip.scss +13 -0
  166. package/src/themes/boomdevs/01-settings/_settings.typography.scss +58 -0
  167. package/src/themes/boomdevs/01-settings/_settings.video-player.scss +12 -0
  168. package/src/themes/boomdevs/02-tools/_index.scss +7 -0
  169. package/src/themes/boomdevs/03-generic/_index.scss +7 -0
  170. package/src/themes/boomdevs/04-elements/_index.scss +7 -0
  171. package/src/themes/boomdevs/05-objects/_index.scss +7 -0
  172. package/src/themes/boomdevs/06-components/_components.button.scss +11 -0
  173. package/src/themes/boomdevs/06-components/_index.scss +11 -0
  174. package/src/themes/boomdevs/99-utilities/_index.scss +7 -0
  175. package/src/themes/boomdevs/index.scss +26 -0
  176. package/src/themes/esrar/01-settings/_index.scss +15 -0
  177. package/src/themes/esrar/01-settings/_settings.colors.scss +91 -0
  178. package/src/themes/esrar/02-tools/_index.scss +8 -0
  179. package/src/themes/esrar/02-tools/_tools.animations.scss +342 -0
  180. package/src/themes/esrar/06-components/_components.accordion.scss +49 -0
  181. package/src/themes/esrar/06-components/_components.avatar-group.scss +14 -0
  182. package/src/themes/esrar/06-components/_components.avatar.scss +61 -0
  183. package/src/themes/esrar/06-components/_components.badge.scss +117 -0
  184. package/src/themes/esrar/06-components/_components.breadcrumb.scss +65 -0
  185. package/src/themes/esrar/06-components/_components.btn-group.scss +19 -0
  186. package/src/themes/esrar/06-components/_components.button.scss +224 -0
  187. package/src/themes/esrar/06-components/_components.callout.scss +51 -0
  188. package/src/themes/esrar/06-components/_components.card.scss +134 -0
  189. package/src/themes/esrar/06-components/_components.chart.scss +24 -0
  190. package/src/themes/esrar/06-components/_components.checkbox-group.scss +26 -0
  191. package/src/themes/esrar/06-components/_components.checkbox.scss +71 -0
  192. package/src/themes/esrar/06-components/_components.color-mode-toggle.scss +29 -0
  193. package/src/themes/esrar/06-components/_components.countdown.scss +67 -0
  194. package/src/themes/esrar/06-components/_components.data-table.scss +22 -0
  195. package/src/themes/esrar/06-components/_components.datepicker.scss +20 -0
  196. package/src/themes/esrar/06-components/_components.dropdown.scss +272 -0
  197. package/src/themes/esrar/06-components/_components.edge-panel.scss +10 -0
  198. package/src/themes/esrar/06-components/_components.form-group.scss +15 -0
  199. package/src/themes/esrar/06-components/_components.form.scss +66 -0
  200. package/src/themes/esrar/06-components/_components.hero.scss +251 -0
  201. package/src/themes/esrar/06-components/_components.icon.scss +33 -0
  202. package/src/themes/esrar/06-components/_components.image-gallery.scss +29 -0
  203. package/src/themes/esrar/06-components/_components.input.scss +91 -0
  204. package/src/themes/esrar/06-components/_components.list-group.scss +26 -0
  205. package/src/themes/esrar/06-components/_components.modal.scss +148 -0
  206. package/src/themes/esrar/06-components/_components.notification.scss +80 -0
  207. package/src/themes/esrar/06-components/_components.pagination.scss +84 -0
  208. package/src/themes/esrar/06-components/_components.popover.scss +10 -0
  209. package/src/themes/esrar/06-components/_components.progress.scss +64 -0
  210. package/src/themes/esrar/06-components/_components.rating.scss +26 -0
  211. package/src/themes/esrar/06-components/_components.skeleton.scss +15 -0
  212. package/src/themes/esrar/06-components/_components.slider.scss +90 -0
  213. package/src/themes/esrar/06-components/_components.spinner.scss +71 -0
  214. package/src/themes/esrar/06-components/_components.steps.scss +76 -0
  215. package/src/themes/esrar/06-components/_components.tab.scss +58 -0
  216. package/src/themes/esrar/06-components/_components.tag.scss +21 -0
  217. package/src/themes/esrar/06-components/_components.timeline.scss +19 -0
  218. package/src/themes/esrar/06-components/_components.toast.scss +91 -0
  219. package/src/themes/esrar/06-components/_components.toggle.scss +74 -0
  220. package/src/themes/esrar/06-components/_components.tooltip.scss +45 -0
  221. package/src/themes/esrar/06-components/_components.upload.scss +102 -0
  222. package/src/themes/esrar/06-components/_index.scss +42 -0
  223. package/src/themes/esrar/index.scss +30 -0
  224. package/src/themes/flashtrade/01-settings/_index.scss +19 -0
  225. package/src/themes/flashtrade/01-settings/_settings.animations.scss +11 -0
  226. package/src/themes/flashtrade/01-settings/_settings.background.scss +9 -0
  227. package/src/themes/flashtrade/01-settings/_settings.colors.scss +79 -0
  228. package/src/themes/flashtrade/01-settings/_settings.config.scss +16 -0
  229. package/src/themes/flashtrade/01-settings/_settings.typography.scss +35 -0
  230. package/src/themes/flashtrade/02-tools/_index.scss +8 -0
  231. package/src/themes/flashtrade/03-generic/_index.scss +8 -0
  232. package/src/themes/flashtrade/04-elements/_index.scss +12 -0
  233. package/src/themes/flashtrade/05-objects/_index.scss +8 -0
  234. package/src/themes/flashtrade/06-components/_components.badge.scss +156 -0
  235. package/src/themes/flashtrade/06-components/_components.button.scss +135 -0
  236. package/src/themes/flashtrade/06-components/_components.card.scss +214 -0
  237. package/src/themes/flashtrade/06-components/_components.navbar.scss +227 -0
  238. package/src/themes/flashtrade/06-components/_index.scss +13 -0
  239. package/src/themes/flashtrade/99-utilities/_index.scss +9 -0
  240. package/src/themes/flashtrade/99-utilities/_utilities.trading.scss +187 -0
  241. package/src/themes/flashtrade/README.md +386 -0
  242. package/src/themes/flashtrade/demo.html +272 -0
  243. package/src/themes/flashtrade/index.scss +36 -0
  244. package/src/themes/mashroom/01-settings/_index.scss +69 -0
  245. package/src/themes/mashroom/01-settings/_settings.accordion.scss +32 -0
  246. package/src/themes/mashroom/01-settings/_settings.animations.scss +26 -0
  247. package/src/themes/mashroom/01-settings/_settings.avatar-group.scss +22 -0
  248. package/src/themes/mashroom/01-settings/_settings.avatar.scss +57 -0
  249. package/src/themes/mashroom/01-settings/_settings.badge.scss +19 -0
  250. package/src/themes/mashroom/01-settings/_settings.border-radius.scss +24 -0
  251. package/src/themes/mashroom/01-settings/_settings.border.scss +14 -0
  252. package/src/themes/mashroom/01-settings/_settings.box-shadow.scss +40 -0
  253. package/src/themes/mashroom/01-settings/_settings.breadcrumb.scss +0 -0
  254. package/src/themes/mashroom/01-settings/_settings.breakpoints.scss +17 -0
  255. package/src/themes/mashroom/01-settings/_settings.btn-group.scss +5 -0
  256. package/src/themes/mashroom/01-settings/_settings.button.scss +50 -0
  257. package/src/themes/mashroom/01-settings/_settings.callout.scss +81 -0
  258. package/src/themes/mashroom/01-settings/_settings.card.scss +52 -0
  259. package/src/themes/mashroom/01-settings/_settings.checkbox-group.scss +5 -0
  260. package/src/themes/mashroom/01-settings/_settings.checkbox.scss +23 -0
  261. package/src/themes/mashroom/01-settings/_settings.color-mode.scss +7 -0
  262. package/src/themes/mashroom/01-settings/_settings.colors.scss +180 -0
  263. package/src/themes/mashroom/01-settings/_settings.config.scss +4 -0
  264. package/src/themes/mashroom/01-settings/_settings.countdown.scss +20 -0
  265. package/src/themes/mashroom/01-settings/_settings.data-table.scss +56 -0
  266. package/src/themes/mashroom/01-settings/_settings.datepicker.scss +45 -0
  267. package/src/themes/mashroom/01-settings/_settings.design-tokens.scss +3 -0
  268. package/src/themes/mashroom/01-settings/_settings.dropdown.scss +45 -0
  269. package/src/themes/mashroom/01-settings/_settings.edge-panel.scss +24 -0
  270. package/src/themes/mashroom/01-settings/_settings.fonts.scss +8 -0
  271. package/src/themes/mashroom/01-settings/_settings.form-group.scss +14 -0
  272. package/src/themes/mashroom/01-settings/_settings.form.scss +6 -0
  273. package/src/themes/mashroom/01-settings/_settings.grid.scss +23 -0
  274. package/src/themes/mashroom/01-settings/_settings.hero.scss +41 -0
  275. package/src/themes/mashroom/01-settings/_settings.input.scss +51 -0
  276. package/src/themes/mashroom/01-settings/_settings.link.scss +13 -0
  277. package/src/themes/mashroom/01-settings/_settings.list-group.scss +16 -0
  278. package/src/themes/mashroom/01-settings/_settings.list.scss +13 -0
  279. package/src/themes/mashroom/01-settings/_settings.masonry-grid.scss +23 -0
  280. package/src/themes/mashroom/01-settings/_settings.menu.scss +50 -0
  281. package/src/themes/mashroom/01-settings/_settings.messages.scss +98 -0
  282. package/src/themes/mashroom/01-settings/_settings.modal.scss +41 -0
  283. package/src/themes/mashroom/01-settings/_settings.nav.scss +20 -0
  284. package/src/themes/mashroom/01-settings/_settings.navbar.scss +54 -0
  285. package/src/themes/mashroom/01-settings/_settings.pagination.scss +30 -0
  286. package/src/themes/mashroom/01-settings/_settings.photoviewer.scss +45 -0
  287. package/src/themes/mashroom/01-settings/_settings.popover.scss +20 -0
  288. package/src/themes/mashroom/01-settings/_settings.position.scss +9 -0
  289. package/src/themes/mashroom/01-settings/_settings.progress.scss +17 -0
  290. package/src/themes/mashroom/01-settings/_settings.rating.scss +11 -0
  291. package/src/themes/mashroom/01-settings/_settings.river.scss +50 -0
  292. package/src/themes/mashroom/01-settings/_settings.sectionintro.scss +31 -0
  293. package/src/themes/mashroom/01-settings/_settings.select.scss +47 -0
  294. package/src/themes/mashroom/01-settings/_settings.side-menu.scss +79 -0
  295. package/src/themes/mashroom/01-settings/_settings.skeleton.scss +24 -0
  296. package/src/themes/mashroom/01-settings/_settings.spacing.scss +66 -0
  297. package/src/themes/mashroom/01-settings/_settings.spinner.scss +34 -0
  298. package/src/themes/mashroom/01-settings/_settings.steps.scss +33 -0
  299. package/src/themes/mashroom/01-settings/_settings.tabs.scss +33 -0
  300. package/src/themes/mashroom/01-settings/_settings.testimonials.scss +24 -0
  301. package/src/themes/mashroom/01-settings/_settings.todo.scss +52 -0
  302. package/src/themes/mashroom/01-settings/_settings.toggle.scss +49 -0
  303. package/src/themes/mashroom/01-settings/_settings.tooltip.scss +20 -0
  304. package/src/themes/mashroom/01-settings/_settings.typography.scss +95 -0
  305. package/src/themes/mashroom/01-settings/_settings.upload.scss +96 -0
  306. package/src/themes/mashroom/01-settings/_settings.z-layers.scss +19 -0
  307. package/src/themes/mashroom/02-tools/_index.scss +8 -0
  308. package/src/themes/mashroom/02-tools/_tools.psychedelic-gradients.scss +78 -0
  309. package/src/themes/mashroom/02-tools/_tools.trippy-effects.scss +114 -0
  310. package/src/themes/mashroom/03-generic/_index.scss +6 -0
  311. package/src/themes/mashroom/04-elements/_index.scss +6 -0
  312. package/src/themes/mashroom/05-objects/_index.scss +6 -0
  313. package/src/themes/mashroom/06-components/_components.accordion.scss +187 -0
  314. package/src/themes/mashroom/06-components/_components.avatar-group.scss +276 -0
  315. package/src/themes/mashroom/06-components/_components.avatar.scss +114 -0
  316. package/src/themes/mashroom/06-components/_components.badge.scss +152 -0
  317. package/src/themes/mashroom/06-components/_components.breadcrumb.scss +162 -0
  318. package/src/themes/mashroom/06-components/_components.btn-group.scss +404 -0
  319. package/src/themes/mashroom/06-components/_components.button.scss +160 -0
  320. package/src/themes/mashroom/06-components/_components.callout.scss +140 -0
  321. package/src/themes/mashroom/06-components/_components.card.scss +225 -0
  322. package/src/themes/mashroom/06-components/_components.checkbox.scss +186 -0
  323. package/src/themes/mashroom/06-components/_components.color-mode-toggle.scss +308 -0
  324. package/src/themes/mashroom/06-components/_components.countdown.scss +402 -0
  325. package/src/themes/mashroom/06-components/_components.data-table.scss +354 -0
  326. package/src/themes/mashroom/06-components/_components.datepicker.scss +349 -0
  327. package/src/themes/mashroom/06-components/_components.dropdown.scss +334 -0
  328. package/src/themes/mashroom/06-components/_components.edge-panel.scss +413 -0
  329. package/src/themes/mashroom/06-components/_components.form-group.scss +433 -0
  330. package/src/themes/mashroom/06-components/_components.form.scss +358 -0
  331. package/src/themes/mashroom/06-components/_components.hero.scss +151 -0
  332. package/src/themes/mashroom/06-components/_components.input.scss +147 -0
  333. package/src/themes/mashroom/06-components/_components.list-group.scss +456 -0
  334. package/src/themes/mashroom/06-components/_components.list.scss +145 -0
  335. package/src/themes/mashroom/06-components/_components.menu.scss +497 -0
  336. package/src/themes/mashroom/06-components/_components.messages.scss +277 -0
  337. package/src/themes/mashroom/06-components/_components.modal.scss +264 -0
  338. package/src/themes/mashroom/06-components/_components.nav.scss +181 -0
  339. package/src/themes/mashroom/06-components/_components.navbar.scss +538 -0
  340. package/src/themes/mashroom/06-components/_components.pagination.scss +400 -0
  341. package/src/themes/mashroom/06-components/_components.photoviewer.scss +498 -0
  342. package/src/themes/mashroom/06-components/_components.popover.scss +383 -0
  343. package/src/themes/mashroom/06-components/_components.product-review.scss +408 -0
  344. package/src/themes/mashroom/06-components/_components.progress.scss +249 -0
  345. package/src/themes/mashroom/06-components/_components.rating.scss +300 -0
  346. package/src/themes/mashroom/06-components/_components.river.scss +570 -0
  347. package/src/themes/mashroom/06-components/_components.sectionintro.scss +546 -0
  348. package/src/themes/mashroom/06-components/_components.select.scss +455 -0
  349. package/src/themes/mashroom/06-components/_components.side-menu.scss +635 -0
  350. package/src/themes/mashroom/06-components/_components.skeleton.scss +447 -0
  351. package/src/themes/mashroom/06-components/_components.slider.scss +414 -0
  352. package/src/themes/mashroom/06-components/_components.spinner.scss +198 -0
  353. package/src/themes/mashroom/06-components/_components.steps.scss +350 -0
  354. package/src/themes/mashroom/06-components/_components.tabs.scss +269 -0
  355. package/src/themes/mashroom/06-components/_components.testimonials.scss +561 -0
  356. package/src/themes/mashroom/06-components/_components.toggle.scss +231 -0
  357. package/src/themes/mashroom/06-components/_components.tooltip.scss +167 -0
  358. package/src/themes/mashroom/06-components/_components.upload.scss +537 -0
  359. package/src/themes/mashroom/06-components/_components.video-player.scss +560 -0
  360. package/src/themes/mashroom/06-components/_index.scss +55 -0
  361. package/src/themes/mashroom/99-utilities/_index.scss +6 -0
  362. package/src/themes/mashroom/index.scss +26 -0
  363. package/src/themes/shaj-default/01-settings/_index.scss +69 -0
  364. package/src/themes/shaj-default/01-settings/_settings.accordion.scss +38 -0
  365. package/src/themes/shaj-default/01-settings/_settings.animations.scss +32 -0
  366. package/src/themes/shaj-default/01-settings/_settings.avatar-group.scss +28 -0
  367. package/src/themes/shaj-default/01-settings/_settings.avatar.scss +63 -0
  368. package/src/themes/shaj-default/01-settings/_settings.badge.scss +25 -0
  369. package/src/themes/shaj-default/01-settings/_settings.border-radius.scss +24 -0
  370. package/src/themes/shaj-default/01-settings/_settings.border.scss +20 -0
  371. package/src/themes/shaj-default/01-settings/_settings.box-shadow.scss +46 -0
  372. package/src/themes/shaj-default/01-settings/_settings.breadcrumb.scss +0 -0
  373. package/src/themes/shaj-default/01-settings/_settings.breakpoints.scss +23 -0
  374. package/src/themes/shaj-default/01-settings/_settings.btn-group.scss +11 -0
  375. package/src/themes/shaj-default/01-settings/_settings.button.scss +56 -0
  376. package/src/themes/shaj-default/01-settings/_settings.callout.scss +87 -0
  377. package/src/themes/shaj-default/01-settings/_settings.card.scss +52 -0
  378. package/src/themes/shaj-default/01-settings/_settings.checkbox-group.scss +11 -0
  379. package/src/themes/shaj-default/01-settings/_settings.checkbox.scss +29 -0
  380. package/src/themes/shaj-default/01-settings/_settings.color-mode.scss +13 -0
  381. package/src/themes/shaj-default/01-settings/_settings.colors.scss +91 -0
  382. package/src/themes/shaj-default/01-settings/_settings.config.scss +4 -0
  383. package/src/themes/shaj-default/01-settings/_settings.countdown.scss +26 -0
  384. package/src/themes/shaj-default/01-settings/_settings.data-table.scss +62 -0
  385. package/src/themes/shaj-default/01-settings/_settings.datepicker.scss +51 -0
  386. package/src/themes/shaj-default/01-settings/_settings.design-tokens.scss +9 -0
  387. package/src/themes/shaj-default/01-settings/_settings.dropdown.scss +51 -0
  388. package/src/themes/shaj-default/01-settings/_settings.edge-panel.scss +30 -0
  389. package/src/themes/shaj-default/01-settings/_settings.fonts.scss +13 -0
  390. package/src/themes/shaj-default/01-settings/_settings.form-group.scss +20 -0
  391. package/src/themes/shaj-default/01-settings/_settings.form.scss +12 -0
  392. package/src/themes/shaj-default/01-settings/_settings.grid.scss +29 -0
  393. package/src/themes/shaj-default/01-settings/_settings.hero.scss +47 -0
  394. package/src/themes/shaj-default/01-settings/_settings.input.scss +57 -0
  395. package/src/themes/shaj-default/01-settings/_settings.link.scss +19 -0
  396. package/src/themes/shaj-default/01-settings/_settings.list-group.scss +22 -0
  397. package/src/themes/shaj-default/01-settings/_settings.list.scss +19 -0
  398. package/src/themes/shaj-default/01-settings/_settings.masonry-grid.scss +29 -0
  399. package/src/themes/shaj-default/01-settings/_settings.menu.scss +56 -0
  400. package/src/themes/shaj-default/01-settings/_settings.messages.scss +104 -0
  401. package/src/themes/shaj-default/01-settings/_settings.modal.scss +47 -0
  402. package/src/themes/shaj-default/01-settings/_settings.nav.scss +26 -0
  403. package/src/themes/shaj-default/01-settings/_settings.navbar.scss +60 -0
  404. package/src/themes/shaj-default/01-settings/_settings.pagination.scss +36 -0
  405. package/src/themes/shaj-default/01-settings/_settings.photoviewer.scss +51 -0
  406. package/src/themes/shaj-default/01-settings/_settings.popover.scss +26 -0
  407. package/src/themes/shaj-default/01-settings/_settings.position.scss +15 -0
  408. package/src/themes/shaj-default/01-settings/_settings.progress.scss +23 -0
  409. package/src/themes/shaj-default/01-settings/_settings.rating.scss +17 -0
  410. package/src/themes/shaj-default/01-settings/_settings.river.scss +56 -0
  411. package/src/themes/shaj-default/01-settings/_settings.sectionintro.scss +37 -0
  412. package/src/themes/shaj-default/01-settings/_settings.select.scss +53 -0
  413. package/src/themes/shaj-default/01-settings/_settings.side-menu.scss +85 -0
  414. package/src/themes/shaj-default/01-settings/_settings.skeleton.scss +30 -0
  415. package/src/themes/shaj-default/01-settings/_settings.spacing.scss +72 -0
  416. package/src/themes/shaj-default/01-settings/_settings.spinner.scss +24 -0
  417. package/src/themes/shaj-default/01-settings/_settings.steps.scss +39 -0
  418. package/src/themes/shaj-default/01-settings/_settings.tabs.scss +39 -0
  419. package/src/themes/shaj-default/01-settings/_settings.testimonials.scss +30 -0
  420. package/src/themes/shaj-default/01-settings/_settings.todo.scss +58 -0
  421. package/src/themes/shaj-default/01-settings/_settings.toggle.scss +55 -0
  422. package/src/themes/shaj-default/01-settings/_settings.tooltip.scss +26 -0
  423. package/src/themes/shaj-default/01-settings/_settings.typography.scss +101 -0
  424. package/src/themes/shaj-default/01-settings/_settings.upload.scss +102 -0
  425. package/src/themes/shaj-default/01-settings/_settings.z-layers.scss +25 -0
  426. package/src/themes/shaj-default/02-tools/_index.scss +0 -0
  427. package/src/themes/shaj-default/03-generic/_generic.root.scss +0 -0
  428. package/src/themes/shaj-default/03-generic/_index.scss +2 -0
  429. package/src/themes/shaj-default/04-elements/_index.scss +0 -0
  430. package/src/themes/shaj-default/05-objects/_index.scss +0 -0
  431. package/src/themes/shaj-default/06-components/_components.button.scss +55 -0
  432. package/src/themes/shaj-default/06-components/_components.card.scss +57 -0
  433. package/src/themes/shaj-default/06-components/_components.input.scss +58 -0
  434. package/src/themes/shaj-default/06-components/_components.navbar.scss +99 -0
  435. package/src/themes/shaj-default/06-components/_components.tooltip.scss +0 -0
  436. package/src/themes/shaj-default/06-components/_index.scss +13 -0
  437. package/src/themes/shaj-default/99-utilities/_index.scss +0 -0
  438. package/src/themes/shaj-default/index.scss +25 -0
  439. package/src/themes/themes.config.js +219 -0
  440. package/theme.config.ts +360 -0
  441. package/src/lib/theme/ThemeManager.integration.test.ts +0 -124
  442. package/src/lib/theme/ThemeManager.stories.tsx +0 -472
  443. package/src/lib/theme/ThemeManager.test.ts +0 -190
  444. package/src/lib/theme/ThemeManager.ts +0 -645
  445. package/src/lib/theme/ThemeProvider.tsx +0 -377
  446. package/src/lib/theme/createTheme.test.ts +0 -475
  447. package/src/lib/theme/useTheme.test.tsx +0 -67
  448. package/src/lib/theme/useTheme.ts +0 -64
  449. package/src/lib/theme/utils.test.ts +0 -140
@@ -0,0 +1,528 @@
1
+ /**
2
+ * Interactive Init Wizard for Atomix Design System
3
+ */
4
+
5
+ import inquirer from 'inquirer';
6
+ import chalk from 'chalk';
7
+ import { writeFile, mkdir } from 'fs/promises';
8
+ import { join } from 'path';
9
+ import { existsSync } from 'fs';
10
+ import boxen from 'boxen';
11
+
12
+ /**
13
+ * Project Templates
14
+ */
15
+ const projectTemplates = {
16
+ react: {
17
+ dependencies: [
18
+ '@shohojdhara/atomix',
19
+ 'react',
20
+ 'react-dom'
21
+ ],
22
+ devDependencies: [
23
+ '@types/react',
24
+ '@types/react-dom',
25
+ 'typescript',
26
+ 'vite',
27
+ '@vitejs/plugin-react'
28
+ ],
29
+ files: {
30
+ 'vite.config.ts': `import { defineConfig } from 'vite';
31
+ import react from '@vitejs/plugin-react';
32
+
33
+ export default defineConfig({
34
+ plugins: [react()],
35
+ css: {
36
+ preprocessorOptions: {
37
+ scss: {
38
+ additionalData: \`@import '@shohojdhara/atomix/scss/settings';\`
39
+ }
40
+ }
41
+ }
42
+ });`,
43
+ 'src/App.tsx': `import React from 'react';
44
+ import { Button, Card } from '@shohojdhara/atomix';
45
+ import '@shohojdhara/atomix/css';
46
+
47
+ function App() {
48
+ return (
49
+ <div className="app">
50
+ <Card>
51
+ <h1>Welcome to Atomix Design System</h1>
52
+ <Button variant="primary">Get Started</Button>
53
+ </Card>
54
+ </div>
55
+ );
56
+ }
57
+
58
+ export default App;`,
59
+ 'src/main.tsx': `import React from 'react';
60
+ import ReactDOM from 'react-dom/client';
61
+ import App from './App';
62
+ import './index.css';
63
+
64
+ ReactDOM.createRoot(document.getElementById('root')!).render(
65
+ <React.StrictMode>
66
+ <App />
67
+ </React.StrictMode>
68
+ );`,
69
+ 'src/index.css': `/* Custom styles */
70
+ body {
71
+ margin: 0;
72
+ font-family: var(--atomix-font-family-base);
73
+ }`
74
+ }
75
+ },
76
+
77
+ nextjs: {
78
+ dependencies: [
79
+ '@shohojdhara/atomix',
80
+ 'next',
81
+ 'react',
82
+ 'react-dom'
83
+ ],
84
+ devDependencies: [
85
+ '@types/react',
86
+ '@types/react-dom',
87
+ 'typescript',
88
+ 'eslint',
89
+ 'eslint-config-next'
90
+ ],
91
+ files: {
92
+ 'next.config.js': `/** @type {import('next').NextConfig} */
93
+ const nextConfig = {
94
+ reactStrictMode: true,
95
+ sassOptions: {
96
+ includePaths: ['./src/styles'],
97
+ prependData: \`@import '@shohojdhara/atomix/scss/settings';\`
98
+ }
99
+ };
100
+
101
+ module.exports = nextConfig;`,
102
+ 'src/pages/_app.tsx': `import type { AppProps } from 'next/app';
103
+ import '@shohojdhara/atomix/css';
104
+ import '../styles/globals.css';
105
+
106
+ export default function App({ Component, pageProps }: AppProps) {
107
+ return <Component {...pageProps} />;
108
+ }`,
109
+ 'src/pages/index.tsx': `import { Button, Card } from '@shohojdhara/atomix';
110
+
111
+ export default function Home() {
112
+ return (
113
+ <main>
114
+ <Card>
115
+ <h1>Welcome to Atomix + Next.js</h1>
116
+ <Button variant="primary">Get Started</Button>
117
+ </Card>
118
+ </main>
119
+ );
120
+ }`,
121
+ 'src/styles/globals.css': `/* Global styles */
122
+ body {
123
+ margin: 0;
124
+ padding: 0;
125
+ }`
126
+ }
127
+ },
128
+
129
+ vanilla: {
130
+ dependencies: [
131
+ '@shohojdhara/atomix'
132
+ ],
133
+ devDependencies: [
134
+ 'vite',
135
+ 'sass'
136
+ ],
137
+ files: {
138
+ 'vite.config.js': `import { defineConfig } from 'vite';
139
+
140
+ export default defineConfig({
141
+ css: {
142
+ preprocessorOptions: {
143
+ scss: {
144
+ additionalData: \`@import '@shohojdhara/atomix/scss/settings';\`
145
+ }
146
+ }
147
+ }
148
+ });`,
149
+ 'index.html': `<!DOCTYPE html>
150
+ <html lang="en">
151
+ <head>
152
+ <meta charset="UTF-8">
153
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
154
+ <title>Atomix Design System</title>
155
+ <link rel="stylesheet" href="/node_modules/@shohojdhara/atomix/dist/atomix.css">
156
+ <link rel="stylesheet" href="/src/styles/main.scss">
157
+ </head>
158
+ <body>
159
+ <div class="c-card">
160
+ <h1>Welcome to Atomix Design System</h1>
161
+ <button class="c-btn c-btn-primary">Get Started</button>
162
+ </div>
163
+
164
+ <script type="module" src="/src/main.js"></script>
165
+ </body>
166
+ </html>`,
167
+ 'src/main.js': `// Initialize Atomix components
168
+ import { initializeComponents } from '@shohojdhara/atomix/vanilla';
169
+
170
+ document.addEventListener('DOMContentLoaded', () => {
171
+ initializeComponents();
172
+
173
+ // Your custom code here
174
+ console.log('Atomix Design System initialized');
175
+ });`,
176
+ 'src/styles/main.scss': `// Import Atomix
177
+ @import '@shohojdhara/atomix/scss';
178
+
179
+ // Your custom styles
180
+ .app {
181
+ padding: 2rem;
182
+ }`
183
+ }
184
+ }
185
+ };
186
+
187
+ /**
188
+ * Configuration templates
189
+ */
190
+ const configTemplates = {
191
+ basic: {
192
+ '.atomixrc.json': {
193
+ theme: {
194
+ name: 'custom',
195
+ outputDir: './dist/themes',
196
+ minify: true,
197
+ sourceMaps: false
198
+ },
199
+ components: {
200
+ style: 'scss',
201
+ typescript: true,
202
+ stories: true
203
+ }
204
+ }
205
+ },
206
+
207
+ advanced: {
208
+ 'atomix.config.js': `module.exports = {
209
+ // Theme configuration
210
+ theme: {
211
+ name: process.env.ATOMIX_THEME || 'custom',
212
+ outputDir: './dist/themes',
213
+ minify: process.env.NODE_ENV === 'production',
214
+ sourceMaps: process.env.NODE_ENV === 'development',
215
+ watch: process.env.NODE_ENV === 'development'
216
+ },
217
+
218
+ // Component generation
219
+ components: {
220
+ path: './src/components',
221
+ style: 'scss-module', // scss | scss-module | css-in-js
222
+ typescript: true,
223
+ stories: true,
224
+ tests: true
225
+ },
226
+
227
+ // Design tokens
228
+ tokens: {
229
+ colors: {
230
+ custom: true,
231
+ validate: true
232
+ },
233
+ typography: {
234
+ scale: '1.25', // Major third
235
+ baseSize: '16px'
236
+ }
237
+ },
238
+
239
+ // Build options
240
+ build: {
241
+ clean: true,
242
+ analyze: false,
243
+ report: true
244
+ }
245
+ };`
246
+ }
247
+ };
248
+
249
+ /**
250
+ * Run the interactive init wizard
251
+ */
252
+ export async function runInitWizard() {
253
+ console.log(boxen(
254
+ chalk.bold.cyan('🎨 Atomix Design System Setup Wizard\n\n') +
255
+ chalk.gray('Let\'s set up your design system project!'),
256
+ {
257
+ padding: 1,
258
+ margin: 1,
259
+ borderStyle: 'round',
260
+ borderColor: 'cyan'
261
+ }
262
+ ));
263
+
264
+ try {
265
+ // Step 1: Project type
266
+ const { projectType } = await inquirer.prompt([
267
+ {
268
+ type: 'list',
269
+ name: 'projectType',
270
+ message: 'What type of project are you building?',
271
+ choices: [
272
+ { name: 'React Application', value: 'react' },
273
+ { name: 'Next.js Application', value: 'nextjs' },
274
+ { name: 'Vanilla JavaScript/HTML', value: 'vanilla' },
275
+ { name: 'Custom Setup', value: 'custom' }
276
+ ]
277
+ }
278
+ ]);
279
+
280
+ // Step 2: Theme selection
281
+ const { themeChoice } = await inquirer.prompt([
282
+ {
283
+ type: 'list',
284
+ name: 'themeChoice',
285
+ message: 'How would you like to handle theming?',
286
+ choices: [
287
+ { name: 'Use a pre-built theme', value: 'prebuilt' },
288
+ { name: 'Create a custom theme', value: 'custom' },
289
+ { name: 'Start with default styles', value: 'default' },
290
+ { name: 'I\'ll configure this later', value: 'skip' }
291
+ ]
292
+ }
293
+ ]);
294
+
295
+ let selectedTheme = null;
296
+ if (themeChoice === 'prebuilt') {
297
+ const { theme } = await inquirer.prompt([
298
+ {
299
+ type: 'list',
300
+ name: 'theme',
301
+ message: 'Select a pre-built theme:',
302
+ choices: [
303
+ { name: 'Shaj Default - Clean & Modern', value: 'shaj-default' },
304
+ { name: 'FlashTrade - Crypto Trading', value: 'flashtrade' },
305
+ { name: 'BoomDevs - Dark Mode', value: 'boomdevs' },
306
+ { name: 'Esrar - Minimal Light', value: 'esrar' },
307
+ { name: 'Mashroom - Colorful & Playful', value: 'mashroom' },
308
+ { name: 'AppleMix - Glass Morphism', value: 'applemix' }
309
+ ]
310
+ }
311
+ ]);
312
+ selectedTheme = theme;
313
+ }
314
+
315
+ // Step 3: Features
316
+ const { features } = await inquirer.prompt([
317
+ {
318
+ type: 'checkbox',
319
+ name: 'features',
320
+ message: 'Select additional features:',
321
+ choices: [
322
+ { name: 'TypeScript support', value: 'typescript', checked: true },
323
+ { name: 'Storybook integration', value: 'storybook' },
324
+ { name: 'Testing setup (Vitest)', value: 'testing' },
325
+ { name: 'ESLint & Prettier', value: 'linting' },
326
+ { name: 'Git hooks (Husky)', value: 'githooks' },
327
+ { name: 'CI/CD workflows', value: 'cicd' }
328
+ ]
329
+ }
330
+ ]);
331
+
332
+ // Step 4: Configuration
333
+ const { configType } = await inquirer.prompt([
334
+ {
335
+ type: 'list',
336
+ name: 'configType',
337
+ message: 'Configuration file format:',
338
+ choices: [
339
+ { name: 'JSON (.atomixrc.json)', value: 'json' },
340
+ { name: 'JavaScript (atomix.config.js)', value: 'js' },
341
+ { name: 'No configuration file', value: 'none' }
342
+ ]
343
+ }
344
+ ]);
345
+
346
+ // Step 5: Installation
347
+ const { shouldInstall } = await inquirer.prompt([
348
+ {
349
+ type: 'confirm',
350
+ name: 'shouldInstall',
351
+ message: 'Install dependencies now?',
352
+ default: true
353
+ }
354
+ ]);
355
+
356
+ // Generate files
357
+ console.log(chalk.cyan('\n📦 Generating project files...\n'));
358
+
359
+ // Create project structure
360
+ if (projectType !== 'custom') {
361
+ const template = projectTemplates[projectType];
362
+
363
+ // Create directories
364
+ await mkdir('src', { recursive: true });
365
+ if (projectType === 'nextjs') {
366
+ await mkdir('src/pages', { recursive: true });
367
+ await mkdir('src/styles', { recursive: true });
368
+ } else if (projectType === 'react') {
369
+ await mkdir('src/components', { recursive: true });
370
+ } else if (projectType === 'vanilla') {
371
+ await mkdir('src/styles', { recursive: true });
372
+ }
373
+
374
+ // Write template files
375
+ for (const [path, content] of Object.entries(template.files)) {
376
+ const filePath = join(process.cwd(), path);
377
+ const dir = join(process.cwd(), path.substring(0, path.lastIndexOf('/')));
378
+
379
+ if (!existsSync(dir)) {
380
+ await mkdir(dir, { recursive: true });
381
+ }
382
+
383
+ await writeFile(filePath, content, 'utf8');
384
+ console.log(chalk.green(` ✓ Created ${path}`));
385
+ }
386
+ }
387
+
388
+ // Create configuration file
389
+ if (configType !== 'none') {
390
+ const configTemplate = configType === 'json'
391
+ ? configTemplates.basic
392
+ : configTemplates.advanced;
393
+
394
+ for (const [filename, content] of Object.entries(configTemplate)) {
395
+ const configContent = typeof content === 'object'
396
+ ? JSON.stringify(content, null, 2)
397
+ : content;
398
+
399
+ await writeFile(
400
+ join(process.cwd(), filename),
401
+ configContent,
402
+ 'utf8'
403
+ );
404
+ console.log(chalk.green(` ✓ Created ${filename}`));
405
+ }
406
+ }
407
+
408
+ // Create custom theme if selected
409
+ if (themeChoice === 'custom') {
410
+ await mkdir('themes/custom', { recursive: true });
411
+
412
+ const themeContent = `// Custom Theme
413
+ // Generated by Atomix CLI
414
+
415
+ @use '@shohojdhara/atomix/scss/settings' as * with (
416
+ // Your custom token overrides
417
+ $primary-500: #7AFFD7,
418
+ $secondary-500: #FF5733,
419
+
420
+ // Add more overrides as needed
421
+ );
422
+
423
+ // Import Atomix components
424
+ @use '@shohojdhara/atomix/scss/components';
425
+
426
+ // Your custom styles
427
+ .custom-component {
428
+ // Custom component styles
429
+ }`;
430
+
431
+ await writeFile(
432
+ join(process.cwd(), 'themes/custom/index.scss'),
433
+ themeContent,
434
+ 'utf8'
435
+ );
436
+ console.log(chalk.green(' ✓ Created custom theme'));
437
+ }
438
+
439
+ // Generate package.json scripts
440
+ const scripts = {
441
+ 'dev': projectType === 'nextjs' ? 'next dev' : 'vite',
442
+ 'build': projectType === 'nextjs' ? 'next build' : 'vite build',
443
+ 'build:theme': 'atomix build-theme themes/custom',
444
+ 'generate:component': 'atomix generate component',
445
+ 'validate': 'atomix validate --tokens --theme'
446
+ };
447
+
448
+ if (features.includes('storybook')) {
449
+ scripts['storybook'] = 'storybook dev -p 6006';
450
+ scripts['build:storybook'] = 'storybook build';
451
+ }
452
+
453
+ if (features.includes('testing')) {
454
+ scripts['test'] = 'vitest';
455
+ scripts['test:watch'] = 'vitest --watch';
456
+ scripts['test:coverage'] = 'vitest --coverage';
457
+ }
458
+
459
+ if (features.includes('linting')) {
460
+ scripts['lint'] = 'eslint . --ext .ts,.tsx,.js,.jsx';
461
+ scripts['lint:fix'] = 'eslint . --ext .ts,.tsx,.js,.jsx --fix';
462
+ scripts['format'] = 'prettier --write "src/**/*.{ts,tsx,js,jsx,json,css,scss}"';
463
+ }
464
+
465
+ // Update package.json if it exists
466
+ const packageJsonPath = join(process.cwd(), 'package.json');
467
+ if (existsSync(packageJsonPath)) {
468
+ const { addScripts } = await inquirer.prompt([
469
+ {
470
+ type: 'confirm',
471
+ name: 'addScripts',
472
+ message: 'Add Atomix scripts to package.json?',
473
+ default: true
474
+ }
475
+ ]);
476
+
477
+ if (addScripts) {
478
+ const packageJson = JSON.parse(await readFile(packageJsonPath, 'utf8'));
479
+ packageJson.scripts = { ...packageJson.scripts, ...scripts };
480
+ await writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2), 'utf8');
481
+ console.log(chalk.green(' ✓ Updated package.json scripts'));
482
+ }
483
+ }
484
+
485
+ // Success message
486
+ console.log(boxen(
487
+ chalk.bold.green('✨ Setup Complete!\n\n') +
488
+ chalk.cyan('Your Atomix project is ready.\n\n') +
489
+ chalk.gray('Next steps:\n') +
490
+ (shouldInstall ? '' : chalk.white('1. Install dependencies: npm install\n')) +
491
+ chalk.white(`${shouldInstall ? '1' : '2'}. Start development: npm run dev\n`) +
492
+ chalk.white(`${shouldInstall ? '2' : '3'}. Build your theme: npm run build:theme\n`) +
493
+ chalk.white(`${shouldInstall ? '3' : '4'}. Generate components: npm run generate:component\n\n`) +
494
+ chalk.gray('Documentation: https://github.com/shohojdhara/atomix'),
495
+ {
496
+ padding: 1,
497
+ margin: 1,
498
+ borderStyle: 'round',
499
+ borderColor: 'green'
500
+ }
501
+ ));
502
+
503
+ // Install dependencies if requested
504
+ if (shouldInstall) {
505
+ console.log(chalk.cyan('\n📥 Installing dependencies...\n'));
506
+ const { execSync } = await import('child_process');
507
+
508
+ try {
509
+ execSync('npm install', { stdio: 'inherit' });
510
+ console.log(chalk.green('\n✅ Dependencies installed successfully!'));
511
+ } catch (error) {
512
+ console.error(chalk.red('\n❌ Failed to install dependencies'));
513
+ console.log(chalk.yellow('Please run: npm install'));
514
+ }
515
+ }
516
+
517
+ } catch (error) {
518
+ if (error.isTTYError) {
519
+ console.error(chalk.red('This environment doesn\'t support interactive prompts'));
520
+ console.log(chalk.yellow('Please use manual setup commands instead'));
521
+ } else {
522
+ console.error(chalk.red('Setup failed:'), error.message);
523
+ }
524
+ process.exit(1);
525
+ }
526
+ }
527
+
528
+ export default runInitWizard;