@kilivi/payloadcms-theme-management 2.0.0 → 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.
Files changed (214) hide show
  1. package/README.md +318 -847
  2. package/dist/components/AppearanceSessionControls.d.ts +15 -0
  3. package/dist/components/AppearanceSessionControls.d.ts.map +1 -0
  4. package/dist/components/AppearanceSessionControls.js +152 -0
  5. package/dist/components/AppearanceSessionControls.js.map +1 -0
  6. package/dist/components/ColorModeToggle.css +42 -0
  7. package/dist/components/ColorModeToggle.d.ts +40 -0
  8. package/dist/components/ColorModeToggle.d.ts.map +1 -0
  9. package/dist/components/ColorModeToggle.js +111 -0
  10. package/dist/components/ColorModeToggle.js.map +1 -0
  11. package/dist/components/ServerThemeInjector.d.ts.map +1 -1
  12. package/dist/components/ServerThemeInjector.js +41 -14
  13. package/dist/components/ServerThemeInjector.js.map +1 -1
  14. package/dist/components/ThemeLivePreviewSync.d.ts +1 -0
  15. package/dist/components/ThemeLivePreviewSync.d.ts.map +1 -1
  16. package/dist/components/ThemeLivePreviewSync.js +1 -1
  17. package/dist/components/ThemeLivePreviewSync.js.map +1 -1
  18. package/dist/components/ThemeSwitcher.d.ts +36 -0
  19. package/dist/components/ThemeSwitcher.d.ts.map +1 -0
  20. package/dist/components/ThemeSwitcher.js +89 -0
  21. package/dist/components/ThemeSwitcher.js.map +1 -0
  22. package/dist/components/typographyPreviewUtils.d.ts.map +1 -1
  23. package/dist/components/typographyPreviewUtils.js +8 -1
  24. package/dist/components/typographyPreviewUtils.js.map +1 -1
  25. package/dist/constants/devicePreviews.d.ts +35 -0
  26. package/dist/constants/devicePreviews.d.ts.map +1 -0
  27. package/dist/constants/devicePreviews.js +43 -0
  28. package/dist/constants/devicePreviews.js.map +1 -0
  29. package/dist/constants/themeFonts.js +9 -9
  30. package/dist/constants/themeFonts.js.map +1 -1
  31. package/dist/extended-presets.d.ts +0 -4
  32. package/dist/extended-presets.d.ts.map +1 -1
  33. package/dist/extended-presets.js +1 -18
  34. package/dist/extended-presets.js.map +1 -1
  35. package/dist/extended-themes.d.ts.map +1 -1
  36. package/dist/extended-themes.js +428 -0
  37. package/dist/extended-themes.js.map +1 -1
  38. package/dist/fields/AccessibilityAuditField.d.ts +2 -0
  39. package/dist/fields/AccessibilityAuditField.d.ts.map +1 -0
  40. package/dist/fields/AccessibilityAuditField.js +303 -0
  41. package/dist/fields/AccessibilityAuditField.js.map +1 -0
  42. package/dist/fields/AppearancePreviewField.d.ts +2 -0
  43. package/dist/fields/AppearancePreviewField.d.ts.map +1 -0
  44. package/dist/fields/AppearancePreviewField.js +763 -0
  45. package/dist/fields/AppearancePreviewField.js.map +1 -0
  46. package/dist/fields/ColorPickerField.d.ts.map +1 -1
  47. package/dist/fields/ColorPickerField.js +89 -85
  48. package/dist/fields/ColorPickerField.js.map +1 -1
  49. package/dist/fields/FontSelectField.d.ts +6 -0
  50. package/dist/fields/FontSelectField.d.ts.map +1 -1
  51. package/dist/fields/FontSelectField.js +195 -122
  52. package/dist/fields/FontSelectField.js.map +1 -1
  53. package/dist/fields/PaletteGeneratorField.d.ts +7 -0
  54. package/dist/fields/PaletteGeneratorField.d.ts.map +1 -0
  55. package/dist/fields/PaletteGeneratorField.js +327 -0
  56. package/dist/fields/PaletteGeneratorField.js.map +1 -0
  57. package/dist/fields/StylePresetField.d.ts +3 -0
  58. package/dist/fields/StylePresetField.d.ts.map +1 -0
  59. package/dist/fields/StylePresetField.js +462 -0
  60. package/dist/fields/StylePresetField.js.map +1 -0
  61. package/dist/fields/ThemeColorPickerField.css +115 -35
  62. package/dist/fields/ThemeColorPickerField.d.ts.map +1 -1
  63. package/dist/fields/ThemeColorPickerField.js +204 -70
  64. package/dist/fields/ThemeColorPickerField.js.map +1 -1
  65. package/dist/fields/ThemeExportField.d.ts +6 -0
  66. package/dist/fields/ThemeExportField.d.ts.map +1 -0
  67. package/dist/fields/ThemeExportField.js +202 -0
  68. package/dist/fields/ThemeExportField.js.map +1 -0
  69. package/dist/fields/ThemePresetImportField.d.ts.map +1 -1
  70. package/dist/fields/ThemePresetImportField.js +56 -25
  71. package/dist/fields/ThemePresetImportField.js.map +1 -1
  72. package/dist/fields/ThemePreviewField.css +382 -5
  73. package/dist/fields/ThemePreviewField.d.ts.map +1 -1
  74. package/dist/fields/ThemePreviewField.js +268 -170
  75. package/dist/fields/ThemePreviewField.js.map +1 -1
  76. package/dist/fields/ThemeTokenSelectField.d.ts.map +1 -1
  77. package/dist/fields/ThemeTokenSelectField.js +278 -80
  78. package/dist/fields/ThemeTokenSelectField.js.map +1 -1
  79. package/dist/fields/colorFieldHelpers.d.ts +90 -0
  80. package/dist/fields/colorFieldHelpers.d.ts.map +1 -0
  81. package/dist/fields/colorFieldHelpers.js +133 -0
  82. package/dist/fields/colorFieldHelpers.js.map +1 -0
  83. package/dist/fields/colorModeFields.d.ts +1 -1
  84. package/dist/fields/colorModeFields.d.ts.map +1 -1
  85. package/dist/fields/colorModeFields.js +49 -7
  86. package/dist/fields/colorModeFields.js.map +1 -1
  87. package/dist/fields/themeConfigurationField.d.ts +8 -1
  88. package/dist/fields/themeConfigurationField.d.ts.map +1 -1
  89. package/dist/fields/themeConfigurationField.js +961 -29
  90. package/dist/fields/themeConfigurationField.js.map +1 -1
  91. package/dist/globals/ThemeSettings/FontPicker/FontPreview.d.ts.map +1 -1
  92. package/dist/globals/ThemeSettings/FontPicker/FontPreview.js +8 -4
  93. package/dist/globals/ThemeSettings/FontPicker/FontPreview.js.map +1 -1
  94. package/dist/globals/ThemeSettings/FontPicker/index.d.ts.map +1 -1
  95. package/dist/globals/ThemeSettings/FontPicker/index.js +81 -26
  96. package/dist/globals/ThemeSettings/FontPicker/index.js.map +1 -1
  97. package/dist/globals/ThemeSettings/FontPicker/styles.css +98 -41
  98. package/dist/globals/ThemeSettings/FontPicker/translations.d.ts +6 -0
  99. package/dist/globals/ThemeSettings/FontPicker/translations.d.ts.map +1 -1
  100. package/dist/globals/ThemeSettings/FontPicker/translations.js +14 -2
  101. package/dist/globals/ThemeSettings/FontPicker/translations.js.map +1 -1
  102. package/dist/globals/ThemeSettings/config.d.ts.map +1 -1
  103. package/dist/globals/ThemeSettings/config.js +76 -79
  104. package/dist/globals/ThemeSettings/config.js.map +1 -1
  105. package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.d.ts.map +1 -1
  106. package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.js +63 -62
  107. package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.js.map +1 -1
  108. package/dist/globals/ThemeSettings/fields/TypographyInfoField.d.ts.map +1 -1
  109. package/dist/globals/ThemeSettings/fields/TypographyInfoField.js +22 -25
  110. package/dist/globals/ThemeSettings/fields/TypographyInfoField.js.map +1 -1
  111. package/dist/hooks/useAppearanceSession.d.ts +50 -0
  112. package/dist/hooks/useAppearanceSession.d.ts.map +1 -0
  113. package/dist/hooks/useAppearanceSession.js +91 -0
  114. package/dist/hooks/useAppearanceSession.js.map +1 -0
  115. package/dist/hooks/useThemeTranslations.d.ts +13 -0
  116. package/dist/hooks/useThemeTranslations.d.ts.map +1 -0
  117. package/dist/hooks/useThemeTranslations.js +22 -0
  118. package/dist/hooks/useThemeTranslations.js.map +1 -0
  119. package/dist/i18n.d.ts +53 -0
  120. package/dist/i18n.d.ts.map +1 -0
  121. package/dist/i18n.js +53 -0
  122. package/dist/i18n.js.map +1 -0
  123. package/dist/index.d.ts +10 -4
  124. package/dist/index.d.ts.map +1 -1
  125. package/dist/index.js +50 -29
  126. package/dist/index.js.map +1 -1
  127. package/dist/payload-types.d.ts +24 -0
  128. package/dist/payload-types.d.ts.map +1 -1
  129. package/dist/payload-types.js.map +1 -1
  130. package/dist/presets.d.ts +8 -0
  131. package/dist/presets.d.ts.map +1 -1
  132. package/dist/presets.js.map +1 -1
  133. package/dist/providers/Theme/index.d.ts.map +1 -1
  134. package/dist/providers/Theme/index.js +75 -11
  135. package/dist/providers/Theme/index.js.map +1 -1
  136. package/dist/providers/Theme/themeConfig.d.ts.map +1 -1
  137. package/dist/providers/Theme/themeConfig.js +104 -0
  138. package/dist/providers/Theme/themeConfig.js.map +1 -1
  139. package/dist/providers/Theme/types.d.ts +1 -1
  140. package/dist/providers/Theme/types.d.ts.map +1 -1
  141. package/dist/providers/Theme/types.js +10 -1
  142. package/dist/providers/Theme/types.js.map +1 -1
  143. package/dist/style-presets.d.ts +66 -0
  144. package/dist/style-presets.d.ts.map +1 -0
  145. package/dist/style-presets.js +556 -0
  146. package/dist/style-presets.js.map +1 -0
  147. package/dist/translations.d.ts +159 -1
  148. package/dist/translations.d.ts.map +1 -1
  149. package/dist/translations.js +310 -9
  150. package/dist/translations.js.map +1 -1
  151. package/dist/tweakcn-special-themes.d.ts.map +1 -1
  152. package/dist/tweakcn-special-themes.js +585 -9
  153. package/dist/tweakcn-special-themes.js.map +1 -1
  154. package/dist/types/css.d.js +3 -0
  155. package/dist/types/css.d.js.map +1 -0
  156. package/dist/types.d.ts +26 -0
  157. package/dist/types.d.ts.map +1 -1
  158. package/dist/types.js +1 -1
  159. package/dist/types.js.map +1 -1
  160. package/dist/utilities/getThemeSettings.d.ts.map +1 -1
  161. package/dist/utilities/getThemeSettings.js +2 -14
  162. package/dist/utilities/getThemeSettings.js.map +1 -1
  163. package/dist/utils/contrast.d.ts +63 -0
  164. package/dist/utils/contrast.d.ts.map +1 -0
  165. package/dist/utils/contrast.js +158 -0
  166. package/dist/utils/contrast.js.map +1 -0
  167. package/dist/utils/exportTokens.d.ts +30 -0
  168. package/dist/utils/exportTokens.d.ts.map +1 -0
  169. package/dist/utils/exportTokens.js +183 -0
  170. package/dist/utils/exportTokens.js.map +1 -0
  171. package/dist/utils/generatePalette.d.ts +46 -0
  172. package/dist/utils/generatePalette.d.ts.map +1 -0
  173. package/dist/utils/generatePalette.js +127 -0
  174. package/dist/utils/generatePalette.js.map +1 -0
  175. package/dist/utils/generateThemeCSS.d.ts.map +1 -1
  176. package/dist/utils/generateThemeCSS.js +2 -40
  177. package/dist/utils/generateThemeCSS.js.map +1 -1
  178. package/dist/utils/livePreviewThemeRuntime.d.ts +16 -2
  179. package/dist/utils/livePreviewThemeRuntime.d.ts.map +1 -1
  180. package/dist/utils/livePreviewThemeRuntime.js +37 -14
  181. package/dist/utils/livePreviewThemeRuntime.js.map +1 -1
  182. package/dist/utils/localizedText.d.ts +8 -0
  183. package/dist/utils/localizedText.d.ts.map +1 -0
  184. package/dist/utils/localizedText.js +21 -0
  185. package/dist/utils/localizedText.js.map +1 -0
  186. package/dist/utils/resolveThemeConfiguration.d.ts +45 -1
  187. package/dist/utils/resolveThemeConfiguration.d.ts.map +1 -1
  188. package/dist/utils/resolveThemeConfiguration.js +12 -5
  189. package/dist/utils/resolveThemeConfiguration.js.map +1 -1
  190. package/dist/utils/themeColors.d.ts +3 -0
  191. package/dist/utils/themeColors.d.ts.map +1 -1
  192. package/dist/utils/themeColors.js +30 -1
  193. package/dist/utils/themeColors.js.map +1 -1
  194. package/dist/utils/themeHtmlAttributes.d.ts +32 -12
  195. package/dist/utils/themeHtmlAttributes.d.ts.map +1 -1
  196. package/dist/utils/themeHtmlAttributes.js +38 -5
  197. package/dist/utils/themeHtmlAttributes.js.map +1 -1
  198. package/dist/utils/themeUtils.d.ts +3 -5
  199. package/dist/utils/themeUtils.d.ts.map +1 -1
  200. package/dist/utils/themeUtils.js +416 -6
  201. package/dist/utils/themeUtils.js.map +1 -1
  202. package/dist/utils/tweakcnConverter.d.ts +1 -3
  203. package/dist/utils/tweakcnConverter.d.ts.map +1 -1
  204. package/dist/utils/tweakcnConverter.js +1 -3
  205. package/dist/utils/tweakcnConverter.js.map +1 -1
  206. package/package.json +11 -5
  207. package/dist/components/ThemePreview.d.ts +0 -3
  208. package/dist/components/ThemePreview.d.ts.map +0 -1
  209. package/dist/components/ThemePreview.js +0 -321
  210. package/dist/components/ThemePreview.js.map +0 -1
  211. package/dist/plugin.d.ts +0 -2
  212. package/dist/plugin.d.ts.map +0 -1
  213. package/dist/plugin.js +0 -3
  214. 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
- // State pro light/dark mode switching
14
+ // Light/dark mode state
15
15
  const [mode, setMode] = useState(initialMode || defaultMode);
16
16
  const [theme] = useState(initialTheme || null);
17
- // Funkce pro získání skutečného módu (resolve "auto" mode)
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
- // Aplikace módu na DOM a CSS variables
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
- // Získej aktuální theme z DOM nebo použij fallback
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
- // Aplikuj data atributy a třídy (kompatibilní s CSS selektory)
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
- // Uložení light/dark mode do localStorage a aplikace
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
- // Načtení mode z localStorage při startu
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
- // Fallback na default mode
141
+ // Fall back to the default mode
78
142
  applyMode(defaultMode);
79
143
  }
80
144
  }
81
145
  }, [
82
146
  applyMode
83
147
  ]);
84
- // Listener pro změny system preference (pouze při auto mode)
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-resolve auto mode
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
- // Refresh theme - aplikuj aktuální mode
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":"AAAA;;AAEA,OAAOA,SAASC,aAAa,EAAEC,WAAW,EAAEC,UAAU,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,QAAO;AACnG,SAASC,WAAW,EAAEC,mBAAmB,QAAQ,cAAa;AAG9D,MAAMC,6BAAeR,cAA4CS;AAEjE,OAAO,MAAMC,WAAW;IACtB,MAAMC,UAAUT,WAAWM;IAC3B,IAAI,CAACG,SAAS;QACZ,MAAM,IAAIC,MAAM;IAClB;IACA,OAAOD;AACT,EAAC;AASD,OAAO,MAAME,gBAA8C,CAAC,EAC1DC,QAAQ,EACRC,YAAY,EACZC,WAAW,EACXC,uBAAuB,IAAI,EAC5B;IACC,wBAAwB;IACxB,MAAM,CAACC,MAAMC,QAAQ,GAAGd,SAAsBW,eAAeV;IAC7D,MAAM,CAACc,MAAM,GAAGf,SAA+BU,gBAAgB;IAE/D,mEAAmE;IACnE,MAAMM,kBAAkBpB,YAAY,CAACqB;QACnC,IAAIA,gBAAgB,UAAU,OAAOC,WAAW,aAAa;YAC3D,MAAMC,aAAaD,OAAOE,UAAU,CAAC;YACrC,OAAOD,WAAWE,OAAO,GAAG,SAAS;QACvC;QACA,OAAOJ,gBAAgB,SAAS,SAAS;IAC3C,GAAG,EAAE;IAEL,uDAAuD;IACvD,MAAMK,YAAY1B,YAChB,CAACqB;QACC,IAAI,OAAOC,WAAW,aAAa;YACjC,MAAMK,eAAeP,gBAAgBC;YAErC,sDAAsD;YACtD,MAAMO,eACJC,SAASC,eAAe,CAACC,YAAY,CAAC,iBACrC,CAAA,OAAOZ,UAAU,WAAWA,QAAQ,MAAK;YAE5C,kEAAkE;YAClEU,SAASC,eAAe,CAACE,YAAY,CAAC,mBAAmBL;YACzDE,SAASC,eAAe,CAACE,YAAY,CAAC,mBAAmBL;YACzDE,SAASC,eAAe,CAACE,YAAY,CAAC,cAAcJ;YACpDC,SAASC,eAAe,CAACG,SAAS,CAACC,MAAM,CAAC,SAAS,QAAQ;YAC3DL,SAASC,eAAe,CAACG,SAAS,CAACE,GAAG,CAACR;YAEvC,gDAAgD;YAChDE,SAASC,eAAe,CAACM,KAAK,CAACC,WAAW,CAAC,gBAAgBV;YAE3D,wEAAwE;YACxE,2EAA2E;YAC3E,uEAAuE;YACvE,uEAAuE;YACvE,4EAA4E;YAC5E,MAAMW,gBAAgBC,iBAAiBV,SAASC,eAAe;YAC/D,MAAMU,eAAsD;gBAC1D;oBAAC;oBAAkB;iBAAoB;gBACvC;oBAAC;oBAAsB;iBAAwB;gBAC/C;oBAAC;oBAAyB;iBAAqB;gBAC/C;oBAAC;oBAAkB;iBAAoB;gBACvC;oBAAC;oBAAkB;iBAAoB;gBACvC;oBAAC;oBAAgB;iBAAkB;gBACnC;oBAAC;oBAAuB;iBAAkB;gBAC1C;oBAAC;oBAAoB;iBAAsB;gBAC3C;oBAAC;oBAAiB;iBAAmB;gBACrC;oBAAC;oBAAkB;iBAAoB;gBACvC;oBAAC;oBAAkB;iBAAoB;gBACvC;oBAAC;oBAAiB;iBAAmB;gBACrC;oBAAC;oBAAgB;iBAAkB;aACpC;YAED,KAAK,MAAM,CAACC,QAAQC,KAAK,IAAIF,aAAc;gBACzC,MAAMG,QAAQL,cAAcM,gBAAgB,CAACH,QAAQI,IAAI;gBACzD,IAAIF,OAAOd,SAASC,eAAe,CAACE,YAAY,CAACU,MAAMC;YACzD;YAEA,+CAA+C;YAC/C,oEAAoE;YACpEd,SAASC,eAAe,CAACgB,YAAY;YAErC,2EAA2E;YAC3ExB,OAAOyB,aAAa,CAClB,IAAIC,YAAY,eAAe;gBAC7BC,QAAQ;oBAAEhC,MAAMU;oBAAcuB,cAAc7B;oBAAaF,OAAOS;gBAAa;YAC/E;QAEJ;IACF,GACA;QAACR;QAAiBD;KAAM;IAG1B,oEAAoE;IACpE,MAAMgC,aAAanD,YACjB,CAACoD;QACClC,QAAQkC;QACR,IAAIA,WAAW,OAAO9B,WAAW,aAAa;YAC5C+B,aAAaC,OAAO,CAAChD,qBAAqB8C;YAC1C1B,UAAU0B;QACZ;IACF,GACA;QAAC1B;KAAU;IAGb,0CAA0C;IAC1CxB,UAAU;QACR,IAAI,OAAOoB,WAAW,aAAa;YACjC,MAAMiC,aAAaF,aAAaG,OAAO,CAAClD;YACxC,IAAIiD,cAAc;gBAAC;gBAAS;gBAAQ;aAAO,CAACE,QAAQ,CAACF,aAAa;gBAChErC,QAAQqC;gBACR7B,UAAU6B;YACZ,OAAO;gBACL,gCAAgC;gBAChC7B,UAAUrB;YACZ;QACF;IACF,GAAG;QAACqB;KAAU;IAEd,8EAA8E;IAC9ExB,UAAU;QACR,IAAIe,SAAS,UAAU,OAAOK,WAAW,aAAa;YACpD,MAAMC,aAAaD,OAAOE,UAAU,CAAC;YAErC,MAAMkC,eAAe;gBACnBhC,UAAU,SAAQ,0DAA0D;YAC9E;YAEAH,WAAWoC,gBAAgB,CAAC,UAAUD;YAEtC,OAAO;gBACLnC,WAAWqC,mBAAmB,CAAC,UAAUF;YAC3C;QACF;IACF,GAAG;QAACzC;QAAMS;KAAU;IAEpB,MAAMmC,eAAe7D,YAAY;QAC/B,8DAA8D;QAC9D0B,UAAUT;IACZ,GAAG;QAACA;QAAMS;KAAU;IAEpB,MAAMoC,eAAe3D,QACnB,IAAO,CAAA;YACLgB;YACAF;YACA8C,UAAU,KAAO;YACjB7C,SAASiC;YACTa,0BAA0BhD;YAC1B6C;QACF,CAAA,GACA;QAAC1C;QAAOF;QAAMkC;QAAYnC;QAAsB6C;KAAa;IAG/D,qBAAO,KAACtD,aAAa0D,QAAQ;QAACtB,OAAOmB;kBAAejD;;AACtD,EAAC"}
@@ -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,CAiW3D,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"}
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,2SA4BjB,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"}
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"}