@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.
- package/CHANGELOG.md +20 -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 +44 -0
- package/build-tools/index.js +88 -0
- package/build-tools/package.json +50 -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 +21044 -2618
- package/dist/atomix.css.map +1 -1
- package/dist/atomix.min.css +77 -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 +44 -0
- package/dist/build-tools/index.js +88 -0
- package/dist/build-tools/package.json +50 -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 +1 -1
- package/dist/charts.js +86 -57
- package/dist/charts.js.map +1 -1
- package/dist/core.d.ts +1 -1
- package/dist/core.js +136 -112
- package/dist/core.js.map +1 -1
- package/dist/forms.d.ts +2 -5
- package/dist/forms.js +140 -128
- package/dist/forms.js.map +1 -1
- package/dist/heavy.d.ts +1 -1
- package/dist/heavy.js +136 -112
- package/dist/heavy.js.map +1 -1
- package/dist/index.d.ts +152 -78
- package/dist/index.esm.js +346 -340
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +359 -353
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/layout.js.map +1 -1
- package/dist/theme.d.ts +9 -9
- package/dist/theme.js.map +1 -1
- package/package.json +23 -8
- package/scripts/atomix-cli.js +170 -73
- 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 +161 -0
- package/scripts/cli/component-generator.js +253 -299
- package/scripts/cli/dependency-checker.js +355 -0
- package/scripts/cli/interactive-init.js +46 -5
- package/scripts/cli/template-manager.js +0 -2
- package/scripts/cli/templates/common-templates.js +636 -0
- package/scripts/cli/templates/composable-templates.js +148 -126
- package/scripts/cli/templates/index.js +23 -16
- package/scripts/cli/templates/project-templates.js +151 -23
- package/scripts/cli/templates/react-templates.js +280 -210
- package/scripts/cli/templates/scss-templates.js +90 -91
- package/scripts/cli/templates/testing-templates.js +206 -27
- package/scripts/cli/templates/testing-utils.js +278 -0
- package/scripts/cli/templates/types-templates.js +70 -56
- package/scripts/cli/theme-bridge.js +8 -2
- package/scripts/cli/token-manager.js +318 -206
- package/scripts/cli/utils.js +0 -1
- package/src/components/Accordion/Accordion.stories.tsx +358 -850
- package/src/components/Accordion/Accordion.test.tsx +70 -50
- package/src/components/Accordion/Accordion.tsx +99 -94
- package/src/components/AtomixGlass/AtomixGlass.test.tsx +1 -1
- package/src/components/AtomixGlass/AtomixGlass.tsx +80 -39
- package/src/components/AtomixGlass/AtomixGlassContainer.tsx +103 -81
- package/src/components/AtomixGlass/GlassFilter.tsx +9 -16
- package/src/components/AtomixGlass/__snapshots__/AtomixGlass.test.tsx.snap +8 -7
- package/src/components/AtomixGlass/glass-utils.ts +6 -5
- package/src/components/AtomixGlass/shader-utils.ts +133 -52
- package/src/components/AtomixGlass/stories/Customization.stories.tsx +131 -0
- package/src/components/AtomixGlass/stories/Examples.stories.tsx +2957 -2853
- 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 +51 -36
- package/src/components/AtomixGlass/stories/{ShaderVariants.stories.tsx → Shaders.stories.tsx} +2 -2
- package/src/components/AtomixGlass/stories/shared-components.tsx +90 -190
- package/src/components/Avatar/Avatar.stories.tsx +195 -0
- package/src/components/Avatar/Avatar.tsx +58 -56
- package/src/components/Badge/Badge.stories.tsx +122 -352
- package/src/components/Badge/Badge.test.tsx +41 -41
- package/src/components/Badge/Badge.tsx +64 -62
- package/src/components/Block/Block.stories.tsx +30 -11
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +142 -23
- package/src/components/Breadcrumb/Breadcrumb.tsx +62 -60
- package/src/components/Button/Button.stories.tsx +454 -1126
- package/src/components/Button/Button.test.tsx +123 -0
- package/src/components/Button/Button.tsx +88 -60
- package/src/components/Button/ButtonGroup.stories.tsx +376 -215
- package/src/components/Button/ButtonGroup.tsx +4 -15
- package/src/components/Callout/Callout.stories.tsx +316 -568
- package/src/components/Card/Card.stories.tsx +292 -81
- package/src/components/Card/Card.tsx +30 -14
- package/src/components/Chart/AreaChart.tsx +1 -1
- package/src/components/Chart/CandlestickChart.tsx +23 -16
- package/src/components/Chart/Chart.stories.tsx +153 -16
- package/src/components/Chart/Chart.tsx +40 -44
- package/src/components/Chart/ChartRenderer.tsx +39 -12
- package/src/components/Chart/ChartToolbar.tsx +21 -5
- package/src/components/Chart/DonutChart.tsx +1 -1
- package/src/components/Chart/FunnelChart.tsx +4 -1
- package/src/components/Chart/GaugeChart.tsx +3 -1
- package/src/components/Chart/HeatmapChart.tsx +50 -37
- package/src/components/Chart/LineChart.tsx +3 -2
- package/src/components/Chart/MultiAxisChart.tsx +24 -16
- package/src/components/Chart/RadarChart.tsx +19 -17
- package/src/components/Chart/ScatterChart.tsx +29 -21
- package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +152 -66
- package/src/components/ColorModeToggle/ColorModeToggle.tsx +15 -3
- package/src/components/Countdown/Countdown.stories.tsx +114 -7
- package/src/components/DataTable/DataTable.stories.tsx +349 -144
- package/src/components/DataTable/DataTable.test.tsx +26 -148
- package/src/components/DataTable/DataTable.tsx +485 -456
- package/src/components/DatePicker/DatePicker.stories.tsx +310 -1066
- package/src/components/DatePicker/DatePicker.tsx +31 -26
- package/src/components/Dropdown/Dropdown.stories.tsx +153 -36
- package/src/components/Dropdown/Dropdown.tsx +313 -299
- package/src/components/EdgePanel/EdgePanel.stories.tsx +221 -25
- package/src/components/EdgePanel/EdgePanel.tsx +1 -3
- package/src/components/Footer/Footer.stories.tsx +396 -327
- package/src/components/Footer/Footer.tsx +130 -128
- package/src/components/Footer/FooterLink.tsx +2 -2
- package/src/components/Form/Checkbox.stories.tsx +140 -6
- package/src/components/Form/Checkbox.test.tsx +63 -0
- package/src/components/Form/Checkbox.tsx +122 -78
- package/src/components/Form/Form.stories.tsx +110 -19
- package/src/components/Form/FormGroup.stories.tsx +127 -4
- package/src/components/Form/Input.stories.tsx +22 -39
- package/src/components/Form/Input.test.tsx +38 -44
- package/src/components/Form/Radio.stories.tsx +146 -17
- package/src/components/Form/Radio.tsx +68 -66
- package/src/components/Form/Select.stories.tsx +140 -8
- package/src/components/Form/Select.tsx +184 -182
- package/src/components/Form/Textarea.stories.tsx +149 -6
- package/src/components/Form/Textarea.test.tsx +27 -32
- package/src/components/Hero/Hero.stories.tsx +372 -38
- package/src/components/Hero/Hero.tsx +201 -55
- package/src/components/Icon/index.ts +7 -1
- package/src/components/List/List.stories.tsx +141 -3
- package/src/components/List/List.tsx +19 -23
- package/src/components/Modal/Modal.stories.tsx +183 -43
- package/src/components/Modal/Modal.tsx +130 -127
- package/src/components/Navigation/Menu/MegaMenu.tsx +70 -70
- package/src/components/Navigation/Nav/NavDropdown.tsx +1 -5
- package/src/components/Navigation/SideMenu/SideMenu.stories.tsx +128 -28
- package/src/components/Navigation/SideMenu/SideMenu.tsx +5 -7
- package/src/components/Navigation/SideMenu/SideMenuItem.tsx +4 -5
- package/src/components/Pagination/Pagination.stories.tsx +7 -4
- package/src/components/Pagination/Pagination.tsx +199 -202
- package/src/components/PhotoViewer/PhotoViewer.tsx +4 -1
- package/src/components/Popover/Popover.stories.tsx +354 -97
- package/src/components/Popover/Popover.tsx +41 -37
- package/src/components/Progress/Progress.stories.tsx +160 -7
- package/src/components/River/River.stories.tsx +3 -2
- package/src/components/SectionIntro/SectionIntro.stories.tsx +239 -47
- package/src/components/Slider/Slider.stories.tsx +12 -4
- package/src/components/Spinner/Spinner.stories.tsx +104 -8
- package/src/components/Spinner/Spinner.test.tsx +23 -23
- package/src/components/Spinner/Spinner.tsx +43 -46
- package/src/components/Steps/Steps.stories.tsx +173 -42
- package/src/components/Tabs/Tabs.stories.tsx +141 -12
- package/src/components/Tabs/Tabs.tsx +74 -72
- package/src/components/Testimonial/Testimonial.stories.tsx +120 -3
- package/src/components/Todo/Todo.stories.tsx +198 -9
- package/src/components/Toggle/Toggle.stories.tsx +137 -36
- package/src/components/Toggle/Toggle.test.tsx +65 -70
- package/src/components/Toggle/Toggle.tsx +4 -1
- package/src/components/Tooltip/Tooltip.stories.tsx +194 -100
- package/src/components/Tooltip/Tooltip.tsx +104 -106
- package/src/components/Upload/Upload.stories.tsx +241 -150
- package/src/components/Upload/Upload.tsx +287 -283
- package/src/components/VideoPlayer/VideoPlayer.tsx +6 -1
- package/src/components/index.ts +13 -2
- package/src/layouts/Grid/Grid.stories.tsx +9 -3
- package/src/layouts/MasonryGrid/MasonryGrid.tsx +5 -1
- package/src/lib/README.md +2 -2
- package/src/lib/__tests__/theme-tools.test.ts +219 -0
- package/src/lib/composables/index.ts +2 -2
- package/src/lib/composables/shared-mouse-tracker.ts +13 -14
- package/src/lib/composables/useAtomixGlass.ts +126 -97
- package/src/lib/composables/useChartExport.ts +3 -8
- package/src/lib/composables/useDataTable.ts +72 -43
- package/src/lib/composables/useHero.ts +58 -14
- package/src/lib/composables/useHeroBackgroundSlider.ts +2 -9
- package/src/lib/composables/useInput.ts +10 -8
- package/src/lib/composables/useSideMenu.ts +6 -5
- package/src/lib/composables/useTooltip.ts +1 -2
- package/src/lib/composables/useVideoPlayer.ts +44 -35
- package/src/lib/config/index.ts +154 -154
- package/src/lib/constants/components.ts +9 -32
- package/src/lib/constants/cssVariables.ts +29 -29
- package/src/lib/hooks/__tests__/useComponentCustomization.test.ts +2 -6
- package/src/lib/hooks/index.ts +1 -1
- package/src/lib/hooks/useComponentCustomization.ts +11 -17
- package/src/lib/hooks/usePerformanceMonitor.ts +6 -7
- package/src/lib/patterns/__tests__/slots.test.ts +1 -1
- package/src/lib/patterns/index.ts +1 -1
- package/src/lib/patterns/slots.tsx +8 -13
- package/src/lib/storybook/InteractiveDemo.tsx +13 -18
- package/src/lib/storybook/PreviewContainer.tsx +1 -1
- package/src/lib/storybook/VariantsGrid.tsx +3 -7
- package/src/lib/storybook/index.ts +1 -1
- package/src/lib/theme/adapters/cssVariableMapper.ts +47 -74
- package/src/lib/theme/adapters/index.ts +3 -9
- package/src/lib/theme/adapters/themeAdapter.ts +41 -26
- package/src/lib/theme/config/index.ts +1 -1
- package/src/lib/theme/config/types.ts +2 -2
- package/src/lib/theme/config/validator.ts +10 -5
- package/src/lib/theme/constants/constants.ts +2 -2
- package/src/lib/theme/constants/index.ts +1 -2
- package/src/lib/theme/core/__tests__/createTheme.test.ts +20 -22
- package/src/lib/theme/core/composeTheme.ts +32 -26
- package/src/lib/theme/core/createTheme.ts +1 -1
- package/src/lib/theme/core/createThemeObject.ts +308 -301
- package/src/lib/theme/core/index.ts +3 -3
- package/src/lib/theme/devtools/CLI.ts +107 -105
- package/src/lib/theme/devtools/Comparator.tsx +50 -32
- package/src/lib/theme/devtools/DesignTokensCustomizer.stories.tsx +50 -48
- package/src/lib/theme/devtools/DesignTokensCustomizer.tsx +257 -63
- package/src/lib/theme/devtools/Inspector.tsx +75 -60
- package/src/lib/theme/devtools/LiveEditor.tsx +97 -76
- package/src/lib/theme/devtools/Preview.tsx +150 -106
- package/src/lib/theme/devtools/ThemeValidator.ts +29 -21
- package/src/lib/theme/devtools/index.ts +3 -9
- package/src/lib/theme/devtools/useHistory.ts +23 -21
- package/src/lib/theme/errors/errors.ts +12 -11
- package/src/lib/theme/errors/index.ts +2 -7
- package/src/lib/theme/generators/generateCSS.ts +9 -13
- package/src/lib/theme/generators/generateCSSNested.ts +1 -6
- package/src/lib/theme/generators/generateCSSVariables.ts +673 -630
- package/src/lib/theme/generators/index.ts +1 -4
- package/src/lib/theme/i18n/index.ts +1 -1
- package/src/lib/theme/i18n/rtl.ts +13 -13
- package/src/lib/theme/index.ts +7 -16
- package/src/lib/theme/runtime/ThemeApplicator.ts +4 -4
- package/src/lib/theme/runtime/ThemeContext.tsx +1 -1
- package/src/lib/theme/runtime/ThemeErrorBoundary.tsx +19 -23
- package/src/lib/theme/runtime/ThemeProvider.tsx +230 -239
- package/src/lib/theme/runtime/__tests__/ThemeProvider.integration.test.tsx +1 -1
- package/src/lib/theme/runtime/__tests__/ThemeProvider.test.tsx +24 -29
- package/src/lib/theme/runtime/index.ts +2 -5
- package/src/lib/theme/runtime/useTheme.ts +18 -18
- package/src/lib/theme/runtime/useThemeTokens.ts +22 -22
- package/src/lib/theme/test/testTheme.ts +15 -16
- package/src/lib/theme/tokens/index.ts +2 -7
- package/src/lib/theme/tokens/tokens.ts +25 -24
- package/src/lib/theme/types.ts +428 -411
- package/src/lib/theme/utils/__tests__/themeValidation.test.ts +3 -3
- package/src/lib/theme/utils/componentTheming.ts +18 -18
- package/src/lib/theme/utils/domUtils.ts +277 -289
- package/src/lib/theme/utils/index.ts +1 -2
- package/src/lib/theme/utils/injectCSS.ts +10 -14
- package/src/lib/theme/utils/naming.ts +20 -16
- package/src/lib/theme/utils/themeHelpers.ts +10 -12
- package/src/lib/theme/utils/themeUtils.ts +85 -86
- package/src/lib/theme/utils/themeValidation.ts +82 -33
- package/src/lib/theme-tools.ts +8 -6
- package/src/lib/types/components.ts +172 -71
- package/src/lib/types/partProps.ts +1 -1
- package/src/lib/utils/__tests__/csv.test.ts +45 -0
- package/src/lib/utils/componentUtils.ts +8 -12
- package/src/lib/utils/csv.ts +19 -0
- package/src/lib/utils/dataTableExport.ts +2 -15
- package/src/lib/utils/fontPreloader.ts +10 -19
- package/src/lib/utils/icons.ts +4 -1
- package/src/lib/utils/index.ts +2 -6
- package/src/lib/utils/memoryMonitor.ts +10 -8
- package/src/lib/utils/themeNaming.ts +2 -2
- package/src/styles/01-settings/_index.scss +1 -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.design-tokens.scss +61 -50
- package/src/styles/01-settings/_settings.navbar.scss +1 -1
- package/src/styles/01-settings/_settings.spacing.scss +3 -4
- package/src/styles/01-settings/_settings.tooltip.scss +1 -1
- package/src/styles/01-settings/_settings.typography.scss +4 -4
- package/src/styles/02-tools/_tools.button.scss +51 -21
- package/src/styles/02-tools/_tools.utility-api.scss +38 -12
- package/src/styles/03-generic/_generic.root.scss +4 -3
- package/src/styles/06-components/_components.accordion.scss +56 -14
- package/src/styles/06-components/_components.atomix-glass.scss +13 -9
- package/src/styles/06-components/_components.button.scss +16 -4
- package/src/styles/06-components/_components.callout.scss +27 -21
- package/src/styles/06-components/_components.card.scss +5 -14
- package/src/styles/06-components/_components.chart.scss +22 -19
- package/src/styles/06-components/_components.checkbox.scss +25 -17
- package/src/styles/06-components/_components.color-mode-toggle.scss +3 -1
- package/src/styles/06-components/_components.edge-panel.scss +9 -2
- package/src/styles/06-components/_components.footer.scss +1 -1
- package/src/styles/06-components/_components.side-menu.scss +5 -5
- package/src/styles/06-components/_components.toggle.scss +18 -0
- package/src/styles/06-components/_index.scss +1 -1
- package/src/styles/06-components/old.chart.styles.scss +0 -2
- package/src/styles/99-utilities/_index.scss +2 -0
- package/src/styles/99-utilities/_utilities.border.scss +69 -27
- package/src/styles/99-utilities/_utilities.display.scss +1 -1
- package/src/styles/99-utilities/_utilities.opacity.scss +10 -0
- package/src/styles/99-utilities/_utilities.position.scss +16 -9
- package/src/styles/99-utilities/_utilities.scss +2 -0
- package/src/styles/99-utilities/_utilities.sizes.scss +47 -18
- package/src/styles/99-utilities/_utilities.spacing.scss +118 -66
- package/src/styles/99-utilities/_utilities.text-gradient.scss +45 -0
- package/src/styles/99-utilities/_utilities.text.scss +67 -46
- 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/templates-original-backup.js +0 -1655
- package/scripts/cli/templates_backup.js +0 -684
- 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
package/CHANGELOG.md
CHANGED
|
@@ -1,14 +1,33 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.3.15] - 2026-02-20
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- Standardize component import paths, update build tool plugin import examples, and include themes in package distribution (fda94bac)
|
|
8
|
+
- Add TypeScript declaration files to package for build-tools (fc288744)
|
|
9
|
+
- Update type definitions and improve export documentation for build-tools (13a6dd2c)
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- Centralize build tool utilities for theme handling, component filtering, and logging (6acdcbfe)
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- Add `.js` extension to type import path in build tools definition (e0479944)
|
|
18
|
+
- Resolve duplicate identifiers in `AtomixGlass` (51d82d99)
|
|
19
|
+
|
|
3
20
|
## [2.0.0] - 2026-01-20
|
|
4
21
|
|
|
5
22
|
### Added
|
|
23
|
+
|
|
6
24
|
- **Spinner**: Added `aria-label` (default "Loading") and `role` (default "status") props for improved accessibility.
|
|
7
25
|
- **Badge**: Added `onRemove` callback and `aria-label` support. Providing `onRemove` automatically renders a close button.
|
|
8
26
|
- **Input/Textarea**: Added `defaultValue` prop for uncontrolled component support.
|
|
9
27
|
- **JSDoc**: Added `@default` tags to many component props for better developer experience and documentation.
|
|
10
28
|
|
|
11
29
|
### Changed (Breaking)
|
|
30
|
+
|
|
12
31
|
- **Standardized ARIA Props**: All ARIA-related props have been renamed from camelCase to kebab-case (e.g., `ariaLabel` -> `aria-label`) to align with native React/HTML standards.
|
|
13
32
|
- **Toggle Component**: Refactored API to follow standard React form patterns. Removed `initialOn`, `onToggleOn`, and `onToggleOff`. Added `checked`, `defaultChecked`, and `onChange`.
|
|
14
33
|
- **Rating Component**: Renamed `color` prop to `variant` for consistency with other components.
|
|
@@ -16,6 +35,7 @@
|
|
|
16
35
|
- **Callout Component**: Renamed `oneLine` to `compact` and `toast` to `isToast`.
|
|
17
36
|
|
|
18
37
|
### Fixed
|
|
38
|
+
|
|
19
39
|
- Fixed several accessibility issues across navigation components.
|
|
20
40
|
- Improved focus management in `Modal` component.
|
|
21
41
|
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
# Build Tool Integration Examples
|
|
2
|
+
|
|
3
|
+
This document provides practical examples of how to integrate Atomix with popular build tools. All examples include TypeScript support and comprehensive error handling.
|
|
4
|
+
|
|
5
|
+
## TypeScript Support
|
|
6
|
+
|
|
7
|
+
All build tools include full TypeScript definitions:
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import { type AtomixVitePluginOptions, type AtomixLoaderOptions, type AtomixRollupPluginOptions } from '@shohojdhara/atomix/build-tools';
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Vite Integration
|
|
14
|
+
|
|
15
|
+
### Basic Setup
|
|
16
|
+
|
|
17
|
+
```js
|
|
18
|
+
// vite.config.js
|
|
19
|
+
import { defineConfig } from 'vite';
|
|
20
|
+
import react from '@vitejs/plugin-react';
|
|
21
|
+
import atomixPlugin from '@shohojdhara/atomix/build-tools/vite-plugin.js';
|
|
22
|
+
|
|
23
|
+
export default defineConfig({
|
|
24
|
+
plugins: [
|
|
25
|
+
react(),
|
|
26
|
+
atomixPlugin({
|
|
27
|
+
theme: 'dark',
|
|
28
|
+
optimizeCss: true,
|
|
29
|
+
verbose: false
|
|
30
|
+
})
|
|
31
|
+
]
|
|
32
|
+
});
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
With TypeScript:
|
|
36
|
+
|
|
37
|
+
```ts
|
|
38
|
+
// vite.config.ts
|
|
39
|
+
import { defineConfig } from 'vite';
|
|
40
|
+
import react from '@vitejs/plugin-react';
|
|
41
|
+
import atomixPlugin, { type AtomixVitePluginOptions } from '@shohojdhara/atomix/build-tools/vite-plugin.js';
|
|
42
|
+
|
|
43
|
+
const atomixOptions: AtomixVitePluginOptions = {
|
|
44
|
+
theme: 'dark',
|
|
45
|
+
components: ['Button', 'Card'],
|
|
46
|
+
optimizeCss: true,
|
|
47
|
+
includeAtoms: false,
|
|
48
|
+
verbose: true
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export default defineConfig({
|
|
52
|
+
plugins: [react(), atomixPlugin(atomixOptions)]
|
|
53
|
+
});
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Advanced Setup
|
|
57
|
+
|
|
58
|
+
```js
|
|
59
|
+
// vite.config.js
|
|
60
|
+
import { defineConfig } from 'vite';
|
|
61
|
+
import react from '@vitejs/plugin-react';
|
|
62
|
+
import atomix from '@shohojdhara/atomix/build-tools';
|
|
63
|
+
|
|
64
|
+
export default defineConfig({
|
|
65
|
+
plugins: [
|
|
66
|
+
react(),
|
|
67
|
+
atomix.vitePlugin({
|
|
68
|
+
theme: 'custom-theme',
|
|
69
|
+
components: ['Button', 'Card', 'Modal'],
|
|
70
|
+
optimizeCss: true,
|
|
71
|
+
includeAtoms: true
|
|
72
|
+
})
|
|
73
|
+
],
|
|
74
|
+
css: {
|
|
75
|
+
preprocessorOptions: {
|
|
76
|
+
scss: {
|
|
77
|
+
// Add Atomix SCSS paths
|
|
78
|
+
additionalData: `@import "@shohojdhara/atomix/scss/settings";`
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Webpack Integration
|
|
86
|
+
|
|
87
|
+
### Basic Setup
|
|
88
|
+
|
|
89
|
+
```js
|
|
90
|
+
// webpack.config.js
|
|
91
|
+
const path = require('path');
|
|
92
|
+
|
|
93
|
+
module.exports = {
|
|
94
|
+
// ... other config
|
|
95
|
+
module: {
|
|
96
|
+
rules: [
|
|
97
|
+
{
|
|
98
|
+
test: /\.(js|jsx|ts|tsx)$/,
|
|
99
|
+
include: [
|
|
100
|
+
path.resolve(__dirname, 'src'),
|
|
101
|
+
path.resolve(__dirname, 'node_modules/@shohojdhara/atomix')
|
|
102
|
+
],
|
|
103
|
+
use: {
|
|
104
|
+
loader: path.resolve(__dirname, 'node_modules/@shohojdhara/atomix/build-tools/webpack-loader.js'),
|
|
105
|
+
options: {
|
|
106
|
+
includeAtoms: false,
|
|
107
|
+
components: ['Button', 'Input'],
|
|
108
|
+
excludeUnnecessaryStyles: true,
|
|
109
|
+
verbose: false
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
]
|
|
114
|
+
},
|
|
115
|
+
resolve: {
|
|
116
|
+
alias: {
|
|
117
|
+
'@shohojdhara/atomix': path.resolve(__dirname, 'node_modules/@shohojdhara/atomix')
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
With TypeScript:
|
|
124
|
+
|
|
125
|
+
```ts
|
|
126
|
+
// webpack.config.ts
|
|
127
|
+
import path from 'path';
|
|
128
|
+
import { type AtomixLoaderOptions } from '@shohojdhara/atomix/build-tools';
|
|
129
|
+
|
|
130
|
+
const atomixLoaderOptions: AtomixLoaderOptions = {
|
|
131
|
+
includeAtoms: false,
|
|
132
|
+
components: ['Button', 'Card', 'Input'],
|
|
133
|
+
excludeUnnecessaryStyles: true,
|
|
134
|
+
verbose: true
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
export default {
|
|
138
|
+
// ... other config
|
|
139
|
+
module: {
|
|
140
|
+
rules: [
|
|
141
|
+
{
|
|
142
|
+
test: /\.(js|jsx|ts|tsx)$/,
|
|
143
|
+
include: [
|
|
144
|
+
path.resolve(__dirname, 'src'),
|
|
145
|
+
path.resolve(__dirname, 'node_modules/@shohojdhara/atomix')
|
|
146
|
+
],
|
|
147
|
+
use: {
|
|
148
|
+
loader: path.resolve(__dirname, 'node_modules/@shohojdhara/atomix/build-tools/webpack-loader.js'),
|
|
149
|
+
options: atomixLoaderOptions
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
]
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### With CSS Processing
|
|
158
|
+
|
|
159
|
+
```js
|
|
160
|
+
// webpack.config.js
|
|
161
|
+
const path = require('path');
|
|
162
|
+
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
|
163
|
+
|
|
164
|
+
module.exports = {
|
|
165
|
+
// ... other config
|
|
166
|
+
plugins: [
|
|
167
|
+
new MiniCssExtractPlugin({
|
|
168
|
+
filename: '[name].[contenthash].css'
|
|
169
|
+
})
|
|
170
|
+
],
|
|
171
|
+
module: {
|
|
172
|
+
rules: [
|
|
173
|
+
{
|
|
174
|
+
test: /\.(js|jsx)$/,
|
|
175
|
+
include: [
|
|
176
|
+
path.resolve(__dirname, 'src'),
|
|
177
|
+
path.resolve(__dirname, 'node_modules/@shohojdhara/atomix')
|
|
178
|
+
],
|
|
179
|
+
use: [
|
|
180
|
+
'babel-loader',
|
|
181
|
+
{
|
|
182
|
+
loader: '@shohojdhara/atomix/build-tools/webpack-loader',
|
|
183
|
+
options: {
|
|
184
|
+
components: ['Button', 'Input', 'Card'],
|
|
185
|
+
includeAtoms: true
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
]
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
test: /\.css$/,
|
|
192
|
+
use: [
|
|
193
|
+
MiniCssExtractPlugin.loader,
|
|
194
|
+
'css-loader',
|
|
195
|
+
'postcss-loader'
|
|
196
|
+
]
|
|
197
|
+
}
|
|
198
|
+
]
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## Rollup Integration
|
|
204
|
+
|
|
205
|
+
### Basic Setup
|
|
206
|
+
|
|
207
|
+
```js
|
|
208
|
+
// rollup.config.js
|
|
209
|
+
import atomixPlugin from '@shohojdhara/atomix/build-tools/rollup-plugin.js';
|
|
210
|
+
|
|
211
|
+
export default {
|
|
212
|
+
input: 'src/index.js',
|
|
213
|
+
output: {
|
|
214
|
+
dir: 'dist',
|
|
215
|
+
format: 'es'
|
|
216
|
+
},
|
|
217
|
+
plugins: [
|
|
218
|
+
atomixPlugin({
|
|
219
|
+
theme: 'light',
|
|
220
|
+
optimize: true,
|
|
221
|
+
verbose: false
|
|
222
|
+
})
|
|
223
|
+
]
|
|
224
|
+
};
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
With TypeScript:
|
|
228
|
+
|
|
229
|
+
```ts
|
|
230
|
+
// rollup.config.ts
|
|
231
|
+
import atomixPlugin, { type AtomixRollupPluginOptions } from '@shohojdhara/atomix/build-tools/rollup-plugin.js';
|
|
232
|
+
|
|
233
|
+
const atomixOptions: AtomixRollupPluginOptions = {
|
|
234
|
+
theme: 'dark',
|
|
235
|
+
components: ['Button', 'Modal', 'Card'],
|
|
236
|
+
optimize: true,
|
|
237
|
+
includeAtoms: false,
|
|
238
|
+
verbose: true
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
export default {
|
|
242
|
+
input: 'src/main.js',
|
|
243
|
+
output: {
|
|
244
|
+
dir: 'dist',
|
|
245
|
+
format: 'es'
|
|
246
|
+
},
|
|
247
|
+
plugins: [atomixPlugin(atomixOptions)]
|
|
248
|
+
};
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Advanced Setup
|
|
252
|
+
|
|
253
|
+
```js
|
|
254
|
+
// rollup.config.js
|
|
255
|
+
import resolve from '@rollup/plugin-node-resolve';
|
|
256
|
+
import commonjs from '@rollup/plugin-commonjs';
|
|
257
|
+
import atomix from '@shohojdhara/atomix/build-tools';
|
|
258
|
+
|
|
259
|
+
export default {
|
|
260
|
+
input: 'src/main.js',
|
|
261
|
+
output: {
|
|
262
|
+
dir: 'dist',
|
|
263
|
+
format: 'es',
|
|
264
|
+
assetFileNames: (assetInfo) => {
|
|
265
|
+
if (assetInfo.name.endsWith('.css')) {
|
|
266
|
+
return 'assets/[name][extname]';
|
|
267
|
+
}
|
|
268
|
+
return '[name][extname]';
|
|
269
|
+
}
|
|
270
|
+
},
|
|
271
|
+
plugins: [
|
|
272
|
+
resolve(),
|
|
273
|
+
commonjs(),
|
|
274
|
+
atomix.rollupPlugin({
|
|
275
|
+
theme: 'dark',
|
|
276
|
+
components: ['Button', 'Modal', 'Card'],
|
|
277
|
+
optimize: true,
|
|
278
|
+
includeAtoms: false,
|
|
279
|
+
verbose: true
|
|
280
|
+
})
|
|
281
|
+
]
|
|
282
|
+
};
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
## Error Handling Examples
|
|
286
|
+
|
|
287
|
+
All plugins include comprehensive error handling:
|
|
288
|
+
|
|
289
|
+
```js
|
|
290
|
+
import atomixPlugin from '@shohojdhara/atomix/build-tools/vite-plugin.js';
|
|
291
|
+
|
|
292
|
+
// This will throw a validation error with helpful details
|
|
293
|
+
try {
|
|
294
|
+
const plugin = atomixPlugin({
|
|
295
|
+
theme: 123, // Invalid type - should be string
|
|
296
|
+
components: 'Button' // Invalid type - should be array
|
|
297
|
+
});
|
|
298
|
+
} catch (error) {
|
|
299
|
+
console.error(`${error.code}: ${error.message}`);
|
|
300
|
+
if (error.details) {
|
|
301
|
+
console.error('Details:', error.details);
|
|
302
|
+
}
|
|
303
|
+
if (error.suggestions) {
|
|
304
|
+
console.error('Suggestions:', error.suggestions);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
## Auto-Detection Integration
|
|
310
|
+
|
|
311
|
+
For simpler setups, you can use the auto-detection feature:
|
|
312
|
+
|
|
313
|
+
```js
|
|
314
|
+
// vite.config.js (works similarly for webpack.config.js or rollup.config.js)
|
|
315
|
+
import { initAutoIntegration } from '@shohojdhara/atomix/build-tools';
|
|
316
|
+
|
|
317
|
+
const atomixIntegration = initAutoIntegration({
|
|
318
|
+
theme: 'default',
|
|
319
|
+
optimize: true
|
|
320
|
+
});
|
|
321
|
+
|
|
322
|
+
export default {
|
|
323
|
+
plugins: [
|
|
324
|
+
// ... other plugins
|
|
325
|
+
atomixIntegration
|
|
326
|
+
]
|
|
327
|
+
};
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
## Environment-Specific Configurations
|
|
331
|
+
|
|
332
|
+
### Development vs Production
|
|
333
|
+
|
|
334
|
+
```js
|
|
335
|
+
// vite.config.js
|
|
336
|
+
import { defineConfig, loadEnv } from 'vite';
|
|
337
|
+
import atomix from '@shohojdhara/atomix/build-tools';
|
|
338
|
+
|
|
339
|
+
export default defineConfig(({ mode }) => {
|
|
340
|
+
const env = loadEnv(mode, process.cwd(), '');
|
|
341
|
+
|
|
342
|
+
return {
|
|
343
|
+
plugins: [
|
|
344
|
+
atomix.vitePlugin({
|
|
345
|
+
theme: env.VITE_ATOMIX_THEME || 'default',
|
|
346
|
+
optimizeCss: mode === 'production', // Only optimize in production
|
|
347
|
+
verbose: mode === 'development' // Show logs in development
|
|
348
|
+
})
|
|
349
|
+
]
|
|
350
|
+
};
|
|
351
|
+
});
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
## Troubleshooting
|
|
355
|
+
|
|
356
|
+
### Common Issues
|
|
357
|
+
|
|
358
|
+
1. **Theme Not Applied**
|
|
359
|
+
- Verify the theme name is valid by checking available themes:
|
|
360
|
+
```js
|
|
361
|
+
import { getAvailableThemes } from '@shohojdhara/atomix/build-tools';
|
|
362
|
+
console.log(getAvailableThemes());
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
2. **Components Not Optimizing**
|
|
366
|
+
- Make sure the component names match exactly (case-sensitive)
|
|
367
|
+
- Verify the components exist in the Atomix library
|
|
368
|
+
|
|
369
|
+
3. **Performance Issues**
|
|
370
|
+
- Disable verbose logging in production
|
|
371
|
+
- Limit the components list to only what you use
|
|
372
|
+
- Use the optimization features appropriately
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
# Atomix Build Tool Integrations
|
|
2
|
+
|
|
3
|
+
This directory contains plugins and loaders for integrating the Atomix design system with popular build tools. All plugins provide comprehensive type safety, error handling, and optimization features.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- ✅ **Full TypeScript Support**: Comprehensive type definitions included
|
|
8
|
+
- ✅ **Robust Error Handling**: Custom error classes with detailed diagnostics
|
|
9
|
+
- ✅ **Component Optimization**: Tree-shaking and selective component imports
|
|
10
|
+
- ✅ **Theme Integration**: Dynamic theme switching and CSS variable support
|
|
11
|
+
- ✅ **Validation**: Runtime validation of all configuration options
|
|
12
|
+
- ✅ **Verbose Logging**: Detailed logging for debugging and monitoring
|
|
13
|
+
|
|
14
|
+
## Available Integrations
|
|
15
|
+
|
|
16
|
+
### Vite Plugin
|
|
17
|
+
|
|
18
|
+
The Vite plugin provides seamless integration of Atomix components and styles into Vite projects.
|
|
19
|
+
|
|
20
|
+
#### Installation
|
|
21
|
+
|
|
22
|
+
The build tools are included with the main Atomix package:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm install @shohojdhara/atomix --save-dev
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
#### Type Safety
|
|
29
|
+
|
|
30
|
+
TypeScript definitions are automatically included. For enhanced IDE support:
|
|
31
|
+
|
|
32
|
+
```ts
|
|
33
|
+
// vite.config.ts
|
|
34
|
+
import { defineConfig } from 'vite';
|
|
35
|
+
import atomixPlugin, { type AtomixVitePluginOptions } from '@shohojdhara/atomix/build-tools';
|
|
36
|
+
|
|
37
|
+
const options: AtomixVitePluginOptions = {
|
|
38
|
+
theme: 'dark',
|
|
39
|
+
components: ['Button', 'Card'],
|
|
40
|
+
optimizeCss: true,
|
|
41
|
+
includeAtoms: false,
|
|
42
|
+
verbose: true,
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export default defineConfig({
|
|
46
|
+
plugins: [atomixPlugin(options)],
|
|
47
|
+
});
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
#### Usage
|
|
51
|
+
|
|
52
|
+
```js
|
|
53
|
+
// vite.config.js
|
|
54
|
+
import { defineConfig } from 'vite';
|
|
55
|
+
import { vitePlugin as atomixPlugin } from '@shohojdhara/atomix/build-tools';
|
|
56
|
+
|
|
57
|
+
export default defineConfig({
|
|
58
|
+
plugins: [
|
|
59
|
+
atomixPlugin({
|
|
60
|
+
theme: 'dark', // Specify theme ('default', 'dark', 'light')
|
|
61
|
+
components: ['Button', 'Card'], // Specific components to optimize
|
|
62
|
+
optimizeCss: true, // Enable CSS optimization
|
|
63
|
+
includeAtoms: false, // Include atomic styles
|
|
64
|
+
}),
|
|
65
|
+
],
|
|
66
|
+
});
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
#### Features
|
|
70
|
+
|
|
71
|
+
- Automatic theme injection during development
|
|
72
|
+
- CSS optimization for production builds
|
|
73
|
+
- Component-specific imports optimization
|
|
74
|
+
- Hot module replacement support
|
|
75
|
+
|
|
76
|
+
### Webpack Loader
|
|
77
|
+
|
|
78
|
+
The Webpack loader enables processing of Atomix components and styles in Webpack projects.
|
|
79
|
+
|
|
80
|
+
#### Installation
|
|
81
|
+
|
|
82
|
+
The build tools are included with the main Atomix package:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
npm install @shohojdhara/atomix --save-dev
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
#### Type Safety
|
|
89
|
+
|
|
90
|
+
```ts
|
|
91
|
+
// webpack.config.ts
|
|
92
|
+
import { type AtomixLoaderOptions } from '@shohojdhara/atomix/build-tools';
|
|
93
|
+
|
|
94
|
+
const atomixLoaderOptions: AtomixLoaderOptions = {
|
|
95
|
+
includeAtoms: false,
|
|
96
|
+
components: ['Button', 'Input'],
|
|
97
|
+
excludeUnnecessaryStyles: true,
|
|
98
|
+
verbose: true,
|
|
99
|
+
};
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
#### Usage
|
|
103
|
+
|
|
104
|
+
```js
|
|
105
|
+
// webpack.config.js
|
|
106
|
+
module.exports = {
|
|
107
|
+
module: {
|
|
108
|
+
rules: [
|
|
109
|
+
{
|
|
110
|
+
test: /\.(js|jsx)$/,
|
|
111
|
+
include: [path.resolve(__dirname, 'node_modules/@shohojdhara/atomix')],
|
|
112
|
+
use: {
|
|
113
|
+
loader: require.resolve('@shohojdhara/atomix/build-tools/webpack-loader'),
|
|
114
|
+
options: {
|
|
115
|
+
includeAtoms: false, // Include atomic styles
|
|
116
|
+
components: ['Button', 'Input'], // Specific components to include
|
|
117
|
+
excludeUnnecessaryStyles: true, // Remove unused styles
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
],
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
#### Features
|
|
127
|
+
|
|
128
|
+
- Component import optimization
|
|
129
|
+
- Tree-shaking enhancement
|
|
130
|
+
- Conditional atom inclusion
|
|
131
|
+
- Style optimization
|
|
132
|
+
|
|
133
|
+
### Rollup Plugin
|
|
134
|
+
|
|
135
|
+
The Rollup plugin provides integration for projects using Rollup as their build tool.
|
|
136
|
+
|
|
137
|
+
#### Installation
|
|
138
|
+
|
|
139
|
+
The build tools are included with the main Atomix package:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
npm install @shohojdhara/atomix --save-dev
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
#### Type Safety
|
|
146
|
+
|
|
147
|
+
```ts
|
|
148
|
+
// rollup.config.ts
|
|
149
|
+
import { type AtomixRollupPluginOptions } from '@shohojdhara/atomix/build-tools';
|
|
150
|
+
|
|
151
|
+
const atomixOptions: AtomixRollupPluginOptions = {
|
|
152
|
+
theme: 'default',
|
|
153
|
+
components: [],
|
|
154
|
+
optimize: true,
|
|
155
|
+
includeAtoms: false,
|
|
156
|
+
verbose: false,
|
|
157
|
+
};
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
#### Usage
|
|
161
|
+
|
|
162
|
+
```js
|
|
163
|
+
// rollup.config.js
|
|
164
|
+
import { rollupPlugin as atomixPlugin } from '@shohojdhara/atomix/build-tools';
|
|
165
|
+
|
|
166
|
+
export default {
|
|
167
|
+
input: 'src/index.js',
|
|
168
|
+
output: {
|
|
169
|
+
dir: 'dist',
|
|
170
|
+
format: 'es',
|
|
171
|
+
},
|
|
172
|
+
plugins: [
|
|
173
|
+
atomixPlugin({
|
|
174
|
+
theme: 'default', // Specify theme
|
|
175
|
+
components: [], // Specific components to include
|
|
176
|
+
optimize: true, // Enable optimizations
|
|
177
|
+
includeAtoms: false, // Include atomic styles
|
|
178
|
+
verbose: false, // Enable verbose logging
|
|
179
|
+
}),
|
|
180
|
+
],
|
|
181
|
+
};
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
#### Features
|
|
185
|
+
|
|
186
|
+
- Component import resolution
|
|
187
|
+
- Bundle optimization
|
|
188
|
+
- Theme-specific CSS processing
|
|
189
|
+
- Virtual module generation
|
|
190
|
+
|
|
191
|
+
## Common Options
|
|
192
|
+
|
|
193
|
+
All plugins support these common options:
|
|
194
|
+
|
|
195
|
+
- `theme`: Specifies which theme to use (default: 'default')
|
|
196
|
+
- `components`: Array of specific components to include (default: [])
|
|
197
|
+
- `optimize`: Enables optimization features (default: depends on plugin)
|
|
198
|
+
- `includeAtoms`: Includes atomic styles (default: false)
|
|
199
|
+
- `verbose`: Enable detailed logging for debugging (default: false)
|
|
200
|
+
|
|
201
|
+
## Error Handling
|
|
202
|
+
|
|
203
|
+
All plugins include comprehensive error handling with custom error types:
|
|
204
|
+
|
|
205
|
+
```js
|
|
206
|
+
try {
|
|
207
|
+
const plugin = atomixPlugin({
|
|
208
|
+
theme: 'nonexistent-theme', // This will throw a validation error
|
|
209
|
+
components: ['Button'],
|
|
210
|
+
});
|
|
211
|
+
} catch (error) {
|
|
212
|
+
if (error.code === 'THEME_NOT_FOUND') {
|
|
213
|
+
console.error('Theme not found:', error.message);
|
|
214
|
+
console.log('Available themes:', error.details.availableThemes);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Common error codes:
|
|
220
|
+
|
|
221
|
+
- `INVALID_THEME_TYPE`: Theme option is not a string
|
|
222
|
+
- `EMPTY_THEME`: Theme option is empty
|
|
223
|
+
- `THEME_NOT_FOUND`: Specified theme doesn't exist
|
|
224
|
+
- `INVALID_COMPONENTS_TYPE`: Components option is not an array
|
|
225
|
+
- `INVALID_COMPONENT_NAMES`: Component names are not strings
|
|
226
|
+
- `COMPONENTS_NOT_FOUND`: Some requested components don't exist
|
|
227
|
+
|
|
228
|
+
## Best Practices
|
|
229
|
+
|
|
230
|
+
1. **Optimize for Production**: Use the optimization features to reduce bundle size
|
|
231
|
+
2. **Select Components Wisely**: Only include the components you actually use
|
|
232
|
+
3. **Theme Management**: Specify your theme at build time to optimize CSS delivery
|
|
233
|
+
4. **Tree Shaking**: Ensure your bundler supports tree shaking to remove unused code
|
|
234
|
+
5. **Validation**: Always validate your configuration in development
|
|
235
|
+
6. **Logging**: Enable verbose logging during troubleshooting
|
|
236
|
+
7. **Type Safety**: Use TypeScript definitions for better IDE support and early error detection
|
|
237
|
+
|
|
238
|
+
## Troubleshooting
|
|
239
|
+
|
|
240
|
+
- If you encounter issues with theme resolution, ensure the specified theme exists in your Atomix installation
|
|
241
|
+
- For problems with component imports, verify that component names match exactly
|
|
242
|
+
- Enable verbose logging to get more information about the processing steps
|