@shohojdhara/atomix 0.3.14 → 0.4.0

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 (343) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/build-tools/EXAMPLES.md +372 -0
  3. package/build-tools/README.md +242 -0
  4. package/build-tools/__tests__/error-handler.test.js +230 -0
  5. package/build-tools/__tests__/index.test.js +141 -0
  6. package/build-tools/__tests__/rollup-plugin.test.js +194 -0
  7. package/build-tools/__tests__/utils.test.js +161 -0
  8. package/build-tools/__tests__/vite-plugin.test.js +129 -0
  9. package/build-tools/__tests__/webpack-loader.test.js +190 -0
  10. package/build-tools/error-handler.js +308 -0
  11. package/build-tools/index.d.ts +44 -0
  12. package/build-tools/index.js +88 -0
  13. package/build-tools/package.json +50 -0
  14. package/build-tools/rollup-plugin.js +236 -0
  15. package/build-tools/types.d.ts +163 -0
  16. package/build-tools/utils.js +203 -0
  17. package/build-tools/vite-plugin.js +161 -0
  18. package/build-tools/webpack-loader.js +123 -0
  19. package/dist/atomix.css +21044 -2618
  20. package/dist/atomix.css.map +1 -1
  21. package/dist/atomix.min.css +77 -3
  22. package/dist/atomix.min.css.map +1 -1
  23. package/dist/build-tools/EXAMPLES.md +372 -0
  24. package/dist/build-tools/README.md +242 -0
  25. package/dist/build-tools/__tests__/error-handler.test.js +230 -0
  26. package/dist/build-tools/__tests__/index.test.js +141 -0
  27. package/dist/build-tools/__tests__/rollup-plugin.test.js +194 -0
  28. package/dist/build-tools/__tests__/utils.test.js +161 -0
  29. package/dist/build-tools/__tests__/vite-plugin.test.js +129 -0
  30. package/dist/build-tools/__tests__/webpack-loader.test.js +190 -0
  31. package/dist/build-tools/error-handler.js +308 -0
  32. package/dist/build-tools/index.d.ts +44 -0
  33. package/dist/build-tools/index.js +88 -0
  34. package/dist/build-tools/package.json +50 -0
  35. package/dist/build-tools/rollup-plugin.js +236 -0
  36. package/dist/build-tools/types.d.ts +163 -0
  37. package/dist/build-tools/utils.js +203 -0
  38. package/dist/build-tools/vite-plugin.js +161 -0
  39. package/dist/build-tools/webpack-loader.js +123 -0
  40. package/dist/charts.d.ts +1 -1
  41. package/dist/charts.js +86 -57
  42. package/dist/charts.js.map +1 -1
  43. package/dist/core.d.ts +1 -1
  44. package/dist/core.js +136 -112
  45. package/dist/core.js.map +1 -1
  46. package/dist/forms.d.ts +2 -5
  47. package/dist/forms.js +140 -128
  48. package/dist/forms.js.map +1 -1
  49. package/dist/heavy.d.ts +1 -1
  50. package/dist/heavy.js +136 -112
  51. package/dist/heavy.js.map +1 -1
  52. package/dist/index.d.ts +152 -78
  53. package/dist/index.esm.js +346 -340
  54. package/dist/index.esm.js.map +1 -1
  55. package/dist/index.js +359 -353
  56. package/dist/index.js.map +1 -1
  57. package/dist/index.min.js +1 -1
  58. package/dist/index.min.js.map +1 -1
  59. package/dist/layout.js.map +1 -1
  60. package/dist/theme.d.ts +9 -9
  61. package/dist/theme.js.map +1 -1
  62. package/package.json +23 -8
  63. package/scripts/atomix-cli.js +170 -73
  64. package/scripts/cli/__tests__/README.md +81 -0
  65. package/scripts/cli/__tests__/basic.test.js +115 -0
  66. package/scripts/cli/__tests__/component-generator.test.js +332 -0
  67. package/scripts/cli/__tests__/integration.test.js +327 -0
  68. package/scripts/cli/__tests__/test-setup.js +133 -0
  69. package/scripts/cli/__tests__/token-manager.test.js +251 -0
  70. package/scripts/cli/__tests__/utils.test.js +161 -0
  71. package/scripts/cli/component-generator.js +253 -299
  72. package/scripts/cli/dependency-checker.js +355 -0
  73. package/scripts/cli/interactive-init.js +46 -5
  74. package/scripts/cli/template-manager.js +0 -2
  75. package/scripts/cli/templates/common-templates.js +636 -0
  76. package/scripts/cli/templates/composable-templates.js +148 -126
  77. package/scripts/cli/templates/index.js +23 -16
  78. package/scripts/cli/templates/project-templates.js +151 -23
  79. package/scripts/cli/templates/react-templates.js +280 -210
  80. package/scripts/cli/templates/scss-templates.js +90 -91
  81. package/scripts/cli/templates/testing-templates.js +206 -27
  82. package/scripts/cli/templates/testing-utils.js +278 -0
  83. package/scripts/cli/templates/types-templates.js +70 -56
  84. package/scripts/cli/theme-bridge.js +8 -2
  85. package/scripts/cli/token-manager.js +318 -206
  86. package/scripts/cli/utils.js +0 -1
  87. package/src/components/Accordion/Accordion.stories.tsx +358 -850
  88. package/src/components/Accordion/Accordion.test.tsx +70 -50
  89. package/src/components/Accordion/Accordion.tsx +99 -94
  90. package/src/components/AtomixGlass/AtomixGlass.test.tsx +1 -1
  91. package/src/components/AtomixGlass/AtomixGlass.tsx +80 -39
  92. package/src/components/AtomixGlass/AtomixGlassContainer.tsx +103 -81
  93. package/src/components/AtomixGlass/GlassFilter.tsx +9 -16
  94. package/src/components/AtomixGlass/__snapshots__/AtomixGlass.test.tsx.snap +8 -7
  95. package/src/components/AtomixGlass/glass-utils.ts +6 -5
  96. package/src/components/AtomixGlass/shader-utils.ts +133 -52
  97. package/src/components/AtomixGlass/stories/Customization.stories.tsx +131 -0
  98. package/src/components/AtomixGlass/stories/Examples.stories.tsx +2957 -2853
  99. package/src/components/AtomixGlass/stories/Modes.stories.tsx +1 -1
  100. package/src/components/AtomixGlass/stories/Overview.stories.tsx +348 -0
  101. package/src/components/AtomixGlass/stories/Performance.stories.tsx +103 -0
  102. package/src/components/AtomixGlass/stories/Playground.stories.tsx +51 -36
  103. package/src/components/AtomixGlass/stories/{ShaderVariants.stories.tsx → Shaders.stories.tsx} +2 -2
  104. package/src/components/AtomixGlass/stories/shared-components.tsx +90 -190
  105. package/src/components/Avatar/Avatar.stories.tsx +195 -0
  106. package/src/components/Avatar/Avatar.tsx +58 -56
  107. package/src/components/Badge/Badge.stories.tsx +122 -352
  108. package/src/components/Badge/Badge.test.tsx +41 -41
  109. package/src/components/Badge/Badge.tsx +64 -62
  110. package/src/components/Block/Block.stories.tsx +30 -11
  111. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +142 -23
  112. package/src/components/Breadcrumb/Breadcrumb.tsx +62 -60
  113. package/src/components/Button/Button.stories.tsx +454 -1126
  114. package/src/components/Button/Button.test.tsx +123 -0
  115. package/src/components/Button/Button.tsx +88 -60
  116. package/src/components/Button/ButtonGroup.stories.tsx +376 -215
  117. package/src/components/Button/ButtonGroup.tsx +4 -15
  118. package/src/components/Callout/Callout.stories.tsx +316 -568
  119. package/src/components/Card/Card.stories.tsx +292 -81
  120. package/src/components/Card/Card.tsx +30 -14
  121. package/src/components/Chart/AreaChart.tsx +1 -1
  122. package/src/components/Chart/CandlestickChart.tsx +23 -16
  123. package/src/components/Chart/Chart.stories.tsx +153 -16
  124. package/src/components/Chart/Chart.tsx +40 -44
  125. package/src/components/Chart/ChartRenderer.tsx +39 -12
  126. package/src/components/Chart/ChartToolbar.tsx +21 -5
  127. package/src/components/Chart/DonutChart.tsx +1 -1
  128. package/src/components/Chart/FunnelChart.tsx +4 -1
  129. package/src/components/Chart/GaugeChart.tsx +3 -1
  130. package/src/components/Chart/HeatmapChart.tsx +50 -37
  131. package/src/components/Chart/LineChart.tsx +3 -2
  132. package/src/components/Chart/MultiAxisChart.tsx +24 -16
  133. package/src/components/Chart/RadarChart.tsx +19 -17
  134. package/src/components/Chart/ScatterChart.tsx +29 -21
  135. package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +152 -66
  136. package/src/components/ColorModeToggle/ColorModeToggle.tsx +15 -3
  137. package/src/components/Countdown/Countdown.stories.tsx +114 -7
  138. package/src/components/DataTable/DataTable.stories.tsx +349 -144
  139. package/src/components/DataTable/DataTable.test.tsx +26 -148
  140. package/src/components/DataTable/DataTable.tsx +485 -456
  141. package/src/components/DatePicker/DatePicker.stories.tsx +310 -1066
  142. package/src/components/DatePicker/DatePicker.tsx +31 -26
  143. package/src/components/Dropdown/Dropdown.stories.tsx +153 -36
  144. package/src/components/Dropdown/Dropdown.tsx +313 -299
  145. package/src/components/EdgePanel/EdgePanel.stories.tsx +221 -25
  146. package/src/components/EdgePanel/EdgePanel.tsx +1 -3
  147. package/src/components/Footer/Footer.stories.tsx +396 -327
  148. package/src/components/Footer/Footer.tsx +130 -128
  149. package/src/components/Footer/FooterLink.tsx +2 -2
  150. package/src/components/Form/Checkbox.stories.tsx +140 -6
  151. package/src/components/Form/Checkbox.test.tsx +63 -0
  152. package/src/components/Form/Checkbox.tsx +122 -78
  153. package/src/components/Form/Form.stories.tsx +110 -19
  154. package/src/components/Form/FormGroup.stories.tsx +127 -4
  155. package/src/components/Form/Input.stories.tsx +22 -39
  156. package/src/components/Form/Input.test.tsx +38 -44
  157. package/src/components/Form/Radio.stories.tsx +146 -17
  158. package/src/components/Form/Radio.tsx +68 -66
  159. package/src/components/Form/Select.stories.tsx +140 -8
  160. package/src/components/Form/Select.tsx +184 -182
  161. package/src/components/Form/Textarea.stories.tsx +149 -6
  162. package/src/components/Form/Textarea.test.tsx +27 -32
  163. package/src/components/Hero/Hero.stories.tsx +372 -38
  164. package/src/components/Hero/Hero.tsx +201 -55
  165. package/src/components/Icon/index.ts +7 -1
  166. package/src/components/List/List.stories.tsx +141 -3
  167. package/src/components/List/List.tsx +19 -23
  168. package/src/components/Modal/Modal.stories.tsx +183 -43
  169. package/src/components/Modal/Modal.tsx +130 -127
  170. package/src/components/Navigation/Menu/MegaMenu.tsx +70 -70
  171. package/src/components/Navigation/Nav/NavDropdown.tsx +1 -5
  172. package/src/components/Navigation/SideMenu/SideMenu.stories.tsx +128 -28
  173. package/src/components/Navigation/SideMenu/SideMenu.tsx +5 -7
  174. package/src/components/Navigation/SideMenu/SideMenuItem.tsx +4 -5
  175. package/src/components/Pagination/Pagination.stories.tsx +7 -4
  176. package/src/components/Pagination/Pagination.tsx +199 -202
  177. package/src/components/PhotoViewer/PhotoViewer.tsx +4 -1
  178. package/src/components/Popover/Popover.stories.tsx +354 -97
  179. package/src/components/Popover/Popover.tsx +41 -37
  180. package/src/components/Progress/Progress.stories.tsx +160 -7
  181. package/src/components/River/River.stories.tsx +3 -2
  182. package/src/components/SectionIntro/SectionIntro.stories.tsx +239 -47
  183. package/src/components/Slider/Slider.stories.tsx +12 -4
  184. package/src/components/Spinner/Spinner.stories.tsx +104 -8
  185. package/src/components/Spinner/Spinner.test.tsx +23 -23
  186. package/src/components/Spinner/Spinner.tsx +43 -46
  187. package/src/components/Steps/Steps.stories.tsx +173 -42
  188. package/src/components/Tabs/Tabs.stories.tsx +141 -12
  189. package/src/components/Tabs/Tabs.tsx +74 -72
  190. package/src/components/Testimonial/Testimonial.stories.tsx +120 -3
  191. package/src/components/Todo/Todo.stories.tsx +198 -9
  192. package/src/components/Toggle/Toggle.stories.tsx +137 -36
  193. package/src/components/Toggle/Toggle.test.tsx +65 -70
  194. package/src/components/Toggle/Toggle.tsx +4 -1
  195. package/src/components/Tooltip/Tooltip.stories.tsx +194 -100
  196. package/src/components/Tooltip/Tooltip.tsx +104 -106
  197. package/src/components/Upload/Upload.stories.tsx +241 -150
  198. package/src/components/Upload/Upload.tsx +287 -283
  199. package/src/components/VideoPlayer/VideoPlayer.tsx +6 -1
  200. package/src/components/index.ts +13 -2
  201. package/src/layouts/Grid/Grid.stories.tsx +9 -3
  202. package/src/layouts/MasonryGrid/MasonryGrid.tsx +5 -1
  203. package/src/lib/README.md +2 -2
  204. package/src/lib/__tests__/theme-tools.test.ts +219 -0
  205. package/src/lib/composables/index.ts +2 -2
  206. package/src/lib/composables/shared-mouse-tracker.ts +13 -14
  207. package/src/lib/composables/useAtomixGlass.ts +126 -97
  208. package/src/lib/composables/useChartExport.ts +3 -8
  209. package/src/lib/composables/useDataTable.ts +72 -43
  210. package/src/lib/composables/useHero.ts +58 -14
  211. package/src/lib/composables/useHeroBackgroundSlider.ts +2 -9
  212. package/src/lib/composables/useInput.ts +10 -8
  213. package/src/lib/composables/useSideMenu.ts +6 -5
  214. package/src/lib/composables/useTooltip.ts +1 -2
  215. package/src/lib/composables/useVideoPlayer.ts +44 -35
  216. package/src/lib/config/index.ts +154 -154
  217. package/src/lib/constants/components.ts +9 -32
  218. package/src/lib/constants/cssVariables.ts +29 -29
  219. package/src/lib/hooks/__tests__/useComponentCustomization.test.ts +2 -6
  220. package/src/lib/hooks/index.ts +1 -1
  221. package/src/lib/hooks/useComponentCustomization.ts +11 -17
  222. package/src/lib/hooks/usePerformanceMonitor.ts +6 -7
  223. package/src/lib/patterns/__tests__/slots.test.ts +1 -1
  224. package/src/lib/patterns/index.ts +1 -1
  225. package/src/lib/patterns/slots.tsx +8 -13
  226. package/src/lib/storybook/InteractiveDemo.tsx +13 -18
  227. package/src/lib/storybook/PreviewContainer.tsx +1 -1
  228. package/src/lib/storybook/VariantsGrid.tsx +3 -7
  229. package/src/lib/storybook/index.ts +1 -1
  230. package/src/lib/theme/adapters/cssVariableMapper.ts +47 -74
  231. package/src/lib/theme/adapters/index.ts +3 -9
  232. package/src/lib/theme/adapters/themeAdapter.ts +41 -26
  233. package/src/lib/theme/config/index.ts +1 -1
  234. package/src/lib/theme/config/types.ts +2 -2
  235. package/src/lib/theme/config/validator.ts +10 -5
  236. package/src/lib/theme/constants/constants.ts +2 -2
  237. package/src/lib/theme/constants/index.ts +1 -2
  238. package/src/lib/theme/core/__tests__/createTheme.test.ts +20 -22
  239. package/src/lib/theme/core/composeTheme.ts +32 -26
  240. package/src/lib/theme/core/createTheme.ts +1 -1
  241. package/src/lib/theme/core/createThemeObject.ts +308 -301
  242. package/src/lib/theme/core/index.ts +3 -3
  243. package/src/lib/theme/devtools/CLI.ts +107 -105
  244. package/src/lib/theme/devtools/Comparator.tsx +50 -32
  245. package/src/lib/theme/devtools/DesignTokensCustomizer.stories.tsx +50 -48
  246. package/src/lib/theme/devtools/DesignTokensCustomizer.tsx +257 -63
  247. package/src/lib/theme/devtools/Inspector.tsx +75 -60
  248. package/src/lib/theme/devtools/LiveEditor.tsx +97 -76
  249. package/src/lib/theme/devtools/Preview.tsx +150 -106
  250. package/src/lib/theme/devtools/ThemeValidator.ts +29 -21
  251. package/src/lib/theme/devtools/index.ts +3 -9
  252. package/src/lib/theme/devtools/useHistory.ts +23 -21
  253. package/src/lib/theme/errors/errors.ts +12 -11
  254. package/src/lib/theme/errors/index.ts +2 -7
  255. package/src/lib/theme/generators/generateCSS.ts +9 -13
  256. package/src/lib/theme/generators/generateCSSNested.ts +1 -6
  257. package/src/lib/theme/generators/generateCSSVariables.ts +673 -630
  258. package/src/lib/theme/generators/index.ts +1 -4
  259. package/src/lib/theme/i18n/index.ts +1 -1
  260. package/src/lib/theme/i18n/rtl.ts +13 -13
  261. package/src/lib/theme/index.ts +7 -16
  262. package/src/lib/theme/runtime/ThemeApplicator.ts +4 -4
  263. package/src/lib/theme/runtime/ThemeContext.tsx +1 -1
  264. package/src/lib/theme/runtime/ThemeErrorBoundary.tsx +19 -23
  265. package/src/lib/theme/runtime/ThemeProvider.tsx +230 -239
  266. package/src/lib/theme/runtime/__tests__/ThemeProvider.integration.test.tsx +1 -1
  267. package/src/lib/theme/runtime/__tests__/ThemeProvider.test.tsx +24 -29
  268. package/src/lib/theme/runtime/index.ts +2 -5
  269. package/src/lib/theme/runtime/useTheme.ts +18 -18
  270. package/src/lib/theme/runtime/useThemeTokens.ts +22 -22
  271. package/src/lib/theme/test/testTheme.ts +15 -16
  272. package/src/lib/theme/tokens/index.ts +2 -7
  273. package/src/lib/theme/tokens/tokens.ts +25 -24
  274. package/src/lib/theme/types.ts +428 -411
  275. package/src/lib/theme/utils/__tests__/themeValidation.test.ts +3 -3
  276. package/src/lib/theme/utils/componentTheming.ts +18 -18
  277. package/src/lib/theme/utils/domUtils.ts +277 -289
  278. package/src/lib/theme/utils/index.ts +1 -2
  279. package/src/lib/theme/utils/injectCSS.ts +10 -14
  280. package/src/lib/theme/utils/naming.ts +20 -16
  281. package/src/lib/theme/utils/themeHelpers.ts +10 -12
  282. package/src/lib/theme/utils/themeUtils.ts +85 -86
  283. package/src/lib/theme/utils/themeValidation.ts +82 -33
  284. package/src/lib/theme-tools.ts +8 -6
  285. package/src/lib/types/components.ts +172 -71
  286. package/src/lib/types/partProps.ts +1 -1
  287. package/src/lib/utils/__tests__/csv.test.ts +45 -0
  288. package/src/lib/utils/componentUtils.ts +8 -12
  289. package/src/lib/utils/csv.ts +19 -0
  290. package/src/lib/utils/dataTableExport.ts +2 -15
  291. package/src/lib/utils/fontPreloader.ts +10 -19
  292. package/src/lib/utils/icons.ts +4 -1
  293. package/src/lib/utils/index.ts +2 -6
  294. package/src/lib/utils/memoryMonitor.ts +10 -8
  295. package/src/lib/utils/themeNaming.ts +2 -2
  296. package/src/styles/01-settings/_index.scss +1 -1
  297. package/src/styles/01-settings/_settings.accordion.scss +28 -7
  298. package/src/styles/01-settings/_settings.colors.scss +11 -11
  299. package/src/styles/01-settings/_settings.design-tokens.scss +61 -50
  300. package/src/styles/01-settings/_settings.navbar.scss +1 -1
  301. package/src/styles/01-settings/_settings.spacing.scss +3 -4
  302. package/src/styles/01-settings/_settings.tooltip.scss +1 -1
  303. package/src/styles/01-settings/_settings.typography.scss +4 -4
  304. package/src/styles/02-tools/_tools.button.scss +51 -21
  305. package/src/styles/02-tools/_tools.utility-api.scss +38 -12
  306. package/src/styles/03-generic/_generic.root.scss +4 -3
  307. package/src/styles/06-components/_components.accordion.scss +56 -14
  308. package/src/styles/06-components/_components.atomix-glass.scss +13 -9
  309. package/src/styles/06-components/_components.button.scss +16 -4
  310. package/src/styles/06-components/_components.callout.scss +27 -21
  311. package/src/styles/06-components/_components.card.scss +5 -14
  312. package/src/styles/06-components/_components.chart.scss +22 -19
  313. package/src/styles/06-components/_components.checkbox.scss +25 -17
  314. package/src/styles/06-components/_components.color-mode-toggle.scss +3 -1
  315. package/src/styles/06-components/_components.edge-panel.scss +9 -2
  316. package/src/styles/06-components/_components.footer.scss +1 -1
  317. package/src/styles/06-components/_components.side-menu.scss +5 -5
  318. package/src/styles/06-components/_components.toggle.scss +18 -0
  319. package/src/styles/06-components/_index.scss +1 -1
  320. package/src/styles/06-components/old.chart.styles.scss +0 -2
  321. package/src/styles/99-utilities/_index.scss +2 -0
  322. package/src/styles/99-utilities/_utilities.border.scss +69 -27
  323. package/src/styles/99-utilities/_utilities.display.scss +1 -1
  324. package/src/styles/99-utilities/_utilities.opacity.scss +10 -0
  325. package/src/styles/99-utilities/_utilities.position.scss +16 -9
  326. package/src/styles/99-utilities/_utilities.scss +2 -0
  327. package/src/styles/99-utilities/_utilities.sizes.scss +47 -18
  328. package/src/styles/99-utilities/_utilities.spacing.scss +118 -66
  329. package/src/styles/99-utilities/_utilities.text-gradient.scss +45 -0
  330. package/src/styles/99-utilities/_utilities.text.scss +67 -46
  331. package/themes/dark-complementary/README.md +98 -0
  332. package/themes/dark-complementary/index.scss +158 -0
  333. package/themes/default-light/README.md +81 -0
  334. package/themes/default-light/index.scss +154 -0
  335. package/themes/high-contrast/README.md +105 -0
  336. package/themes/high-contrast/index.scss +172 -0
  337. package/themes/test-theme/README.md +38 -0
  338. package/themes/test-theme/index.scss +47 -0
  339. package/scripts/cli/templates-original-backup.js +0 -1655
  340. package/scripts/cli/templates_backup.js +0 -684
  341. package/src/components/AtomixGlass/stories/AtomixGlass.stories.tsx +0 -1438
  342. package/src/lib/composables/useButton.ts +0 -93
  343. package/src/lib/composables/useCheckbox.ts +0 -70
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * CSS Variable Mapper
3
- *
3
+ *
4
4
  * Utilities for generating and managing CSS custom properties from SCSS tokens
5
5
  * and component configurations.
6
6
  */
@@ -35,7 +35,7 @@ export interface CSSVariableNamingOptions {
35
35
 
36
36
  /**
37
37
  * Generate CSS variable name from parts
38
- *
38
+ *
39
39
  * @example
40
40
  * generateCSSVariableName('button', 'bg', { prefix: 'atomix' })
41
41
  * // Returns: '--atomix-button-bg'
@@ -45,26 +45,22 @@ export function generateCSSVariableName(
45
45
  property: string,
46
46
  options: CSSVariableNamingOptions = {}
47
47
  ): string {
48
- const {
49
- prefix = 'atomix',
50
- separator = '-',
51
- includeComponent = true,
52
- } = options;
48
+ const { prefix = 'atomix', separator = '-', includeComponent = true } = options;
53
49
 
54
50
  const parts = [prefix];
55
-
51
+
56
52
  if (includeComponent) {
57
53
  parts.push(component);
58
54
  }
59
-
55
+
60
56
  parts.push(property);
61
-
57
+
62
58
  return `--${parts.join(separator)}`;
63
59
  }
64
60
 
65
61
  /**
66
62
  * Generate CSS variables object from configuration
67
- *
63
+ *
68
64
  * @example
69
65
  * const vars = generateComponentCSSVars({
70
66
  * component: 'button',
@@ -89,11 +85,7 @@ export function generateComponentCSSVars(
89
85
  if (parts) {
90
86
  Object.entries(parts).forEach(([partName, partProps]) => {
91
87
  Object.entries(partProps).forEach(([key, value]) => {
92
- const varName = generateCSSVariableName(
93
- component,
94
- `${partName}-${key}`,
95
- options
96
- );
88
+ const varName = generateCSSVariableName(component, `${partName}-${key}`, options);
97
89
  vars[varName] = String(value);
98
90
  });
99
91
  });
@@ -103,11 +95,7 @@ export function generateComponentCSSVars(
103
95
  if (states) {
104
96
  Object.entries(states).forEach(([stateName, stateProps]) => {
105
97
  Object.entries(stateProps).forEach(([key, value]) => {
106
- const varName = generateCSSVariableName(
107
- component,
108
- `${stateName}-${key}`,
109
- options
110
- );
98
+ const varName = generateCSSVariableName(component, `${stateName}-${key}`, options);
111
99
  vars[varName] = String(value);
112
100
  });
113
101
  });
@@ -117,11 +105,7 @@ export function generateComponentCSSVars(
117
105
  if (variants) {
118
106
  Object.entries(variants).forEach(([variantName, variantProps]) => {
119
107
  Object.entries(variantProps).forEach(([key, value]) => {
120
- const varName = generateCSSVariableName(
121
- component,
122
- `${variantName}-${key}`,
123
- options
124
- );
108
+ const varName = generateCSSVariableName(component, `${variantName}-${key}`, options);
125
109
  vars[varName] = String(value);
126
110
  });
127
111
  });
@@ -132,7 +116,7 @@ export function generateComponentCSSVars(
132
116
 
133
117
  /**
134
118
  * Map SCSS tokens to CSS custom properties
135
- *
119
+ *
136
120
  * @example
137
121
  * const tokens = { '$primary-color': '#7AFFD7', '$spacing-md': '16px' }
138
122
  * const vars = mapSCSSTokensToCSSVars(tokens)
@@ -148,13 +132,13 @@ export function mapSCSSTokensToCSSVars(
148
132
  Object.entries(tokens).forEach(([key, value]) => {
149
133
  // Remove $ prefix from SCSS variables
150
134
  const cleanKey = key.startsWith('$') ? key.slice(1) : key;
151
-
135
+
152
136
  // Convert underscores to separators
153
137
  const normalizedKey = cleanKey.replace(/_/g, separator);
154
-
138
+
155
139
  // Generate variable name
156
140
  const varName = `--${prefix}${separator}${normalizedKey}`;
157
-
141
+
158
142
  vars[varName] = String(value);
159
143
  });
160
144
 
@@ -163,74 +147,66 @@ export function mapSCSSTokensToCSSVars(
163
147
 
164
148
  /**
165
149
  * Apply CSS variables to an element
166
- *
150
+ *
167
151
  * @param vars - CSS variables to apply
168
152
  * @param element - Target element (defaults to document.documentElement)
169
153
  */
170
154
  export function applyCSSVariables(
171
- vars: Record<string, string | number>,
172
- element?: HTMLElement
155
+ vars: Record<string, string | number>,
156
+ element?: HTMLElement
173
157
  ): void {
174
- if (typeof window === 'undefined') {
175
- return; // SSR safety
176
- }
177
-
178
- const target = element || document.documentElement;
179
- Object.entries(vars).forEach(([key, value]) => {
180
- target.style.setProperty(key, String(value));
181
- });
158
+ if (typeof window === 'undefined') {
159
+ return; // SSR safety
160
+ }
161
+
162
+ const target = element || document.documentElement;
163
+ Object.entries(vars).forEach(([key, value]) => {
164
+ target.style.setProperty(key, String(value));
165
+ });
182
166
  }
183
167
 
184
168
  /**
185
169
  * Remove CSS variables from an element
186
- *
170
+ *
187
171
  * @param varNames - Variable names to remove
188
172
  * @param element - Target element (defaults to document.documentElement)
189
173
  */
190
- export function removeCSSVariables(
191
- varNames: string[],
192
- element?: HTMLElement
193
- ): void {
194
- if (typeof window === 'undefined') {
195
- return; // SSR safety
196
- }
197
-
198
- const target = element || document.documentElement;
199
- varNames.forEach((varName) => {
200
- target.style.removeProperty(varName);
201
- });
174
+ export function removeCSSVariables(varNames: string[], element?: HTMLElement): void {
175
+ if (typeof window === 'undefined') {
176
+ return; // SSR safety
177
+ }
178
+
179
+ const target = element || document.documentElement;
180
+ varNames.forEach(varName => {
181
+ target.style.removeProperty(varName);
182
+ });
202
183
  }
203
184
 
204
185
  /**
205
186
  * Get CSS variable value from an element
206
- *
187
+ *
207
188
  * @param varName - Variable name to get
208
189
  * @param element - Target element (defaults to document.documentElement)
209
190
  * @returns Variable value or null if not found
210
191
  */
211
- export function getCSSVariable(
212
- varName: string,
213
- element?: HTMLElement
214
- ): string | null {
215
- if (typeof window === 'undefined') {
216
- return null; // SSR safety
217
- }
218
-
219
- const target = element || document.documentElement;
220
- return getComputedStyle(target).getPropertyValue(varName).trim() || null;
192
+ export function getCSSVariable(varName: string, element?: HTMLElement): string | null {
193
+ if (typeof window === 'undefined') {
194
+ return null; // SSR safety
195
+ }
196
+
197
+ const target = element || document.documentElement;
198
+ return getComputedStyle(target).getPropertyValue(varName).trim() || null;
221
199
  }
222
200
 
223
201
  /**
224
202
  * Convert CSS variable object to inline style object
225
- *
203
+ *
226
204
  * @example
227
205
  * const vars = { '--atomix-button-bg': '#000' }
228
206
  * const style = cssVarsToStyle(vars)
229
207
  * // Returns: { '--atomix-button-bg': '#000' } as React.CSSProperties
230
208
  */
231
- export function cssVarsToStyle(
232
- vars: Record<string, string | number>
233
- ): React.CSSProperties {
209
+ export function cssVarsToStyle(vars: Record<string, string | number>): React.CSSProperties {
234
210
  return Object.entries(vars).reduce((acc, [key, value]) => {
235
211
  (acc as any)[key] = typeof value === 'number' ? `${value}px` : value;
236
212
  return acc;
@@ -261,15 +237,12 @@ export function isValidCSSVariableName(name: string): boolean {
261
237
 
262
238
  /**
263
239
  * Extract component name from CSS variable name
264
- *
240
+ *
265
241
  * @example
266
242
  * extractComponentName('--atomix-button-bg')
267
243
  * // Returns: 'button'
268
244
  */
269
- export function extractComponentName(
270
- varName: string,
271
- prefix: string = 'atomix'
272
- ): string | null {
245
+ export function extractComponentName(varName: string, prefix: string = 'atomix'): string | null {
273
246
  const regex = new RegExp(`^--${prefix}-([a-z0-9]+)-`);
274
247
  const match = varName.match(regex);
275
248
  return match ? (match[1] ?? null) : null;
@@ -1,12 +1,10 @@
1
1
  /**
2
2
  * Theme Adapters
3
- *
3
+ *
4
4
  * Adapters for working with DesignTokens and CSS variables
5
5
  */
6
6
 
7
- export {
8
- designTokensToCSSVars,
9
- } from './themeAdapter';
7
+ export { designTokensToCSSVars } from './themeAdapter';
10
8
 
11
9
  export {
12
10
  generateCSSVariableName,
@@ -21,8 +19,4 @@ export {
21
19
  extractComponentName,
22
20
  } from './cssVariableMapper';
23
21
 
24
- export type {
25
- CSSVariableConfig,
26
- CSSVariableNamingOptions,
27
- } from './cssVariableMapper';
28
-
22
+ export type { CSSVariableConfig, CSSVariableNamingOptions } from './cssVariableMapper';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Theme Adapter
3
- *
3
+ *
4
4
  * Converts between Theme objects and DesignTokens.
5
5
  */
6
6
 
@@ -11,12 +11,12 @@ import { hexToRgb } from '../utils/themeUtils';
11
11
 
12
12
  /**
13
13
  * Convert Theme object to DesignTokens
14
- *
14
+ *
15
15
  * Extracts values from a Theme object and converts them to flat DesignTokens format.
16
- *
16
+ *
17
17
  * @param theme - Theme object to convert
18
18
  * @returns Partial DesignTokens object
19
- *
19
+ *
20
20
  * @example
21
21
  * ```typescript
22
22
  * const theme = createTheme({ palette: { primary: { main: '#7c3aed' } } });
@@ -150,14 +150,14 @@ export function themeToDesignTokens(theme: Theme): Partial<DesignTokens> {
150
150
  tokens['font-sans-serif'] = theme.typography.fontFamily;
151
151
  tokens['body-font-size'] = `${theme.typography.fontSize}px`;
152
152
  tokens['body-font-weight'] = String(theme.typography.fontWeightRegular);
153
-
153
+
154
154
  // Font weights
155
155
  tokens['font-weight-light'] = String(theme.typography.fontWeightLight);
156
156
  tokens['font-weight-normal'] = String(theme.typography.fontWeightRegular);
157
157
  tokens['font-weight-medium'] = String(theme.typography.fontWeightMedium);
158
158
  tokens['font-weight-semibold'] = String(theme.typography.fontWeightSemiBold);
159
159
  tokens['font-weight-bold'] = String(theme.typography.fontWeightBold);
160
-
160
+
161
161
  // Line heights
162
162
  if (theme.typography.h1?.lineHeight) {
163
163
  tokens['line-height-base'] = String(theme.typography.h1.lineHeight);
@@ -165,7 +165,11 @@ export function themeToDesignTokens(theme: Theme): Partial<DesignTokens> {
165
165
  }
166
166
 
167
167
  // Convert spacing (if available as object)
168
- if (theme.spacing && typeof theme.spacing === 'object' && !('__isSpacingFunction' in theme.spacing)) {
168
+ if (
169
+ theme.spacing &&
170
+ typeof theme.spacing === 'object' &&
171
+ !('__isSpacingFunction' in theme.spacing)
172
+ ) {
169
173
  const spacing = theme.spacing as Record<string, string | number>;
170
174
  Object.entries(spacing).forEach(([key, value]) => {
171
175
  tokens[`spacing-${key}` as keyof DesignTokens] = String(value);
@@ -175,12 +179,18 @@ export function themeToDesignTokens(theme: Theme): Partial<DesignTokens> {
175
179
  // Convert border radius
176
180
  if (theme.borderRadius) {
177
181
  Object.entries(theme.borderRadius).forEach(([key, value]) => {
178
- const tokenKey = key === 'sm' ? 'border-radius-sm' :
179
- key === 'md' ? 'border-radius' :
180
- key === 'lg' ? 'border-radius-lg' :
181
- key === 'xl' ? 'border-radius-xl' :
182
- key === 'xxl' ? 'border-radius-xxl' :
183
- `border-radius-${key}`;
182
+ const tokenKey =
183
+ key === 'sm'
184
+ ? 'border-radius-sm'
185
+ : key === 'md'
186
+ ? 'border-radius'
187
+ : key === 'lg'
188
+ ? 'border-radius-lg'
189
+ : key === 'xl'
190
+ ? 'border-radius-xl'
191
+ : key === 'xxl'
192
+ ? 'border-radius-xxl'
193
+ : `border-radius-${key}`;
184
194
  tokens[tokenKey as keyof DesignTokens] = String(value);
185
195
  });
186
196
  }
@@ -188,12 +198,18 @@ export function themeToDesignTokens(theme: Theme): Partial<DesignTokens> {
188
198
  // Convert shadows
189
199
  if (theme.shadows) {
190
200
  Object.entries(theme.shadows).forEach(([key, value]) => {
191
- const tokenKey = key === 'xs' ? 'box-shadow-xs' :
192
- key === 'sm' ? 'box-shadow-sm' :
193
- key === 'md' ? 'box-shadow' :
194
- key === 'lg' ? 'box-shadow-lg' :
195
- key === 'xl' ? 'box-shadow-xl' :
196
- `box-shadow-${key}`;
201
+ const tokenKey =
202
+ key === 'xs'
203
+ ? 'box-shadow-xs'
204
+ : key === 'sm'
205
+ ? 'box-shadow-sm'
206
+ : key === 'md'
207
+ ? 'box-shadow'
208
+ : key === 'lg'
209
+ ? 'box-shadow-lg'
210
+ : key === 'xl'
211
+ ? 'box-shadow-xl'
212
+ : `box-shadow-${key}`;
197
213
  tokens[tokenKey as keyof DesignTokens] = String(value);
198
214
  });
199
215
  }
@@ -240,13 +256,13 @@ export function themeToDesignTokens(theme: Theme): Partial<DesignTokens> {
240
256
 
241
257
  /**
242
258
  * Convert DesignTokens to Theme-compatible CSS variables
243
- *
259
+ *
244
260
  * @param tokens - DesignTokens object
245
261
  * @returns CSS variables object compatible with Theme.cssVars
246
262
  */
247
263
  export function designTokensToCSSVars(tokens: Partial<DesignTokens>): Record<string, string> {
248
264
  const cssVars: Record<string, string> = {};
249
-
265
+
250
266
  Object.entries(tokens).forEach(([key, value]) => {
251
267
  if (value !== undefined) {
252
268
  cssVars[`--atomix-${key}`] = String(value);
@@ -258,9 +274,9 @@ export function designTokensToCSSVars(tokens: Partial<DesignTokens>): Record<str
258
274
 
259
275
  /**
260
276
  * Create DesignTokens from Theme with defaults
261
- *
277
+ *
262
278
  * Converts a Theme to DesignTokens and merges with default tokens.
263
- *
279
+ *
264
280
  * @param theme - Theme object to convert
265
281
  * @returns Complete DesignTokens object
266
282
  */
@@ -271,17 +287,16 @@ export function createDesignTokensFromTheme(theme: Theme): DesignTokens {
271
287
 
272
288
  /**
273
289
  * Create a minimal Theme object from DesignTokens
274
- *
290
+ *
275
291
  * @param tokens - DesignTokens to convert
276
292
  * @returns Minimal Theme object with cssVars populated
277
293
  */
278
294
  export function designTokensToTheme(tokens: Partial<DesignTokens>): Partial<Theme> {
279
295
  const cssVars = designTokensToCSSVars(tokens);
280
-
296
+
281
297
  return {
282
298
  name: 'Design Tokens Theme',
283
299
  cssVars,
284
300
  __isJSTheme: true,
285
301
  } as Partial<Theme>;
286
302
  }
287
-
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Theme Configuration Module
3
- *
3
+ *
4
4
  * Exports for theme configuration loading and validation
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Theme Configuration Types
3
- *
3
+ *
4
4
  * Type definitions for the theme configuration system
5
5
  */
6
6
 
@@ -109,4 +109,4 @@ export type {
109
109
  BuildConfig,
110
110
  RuntimeConfig,
111
111
  IntegrationConfig,
112
- };
112
+ };
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Theme Configuration Validator
3
- *
3
+ *
4
4
  * Validates theme configuration structure and values
5
5
  */
6
6
 
@@ -8,7 +8,7 @@ import type { ConfigValidationResult } from './types';
8
8
 
9
9
  /**
10
10
  * Validate theme configuration
11
- *
11
+ *
12
12
  * @param config - Configuration to validate
13
13
  * @returns Validation result with errors and warnings
14
14
  */
@@ -117,8 +117,14 @@ function validateThemes(themes: Record<string, any>): ConfigValidationResult {
117
117
 
118
118
  // Validate accessibility (only critical checks)
119
119
  if (theme.a11y?.contrastTarget) {
120
- if (typeof theme.a11y.contrastTarget !== 'number' || theme.a11y.contrastTarget < 1 || theme.a11y.contrastTarget > 21) {
121
- warnings.push(`Theme "${themeId}" has invalid contrast target: ${theme.a11y.contrastTarget}`);
120
+ if (
121
+ typeof theme.a11y.contrastTarget !== 'number' ||
122
+ theme.a11y.contrastTarget < 1 ||
123
+ theme.a11y.contrastTarget > 21
124
+ ) {
125
+ warnings.push(
126
+ `Theme "${themeId}" has invalid contrast target: ${theme.a11y.contrastTarget}`
127
+ );
122
128
  }
123
129
  }
124
130
  }
@@ -247,4 +253,3 @@ function validateDependencies(
247
253
 
248
254
  return { valid: errors.length === 0, errors, warnings };
249
255
  }
250
-
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Theme System Constants
3
- *
3
+ *
4
4
  * Centralized constants for the theme system to avoid magic numbers and strings.
5
5
  */
6
6
 
@@ -121,7 +121,7 @@ export const DEFAULT_ANALYTICS_CONFIG = {
121
121
  * Logger default configuration
122
122
  */
123
123
  export const DEFAULT_LOGGER_CONFIG = {
124
- level: (typeof process !== 'undefined' && process.env?.NODE_ENV === 'production') ? 1 : 2, // WARN in prod, INFO in dev
124
+ level: typeof process !== 'undefined' && process.env?.NODE_ENV === 'production' ? 1 : 2, // WARN in prod, INFO in dev
125
125
  enableConsole: true,
126
126
  } as const;
127
127
 
@@ -1,8 +1,7 @@
1
1
  /**
2
2
  * Theme Constants
3
- *
3
+ *
4
4
  * System constants and default values
5
5
  */
6
6
 
7
7
  export * from './constants';
8
-
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * createTheme Tests
3
- *
3
+ *
4
4
  * Tests for createTheme function including automatic config loading
5
5
  */
6
6
 
@@ -19,7 +19,7 @@ describe('createTheme', () => {
19
19
  // createTheme() should work even if config is not available
20
20
  // It will fall back to default tokens
21
21
  const css = createTheme();
22
-
22
+
23
23
  expect(typeof css).toBe('string');
24
24
  expect(css.length).toBeGreaterThan(0);
25
25
  expect(css).toContain(':root');
@@ -27,7 +27,7 @@ describe('createTheme', () => {
27
27
 
28
28
  it('should generate valid CSS with default tokens', () => {
29
29
  const css = createTheme();
30
-
30
+
31
31
  // Should contain CSS variable declarations
32
32
  expect(css).toMatch(/--atomix-[a-z-]+:\s*[^;]+;/);
33
33
  });
@@ -36,13 +36,13 @@ describe('createTheme', () => {
36
36
  describe('DesignTokens Input', () => {
37
37
  it('should accept DesignTokens and generate CSS', () => {
38
38
  const tokens: Partial<DesignTokens> = {
39
- 'primary': '#7AFFD7',
40
- 'secondary': '#FF5733',
39
+ primary: '#7AFFD7',
40
+ secondary: '#FF5733',
41
41
  'spacing-4': '1rem',
42
42
  };
43
43
 
44
44
  const css = createTheme(tokens);
45
-
45
+
46
46
  expect(css).toContain('--atomix-primary');
47
47
  expect(css).toContain('#7AFFD7');
48
48
  expect(css).toContain('--atomix-secondary');
@@ -53,15 +53,15 @@ describe('createTheme', () => {
53
53
 
54
54
  it('should merge with default tokens', () => {
55
55
  const tokens: Partial<DesignTokens> = {
56
- 'primary': '#CUSTOM',
56
+ primary: '#CUSTOM',
57
57
  };
58
58
 
59
59
  const css = createTheme(tokens);
60
-
60
+
61
61
  // Should contain custom primary
62
62
  expect(css).toContain('--atomix-primary');
63
63
  expect(css).toContain('#CUSTOM');
64
-
64
+
65
65
  // Should also contain default tokens
66
66
  expect(css).toContain('--atomix-secondary');
67
67
  });
@@ -70,33 +70,33 @@ describe('createTheme', () => {
70
70
  describe('Options', () => {
71
71
  it('should respect prefix option', () => {
72
72
  const tokens: Partial<DesignTokens> = {
73
- 'primary': '#7AFFD7',
73
+ primary: '#7AFFD7',
74
74
  };
75
75
 
76
76
  const css = createTheme(tokens, { prefix: 'myapp' });
77
-
77
+
78
78
  expect(css).toContain('--myapp-primary');
79
79
  expect(css).not.toContain('--atomix-primary');
80
80
  });
81
81
 
82
82
  it('should respect selector option', () => {
83
83
  const tokens: Partial<DesignTokens> = {
84
- 'primary': '#7AFFD7',
84
+ primary: '#7AFFD7',
85
85
  };
86
86
 
87
87
  const css = createTheme(tokens, { selector: '[data-theme="dark"]' });
88
-
88
+
89
89
  expect(css).toContain('[data-theme="dark"]');
90
90
  expect(css).not.toContain(':root');
91
91
  });
92
92
 
93
93
  it('should use default prefix when not provided', () => {
94
94
  const tokens: Partial<DesignTokens> = {
95
- 'primary': '#7AFFD7',
95
+ primary: '#7AFFD7',
96
96
  };
97
97
 
98
98
  const css = createTheme(tokens);
99
-
99
+
100
100
  expect(css).toContain('--atomix-primary');
101
101
  });
102
102
  });
@@ -104,11 +104,11 @@ describe('createTheme', () => {
104
104
  describe('CSS Output Format', () => {
105
105
  it('should generate valid CSS syntax', () => {
106
106
  const tokens: Partial<DesignTokens> = {
107
- 'primary': '#7AFFD7',
107
+ primary: '#7AFFD7',
108
108
  };
109
109
 
110
110
  const css = createTheme(tokens);
111
-
111
+
112
112
  // Should be valid CSS
113
113
  expect(css).toMatch(/^[^{]*\{[^}]*\}/s);
114
114
  expect(css).toContain(':');
@@ -117,16 +117,14 @@ describe('createTheme', () => {
117
117
 
118
118
  it('should format CSS with proper indentation', () => {
119
119
  const tokens: Partial<DesignTokens> = {
120
- 'primary': '#7AFFD7',
121
- 'secondary': '#FF5733',
120
+ primary: '#7AFFD7',
121
+ secondary: '#FF5733',
122
122
  };
123
123
 
124
124
  const css = createTheme(tokens);
125
-
125
+
126
126
  // Should have proper formatting
127
127
  expect(css).toContain('\n');
128
128
  });
129
129
  });
130
130
  });
131
-
132
-