@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.8 → 0.2.10
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 +23 -1
- package/dist/components/ui/navigation/index.js +23 -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 +22 -2
- package/dist/components/ui/overlay/index.js +22 -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 +289 -280
- package/dist/index.js +289 -280
- 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/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 +15 -4
- package/dist/tokens/index.js +15 -4
- 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,17 +1,17 @@
|
|
|
1
1
|
import React, { useState, useEffect } from 'react';
|
|
2
2
|
import { Button } from './button';
|
|
3
3
|
import { useTheme } from '../../themes';
|
|
4
|
-
|
|
4
|
+
import type { MultiThemeConfig } from '../../themes';
|
|
5
5
|
|
|
6
6
|
export interface ThemeSwitcherProps {
|
|
7
|
-
themes
|
|
8
|
-
showPreview
|
|
9
|
-
showSystemTheme
|
|
10
|
-
className
|
|
11
|
-
variant
|
|
7
|
+
themes?: Record<string, MultiThemeConfig>;
|
|
8
|
+
showPreview?: boolean;
|
|
9
|
+
showSystemTheme?: boolean;
|
|
10
|
+
className?: string;
|
|
11
|
+
variant?: 'default' | 'compact' | 'detailed';
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
export const ThemeSwitcher= ({
|
|
14
|
+
export const ThemeSwitcher: React.FC<ThemeSwitcherProps> = ({
|
|
15
15
|
showPreview = true,
|
|
16
16
|
showSystemTheme = true,
|
|
17
17
|
className = '',
|
|
@@ -25,9 +25,9 @@ export const ThemeSwitcher= ({
|
|
|
25
25
|
useEffect(() => {
|
|
26
26
|
if (!showSystemTheme) return;
|
|
27
27
|
|
|
28
|
-
const mediaQuery = window.matchMedia('(prefers-color-scheme)');
|
|
29
|
-
const updateSystemTheme = (e) => {
|
|
30
|
-
setSystemTheme(e.matches ? 'dark' );
|
|
28
|
+
const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
|
|
29
|
+
const updateSystemTheme = (e: MediaQueryListEvent | MediaQueryList) => {
|
|
30
|
+
setSystemTheme(e.matches ? 'dark' : 'light');
|
|
31
31
|
};
|
|
32
32
|
|
|
33
33
|
updateSystemTheme(mediaQuery);
|
|
@@ -36,33 +36,35 @@ export const ThemeSwitcher= ({
|
|
|
36
36
|
return () => mediaQuery.removeEventListener('change', updateSystemTheme);
|
|
37
37
|
}, [showSystemTheme]);
|
|
38
38
|
|
|
39
|
-
const getThemeDisplayName = (theme) => {
|
|
40
|
-
const themeNames, string> = {
|
|
41
|
-
'stan-design',
|
|
42
|
-
'enterprise',
|
|
43
|
-
'harvey'
|
|
39
|
+
const getThemeDisplayName = (theme: string) => {
|
|
40
|
+
const themeNames: Record<string, string> = {
|
|
41
|
+
'stan-design': 'Stan Design',
|
|
42
|
+
'enterprise': 'Enterprise',
|
|
43
|
+
'harvey': 'Harvey Creative'
|
|
44
|
+
};
|
|
44
45
|
return themeNames[theme] || theme;
|
|
45
46
|
};
|
|
46
47
|
|
|
47
|
-
const getThemeEmoji = (theme) => {
|
|
48
|
-
const themeEmojis, string> = {
|
|
49
|
-
'stan-design',
|
|
50
|
-
'enterprise',
|
|
51
|
-
'harvey'
|
|
48
|
+
const getThemeEmoji = (theme: string) => {
|
|
49
|
+
const themeEmojis: Record<string, string> = {
|
|
50
|
+
'stan-design': '⚡',
|
|
51
|
+
'enterprise': '🏢',
|
|
52
|
+
'harvey': '🎨'
|
|
53
|
+
};
|
|
52
54
|
return themeEmojis[theme] || '🎯';
|
|
53
55
|
};
|
|
54
56
|
|
|
55
|
-
const getThemeDescription = (theme) => {
|
|
57
|
+
const getThemeDescription = (theme: string) => {
|
|
56
58
|
const themeConfig = getTheme(theme);
|
|
57
59
|
return themeConfig?.meta?.description || 'Custom theme';
|
|
58
60
|
};
|
|
59
61
|
|
|
60
|
-
const getThemeCategory = (theme) => {
|
|
62
|
+
const getThemeCategory = (theme: string) => {
|
|
61
63
|
const themeConfig = getTheme(theme);
|
|
62
64
|
return themeConfig?.meta?.category || 'custom';
|
|
63
65
|
};
|
|
64
66
|
|
|
65
|
-
const handleThemeSwitch = (themeName) => {
|
|
67
|
+
const handleThemeSwitch = (themeName: string) => {
|
|
66
68
|
setTheme(themeName);
|
|
67
69
|
// Close preview if open
|
|
68
70
|
if (showThemePreview) {
|
|
@@ -82,11 +84,12 @@ export const ThemeSwitcher= ({
|
|
|
82
84
|
|
|
83
85
|
const renderCompactSwitcher = () => (
|
|
84
86
|
<div className="flex items-center gap-2">
|
|
85
|
-
<span className="text-sm text-gray-600 dark
|
|
87
|
+
<span className="text-sm text-gray-600 dark:text-gray-400">Theme:</span>
|
|
88
|
+
<div className="flex gap-1">
|
|
86
89
|
{availableThemes.map((theme) => (
|
|
87
90
|
<Button
|
|
88
91
|
key={theme}
|
|
89
|
-
variant={currentTheme === theme ? "default" }
|
|
92
|
+
variant={currentTheme === theme ? "default" : "outline"}
|
|
90
93
|
size="sm"
|
|
91
94
|
onClick={() => handleThemeSwitch(theme)}
|
|
92
95
|
className="text-xs"
|
|
@@ -107,11 +110,12 @@ export const ThemeSwitcher= ({
|
|
|
107
110
|
size="sm"
|
|
108
111
|
onClick={() => setShowThemePreview(!showThemePreview)}
|
|
109
112
|
>
|
|
110
|
-
{showThemePreview ? 'Hide' } Preview
|
|
113
|
+
{showThemePreview ? 'Hide' : 'Show'} Preview
|
|
111
114
|
</Button>
|
|
112
115
|
</div>
|
|
113
116
|
|
|
114
|
-
<div className="grid grid-cols-1 md
|
|
117
|
+
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
|
|
118
|
+
{availableThemes.map((theme) => {
|
|
115
119
|
const isActive = currentTheme === theme;
|
|
116
120
|
|
|
117
121
|
return (
|
|
@@ -119,24 +123,31 @@ export const ThemeSwitcher= ({
|
|
|
119
123
|
key={theme}
|
|
120
124
|
className={`p-4 rounded-lg border-2 transition-all duration-200 cursor-pointer ${
|
|
121
125
|
isActive
|
|
122
|
-
? 'border-blue-500 bg-blue-50 dark
|
|
126
|
+
? 'border-blue-500 bg-blue-50 dark:bg-blue-900/20'
|
|
127
|
+
: 'border-gray-200 dark:border-gray-700 hover:border-gray-300 dark:hover:border-gray-600'
|
|
128
|
+
}`}
|
|
123
129
|
onClick={() => handleThemeSwitch(theme)}
|
|
124
130
|
>
|
|
125
131
|
<div className="flex items-center gap-3 mb-3">
|
|
126
132
|
<span className="text-2xl">{getThemeEmoji(theme)}</span>
|
|
127
133
|
<div>
|
|
128
|
-
<h4 className="font-semibold text-gray-900 dark
|
|
134
|
+
<h4 className="font-semibold text-gray-900 dark:text-gray-100">
|
|
135
|
+
{getThemeDisplayName(theme)}
|
|
129
136
|
</h4>
|
|
130
|
-
<p className="text-sm text-gray-500 dark
|
|
137
|
+
<p className="text-sm text-gray-500 dark:text-gray-400">
|
|
138
|
+
{getThemeCategory(theme)}
|
|
131
139
|
</p>
|
|
132
140
|
</div>
|
|
133
141
|
</div>
|
|
134
142
|
|
|
135
|
-
<p className="text-sm text-gray-600 dark
|
|
143
|
+
<p className="text-sm text-gray-600 dark:text-gray-300 mb-3">
|
|
144
|
+
{getThemeDescription(theme)}
|
|
136
145
|
</p>
|
|
137
146
|
|
|
138
147
|
{isActive && (
|
|
139
|
-
<div className="flex items-center gap-2 text-blue-600 dark
|
|
148
|
+
<div className="flex items-center gap-2 text-blue-600 dark:text-blue-400">
|
|
149
|
+
<div className="w-2 h-2 bg-blue-600 dark:bg-blue-400 rounded-full"></div>
|
|
150
|
+
<span className="text-sm font-medium">Active</span>
|
|
140
151
|
</div>
|
|
141
152
|
)}
|
|
142
153
|
</div>
|
|
@@ -145,9 +156,14 @@ export const ThemeSwitcher= ({
|
|
|
145
156
|
</div>
|
|
146
157
|
|
|
147
158
|
{showSystemTheme && (
|
|
148
|
-
<div className="mt-6 p-4 bg-gray-50 dark
|
|
159
|
+
<div className="mt-6 p-4 bg-gray-50 dark:bg-gray-800 rounded-lg">
|
|
160
|
+
<div className="flex items-center justify-between">
|
|
149
161
|
<div>
|
|
150
|
-
<h4 className="font-medium text-gray-900 dark
|
|
162
|
+
<h4 className="font-medium text-gray-900 dark:text-gray-100">
|
|
163
|
+
System Theme Detection
|
|
164
|
+
</h4>
|
|
165
|
+
<p className="text-sm text-gray-600 dark:text-gray-400">
|
|
166
|
+
Current system preference: {systemTheme}
|
|
151
167
|
</p>
|
|
152
168
|
</div>
|
|
153
169
|
<Button
|
|
@@ -166,11 +182,12 @@ export const ThemeSwitcher= ({
|
|
|
166
182
|
const renderDefaultSwitcher = () => (
|
|
167
183
|
<div className="space-y-3">
|
|
168
184
|
<div className="flex items-center gap-2">
|
|
169
|
-
<span className="text-sm font-medium text-gray-700 dark
|
|
185
|
+
<span className="text-sm font-medium text-gray-700 dark:text-gray-300">Theme:</span>
|
|
186
|
+
<div className="flex gap-2">
|
|
170
187
|
{availableThemes.map((theme) => (
|
|
171
188
|
<Button
|
|
172
189
|
key={theme}
|
|
173
|
-
variant={currentTheme === theme ? "default" }
|
|
190
|
+
variant={currentTheme === theme ? "default" : "outline"}
|
|
174
191
|
size="sm"
|
|
175
192
|
onClick={() => handleThemeSwitch(theme)}
|
|
176
193
|
className="text-sm"
|
|
@@ -189,13 +206,15 @@ export const ThemeSwitcher= ({
|
|
|
189
206
|
onClick={() => setShowThemePreview(!showThemePreview)}
|
|
190
207
|
className="text-xs"
|
|
191
208
|
>
|
|
192
|
-
{showThemePreview ? 'Hide' } Theme Details
|
|
209
|
+
{showThemePreview ? 'Hide' : 'Show'} Theme Details
|
|
193
210
|
</Button>
|
|
194
211
|
</div>
|
|
195
212
|
)}
|
|
196
213
|
|
|
197
214
|
{showThemePreview && (
|
|
198
|
-
<div className="mt-3 p-3 bg-gray-50 dark
|
|
215
|
+
<div className="mt-3 p-3 bg-gray-50 dark:bg-gray-800 rounded-lg">
|
|
216
|
+
<div className="grid grid-cols-1 sm:grid-cols-2 gap-3">
|
|
217
|
+
{availableThemes.map((theme) => {
|
|
199
218
|
const isActive = currentTheme === theme;
|
|
200
219
|
|
|
201
220
|
return (
|
|
@@ -203,15 +222,19 @@ export const ThemeSwitcher= ({
|
|
|
203
222
|
key={theme}
|
|
204
223
|
className={`p-2 rounded border text-xs ${
|
|
205
224
|
isActive
|
|
206
|
-
? 'border-blue-300 bg-blue-50 dark
|
|
225
|
+
? 'border-blue-300 bg-blue-50 dark:bg-blue-900/20'
|
|
226
|
+
: 'border-gray-200 dark:border-gray-700'
|
|
227
|
+
}`}
|
|
207
228
|
>
|
|
208
229
|
<div className="flex items-center gap-2 mb-1">
|
|
209
230
|
<span>{getThemeEmoji(theme)}</span>
|
|
210
231
|
<span className="font-medium">{getThemeDisplayName(theme)}</span>
|
|
211
232
|
{isActive && (
|
|
212
|
-
<span className="text-blue-600 dark
|
|
233
|
+
<span className="text-blue-600 dark:text-blue-400 text-xs">●</span>
|
|
234
|
+
)}
|
|
213
235
|
</div>
|
|
214
|
-
<p className="text-gray-600 dark
|
|
236
|
+
<p className="text-gray-600 dark:text-gray-400">
|
|
237
|
+
{getThemeDescription(theme)}
|
|
215
238
|
</p>
|
|
216
239
|
</div>
|
|
217
240
|
);
|
|
@@ -224,9 +247,12 @@ export const ThemeSwitcher= ({
|
|
|
224
247
|
|
|
225
248
|
const renderContent = () => {
|
|
226
249
|
switch (variant) {
|
|
227
|
-
case 'compact'
|
|
228
|
-
|
|
229
|
-
|
|
250
|
+
case 'compact':
|
|
251
|
+
return renderCompactSwitcher();
|
|
252
|
+
case 'detailed':
|
|
253
|
+
return renderDetailedSwitcher();
|
|
254
|
+
default:
|
|
255
|
+
return renderDefaultSwitcher();
|
|
230
256
|
}
|
|
231
257
|
};
|
|
232
258
|
|
|
@@ -2,7 +2,7 @@ import React, { useState, useEffect } from 'react';
|
|
|
2
2
|
import { Button } from './button';
|
|
3
3
|
import { Moon, Sun } from 'lucide-react';
|
|
4
4
|
|
|
5
|
-
export const ThemeToggle= () => {
|
|
5
|
+
export const ThemeToggle: React.FC = () => {
|
|
6
6
|
const [isDark, setIsDark] = useState(false);
|
|
7
7
|
|
|
8
8
|
useEffect(() => {
|
|
@@ -30,9 +30,9 @@ export const ThemeToggle= () => {
|
|
|
30
30
|
size="sm"
|
|
31
31
|
onClick={toggleTheme}
|
|
32
32
|
className="h-8 w-8 px-0"
|
|
33
|
-
aria-label={`Switch to ${isDark ? 'light' } mode`}
|
|
33
|
+
aria-label={`Switch to ${isDark ? 'light' : 'dark'} mode`}
|
|
34
34
|
>
|
|
35
|
-
{isDark ? <Sun className="h-4 w-4" /> ="h-4 w-4" />}
|
|
35
|
+
{isDark ? <Sun className="h-4 w-4" /> : <Moon className="h-4 w-4" />}
|
|
36
36
|
</Button>
|
|
37
37
|
);
|
|
38
38
|
};
|
|
@@ -2,7 +2,7 @@ import React, { useState, useEffect } from 'react';
|
|
|
2
2
|
import { Button } from './button';
|
|
3
3
|
import { Moon, Sun } from 'lucide-react';
|
|
4
4
|
|
|
5
|
-
export const ThemeToggle= () => {
|
|
5
|
+
export const ThemeToggle: React.FC = () => {
|
|
6
6
|
const [isDark, setIsDark] = useState(false);
|
|
7
7
|
|
|
8
8
|
useEffect(() => {
|
|
@@ -30,9 +30,9 @@ export const ThemeToggle= () => {
|
|
|
30
30
|
size="sm"
|
|
31
31
|
onClick={toggleTheme}
|
|
32
32
|
className="h-8 w-8 px-0"
|
|
33
|
-
aria-label={`Switch to ${isDark ? 'light' } mode`}
|
|
33
|
+
aria-label={`Switch to ${isDark ? 'light' : 'dark'} mode`}
|
|
34
34
|
>
|
|
35
|
-
{isDark ? <Sun className="h-4 w-4" /> ="h-4 w-4" />}
|
|
35
|
+
{isDark ? <Sun className="h-4 w-4" /> : <Moon className="h-4 w-4" />}
|
|
36
36
|
</Button>
|
|
37
37
|
);
|
|
38
38
|
};
|
|
@@ -5,7 +5,7 @@ import { Button } from './button';
|
|
|
5
5
|
import { useTheme } from '../../themes';
|
|
6
6
|
import { createTokenManager } from '../../tokens';
|
|
7
7
|
|
|
8
|
-
export const TokenDemo= () => {
|
|
8
|
+
export const TokenDemo: React.FC = () => {
|
|
9
9
|
const { currentTheme, currentThemeConfig } = useTheme();
|
|
10
10
|
const [tokenManager] = useState(() => createTokenManager());
|
|
11
11
|
const [exportFormat, setExportFormat] = useState<'json' | 'css' | 'scss' | 'js' | 'ts'>('json');
|
|
@@ -36,7 +36,7 @@ export const TokenDemo= () => {
|
|
|
36
36
|
const allFormats = ['json', 'css', 'scss', 'js', 'ts'] as const;
|
|
37
37
|
const results = allFormats.map(format => ({
|
|
38
38
|
format,
|
|
39
|
-
content, format)
|
|
39
|
+
content: tokenManager.exportTokens(tokens, format)
|
|
40
40
|
}));
|
|
41
41
|
|
|
42
42
|
const combined = results.map(r => `=== ${r.format.toUpperCase()} ===\n${r.content}\n\n`).join('');
|
|
@@ -79,7 +79,9 @@ export const TokenDemo= () => {
|
|
|
79
79
|
</div>
|
|
80
80
|
|
|
81
81
|
<div className="flex items-center gap-4">
|
|
82
|
-
<label className="text-sm font-medium">Export Format
|
|
82
|
+
<label className="text-sm font-medium">Export Format:</label>
|
|
83
|
+
<select
|
|
84
|
+
value={exportFormat}
|
|
83
85
|
onChange={(e) => setExportFormat(e.target.value as any)}
|
|
84
86
|
className="px-3 py-1 border rounded text-sm"
|
|
85
87
|
>
|
|
@@ -92,26 +94,34 @@ export const TokenDemo= () => {
|
|
|
92
94
|
</div>
|
|
93
95
|
|
|
94
96
|
{tokenStats && (
|
|
95
|
-
<div className="p-4 bg-gray-50 dark
|
|
96
|
-
<
|
|
97
|
+
<div className="p-4 bg-gray-50 dark:bg-gray-800 rounded-lg">
|
|
98
|
+
<h4 className="font-semibold mb-3">Token Statistics</h4>
|
|
99
|
+
<div className="grid grid-cols-2 md:grid-cols-4 gap-4 text-sm">
|
|
100
|
+
<div>
|
|
101
|
+
<span className="font-medium">Total Themes:</span>
|
|
102
|
+
<div className="text-lg font-bold">{tokenStats.totalThemes}</div>
|
|
97
103
|
</div>
|
|
98
104
|
<div>
|
|
99
|
-
<span className="font-medium">Total Tokens
|
|
105
|
+
<span className="font-medium">Total Tokens:</span>
|
|
106
|
+
<div className="text-lg font-bold">{tokenStats.totalTokens}</div>
|
|
100
107
|
</div>
|
|
101
108
|
<div>
|
|
102
|
-
<span className="font-medium">Current Theme
|
|
109
|
+
<span className="font-medium">Current Theme:</span>
|
|
110
|
+
<div className="text-lg font-bold">{currentTheme}</div>
|
|
103
111
|
</div>
|
|
104
112
|
<div>
|
|
105
|
-
<span className="font-medium">Theme Version
|
|
113
|
+
<span className="font-medium">Theme Version:</span>
|
|
114
|
+
<div className="text-lg font-bold">{currentThemeConfig?.meta.version || 'N/A'}</div>
|
|
106
115
|
</div>
|
|
107
116
|
</div>
|
|
108
117
|
|
|
109
118
|
{tokenStats.tokenBreakdown && (
|
|
110
119
|
<div className="mt-4">
|
|
111
|
-
<h5 className="font-medium mb-2">Token Breakdown
|
|
120
|
+
<h5 className="font-medium mb-2">Token Breakdown:</h5>
|
|
121
|
+
<div className="flex flex-wrap gap-2">
|
|
112
122
|
{Object.entries(tokenStats.tokenBreakdown).map(([category, count]) => (
|
|
113
123
|
<Badge key={category} variant="secondary">
|
|
114
|
-
{category}}
|
|
124
|
+
{category}: {count as number}
|
|
115
125
|
</Badge>
|
|
116
126
|
))}
|
|
117
127
|
</div>
|
|
@@ -156,23 +166,25 @@ export const TokenDemo= () => {
|
|
|
156
166
|
</CardDescription>
|
|
157
167
|
</CardHeader>
|
|
158
168
|
<CardContent>
|
|
159
|
-
<div className="grid grid-cols-1 md
|
|
169
|
+
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
170
|
+
<div>
|
|
171
|
+
<h4 className="font-medium mb-2">Theme Details</h4>
|
|
160
172
|
<div className="space-y-2 text-sm">
|
|
161
|
-
<div><span className="font-medium">Name}</div>
|
|
162
|
-
<div><span className="font-medium">Description}</div>
|
|
163
|
-
<div><span className="font-medium">Category}</div>
|
|
164
|
-
<div><span className="font-medium">Version}</div>
|
|
165
|
-
<div><span className="font-medium">Author}</div>
|
|
173
|
+
<div><span className="font-medium">Name:</span> {currentThemeConfig?.meta.name}</div>
|
|
174
|
+
<div><span className="font-medium">Description:</span> {currentThemeConfig?.meta.description}</div>
|
|
175
|
+
<div><span className="font-medium">Category:</span> {currentThemeConfig?.meta.category}</div>
|
|
176
|
+
<div><span className="font-medium">Version:</span> {currentThemeConfig?.meta.version}</div>
|
|
177
|
+
<div><span className="font-medium">Author:</span> {currentThemeConfig?.meta.author}</div>
|
|
166
178
|
</div>
|
|
167
179
|
</div>
|
|
168
180
|
<div>
|
|
169
181
|
<h4 className="font-medium mb-2">Font Configuration</h4>
|
|
170
182
|
<div className="space-y-2 text-sm">
|
|
171
|
-
<div><span className="font-medium">Primary}</div>
|
|
172
|
-
<div><span className="font-medium">Secondary}</div>
|
|
173
|
-
<div><span className="font-medium">Display}</div>
|
|
174
|
-
<div><span className="font-medium">Body}</div>
|
|
175
|
-
<div><span className="font-medium">Mono}</div>
|
|
183
|
+
<div><span className="font-medium">Primary:</span> {currentThemeConfig?.fonts.primary.family}</div>
|
|
184
|
+
<div><span className="font-medium">Secondary:</span> {currentThemeConfig?.fonts.secondary.family}</div>
|
|
185
|
+
<div><span className="font-medium">Display:</span> {currentThemeConfig?.fonts.display.family}</div>
|
|
186
|
+
<div><span className="font-medium">Body:</span> {currentThemeConfig?.fonts.body.family}</div>
|
|
187
|
+
<div><span className="font-medium">Mono:</span> {currentThemeConfig?.fonts.mono.family}</div>
|
|
176
188
|
</div>
|
|
177
189
|
</div>
|
|
178
190
|
</div>
|
|
@@ -5,7 +5,7 @@ import { Button } from './button';
|
|
|
5
5
|
import { useTheme } from '../../themes';
|
|
6
6
|
import { createTokenManager } from '../../tokens';
|
|
7
7
|
|
|
8
|
-
export const TokenDemo= () => {
|
|
8
|
+
export const TokenDemo: React.FC = () => {
|
|
9
9
|
const { currentTheme, currentThemeConfig } = useTheme();
|
|
10
10
|
const [tokenManager] = useState(() => createTokenManager());
|
|
11
11
|
const [exportFormat, setExportFormat] = useState<'json' | 'css' | 'scss' | 'js' | 'ts'>('json');
|
|
@@ -36,7 +36,7 @@ export const TokenDemo= () => {
|
|
|
36
36
|
const allFormats = ['json', 'css', 'scss', 'js', 'ts'] as const;
|
|
37
37
|
const results = allFormats.map(format => ({
|
|
38
38
|
format,
|
|
39
|
-
content, format)
|
|
39
|
+
content: tokenManager.exportTokens(tokens, format)
|
|
40
40
|
}));
|
|
41
41
|
|
|
42
42
|
const combined = results.map(r => `=== ${r.format.toUpperCase()} ===\n${r.content}\n\n`).join('');
|
|
@@ -79,7 +79,9 @@ export const TokenDemo= () => {
|
|
|
79
79
|
</div>
|
|
80
80
|
|
|
81
81
|
<div className="flex items-center gap-4">
|
|
82
|
-
<label className="text-sm font-medium">Export Format
|
|
82
|
+
<label className="text-sm font-medium">Export Format:</label>
|
|
83
|
+
<select
|
|
84
|
+
value={exportFormat}
|
|
83
85
|
onChange={(e) => setExportFormat(e.target.value as any)}
|
|
84
86
|
className="px-3 py-1 border rounded text-sm"
|
|
85
87
|
>
|
|
@@ -92,26 +94,34 @@ export const TokenDemo= () => {
|
|
|
92
94
|
</div>
|
|
93
95
|
|
|
94
96
|
{tokenStats && (
|
|
95
|
-
<div className="p-4 bg-gray-50 dark
|
|
96
|
-
<
|
|
97
|
+
<div className="p-4 bg-gray-50 dark:bg-gray-800 rounded-lg">
|
|
98
|
+
<h4 className="font-semibold mb-3">Token Statistics</h4>
|
|
99
|
+
<div className="grid grid-cols-2 md:grid-cols-4 gap-4 text-sm">
|
|
100
|
+
<div>
|
|
101
|
+
<span className="font-medium">Total Themes:</span>
|
|
102
|
+
<div className="text-lg font-bold">{tokenStats.totalThemes}</div>
|
|
97
103
|
</div>
|
|
98
104
|
<div>
|
|
99
|
-
<span className="font-medium">Total Tokens
|
|
105
|
+
<span className="font-medium">Total Tokens:</span>
|
|
106
|
+
<div className="text-lg font-bold">{tokenStats.totalTokens}</div>
|
|
100
107
|
</div>
|
|
101
108
|
<div>
|
|
102
|
-
<span className="font-medium">Current Theme
|
|
109
|
+
<span className="font-medium">Current Theme:</span>
|
|
110
|
+
<div className="text-lg font-bold">{currentTheme}</div>
|
|
103
111
|
</div>
|
|
104
112
|
<div>
|
|
105
|
-
<span className="font-medium">Theme Version
|
|
113
|
+
<span className="font-medium">Theme Version:</span>
|
|
114
|
+
<div className="text-lg font-bold">{currentThemeConfig?.meta.version || 'N/A'}</div>
|
|
106
115
|
</div>
|
|
107
116
|
</div>
|
|
108
117
|
|
|
109
118
|
{tokenStats.tokenBreakdown && (
|
|
110
119
|
<div className="mt-4">
|
|
111
|
-
<h5 className="font-medium mb-2">Token Breakdown
|
|
120
|
+
<h5 className="font-medium mb-2">Token Breakdown:</h5>
|
|
121
|
+
<div className="flex flex-wrap gap-2">
|
|
112
122
|
{Object.entries(tokenStats.tokenBreakdown).map(([category, count]) => (
|
|
113
123
|
<Badge key={category} variant="secondary">
|
|
114
|
-
{category}}
|
|
124
|
+
{category}: {count as number}
|
|
115
125
|
</Badge>
|
|
116
126
|
))}
|
|
117
127
|
</div>
|
|
@@ -156,23 +166,25 @@ export const TokenDemo= () => {
|
|
|
156
166
|
</CardDescription>
|
|
157
167
|
</CardHeader>
|
|
158
168
|
<CardContent>
|
|
159
|
-
<div className="grid grid-cols-1 md
|
|
169
|
+
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
170
|
+
<div>
|
|
171
|
+
<h4 className="font-medium mb-2">Theme Details</h4>
|
|
160
172
|
<div className="space-y-2 text-sm">
|
|
161
|
-
<div><span className="font-medium">Name}</div>
|
|
162
|
-
<div><span className="font-medium">Description}</div>
|
|
163
|
-
<div><span className="font-medium">Category}</div>
|
|
164
|
-
<div><span className="font-medium">Version}</div>
|
|
165
|
-
<div><span className="font-medium">Author}</div>
|
|
173
|
+
<div><span className="font-medium">Name:</span> {currentThemeConfig?.meta.name}</div>
|
|
174
|
+
<div><span className="font-medium">Description:</span> {currentThemeConfig?.meta.description}</div>
|
|
175
|
+
<div><span className="font-medium">Category:</span> {currentThemeConfig?.meta.category}</div>
|
|
176
|
+
<div><span className="font-medium">Version:</span> {currentThemeConfig?.meta.version}</div>
|
|
177
|
+
<div><span className="font-medium">Author:</span> {currentThemeConfig?.meta.author}</div>
|
|
166
178
|
</div>
|
|
167
179
|
</div>
|
|
168
180
|
<div>
|
|
169
181
|
<h4 className="font-medium mb-2">Font Configuration</h4>
|
|
170
182
|
<div className="space-y-2 text-sm">
|
|
171
|
-
<div><span className="font-medium">Primary}</div>
|
|
172
|
-
<div><span className="font-medium">Secondary}</div>
|
|
173
|
-
<div><span className="font-medium">Display}</div>
|
|
174
|
-
<div><span className="font-medium">Body}</div>
|
|
175
|
-
<div><span className="font-medium">Mono}</div>
|
|
183
|
+
<div><span className="font-medium">Primary:</span> {currentThemeConfig?.fonts.primary.family}</div>
|
|
184
|
+
<div><span className="font-medium">Secondary:</span> {currentThemeConfig?.fonts.secondary.family}</div>
|
|
185
|
+
<div><span className="font-medium">Display:</span> {currentThemeConfig?.fonts.display.family}</div>
|
|
186
|
+
<div><span className="font-medium">Body:</span> {currentThemeConfig?.fonts.body.family}</div>
|
|
187
|
+
<div><span className="font-medium">Mono:</span> {currentThemeConfig?.fonts.mono.family}</div>
|
|
176
188
|
</div>
|
|
177
189
|
</div>
|
|
178
190
|
</div>
|