@kilivi/payloadcms-theme-management 1.1.2 → 2.1.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/README.md +318 -847
- package/dist/components/AppearanceSessionControls.d.ts +15 -0
- package/dist/components/AppearanceSessionControls.d.ts.map +1 -0
- package/dist/components/AppearanceSessionControls.js +152 -0
- package/dist/components/AppearanceSessionControls.js.map +1 -0
- package/dist/components/ColorModeToggle.css +42 -0
- package/dist/components/ColorModeToggle.d.ts +40 -0
- package/dist/components/ColorModeToggle.d.ts.map +1 -0
- package/dist/components/ColorModeToggle.js +111 -0
- package/dist/components/ColorModeToggle.js.map +1 -0
- package/dist/components/ServerThemeInjector.d.ts.map +1 -1
- package/dist/components/ServerThemeInjector.js +41 -14
- package/dist/components/ServerThemeInjector.js.map +1 -1
- package/dist/components/ThemeLivePreviewSync.d.ts +1 -0
- package/dist/components/ThemeLivePreviewSync.d.ts.map +1 -1
- package/dist/components/ThemeLivePreviewSync.js +1 -1
- package/dist/components/ThemeLivePreviewSync.js.map +1 -1
- package/dist/components/ThemeSwitcher.d.ts +36 -0
- package/dist/components/ThemeSwitcher.d.ts.map +1 -0
- package/dist/components/ThemeSwitcher.js +89 -0
- package/dist/components/ThemeSwitcher.js.map +1 -0
- package/dist/components/typographyPreviewUtils.d.ts.map +1 -1
- package/dist/components/typographyPreviewUtils.js +8 -1
- package/dist/components/typographyPreviewUtils.js.map +1 -1
- package/dist/constants/devicePreviews.d.ts +35 -0
- package/dist/constants/devicePreviews.d.ts.map +1 -0
- package/dist/constants/devicePreviews.js +43 -0
- package/dist/constants/devicePreviews.js.map +1 -0
- package/dist/constants/themeFonts.js +9 -9
- package/dist/constants/themeFonts.js.map +1 -1
- package/dist/extended-presets.d.ts +0 -4
- package/dist/extended-presets.d.ts.map +1 -1
- package/dist/extended-presets.js +1 -18
- package/dist/extended-presets.js.map +1 -1
- package/dist/extended-themes.d.ts.map +1 -1
- package/dist/extended-themes.js +428 -0
- package/dist/extended-themes.js.map +1 -1
- package/dist/fields/AccessibilityAuditField.d.ts +2 -0
- package/dist/fields/AccessibilityAuditField.d.ts.map +1 -0
- package/dist/fields/AccessibilityAuditField.js +303 -0
- package/dist/fields/AccessibilityAuditField.js.map +1 -0
- package/dist/fields/AppearancePreviewField.d.ts +2 -0
- package/dist/fields/AppearancePreviewField.d.ts.map +1 -0
- package/dist/fields/AppearancePreviewField.js +763 -0
- package/dist/fields/AppearancePreviewField.js.map +1 -0
- package/dist/fields/ColorPickerField.d.ts.map +1 -1
- package/dist/fields/ColorPickerField.js +89 -85
- package/dist/fields/ColorPickerField.js.map +1 -1
- package/dist/fields/FontSelectField.d.ts +6 -0
- package/dist/fields/FontSelectField.d.ts.map +1 -1
- package/dist/fields/FontSelectField.js +195 -122
- package/dist/fields/FontSelectField.js.map +1 -1
- package/dist/fields/PaletteGeneratorField.d.ts +7 -0
- package/dist/fields/PaletteGeneratorField.d.ts.map +1 -0
- package/dist/fields/PaletteGeneratorField.js +327 -0
- package/dist/fields/PaletteGeneratorField.js.map +1 -0
- package/dist/fields/StylePresetField.d.ts +3 -0
- package/dist/fields/StylePresetField.d.ts.map +1 -0
- package/dist/fields/StylePresetField.js +462 -0
- package/dist/fields/StylePresetField.js.map +1 -0
- package/dist/fields/ThemeColorPickerField.css +115 -35
- package/dist/fields/ThemeColorPickerField.d.ts.map +1 -1
- package/dist/fields/ThemeColorPickerField.js +204 -70
- package/dist/fields/ThemeColorPickerField.js.map +1 -1
- package/dist/fields/ThemeExportField.d.ts +6 -0
- package/dist/fields/ThemeExportField.d.ts.map +1 -0
- package/dist/fields/ThemeExportField.js +202 -0
- package/dist/fields/ThemeExportField.js.map +1 -0
- package/dist/fields/ThemePresetImportField.d.ts.map +1 -1
- package/dist/fields/ThemePresetImportField.js +56 -25
- package/dist/fields/ThemePresetImportField.js.map +1 -1
- package/dist/fields/ThemePreviewField.css +382 -5
- package/dist/fields/ThemePreviewField.d.ts.map +1 -1
- package/dist/fields/ThemePreviewField.js +268 -170
- package/dist/fields/ThemePreviewField.js.map +1 -1
- package/dist/fields/ThemeTokenSelectField.d.ts.map +1 -1
- package/dist/fields/ThemeTokenSelectField.js +278 -80
- package/dist/fields/ThemeTokenSelectField.js.map +1 -1
- package/dist/fields/colorFieldHelpers.d.ts +90 -0
- package/dist/fields/colorFieldHelpers.d.ts.map +1 -0
- package/dist/fields/colorFieldHelpers.js +133 -0
- package/dist/fields/colorFieldHelpers.js.map +1 -0
- package/dist/fields/colorModeFields.d.ts +1 -1
- package/dist/fields/colorModeFields.d.ts.map +1 -1
- package/dist/fields/colorModeFields.js +49 -7
- package/dist/fields/colorModeFields.js.map +1 -1
- package/dist/fields/themeConfigurationField.d.ts +8 -1
- package/dist/fields/themeConfigurationField.d.ts.map +1 -1
- package/dist/fields/themeConfigurationField.js +961 -29
- package/dist/fields/themeConfigurationField.js.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/FontPreview.d.ts.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/FontPreview.js +8 -4
- package/dist/globals/ThemeSettings/FontPicker/FontPreview.js.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/index.d.ts.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/index.js +81 -26
- package/dist/globals/ThemeSettings/FontPicker/index.js.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/styles.css +98 -41
- package/dist/globals/ThemeSettings/FontPicker/translations.d.ts +6 -0
- package/dist/globals/ThemeSettings/FontPicker/translations.d.ts.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/translations.js +14 -2
- package/dist/globals/ThemeSettings/FontPicker/translations.js.map +1 -1
- package/dist/globals/ThemeSettings/config.d.ts.map +1 -1
- package/dist/globals/ThemeSettings/config.js +76 -79
- package/dist/globals/ThemeSettings/config.js.map +1 -1
- package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.d.ts.map +1 -1
- package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.js +63 -62
- package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.js.map +1 -1
- package/dist/globals/ThemeSettings/fields/TypographyInfoField.d.ts.map +1 -1
- package/dist/globals/ThemeSettings/fields/TypographyInfoField.js +22 -25
- package/dist/globals/ThemeSettings/fields/TypographyInfoField.js.map +1 -1
- package/dist/hooks/useAppearanceSession.d.ts +50 -0
- package/dist/hooks/useAppearanceSession.d.ts.map +1 -0
- package/dist/hooks/useAppearanceSession.js +91 -0
- package/dist/hooks/useAppearanceSession.js.map +1 -0
- package/dist/hooks/useThemeTranslations.d.ts +13 -0
- package/dist/hooks/useThemeTranslations.d.ts.map +1 -0
- package/dist/hooks/useThemeTranslations.js +22 -0
- package/dist/hooks/useThemeTranslations.js.map +1 -0
- package/dist/i18n.d.ts +53 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +53 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +10 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +130 -32
- package/dist/index.js.map +1 -1
- package/dist/payload-types.d.ts +24 -0
- package/dist/payload-types.d.ts.map +1 -1
- package/dist/payload-types.js.map +1 -1
- package/dist/presets.d.ts +8 -0
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js.map +1 -1
- package/dist/providers/Theme/index.d.ts.map +1 -1
- package/dist/providers/Theme/index.js +75 -11
- package/dist/providers/Theme/index.js.map +1 -1
- package/dist/providers/Theme/themeConfig.d.ts.map +1 -1
- package/dist/providers/Theme/themeConfig.js +104 -0
- package/dist/providers/Theme/themeConfig.js.map +1 -1
- package/dist/providers/Theme/types.d.ts +1 -1
- package/dist/providers/Theme/types.d.ts.map +1 -1
- package/dist/providers/Theme/types.js +10 -1
- package/dist/providers/Theme/types.js.map +1 -1
- package/dist/style-presets.d.ts +66 -0
- package/dist/style-presets.d.ts.map +1 -0
- package/dist/style-presets.js +556 -0
- package/dist/style-presets.js.map +1 -0
- package/dist/translations.d.ts +159 -1
- package/dist/translations.d.ts.map +1 -1
- package/dist/translations.js +310 -9
- package/dist/translations.js.map +1 -1
- package/dist/tweakcn-special-themes.d.ts.map +1 -1
- package/dist/tweakcn-special-themes.js +585 -9
- package/dist/tweakcn-special-themes.js.map +1 -1
- package/dist/types/css.d.js +3 -0
- package/dist/types/css.d.js.map +1 -0
- package/dist/types.d.ts +30 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utilities/getThemeSettings.d.ts.map +1 -1
- package/dist/utilities/getThemeSettings.js +2 -14
- package/dist/utilities/getThemeSettings.js.map +1 -1
- package/dist/utils/contrast.d.ts +63 -0
- package/dist/utils/contrast.d.ts.map +1 -0
- package/dist/utils/contrast.js +158 -0
- package/dist/utils/contrast.js.map +1 -0
- package/dist/utils/exportTokens.d.ts +30 -0
- package/dist/utils/exportTokens.d.ts.map +1 -0
- package/dist/utils/exportTokens.js +183 -0
- package/dist/utils/exportTokens.js.map +1 -0
- package/dist/utils/generatePalette.d.ts +46 -0
- package/dist/utils/generatePalette.d.ts.map +1 -0
- package/dist/utils/generatePalette.js +127 -0
- package/dist/utils/generatePalette.js.map +1 -0
- package/dist/utils/generateThemeCSS.d.ts.map +1 -1
- package/dist/utils/generateThemeCSS.js +2 -40
- package/dist/utils/generateThemeCSS.js.map +1 -1
- package/dist/utils/livePreviewThemeRuntime.d.ts +16 -2
- package/dist/utils/livePreviewThemeRuntime.d.ts.map +1 -1
- package/dist/utils/livePreviewThemeRuntime.js +37 -14
- package/dist/utils/livePreviewThemeRuntime.js.map +1 -1
- package/dist/utils/localizedText.d.ts +8 -0
- package/dist/utils/localizedText.d.ts.map +1 -0
- package/dist/utils/localizedText.js +21 -0
- package/dist/utils/localizedText.js.map +1 -0
- package/dist/utils/resolveThemeConfiguration.d.ts +45 -1
- package/dist/utils/resolveThemeConfiguration.d.ts.map +1 -1
- package/dist/utils/resolveThemeConfiguration.js +12 -5
- package/dist/utils/resolveThemeConfiguration.js.map +1 -1
- package/dist/utils/themeColors.d.ts +3 -0
- package/dist/utils/themeColors.d.ts.map +1 -1
- package/dist/utils/themeColors.js +30 -1
- package/dist/utils/themeColors.js.map +1 -1
- package/dist/utils/themeHtmlAttributes.d.ts +32 -12
- package/dist/utils/themeHtmlAttributes.d.ts.map +1 -1
- package/dist/utils/themeHtmlAttributes.js +38 -5
- package/dist/utils/themeHtmlAttributes.js.map +1 -1
- package/dist/utils/themeUtils.d.ts +3 -5
- package/dist/utils/themeUtils.d.ts.map +1 -1
- package/dist/utils/themeUtils.js +416 -6
- package/dist/utils/themeUtils.js.map +1 -1
- package/dist/utils/tweakcnConverter.d.ts +1 -3
- package/dist/utils/tweakcnConverter.d.ts.map +1 -1
- package/dist/utils/tweakcnConverter.js +1 -3
- package/dist/utils/tweakcnConverter.js.map +1 -1
- package/package.json +11 -5
- package/dist/components/ThemePreview.d.ts +0 -3
- package/dist/components/ThemePreview.d.ts.map +0 -1
- package/dist/components/ThemePreview.js +0 -321
- package/dist/components/ThemePreview.js.map +0 -1
- package/dist/plugin.d.ts +0 -2
- package/dist/plugin.d.ts.map +0 -1
- package/dist/plugin.js +0 -3
- package/dist/plugin.js.map +0 -1
|
@@ -11,10 +11,10 @@ export const useTheme = ()=>{
|
|
|
11
11
|
return context;
|
|
12
12
|
};
|
|
13
13
|
export const ThemeProvider = ({ children, initialTheme, initialMode, allowColorModeToggle = true })=>{
|
|
14
|
-
//
|
|
14
|
+
// Light/dark mode state
|
|
15
15
|
const [mode, setMode] = useState(initialMode || defaultMode);
|
|
16
16
|
const [theme] = useState(initialTheme || null);
|
|
17
|
-
//
|
|
17
|
+
// Resolve the effective mode: "auto" maps to the system preference
|
|
18
18
|
const getResolvedMode = useCallback((currentMode)=>{
|
|
19
19
|
if (currentMode === 'auto' && typeof window !== 'undefined') {
|
|
20
20
|
const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
|
|
@@ -22,13 +22,13 @@ export const ThemeProvider = ({ children, initialTheme, initialMode, allowColorM
|
|
|
22
22
|
}
|
|
23
23
|
return currentMode === 'dark' ? 'dark' : 'light';
|
|
24
24
|
}, []);
|
|
25
|
-
//
|
|
25
|
+
// Apply color mode to DOM attributes and CSS variables
|
|
26
26
|
const applyMode = useCallback((currentMode)=>{
|
|
27
27
|
if (typeof window !== 'undefined') {
|
|
28
28
|
const resolvedMode = getResolvedMode(currentMode);
|
|
29
|
-
//
|
|
29
|
+
// Read current theme from DOM or fall back to default
|
|
30
30
|
const currentTheme = document.documentElement.getAttribute('data-theme') || (typeof theme === 'string' ? theme : 'cool');
|
|
31
|
-
//
|
|
31
|
+
// Set data attributes and classes (compatible with CSS selectors)
|
|
32
32
|
document.documentElement.setAttribute('data-color-mode', resolvedMode);
|
|
33
33
|
document.documentElement.setAttribute('data-theme-mode', resolvedMode);
|
|
34
34
|
document.documentElement.setAttribute('data-theme', currentTheme);
|
|
@@ -36,6 +36,70 @@ export const ThemeProvider = ({ children, initialTheme, initialMode, allowColorM
|
|
|
36
36
|
document.documentElement.classList.add(resolvedMode);
|
|
37
37
|
// Force re-computation of CSS custom properties
|
|
38
38
|
document.documentElement.style.setProperty('--color-mode', resolvedMode);
|
|
39
|
+
// Synchronise data attributes for effect/component styles from CSS vars
|
|
40
|
+
// (set by ServerThemeInjector; this ensures client hydration matches SSR).
|
|
41
|
+
// Each entry maps a CSS custom property to the data attribute that the
|
|
42
|
+
// generated CSS selectors target. Attributes are only set when the var
|
|
43
|
+
// has a value, so we never clobber server-rendered attributes with empties.
|
|
44
|
+
const computedStyle = getComputedStyle(document.documentElement);
|
|
45
|
+
const cssVarToAttr = [
|
|
46
|
+
[
|
|
47
|
+
'--effect-style',
|
|
48
|
+
'data-effect-style'
|
|
49
|
+
],
|
|
50
|
+
[
|
|
51
|
+
'--shadow-intensity',
|
|
52
|
+
'data-shadow-intensity'
|
|
53
|
+
],
|
|
54
|
+
[
|
|
55
|
+
'--backdrop-blur-level',
|
|
56
|
+
'data-backdrop-blur'
|
|
57
|
+
],
|
|
58
|
+
[
|
|
59
|
+
'--border-style',
|
|
60
|
+
'data-border-style'
|
|
61
|
+
],
|
|
62
|
+
[
|
|
63
|
+
'--border-width',
|
|
64
|
+
'data-border-width'
|
|
65
|
+
],
|
|
66
|
+
[
|
|
67
|
+
'--card-style',
|
|
68
|
+
'data-card-style'
|
|
69
|
+
],
|
|
70
|
+
[
|
|
71
|
+
'--card-hover-effect',
|
|
72
|
+
'data-card-hover'
|
|
73
|
+
],
|
|
74
|
+
[
|
|
75
|
+
'--button-variant',
|
|
76
|
+
'data-button-variant'
|
|
77
|
+
],
|
|
78
|
+
[
|
|
79
|
+
'--button-size',
|
|
80
|
+
'data-button-size'
|
|
81
|
+
],
|
|
82
|
+
[
|
|
83
|
+
'--navbar-style',
|
|
84
|
+
'data-navbar-style'
|
|
85
|
+
],
|
|
86
|
+
[
|
|
87
|
+
'--footer-style',
|
|
88
|
+
'data-footer-style'
|
|
89
|
+
],
|
|
90
|
+
[
|
|
91
|
+
'--image-style',
|
|
92
|
+
'data-image-style'
|
|
93
|
+
],
|
|
94
|
+
[
|
|
95
|
+
'--link-style',
|
|
96
|
+
'data-link-style'
|
|
97
|
+
]
|
|
98
|
+
];
|
|
99
|
+
for (const [cssVar, attr] of cssVarToAttr){
|
|
100
|
+
const value = computedStyle.getPropertyValue(cssVar).trim();
|
|
101
|
+
if (value) document.documentElement.setAttribute(attr, value);
|
|
102
|
+
}
|
|
39
103
|
// Force repaint to ensure CSS variables update
|
|
40
104
|
// eslint-disable-next-line @typescript-eslint/no-unused-expressions
|
|
41
105
|
document.documentElement.offsetHeight;
|
|
@@ -52,7 +116,7 @@ export const ThemeProvider = ({ children, initialTheme, initialMode, allowColorM
|
|
|
52
116
|
getResolvedMode,
|
|
53
117
|
theme
|
|
54
118
|
]);
|
|
55
|
-
//
|
|
119
|
+
// Persist the selected mode to localStorage and apply it to the DOM
|
|
56
120
|
const updateMode = useCallback((newMode)=>{
|
|
57
121
|
setMode(newMode);
|
|
58
122
|
if (newMode && typeof window !== 'undefined') {
|
|
@@ -62,7 +126,7 @@ export const ThemeProvider = ({ children, initialTheme, initialMode, allowColorM
|
|
|
62
126
|
}, [
|
|
63
127
|
applyMode
|
|
64
128
|
]);
|
|
65
|
-
//
|
|
129
|
+
// Restore mode from localStorage on mount
|
|
66
130
|
useEffect(()=>{
|
|
67
131
|
if (typeof window !== 'undefined') {
|
|
68
132
|
const storedMode = localStorage.getItem(modeLocalStorageKey);
|
|
@@ -74,19 +138,19 @@ export const ThemeProvider = ({ children, initialTheme, initialMode, allowColorM
|
|
|
74
138
|
setMode(storedMode);
|
|
75
139
|
applyMode(storedMode);
|
|
76
140
|
} else {
|
|
77
|
-
//
|
|
141
|
+
// Fall back to the default mode
|
|
78
142
|
applyMode(defaultMode);
|
|
79
143
|
}
|
|
80
144
|
}
|
|
81
145
|
}, [
|
|
82
146
|
applyMode
|
|
83
147
|
]);
|
|
84
|
-
//
|
|
148
|
+
// Listen for system color-scheme changes (only relevant when mode === 'auto')
|
|
85
149
|
useEffect(()=>{
|
|
86
150
|
if (mode === 'auto' && typeof window !== 'undefined') {
|
|
87
151
|
const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
|
|
88
152
|
const handleChange = ()=>{
|
|
89
|
-
applyMode('auto'); // Re-
|
|
153
|
+
applyMode('auto'); // Re-evaluate auto mode against current system preference
|
|
90
154
|
};
|
|
91
155
|
mediaQuery.addEventListener('change', handleChange);
|
|
92
156
|
return ()=>{
|
|
@@ -98,7 +162,7 @@ export const ThemeProvider = ({ children, initialTheme, initialMode, allowColorM
|
|
|
98
162
|
applyMode
|
|
99
163
|
]);
|
|
100
164
|
const refreshTheme = useCallback(()=>{
|
|
101
|
-
//
|
|
165
|
+
// Re-apply the current mode (e.g. after external DOM changes)
|
|
102
166
|
applyMode(mode);
|
|
103
167
|
}, [
|
|
104
168
|
mode,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/providers/Theme/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react'\nimport { defaultMode, modeLocalStorageKey } from './shared.js'\nimport type { Mode, ThemeContextType, ThemeDefaults } from './types.js'\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined)\n\nexport const useTheme = (): ThemeContextType => {\n const context = useContext(ThemeContext)\n if (!context) {\n throw new Error('useTheme must be used within a ThemeProvider')\n }\n return context\n}\n\ninterface ThemeProviderProps {\n children: React.ReactNode\n initialTheme?: ThemeDefaults\n initialMode?: Mode\n allowColorModeToggle?: boolean\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n children,\n initialTheme,\n initialMode,\n allowColorModeToggle = true,\n}) => {\n // State pro light/dark mode switching\n const [mode, setMode] = useState<Mode | null>(initialMode || defaultMode)\n const [theme] = useState<ThemeDefaults | null>(initialTheme || null)\n\n // Funkce pro získání skutečného módu (resolve \"auto\" mode)\n const getResolvedMode = useCallback((currentMode: Mode | null): 'light' | 'dark' => {\n if (currentMode === 'auto' && typeof window !== 'undefined') {\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n return mediaQuery.matches ? 'dark' : 'light'\n }\n return currentMode === 'dark' ? 'dark' : 'light'\n }, [])\n\n // Aplikace módu na DOM a CSS variables\n const applyMode = useCallback(\n (currentMode: Mode | null) => {\n if (typeof window !== 'undefined') {\n const resolvedMode = getResolvedMode(currentMode)\n\n // Získej aktuální theme z DOM nebo použij fallback\n const currentTheme =\n document.documentElement.getAttribute('data-theme') ||\n (typeof theme === 'string' ? theme : 'cool')\n\n // Aplikuj data atributy a třídy (kompatibilní s CSS selektory)\n document.documentElement.setAttribute('data-color-mode', resolvedMode)\n document.documentElement.setAttribute('data-theme-mode', resolvedMode)\n document.documentElement.setAttribute('data-theme', currentTheme)\n document.documentElement.classList.remove('light', 'dark', 'auto')\n document.documentElement.classList.add(resolvedMode)\n\n // Force re-computation of CSS custom properties\n document.documentElement.style.setProperty('--color-mode', resolvedMode)\n\n // Force repaint to ensure CSS variables update\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n document.documentElement.offsetHeight\n\n // Dispatch custom event for components that need to react to theme changes\n window.dispatchEvent(\n new CustomEvent('themeChange', {\n detail: { mode: resolvedMode, originalMode: currentMode, theme: currentTheme },\n }),\n )\n }\n },\n [getResolvedMode, theme],\n )\n\n // Uložení light/dark mode do localStorage a aplikace\n const updateMode = useCallback(\n (newMode: Mode | null) => {\n setMode(newMode)\n if (newMode && typeof window !== 'undefined') {\n localStorage.setItem(modeLocalStorageKey, newMode)\n applyMode(newMode)\n }\n },\n [applyMode],\n )\n\n // Načtení mode z localStorage při startu\n useEffect(() => {\n if (typeof window !== 'undefined') {\n const storedMode = localStorage.getItem(modeLocalStorageKey) as Mode | null\n if (storedMode && ['light', 'dark', 'auto'].includes(storedMode)) {\n setMode(storedMode)\n applyMode(storedMode)\n } else {\n // Fallback na default mode\n applyMode(defaultMode)\n }\n }\n }, [applyMode])\n\n // Listener pro změny system preference (pouze při auto mode)\n useEffect(() => {\n if (mode === 'auto' && typeof window !== 'undefined') {\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n\n const handleChange = () => {\n applyMode('auto') // Re-resolve auto mode\n }\n\n mediaQuery.addEventListener('change', handleChange)\n\n return () => {\n mediaQuery.removeEventListener('change', handleChange)\n }\n }\n }, [mode, applyMode])\n\n const refreshTheme = useCallback(() => {\n // Refresh theme - aplikuj aktuální mode\n applyMode(mode)\n }, [mode, applyMode])\n\n const contextValue = useMemo(\n () => ({\n theme,\n mode,\n setTheme: () => {}, // Nepoužíváme - theme se nastavuje přes SSR\n setMode: updateMode,\n isColorModeToggleAllowed: allowColorModeToggle,\n refreshTheme,\n }),\n [theme, mode, updateMode, allowColorModeToggle, refreshTheme],\n )\n\n return <ThemeContext.Provider value={contextValue}>{children}</ThemeContext.Provider>\n}\n"],"names":["React","createContext","useCallback","useContext","useEffect","useMemo","useState","defaultMode","modeLocalStorageKey","ThemeContext","undefined","useTheme","context","Error","ThemeProvider","children","initialTheme","initialMode","allowColorModeToggle","mode","setMode","theme","getResolvedMode","currentMode","window","mediaQuery","matchMedia","matches","applyMode","resolvedMode","currentTheme","document","documentElement","getAttribute","setAttribute","classList","remove","add","style","setProperty","offsetHeight","dispatchEvent","CustomEvent","detail","originalMode","updateMode","newMode","localStorage","setItem","storedMode","getItem","includes","handleChange","addEventListener","removeEventListener","refreshTheme","contextValue","setTheme","isColorModeToggleAllowed","Provider","value"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/providers/Theme/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react'\nimport { defaultMode, modeLocalStorageKey } from './shared.js'\nimport type { Mode, ThemeContextType, ThemeDefaults } from './types.js'\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined)\n\nexport const useTheme = (): ThemeContextType => {\n const context = useContext(ThemeContext)\n if (!context) {\n throw new Error('useTheme must be used within a ThemeProvider')\n }\n return context\n}\n\ninterface ThemeProviderProps {\n children: React.ReactNode\n initialTheme?: ThemeDefaults\n initialMode?: Mode\n allowColorModeToggle?: boolean\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n children,\n initialTheme,\n initialMode,\n allowColorModeToggle = true,\n}) => {\n // Light/dark mode state\n const [mode, setMode] = useState<Mode | null>(initialMode || defaultMode)\n const [theme] = useState<ThemeDefaults | null>(initialTheme || null)\n\n // Resolve the effective mode: \"auto\" maps to the system preference\n const getResolvedMode = useCallback((currentMode: Mode | null): 'light' | 'dark' => {\n if (currentMode === 'auto' && typeof window !== 'undefined') {\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n return mediaQuery.matches ? 'dark' : 'light'\n }\n return currentMode === 'dark' ? 'dark' : 'light'\n }, [])\n\n // Apply color mode to DOM attributes and CSS variables\n const applyMode = useCallback(\n (currentMode: Mode | null) => {\n if (typeof window !== 'undefined') {\n const resolvedMode = getResolvedMode(currentMode)\n\n // Read current theme from DOM or fall back to default\n const currentTheme =\n document.documentElement.getAttribute('data-theme') ||\n (typeof theme === 'string' ? theme : 'cool')\n\n // Set data attributes and classes (compatible with CSS selectors)\n document.documentElement.setAttribute('data-color-mode', resolvedMode)\n document.documentElement.setAttribute('data-theme-mode', resolvedMode)\n document.documentElement.setAttribute('data-theme', currentTheme)\n document.documentElement.classList.remove('light', 'dark', 'auto')\n document.documentElement.classList.add(resolvedMode)\n\n // Force re-computation of CSS custom properties\n document.documentElement.style.setProperty('--color-mode', resolvedMode)\n\n // Synchronise data attributes for effect/component styles from CSS vars\n // (set by ServerThemeInjector; this ensures client hydration matches SSR).\n // Each entry maps a CSS custom property to the data attribute that the\n // generated CSS selectors target. Attributes are only set when the var\n // has a value, so we never clobber server-rendered attributes with empties.\n const computedStyle = getComputedStyle(document.documentElement)\n const cssVarToAttr: Array<[cssVar: string, attr: string]> = [\n ['--effect-style', 'data-effect-style'],\n ['--shadow-intensity', 'data-shadow-intensity'],\n ['--backdrop-blur-level', 'data-backdrop-blur'],\n ['--border-style', 'data-border-style'],\n ['--border-width', 'data-border-width'],\n ['--card-style', 'data-card-style'],\n ['--card-hover-effect', 'data-card-hover'],\n ['--button-variant', 'data-button-variant'],\n ['--button-size', 'data-button-size'],\n ['--navbar-style', 'data-navbar-style'],\n ['--footer-style', 'data-footer-style'],\n ['--image-style', 'data-image-style'],\n ['--link-style', 'data-link-style'],\n ]\n\n for (const [cssVar, attr] of cssVarToAttr) {\n const value = computedStyle.getPropertyValue(cssVar).trim()\n if (value) document.documentElement.setAttribute(attr, value)\n }\n\n // Force repaint to ensure CSS variables update\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n document.documentElement.offsetHeight\n\n // Dispatch custom event for components that need to react to theme changes\n window.dispatchEvent(\n new CustomEvent('themeChange', {\n detail: { mode: resolvedMode, originalMode: currentMode, theme: currentTheme },\n }),\n )\n }\n },\n [getResolvedMode, theme],\n )\n\n // Persist the selected mode to localStorage and apply it to the DOM\n const updateMode = useCallback(\n (newMode: Mode | null) => {\n setMode(newMode)\n if (newMode && typeof window !== 'undefined') {\n localStorage.setItem(modeLocalStorageKey, newMode)\n applyMode(newMode)\n }\n },\n [applyMode],\n )\n\n // Restore mode from localStorage on mount\n useEffect(() => {\n if (typeof window !== 'undefined') {\n const storedMode = localStorage.getItem(modeLocalStorageKey) as Mode | null\n if (storedMode && ['light', 'dark', 'auto'].includes(storedMode)) {\n setMode(storedMode)\n applyMode(storedMode)\n } else {\n // Fall back to the default mode\n applyMode(defaultMode)\n }\n }\n }, [applyMode])\n\n // Listen for system color-scheme changes (only relevant when mode === 'auto')\n useEffect(() => {\n if (mode === 'auto' && typeof window !== 'undefined') {\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n\n const handleChange = () => {\n applyMode('auto') // Re-evaluate auto mode against current system preference\n }\n\n mediaQuery.addEventListener('change', handleChange)\n\n return () => {\n mediaQuery.removeEventListener('change', handleChange)\n }\n }\n }, [mode, applyMode])\n\n const refreshTheme = useCallback(() => {\n // Re-apply the current mode (e.g. after external DOM changes)\n applyMode(mode)\n }, [mode, applyMode])\n\n const contextValue = useMemo(\n () => ({\n theme,\n mode,\n setTheme: () => {}, // Theme is set via SSR; client-side mutation is intentionally a no-op\n setMode: updateMode,\n isColorModeToggleAllowed: allowColorModeToggle,\n refreshTheme,\n }),\n [theme, mode, updateMode, allowColorModeToggle, refreshTheme],\n )\n\n return <ThemeContext.Provider value={contextValue}>{children}</ThemeContext.Provider>\n}\n"],"names":["React","createContext","useCallback","useContext","useEffect","useMemo","useState","defaultMode","modeLocalStorageKey","ThemeContext","undefined","useTheme","context","Error","ThemeProvider","children","initialTheme","initialMode","allowColorModeToggle","mode","setMode","theme","getResolvedMode","currentMode","window","mediaQuery","matchMedia","matches","applyMode","resolvedMode","currentTheme","document","documentElement","getAttribute","setAttribute","classList","remove","add","style","setProperty","computedStyle","getComputedStyle","cssVarToAttr","cssVar","attr","value","getPropertyValue","trim","offsetHeight","dispatchEvent","CustomEvent","detail","originalMode","updateMode","newMode","localStorage","setItem","storedMode","getItem","includes","handleChange","addEventListener","removeEventListener","refreshTheme","contextValue","setTheme","isColorModeToggleAllowed","Provider"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"themeConfig.d.ts","sourceRoot":"","sources":["../../../src/providers/Theme/themeConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE5D,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,aAAa,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"themeConfig.d.ts","sourceRoot":"","sources":["../../../src/providers/Theme/themeConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE5D,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,aAAa,EAAE,WAAW,CAyc3D,CAAA;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6DtB,CAAA;AAEV,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,WAAW,CAEhE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,OAAO,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE7E"}
|
|
@@ -350,6 +350,110 @@ export const themeConfigs = {
|
|
|
350
350
|
accent: 'hsl(0, 0%, 96%)'
|
|
351
351
|
}
|
|
352
352
|
}
|
|
353
|
+
},
|
|
354
|
+
glassmorphism: {
|
|
355
|
+
name: 'glassmorphism',
|
|
356
|
+
label: 'Glassmorphism',
|
|
357
|
+
borderRadius: 'large',
|
|
358
|
+
dynamicCSS: true,
|
|
359
|
+
preview: {
|
|
360
|
+
colors: {
|
|
361
|
+
primary: 'oklch(0.60 0.18 250)',
|
|
362
|
+
background: 'oklch(0.97 0.015 230)',
|
|
363
|
+
accent: 'oklch(0.72 0.15 190)'
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
},
|
|
367
|
+
claymorphism: {
|
|
368
|
+
name: 'claymorphism',
|
|
369
|
+
label: 'Claymorphism',
|
|
370
|
+
borderRadius: 'xl',
|
|
371
|
+
dynamicCSS: true,
|
|
372
|
+
preview: {
|
|
373
|
+
colors: {
|
|
374
|
+
primary: 'oklch(0.65 0.20 255)',
|
|
375
|
+
background: 'oklch(0.96 0.02 200)',
|
|
376
|
+
accent: 'oklch(0.80 0.12 40)'
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
},
|
|
380
|
+
neumorphism: {
|
|
381
|
+
name: 'neumorphism',
|
|
382
|
+
label: 'Neumorphism',
|
|
383
|
+
borderRadius: 'large',
|
|
384
|
+
dynamicCSS: true,
|
|
385
|
+
preview: {
|
|
386
|
+
colors: {
|
|
387
|
+
primary: 'oklch(0.60 0.16 250)',
|
|
388
|
+
background: 'oklch(0.93 0.01 240)',
|
|
389
|
+
accent: 'oklch(0.68 0.14 215)'
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
},
|
|
393
|
+
aurora: {
|
|
394
|
+
name: 'aurora',
|
|
395
|
+
label: 'Aurora Borealis',
|
|
396
|
+
borderRadius: 'large',
|
|
397
|
+
dynamicCSS: true,
|
|
398
|
+
preview: {
|
|
399
|
+
colors: {
|
|
400
|
+
primary: 'oklch(0.62 0.18 175)',
|
|
401
|
+
background: 'oklch(0.97 0.02 175)',
|
|
402
|
+
accent: 'oklch(0.72 0.16 300)'
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
},
|
|
406
|
+
luxury: {
|
|
407
|
+
name: 'luxury',
|
|
408
|
+
label: 'Luxury Gold',
|
|
409
|
+
borderRadius: 'small',
|
|
410
|
+
dynamicCSS: true,
|
|
411
|
+
preview: {
|
|
412
|
+
colors: {
|
|
413
|
+
primary: 'oklch(0.72 0.14 75)',
|
|
414
|
+
background: 'oklch(0.98 0.01 80)',
|
|
415
|
+
accent: 'oklch(0.62 0.18 55)'
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
},
|
|
419
|
+
healthcare: {
|
|
420
|
+
name: 'healthcare',
|
|
421
|
+
label: 'Healthcare Clean',
|
|
422
|
+
borderRadius: 'medium',
|
|
423
|
+
dynamicCSS: true,
|
|
424
|
+
preview: {
|
|
425
|
+
colors: {
|
|
426
|
+
primary: 'oklch(0.55 0.16 218)',
|
|
427
|
+
background: 'oklch(0.99 0.005 210)',
|
|
428
|
+
accent: 'oklch(0.68 0.14 170)'
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
},
|
|
432
|
+
nordic: {
|
|
433
|
+
name: 'nordic',
|
|
434
|
+
label: 'Nordic Minimal',
|
|
435
|
+
borderRadius: 'small',
|
|
436
|
+
dynamicCSS: true,
|
|
437
|
+
preview: {
|
|
438
|
+
colors: {
|
|
439
|
+
primary: 'oklch(0.42 0.10 225)',
|
|
440
|
+
background: 'oklch(0.97 0.01 220)',
|
|
441
|
+
accent: 'oklch(0.65 0.10 195)'
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
},
|
|
445
|
+
'warm-earth': {
|
|
446
|
+
name: 'warm-earth',
|
|
447
|
+
label: 'Warm Earth',
|
|
448
|
+
borderRadius: 'medium',
|
|
449
|
+
dynamicCSS: true,
|
|
450
|
+
preview: {
|
|
451
|
+
colors: {
|
|
452
|
+
primary: 'oklch(0.52 0.12 50)',
|
|
453
|
+
background: 'oklch(0.97 0.025 75)',
|
|
454
|
+
accent: 'oklch(0.68 0.14 145)'
|
|
455
|
+
}
|
|
456
|
+
}
|
|
353
457
|
}
|
|
354
458
|
};
|
|
355
459
|
export const borderRadiusPresets = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/providers/Theme/themeConfig.ts"],"sourcesContent":["import type { ThemeConfig, ThemeDefaults } from './types.js'\n\nexport const themeConfigs: Record<ThemeDefaults, ThemeConfig> = {\n cool: {\n name: 'cool',\n label: 'Cool & Professional',\n borderRadius: 'medium',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(221 83% 53%)',\n background: 'hsl(0 0% 100%)',\n accent: 'hsl(210 40% 95%)',\n },\n },\n },\n brutal: {\n name: 'brutal',\n label: 'Modern Brutalism',\n borderRadius: 'none',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(0 0% 0%)',\n background: 'hsl(0 0% 100%)',\n accent: 'hsl(0 72% 51%)',\n },\n },\n },\n neon: {\n name: 'neon',\n label: 'Neon Cyberpunk',\n borderRadius: 'medium',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(263 90% 51%)',\n background: 'hsl(230 25% 5%)',\n accent: 'hsl(180 100% 50%)',\n },\n },\n },\n solar: {\n name: 'solar',\n label: 'Solar',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(20 90% 45%)',\n background: 'hsl(40 30% 95%)',\n accent: 'hsl(40 100% 50%)',\n },\n },\n },\n dealership: {\n name: 'dealership',\n label: 'Dealership',\n borderRadius: 'medium',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(225 25% 25%)',\n background: 'hsl(0 0% 98%)',\n accent: 'hsl(15 85% 55%)',\n },\n },\n },\n 'real-estate': {\n name: 'real-estate',\n label: 'Real Estate Blue',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(220 90% 48%)',\n background: 'hsl(220 40% 98.5%)',\n accent: 'hsl(210 85% 55%)',\n },\n },\n },\n 'real-estate-gold': {\n name: 'real-estate-gold',\n label: 'Real Estate Gold',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(38 75% 45%)',\n background: 'hsl(45 25% 97%)',\n accent: 'hsl(42 85% 55%)',\n },\n },\n },\n 'real-estate-neutral': {\n name: 'real-estate-neutral',\n label: 'Real Estate Neutral',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(25 35% 25%)',\n background: 'hsl(30 8% 98%)',\n accent: 'hsl(35 25% 45%)',\n },\n },\n },\n // Extended 20 color themes (Dynamic CSS generation)\n cyberpunk: {\n name: 'cyberpunk',\n label: 'Cyberpunk Neon',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(320, 25%, 65%)',\n background: 'hsl(180, 2%, 98%)',\n accent: 'hsl(290, 22%, 75%)',\n },\n },\n },\n minimal: {\n name: 'minimal',\n label: 'Minimal Clean',\n borderRadius: 'none',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(0, 0%, 12%)',\n background: 'hsl(0, 0%, 100%)',\n accent: 'hsl(0, 0%, 96%)',\n },\n },\n },\n retro: {\n name: 'retro',\n label: 'Retro Vintage',\n borderRadius: 'small',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(35, 18%, 55%)',\n background: 'hsl(80, 3%, 96%)',\n accent: 'hsl(50, 16%, 68%)',\n },\n },\n },\n pastel: {\n name: 'pastel',\n label: 'Pastel Soft',\n borderRadius: 'xl',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(270, 12%, 70%)',\n background: 'hsl(250, 1%, 98%)',\n accent: 'hsl(300, 8%, 85%)',\n },\n },\n },\n ocean: {\n name: 'ocean',\n label: 'Ocean Deep',\n borderRadius: 'medium',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(230, 18%, 55%)',\n background: 'hsl(220, 2%, 97%)',\n accent: 'hsl(190, 15%, 68%)',\n },\n },\n },\n forest: {\n name: 'forest',\n label: 'Forest Green',\n borderRadius: 'medium',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(145, 16%, 52%)',\n background: 'hsl(145, 2%, 97%)',\n accent: 'hsl(155, 14%, 65%)',\n },\n },\n },\n sunset: {\n name: 'sunset',\n label: 'Sunset Warm',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(35, 20%, 60%)',\n background: 'hsl(50, 3%, 97%)',\n accent: 'hsl(20, 18%, 68%)',\n },\n },\n },\n lavender: {\n name: 'lavender',\n label: 'Lavender Dream',\n borderRadius: 'xl',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(295, 16%, 62%)',\n background: 'hsl(295, 2%, 98%)',\n accent: 'hsl(310, 14%, 72%)',\n },\n },\n },\n neutral: {\n name: 'neutral',\n label: 'Neutral',\n borderRadius: 'medium',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(0, 0%, 0%)',\n background: 'hsl(0, 0%, 99%)',\n accent: 'hsl(0, 0%, 94%)',\n },\n },\n },\n blue: {\n name: 'blue',\n label: 'Blue',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(221, 83%, 53%)',\n background: 'hsl(0, 0%, 100%)',\n accent: 'hsl(0, 0%, 97%)',\n },\n },\n },\n green: {\n name: 'green',\n label: 'Green',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(85, 85%, 35%)',\n background: 'hsl(0, 0%, 100%)',\n accent: 'hsl(0, 0%, 97%)',\n },\n },\n },\n red: {\n name: 'red',\n label: 'Red',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(0, 72%, 51%)',\n background: 'hsl(0, 0%, 100%)',\n accent: 'hsl(0, 0%, 97%)',\n },\n },\n },\n orange: {\n name: 'orange',\n label: 'Orange',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(21, 90%, 48%)',\n background: 'hsl(0, 0%, 100%)',\n accent: 'hsl(0, 0%, 97%)',\n },\n },\n },\n rose: {\n name: 'rose',\n label: 'Rose',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(347, 77%, 50%)',\n background: 'hsl(0, 0%, 100%)',\n accent: 'hsl(0, 0%, 97%)',\n },\n },\n },\n violet: {\n name: 'violet',\n label: 'Violet',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(262, 83%, 58%)',\n background: 'hsl(0, 0%, 100%)',\n accent: 'hsl(0, 0%, 97%)',\n },\n },\n },\n zinc: {\n name: 'zinc',\n label: 'Zinc',\n borderRadius: 'medium',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(286.375, 1%, 14%)',\n background: 'hsl(0, 0%, 100%)',\n accent: 'hsl(286.375, 0%, 96%)',\n },\n },\n },\n slate: {\n name: 'slate',\n label: 'Slate',\n borderRadius: 'medium',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(254.624, 1%, 15%)',\n background: 'hsl(0, 0%, 100%)',\n accent: 'hsl(254.624, 0%, 96%)',\n },\n },\n },\n stone: {\n name: 'stone',\n label: 'Stone',\n borderRadius: 'medium',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(56.365, 1%, 14%)',\n background: 'hsl(0, 0%, 100%)',\n accent: 'hsl(60, 0%, 96%)',\n },\n },\n },\n gray: {\n name: 'gray',\n label: 'Gray',\n borderRadius: 'medium',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(0, 0%, 14%)',\n background: 'hsl(0, 0%, 100%)',\n accent: 'hsl(0, 0%, 96%)',\n },\n },\n },\n}\n\nexport const borderRadiusPresets = {\n none: {\n label: 'None',\n value: 'none',\n css: {\n '--radius-xs': '0',\n '--radius-small': '0',\n '--radius-default': '0',\n '--radius-medium': '0',\n '--radius-large': '0',\n '--radius-xl': '0',\n },\n },\n small: {\n label: 'Small',\n value: 'small',\n css: {\n '--radius-xs': '0.125rem',\n '--radius-small': '0.25rem',\n '--radius-default': '0.375rem',\n '--radius-medium': '0.5rem',\n '--radius-large': '0.75rem',\n '--radius-xl': '1rem',\n },\n },\n medium: {\n label: 'Medium',\n value: 'medium',\n css: {\n '--radius-xs': '0.25rem',\n '--radius-small': '0.5rem',\n '--radius-default': '0.75rem',\n '--radius-medium': '1rem',\n '--radius-large': '1.5rem',\n '--radius-xl': '2rem',\n },\n },\n large: {\n label: 'Large',\n value: 'large',\n css: {\n '--radius-xs': '0.5rem',\n '--radius-small': '0.75rem',\n '--radius-default': '1rem',\n '--radius-medium': '1.5rem',\n '--radius-large': '2rem',\n '--radius-xl': '2.5rem',\n },\n },\n xl: {\n label: 'Extra Large',\n value: 'xl',\n css: {\n '--radius-xs': '0.75rem',\n '--radius-small': '1rem',\n '--radius-default': '1.5rem',\n '--radius-medium': '2rem',\n '--radius-large': '2.5rem',\n '--radius-xl': '3rem',\n },\n },\n} as const\n\nexport function getThemeConfig(theme: ThemeDefaults): ThemeConfig {\n return themeConfigs[theme]\n}\n\nexport function getBorderRadiusConfig(preset: keyof typeof borderRadiusPresets) {\n return borderRadiusPresets[preset]\n}\n"],"names":["themeConfigs","cool","name","label","borderRadius","dynamicCSS","preview","colors","primary","background","accent","brutal","neon","solar","dealership","cyberpunk","minimal","retro","pastel","ocean","forest","sunset","lavender","neutral","blue","green","red","orange","rose","violet","zinc","slate","stone","gray","borderRadiusPresets","none","value","css","small","medium","large","xl","getThemeConfig","theme","getBorderRadiusConfig","preset"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/providers/Theme/themeConfig.ts"],"sourcesContent":["import type { ThemeConfig, ThemeDefaults } from './types.js'\n\nexport const themeConfigs: Record<ThemeDefaults, ThemeConfig> = {\n cool: {\n name: 'cool',\n label: 'Cool & Professional',\n borderRadius: 'medium',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(221 83% 53%)',\n background: 'hsl(0 0% 100%)',\n accent: 'hsl(210 40% 95%)',\n },\n },\n },\n brutal: {\n name: 'brutal',\n label: 'Modern Brutalism',\n borderRadius: 'none',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(0 0% 0%)',\n background: 'hsl(0 0% 100%)',\n accent: 'hsl(0 72% 51%)',\n },\n },\n },\n neon: {\n name: 'neon',\n label: 'Neon Cyberpunk',\n borderRadius: 'medium',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(263 90% 51%)',\n background: 'hsl(230 25% 5%)',\n accent: 'hsl(180 100% 50%)',\n },\n },\n },\n solar: {\n name: 'solar',\n label: 'Solar',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(20 90% 45%)',\n background: 'hsl(40 30% 95%)',\n accent: 'hsl(40 100% 50%)',\n },\n },\n },\n dealership: {\n name: 'dealership',\n label: 'Dealership',\n borderRadius: 'medium',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(225 25% 25%)',\n background: 'hsl(0 0% 98%)',\n accent: 'hsl(15 85% 55%)',\n },\n },\n },\n 'real-estate': {\n name: 'real-estate',\n label: 'Real Estate Blue',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(220 90% 48%)',\n background: 'hsl(220 40% 98.5%)',\n accent: 'hsl(210 85% 55%)',\n },\n },\n },\n 'real-estate-gold': {\n name: 'real-estate-gold',\n label: 'Real Estate Gold',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(38 75% 45%)',\n background: 'hsl(45 25% 97%)',\n accent: 'hsl(42 85% 55%)',\n },\n },\n },\n 'real-estate-neutral': {\n name: 'real-estate-neutral',\n label: 'Real Estate Neutral',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(25 35% 25%)',\n background: 'hsl(30 8% 98%)',\n accent: 'hsl(35 25% 45%)',\n },\n },\n },\n // Extended 20 color themes (Dynamic CSS generation)\n cyberpunk: {\n name: 'cyberpunk',\n label: 'Cyberpunk Neon',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(320, 25%, 65%)',\n background: 'hsl(180, 2%, 98%)',\n accent: 'hsl(290, 22%, 75%)',\n },\n },\n },\n minimal: {\n name: 'minimal',\n label: 'Minimal Clean',\n borderRadius: 'none',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(0, 0%, 12%)',\n background: 'hsl(0, 0%, 100%)',\n accent: 'hsl(0, 0%, 96%)',\n },\n },\n },\n retro: {\n name: 'retro',\n label: 'Retro Vintage',\n borderRadius: 'small',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(35, 18%, 55%)',\n background: 'hsl(80, 3%, 96%)',\n accent: 'hsl(50, 16%, 68%)',\n },\n },\n },\n pastel: {\n name: 'pastel',\n label: 'Pastel Soft',\n borderRadius: 'xl',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(270, 12%, 70%)',\n background: 'hsl(250, 1%, 98%)',\n accent: 'hsl(300, 8%, 85%)',\n },\n },\n },\n ocean: {\n name: 'ocean',\n label: 'Ocean Deep',\n borderRadius: 'medium',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(230, 18%, 55%)',\n background: 'hsl(220, 2%, 97%)',\n accent: 'hsl(190, 15%, 68%)',\n },\n },\n },\n forest: {\n name: 'forest',\n label: 'Forest Green',\n borderRadius: 'medium',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(145, 16%, 52%)',\n background: 'hsl(145, 2%, 97%)',\n accent: 'hsl(155, 14%, 65%)',\n },\n },\n },\n sunset: {\n name: 'sunset',\n label: 'Sunset Warm',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(35, 20%, 60%)',\n background: 'hsl(50, 3%, 97%)',\n accent: 'hsl(20, 18%, 68%)',\n },\n },\n },\n lavender: {\n name: 'lavender',\n label: 'Lavender Dream',\n borderRadius: 'xl',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(295, 16%, 62%)',\n background: 'hsl(295, 2%, 98%)',\n accent: 'hsl(310, 14%, 72%)',\n },\n },\n },\n neutral: {\n name: 'neutral',\n label: 'Neutral',\n borderRadius: 'medium',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(0, 0%, 0%)',\n background: 'hsl(0, 0%, 99%)',\n accent: 'hsl(0, 0%, 94%)',\n },\n },\n },\n blue: {\n name: 'blue',\n label: 'Blue',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(221, 83%, 53%)',\n background: 'hsl(0, 0%, 100%)',\n accent: 'hsl(0, 0%, 97%)',\n },\n },\n },\n green: {\n name: 'green',\n label: 'Green',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(85, 85%, 35%)',\n background: 'hsl(0, 0%, 100%)',\n accent: 'hsl(0, 0%, 97%)',\n },\n },\n },\n red: {\n name: 'red',\n label: 'Red',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(0, 72%, 51%)',\n background: 'hsl(0, 0%, 100%)',\n accent: 'hsl(0, 0%, 97%)',\n },\n },\n },\n orange: {\n name: 'orange',\n label: 'Orange',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(21, 90%, 48%)',\n background: 'hsl(0, 0%, 100%)',\n accent: 'hsl(0, 0%, 97%)',\n },\n },\n },\n rose: {\n name: 'rose',\n label: 'Rose',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(347, 77%, 50%)',\n background: 'hsl(0, 0%, 100%)',\n accent: 'hsl(0, 0%, 97%)',\n },\n },\n },\n violet: {\n name: 'violet',\n label: 'Violet',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(262, 83%, 58%)',\n background: 'hsl(0, 0%, 100%)',\n accent: 'hsl(0, 0%, 97%)',\n },\n },\n },\n zinc: {\n name: 'zinc',\n label: 'Zinc',\n borderRadius: 'medium',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(286.375, 1%, 14%)',\n background: 'hsl(0, 0%, 100%)',\n accent: 'hsl(286.375, 0%, 96%)',\n },\n },\n },\n slate: {\n name: 'slate',\n label: 'Slate',\n borderRadius: 'medium',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(254.624, 1%, 15%)',\n background: 'hsl(0, 0%, 100%)',\n accent: 'hsl(254.624, 0%, 96%)',\n },\n },\n },\n stone: {\n name: 'stone',\n label: 'Stone',\n borderRadius: 'medium',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(56.365, 1%, 14%)',\n background: 'hsl(0, 0%, 100%)',\n accent: 'hsl(60, 0%, 96%)',\n },\n },\n },\n gray: {\n name: 'gray',\n label: 'Gray',\n borderRadius: 'medium',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'hsl(0, 0%, 14%)',\n background: 'hsl(0, 0%, 100%)',\n accent: 'hsl(0, 0%, 96%)',\n },\n },\n },\n glassmorphism: {\n name: 'glassmorphism',\n label: 'Glassmorphism',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'oklch(0.60 0.18 250)',\n background: 'oklch(0.97 0.015 230)',\n accent: 'oklch(0.72 0.15 190)',\n },\n },\n },\n claymorphism: {\n name: 'claymorphism',\n label: 'Claymorphism',\n borderRadius: 'xl',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'oklch(0.65 0.20 255)',\n background: 'oklch(0.96 0.02 200)',\n accent: 'oklch(0.80 0.12 40)',\n },\n },\n },\n neumorphism: {\n name: 'neumorphism',\n label: 'Neumorphism',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'oklch(0.60 0.16 250)',\n background: 'oklch(0.93 0.01 240)',\n accent: 'oklch(0.68 0.14 215)',\n },\n },\n },\n aurora: {\n name: 'aurora',\n label: 'Aurora Borealis',\n borderRadius: 'large',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'oklch(0.62 0.18 175)',\n background: 'oklch(0.97 0.02 175)',\n accent: 'oklch(0.72 0.16 300)',\n },\n },\n },\n luxury: {\n name: 'luxury',\n label: 'Luxury Gold',\n borderRadius: 'small',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'oklch(0.72 0.14 75)',\n background: 'oklch(0.98 0.01 80)',\n accent: 'oklch(0.62 0.18 55)',\n },\n },\n },\n healthcare: {\n name: 'healthcare',\n label: 'Healthcare Clean',\n borderRadius: 'medium',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'oklch(0.55 0.16 218)',\n background: 'oklch(0.99 0.005 210)',\n accent: 'oklch(0.68 0.14 170)',\n },\n },\n },\n nordic: {\n name: 'nordic',\n label: 'Nordic Minimal',\n borderRadius: 'small',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'oklch(0.42 0.10 225)',\n background: 'oklch(0.97 0.01 220)',\n accent: 'oklch(0.65 0.10 195)',\n },\n },\n },\n 'warm-earth': {\n name: 'warm-earth',\n label: 'Warm Earth',\n borderRadius: 'medium',\n dynamicCSS: true,\n preview: {\n colors: {\n primary: 'oklch(0.52 0.12 50)',\n background: 'oklch(0.97 0.025 75)',\n accent: 'oklch(0.68 0.14 145)',\n },\n },\n },\n}\n\nexport const borderRadiusPresets = {\n none: {\n label: 'None',\n value: 'none',\n css: {\n '--radius-xs': '0',\n '--radius-small': '0',\n '--radius-default': '0',\n '--radius-medium': '0',\n '--radius-large': '0',\n '--radius-xl': '0',\n },\n },\n small: {\n label: 'Small',\n value: 'small',\n css: {\n '--radius-xs': '0.125rem',\n '--radius-small': '0.25rem',\n '--radius-default': '0.375rem',\n '--radius-medium': '0.5rem',\n '--radius-large': '0.75rem',\n '--radius-xl': '1rem',\n },\n },\n medium: {\n label: 'Medium',\n value: 'medium',\n css: {\n '--radius-xs': '0.25rem',\n '--radius-small': '0.5rem',\n '--radius-default': '0.75rem',\n '--radius-medium': '1rem',\n '--radius-large': '1.5rem',\n '--radius-xl': '2rem',\n },\n },\n large: {\n label: 'Large',\n value: 'large',\n css: {\n '--radius-xs': '0.5rem',\n '--radius-small': '0.75rem',\n '--radius-default': '1rem',\n '--radius-medium': '1.5rem',\n '--radius-large': '2rem',\n '--radius-xl': '2.5rem',\n },\n },\n xl: {\n label: 'Extra Large',\n value: 'xl',\n css: {\n '--radius-xs': '0.75rem',\n '--radius-small': '1rem',\n '--radius-default': '1.5rem',\n '--radius-medium': '2rem',\n '--radius-large': '2.5rem',\n '--radius-xl': '3rem',\n },\n },\n} as const\n\nexport function getThemeConfig(theme: ThemeDefaults): ThemeConfig {\n return themeConfigs[theme]\n}\n\nexport function getBorderRadiusConfig(preset: keyof typeof borderRadiusPresets) {\n return borderRadiusPresets[preset]\n}\n"],"names":["themeConfigs","cool","name","label","borderRadius","dynamicCSS","preview","colors","primary","background","accent","brutal","neon","solar","dealership","cyberpunk","minimal","retro","pastel","ocean","forest","sunset","lavender","neutral","blue","green","red","orange","rose","violet","zinc","slate","stone","gray","glassmorphism","claymorphism","neumorphism","aurora","luxury","healthcare","nordic","borderRadiusPresets","none","value","css","small","medium","large","xl","getThemeConfig","theme","getBorderRadiusConfig","preset"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const THEME_DEFAULTS: readonly ["cool", "brutal", "neon", "solar", "dealership", "real-estate", "real-estate-gold", "real-estate-neutral", "cyberpunk", "minimal", "retro", "pastel", "ocean", "forest", "sunset", "lavender", "neutral", "blue", "green", "red", "orange", "rose", "violet", "zinc", "slate", "stone", "gray"];
|
|
1
|
+
export declare const THEME_DEFAULTS: readonly ["cool", "brutal", "neon", "solar", "dealership", "real-estate", "real-estate-gold", "real-estate-neutral", "cyberpunk", "minimal", "retro", "pastel", "ocean", "forest", "sunset", "lavender", "neutral", "blue", "green", "red", "orange", "rose", "violet", "zinc", "slate", "stone", "gray", "glassmorphism", "claymorphism", "neumorphism", "aurora", "luxury", "healthcare", "nordic", "warm-earth"];
|
|
2
2
|
export type ThemeDefaults = (typeof THEME_DEFAULTS)[number];
|
|
3
3
|
export type Mode = 'dark' | 'light' | 'auto';
|
|
4
4
|
export type BorderRadiusPreset = 'none' | 'small' | 'medium' | 'large' | 'xl';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/Theme/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/Theme/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,qZAqCjB,CAAA;AAEV,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;AAE3D,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;AAE5C,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAA;AAE7E,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAA;AAEjE,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAA;AAE7D,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAA;AAEzE,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;AAEvD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,kBAAkB,CAAA;IAChC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,OAAO,CAAC,EAAE;QACR,MAAM,EAAE;YACN,OAAO,EAAE,MAAM,CAAA;YACf,UAAU,EAAE,MAAM,CAAA;YAClB,MAAM,EAAE,MAAM,CAAA;SACf,CAAA;KACF,CAAA;CACF;AAED,MAAM,WAAW,gBAAgB;IAE/B,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IAC5B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;IACzC,YAAY,EAAE,MAAM,IAAI,CAAA;IAGxB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IAClB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAA;IACpC,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAGlC,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAA;IACtD,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAA;IAC/C,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAA;IAC7C,cAAc,CAAC,EAAE,oBAAoB,CAAA;IACrC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAA;IAGzD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACzD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAA;IAGjD,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,aAAa,CAAA;IACpB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,IAAI,aAAa,CAE3E;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,IAAI,IAAI,CAEjE"}
|
|
@@ -25,7 +25,16 @@ export const THEME_DEFAULTS = [
|
|
|
25
25
|
'zinc',
|
|
26
26
|
'slate',
|
|
27
27
|
'stone',
|
|
28
|
-
'gray'
|
|
28
|
+
'gray',
|
|
29
|
+
// Extended themes with oklch colors
|
|
30
|
+
'glassmorphism',
|
|
31
|
+
'claymorphism',
|
|
32
|
+
'neumorphism',
|
|
33
|
+
'aurora',
|
|
34
|
+
'luxury',
|
|
35
|
+
'healthcare',
|
|
36
|
+
'nordic',
|
|
37
|
+
'warm-earth'
|
|
29
38
|
];
|
|
30
39
|
export function themeIsValid(string) {
|
|
31
40
|
return typeof string === 'string' && THEME_DEFAULTS.includes(string);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/providers/Theme/types.ts"],"sourcesContent":["export const THEME_DEFAULTS = [\n 'cool',\n 'brutal',\n 'neon',\n 'solar',\n 'dealership',\n 'real-estate',\n 'real-estate-gold',\n 'real-estate-neutral',\n 'cyberpunk',\n 'minimal',\n 'retro',\n 'pastel',\n 'ocean',\n 'forest',\n 'sunset',\n 'lavender',\n 'neutral',\n 'blue',\n 'green',\n 'red',\n 'orange',\n 'rose',\n 'violet',\n 'zinc',\n 'slate',\n 'stone',\n 'gray',\n] as const\n\nexport type ThemeDefaults = (typeof THEME_DEFAULTS)[number]\n\nexport type Mode = 'dark' | 'light' | 'auto'\n\nexport type BorderRadiusPreset = 'none' | 'small' | 'medium' | 'large' | 'xl'\n\nexport type FontScalePreset = 'small' | 'medium' | 'large' | 'xl'\n\nexport type SpacingPreset = 'compact' | 'medium' | 'spacious'\n\nexport type AnimationLevelPreset = 'none' | 'reduced' | 'medium' | 'high'\n\nexport type ColorModePreset = 'auto' | 'light' | 'dark'\n\nexport interface ThemeConfig {\n name: string\n label: string\n borderRadius: BorderRadiusPreset\n cssFile?: string // Optional - if not provided, CSS is generated dynamically\n dynamicCSS?: boolean // If true, CSS is generated from theme preset\n preview?: {\n colors: {\n primary: string\n background: string\n accent: string\n }\n }\n}\n\nexport interface ThemeContextType {\n // Theme management\n theme?: ThemeDefaults | null\n setTheme?: (theme: ThemeDefaults) => void // Add setTheme for enhanced functionality\n refreshTheme: () => void // Refresh theme (now handled server-side)\n\n // Color mode\n mode?: Mode | null\n setMode: (mode: Mode | null) => void\n isColorModeToggleAllowed?: boolean // Whether admin allows color mode changes\n\n // Design controls\n borderRadius?: BorderRadiusPreset\n setBorderRadius?: (radius: BorderRadiusPreset) => void\n fontScale?: FontScalePreset\n setFontScale?: (scale: FontScalePreset) => void\n spacing?: SpacingPreset\n setSpacing?: (spacing: SpacingPreset) => void\n animationLevel?: AnimationLevelPreset\n setAnimationLevel?: (level: AnimationLevelPreset) => void\n\n // Theme loading\n preloadTheme?: (theme: ThemeDefaults) => Promise<boolean>\n isThemeLoaded?: (theme: ThemeDefaults) => boolean\n\n // Enhanced configuration\n themeConfig?: unknown // Enhanced theme configuration from plugin\n}\n\nexport interface ThemeOption {\n label: string\n value: ThemeDefaults\n config?: ThemeConfig\n}\n\nexport function themeIsValid(string: null | string): string is ThemeDefaults {\n return typeof string === 'string' && (THEME_DEFAULTS as readonly string[]).includes(string)\n}\n\nexport function modeIsValid(string: null | string): string is Mode {\n return typeof string === 'string' && ['dark', 'light', 'auto'].includes(string)\n}\n"],"names":["THEME_DEFAULTS","themeIsValid","string","includes","modeIsValid"],"mappings":"AAAA,OAAO,MAAMA,iBAAiB;IAC5B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD,CAAS;AAkEV,OAAO,SAASC,aAAaC,MAAqB;IAChD,OAAO,OAAOA,WAAW,YAAY,AAACF,eAAqCG,QAAQ,CAACD;AACtF;AAEA,OAAO,SAASE,YAAYF,MAAqB;IAC/C,OAAO,OAAOA,WAAW,YAAY;QAAC;QAAQ;QAAS;KAAO,CAACC,QAAQ,CAACD;AAC1E"}
|
|
1
|
+
{"version":3,"sources":["../../../src/providers/Theme/types.ts"],"sourcesContent":["export const THEME_DEFAULTS = [\n 'cool',\n 'brutal',\n 'neon',\n 'solar',\n 'dealership',\n 'real-estate',\n 'real-estate-gold',\n 'real-estate-neutral',\n 'cyberpunk',\n 'minimal',\n 'retro',\n 'pastel',\n 'ocean',\n 'forest',\n 'sunset',\n 'lavender',\n 'neutral',\n 'blue',\n 'green',\n 'red',\n 'orange',\n 'rose',\n 'violet',\n 'zinc',\n 'slate',\n 'stone',\n 'gray',\n // Extended themes with oklch colors\n 'glassmorphism',\n 'claymorphism',\n 'neumorphism',\n 'aurora',\n 'luxury',\n 'healthcare',\n 'nordic',\n 'warm-earth',\n] as const\n\nexport type ThemeDefaults = (typeof THEME_DEFAULTS)[number]\n\nexport type Mode = 'dark' | 'light' | 'auto'\n\nexport type BorderRadiusPreset = 'none' | 'small' | 'medium' | 'large' | 'xl'\n\nexport type FontScalePreset = 'small' | 'medium' | 'large' | 'xl'\n\nexport type SpacingPreset = 'compact' | 'medium' | 'spacious'\n\nexport type AnimationLevelPreset = 'none' | 'reduced' | 'medium' | 'high'\n\nexport type ColorModePreset = 'auto' | 'light' | 'dark'\n\nexport interface ThemeConfig {\n name: string\n label: string\n borderRadius: BorderRadiusPreset\n cssFile?: string // Optional - if not provided, CSS is generated dynamically\n dynamicCSS?: boolean // If true, CSS is generated from theme preset\n preview?: {\n colors: {\n primary: string\n background: string\n accent: string\n }\n }\n}\n\nexport interface ThemeContextType {\n // Theme management\n theme?: ThemeDefaults | null\n setTheme?: (theme: ThemeDefaults) => void // Add setTheme for enhanced functionality\n refreshTheme: () => void // Refresh theme (now handled server-side)\n\n // Color mode\n mode?: Mode | null\n setMode: (mode: Mode | null) => void\n isColorModeToggleAllowed?: boolean // Whether admin allows color mode changes\n\n // Design controls\n borderRadius?: BorderRadiusPreset\n setBorderRadius?: (radius: BorderRadiusPreset) => void\n fontScale?: FontScalePreset\n setFontScale?: (scale: FontScalePreset) => void\n spacing?: SpacingPreset\n setSpacing?: (spacing: SpacingPreset) => void\n animationLevel?: AnimationLevelPreset\n setAnimationLevel?: (level: AnimationLevelPreset) => void\n\n // Theme loading\n preloadTheme?: (theme: ThemeDefaults) => Promise<boolean>\n isThemeLoaded?: (theme: ThemeDefaults) => boolean\n\n // Enhanced configuration\n themeConfig?: unknown // Enhanced theme configuration from plugin\n}\n\nexport interface ThemeOption {\n label: string\n value: ThemeDefaults\n config?: ThemeConfig\n}\n\nexport function themeIsValid(string: null | string): string is ThemeDefaults {\n return typeof string === 'string' && (THEME_DEFAULTS as readonly string[]).includes(string)\n}\n\nexport function modeIsValid(string: null | string): string is Mode {\n return typeof string === 'string' && ['dark', 'light', 'auto'].includes(string)\n}\n"],"names":["THEME_DEFAULTS","themeIsValid","string","includes","modeIsValid"],"mappings":"AAAA,OAAO,MAAMA,iBAAiB;IAC5B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,oCAAoC;IACpC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD,CAAS;AAkEV,OAAO,SAASC,aAAaC,MAAqB;IAChD,OAAO,OAAOA,WAAW,YAAY,AAACF,eAAqCG,QAAQ,CAACD;AACtF;AAEA,OAAO,SAASE,YAAYF,MAAqB;IAC/C,OAAO,OAAOA,WAAW,YAAY;QAAC;QAAQ;QAAS;KAAO,CAACC,QAAQ,CAACD;AAC1E"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Style presets — define visual style (effects, component defaults, layout)
|
|
3
|
+
* WITHOUT touching color palettes.
|
|
4
|
+
*
|
|
5
|
+
* A user can combine any color preset (ThemePreset) with any style preset (StylePreset).
|
|
6
|
+
*/
|
|
7
|
+
export interface StylePresetTypography {
|
|
8
|
+
/** Body / paragraph font family (CSS font-family value or Google Fonts name) */
|
|
9
|
+
bodyFont?: string;
|
|
10
|
+
/** Heading font family */
|
|
11
|
+
headingFont?: string;
|
|
12
|
+
/** Base font size token: 'small' | 'medium' | 'large' */
|
|
13
|
+
baseFontSize?: 'small' | 'medium' | 'large';
|
|
14
|
+
/** Line-height token: 'compact' | 'normal' | 'relaxed' */
|
|
15
|
+
lineHeight?: 'compact' | 'normal' | 'relaxed';
|
|
16
|
+
/** Letter-spacing character: 'tight' | 'normal' | 'wide' | 'wider' */
|
|
17
|
+
letterSpacing?: 'tight' | 'normal' | 'wide' | 'wider';
|
|
18
|
+
/** Heading weight: normal CSS font-weight string */
|
|
19
|
+
headingWeight?: '300' | '400' | '500' | '600' | '700' | '800' | '900';
|
|
20
|
+
}
|
|
21
|
+
export interface StylePreset {
|
|
22
|
+
name: string;
|
|
23
|
+
label: {
|
|
24
|
+
en: string;
|
|
25
|
+
cs: string;
|
|
26
|
+
};
|
|
27
|
+
description: {
|
|
28
|
+
en: string;
|
|
29
|
+
cs: string;
|
|
30
|
+
};
|
|
31
|
+
category: 'classic' | 'effect';
|
|
32
|
+
borderRadius?: 'none' | 'small' | 'medium' | 'large' | 'xl';
|
|
33
|
+
animationLevel?: 'none' | 'reduced' | 'medium' | 'high';
|
|
34
|
+
/** Spacing scale: 'compact' = tighter padding/gap, 'medium' = default, 'spacious' = generous whitespace */
|
|
35
|
+
spacing?: 'compact' | 'medium' | 'spacious';
|
|
36
|
+
typography?: StylePresetTypography;
|
|
37
|
+
visualEffects?: {
|
|
38
|
+
effectStyle?: 'flat' | 'elevated' | 'glass' | 'neumorphic' | 'clay';
|
|
39
|
+
shadowIntensity?: 'none' | 'subtle' | 'medium' | 'strong' | 'dramatic';
|
|
40
|
+
backdropBlur?: 'none' | 'slight' | 'medium' | 'strong' | 'heavy';
|
|
41
|
+
borderStyle?: 'none' | 'solid' | 'dashed' | 'dotted' | 'double';
|
|
42
|
+
borderWidth?: '0px' | '1px' | '2px' | '3px' | '4px';
|
|
43
|
+
glassOpacity?: number;
|
|
44
|
+
};
|
|
45
|
+
componentStyles?: {
|
|
46
|
+
buttonVariant?: 'filled' | 'outlined' | 'ghost' | 'gradient' | 'pill' | 'brutal';
|
|
47
|
+
cardStyle?: 'elevated' | 'flat' | 'bordered' | 'glass' | 'neumorphic' | 'gradient-border';
|
|
48
|
+
cardHoverEffect?: 'none' | 'lift' | 'scale' | 'shadow' | 'glow' | 'tilt';
|
|
49
|
+
navbarStyle?: 'solid' | 'transparent' | 'blur' | 'floating' | 'minimal';
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export declare const allStylePresets: StylePreset[];
|
|
53
|
+
export declare const stylePresetCategories: readonly [{
|
|
54
|
+
readonly name: "classic";
|
|
55
|
+
readonly label: {
|
|
56
|
+
readonly en: "Classic Styles";
|
|
57
|
+
readonly cs: "Klasické styly";
|
|
58
|
+
};
|
|
59
|
+
}, {
|
|
60
|
+
readonly name: "effect";
|
|
61
|
+
readonly label: {
|
|
62
|
+
readonly en: "Visual Effects";
|
|
63
|
+
readonly cs: "Vizuální efekty";
|
|
64
|
+
};
|
|
65
|
+
}];
|
|
66
|
+
//# sourceMappingURL=style-presets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style-presets.d.ts","sourceRoot":"","sources":["../src/style-presets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,qBAAqB;IACpC,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,yDAAyD;IACzD,YAAY,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAA;IAC3C,0DAA0D;IAC1D,UAAU,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAA;IAC7C,sEAAsE;IACtE,aAAa,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;IACrD,oDAAoD;IACpD,aAAa,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAA;CACtE;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;IACjC,WAAW,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;IACvC,QAAQ,EAAE,SAAS,GAAG,QAAQ,CAAA;IAC9B,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAA;IAC3D,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAA;IACvD,2GAA2G;IAC3G,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAA;IAC3C,UAAU,CAAC,EAAE,qBAAqB,CAAA;IAClC,aAAa,CAAC,EAAE;QACd,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,YAAY,GAAG,MAAM,CAAA;QACnE,eAAe,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAA;QACtE,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAA;QAChE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;QAC/D,WAAW,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAA;QACnD,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;IACD,eAAe,CAAC,EAAE;QAChB,aAAa,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAA;QAChF,SAAS,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,YAAY,GAAG,iBAAiB,CAAA;QACzF,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;QACxE,WAAW,CAAC,EAAE,OAAO,GAAG,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAA;KACxE,CAAA;CACF;AAED,eAAO,MAAM,eAAe,EAAE,WAAW,EAwexC,CAAA;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;EAGxB,CAAA"}
|