@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.9 → 0.2.11
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 +1 -1
- package/dist/components/ui/accessibility-demo.esm.js +30 -24
- package/dist/components/ui/accessibility-demo.js +30 -24
- package/dist/components/ui/advanced-component-architecture-demo.esm.js +235 -179
- package/dist/components/ui/advanced-component-architecture-demo.js +235 -179
- package/dist/components/ui/advanced-transition-system-demo.esm.js +110 -64
- package/dist/components/ui/advanced-transition-system-demo.js +110 -64
- package/dist/components/ui/advanced-transition-system.esm.js +166 -122
- package/dist/components/ui/advanced-transition-system.js +166 -122
- package/dist/components/ui/animation/animated-container.esm.js +52 -29
- package/dist/components/ui/animation/animated-container.js +52 -29
- package/dist/components/ui/animation/staggered-container.esm.js +18 -9
- package/dist/components/ui/animation/staggered-container.js +18 -9
- package/dist/components/ui/animation-demo.esm.js +67 -35
- package/dist/components/ui/animation-demo.js +67 -35
- package/dist/components/ui/badge.esm.js +9 -6
- package/dist/components/ui/badge.js +9 -6
- package/dist/components/ui/battery-conscious-animation-demo.esm.js +122 -87
- package/dist/components/ui/battery-conscious-animation-demo.js +122 -87
- package/dist/components/ui/border-radius-shadow-demo.esm.js +23 -12
- package/dist/components/ui/border-radius-shadow-demo.js +23 -12
- package/dist/components/ui/button.esm.js +8 -2
- package/dist/components/ui/button.js +8 -2
- package/dist/components/ui/card.esm.js +33 -8
- package/dist/components/ui/card.js +33 -8
- package/dist/components/ui/checkbox.esm.js +3 -3
- package/dist/components/ui/checkbox.js +3 -3
- package/dist/components/ui/color-preview.esm.js +68 -45
- package/dist/components/ui/color-preview.js +68 -45
- package/dist/components/ui/data-display/chart.esm.js +112 -84
- package/dist/components/ui/data-display/chart.js +112 -84
- package/dist/components/ui/data-display/data-grid-simple.esm.js +1 -1
- package/dist/components/ui/data-display/data-grid-simple.js +1 -1
- package/dist/components/ui/data-display/data-grid.esm.js +80 -67
- package/dist/components/ui/data-display/data-grid.js +80 -67
- package/dist/components/ui/data-display/list.esm.js +53 -45
- package/dist/components/ui/data-display/list.js +53 -45
- package/dist/components/ui/data-display/table.esm.js +62 -54
- package/dist/components/ui/data-display/table.js +62 -54
- package/dist/components/ui/data-display/timeline.esm.js +39 -34
- package/dist/components/ui/data-display/timeline.js +39 -34
- package/dist/components/ui/data-display/tree.esm.js +116 -84
- package/dist/components/ui/data-display/tree.js +116 -84
- package/dist/components/ui/data-display/types.esm.js +389 -364
- package/dist/components/ui/data-display/types.js +389 -364
- package/dist/components/ui/enterprise-mobile-experience-demo.esm.js +120 -70
- package/dist/components/ui/enterprise-mobile-experience-demo.js +120 -70
- package/dist/components/ui/enterprise-mobile-experience.esm.js +124 -73
- package/dist/components/ui/enterprise-mobile-experience.js +124 -73
- package/dist/components/ui/feedback/alert.esm.js +22 -15
- package/dist/components/ui/feedback/alert.js +22 -15
- package/dist/components/ui/feedback/progress.esm.js +47 -24
- package/dist/components/ui/feedback/progress.js +47 -24
- package/dist/components/ui/feedback/skeleton.esm.js +39 -29
- package/dist/components/ui/feedback/skeleton.js +39 -29
- package/dist/components/ui/feedback/toast.esm.js +62 -38
- package/dist/components/ui/feedback/toast.js +62 -38
- package/dist/components/ui/feedback/types.esm.js +83 -83
- package/dist/components/ui/feedback/types.js +83 -83
- package/dist/components/ui/font-preview.esm.js +41 -39
- package/dist/components/ui/font-preview.js +41 -39
- package/dist/components/ui/form-demo.esm.js +150 -113
- package/dist/components/ui/form-demo.js +150 -113
- package/dist/components/ui/hardware-acceleration-demo.esm.js +137 -87
- package/dist/components/ui/hardware-acceleration-demo.js +137 -87
- package/dist/components/ui/input.esm.js +4 -1
- package/dist/components/ui/input.js +4 -1
- package/dist/components/ui/layout-demo.esm.js +81 -56
- package/dist/components/ui/layout-demo.js +81 -56
- package/dist/components/ui/layouts/adaptive-layout.esm.js +27 -8
- package/dist/components/ui/layouts/adaptive-layout.js +27 -8
- package/dist/components/ui/layouts/desktop-layout.esm.js +39 -19
- package/dist/components/ui/layouts/desktop-layout.js +39 -19
- package/dist/components/ui/layouts/mobile-layout.esm.js +19 -9
- package/dist/components/ui/layouts/mobile-layout.js +19 -9
- package/dist/components/ui/layouts/tablet-layout.esm.js +28 -14
- package/dist/components/ui/layouts/tablet-layout.js +28 -14
- package/dist/components/ui/mobile-form-validation.esm.js +120 -87
- package/dist/components/ui/mobile-form-validation.js +120 -87
- package/dist/components/ui/mobile-input-demo.esm.js +19 -13
- package/dist/components/ui/mobile-input-demo.js +19 -13
- package/dist/components/ui/mobile-input.esm.js +185 -120
- package/dist/components/ui/mobile-input.js +185 -120
- package/dist/components/ui/mobile-skeleton-loading-demo.esm.js +128 -111
- package/dist/components/ui/mobile-skeleton-loading-demo.js +128 -111
- package/dist/components/ui/navigation/breadcrumb.esm.js +17 -14
- package/dist/components/ui/navigation/breadcrumb.js +17 -14
- package/dist/components/ui/navigation/index.esm.js +0 -1
- package/dist/components/ui/navigation/index.js +0 -1
- package/dist/components/ui/navigation/menu.esm.js +49 -35
- package/dist/components/ui/navigation/menu.js +49 -35
- package/dist/components/ui/navigation/navigation-demo.esm.js +81 -74
- package/dist/components/ui/navigation/navigation-demo.js +81 -74
- package/dist/components/ui/navigation/pagination.esm.js +62 -50
- package/dist/components/ui/navigation/pagination.js +62 -50
- package/dist/components/ui/navigation/sidebar.esm.js +56 -42
- package/dist/components/ui/navigation/sidebar.js +56 -42
- package/dist/components/ui/navigation/stepper.esm.js +34 -23
- package/dist/components/ui/navigation/stepper.js +34 -23
- package/dist/components/ui/navigation/tabs.esm.js +32 -21
- package/dist/components/ui/navigation/tabs.js +32 -21
- package/dist/components/ui/navigation/types.esm.js +196 -195
- package/dist/components/ui/navigation/types.js +196 -195
- package/dist/components/ui/overlay/backdrop.esm.js +17 -16
- package/dist/components/ui/overlay/backdrop.js +17 -16
- package/dist/components/ui/overlay/focus-manager.esm.js +21 -19
- package/dist/components/ui/overlay/focus-manager.js +21 -19
- package/dist/components/ui/overlay/index.esm.js +0 -2
- package/dist/components/ui/overlay/index.js +0 -2
- package/dist/components/ui/overlay/modal.esm.js +38 -34
- package/dist/components/ui/overlay/modal.js +38 -34
- package/dist/components/ui/overlay/overlay-manager.esm.js +25 -20
- package/dist/components/ui/overlay/overlay-manager.js +25 -20
- package/dist/components/ui/overlay/popover.esm.js +74 -58
- package/dist/components/ui/overlay/popover.js +74 -58
- package/dist/components/ui/overlay/portal.esm.js +7 -7
- package/dist/components/ui/overlay/portal.js +7 -7
- package/dist/components/ui/overlay/tooltip.esm.js +54 -39
- package/dist/components/ui/overlay/tooltip.js +54 -39
- package/dist/components/ui/overlay/types.esm.js +132 -131
- package/dist/components/ui/overlay/types.js +132 -131
- package/dist/components/ui/performance-demo.esm.js +135 -88
- package/dist/components/ui/performance-demo.js +135 -88
- package/dist/components/ui/semantic-input-system-demo.esm.js +117 -80
- package/dist/components/ui/semantic-input-system-demo.js +117 -80
- package/dist/components/ui/theme-customizer.esm.js +84 -52
- package/dist/components/ui/theme-customizer.js +84 -52
- package/dist/components/ui/theme-preview.esm.js +95 -43
- package/dist/components/ui/theme-preview.js +95 -43
- package/dist/components/ui/theme-switcher.esm.js +70 -44
- package/dist/components/ui/theme-switcher.js +70 -44
- package/dist/components/ui/theme-toggle.esm.js +3 -3
- package/dist/components/ui/theme-toggle.js +3 -3
- package/dist/components/ui/token-demo.esm.js +33 -21
- package/dist/components/ui/token-demo.js +33 -21
- package/dist/components/ui/touch-demo.esm.js +102 -73
- package/dist/components/ui/touch-demo.js +102 -73
- package/dist/components/ui/touch-friendly-interface-demo.esm.js +102 -64
- package/dist/components/ui/touch-friendly-interface-demo.js +102 -64
- package/dist/components/ui/touch-friendly-interface.esm.js +85 -61
- package/dist/components/ui/touch-friendly-interface.js +85 -61
- package/dist/hooks/use-accessibility-support.esm.js +115 -85
- package/dist/hooks/use-accessibility-support.js +115 -85
- package/dist/hooks/use-adaptive-layout.esm.js +56 -33
- package/dist/hooks/use-adaptive-layout.js +56 -33
- package/dist/hooks/use-advanced-patterns.esm.js +57 -42
- package/dist/hooks/use-advanced-patterns.js +57 -42
- package/dist/hooks/use-advanced-transition-system.esm.js +112 -71
- package/dist/hooks/use-advanced-transition-system.js +112 -71
- package/dist/hooks/use-animation-profile.esm.js +63 -34
- package/dist/hooks/use-animation-profile.js +63 -34
- package/dist/hooks/use-battery-animations.esm.js +80 -55
- package/dist/hooks/use-battery-animations.js +80 -55
- package/dist/hooks/use-battery-conscious-loading.esm.js +166 -123
- package/dist/hooks/use-battery-conscious-loading.js +166 -123
- package/dist/hooks/use-battery-optimization.esm.js +78 -55
- package/dist/hooks/use-battery-optimization.js +78 -55
- package/dist/hooks/use-battery-status.esm.js +73 -51
- package/dist/hooks/use-battery-status.js +73 -51
- package/dist/hooks/use-component-performance.esm.js +62 -47
- package/dist/hooks/use-component-performance.js +62 -47
- package/dist/hooks/use-device-loading-states.esm.js +152 -109
- package/dist/hooks/use-device-loading-states.js +152 -109
- package/dist/hooks/use-device.esm.js +25 -14
- package/dist/hooks/use-device.js +25 -14
- package/dist/hooks/use-enterprise-mobile-experience.esm.js +137 -88
- package/dist/hooks/use-enterprise-mobile-experience.js +137 -88
- package/dist/hooks/use-form-feedback.esm.js +124 -81
- package/dist/hooks/use-form-feedback.js +124 -81
- package/dist/hooks/use-form-performance.esm.js +127 -92
- package/dist/hooks/use-form-performance.js +127 -92
- package/dist/hooks/use-frame-rate.esm.js +56 -37
- package/dist/hooks/use-frame-rate.js +56 -37
- package/dist/hooks/use-gestures.esm.js +96 -72
- package/dist/hooks/use-gestures.js +96 -72
- package/dist/hooks/use-hardware-acceleration.esm.js +65 -37
- package/dist/hooks/use-hardware-acceleration.js +65 -37
- package/dist/hooks/use-input-accessibility.esm.js +157 -119
- package/dist/hooks/use-input-accessibility.js +157 -119
- package/dist/hooks/use-input-performance.esm.js +139 -104
- package/dist/hooks/use-input-performance.js +139 -104
- package/dist/hooks/use-layout-performance.esm.js +50 -29
- package/dist/hooks/use-layout-performance.js +50 -29
- package/dist/hooks/use-loading-accessibility.esm.js +209 -169
- package/dist/hooks/use-loading-accessibility.js +209 -169
- package/dist/hooks/use-loading-performance.esm.js +117 -93
- package/dist/hooks/use-loading-performance.js +117 -93
- package/dist/hooks/use-memory-usage.esm.js +57 -38
- package/dist/hooks/use-memory-usage.js +57 -38
- package/dist/hooks/use-mobile-form-layout.esm.js +111 -74
- package/dist/hooks/use-mobile-form-layout.js +111 -74
- package/dist/hooks/use-mobile-form-validation.esm.js +211 -144
- package/dist/hooks/use-mobile-form-validation.js +211 -144
- package/dist/hooks/use-mobile-keyboard-optimization.esm.js +154 -113
- package/dist/hooks/use-mobile-keyboard-optimization.js +154 -113
- package/dist/hooks/use-mobile-layout.esm.js +73 -51
- package/dist/hooks/use-mobile-layout.js +73 -51
- package/dist/hooks/use-mobile-optimization.esm.js +72 -44
- package/dist/hooks/use-mobile-optimization.js +72 -44
- package/dist/hooks/use-mobile-skeleton.esm.js +97 -64
- package/dist/hooks/use-mobile-skeleton.js +97 -64
- package/dist/hooks/use-mobile-touch.esm.js +128 -93
- package/dist/hooks/use-mobile-touch.js +128 -93
- package/dist/hooks/use-performance-throttling.esm.js +72 -48
- package/dist/hooks/use-performance-throttling.js +72 -48
- package/dist/hooks/use-performance.esm.js +90 -52
- package/dist/hooks/use-performance.js +90 -52
- package/dist/hooks/use-reusable-architecture.esm.js +94 -65
- package/dist/hooks/use-reusable-architecture.js +94 -65
- package/dist/hooks/use-semantic-input-types.esm.js +166 -124
- package/dist/hooks/use-semantic-input-types.js +166 -124
- package/dist/hooks/use-semantic-input.esm.js +178 -126
- package/dist/hooks/use-semantic-input.js +178 -126
- package/dist/hooks/use-tablet-layout.esm.js +67 -38
- package/dist/hooks/use-tablet-layout.js +67 -38
- package/dist/hooks/use-touch-friendly-input.esm.js +193 -149
- package/dist/hooks/use-touch-friendly-input.js +193 -149
- package/dist/hooks/use-touch-friendly-interface.esm.js +99 -67
- package/dist/hooks/use-touch-friendly-interface.js +99 -67
- package/dist/hooks/use-touch-optimization.esm.js +99 -72
- package/dist/hooks/use-touch-optimization.js +99 -72
- package/dist/index.esm.js +157 -281
- package/dist/index.js +157 -281
- package/dist/lib/utils.esm.js +1 -1
- package/dist/lib/utils.js +1 -1
- package/dist/plugins/theme-css-generator.esm.js +104 -55
- package/dist/plugins/theme-css-generator.js +104 -55
- package/dist/provider.esm.js +4 -4
- package/dist/provider.js +4 -4
- package/dist/styles.css +1 -1
- package/dist/theme.esm.js +633 -468
- package/dist/theme.js +633 -468
- package/dist/themes/ThemeContext.esm.js +15 -15
- package/dist/themes/ThemeContext.js +15 -15
- package/dist/themes/ThemeProvider.esm.js +25 -22
- package/dist/themes/ThemeProvider.js +25 -22
- package/dist/themes/accessibility.esm.js +147 -108
- package/dist/themes/accessibility.js +147 -108
- package/dist/themes/aria-patterns.esm.js +198 -162
- package/dist/themes/aria-patterns.js +198 -162
- package/dist/themes/base-themes.esm.js +14 -11
- package/dist/themes/base-themes.js +14 -11
- package/dist/themes/colorManager.esm.js +101 -83
- package/dist/themes/colorManager.js +101 -83
- package/dist/themes/examples/dark-theme.esm.js +133 -103
- package/dist/themes/examples/dark-theme.js +133 -103
- package/dist/themes/examples/minimal-theme.esm.js +83 -61
- package/dist/themes/examples/minimal-theme.js +83 -61
- package/dist/themes/focus-management.esm.js +202 -143
- package/dist/themes/focus-management.js +202 -143
- package/dist/themes/fontLoader.esm.js +28 -19
- package/dist/themes/fontLoader.js +28 -19
- package/dist/themes/high-contrast.esm.js +152 -104
- package/dist/themes/high-contrast.js +152 -104
- package/dist/themes/index.esm.js +1 -1
- package/dist/themes/index.js +1 -1
- package/dist/themes/inheritance.esm.js +35 -27
- package/dist/themes/inheritance.js +35 -27
- package/dist/themes/keyboard-navigation.esm.js +152 -123
- package/dist/themes/keyboard-navigation.js +152 -123
- package/dist/themes/motion-reduction.esm.js +193 -133
- package/dist/themes/motion-reduction.js +193 -133
- package/dist/themes/navigation.esm.js +146 -146
- package/dist/themes/navigation.js +146 -146
- package/dist/themes/screen-reader.esm.js +159 -94
- package/dist/themes/screen-reader.js +159 -94
- package/dist/themes/systemThemeDetector.esm.js +42 -34
- package/dist/themes/systemThemeDetector.js +42 -34
- package/dist/themes/themeCSSUpdater.esm.js +21 -9
- package/dist/themes/themeCSSUpdater.js +21 -9
- package/dist/themes/themePersistence.esm.js +68 -47
- package/dist/themes/themePersistence.js +68 -47
- package/dist/themes/themes/stan-design.esm.js +633 -468
- package/dist/themes/themes/stan-design.js +633 -468
- package/dist/themes/types.esm.js +301 -287
- package/dist/themes/types.js +301 -287
- package/dist/themes/useSystemTheme.esm.js +4 -4
- package/dist/themes/useSystemTheme.js +4 -4
- package/dist/themes/useTheme.esm.js +4 -4
- package/dist/themes/useTheme.js +4 -4
- package/dist/themes/validation.esm.js +128 -77
- package/dist/themes/validation.js +128 -77
- package/dist/tokens/index.esm.js +1 -2
- package/dist/tokens/index.js +1 -2
- package/dist/tokens/tokenExporter.esm.js +87 -61
- package/dist/tokens/tokenExporter.js +87 -61
- package/dist/tokens/tokenGenerator.esm.js +86 -77
- package/dist/tokens/tokenGenerator.js +86 -77
- package/dist/tokens/tokenManager.esm.js +64 -51
- package/dist/tokens/tokenManager.js +64 -51
- package/dist/tokens/tokenValidator.esm.js +193 -147
- package/dist/tokens/tokenValidator.js +193 -147
- package/dist/tokens/types.esm.js +49 -35
- package/dist/tokens/types.js +49 -35
- package/dist/utils/bundle-analyzer.esm.js +83 -65
- package/dist/utils/bundle-analyzer.js +83 -65
- package/dist/utils/bundle-splitting.esm.js +142 -117
- package/dist/utils/bundle-splitting.js +142 -117
- package/dist/utils/lazy-loading.esm.js +132 -106
- package/dist/utils/lazy-loading.js +132 -106
- package/dist/utils/performance-monitor.esm.js +170 -129
- package/dist/utils/performance-monitor.js +170 -129
- package/dist/utils/tree-shaking.esm.js +69 -61
- package/dist/utils/tree-shaking.js +69 -61
- package/package.json +1 -1
- package/src/index.ts +146 -146
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { createContext } from 'react';
|
|
2
|
-
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
3
|
import { MultiThemeConfig, CompleteThemeConfig } from './types';
|
|
4
4
|
|
|
5
5
|
// Theme context interface
|
|
6
6
|
export interface ThemeContextType {
|
|
7
|
-
currentTheme;
|
|
8
|
-
currentThemeConfig;
|
|
9
|
-
availableThemes];
|
|
10
|
-
setTheme) => void;
|
|
11
|
-
addTheme, theme) => void;
|
|
12
|
-
removeTheme) => void;
|
|
13
|
-
getTheme) => CompleteThemeConfig | null;
|
|
14
|
-
isLoading;
|
|
15
|
-
error;
|
|
7
|
+
currentTheme: string;
|
|
8
|
+
currentThemeConfig: CompleteThemeConfig | null;
|
|
9
|
+
availableThemes: string[];
|
|
10
|
+
setTheme: (themeName: string) => void;
|
|
11
|
+
addTheme: (name: string, theme: MultiThemeConfig) => void;
|
|
12
|
+
removeTheme: (name: string) => void;
|
|
13
|
+
getTheme: (name: string) => CompleteThemeConfig | null;
|
|
14
|
+
isLoading: boolean;
|
|
15
|
+
error: string | null;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
// Create the context
|
|
@@ -20,11 +20,11 @@ const ThemeContext = createContext<ThemeContextType | undefined>(undefined);
|
|
|
20
20
|
|
|
21
21
|
// Provider props interface
|
|
22
22
|
export interface ThemeProviderProps {
|
|
23
|
-
children;
|
|
24
|
-
defaultTheme
|
|
25
|
-
themes
|
|
26
|
-
persistTheme
|
|
27
|
-
storageKey
|
|
23
|
+
children: ReactNode;
|
|
24
|
+
defaultTheme?: string;
|
|
25
|
+
themes?: Record<string, MultiThemeConfig>;
|
|
26
|
+
persistTheme?: boolean;
|
|
27
|
+
storageKey?: string;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
// Export the context for testing and advanced usage
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { createContext } from 'react';
|
|
2
|
-
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
3
|
import { MultiThemeConfig, CompleteThemeConfig } from './types';
|
|
4
4
|
|
|
5
5
|
// Theme context interface
|
|
6
6
|
export interface ThemeContextType {
|
|
7
|
-
currentTheme;
|
|
8
|
-
currentThemeConfig;
|
|
9
|
-
availableThemes];
|
|
10
|
-
setTheme) => void;
|
|
11
|
-
addTheme, theme) => void;
|
|
12
|
-
removeTheme) => void;
|
|
13
|
-
getTheme) => CompleteThemeConfig | null;
|
|
14
|
-
isLoading;
|
|
15
|
-
error;
|
|
7
|
+
currentTheme: string;
|
|
8
|
+
currentThemeConfig: CompleteThemeConfig | null;
|
|
9
|
+
availableThemes: string[];
|
|
10
|
+
setTheme: (themeName: string) => void;
|
|
11
|
+
addTheme: (name: string, theme: MultiThemeConfig) => void;
|
|
12
|
+
removeTheme: (name: string) => void;
|
|
13
|
+
getTheme: (name: string) => CompleteThemeConfig | null;
|
|
14
|
+
isLoading: boolean;
|
|
15
|
+
error: string | null;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
// Create the context
|
|
@@ -20,11 +20,11 @@ const ThemeContext = createContext<ThemeContextType | undefined>(undefined);
|
|
|
20
20
|
|
|
21
21
|
// Provider props interface
|
|
22
22
|
export interface ThemeProviderProps {
|
|
23
|
-
children;
|
|
24
|
-
defaultTheme
|
|
25
|
-
themes
|
|
26
|
-
persistTheme
|
|
27
|
-
storageKey
|
|
23
|
+
children: ReactNode;
|
|
24
|
+
defaultTheme?: string;
|
|
25
|
+
themes?: Record<string, MultiThemeConfig>;
|
|
26
|
+
persistTheme?: boolean;
|
|
27
|
+
storageKey?: string;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
// Export the context for testing and advanced usage
|
|
@@ -8,7 +8,7 @@ import { themeCSSUpdater } from './themeCSSUpdater';
|
|
|
8
8
|
import { fontLoader } from './fontLoader';
|
|
9
9
|
import { ColorManager } from './colorManager';
|
|
10
10
|
|
|
11
|
-
export const ThemeProvider= ({
|
|
11
|
+
export const ThemeProvider: React.FC<ThemeProviderProps> = ({
|
|
12
12
|
children,
|
|
13
13
|
defaultTheme = 'stan-design',
|
|
14
14
|
themes = defaultThemes,
|
|
@@ -23,7 +23,7 @@ export const ThemeProvider= ({
|
|
|
23
23
|
const [error, setError] = useState<string | null>(null);
|
|
24
24
|
|
|
25
25
|
// Enhance theme colors using ColorManager
|
|
26
|
-
const enhanceThemeColors = useCallback((themeConfig)=> {
|
|
26
|
+
const enhanceThemeColors = useCallback((themeConfig: CompleteThemeConfig): CompleteThemeConfig => {
|
|
27
27
|
try {
|
|
28
28
|
const enhanced = { ...themeConfig };
|
|
29
29
|
|
|
@@ -35,14 +35,16 @@ export const ThemeProvider= ({
|
|
|
35
35
|
if (!enhanced.colors.primary.light || !enhanced.colors.primary.dark || !enhanced.colors.primary.contrast) {
|
|
36
36
|
const enhancedScale = ColorManager.generateColorScale({
|
|
37
37
|
baseColor,
|
|
38
|
-
generateShades,
|
|
39
|
-
generateContrast
|
|
38
|
+
generateShades: true,
|
|
39
|
+
generateContrast: true
|
|
40
|
+
});
|
|
40
41
|
|
|
41
42
|
enhanced.colors.primary = {
|
|
42
43
|
...enhanced.colors.primary,
|
|
43
|
-
light,
|
|
44
|
-
dark,
|
|
45
|
-
contrast
|
|
44
|
+
light: enhancedScale.light,
|
|
45
|
+
dark: enhancedScale.dark,
|
|
46
|
+
contrast: enhancedScale.contrast
|
|
47
|
+
};
|
|
46
48
|
}
|
|
47
49
|
}
|
|
48
50
|
|
|
@@ -62,7 +64,7 @@ export const ThemeProvider= ({
|
|
|
62
64
|
|
|
63
65
|
return enhanced;
|
|
64
66
|
} catch (err) {
|
|
65
|
-
console.warn('Failed to enhance theme colors, err);
|
|
67
|
+
console.warn('Failed to enhance theme colors:', err);
|
|
66
68
|
return themeConfig;
|
|
67
69
|
}
|
|
68
70
|
}, []);
|
|
@@ -75,7 +77,7 @@ export const ThemeProvider= ({
|
|
|
75
77
|
try {
|
|
76
78
|
themeInheritanceManager.registerTheme(name, theme);
|
|
77
79
|
} catch (err) {
|
|
78
|
-
console.warn(`Failed to register theme '${name}'
|
|
80
|
+
console.warn(`Failed to register theme '${name}':`, err);
|
|
79
81
|
}
|
|
80
82
|
});
|
|
81
83
|
|
|
@@ -87,14 +89,15 @@ export const ThemeProvider= ({
|
|
|
87
89
|
const persistence = createThemePersistence({
|
|
88
90
|
storageKey,
|
|
89
91
|
defaultTheme,
|
|
90
|
-
enableSystemPreference
|
|
92
|
+
enableSystemPreference: true
|
|
93
|
+
});
|
|
91
94
|
const persistedTheme = persistence.getStoredTheme();
|
|
92
95
|
if (persistedTheme && themes[persistedTheme]) {
|
|
93
96
|
setCurrentThemeState(persistedTheme);
|
|
94
97
|
}
|
|
95
98
|
}
|
|
96
99
|
} catch (err) {
|
|
97
|
-
setError(`Failed to initialize themes}`);
|
|
100
|
+
setError(`Failed to initialize themes: ${err instanceof Error ? err.message : 'Unknown error'}`);
|
|
98
101
|
} finally {
|
|
99
102
|
setIsLoading(false);
|
|
100
103
|
}
|
|
@@ -113,13 +116,13 @@ export const ThemeProvider= ({
|
|
|
113
116
|
// Apply the enhanced theme to CSS variables and load fonts
|
|
114
117
|
themeCSSUpdater.applyTheme(enhancedThemeConfig);
|
|
115
118
|
fontLoader.loadThemeFonts(enhancedThemeConfig.fonts).catch(err => {
|
|
116
|
-
console.warn(`Failed to load fonts for theme '${currentTheme}'
|
|
119
|
+
console.warn(`Failed to load fonts for theme '${currentTheme}':`, err);
|
|
117
120
|
});
|
|
118
121
|
}
|
|
119
122
|
|
|
120
123
|
setError(null);
|
|
121
124
|
} catch (err) {
|
|
122
|
-
const errorMessage = `Failed to load theme '${currentTheme}'}`;
|
|
125
|
+
const errorMessage = `Failed to load theme '${currentTheme}': ${err instanceof Error ? err.message : 'Unknown error'}`;
|
|
123
126
|
setError(errorMessage);
|
|
124
127
|
setCurrentThemeConfig(null);
|
|
125
128
|
console.error(errorMessage, err);
|
|
@@ -127,7 +130,7 @@ export const ThemeProvider= ({
|
|
|
127
130
|
}, [currentTheme, enhanceThemeColors]);
|
|
128
131
|
|
|
129
132
|
// Theme switching function
|
|
130
|
-
const setTheme = useCallback(async (themeName) => {
|
|
133
|
+
const setTheme = useCallback(async (themeName: string) => {
|
|
131
134
|
if (!themes[themeName]) {
|
|
132
135
|
setError(`Theme '${themeName}' not found`);
|
|
133
136
|
return;
|
|
@@ -162,25 +165,25 @@ export const ThemeProvider= ({
|
|
|
162
165
|
|
|
163
166
|
setError(null);
|
|
164
167
|
} catch (err) {
|
|
165
|
-
const errorMessage = `Failed to switch to theme '${themeName}'}`;
|
|
168
|
+
const errorMessage = `Failed to switch to theme '${themeName}': ${err instanceof Error ? err.message : 'Unknown error'}`;
|
|
166
169
|
setError(errorMessage);
|
|
167
170
|
console.error(errorMessage, err);
|
|
168
171
|
}
|
|
169
172
|
}, [themes, persistTheme, storageKey]);
|
|
170
173
|
|
|
171
174
|
// Add new theme
|
|
172
|
-
const addTheme = useCallback((name, theme) => {
|
|
175
|
+
const addTheme = useCallback((name: string, theme: MultiThemeConfig) => {
|
|
173
176
|
try {
|
|
174
177
|
themeInheritanceManager.registerTheme(name, theme);
|
|
175
178
|
setAvailableThemes(prev => [...prev, name]);
|
|
176
179
|
setError(null);
|
|
177
180
|
} catch (err) {
|
|
178
|
-
setError(`Failed to add theme '${name}'}`);
|
|
181
|
+
setError(`Failed to add theme '${name}': ${err instanceof Error ? err.message : 'Unknown error'}`);
|
|
179
182
|
}
|
|
180
183
|
}, []);
|
|
181
184
|
|
|
182
185
|
// Remove theme
|
|
183
|
-
const removeTheme = useCallback((name) => {
|
|
186
|
+
const removeTheme = useCallback((name: string) => {
|
|
184
187
|
try {
|
|
185
188
|
// Don't allow removing the current theme
|
|
186
189
|
if (name === currentTheme) {
|
|
@@ -194,22 +197,22 @@ export const ThemeProvider= ({
|
|
|
194
197
|
setAvailableThemes(prev => prev.filter(t => t !== name));
|
|
195
198
|
setError(null);
|
|
196
199
|
} catch (err) {
|
|
197
|
-
setError(`Failed to remove theme '${name}'}`);
|
|
200
|
+
setError(`Failed to remove theme '${name}': ${err instanceof Error ? err.message : 'Unknown error'}`);
|
|
198
201
|
}
|
|
199
202
|
}, [currentTheme]);
|
|
200
203
|
|
|
201
204
|
// Get theme by name
|
|
202
|
-
const getTheme = useCallback((name)=> {
|
|
205
|
+
const getTheme = useCallback((name: string): CompleteThemeConfig | null => {
|
|
203
206
|
try {
|
|
204
207
|
return themeInheritanceManager.getCompleteTheme(name);
|
|
205
208
|
} catch (err) {
|
|
206
|
-
setError(`Failed to get theme '${name}'}`);
|
|
209
|
+
setError(`Failed to get theme '${name}': ${err instanceof Error ? err.message : 'Unknown error'}`);
|
|
207
210
|
return null;
|
|
208
211
|
}
|
|
209
212
|
}, []);
|
|
210
213
|
|
|
211
214
|
// Context value
|
|
212
|
-
const contextValue= {
|
|
215
|
+
const contextValue: ThemeContextType = {
|
|
213
216
|
currentTheme,
|
|
214
217
|
currentThemeConfig,
|
|
215
218
|
availableThemes,
|
|
@@ -8,7 +8,7 @@ import { themeCSSUpdater } from './themeCSSUpdater';
|
|
|
8
8
|
import { fontLoader } from './fontLoader';
|
|
9
9
|
import { ColorManager } from './colorManager';
|
|
10
10
|
|
|
11
|
-
export const ThemeProvider= ({
|
|
11
|
+
export const ThemeProvider: React.FC<ThemeProviderProps> = ({
|
|
12
12
|
children,
|
|
13
13
|
defaultTheme = 'stan-design',
|
|
14
14
|
themes = defaultThemes,
|
|
@@ -23,7 +23,7 @@ export const ThemeProvider= ({
|
|
|
23
23
|
const [error, setError] = useState<string | null>(null);
|
|
24
24
|
|
|
25
25
|
// Enhance theme colors using ColorManager
|
|
26
|
-
const enhanceThemeColors = useCallback((themeConfig)=> {
|
|
26
|
+
const enhanceThemeColors = useCallback((themeConfig: CompleteThemeConfig): CompleteThemeConfig => {
|
|
27
27
|
try {
|
|
28
28
|
const enhanced = { ...themeConfig };
|
|
29
29
|
|
|
@@ -35,14 +35,16 @@ export const ThemeProvider= ({
|
|
|
35
35
|
if (!enhanced.colors.primary.light || !enhanced.colors.primary.dark || !enhanced.colors.primary.contrast) {
|
|
36
36
|
const enhancedScale = ColorManager.generateColorScale({
|
|
37
37
|
baseColor,
|
|
38
|
-
generateShades,
|
|
39
|
-
generateContrast
|
|
38
|
+
generateShades: true,
|
|
39
|
+
generateContrast: true
|
|
40
|
+
});
|
|
40
41
|
|
|
41
42
|
enhanced.colors.primary = {
|
|
42
43
|
...enhanced.colors.primary,
|
|
43
|
-
light,
|
|
44
|
-
dark,
|
|
45
|
-
contrast
|
|
44
|
+
light: enhancedScale.light,
|
|
45
|
+
dark: enhancedScale.dark,
|
|
46
|
+
contrast: enhancedScale.contrast
|
|
47
|
+
};
|
|
46
48
|
}
|
|
47
49
|
}
|
|
48
50
|
|
|
@@ -62,7 +64,7 @@ export const ThemeProvider= ({
|
|
|
62
64
|
|
|
63
65
|
return enhanced;
|
|
64
66
|
} catch (err) {
|
|
65
|
-
console.warn('Failed to enhance theme colors, err);
|
|
67
|
+
console.warn('Failed to enhance theme colors:', err);
|
|
66
68
|
return themeConfig;
|
|
67
69
|
}
|
|
68
70
|
}, []);
|
|
@@ -75,7 +77,7 @@ export const ThemeProvider= ({
|
|
|
75
77
|
try {
|
|
76
78
|
themeInheritanceManager.registerTheme(name, theme);
|
|
77
79
|
} catch (err) {
|
|
78
|
-
console.warn(`Failed to register theme '${name}'
|
|
80
|
+
console.warn(`Failed to register theme '${name}':`, err);
|
|
79
81
|
}
|
|
80
82
|
});
|
|
81
83
|
|
|
@@ -87,14 +89,15 @@ export const ThemeProvider= ({
|
|
|
87
89
|
const persistence = createThemePersistence({
|
|
88
90
|
storageKey,
|
|
89
91
|
defaultTheme,
|
|
90
|
-
enableSystemPreference
|
|
92
|
+
enableSystemPreference: true
|
|
93
|
+
});
|
|
91
94
|
const persistedTheme = persistence.getStoredTheme();
|
|
92
95
|
if (persistedTheme && themes[persistedTheme]) {
|
|
93
96
|
setCurrentThemeState(persistedTheme);
|
|
94
97
|
}
|
|
95
98
|
}
|
|
96
99
|
} catch (err) {
|
|
97
|
-
setError(`Failed to initialize themes}`);
|
|
100
|
+
setError(`Failed to initialize themes: ${err instanceof Error ? err.message : 'Unknown error'}`);
|
|
98
101
|
} finally {
|
|
99
102
|
setIsLoading(false);
|
|
100
103
|
}
|
|
@@ -113,13 +116,13 @@ export const ThemeProvider= ({
|
|
|
113
116
|
// Apply the enhanced theme to CSS variables and load fonts
|
|
114
117
|
themeCSSUpdater.applyTheme(enhancedThemeConfig);
|
|
115
118
|
fontLoader.loadThemeFonts(enhancedThemeConfig.fonts).catch(err => {
|
|
116
|
-
console.warn(`Failed to load fonts for theme '${currentTheme}'
|
|
119
|
+
console.warn(`Failed to load fonts for theme '${currentTheme}':`, err);
|
|
117
120
|
});
|
|
118
121
|
}
|
|
119
122
|
|
|
120
123
|
setError(null);
|
|
121
124
|
} catch (err) {
|
|
122
|
-
const errorMessage = `Failed to load theme '${currentTheme}'}`;
|
|
125
|
+
const errorMessage = `Failed to load theme '${currentTheme}': ${err instanceof Error ? err.message : 'Unknown error'}`;
|
|
123
126
|
setError(errorMessage);
|
|
124
127
|
setCurrentThemeConfig(null);
|
|
125
128
|
console.error(errorMessage, err);
|
|
@@ -127,7 +130,7 @@ export const ThemeProvider= ({
|
|
|
127
130
|
}, [currentTheme, enhanceThemeColors]);
|
|
128
131
|
|
|
129
132
|
// Theme switching function
|
|
130
|
-
const setTheme = useCallback(async (themeName) => {
|
|
133
|
+
const setTheme = useCallback(async (themeName: string) => {
|
|
131
134
|
if (!themes[themeName]) {
|
|
132
135
|
setError(`Theme '${themeName}' not found`);
|
|
133
136
|
return;
|
|
@@ -162,25 +165,25 @@ export const ThemeProvider= ({
|
|
|
162
165
|
|
|
163
166
|
setError(null);
|
|
164
167
|
} catch (err) {
|
|
165
|
-
const errorMessage = `Failed to switch to theme '${themeName}'}`;
|
|
168
|
+
const errorMessage = `Failed to switch to theme '${themeName}': ${err instanceof Error ? err.message : 'Unknown error'}`;
|
|
166
169
|
setError(errorMessage);
|
|
167
170
|
console.error(errorMessage, err);
|
|
168
171
|
}
|
|
169
172
|
}, [themes, persistTheme, storageKey]);
|
|
170
173
|
|
|
171
174
|
// Add new theme
|
|
172
|
-
const addTheme = useCallback((name, theme) => {
|
|
175
|
+
const addTheme = useCallback((name: string, theme: MultiThemeConfig) => {
|
|
173
176
|
try {
|
|
174
177
|
themeInheritanceManager.registerTheme(name, theme);
|
|
175
178
|
setAvailableThemes(prev => [...prev, name]);
|
|
176
179
|
setError(null);
|
|
177
180
|
} catch (err) {
|
|
178
|
-
setError(`Failed to add theme '${name}'}`);
|
|
181
|
+
setError(`Failed to add theme '${name}': ${err instanceof Error ? err.message : 'Unknown error'}`);
|
|
179
182
|
}
|
|
180
183
|
}, []);
|
|
181
184
|
|
|
182
185
|
// Remove theme
|
|
183
|
-
const removeTheme = useCallback((name) => {
|
|
186
|
+
const removeTheme = useCallback((name: string) => {
|
|
184
187
|
try {
|
|
185
188
|
// Don't allow removing the current theme
|
|
186
189
|
if (name === currentTheme) {
|
|
@@ -194,22 +197,22 @@ export const ThemeProvider= ({
|
|
|
194
197
|
setAvailableThemes(prev => prev.filter(t => t !== name));
|
|
195
198
|
setError(null);
|
|
196
199
|
} catch (err) {
|
|
197
|
-
setError(`Failed to remove theme '${name}'}`);
|
|
200
|
+
setError(`Failed to remove theme '${name}': ${err instanceof Error ? err.message : 'Unknown error'}`);
|
|
198
201
|
}
|
|
199
202
|
}, [currentTheme]);
|
|
200
203
|
|
|
201
204
|
// Get theme by name
|
|
202
|
-
const getTheme = useCallback((name)=> {
|
|
205
|
+
const getTheme = useCallback((name: string): CompleteThemeConfig | null => {
|
|
203
206
|
try {
|
|
204
207
|
return themeInheritanceManager.getCompleteTheme(name);
|
|
205
208
|
} catch (err) {
|
|
206
|
-
setError(`Failed to get theme '${name}'}`);
|
|
209
|
+
setError(`Failed to get theme '${name}': ${err instanceof Error ? err.message : 'Unknown error'}`);
|
|
207
210
|
return null;
|
|
208
211
|
}
|
|
209
212
|
}, []);
|
|
210
213
|
|
|
211
214
|
// Context value
|
|
212
|
-
const contextValue= {
|
|
215
|
+
const contextValue: ThemeContextType = {
|
|
213
216
|
currentTheme,
|
|
214
217
|
currentThemeConfig,
|
|
215
218
|
availableThemes,
|