@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,443 @@
1
+ # Atomix Design System Themes
2
+
3
+ # Atomix Design System Themes
4
+
5
+ This guide documents how to build SCSS-based themes for the Atomix Design System, using the existing `shaj-default` theme as the reference implementation. It covers the architecture, creation process, best practices, testing and validation, and maintenance guidelines. Real code excerpts are taken from `./src/themes/shaj-default` to ensure your new themes align with the established patterns.
6
+
7
+ ## Theme Architecture
8
+
9
+ - Overview
10
+ - Themes follow a layered SCSS architecture mirroring Atomix core styles: `01-settings`, `02-tools`, `03-generic`, `04-elements`, `05-objects`, `06-components`, `99-utilities`.
11
+ - Each theme selectively overrides base tokens, utilities, and component styling while reusing the majority of Atomix core styles.
12
+
13
+ - File Structure (from `shaj-default`)
14
+ - `index.scss` — Entrypoint that wires up local overrides and Atomix base layers.
15
+ - `01-settings/` — Theme tokens and configuration (colors, spacing, breakpoints, fonts, typography, component settings).
16
+ - `02-tools/` — Optional theme-specific tools; can be empty when only using Atomix tools.
17
+ - `03-generic/` — Root-level theme overrides (often minimal).
18
+ - `04-elements/`, `05-objects/` — Rarely overridden; keep consistent unless theme requires element/object-level changes.
19
+ - `06-components/` — Component overrides specific to the theme’s visual style.
20
+ - `99-utilities/` — Utility overrides or additions.
21
+
22
+ - Architecture Diagram
23
+ ```
24
+ Theme Entrypoint (index.scss)
25
+ ├─ 01-settings (forward) → overrides base tokens
26
+ ├─ 02-tools (use/forward) → theme tools (optional)
27
+ ├─ 03-generic (forward) → root/base overrides
28
+ ├─ 04-elements (forward) → element-level overrides (rare)
29
+ ├─ 05-objects (forward) → layout/object overrides (rare)
30
+ ├─ 06-components(forward) → component styling overrides
31
+ └─ 99-utilities(forward) → utility overrides (optional)
32
+
33
+ Atomix Base Styles (../../styles)
34
+ ├─ 01-settings → default tokens
35
+ ├─ 02-tools → mixins & functions
36
+ ├─ 03-generic → resets and root
37
+ ├─ 04-elements → HTML elements
38
+ ├─ 05-objects → layout patterns
39
+ ├─ 06-components → components
40
+ └─ 99-utilities → utility classes
41
+ ```
42
+
43
+ - Entrypoint Example (from `shaj-default/index.scss`)
44
+ ```scss
45
+ // Import and forward local theme settings first (these override base settings)
46
+ @use '01-settings/index' as *;
47
+
48
+ // Import and forward base styles with local overrides
49
+ @use '02-tools/index' as *;
50
+ @use '../../styles/02-tools/index' as tools;
51
+
52
+ @use '03-generic/index' as *;
53
+ @use '../../styles/03-generic/index' as generic;
54
+
55
+ @use '04-elements/index' as *;
56
+ @use '../../styles/04-elements/index' as elements;
57
+
58
+ @use '05-objects/index' as *;
59
+ @use '../../styles/05-objects/index' as objects;
60
+
61
+ @use '06-components/index' as *;
62
+ @use '../../styles/06-components/index';
63
+
64
+ @use '99-utilities/index' as *;
65
+ @use '../../styles/99-utilities/index' as utilities;
66
+ ```
67
+
68
+ - Core SCSS Files and Purpose
69
+ - `01-settings/_settings.config.scss`: global theme config, including `$prefix` to namespace CSS variables.
70
+ ```scss
71
+ // These variables must act as constants, hence the uppercase
72
+ $ENV: 'dev';
73
+ $prefix: atomix- !default; // used as var(--#{$prefix}token)
74
+ ```
75
+ - `01-settings/_settings.colors.scss`: overrides Atomix color tokens by providing a 1–10 scale for each palette.
76
+ ```scss
77
+ @use '../../../styles/01-settings/settings.colors' with (
78
+ $primary-6: #0ea5e9,
79
+ $primary-7: #0284c7,
80
+ $primary-8: #0369a1,
81
+ $gray-1: #f9fafb,
82
+ $gray-10: #111827,
83
+ // ... full 1–10 scales per color
84
+ );
85
+ ```
86
+ - `01-settings/_settings.typography.scss`: font families, weights, sizes, line-heights, letter spacing.
87
+ ```scss
88
+ @use '../../../styles/01-settings/settings.typography' with (
89
+ $font-family-base: (system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif),
90
+ $font-weight-normal: 400,
91
+ $h1-font-size: 2.75rem,
92
+ $line-height-base: 1.6,
93
+ $headings-font-weight: 600,
94
+ // ...
95
+ );
96
+ ```
97
+ - `01-settings/_settings.spacing.scss`: spacing scale tied to `px` values.
98
+ ```scss
99
+ $spacer: 16px !default;
100
+ $spacing-sizes: (
101
+ 0: 0px, 1: 4px, 2: 8px, 3: 12px,
102
+ 4: 16px, 5: 20px, 6: 24px, 8: 32px,
103
+ 10: 40px, 12: 48px, 16: 64px, 20: 80px,
104
+ // ...
105
+ ) !default;
106
+ ```
107
+ - `01-settings/_settings.breakpoints.scss`: breakpoint map and explicit variables.
108
+ ```scss
109
+ $breakpoints: (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px) !default;
110
+ $breakpoint-sm: 576px !default; // also provided individually
111
+ ```
112
+ - `01-settings/_settings.fonts.scss`: font imports and loading strategy.
113
+ ```scss
114
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap');
115
+ $font-display: swap !default;
116
+ ```
117
+ - `06-components/*`: component-specific overrides using theme CSS variables.
118
+ ```scss
119
+ // Button example
120
+ @use '../01-settings/settings.config' as *;
121
+ .c-btn.c-btn-primary {
122
+ background: linear-gradient(135deg, var(--#{$prefix}primary-6), var(--#{$prefix}primary-7));
123
+ border-color: var(--#{$prefix}primary-6);
124
+ }
125
+ ```
126
+
127
+ - Variable Naming Conventions and Organization
128
+ - SCSS variables: lowercase with hyphenation (e.g., `$primary-6`, `$line-height-base`).
129
+ - Constant-like config: uppercase for special cases (e.g., `$ENV`).
130
+ - CSS variables: namespaced with `$prefix`, used as `var(--#{$prefix}token-name)` throughout components to enable runtime theming.
131
+ - Color scales: 1–10 per palette for predictable gradations.
132
+
133
+ - Mixins and Function Implementations
134
+ - Atomix provides color utilities and general tools you can reuse; theme overrides are optional.
135
+ - Color utilities (from base tools):
136
+ ```scss
137
+ // _tools.color-functions.scss
138
+ @function tint-color($color, $weight) { /* mix with white */ }
139
+ @function shade-color($color, $weight) { /* mix with black */ }
140
+ @function shift-color($color, $weight) { /* tint if >0, else shade */ }
141
+ @function to-rgb($color) { /* returns "r, g, b" or passthrough */ }
142
+ ```
143
+ - Media, spacing, and utility tools are exposed via `@use '../../styles/02-tools/index' as tools;` and can be applied in components.
144
+
145
+ ## Theme Creation Process
146
+
147
+ - Step-by-Step Guide
148
+ 1. Create a new theme folder: `./src/themes/<your-theme>/`.
149
+ 2. Add `index.scss` that forwards local settings first, then uses Atomix base layers:
150
+ ```scss
151
+ @use '01-settings/index' as *;
152
+ @use '02-tools/index' as *;
153
+ @use '../../styles/02-tools/index' as tools;
154
+ @use '03-generic/index' as *;
155
+ @use '../../styles/03-generic/index' as generic;
156
+ @use '04-elements/index' as *;
157
+ @use '../../styles/04-elements/index' as elements;
158
+ @use '05-objects/index' as *;
159
+ @use '../../styles/05-objects/index' as objects;
160
+ @use '06-components/index' as *;
161
+ @use '../../styles/06-components/index';
162
+ @use '99-utilities/index' as *;
163
+ @use '../../styles/99-utilities/index' as utilities;
164
+ ```
165
+ 3. Implement `01-settings/_index.scss` and forward needed settings files. Start with colors and config, then add typography, spacing, breakpoints, and any component settings.
166
+ 4. Optionally add `02-tools` overrides (often empty if relying on Atomix tools).
167
+ 5. Add component overrides under `06-components` as needed to express your unique design.
168
+ 6. Keep `03-generic`, `04-elements`, `05-objects`, and `99-utilities` minimal unless your theme needs specific overrides at those layers.
169
+
170
+ - Required Base Variables and Defaults
171
+ - `$prefix`: CSS variable namespace (default: `atomix-`).
172
+ - Colors: provide complete 1–10 scales for `primary`, `red`, `green`, `yellow`, `blue`, and `gray`. Use `shaj-default` values as a starting point.
173
+ - Typography: families, weights (300–900), base and heading sizes, line heights, letter spacing.
174
+ - Spacing: maintain the Atomix scale (e.g., `$spacer: 16px` and `$spacing-sizes` map) for consistency.
175
+ - Breakpoints: keep standard responsive sizes (xs–xxl) to ensure layout fidelity.
176
+
177
+ - Color Palette Definition Methodology
178
+ - Define each color scale from 1 (lightest) to 10 (darkest) with accessible contrast.
179
+ - Prefer balanced hues aligned with UI affordances: primary for action, gray for surfaces, red/green for state.
180
+ - Use CSS variables in components: `var(--#{$prefix}primary-6)` for runtime theme flexibility.
181
+
182
+ - Typography System Implementation
183
+ - Use performant system fonts by default (as in `shaj-default`).
184
+ - Scale headings more pronounced than body text; ensure `line-height-base` ≥ 1.5 for readability.
185
+ - Adjust letter spacing for large headings to improve optical balance.
186
+
187
+ - Spacing and Layout Rules
188
+ - Adopt the Atomix spacing map to guarantee consistent padding/margins across components.
189
+ - Leverage base grid and breakpoint tools from `../../styles/02-tools` for responsive behaviors.
190
+
191
+ - Component-Specific Styling Patterns
192
+ - Buttons: use gradients or solid fills with hover transitions; reference `primary-*` variables.
193
+ ```scss
194
+ .c-btn.c-btn-primary { background: linear-gradient(135deg, var(--#{$prefix}primary-6), var(--#{$prefix}primary-7)); }
195
+ ```
196
+ - Inputs: emphasize focus states with subtle shadows and color borders; include valid/invalid states.
197
+ ```scss
198
+ .c-form-control:focus { border-color: var(--#{$prefix}primary-6); box-shadow: 0 0 0 3px rgba(14,165,233,0.1); }
199
+ ```
200
+ - Cards: use surface and border tokens with hover elevation.
201
+ ```scss
202
+ .c-card { border: 1px solid var(--#{$prefix}gray-2); &:hover { box-shadow: 0 8px 24px rgba(0,0,0,0.12); } }
203
+ ```
204
+
205
+ ## Best Practices
206
+
207
+ - SCSS Organization Strategies
208
+ - Mirror Atomix’s layered architecture; keep overrides local to the appropriate layer.
209
+ - Forward settings via `01-settings/_index.scss` using `@forward` to keep entry imports clean.
210
+ - Minimize changes in `03-generic`, `04-elements`, and `05-objects` unless necessary.
211
+
212
+ - Variable Inheritance Patterns
213
+ - Override base tokens using `@use '...settings.*' with (...)` to keep diffs scoped.
214
+ - Namespace CSS variables via `$prefix`, and access them in components using `var(--#{$prefix}...)`.
215
+ - Prefer CSS variables in component styles to allow runtime theming.
216
+
217
+ - Theme Extension Techniques
218
+ - Start from `shaj-default` and incrementally override only what you need.
219
+ - Add component overrides under `06-components` to layer theme-specific visuals without diverging from core semantics.
220
+ - Reuse Atomix tools (`../../styles/02-tools`) for consistency and performance.
221
+
222
+ - Performance Optimization for Theme SCSS
223
+ - Avoid deep selector nesting; keep specificity low.
224
+ - Use transition and shadow values sparingly to reduce paint cost.
225
+ - Share tokens via CSS variables rather than recomputing values in many places.
226
+ - Build settings can compress output; see `themes.config.js` for build formats and Sass options.
227
+
228
+ - Browser Compatibility Considerations
229
+ - Respect the project `.browserslistrc` for autoprefixing and compatibility.
230
+ - Provide sensible fallbacks when using advanced features; CSS vars are widely supported but test in IE11-like environments if necessary (polyfills typically out of scope).
231
+
232
+ ## Testing and Validation
233
+
234
+ - Visual Regression Testing Procedures
235
+ - Use Storybook stories for themed components; compare snapshots across theme changes.
236
+ - Consider integrating Chromatic or a screenshot diff tool to catch regressions.
237
+
238
+ - Theme Consistency Checks
239
+ - Verify all components read tokens from CSS variables (e.g., `var(--#{$prefix}*)`).
240
+ - Ensure spacing, typography, and color usage comply with your theme’s `01-settings`.
241
+ - Audit hover/focus states for accessibility and consistency.
242
+
243
+ - Cross-Browser Testing Requirements
244
+ - Test Chrome, Safari, Firefox, and Edge at minimum.
245
+ - Validate responsive behavior at breakpoints (`sm`, `md`, `lg`, `xl`, `xxl`).
246
+
247
+ - Performance Impact Measurement
248
+ - Measure CSS bundle size per theme; prefer compressed outputs for production.
249
+ - Use Lighthouse or performance tooling to evaluate paint, layout shifts, and interaction latency.
250
+
251
+ ## Maintenance Guidelines
252
+
253
+ - Theme Versioning Strategy
254
+ - Track theme versions in `themes.config.js` metadata and follow SemVer (MAJOR.MINOR.PATCH).
255
+ - Bump versions when changing tokens or component visuals in backward-incompatible ways.
256
+
257
+ - Update and Deprecation Policies
258
+ - Document breaking changes in `CHANGELOG.md` and migration notes.
259
+ - Deprecate tokens or patterns gradually; provide an alias or fallback period.
260
+
261
+ - Documentation Standards for New Themes
262
+ - Include an overview of your theme’s goals, palette, typography, and component deltas.
263
+ - Add code snippets for critical overrides and an architecture diagram.
264
+
265
+ - Contribution Guidelines for Theme Development
266
+ - Follow repository `CONTRIBUTING.md` and maintain consistent code style.
267
+ - Keep PRs focused: token changes separate from component visual changes whenever possible.
268
+
269
+ ## Practical Examples (from shaj-default)
270
+
271
+ - Config and Prefix
272
+ ```scss
273
+ // 01-settings/_settings.config.scss
274
+ $ENV: 'dev';
275
+ $prefix: atomix- !default;
276
+ ```
277
+
278
+ - Colors Override with Base Integration
279
+ ```scss
280
+ // 01-settings/_settings.colors.scss
281
+ @use '../../../styles/02-tools/tools.to-rgb' as *;
282
+ @use '../../../styles/02-tools/tools.color-functions' as *;
283
+ @use '../../../styles/01-settings/settings.colors' with (
284
+ $primary-1: #f0f9ff,
285
+ $primary-6: #0ea5e9,
286
+ $primary-7: #0284c7,
287
+ $gray-1: #f9fafb,
288
+ $gray-10: #111827,
289
+ // ... full scales per palette
290
+ );
291
+ ```
292
+
293
+ - Typography System
294
+ ```scss
295
+ // 01-settings/_settings.typography.scss
296
+ @use '../../../styles/01-settings/settings.typography' with (
297
+ $font-family-base: (system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif),
298
+ $font-size-base: 1rem, // 16px
299
+ $h1-font-size: 2.75rem,
300
+ $line-height-base: 1.6,
301
+ $headings-font-weight: 600,
302
+ );
303
+ ```
304
+
305
+ - Spacing Scale
306
+ ```scss
307
+ // 01-settings/_settings.spacing.scss
308
+ $spacer: 16px !default;
309
+ $spacing-sizes: (0: 0px, 1: 4px, 2: 8px, 3: 12px, 4: 16px, 6: 24px, 8: 32px, 10: 40px, 12: 48px, 16: 64px, 20: 80px);
310
+ ```
311
+
312
+ - Component Overrides (Button)
313
+ ```scss
314
+ // 06-components/_components.button.scss
315
+ @use '../01-settings/settings.config' as *;
316
+ .c-btn.c-btn-primary {
317
+ background: linear-gradient(135deg, var(--#{$prefix}primary-6), var(--#{$prefix}primary-7));
318
+ border-color: var(--#{$prefix}primary-6);
319
+ }
320
+ ```
321
+
322
+ - Component Overrides (Input)
323
+ ```scss
324
+ // 06-components/_components.input.scss
325
+ @use '../01-settings/settings.config' as *;
326
+ .c-form-control:focus {
327
+ border-color: var(--#{$prefix}primary-6);
328
+ box-shadow: 0 0 0 3px rgba(14, 165, 233, 0.1);
329
+ }
330
+ ```
331
+
332
+ ## Theme Registration and Build
333
+
334
+ - Theme Metadata and Build Settings (`src/themes/themes.config.js`)
335
+ ```js
336
+ export const themesConfig = {
337
+ metadata: {
338
+ 'shaj-default': { name: 'Shaj Default', version: '1.0.0', tags: ['default','light'], supportsDarkMode: true },
339
+ // add your theme:
340
+ 'my-theme': { name: 'My Theme', version: '0.1.0', tags: ['light'], supportsDarkMode: true }
341
+ },
342
+ build: { output: { directory: 'themes', formats: { expanded: '.css', compressed: '.min.css' } }, sass: { style: 'expanded', sourceMap: true, loadPaths: ['src'] } },
343
+ exports: { './themes/*': './dist/themes/*.css', './themes/*.min': './dist/themes/*.min.css' },
344
+ integration: { cssVariables: { colorMode: '--storybook-color-mode' }, classNames: { theme: 'data-theme', colorMode: 'data-color-mode' } }
345
+ };
346
+ ```
347
+
348
+ - Suggested Steps to Add a New Theme
349
+ - Create `src/themes/<my-theme>/` with the layered structure shown above.
350
+ - Implement tokens in `01-settings` and component overrides in `06-components`.
351
+ - Add metadata in `themes.config.js` under `metadata` for discoverability.
352
+ - Include your theme CSS in your app by bundling `index.scss` or using the build output under `dist/themes`.
353
+
354
+ ---
355
+
356
+ By following the patterns and examples in `shaj-default`, you can create highly consistent, maintainable, and performant themes that integrate seamlessly with Atomix core styles while expressing distinct visual identities.
357
+
358
+
359
+ This directory contains all the themes for the Atomix Design System. Each theme is a collection of SCSS files that override or extend the base design system styles.
360
+
361
+ ## Theme Structure
362
+
363
+ Each theme follows the same structure as the main design system:
364
+
365
+ ```
366
+ theme-name/
367
+ ├── 01-settings/
368
+ ├── 02-tools/
369
+ ├── 03-generic/
370
+ ├── 04-elements/
371
+ ├── 05-objects/
372
+ ├── 06-components/
373
+ ├── 99-utilities/
374
+ └── index.scss
375
+ ```
376
+
377
+ ## Available Themes
378
+
379
+ - **shaj-default** - The default theme for Atomix Design System
380
+ - **boomdevs** - A theme by the BoomDevs team
381
+ - **esrar** - A theme by the Esrar team
382
+ - **mashroom** - A theme by the Mashroom team
383
+ - **yabai** - A theme by the Yabai team
384
+
385
+ ## How Themes Work
386
+
387
+ Themes work by importing and overriding the base design system styles. Each theme's `index.scss` file:
388
+
389
+ 1. Imports local theme settings that override base settings
390
+ 2. Imports and forwards base styles with local overrides
391
+ 3. Combines theme-specific styles with the base design system
392
+
393
+ ## Building Themes
394
+
395
+ Themes are automatically built when you run the main build command:
396
+
397
+ ```bash
398
+ npm run build
399
+ ```
400
+
401
+ This generates individual CSS files for each theme in the `dist/themes` directory:
402
+ - Expanded CSS for development
403
+ - Minified CSS for production
404
+
405
+ You can also build only the themes with:
406
+
407
+ ```bash
408
+ npm run build:themes
409
+ ```
410
+
411
+ ## Using Themes
412
+
413
+ To use a theme in your project, import the corresponding CSS file:
414
+
415
+ ```scss
416
+ // In your SCSS file
417
+ @import '~@shohojdhara/atomix/dist/themes/shaj-default.css';
418
+ ```
419
+
420
+ Or in your JavaScript/TypeScript files:
421
+
422
+ ```js
423
+ // Import the theme CSS
424
+ import '@shohojdhara/atomix/dist/themes/shaj-default.css';
425
+ ```
426
+
427
+ ## Creating New Themes
428
+
429
+ To create a new theme:
430
+
431
+ 1. Create a new directory in `src/themes` with your theme name
432
+ 2. Follow the same structure as existing themes
433
+ 3. Create an `index.scss` file that imports and overrides base styles
434
+ 4. Add your theme to the `themes.variants` array in `build.config.js`
435
+ 5. Run the build process to generate the theme CSS files
436
+
437
+ ## Theme Customization
438
+
439
+ Themes can customize any aspect of the design system by overriding variables, mixins, or component styles in their respective directories. For example, to customize button styles in your theme:
440
+
441
+ 1. Create a `_buttons.scss` file in `themes/your-theme/06-components/`
442
+ 2. Override the button styles as needed
443
+ 3. Import and forward the file in `themes/your-theme/06-components/_index.scss`
@@ -0,0 +1,74 @@
1
+ # Atomix Theme Checklist
2
+
3
+ Use this checklist when creating or updating a theme to align with Atomix guidelines (Rollup, Storybook 8, Vitest, ITCSS-like SCSS).
4
+
5
+ ## 1) Structure and Entrypoint
6
+ - [ ] Theme folder under `src/themes/<theme-name>/`
7
+ - [ ] `index.scss` uses ITCSS order and forwards local overrides:
8
+ ```text
9
+ // Local settings override base
10
+ @use '01-settings/index' as *;
11
+ // Tools
12
+ @use '02-tools/index' as *;
13
+ @use '../../styles/02-tools/index' as tools;
14
+ // Generic
15
+ @use '03-generic/index' as *;
16
+ @use '../../styles/03-generic/index' as generic;
17
+ // Elements
18
+ @use '04-elements/index' as *;
19
+ @use '../../styles/04-elements/index' as elements;
20
+ // Objects
21
+ @use '05-objects/index' as *;
22
+ @use '../../styles/05-objects/index' as objects;
23
+ // Components
24
+ @use '06-components/index' as *;
25
+ @use '../../styles/06-components/index';
26
+ // Utilities
27
+ @use '99-utilities/index' as *;
28
+ @use '../../styles/99-utilities/index' as utilities;
29
+ ```
30
+ - [ ] Exceptions (e.g., namespaced `@use`) are documented in a README inside the theme.
31
+
32
+ ## 2) Tokens and Settings Coverage
33
+ - [ ] Colors: 1–10 scale for primary, neutral (gray), and any accent palettes
34
+ - [ ] settings.config (prefix, env), spacing, breakpoints, typography
35
+ - [ ] Component settings: button, input, card, nav, tabs, tooltip/popover, modal, forms
36
+ - [ ] Prefer `@forward` in `01-settings/_index.scss` to keep `index.scss` clean.
37
+
38
+ ## 3) Theming Conventions
39
+ - [ ] Data attributes/classes:
40
+ - `data-theme="<theme-name>"` on `body` or `html`
41
+ - `data-atomix-color-mode="light|dark"` on `html`
42
+ - [ ] BEM-like class naming for components (e.g., `c-button`, `c-accordion`)
43
+ - [ ] Avoid global overrides; prefer component-scoped tokens/utilities.
44
+
45
+ ## 4) Accessibility (A11y)
46
+ - [ ] Contrast: ≥ 4.5:1 normal text, ≥ 3.0:1 large text
47
+ - [ ] Focus visible and keyboard nav clearly styled in both color modes
48
+ - [ ] Form controls: placeholder, helper text meet contrast
49
+ - [ ] Record a11y state in `src/themes/themes.config.js` (`a11y` and `status` fields)
50
+
51
+ ## 5) Performance
52
+ - [ ] Heavy effects (blur/backdrop-filter) are opt-in and scoped
53
+ - [ ] Limit CSS custom properties; group by prefix, keep under ~500 per theme
54
+ - [ ] Avoid duplicate declarations; rely on base utilities where possible
55
+
56
+ ## 6) Build and Distribution
57
+ - [ ] `index.scss` compiles via `yarn build:styles` to `dist/themes/<theme>.css` and `.min.css`
58
+ - [ ] Test import from package: `@shohojdhara/atomix/themes/<theme>.css`
59
+ - [ ] Update `themes.config.js` metadata (name, version, tags, a11y, status)
60
+
61
+ ## 7) Storybook
62
+ - [ ] Theme selectable via toolbar in `.storybook/preview.tsx`
63
+ - [ ] If using custom switcher, read theme list from shared source to avoid drift
64
+ - [ ] Provide a few Storybook stories showcasing theme-specific overrides (Buttons, Cards, Nav, Forms)
65
+
66
+ ## 8) Testing
67
+ - [ ] Add or update minimal visual smoke tests in Storybook (manual)
68
+ - [ ] For unit tests (optional): follow Vitest API (`vi.*`), not Jest
69
+ - [ ] Run: `yarn dev` and validate main components under both color modes
70
+
71
+ ## 9) Documentation
72
+ - [ ] Add theme README with design intent, palette examples, and any exceptions from the standard import pattern
73
+ - [ ] Link to the Themes Guide: `src/themes/README.md`
74
+
@@ -0,0 +1,24 @@
1
+ /*!
2
+ * Applemix Theme Settings Index
3
+ * Apple Mac OS 2026 Liquid Glass inspired settings
4
+ */
5
+
6
+ // Modern Sass module system with namespaced imports
7
+ @use 'settings.config' as config;
8
+ @use 'settings.colors' as colors;
9
+ @use 'settings.typography' as typography;
10
+ @use 'settings.animations' as anim;
11
+ @use 'settings.background' as bg;
12
+
13
+ // Export all modules for backward compatibility
14
+ @forward 'settings.config';
15
+ @forward 'settings.colors';
16
+ @forward 'settings.typography';
17
+ @forward 'settings.animations';
18
+ @forward 'settings.background';
19
+
20
+ // Forward core token groups from base theme for proper coverage
21
+ @forward '../../../styles/01-settings/settings.spacing';
22
+ @forward '../../../styles/01-settings/settings.breakpoints';
23
+ @forward '../../../styles/01-settings/settings.border';
24
+ @forward '../../../styles/01-settings/settings.border-radius';
@@ -0,0 +1,6 @@
1
+ @use '../../../styles/01-settings/settings.background' with (
2
+ $background-enable-gradient-overlay: false,
3
+ $background-transparency-enable: true,
4
+ $background-enable-with-shadow: false,
5
+ $background-transparency: 0.5
6
+ );
@@ -0,0 +1,75 @@
1
+ /*!
2
+ * Applemix Theme Colors
3
+ * Apple Mac OS 2026 Liquid Glass inspired color palette
4
+ * Features transparency, depth, and chromatic effects
5
+ */
6
+
7
+ @use 'sass:color';
8
+ @use '../../../styles/02-tools/tools.to-rgb' as *;
9
+ @use '../../../styles/02-tools/tools.color-functions' as *;
10
+ @use '../../../styles/01-settings/settings.colors' with (
11
+ $white: #ffffff,
12
+ $black: #000000,
13
+ $color-contrast-dark: #1d1d1f,
14
+ $color-contrast-light: #f5f5f7,
15
+ $red-1: #fff5f5,
16
+ $red-2: #ffe3e3,
17
+ $red-3: #ffc9c9,
18
+ $red-4: #ff9f9f,
19
+ $red-5: #ff6b6b,
20
+ $red-6: #ff3b30,
21
+ $red-7: #d70015,
22
+ $red-8: #a50000,
23
+ $red-9: #750000,
24
+ $red-10: #4a0000,
25
+ $green-1: #f0fff4,
26
+ $green-2: #dcfce7,
27
+ $green-3: #bbf7d0,
28
+ $green-4: #86efac,
29
+ $green-5: #4ade80,
30
+ $green-6: #30d158,
31
+ $green-7: #28cd41,
32
+ $green-8: #20a934,
33
+ $green-9: #198527,
34
+ $green-10: #12611a,
35
+ $yellow-1: #fffbf0,
36
+ $yellow-2: #fff3c4,
37
+ $yellow-3: #ffe066,
38
+ $yellow-4: #ffcc02,
39
+ $yellow-5: #ffb000,
40
+ $yellow-6: #ff9500,
41
+ $yellow-7: #ff8c00,
42
+ $yellow-8: #e67300,
43
+ $yellow-9: #cc5500,
44
+ $yellow-10: #b33c00,
45
+ $blue-1: #f0f8ff,
46
+ $blue-2: #e1f2ff,
47
+ $blue-3: #c7e9ff,
48
+ $blue-4: #9dd7ff,
49
+ $blue-5: #64c7ff,
50
+ $blue-6: #007aff,
51
+ $blue-7: #0056d6,
52
+ $blue-8: #003d99,
53
+ $blue-9: #002966,
54
+ $blue-10: #001a44,
55
+ $gray-1: #fafafa,
56
+ $gray-2: #f5f5f7,
57
+ $gray-3: #e5e5e7,
58
+ $gray-4: #d1d1d6,
59
+ $gray-5: #aeaeb2,
60
+ $gray-6: #8e8e93,
61
+ $gray-7: #636366,
62
+ $gray-8: #48484a,
63
+ $gray-9: #2c2c2e,
64
+ $gray-10: #1c1c1e,
65
+ $primary-1: #f0f8ff,
66
+ $primary-2: #e1f2ff,
67
+ $primary-3: #c7e9ff,
68
+ $primary-4: #9dd7ff,
69
+ $primary-5: #64c7ff,
70
+ $primary-6: #007aff,
71
+ $primary-7: #0056d6,
72
+ $primary-8: #003d99,
73
+ $primary-9: #002966,
74
+ $primary-10: #001a44
75
+ );
@@ -0,0 +1,15 @@
1
+ /*!
2
+ * Applemix Theme Configuration
3
+ * Core configuration variables for the Apple-inspired liquid glass theme
4
+ */
5
+
6
+ @use '../../../styles/01-settings/settings.config' with (
7
+ $prefix: 'atomix-'
8
+ );
9
+ // Environment configuration
10
+ $ENV: 'dev';
11
+
12
+ // CSS variable prefix for theme namespacing
13
+ $theme-name: 'applemix';
14
+ $theme-version: '1.0.0';
15
+ $theme-author: 'Atomix Design System';
@@ -0,0 +1,30 @@
1
+ /*!
2
+ * Applemix Theme Typography
3
+ * Apple-inspired typography system with modern scaling
4
+ * Optimized for liquid glass interfaces and readability
5
+ */
6
+
7
+ @use '../../../styles/01-settings/settings.typography' with (
8
+ // Apple-inspired font families
9
+ $font-family-base: (
10
+ -apple-system,
11
+ BlinkMacSystemFont,
12
+ 'SF Pro Display',
13
+ 'SF Pro Text',
14
+ 'Helvetica Neue',
15
+ Helvetica,
16
+ Arial,
17
+ sans-serif
18
+ ),
19
+ // Apple-style font weights
20
+ $font-weight-light: 300,
21
+ $font-weight-normal: 400,
22
+ $font-weight-medium: 500,
23
+ $font-weight-semibold: 600,
24
+ $font-weight-bold: 700,
25
+ $font-weight-heavy: 800,
26
+ $font-weight-black: 900,
27
+ // Base typography settings
28
+ $font-size-base: 1rem,
29
+ $line-height-base: 1.47
30
+ );
@@ -0,0 +1,4 @@
1
+ /*!
2
+ * Applemix Theme Tools Index
3
+ * Apple Mac OS 2026 Liquid Glass inspired tools
4
+ */