@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.
- package/CHANGELOG.md +39 -0
- package/README.md +2 -0
- package/build-tools/EXAMPLES.md +372 -0
- package/build-tools/README.md +242 -0
- package/build-tools/__tests__/error-handler.test.js +230 -0
- package/build-tools/__tests__/index.test.js +141 -0
- package/build-tools/__tests__/rollup-plugin.test.js +194 -0
- package/build-tools/__tests__/utils.test.js +161 -0
- package/build-tools/__tests__/vite-plugin.test.js +129 -0
- package/build-tools/__tests__/webpack-loader.test.js +190 -0
- package/build-tools/error-handler.js +308 -0
- package/build-tools/index.d.ts +43 -0
- package/build-tools/index.js +88 -0
- package/build-tools/package.json +67 -0
- package/build-tools/rollup-plugin.js +236 -0
- package/build-tools/types.d.ts +163 -0
- package/build-tools/utils.js +203 -0
- package/build-tools/vite-plugin.js +161 -0
- package/build-tools/webpack-loader.js +123 -0
- package/dist/atomix.css +298 -167
- package/dist/atomix.css.map +1 -1
- package/dist/atomix.min.css +3 -3
- package/dist/atomix.min.css.map +1 -1
- package/dist/build-tools/EXAMPLES.md +372 -0
- package/dist/build-tools/README.md +242 -0
- package/dist/build-tools/__tests__/error-handler.test.js +230 -0
- package/dist/build-tools/__tests__/index.test.js +141 -0
- package/dist/build-tools/__tests__/rollup-plugin.test.js +194 -0
- package/dist/build-tools/__tests__/utils.test.js +161 -0
- package/dist/build-tools/__tests__/vite-plugin.test.js +129 -0
- package/dist/build-tools/__tests__/webpack-loader.test.js +190 -0
- package/dist/build-tools/error-handler.js +308 -0
- package/dist/build-tools/index.d.ts +43 -0
- package/dist/build-tools/index.js +88 -0
- package/dist/build-tools/package.json +67 -0
- package/dist/build-tools/rollup-plugin.js +236 -0
- package/dist/build-tools/types.d.ts +163 -0
- package/dist/build-tools/utils.js +203 -0
- package/dist/build-tools/vite-plugin.js +161 -0
- package/dist/build-tools/webpack-loader.js +123 -0
- package/dist/charts.d.ts +2 -2
- package/dist/charts.js +87 -58
- package/dist/charts.js.map +1 -1
- package/dist/core.d.ts +42 -12
- package/dist/core.js +175 -135
- package/dist/core.js.map +1 -1
- package/dist/forms.d.ts +30 -16
- package/dist/forms.js +146 -131
- package/dist/forms.js.map +1 -1
- package/dist/heavy.d.ts +2 -2
- package/dist/heavy.js +151 -118
- package/dist/heavy.js.map +1 -1
- package/dist/index.d.ts +130 -106
- package/dist/index.esm.js +1083 -465
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1102 -483
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/theme.d.ts +27 -2
- package/dist/theme.js +721 -108
- package/dist/theme.js.map +1 -1
- package/package.json +23 -8
- package/scripts/atomix-cli.js +749 -1153
- package/scripts/cli/__tests__/README.md +81 -0
- package/scripts/cli/__tests__/basic.test.js +115 -0
- package/scripts/cli/__tests__/component-generator.test.js +332 -0
- package/scripts/cli/__tests__/integration.test.js +327 -0
- package/scripts/cli/__tests__/test-setup.js +133 -0
- package/scripts/cli/__tests__/token-manager.test.js +251 -0
- package/scripts/cli/__tests__/utils.test.js +78 -118
- package/scripts/cli/component-generator.js +564 -0
- package/scripts/cli/dependency-checker.js +355 -0
- package/scripts/cli/documentation-sync.js +542 -0
- package/scripts/cli/interactive-init.js +129 -292
- package/scripts/cli/mappings.js +211 -0
- package/scripts/cli/migration-tools.js +95 -288
- package/scripts/cli/template-manager.js +105 -0
- package/scripts/cli/templates/README.md +123 -0
- package/scripts/cli/templates/common-templates.js +636 -0
- package/scripts/cli/templates/composable-templates.js +171 -0
- package/scripts/cli/templates/config-templates.js +126 -0
- package/scripts/cli/templates/index.js +102 -0
- package/scripts/cli/templates/project-templates.js +342 -0
- package/scripts/cli/templates/react-templates.js +331 -0
- package/scripts/cli/templates/scss-templates.js +155 -0
- package/scripts/cli/templates/storybook-templates.js +236 -0
- package/scripts/cli/templates/testing-templates.js +224 -0
- package/scripts/cli/templates/testing-utils.js +278 -0
- package/scripts/cli/templates/token-templates.js +447 -0
- package/scripts/cli/templates/types-templates.js +147 -0
- package/scripts/cli/templates.js +35 -0
- package/scripts/cli/theme-bridge.js +28 -16
- package/scripts/cli/token-manager.js +432 -247
- package/scripts/cli/utils.js +37 -26
- package/src/components/Accordion/Accordion.stories.tsx +369 -870
- package/src/components/Accordion/Accordion.test.tsx +57 -0
- package/src/components/Accordion/Accordion.tsx +4 -0
- package/src/components/AtomixGlass/AtomixGlass.tsx +80 -39
- package/src/components/AtomixGlass/AtomixGlassContainer.tsx +103 -81
- package/src/components/AtomixGlass/__snapshots__/AtomixGlass.test.tsx.snap +8 -7
- package/src/components/AtomixGlass/glass-utils.ts +2 -2
- package/src/components/AtomixGlass/shader-utils.ts +5 -0
- package/src/components/AtomixGlass/stories/Customization.stories.tsx +131 -0
- package/src/components/AtomixGlass/stories/Examples.stories.tsx +2965 -2861
- package/src/components/AtomixGlass/stories/Modes.stories.tsx +1 -1
- package/src/components/AtomixGlass/stories/Overview.stories.tsx +348 -0
- package/src/components/AtomixGlass/stories/Performance.stories.tsx +103 -0
- package/src/components/AtomixGlass/stories/Playground.stories.tsx +73 -59
- package/src/components/AtomixGlass/stories/{ShaderVariants.stories.tsx → Shaders.stories.tsx} +1 -1
- package/src/components/AtomixGlass/stories/shared-components.tsx +90 -190
- package/src/components/Avatar/Avatar.stories.tsx +239 -27
- package/src/components/Badge/Badge.stories.tsx +132 -373
- package/src/components/Badge/Badge.test.tsx +51 -0
- package/src/components/Badge/Badge.tsx +20 -1
- package/src/components/Block/Block.stories.tsx +26 -17
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +141 -23
- package/src/components/Breadcrumb/Breadcrumb.tsx +2 -2
- package/src/components/Button/Button.stories.tsx +463 -1126
- package/src/components/Button/Button.test.tsx +107 -0
- package/src/components/Button/Button.tsx +50 -54
- package/src/components/Button/ButtonGroup.stories.tsx +373 -217
- package/src/components/Button/README.md +5 -0
- package/src/components/Callout/Callout.stories.tsx +299 -644
- package/src/components/Callout/Callout.test.tsx +10 -10
- package/src/components/Callout/Callout.tsx +7 -7
- package/src/components/Callout/README.md +9 -8
- package/src/components/Card/Card.stories.tsx +248 -68
- package/src/components/Card/Card.tsx +2 -2
- package/src/components/Chart/Chart.stories.tsx +156 -14
- package/src/components/Chart/Chart.tsx +1 -1
- package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +151 -69
- package/src/components/Countdown/Countdown.stories.tsx +115 -8
- package/src/components/DataTable/DataTable.stories.tsx +346 -146
- package/src/components/DataTable/DataTable.tsx +14 -12
- package/src/components/DatePicker/DatePicker.stories.tsx +325 -1066
- package/src/components/Dropdown/Dropdown.stories.tsx +157 -37
- package/src/components/EdgePanel/EdgePanel.stories.tsx +230 -21
- package/src/components/Footer/Footer.stories.tsx +392 -328
- package/src/components/Form/Checkbox.stories.tsx +143 -9
- package/src/components/Form/Checkbox.test.tsx +63 -0
- package/src/components/Form/Checkbox.tsx +90 -52
- package/src/components/Form/Form.stories.tsx +121 -22
- package/src/components/Form/FormGroup.stories.tsx +128 -5
- package/src/components/Form/Input.stories.tsx +28 -16
- package/src/components/Form/Input.test.tsx +59 -0
- package/src/components/Form/Input.tsx +97 -95
- package/src/components/Form/Radio.stories.tsx +232 -97
- package/src/components/Form/Radio.tsx +2 -2
- package/src/components/Form/Select.stories.tsx +144 -12
- package/src/components/Form/Select.tsx +2 -2
- package/src/components/Form/Textarea.stories.tsx +171 -13
- package/src/components/Form/Textarea.test.tsx +45 -0
- package/src/components/Form/Textarea.tsx +88 -86
- package/src/components/Hero/Hero.stories.tsx +333 -32
- package/src/components/List/List.stories.tsx +143 -5
- package/src/components/Modal/Modal.stories.tsx +185 -46
- package/src/components/Navigation/Navbar/Navbar.stories.tsx +5 -5
- package/src/components/Navigation/Navbar/Navbar.tsx +1 -1
- package/src/components/Navigation/README.md +1 -1
- package/src/components/Pagination/Pagination.stories.tsx +5 -2
- package/src/components/Pagination/Pagination.tsx +1 -1
- package/src/components/PhotoViewer/PhotoViewer.stories.tsx +10 -10
- package/src/components/Popover/Popover.stories.tsx +449 -99
- package/src/components/ProductReview/ProductReview.tsx +1 -1
- package/src/components/Progress/Progress.stories.tsx +167 -5
- package/src/components/Progress/Progress.tsx +46 -46
- package/src/components/Rating/Rating.stories.tsx +4 -4
- package/src/components/Rating/Rating.tsx +8 -8
- package/src/components/River/River.stories.tsx +1 -1
- package/src/components/SectionIntro/SectionIntro.stories.tsx +240 -48
- package/src/components/Slider/Slider.stories.tsx +63 -63
- package/src/components/Spinner/Spinner.stories.tsx +104 -10
- package/src/components/Spinner/Spinner.test.tsx +35 -0
- package/src/components/Spinner/Spinner.tsx +9 -2
- package/src/components/Steps/Steps.stories.tsx +172 -43
- package/src/components/Tabs/Tabs.stories.tsx +136 -10
- package/src/components/Testimonial/Testimonial.stories.tsx +121 -4
- package/src/components/Todo/Todo.stories.tsx +198 -9
- package/src/components/Toggle/Toggle.stories.tsx +153 -43
- package/src/components/Toggle/Toggle.test.tsx +91 -0
- package/src/components/Toggle/Toggle.tsx +44 -27
- package/src/components/Tooltip/Tooltip.stories.tsx +194 -104
- package/src/components/Tooltip/Tooltip.tsx +1 -1
- package/src/components/Upload/Upload.stories.tsx +113 -24
- package/src/layouts/Grid/Grid.stories.tsx +49 -49
- package/src/layouts/MasonryGrid/MasonryGrid.stories.tsx +2 -2
- package/src/lib/README.md +2 -2
- package/src/lib/__tests__/theme-tools.test.ts +193 -0
- package/src/lib/composables/index.ts +2 -2
- package/src/lib/composables/useAccordion.ts +12 -3
- package/src/lib/composables/useAtomixGlass.ts +28 -56
- package/src/lib/composables/useBreadcrumb.ts +2 -2
- package/src/lib/composables/useCallout.ts +7 -7
- package/src/lib/composables/useChartExport.ts +2 -7
- package/src/lib/composables/useDataTable.ts +46 -29
- package/src/lib/composables/useNavbar.ts +1 -1
- package/src/lib/constants/components.ts +10 -33
- package/src/lib/storybook/InteractiveDemo.tsx +113 -0
- package/src/lib/storybook/PreviewContainer.tsx +36 -0
- package/src/lib/storybook/VariantsGrid.tsx +21 -0
- package/src/lib/storybook/index.ts +3 -0
- package/src/lib/theme/core/createThemeObject.ts +9 -5
- package/src/lib/theme/devtools/CLI.ts +155 -0
- package/src/lib/theme/devtools/DesignTokensCustomizer.stories.tsx +213 -0
- package/src/lib/theme/devtools/DesignTokensCustomizer.tsx +566 -0
- package/src/lib/theme/devtools/LiveEditor.tsx +2 -1
- package/src/lib/theme/devtools/index.ts +3 -0
- package/src/lib/theme/errors/errors.ts +8 -0
- package/src/lib/theme/runtime/ThemeProvider.tsx +117 -57
- package/src/lib/theme/runtime/__tests__/ThemeProvider.integration.test.tsx +305 -0
- package/src/lib/theme/runtime/__tests__/ThemeProvider.test.tsx +588 -0
- package/src/lib/theme/utils/__tests__/themeValidation.test.ts +264 -0
- package/src/lib/theme/utils/index.ts +1 -0
- package/src/lib/theme/utils/themeValidation.ts +501 -0
- package/src/lib/theme-tools.ts +32 -3
- package/src/lib/types/components.ts +82 -27
- package/src/lib/utils/__tests__/csv.test.ts +45 -0
- package/src/lib/utils/csv.ts +17 -0
- package/src/lib/utils/dataTableExport.ts +1 -10
- package/src/lib/utils/themeNaming.ts +1 -1
- package/src/styles/01-settings/_index.scss +2 -1
- package/src/styles/01-settings/_settings.accordion.scss +28 -7
- package/src/styles/01-settings/_settings.colors.scss +11 -11
- package/src/styles/01-settings/_settings.typography.scss +5 -5
- package/src/styles/02-tools/_tools.utility-api.scss +14 -0
- package/src/styles/06-components/_components.accordion.scss +56 -14
- package/src/styles/06-components/_components.callout.scss +29 -33
- package/src/styles/06-components/_components.checkbox.scss +23 -17
- package/src/styles/06-components/_index.scss +1 -1
- package/src/styles/99-utilities/_index.scss +2 -0
- package/src/styles/99-utilities/_utilities.display.scss +14 -3
- package/src/styles/99-utilities/_utilities.flex.scss +10 -10
- package/src/styles/99-utilities/_utilities.scss +3 -1
- package/src/styles/99-utilities/_utilities.text-gradient.scss +45 -0
- package/src/styles/99-utilities/_utilities.text.scss +28 -8
- package/themes/dark-complementary/README.md +98 -0
- package/themes/dark-complementary/index.scss +158 -0
- package/themes/default-light/README.md +81 -0
- package/themes/default-light/index.scss +154 -0
- package/themes/high-contrast/README.md +105 -0
- package/themes/high-contrast/index.scss +172 -0
- package/themes/test-theme/README.md +38 -0
- package/themes/test-theme/index.scss +47 -0
- package/scripts/cli/__tests__/cli-commands.test.js +0 -204
- package/scripts/cli/__tests__/vitest.config.js +0 -26
- package/src/components/AtomixGlass/stories/AtomixGlass.stories.tsx +0 -1438
- package/src/lib/composables/useButton.ts +0 -93
- 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
|
+
};
|