@shohojdhara/atomix 0.3.13 → 0.3.15

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 (249) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +2 -0
  3. package/build-tools/EXAMPLES.md +372 -0
  4. package/build-tools/README.md +242 -0
  5. package/build-tools/__tests__/error-handler.test.js +230 -0
  6. package/build-tools/__tests__/index.test.js +141 -0
  7. package/build-tools/__tests__/rollup-plugin.test.js +194 -0
  8. package/build-tools/__tests__/utils.test.js +161 -0
  9. package/build-tools/__tests__/vite-plugin.test.js +129 -0
  10. package/build-tools/__tests__/webpack-loader.test.js +190 -0
  11. package/build-tools/error-handler.js +308 -0
  12. package/build-tools/index.d.ts +43 -0
  13. package/build-tools/index.js +88 -0
  14. package/build-tools/package.json +67 -0
  15. package/build-tools/rollup-plugin.js +236 -0
  16. package/build-tools/types.d.ts +163 -0
  17. package/build-tools/utils.js +203 -0
  18. package/build-tools/vite-plugin.js +161 -0
  19. package/build-tools/webpack-loader.js +123 -0
  20. package/dist/atomix.css +298 -167
  21. package/dist/atomix.css.map +1 -1
  22. package/dist/atomix.min.css +3 -3
  23. package/dist/atomix.min.css.map +1 -1
  24. package/dist/build-tools/EXAMPLES.md +372 -0
  25. package/dist/build-tools/README.md +242 -0
  26. package/dist/build-tools/__tests__/error-handler.test.js +230 -0
  27. package/dist/build-tools/__tests__/index.test.js +141 -0
  28. package/dist/build-tools/__tests__/rollup-plugin.test.js +194 -0
  29. package/dist/build-tools/__tests__/utils.test.js +161 -0
  30. package/dist/build-tools/__tests__/vite-plugin.test.js +129 -0
  31. package/dist/build-tools/__tests__/webpack-loader.test.js +190 -0
  32. package/dist/build-tools/error-handler.js +308 -0
  33. package/dist/build-tools/index.d.ts +43 -0
  34. package/dist/build-tools/index.js +88 -0
  35. package/dist/build-tools/package.json +67 -0
  36. package/dist/build-tools/rollup-plugin.js +236 -0
  37. package/dist/build-tools/types.d.ts +163 -0
  38. package/dist/build-tools/utils.js +203 -0
  39. package/dist/build-tools/vite-plugin.js +161 -0
  40. package/dist/build-tools/webpack-loader.js +123 -0
  41. package/dist/charts.d.ts +2 -2
  42. package/dist/charts.js +87 -58
  43. package/dist/charts.js.map +1 -1
  44. package/dist/core.d.ts +42 -12
  45. package/dist/core.js +175 -135
  46. package/dist/core.js.map +1 -1
  47. package/dist/forms.d.ts +30 -16
  48. package/dist/forms.js +146 -131
  49. package/dist/forms.js.map +1 -1
  50. package/dist/heavy.d.ts +2 -2
  51. package/dist/heavy.js +151 -118
  52. package/dist/heavy.js.map +1 -1
  53. package/dist/index.d.ts +130 -106
  54. package/dist/index.esm.js +1083 -465
  55. package/dist/index.esm.js.map +1 -1
  56. package/dist/index.js +1102 -483
  57. package/dist/index.js.map +1 -1
  58. package/dist/index.min.js +1 -1
  59. package/dist/index.min.js.map +1 -1
  60. package/dist/theme.d.ts +27 -2
  61. package/dist/theme.js +721 -108
  62. package/dist/theme.js.map +1 -1
  63. package/package.json +23 -8
  64. package/scripts/atomix-cli.js +749 -1153
  65. package/scripts/cli/__tests__/README.md +81 -0
  66. package/scripts/cli/__tests__/basic.test.js +115 -0
  67. package/scripts/cli/__tests__/component-generator.test.js +332 -0
  68. package/scripts/cli/__tests__/integration.test.js +327 -0
  69. package/scripts/cli/__tests__/test-setup.js +133 -0
  70. package/scripts/cli/__tests__/token-manager.test.js +251 -0
  71. package/scripts/cli/__tests__/utils.test.js +78 -118
  72. package/scripts/cli/component-generator.js +564 -0
  73. package/scripts/cli/dependency-checker.js +355 -0
  74. package/scripts/cli/documentation-sync.js +542 -0
  75. package/scripts/cli/interactive-init.js +129 -292
  76. package/scripts/cli/mappings.js +211 -0
  77. package/scripts/cli/migration-tools.js +95 -288
  78. package/scripts/cli/template-manager.js +105 -0
  79. package/scripts/cli/templates/README.md +123 -0
  80. package/scripts/cli/templates/common-templates.js +636 -0
  81. package/scripts/cli/templates/composable-templates.js +171 -0
  82. package/scripts/cli/templates/config-templates.js +126 -0
  83. package/scripts/cli/templates/index.js +102 -0
  84. package/scripts/cli/templates/project-templates.js +342 -0
  85. package/scripts/cli/templates/react-templates.js +331 -0
  86. package/scripts/cli/templates/scss-templates.js +155 -0
  87. package/scripts/cli/templates/storybook-templates.js +236 -0
  88. package/scripts/cli/templates/testing-templates.js +224 -0
  89. package/scripts/cli/templates/testing-utils.js +278 -0
  90. package/scripts/cli/templates/token-templates.js +447 -0
  91. package/scripts/cli/templates/types-templates.js +147 -0
  92. package/scripts/cli/templates.js +35 -0
  93. package/scripts/cli/theme-bridge.js +28 -16
  94. package/scripts/cli/token-manager.js +432 -247
  95. package/scripts/cli/utils.js +37 -26
  96. package/src/components/Accordion/Accordion.stories.tsx +369 -870
  97. package/src/components/Accordion/Accordion.test.tsx +57 -0
  98. package/src/components/Accordion/Accordion.tsx +4 -0
  99. package/src/components/AtomixGlass/AtomixGlass.tsx +80 -39
  100. package/src/components/AtomixGlass/AtomixGlassContainer.tsx +103 -81
  101. package/src/components/AtomixGlass/__snapshots__/AtomixGlass.test.tsx.snap +8 -7
  102. package/src/components/AtomixGlass/glass-utils.ts +2 -2
  103. package/src/components/AtomixGlass/shader-utils.ts +5 -0
  104. package/src/components/AtomixGlass/stories/Customization.stories.tsx +131 -0
  105. package/src/components/AtomixGlass/stories/Examples.stories.tsx +2965 -2861
  106. package/src/components/AtomixGlass/stories/Modes.stories.tsx +1 -1
  107. package/src/components/AtomixGlass/stories/Overview.stories.tsx +348 -0
  108. package/src/components/AtomixGlass/stories/Performance.stories.tsx +103 -0
  109. package/src/components/AtomixGlass/stories/Playground.stories.tsx +73 -59
  110. package/src/components/AtomixGlass/stories/{ShaderVariants.stories.tsx → Shaders.stories.tsx} +1 -1
  111. package/src/components/AtomixGlass/stories/shared-components.tsx +90 -190
  112. package/src/components/Avatar/Avatar.stories.tsx +239 -27
  113. package/src/components/Badge/Badge.stories.tsx +132 -373
  114. package/src/components/Badge/Badge.test.tsx +51 -0
  115. package/src/components/Badge/Badge.tsx +20 -1
  116. package/src/components/Block/Block.stories.tsx +26 -17
  117. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +141 -23
  118. package/src/components/Breadcrumb/Breadcrumb.tsx +2 -2
  119. package/src/components/Button/Button.stories.tsx +463 -1126
  120. package/src/components/Button/Button.test.tsx +107 -0
  121. package/src/components/Button/Button.tsx +50 -54
  122. package/src/components/Button/ButtonGroup.stories.tsx +373 -217
  123. package/src/components/Button/README.md +5 -0
  124. package/src/components/Callout/Callout.stories.tsx +299 -644
  125. package/src/components/Callout/Callout.test.tsx +10 -10
  126. package/src/components/Callout/Callout.tsx +7 -7
  127. package/src/components/Callout/README.md +9 -8
  128. package/src/components/Card/Card.stories.tsx +248 -68
  129. package/src/components/Card/Card.tsx +2 -2
  130. package/src/components/Chart/Chart.stories.tsx +156 -14
  131. package/src/components/Chart/Chart.tsx +1 -1
  132. package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +151 -69
  133. package/src/components/Countdown/Countdown.stories.tsx +115 -8
  134. package/src/components/DataTable/DataTable.stories.tsx +346 -146
  135. package/src/components/DataTable/DataTable.tsx +14 -12
  136. package/src/components/DatePicker/DatePicker.stories.tsx +325 -1066
  137. package/src/components/Dropdown/Dropdown.stories.tsx +157 -37
  138. package/src/components/EdgePanel/EdgePanel.stories.tsx +230 -21
  139. package/src/components/Footer/Footer.stories.tsx +392 -328
  140. package/src/components/Form/Checkbox.stories.tsx +143 -9
  141. package/src/components/Form/Checkbox.test.tsx +63 -0
  142. package/src/components/Form/Checkbox.tsx +90 -52
  143. package/src/components/Form/Form.stories.tsx +121 -22
  144. package/src/components/Form/FormGroup.stories.tsx +128 -5
  145. package/src/components/Form/Input.stories.tsx +28 -16
  146. package/src/components/Form/Input.test.tsx +59 -0
  147. package/src/components/Form/Input.tsx +97 -95
  148. package/src/components/Form/Radio.stories.tsx +232 -97
  149. package/src/components/Form/Radio.tsx +2 -2
  150. package/src/components/Form/Select.stories.tsx +144 -12
  151. package/src/components/Form/Select.tsx +2 -2
  152. package/src/components/Form/Textarea.stories.tsx +171 -13
  153. package/src/components/Form/Textarea.test.tsx +45 -0
  154. package/src/components/Form/Textarea.tsx +88 -86
  155. package/src/components/Hero/Hero.stories.tsx +333 -32
  156. package/src/components/List/List.stories.tsx +143 -5
  157. package/src/components/Modal/Modal.stories.tsx +185 -46
  158. package/src/components/Navigation/Navbar/Navbar.stories.tsx +5 -5
  159. package/src/components/Navigation/Navbar/Navbar.tsx +1 -1
  160. package/src/components/Navigation/README.md +1 -1
  161. package/src/components/Pagination/Pagination.stories.tsx +5 -2
  162. package/src/components/Pagination/Pagination.tsx +1 -1
  163. package/src/components/PhotoViewer/PhotoViewer.stories.tsx +10 -10
  164. package/src/components/Popover/Popover.stories.tsx +449 -99
  165. package/src/components/ProductReview/ProductReview.tsx +1 -1
  166. package/src/components/Progress/Progress.stories.tsx +167 -5
  167. package/src/components/Progress/Progress.tsx +46 -46
  168. package/src/components/Rating/Rating.stories.tsx +4 -4
  169. package/src/components/Rating/Rating.tsx +8 -8
  170. package/src/components/River/River.stories.tsx +1 -1
  171. package/src/components/SectionIntro/SectionIntro.stories.tsx +240 -48
  172. package/src/components/Slider/Slider.stories.tsx +63 -63
  173. package/src/components/Spinner/Spinner.stories.tsx +104 -10
  174. package/src/components/Spinner/Spinner.test.tsx +35 -0
  175. package/src/components/Spinner/Spinner.tsx +9 -2
  176. package/src/components/Steps/Steps.stories.tsx +172 -43
  177. package/src/components/Tabs/Tabs.stories.tsx +136 -10
  178. package/src/components/Testimonial/Testimonial.stories.tsx +121 -4
  179. package/src/components/Todo/Todo.stories.tsx +198 -9
  180. package/src/components/Toggle/Toggle.stories.tsx +153 -43
  181. package/src/components/Toggle/Toggle.test.tsx +91 -0
  182. package/src/components/Toggle/Toggle.tsx +44 -27
  183. package/src/components/Tooltip/Tooltip.stories.tsx +194 -104
  184. package/src/components/Tooltip/Tooltip.tsx +1 -1
  185. package/src/components/Upload/Upload.stories.tsx +113 -24
  186. package/src/layouts/Grid/Grid.stories.tsx +49 -49
  187. package/src/layouts/MasonryGrid/MasonryGrid.stories.tsx +2 -2
  188. package/src/lib/README.md +2 -2
  189. package/src/lib/__tests__/theme-tools.test.ts +193 -0
  190. package/src/lib/composables/index.ts +2 -2
  191. package/src/lib/composables/useAccordion.ts +12 -3
  192. package/src/lib/composables/useAtomixGlass.ts +28 -56
  193. package/src/lib/composables/useBreadcrumb.ts +2 -2
  194. package/src/lib/composables/useCallout.ts +7 -7
  195. package/src/lib/composables/useChartExport.ts +2 -7
  196. package/src/lib/composables/useDataTable.ts +46 -29
  197. package/src/lib/composables/useNavbar.ts +1 -1
  198. package/src/lib/constants/components.ts +10 -33
  199. package/src/lib/storybook/InteractiveDemo.tsx +113 -0
  200. package/src/lib/storybook/PreviewContainer.tsx +36 -0
  201. package/src/lib/storybook/VariantsGrid.tsx +21 -0
  202. package/src/lib/storybook/index.ts +3 -0
  203. package/src/lib/theme/core/createThemeObject.ts +9 -5
  204. package/src/lib/theme/devtools/CLI.ts +155 -0
  205. package/src/lib/theme/devtools/DesignTokensCustomizer.stories.tsx +213 -0
  206. package/src/lib/theme/devtools/DesignTokensCustomizer.tsx +566 -0
  207. package/src/lib/theme/devtools/LiveEditor.tsx +2 -1
  208. package/src/lib/theme/devtools/index.ts +3 -0
  209. package/src/lib/theme/errors/errors.ts +8 -0
  210. package/src/lib/theme/runtime/ThemeProvider.tsx +117 -57
  211. package/src/lib/theme/runtime/__tests__/ThemeProvider.integration.test.tsx +305 -0
  212. package/src/lib/theme/runtime/__tests__/ThemeProvider.test.tsx +588 -0
  213. package/src/lib/theme/utils/__tests__/themeValidation.test.ts +264 -0
  214. package/src/lib/theme/utils/index.ts +1 -0
  215. package/src/lib/theme/utils/themeValidation.ts +501 -0
  216. package/src/lib/theme-tools.ts +32 -3
  217. package/src/lib/types/components.ts +82 -27
  218. package/src/lib/utils/__tests__/csv.test.ts +45 -0
  219. package/src/lib/utils/csv.ts +17 -0
  220. package/src/lib/utils/dataTableExport.ts +1 -10
  221. package/src/lib/utils/themeNaming.ts +1 -1
  222. package/src/styles/01-settings/_index.scss +2 -1
  223. package/src/styles/01-settings/_settings.accordion.scss +28 -7
  224. package/src/styles/01-settings/_settings.colors.scss +11 -11
  225. package/src/styles/01-settings/_settings.typography.scss +5 -5
  226. package/src/styles/02-tools/_tools.utility-api.scss +14 -0
  227. package/src/styles/06-components/_components.accordion.scss +56 -14
  228. package/src/styles/06-components/_components.callout.scss +29 -33
  229. package/src/styles/06-components/_components.checkbox.scss +23 -17
  230. package/src/styles/06-components/_index.scss +1 -1
  231. package/src/styles/99-utilities/_index.scss +2 -0
  232. package/src/styles/99-utilities/_utilities.display.scss +14 -3
  233. package/src/styles/99-utilities/_utilities.flex.scss +10 -10
  234. package/src/styles/99-utilities/_utilities.scss +3 -1
  235. package/src/styles/99-utilities/_utilities.text-gradient.scss +45 -0
  236. package/src/styles/99-utilities/_utilities.text.scss +28 -8
  237. package/themes/dark-complementary/README.md +98 -0
  238. package/themes/dark-complementary/index.scss +158 -0
  239. package/themes/default-light/README.md +81 -0
  240. package/themes/default-light/index.scss +154 -0
  241. package/themes/high-contrast/README.md +105 -0
  242. package/themes/high-contrast/index.scss +172 -0
  243. package/themes/test-theme/README.md +38 -0
  244. package/themes/test-theme/index.scss +47 -0
  245. package/scripts/cli/__tests__/cli-commands.test.js +0 -204
  246. package/scripts/cli/__tests__/vitest.config.js +0 -26
  247. package/src/components/AtomixGlass/stories/AtomixGlass.stories.tsx +0 -1438
  248. package/src/lib/composables/useButton.ts +0 -93
  249. package/src/lib/composables/useCheckbox.ts +0 -70
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Composable Hook Templates
3
+ * Templates for React custom hooks generation
4
+ */
5
+
6
+ /**
7
+ * Default composable hook template that matches existing patterns
8
+ */
9
+ export const composableTemplate = (name) => {
10
+ const componentPrefix = name.toLowerCase().replace(/([A-Z])/g, '-$1').toLowerCase().replace(/^-/, '');
11
+
12
+ return `import { ${name}Props } from '../types/components';
13
+ import { ${name.toUpperCase()} } from '../constants/components';
14
+
15
+ /**
16
+ * ${name} state and functionality
17
+ * @param initialProps - Initial ${name.toLowerCase()} properties
18
+ * @returns ${name} state and methods
19
+ */
20
+ export function use${name}(initialProps?: Partial<${name}Props>) {
21
+ // Default ${name.toLowerCase()} properties
22
+ const defaultProps: Partial<${name}Props> = {
23
+ variant: 'primary',
24
+ size: 'md',
25
+ disabled: false,
26
+ ...initialProps,
27
+ };
28
+
29
+ /**
30
+ * Generate ${name.toLowerCase()} class based on properties
31
+ * @param props - ${name} properties
32
+ * @returns Class string
33
+ */
34
+ const generateClassNames = (props: Partial<${name}Props> = {}): string => {
35
+ const {
36
+ variant = defaultProps.variant,
37
+ size = defaultProps.size,
38
+ disabled = defaultProps.disabled,
39
+ glass = defaultProps.glass,
40
+ className = '',
41
+ } = props;
42
+
43
+ const sizeClass = size === 'md' ? '' : \`c-${componentPrefix}--\${size}\`;
44
+ const disabledClass = disabled ? 'c-${componentPrefix}--disabled' : '';
45
+ const glassClass = glass ? 'c-${componentPrefix}--glass' : '';
46
+
47
+ return [
48
+ ${name.toUpperCase()}.BASE_CLASS,
49
+ \`c-${componentPrefix}--\${variant}\`,
50
+ sizeClass,
51
+ disabledClass,
52
+ glassClass,
53
+ className,
54
+ ]
55
+ .filter(Boolean)
56
+ .join(' ');
57
+ };
58
+
59
+ /**
60
+ * Handle ${name.toLowerCase()} click with disabled check
61
+ * @param handler - Click handler function
62
+ * @returns Function that respects disabled state
63
+ */
64
+ const handleClick = (handler?: (event: React.MouseEvent<HTMLDivElement>) => void) => {
65
+ return (event: React.MouseEvent<HTMLDivElement>) => {
66
+ if (!defaultProps.disabled && handler) {
67
+ handler(event);
68
+ }
69
+ };
70
+ };
71
+
72
+ return {
73
+ defaultProps,
74
+ generateClassNames,
75
+ handleClick,
76
+ };
77
+ }
78
+ `;
79
+ };
80
+
81
+ /**
82
+ * Simple composable template
83
+ */
84
+ export const simpleComposableTemplate = (name) => `import { useState } from 'react';
85
+ import type { ${name}Props } from '../types/components';
86
+
87
+ export function use${name}(props: ${name}Props) {
88
+ const [isReady, setIsReady] = useState(false);
89
+
90
+ useEffect(() => {
91
+ setIsReady(true);
92
+ }, []);
93
+
94
+ const generateClassNames = (baseClassName = '') => {
95
+ return \`c-${name.toLowerCase()} \${baseClassName}\`.trim();
96
+ };
97
+
98
+ return {
99
+ isReady,
100
+ generateClassNames,
101
+ };
102
+ }
103
+ `;
104
+
105
+ /**
106
+ * Complex composable template
107
+ */
108
+ export const complexComposableTemplate = (name) => `import { useState, useEffect, useRef } from 'react';
109
+ import { ${name.toUpperCase()} } from '../constants/components';
110
+ import type { ${name}Props, ${name}State, ElementRefs } from '../types/components';
111
+
112
+ interface Use${name}Result {
113
+ state: ${name}State;
114
+ refs: ElementRefs;
115
+ methods: {
116
+ // Define methods for complex interactions
117
+ updateState: (newState: Partial<${name}State>) => void;
118
+ reset: () => void;
119
+ };
120
+ generateClassNames: (baseClassName?: string) => string;
121
+ }
122
+
123
+ export function use${name}(
124
+ initialProps?: Partial<${name}Props>
125
+ ): Use${name}Result {
126
+ const defaultProps: Partial<${name}Props> = {
127
+ disabled: false,
128
+ ...initialProps,
129
+ };
130
+
131
+ const [state, setState] = useState<${name}State>({
132
+ // Complex state definition
133
+ });
134
+
135
+ const panelRef = useRef<HTMLDivElement>(null);
136
+ const contentRef = useRef<HTMLDivElement>(null);
137
+ const buttonRef = useRef<HTMLButtonElement>(null);
138
+
139
+ const updateState = (newState: Partial<${name}State>) => {
140
+ setState(prev => ({ ...prev, ...newState }));
141
+ };
142
+
143
+ const reset = () => {
144
+ // Reset to initial state
145
+ };
146
+
147
+ const generateClassNames = (baseClassName = ''): string => {
148
+ const baseClasses = [
149
+ ${name.toUpperCase()}.SELECTORS.${name.toUpperCase()}.replace('.', ''),
150
+ state.isOpen ? ${name.toUpperCase()}.CLASSES.IS_OPEN : '',
151
+ defaultProps.disabled ? ${name.toUpperCase()}.CLASSES.IS_DISABLED : '',
152
+ baseClassName
153
+ ].filter(Boolean).join(' ');
154
+
155
+ return baseClasses;
156
+ };
157
+
158
+ return {
159
+ state,
160
+ refs: { panelRef, contentRef, buttonRef },
161
+ methods: { updateState, reset },
162
+ generateClassNames,
163
+ };
164
+ }
165
+ `;
166
+
167
+ export const composableTemplates = {
168
+ useHook: composableTemplate,
169
+ simpleHook: simpleComposableTemplate,
170
+ complexHook: complexComposableTemplate,
171
+ };
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Configuration Templates
3
+ * Templates for different configuration formats
4
+ */
5
+
6
+ /**
7
+ * Basic configuration templates
8
+ */
9
+ export const basicConfigTemplates = {
10
+ '.atomixrc.json': {
11
+ theme: {
12
+ path: 'themes/custom',
13
+ tokens: {
14
+ colors: {
15
+ primary: '#7AFFD7',
16
+ secondary: '#FF5733'
17
+ }
18
+ }
19
+ },
20
+ components: {
21
+ path: 'src/components',
22
+ generate: {
23
+ typescript: true,
24
+ stories: true,
25
+ tests: false
26
+ }
27
+ },
28
+ build: {
29
+ outputPath: 'dist',
30
+ includeSourceMaps: false
31
+ }
32
+ }
33
+ };
34
+
35
+ /**
36
+ * Advanced configuration template
37
+ */
38
+ export const advancedConfigTemplate = `// Atomix Design System Configuration
39
+ // Generated by Atomix CLI
40
+
41
+ export default {
42
+ theme: {
43
+ path: 'themes/custom',
44
+ tokens: {
45
+ // Import custom token files
46
+ extend: ['./tokens/colors.scss', './tokens/spacing.scss']
47
+ },
48
+ // Theme configuration
49
+ darkMode: 'class', // 'class' | 'media' | false
50
+ cssVarPrefix: 'atomix',
51
+ scope: ':root'
52
+ },
53
+
54
+ components: {
55
+ path: 'src/components',
56
+ // Component generation options
57
+ generate: {
58
+ typescript: true,
59
+ stories: true,
60
+ tests: true,
61
+ cssModules: false,
62
+ // Custom component templates
63
+ templates: {
64
+ component: './templates/component.tsx.hbs',
65
+ story: './templates/story.tsx.hbs',
66
+ test: './templates/test.tsx.hbs'
67
+ }
68
+ },
69
+ // Component scanning
70
+ scan: {
71
+ patterns: ['src/components/**/*.{ts,tsx}'],
72
+ exclude: ['**/*.test.*', '**/*.stories.*']
73
+ }
74
+ },
75
+
76
+ build: {
77
+ outputPath: 'dist',
78
+ includeSourceMaps: process.env.NODE_ENV === 'development',
79
+ // Build optimization
80
+ optimization: {
81
+ minify: true,
82
+ treeshake: true,
83
+ purgeCSS: {
84
+ enabled: true,
85
+ content: ['src/**/*.{js,ts,tsx,html}']
86
+ }
87
+ }
88
+ },
89
+
90
+ // Development server
91
+ devServer: {
92
+ port: 3000,
93
+ open: true,
94
+ hmr: true
95
+ },
96
+
97
+ // Plugin configuration
98
+ plugins: [
99
+ // '@shohojdhara/atomix-plugin-storybook',
100
+ // '@shohojdhara/atomix-plugin-tailwind'
101
+ ],
102
+
103
+ // CLI commands
104
+ cli: {
105
+ generate: {
106
+ component: {
107
+ template: 'react',
108
+ directory: 'src/components'
109
+ },
110
+ theme: {
111
+ template: 'scss',
112
+ directory: 'themes'
113
+ }
114
+ }
115
+ }
116
+ };`;
117
+
118
+ /**
119
+ * Configuration templates export object
120
+ */
121
+ export const configTemplates = {
122
+ basic: basicConfigTemplates,
123
+ advanced: {
124
+ 'atomix.config.js': advancedConfigTemplate
125
+ }
126
+ };
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Templates Index
3
+ * Aggregates all template modules for the Atomix CLI
4
+ */
5
+
6
+ // Import template modules
7
+ import { reactTemplates } from './react-templates.js';
8
+ import { storybookTemplates } from './storybook-templates.js';
9
+ import { testingTemplates } from './testing-templates.js';
10
+ import { scssTemplates } from './scss-templates.js';
11
+ import { typesTemplates } from './types-templates.js';
12
+ import { composableTemplates } from './composable-templates.js';
13
+ import * as tokenTemplates from './token-templates.js';
14
+ import { projectTemplates } from './project-templates.js';
15
+ import { configTemplates } from './config-templates.js';
16
+ import { commonTemplates } from './common-templates.js';
17
+
18
+ /**
19
+ * Main templates object that maintains backward compatibility
20
+ * This structure matches the original templates.js format
21
+ */
22
+ export const componentTemplates = {
23
+ react: {
24
+ component: reactTemplates.component,
25
+ simple: reactTemplates.simple,
26
+ medium: reactTemplates.medium,
27
+ complex: reactTemplates.complex,
28
+ index: reactTemplates.index,
29
+ story: storybookTemplates.story,
30
+ test: testingTemplates.test,
31
+ scss: scssTemplates.full,
32
+ settings: scssTemplates.settings,
33
+ componentStyles: scssTemplates.component,
34
+ types: typesTemplates.types,
35
+ constants: typesTemplates.constants,
36
+ },
37
+ composable: composableTemplates,
38
+ storybook: storybookTemplates,
39
+ testing: testingTemplates,
40
+ scss: scssTemplates,
41
+ types: typesTemplates,
42
+ };
43
+
44
+ // Export everything for flexibility
45
+ export {
46
+ tokenTemplates,
47
+ projectTemplates,
48
+ configTemplates,
49
+ commonTemplates
50
+ };
51
+
52
+ /**
53
+ * Get template by name and type
54
+ * @param {string} type - Template type (react, composable, etc.)
55
+ * @param {string} name - Template name (simple, medium, complex, etc.)
56
+ * @returns {Function|null} Template function or null if not found
57
+ */
58
+ export function getTemplate(type, name) {
59
+ if (type === 'react') {
60
+ return componentTemplates.react[name] || null;
61
+ } else if (type === 'composable') {
62
+ return componentTemplates.composable[name] || null;
63
+ }
64
+ return null;
65
+ }
66
+
67
+ /**
68
+ * Get all available templates for a type
69
+ * @param {string} type - Template type
70
+ * @returns {Object} Object with all available templates
71
+ */
72
+ export function getTemplatesByType(type) {
73
+ return componentTemplates[type] || {};
74
+ }
75
+
76
+ /**
77
+ * List all available template types
78
+ * @returns {string[]} Array of template type names
79
+ */
80
+ export function getTemplateTypes() {
81
+ return Object.keys(componentTemplates);
82
+ }
83
+
84
+ /**
85
+ * Legacy export for backward compatibility
86
+ * Maintains the same structure as the original templates.js
87
+ */
88
+ export default {
89
+ componentTemplates,
90
+ generateColorTokens: tokenTemplates.generateColorTokens,
91
+ generateSpacingTokens: tokenTemplates.generateSpacingTokens,
92
+ generateTypographyTokens: tokenTemplates.generateTypographyTokens,
93
+ generateShadowTokens: tokenTemplates.generateShadowTokens,
94
+ generateRadiusTokens: tokenTemplates.generateRadiusTokens,
95
+ generateAnimationTokens: tokenTemplates.generateAnimationTokens,
96
+ projectTemplates,
97
+ configTemplates,
98
+ // Helper functions
99
+ getTemplate,
100
+ getTemplatesByType,
101
+ getTemplateTypes,
102
+ };