@shohojdhara/atomix 0.3.15 → 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/build-tools/index.d.ts +31 -30
- package/build-tools/package.json +4 -21
- package/dist/atomix.css +20924 -2611
- package/dist/atomix.css.map +1 -1
- package/dist/atomix.min.css +76 -2
- package/dist/atomix.min.css.map +1 -1
- package/dist/build-tools/index.d.ts +31 -30
- package/dist/build-tools/package.json +4 -21
- package/dist/charts.js.map +1 -1
- package/dist/core.js.map +1 -1
- package/dist/forms.js.map +1 -1
- package/dist/heavy.js.map +1 -1
- package/dist/index.d.ts +144 -18
- package/dist/index.esm.js +110 -55
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +110 -55
- 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 +1 -1
- package/src/components/Accordion/Accordion.stories.tsx +32 -23
- 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/GlassFilter.tsx +9 -16
- package/src/components/AtomixGlass/glass-utils.ts +4 -3
- package/src/components/AtomixGlass/shader-utils.ts +128 -52
- package/src/components/AtomixGlass/stories/Playground.stories.tsx +1 -1
- package/src/components/AtomixGlass/stories/Shaders.stories.tsx +1 -1
- package/src/components/Avatar/Avatar.stories.tsx +45 -62
- package/src/components/Avatar/Avatar.tsx +58 -56
- package/src/components/Badge/Badge.stories.tsx +20 -9
- package/src/components/Badge/Badge.test.tsx +41 -41
- package/src/components/Badge/Badge.tsx +64 -62
- package/src/components/Block/Block.stories.tsx +14 -4
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +9 -8
- package/src/components/Breadcrumb/Breadcrumb.tsx +62 -60
- package/src/components/Button/Button.stories.tsx +13 -22
- package/src/components/Button/Button.test.tsx +97 -81
- package/src/components/Button/Button.tsx +46 -14
- package/src/components/Button/ButtonGroup.stories.tsx +37 -32
- package/src/components/Button/ButtonGroup.tsx +4 -15
- package/src/components/Callout/Callout.stories.tsx +109 -16
- package/src/components/Card/Card.stories.tsx +67 -36
- 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 +4 -9
- 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 +6 -2
- package/src/components/ColorModeToggle/ColorModeToggle.tsx +15 -3
- package/src/components/Countdown/Countdown.stories.tsx +7 -7
- package/src/components/DataTable/DataTable.stories.tsx +43 -38
- package/src/components/DataTable/DataTable.test.tsx +26 -148
- package/src/components/DataTable/DataTable.tsx +485 -456
- package/src/components/DatePicker/DatePicker.stories.tsx +32 -47
- package/src/components/DatePicker/DatePicker.tsx +31 -26
- package/src/components/Dropdown/Dropdown.stories.tsx +2 -5
- package/src/components/Dropdown/Dropdown.tsx +313 -299
- package/src/components/EdgePanel/EdgePanel.stories.tsx +6 -19
- package/src/components/EdgePanel/EdgePanel.tsx +1 -3
- package/src/components/Footer/Footer.stories.tsx +21 -16
- package/src/components/Footer/Footer.tsx +130 -128
- package/src/components/Footer/FooterLink.tsx +2 -2
- package/src/components/Form/Checkbox.test.tsx +49 -49
- package/src/components/Form/Checkbox.tsx +108 -100
- package/src/components/Form/Form.stories.tsx +2 -10
- 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 +6 -12
- package/src/components/Form/Radio.tsx +68 -66
- package/src/components/Form/Select.tsx +184 -182
- package/src/components/Form/Textarea.test.tsx +27 -32
- package/src/components/Hero/Hero.stories.tsx +56 -23
- package/src/components/Hero/Hero.tsx +201 -55
- package/src/components/Icon/index.ts +7 -1
- package/src/components/List/List.tsx +19 -23
- package/src/components/Modal/Modal.stories.tsx +2 -1
- 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 +99 -192
- package/src/components/Popover/Popover.tsx +41 -37
- package/src/components/Progress/Progress.stories.tsx +35 -44
- package/src/components/River/River.stories.tsx +2 -1
- package/src/components/SectionIntro/SectionIntro.stories.tsx +71 -71
- package/src/components/Slider/Slider.stories.tsx +12 -4
- package/src/components/Spinner/Spinner.stories.tsx +3 -1
- package/src/components/Spinner/Spinner.test.tsx +23 -23
- package/src/components/Spinner/Spinner.tsx +43 -46
- package/src/components/Steps/Steps.stories.tsx +8 -6
- package/src/components/Tabs/Tabs.stories.tsx +12 -9
- package/src/components/Tabs/Tabs.tsx +74 -72
- package/src/components/Toggle/Toggle.stories.tsx +27 -13
- package/src/components/Toggle/Toggle.test.tsx +65 -70
- package/src/components/Toggle/Toggle.tsx +4 -1
- package/src/components/Tooltip/Tooltip.stories.tsx +24 -20
- package/src/components/Tooltip/Tooltip.tsx +104 -106
- package/src/components/Upload/Upload.stories.tsx +129 -127
- 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/__tests__/theme-tools.test.ts +32 -6
- package/src/lib/composables/shared-mouse-tracker.ts +13 -14
- package/src/lib/composables/useAtomixGlass.ts +106 -49
- package/src/lib/composables/useChartExport.ts +1 -1
- package/src/lib/composables/useDataTable.ts +29 -17
- 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/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 +106 -104
- 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 +1 -1
- package/src/lib/utils/componentUtils.ts +8 -12
- package/src/lib/utils/csv.ts +3 -1
- package/src/lib/utils/dataTableExport.ts +1 -5
- 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 +0 -1
- package/src/styles/01-settings/_settings.colors.scss +8 -8
- 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 +1 -1
- package/src/styles/02-tools/_tools.button.scss +51 -21
- package/src/styles/02-tools/_tools.utility-api.scss +30 -18
- package/src/styles/03-generic/_generic.root.scss +4 -3
- 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 +3 -1
- 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/_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 +1 -1
- 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 +30 -30
- package/src/styles/99-utilities/_utilities.text.scss +67 -46
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* CSS Generators
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* Generators for creating CSS from themes and tokens
|
|
5
5
|
*/
|
|
6
6
|
|
|
@@ -17,6 +17,3 @@ export {
|
|
|
17
17
|
} from './generateCSSNested';
|
|
18
18
|
|
|
19
19
|
export { generateCSSVariables as generateCSSVariablesFromTheme } from './generateCSSVariables';
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* RTL (Right-to-Left) Support Utilities
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* Provides utilities for managing RTL text direction in themes
|
|
5
5
|
*/
|
|
6
6
|
|
|
@@ -39,7 +39,6 @@ const RTL_LOCALES = new Set([
|
|
|
39
39
|
'sd', // Sindhi
|
|
40
40
|
]);
|
|
41
41
|
|
|
42
|
-
|
|
43
42
|
/**
|
|
44
43
|
* Default RTL configuration (extends base config with locale)
|
|
45
44
|
*/
|
|
@@ -50,7 +49,7 @@ const DEFAULT_RTL_CONFIG: Required<Omit<RTLConfig, 'locale'>> & { locale?: strin
|
|
|
50
49
|
|
|
51
50
|
/**
|
|
52
51
|
* RTL Manager
|
|
53
|
-
*
|
|
52
|
+
*
|
|
54
53
|
* Manages RTL text direction for the theme system
|
|
55
54
|
*/
|
|
56
55
|
export class RTLManager {
|
|
@@ -91,7 +90,8 @@ export class RTLManager {
|
|
|
91
90
|
}
|
|
92
91
|
|
|
93
92
|
// Try navigator.language first
|
|
94
|
-
const lang: string =
|
|
93
|
+
const lang: string =
|
|
94
|
+
navigator.language || (navigator.languages && navigator.languages[0]) || 'en';
|
|
95
95
|
const langParts = String(lang).split('-');
|
|
96
96
|
return langParts[0] ? langParts[0].toLowerCase() : 'en';
|
|
97
97
|
}
|
|
@@ -168,7 +168,7 @@ export class RTLManager {
|
|
|
168
168
|
*/
|
|
169
169
|
setLocale(locale: string): void {
|
|
170
170
|
this.config.locale = locale.toLowerCase();
|
|
171
|
-
|
|
171
|
+
|
|
172
172
|
if (this.config.autoDetect) {
|
|
173
173
|
const isRTL = this.isRTLLocale(locale);
|
|
174
174
|
this.setDirection(isRTL ? 'rtl' : 'ltr');
|
|
@@ -213,7 +213,7 @@ export class RTLManager {
|
|
|
213
213
|
*/
|
|
214
214
|
onDirectionChange(callback: (direction: 'ltr' | 'rtl') => void): () => void {
|
|
215
215
|
this.listeners.add(callback);
|
|
216
|
-
|
|
216
|
+
|
|
217
217
|
// Return unsubscribe function
|
|
218
218
|
return () => {
|
|
219
219
|
this.listeners.delete(callback);
|
|
@@ -240,7 +240,7 @@ export class RTLManager {
|
|
|
240
240
|
|
|
241
241
|
/**
|
|
242
242
|
* Get RTL-aware value
|
|
243
|
-
*
|
|
243
|
+
*
|
|
244
244
|
* Returns different values based on direction
|
|
245
245
|
*/
|
|
246
246
|
getValue<T>(ltrValue: T, rtlValue: T): T {
|
|
@@ -249,15 +249,15 @@ export class RTLManager {
|
|
|
249
249
|
|
|
250
250
|
/**
|
|
251
251
|
* Get RTL-aware CSS property
|
|
252
|
-
*
|
|
252
|
+
*
|
|
253
253
|
* Returns appropriate CSS property based on direction
|
|
254
254
|
*/
|
|
255
255
|
getCSSProperty(property: string): string {
|
|
256
256
|
if (this.config.direction === 'rtl') {
|
|
257
257
|
// Map common LTR properties to RTL equivalents
|
|
258
258
|
const rtlMap: Record<string, string> = {
|
|
259
|
-
|
|
260
|
-
|
|
259
|
+
left: 'right',
|
|
260
|
+
right: 'left',
|
|
261
261
|
'margin-left': 'margin-right',
|
|
262
262
|
'margin-right': 'margin-left',
|
|
263
263
|
'padding-left': 'padding-right',
|
|
@@ -281,11 +281,11 @@ export class RTLManager {
|
|
|
281
281
|
*/
|
|
282
282
|
destroy(): void {
|
|
283
283
|
this.listeners.clear();
|
|
284
|
-
|
|
284
|
+
|
|
285
285
|
if (typeof document !== 'undefined') {
|
|
286
286
|
const html = document.documentElement;
|
|
287
287
|
const body = document.body;
|
|
288
|
-
|
|
288
|
+
|
|
289
289
|
html.removeAttribute('dir');
|
|
290
290
|
html.removeAttribute(this.config.dataAttribute);
|
|
291
291
|
body?.removeAttribute('dir');
|
|
@@ -317,7 +317,7 @@ export function getDirectionFromLocale(locale: string): 'ltr' | 'rtl' {
|
|
|
317
317
|
|
|
318
318
|
/**
|
|
319
319
|
* RTL-aware CSS helper
|
|
320
|
-
*
|
|
320
|
+
*
|
|
321
321
|
* Returns appropriate CSS based on direction
|
|
322
322
|
*/
|
|
323
323
|
export function rtlCSS(ltrCSS: string, rtlCSS: string, direction: 'ltr' | 'rtl' = 'ltr'): string {
|
package/src/lib/theme/index.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Theme System Exports
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* Simplified theme system using DesignTokens only.
|
|
5
|
-
*
|
|
5
|
+
*
|
|
6
6
|
* @example
|
|
7
7
|
* ```typescript
|
|
8
8
|
* import { createTheme, injectTheme } from '@shohojdhara/atomix/theme';
|
|
9
|
-
*
|
|
9
|
+
*
|
|
10
10
|
* // Using DesignTokens
|
|
11
11
|
* const css = createTheme({ 'primary': '#7AFFD7', 'spacing-4': '1rem' });
|
|
12
12
|
* injectTheme(css);
|
|
13
|
-
*
|
|
13
|
+
*
|
|
14
14
|
* // Or use with ThemeProvider
|
|
15
15
|
* import { ThemeProvider } from '@shohojdhara/atomix/theme';
|
|
16
16
|
* const tokens = { 'primary': '#7c3aed' };
|
|
@@ -62,8 +62,6 @@ export function removeTheme(id: string = 'atomix-theme'): void {
|
|
|
62
62
|
removeCSS(id);
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
|
|
66
|
-
|
|
67
65
|
// ============================================================================
|
|
68
66
|
// Token Utilities
|
|
69
67
|
// ============================================================================
|
|
@@ -107,7 +105,6 @@ export {
|
|
|
107
105
|
|
|
108
106
|
export { injectCSS, removeCSS, isCSSInjected } from './utils/injectCSS';
|
|
109
107
|
|
|
110
|
-
|
|
111
108
|
// Config loader removed to prevent bundling Node.js modules in browser
|
|
112
109
|
|
|
113
110
|
// ============================================================================
|
|
@@ -131,9 +128,7 @@ export * from './devtools';
|
|
|
131
128
|
export { designTokensToCSSVars } from './adapters';
|
|
132
129
|
|
|
133
130
|
// Theme helpers (utilities for working with DesignTokens)
|
|
134
|
-
export {
|
|
135
|
-
isDesignTokens,
|
|
136
|
-
} from './utils/themeHelpers';
|
|
131
|
+
export { isDesignTokens } from './utils/themeHelpers';
|
|
137
132
|
|
|
138
133
|
// CSS variable utilities
|
|
139
134
|
export {
|
|
@@ -150,7 +145,6 @@ export {
|
|
|
150
145
|
// RTL Support
|
|
151
146
|
export { RTLManager } from './i18n/rtl';
|
|
152
147
|
|
|
153
|
-
|
|
154
148
|
// Types
|
|
155
149
|
export type {
|
|
156
150
|
ThemeChangeEvent,
|
|
@@ -169,9 +163,6 @@ export type { Theme } from './types';
|
|
|
169
163
|
|
|
170
164
|
export type { ThemeErrorBoundaryProps } from './runtime/ThemeErrorBoundary';
|
|
171
165
|
|
|
172
|
-
export type {
|
|
173
|
-
CSSVariableConfig,
|
|
174
|
-
CSSVariableNamingOptions,
|
|
175
|
-
} from './adapters/cssVariableMapper';
|
|
166
|
+
export type { CSSVariableConfig, CSSVariableNamingOptions } from './adapters/cssVariableMapper';
|
|
176
167
|
|
|
177
|
-
export type { RTLConfig } from './i18n/rtl';
|
|
168
|
+
export type { RTLConfig } from './i18n/rtl';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Theme Applicator
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* Applies theme configurations to the DOM, including CSS variables,
|
|
5
5
|
* component overrides, typography, spacing, and color palettes.
|
|
6
|
-
*
|
|
6
|
+
*
|
|
7
7
|
* Uses the unified theme system for CSS generation and injection.
|
|
8
8
|
*/
|
|
9
9
|
|
|
@@ -13,7 +13,7 @@ import { injectCSS, removeCSS } from '../utils/injectCSS';
|
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Theme applicator class for runtime theme application
|
|
16
|
-
*
|
|
16
|
+
*
|
|
17
17
|
* Uses the unified theme system for efficient CSS variable generation and injection.
|
|
18
18
|
*/
|
|
19
19
|
export class ThemeApplicator {
|
|
@@ -26,7 +26,7 @@ export class ThemeApplicator {
|
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
28
|
* Apply a complete theme configuration using DesignTokens
|
|
29
|
-
*
|
|
29
|
+
*
|
|
30
30
|
* Uses the unified theme system to generate and inject CSS.
|
|
31
31
|
* Automatically respects atomix.config.ts when using DesignTokens.
|
|
32
32
|
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Theme Error Boundary
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* React error boundary for catching and handling theme-related errors.
|
|
5
5
|
* Prevents the entire app from crashing when theme errors occur.
|
|
6
6
|
*/
|
|
@@ -39,7 +39,10 @@ export interface ThemeErrorBoundaryProps {
|
|
|
39
39
|
/**
|
|
40
40
|
* Default fallback UI
|
|
41
41
|
*/
|
|
42
|
-
const DefaultFallback: React.FC<{ error: Error; errorInfo: ErrorInfo }> = ({
|
|
42
|
+
const DefaultFallback: React.FC<{ error: Error; errorInfo: ErrorInfo }> = ({
|
|
43
|
+
error,
|
|
44
|
+
errorInfo,
|
|
45
|
+
}) => {
|
|
43
46
|
const isThemeError = error instanceof ThemeError;
|
|
44
47
|
const errorCode = isThemeError ? error.code : ThemeErrorCode.UNKNOWN_ERROR;
|
|
45
48
|
const context = isThemeError ? error.context : undefined;
|
|
@@ -67,9 +70,7 @@ const DefaultFallback: React.FC<{ error: Error; errorInfo: ErrorInfo }> = ({ err
|
|
|
67
70
|
)}
|
|
68
71
|
{context && Object.keys(context).length > 0 && (
|
|
69
72
|
<details style={{ marginTop: '1rem' }}>
|
|
70
|
-
<summary style={{ cursor: 'pointer', fontWeight: 'bold' }}>
|
|
71
|
-
Error Context
|
|
72
|
-
</summary>
|
|
73
|
+
<summary style={{ cursor: 'pointer', fontWeight: 'bold' }}>Error Context</summary>
|
|
73
74
|
<pre
|
|
74
75
|
style={{
|
|
75
76
|
marginTop: '0.5rem',
|
|
@@ -122,7 +123,7 @@ const DefaultFallback: React.FC<{ error: Error; errorInfo: ErrorInfo }> = ({ err
|
|
|
122
123
|
|
|
123
124
|
/**
|
|
124
125
|
* Theme Error Boundary Component
|
|
125
|
-
*
|
|
126
|
+
*
|
|
126
127
|
* Catches errors in the theme system and displays a fallback UI
|
|
127
128
|
* instead of crashing the entire application.
|
|
128
129
|
*/
|
|
@@ -150,22 +151,17 @@ export class ThemeErrorBoundary extends Component<
|
|
|
150
151
|
|
|
151
152
|
override componentDidCatch(error: Error, errorInfo: ErrorInfo): void {
|
|
152
153
|
// Log error
|
|
153
|
-
const themeError =
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
{
|
|
165
|
-
componentStack: errorInfo.componentStack,
|
|
166
|
-
errorBoundary: 'ThemeErrorBoundary',
|
|
167
|
-
}
|
|
168
|
-
);
|
|
154
|
+
const themeError =
|
|
155
|
+
error instanceof ThemeError
|
|
156
|
+
? error
|
|
157
|
+
: new ThemeError(error.message, ThemeErrorCode.UNKNOWN_ERROR, {
|
|
158
|
+
componentStack: errorInfo.componentStack,
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
this.logger.error('Theme error boundary caught an error', themeError, {
|
|
162
|
+
componentStack: errorInfo.componentStack,
|
|
163
|
+
errorBoundary: 'ThemeErrorBoundary',
|
|
164
|
+
});
|
|
169
165
|
|
|
170
166
|
// Update state with error info
|
|
171
167
|
this.setState({
|
|
@@ -219,7 +215,7 @@ export class ThemeErrorBoundary extends Component<
|
|
|
219
215
|
|
|
220
216
|
/**
|
|
221
217
|
* Hook to reset error boundary
|
|
222
|
-
*
|
|
218
|
+
*
|
|
223
219
|
* @param reset - Function to reset the error boundary
|
|
224
220
|
*/
|
|
225
221
|
export function useThemeErrorReset(): () => void {
|