@shohojdhara/atomix 0.3.5 → 0.3.7
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/README.md +101 -199
- package/atomix.config.ts +241 -0
- package/dist/atomix.css +260 -179
- package/dist/atomix.css.map +1 -1
- package/dist/atomix.min.css +250 -179
- package/dist/atomix.min.css.map +1 -1
- package/dist/charts.js +69 -166
- package/dist/charts.js.map +1 -1
- package/dist/core.js +184 -263
- package/dist/core.js.map +1 -1
- package/dist/forms.js +55 -131
- package/dist/forms.js.map +1 -1
- package/dist/heavy.js +184 -263
- package/dist/heavy.js.map +1 -1
- package/dist/index.d.ts +1831 -1657
- package/dist/index.esm.js +4497 -4318
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +4510 -4328
- 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 +1431 -1472
- package/dist/theme.js +4175 -4138
- package/dist/theme.js.map +1 -1
- package/package.json +6 -20
- package/src/components/Accordion/Accordion.stories.tsx +50 -17
- package/src/components/AtomixGlass/AtomixGlass.tsx +128 -322
- package/src/components/AtomixGlass/AtomixGlassContainer.tsx +12 -5
- package/src/components/AtomixGlass/stories/AtomixGlass.stories.tsx +1 -32
- package/src/components/AtomixGlass/stories/Examples.stories.tsx +2 -2
- package/src/components/AtomixGlass/stories/shared-components.tsx +0 -31
- package/src/components/Avatar/Avatar.stories.tsx +7 -0
- package/src/components/Badge/Badge.stories.tsx +91 -13
- package/src/components/Block/Block.stories.tsx +7 -23
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +7 -0
- package/src/components/Button/Button.stories.tsx +141 -22
- package/src/components/Button/Button.tsx +85 -167
- package/src/components/Button/ButtonGroup.stories.tsx +315 -0
- package/src/components/Button/ButtonGroup.tsx +67 -0
- package/src/components/Button/index.ts +2 -0
- package/src/components/Callout/Callout.stories.tsx +8 -6
- package/src/components/Card/Card.stories.tsx +82 -28
- package/src/components/Chart/AnimatedChart.tsx +0 -1
- package/src/components/Chart/AreaChart.tsx +0 -1
- package/src/components/Chart/BarChart.tsx +0 -1
- package/src/components/Chart/BubbleChart.tsx +0 -1
- package/src/components/Chart/CandlestickChart.tsx +0 -1
- package/src/components/Chart/Chart.stories.tsx +5 -7
- package/src/components/Chart/Chart.tsx +0 -16
- package/src/components/Chart/ChartRenderer.tsx +1 -1
- package/src/components/Chart/DonutChart.tsx +0 -1
- package/src/components/Chart/FunnelChart.tsx +0 -1
- package/src/components/Chart/GaugeChart.tsx +0 -1
- package/src/components/Chart/HeatmapChart.tsx +0 -1
- package/src/components/Chart/LineChart.tsx +0 -1
- package/src/components/Chart/MultiAxisChart.tsx +0 -1
- package/src/components/Chart/PieChart.tsx +0 -1
- package/src/components/Chart/RadarChart.tsx +0 -1
- package/src/components/Chart/ScatterChart.tsx +0 -1
- package/src/components/Chart/WaterfallChart.tsx +0 -1
- package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +7 -0
- package/src/components/DataTable/DataTable.stories.tsx +23 -16
- package/src/components/DatePicker/DatePicker.stories.tsx +27 -19
- package/src/components/Dropdown/Dropdown.stories.tsx +11 -19
- package/src/components/EdgePanel/EdgePanel.stories.tsx +1 -0
- package/src/components/Footer/Footer.stories.tsx +8 -6
- package/src/components/Footer/FooterLink.tsx +9 -2
- package/src/components/Form/Checkbox.stories.tsx +7 -0
- package/src/components/Form/Form.stories.tsx +7 -0
- package/src/components/Form/FormGroup.stories.tsx +9 -1
- package/src/components/Form/Input.stories.tsx +69 -16
- package/src/components/Form/Radio.stories.tsx +9 -1
- package/src/components/Form/Select.stories.tsx +9 -1
- package/src/components/Form/Textarea.stories.tsx +10 -2
- package/src/components/Hero/Hero.stories.tsx +7 -0
- package/src/components/List/List.stories.tsx +7 -0
- package/src/components/Messages/Messages.stories.tsx +8 -7
- package/src/components/Modal/Modal.stories.tsx +17 -6
- package/src/components/Navigation/Menu/Menu.stories.tsx +7 -0
- package/src/components/Navigation/Nav/Nav.stories.tsx +7 -0
- package/src/components/Navigation/Navbar/Navbar.stories.tsx +1 -0
- package/src/components/Navigation/SideMenu/SideMenu.stories.tsx +1 -1
- package/src/components/Pagination/Pagination.stories.tsx +188 -111
- package/src/components/Pagination/Pagination.tsx +83 -3
- package/src/components/PhotoViewer/PhotoViewer.stories.tsx +10 -5
- package/src/components/Popover/Popover.stories.tsx +191 -115
- package/src/components/ProductReview/ProductReview.stories.tsx +80 -58
- package/src/components/Progress/Progress.stories.tsx +79 -49
- package/src/components/Rating/Rating.stories.tsx +109 -84
- package/src/components/River/River.stories.tsx +194 -114
- package/src/components/SectionIntro/SectionIntro.stories.tsx +19 -9
- package/src/components/Slider/Slider.stories.tsx +7 -0
- package/src/components/Spinner/Spinner.stories.tsx +15 -11
- package/src/components/Steps/Steps.stories.tsx +132 -98
- package/src/components/Tabs/Tabs.stories.tsx +163 -112
- package/src/components/Testimonial/Testimonial.stories.tsx +114 -68
- package/src/components/Todo/Todo.stories.tsx +38 -12
- package/src/components/Toggle/Toggle.stories.tsx +61 -28
- package/src/components/Tooltip/Tooltip.stories.tsx +318 -200
- package/src/components/Upload/Upload.stories.tsx +122 -84
- package/src/components/VideoPlayer/VideoPlayer.stories.tsx +7 -24
- package/src/components/index.ts +1 -0
- package/src/lib/composables/useAtomixGlass.ts +9 -10
- package/src/lib/composables/useNavbar.ts +0 -10
- package/src/lib/config/loader.ts +4 -4
- package/src/lib/constants/components.ts +17 -0
- package/src/lib/hooks/useComponentCustomization.ts +1 -1
- package/src/lib/hooks/usePerformanceMonitor.ts +1 -1
- package/src/lib/hooks/useThemeTokens.ts +105 -0
- package/src/lib/theme/README.md +174 -0
- package/src/lib/theme/adapters/index.ts +31 -0
- package/src/lib/theme/adapters/themeAdapter.ts +287 -0
- package/src/lib/theme/config/__tests__/configLoader.test.ts +207 -0
- package/src/lib/theme/config/configLoader.ts +95 -0
- package/src/lib/theme/config/loader.ts +37 -54
- package/src/lib/theme/config/types.ts +2 -2
- package/src/lib/theme/config/validator.ts +15 -91
- package/src/lib/theme/{constants.ts → constants/constants.ts} +1 -19
- package/src/lib/theme/constants/index.ts +8 -0
- package/src/lib/theme/core/ThemeRegistry.ts +75 -266
- package/src/lib/theme/core/__tests__/createTheme.test.ts +132 -0
- package/src/lib/theme/core/composeTheme.ts +105 -0
- package/src/lib/theme/core/createTheme.ts +108 -0
- package/src/lib/theme/{createTheme.ts → core/createThemeObject.ts} +12 -8
- package/src/lib/theme/core/index.ts +19 -19
- package/src/lib/theme/devtools/Comparator.tsx +346 -22
- package/src/lib/theme/devtools/IMPROVEMENTS.md +139 -38
- package/src/lib/theme/devtools/Inspector.tsx +335 -51
- package/src/lib/theme/devtools/LiveEditor.tsx +478 -107
- package/src/lib/theme/devtools/Preview.tsx +471 -221
- package/src/lib/theme/{core → devtools}/ThemeValidator.ts +1 -1
- package/src/lib/theme/devtools/index.ts +14 -4
- package/src/lib/theme/devtools/useHistory.ts +130 -0
- package/src/lib/theme/{errors.ts → errors/errors.ts} +1 -1
- package/src/lib/theme/errors/index.ts +12 -0
- package/src/lib/theme/generators/cssFile.ts +79 -0
- package/src/lib/theme/generators/generateCSS.ts +89 -0
- package/src/lib/theme/generators/generateCSSNested.ts +130 -0
- package/src/lib/theme/{generateCSSVariables.ts → generators/generateCSSVariables.ts} +3 -13
- package/src/lib/theme/generators/index.ts +25 -0
- package/src/lib/theme/i18n/rtl.ts +5 -6
- package/src/lib/theme/index.ts +149 -19
- package/src/lib/theme/runtime/ThemeApplicator.ts +53 -112
- package/src/lib/theme/{ThemeContext.tsx → runtime/ThemeContext.tsx} +1 -1
- package/src/lib/theme/runtime/ThemeErrorBoundary.tsx +5 -5
- package/src/lib/theme/runtime/ThemeProvider.tsx +266 -282
- package/src/lib/theme/runtime/index.ts +2 -2
- package/src/lib/theme/runtime/useTheme.ts +1 -2
- package/src/lib/theme/runtime/useThemeTokens.ts +131 -0
- package/src/lib/theme/test/testTheme.ts +385 -0
- package/src/lib/theme/tokens/index.ts +12 -0
- package/src/lib/theme/tokens/tokens.ts +721 -0
- package/src/lib/theme/types.ts +6 -42
- package/src/lib/theme/utils/componentTheming.ts +132 -0
- package/src/lib/theme/{utils.ts → utils/domUtils.ts} +2 -2
- package/src/lib/theme/utils/index.ts +11 -0
- package/src/lib/theme/utils/injectCSS.ts +90 -0
- package/src/lib/theme/utils/naming.ts +100 -0
- package/src/lib/theme/utils/themeHelpers.ts +78 -0
- package/src/lib/theme/{themeUtils.ts → utils/themeUtils.ts} +7 -7
- package/src/lib/theme-tools.ts +7 -8
- package/src/lib/types/components.ts +40 -130
- package/src/lib/utils/componentUtils.ts +2 -2
- package/src/lib/utils/memoryMonitor.ts +3 -3
- package/src/lib/utils/themeNaming.ts +135 -0
- package/src/styles/01-settings/_settings.design-tokens.scss +4 -1
- package/src/styles/02-tools/_tools.button.scss +66 -79
- package/src/styles/06-components/_components.atomix-glass.scss +13 -3
- package/src/styles/06-components/_components.pagination.scss +88 -0
- package/scripts/sync-theme-config.js +0 -309
- package/src/lib/theme/composeTheme.ts +0 -370
- package/src/lib/theme/core/ThemeCache.ts +0 -283
- package/src/lib/theme/core/ThemeEngine.test.ts +0 -146
- package/src/lib/theme/core/ThemeEngine.ts +0 -665
- package/src/lib/theme/createThemeFromConfig.ts +0 -132
- package/src/lib/theme/devtools/CLI.ts +0 -364
- package/src/lib/theme/runtime/ThemeManager.test.ts +0 -192
- package/src/lib/theme/runtime/ThemeManager.ts +0 -446
- package/src/styles/03-generic/_generated-root.css +0 -26
- package/src/themes/README.md +0 -442
- package/src/themes/themes.config.js +0 -68
- /package/src/lib/theme/{cssVariableMapper.ts → adapters/cssVariableMapper.ts} +0 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core Theme Functions
|
|
3
|
+
*
|
|
4
|
+
* Simplified theme system that handles both DesignTokens and Theme objects.
|
|
5
|
+
* Config-first approach: loads from atomix.config.ts when no input is provided.
|
|
6
|
+
* Config file is required for automatic loading.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { DesignTokens } from '../tokens/tokens';
|
|
10
|
+
import type { Theme } from '../types';
|
|
11
|
+
import type { GenerateCSSVariablesOptions } from '../generators/generateCSS';
|
|
12
|
+
import { createTokens } from '../tokens/tokens';
|
|
13
|
+
import { generateCSSVariables } from '../generators/generateCSS';
|
|
14
|
+
import { themeToDesignTokens } from '../adapters/themeAdapter';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Create theme CSS from tokens or Theme object
|
|
18
|
+
*
|
|
19
|
+
* **Config-First Approach**: If no input is provided, loads from `atomix.config.ts`.
|
|
20
|
+
* Config file is required for automatic loading.
|
|
21
|
+
*
|
|
22
|
+
* @param input - DesignTokens (partial), Theme object, or undefined (loads from config)
|
|
23
|
+
* @param options - CSS generation options (prefix is automatically read from config if not provided)
|
|
24
|
+
* @returns CSS string with custom properties
|
|
25
|
+
* @throws Error if config loading fails when no input is provided
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* // Loads from atomix.config.ts (config file required)
|
|
30
|
+
* const css = createTheme();
|
|
31
|
+
*
|
|
32
|
+
* // Using DesignTokens
|
|
33
|
+
* const css = createTheme({
|
|
34
|
+
* 'primary': '#7c3aed',
|
|
35
|
+
* 'spacing-4': '1rem',
|
|
36
|
+
* });
|
|
37
|
+
*
|
|
38
|
+
* // Using Theme object
|
|
39
|
+
* const theme = createThemeObject({ palette: { primary: { main: '#7c3aed' } } });
|
|
40
|
+
* const css = createTheme(theme);
|
|
41
|
+
*
|
|
42
|
+
* // With custom options
|
|
43
|
+
* const css = createTheme(undefined, { prefix: 'myapp', selector: ':root' });
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export function createTheme(
|
|
47
|
+
input?: Partial<DesignTokens> | Theme,
|
|
48
|
+
options?: GenerateCSSVariablesOptions
|
|
49
|
+
): string {
|
|
50
|
+
// Determine tokens based on input
|
|
51
|
+
let tokens: Partial<DesignTokens>;
|
|
52
|
+
|
|
53
|
+
if (!input) {
|
|
54
|
+
// Check if we're in a browser environment
|
|
55
|
+
if (typeof window !== 'undefined') {
|
|
56
|
+
throw new Error('createTheme: No input provided and config loading is not available in browser environment. Please provide tokens explicitly or use Node.js/SSR environment.');
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Load from config when no input provided
|
|
60
|
+
// Using dynamic import in a way that's more compatible with bundlers
|
|
61
|
+
let loadThemeFromConfigSync: any;
|
|
62
|
+
let loadAtomixConfig: any;
|
|
63
|
+
|
|
64
|
+
try {
|
|
65
|
+
// Use dynamic require but only in Node.js environments
|
|
66
|
+
// This approach allows bundlers to properly handle external dependencies
|
|
67
|
+
const configLoaderModule = require('../config/configLoader');
|
|
68
|
+
const loaderModule = require('../../config/loader');
|
|
69
|
+
|
|
70
|
+
loadThemeFromConfigSync = configLoaderModule.loadThemeFromConfigSync;
|
|
71
|
+
loadAtomixConfig = loaderModule.loadAtomixConfig;
|
|
72
|
+
|
|
73
|
+
tokens = loadThemeFromConfigSync();
|
|
74
|
+
|
|
75
|
+
// Get prefix from config if needed
|
|
76
|
+
if (!options?.prefix) {
|
|
77
|
+
try {
|
|
78
|
+
const config = loadAtomixConfig({ configPath: 'atomix.config.ts', required: false });
|
|
79
|
+
options = { ...options, prefix: config?.prefix || 'atomix' };
|
|
80
|
+
} catch (error) {
|
|
81
|
+
// If config loading fails, use default prefix
|
|
82
|
+
options = { ...options, prefix: 'atomix' };
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
} catch (error) {
|
|
86
|
+
throw new Error('createTheme: No input provided and config loading is not available in this environment. Please provide tokens explicitly.');
|
|
87
|
+
}
|
|
88
|
+
} else if (isThemeObject(input)) {
|
|
89
|
+
// Convert Theme object to DesignTokens
|
|
90
|
+
tokens = themeToDesignTokens(input);
|
|
91
|
+
} else {
|
|
92
|
+
// Use DesignTokens directly
|
|
93
|
+
tokens = input;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Merge with defaults and generate CSS
|
|
97
|
+
const allTokens = createTokens(tokens);
|
|
98
|
+
|
|
99
|
+
// Get prefix from options or use default
|
|
100
|
+
const prefix = options?.prefix ?? 'atomix';
|
|
101
|
+
|
|
102
|
+
return generateCSSVariables(allTokens, { ...options, prefix });
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Helper functions to simplify main function
|
|
106
|
+
function isThemeObject(input: any): input is Theme {
|
|
107
|
+
return input?.__isJSTheme === true || (input?.palette && input?.typography);
|
|
108
|
+
}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* createThemeObject - Create a theme object with computed values
|
|
3
3
|
*
|
|
4
4
|
* Similar to Material-UI's createTheme, this function accepts theme configuration
|
|
5
5
|
* options and returns a complete theme object with computed values.
|
|
6
6
|
*
|
|
7
|
+
* NOTE: For most use cases, use the simple theme system's `createTheme` instead,
|
|
8
|
+
* which generates CSS from DesignTokens. This function is for advanced use cases
|
|
9
|
+
* that need the full Theme object structure.
|
|
10
|
+
*
|
|
7
11
|
* @example
|
|
8
12
|
* ```typescript
|
|
9
|
-
* const theme =
|
|
13
|
+
* const theme = createThemeObject({
|
|
10
14
|
* palette: {
|
|
11
15
|
* primary: { main: '#7AFFD7' },
|
|
12
16
|
* secondary: { main: '#FF5733' },
|
|
@@ -31,8 +35,8 @@ import type {
|
|
|
31
35
|
TransitionOptions,
|
|
32
36
|
ZIndexOptions,
|
|
33
37
|
BorderRadiusOptions,
|
|
34
|
-
} from '
|
|
35
|
-
import { hexToRgb, getLuminance, getContrastText, lighten, darken, createSpacing } from '
|
|
38
|
+
} from '../types';
|
|
39
|
+
import { hexToRgb, getLuminance, getContrastText, lighten, darken, createSpacing } from '../utils/themeUtils';
|
|
36
40
|
import { deepMerge } from './composeTheme';
|
|
37
41
|
|
|
38
42
|
// ============================================================================
|
|
@@ -291,7 +295,7 @@ function createBreakpoints(breakpointsInput?: BreakpointsOptions): Theme['breakp
|
|
|
291
295
|
* @param options - Theme configuration options
|
|
292
296
|
* @returns Complete theme object
|
|
293
297
|
*/
|
|
294
|
-
export function
|
|
298
|
+
export function createThemeObject(...options: ThemeOptions[]): Theme {
|
|
295
299
|
// Merge all options
|
|
296
300
|
const mergedOptions = options.reduce((acc, option) => deepMerge(acc, option), {} as ThemeOptions);
|
|
297
301
|
|
|
@@ -323,8 +327,8 @@ export function createTheme(...options: ThemeOptions[]): Theme {
|
|
|
323
327
|
|
|
324
328
|
// Create typography
|
|
325
329
|
const typography: Theme['typography'] = deepMerge(
|
|
326
|
-
{ ...DEFAULT_TYPOGRAPHY } as
|
|
327
|
-
(mergedOptions.typography || {}) as
|
|
330
|
+
{ ...DEFAULT_TYPOGRAPHY } as Partial<Theme['typography']>,
|
|
331
|
+
(mergedOptions.typography || {}) as Partial<Theme['typography']>
|
|
328
332
|
) as Theme['typography'];
|
|
329
333
|
|
|
330
334
|
// Create spacing
|
|
@@ -385,4 +389,4 @@ export function createTheme(...options: ThemeOptions[]): Theme {
|
|
|
385
389
|
return theme;
|
|
386
390
|
}
|
|
387
391
|
|
|
388
|
-
export default
|
|
392
|
+
export default createThemeObject;
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Theme
|
|
2
|
+
* Core Theme Engine
|
|
3
3
|
*
|
|
4
|
-
* Core
|
|
4
|
+
* Core theme creation, composition, and registry functionality
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
10
|
-
export { ThemeValidator } from './ThemeValidator';
|
|
7
|
+
export { createTheme } from './createTheme';
|
|
8
|
+
export { createThemeObject } from './createThemeObject';
|
|
9
|
+
export { deepMerge, mergeTheme, extendTheme } from './composeTheme';
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
11
|
+
// Simplified Theme Registry API
|
|
12
|
+
export {
|
|
13
|
+
createThemeRegistry,
|
|
14
|
+
registerTheme,
|
|
15
|
+
unregisterTheme,
|
|
16
|
+
hasTheme,
|
|
17
|
+
getTheme,
|
|
18
|
+
getAllThemes,
|
|
19
|
+
getThemeIds,
|
|
20
|
+
clearThemes,
|
|
21
|
+
getThemeCount,
|
|
22
|
+
type ThemeRegistry,
|
|
23
|
+
type ThemeMetadata
|
|
24
|
+
} from './ThemeRegistry';
|