@kilivi/payloadcms-theme-management 0.1.8 → 0.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +331 -41
  2. package/dist/components/ServerThemeInjector.d.ts +12 -3
  3. package/dist/components/ServerThemeInjector.d.ts.map +1 -1
  4. package/dist/components/ServerThemeInjector.js +8 -12
  5. package/dist/components/ServerThemeInjector.js.map +1 -1
  6. package/dist/components/ThemePreview.js.map +1 -1
  7. package/dist/components/typographyPreviewUtils.js.map +1 -1
  8. package/dist/constants/themeFonts.js.map +1 -1
  9. package/dist/fields/ColorPickerField.js.map +1 -1
  10. package/dist/fields/RadiusField.js.map +1 -1
  11. package/dist/fields/ThemeColorPickerField.css +138 -138
  12. package/dist/fields/ThemeColorPickerField.js.map +1 -1
  13. package/dist/fields/ThemePreviewField.js.map +1 -1
  14. package/dist/fields/ThemeTokenSelectField.js.map +1 -1
  15. package/dist/fields/colorModeFields.js.map +1 -1
  16. package/dist/fields/themeConfigurationField.js +3 -3
  17. package/dist/fields/themeConfigurationField.js.map +1 -1
  18. package/dist/index.d.ts +0 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +0 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/payload-types.js +3 -3
  23. package/dist/payload-types.js.map +1 -1
  24. package/dist/plugin.js.map +1 -1
  25. package/dist/presets.js.map +1 -1
  26. package/dist/providers/Theme/index.js.map +1 -1
  27. package/dist/providers/Theme/shared.js.map +1 -1
  28. package/dist/providers/Theme/themeConfig.js.map +1 -1
  29. package/dist/providers/Theme/types.js.map +1 -1
  30. package/dist/server.d.ts +1 -0
  31. package/dist/server.d.ts.map +1 -1
  32. package/dist/server.js +1 -0
  33. package/dist/server.js.map +1 -1
  34. package/dist/src/--verbose/dist/fields/ThemeColorPickerField.scss +138 -0
  35. package/dist/src/dist/fields/ThemeColorPickerField.scss +138 -0
  36. package/dist/types.js.map +1 -1
  37. package/dist/utils/resolveThemeConfiguration.js.map +1 -1
  38. package/dist/utils/themeAssets.js.map +1 -1
  39. package/dist/utils/themeColors.js.map +1 -1
  40. package/dist/utils/themeUtils.js +6 -6
  41. package/dist/utils/themeUtils.js.map +1 -1
  42. package/package.json +10 -6
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/presets.ts"],"sourcesContent":["export interface ThemeTypographyPreset {\n fontFamily: string\n headingFamily: string\n baseFontSize: string\n lineHeight: string\n fontWeights: {\n light?: string\n normal?: string\n medium?: string\n semibold?: string\n bold?: string\n black?: string\n }\n letterSpacing: {\n tight?: string\n normal?: string\n wide?: string\n wider?: string\n }\n}\n\nexport interface ThemePreset {\n name: string\n label: string\n borderRadius: 'none' | 'small' | 'medium' | 'large' | 'xl'\n cssFile?: string\n preview?: {\n colors: {\n primary: string\n background: string\n accent: string\n }\n }\n theme?: string\n colorMode?: 'auto' | 'light' | 'dark'\n fontScale?: 'small' | 'medium' | 'large'\n spacing?: 'small' | 'medium' | 'large'\n animationLevel?: 'low' | 'medium' | 'high'\n lightMode?: Record<string, string>\n darkMode?: Record<string, string>\n typography?: ThemeTypographyPreset\n}\n\nexport const defaultThemePresets: ThemePreset[] = [\n {\n name: 'cool',\n label: 'Cool & Professional',\n borderRadius: 'medium',\n preview: {\n colors: {\n primary: '#3b82f6',\n background: '#ffffff',\n accent: '#f1f5f9',\n },\n },\n lightMode: {\n background: '#ffffff',\n foreground: '#0a0a0a',\n card: '#ffffff',\n cardForeground: '#0a0a0a',\n popover: '#ffffff',\n popoverForeground: '#0a0a0a',\n primary: '#3b82f6',\n primaryForeground: '#ffffff',\n secondary: '#f1f5f9',\n secondaryForeground: '#0f172a',\n muted: '#f1f5f9',\n mutedForeground: '#64748b',\n accent: '#f1f5f9',\n accentForeground: '#0f172a',\n destructive: '#ef4444',\n destructiveForeground: '#ffffff',\n border: '#e2e8f0',\n input: '#e2e8f0',\n ring: '#3b82f6',\n },\n darkMode: {\n background: '#0a0a0a',\n foreground: '#fafafa',\n card: '#1a1a1a',\n cardForeground: '#fafafa',\n popover: '#1a1a1a',\n popoverForeground: '#fafafa',\n primary: '#60a5fa',\n primaryForeground: '#0a0a0a',\n secondary: '#27272a',\n secondaryForeground: '#fafafa',\n muted: '#27272a',\n mutedForeground: '#a1a1aa',\n accent: '#27272a',\n accentForeground: '#fafafa',\n destructive: '#f87171',\n destructiveForeground: '#0a0a0a',\n border: '#27272a',\n input: '#27272a',\n ring: '#60a5fa',\n },\n typography: {\n fontFamily: 'var(--font-geist-sans)',\n headingFamily: 'var(--font-outfit)',\n baseFontSize: '16px',\n lineHeight: '1.6',\n fontWeights: {\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n },\n letterSpacing: {\n tight: '-0.02em',\n normal: '0',\n wide: '0.02em',\n },\n },\n },\n {\n name: 'brutal',\n label: 'Modern Brutalism',\n borderRadius: 'none',\n preview: {\n colors: {\n primary: '#000000',\n background: '#ffffff',\n accent: '#ef4444',\n },\n },\n lightMode: {\n background: '#ffffff',\n foreground: '#000000',\n card: '#ffffff',\n cardForeground: '#000000',\n popover: '#ffffff',\n popoverForeground: '#000000',\n primary: '#000000',\n primaryForeground: '#ffffff',\n secondary: '#f5f5f5',\n secondaryForeground: '#000000',\n muted: '#f5f5f5',\n mutedForeground: '#737373',\n accent: '#ef4444',\n accentForeground: '#ffffff',\n destructive: '#ef4444',\n destructiveForeground: '#ffffff',\n border: '#000000',\n input: '#e5e5e5',\n ring: '#000000',\n },\n darkMode: {\n background: '#000000',\n foreground: '#ffffff',\n card: '#0a0a0a',\n cardForeground: '#ffffff',\n popover: '#0a0a0a',\n popoverForeground: '#ffffff',\n primary: '#ffffff',\n primaryForeground: '#000000',\n secondary: '#262626',\n secondaryForeground: '#ffffff',\n muted: '#262626',\n mutedForeground: '#a3a3a3',\n accent: '#ef4444',\n accentForeground: '#ffffff',\n destructive: '#dc2626',\n destructiveForeground: '#ffffff',\n border: '#ffffff',\n input: '#262626',\n ring: '#ffffff',\n },\n typography: {\n fontFamily: 'var(--font-geist-mono)',\n headingFamily: 'var(--font-geist-mono)',\n baseFontSize: '16px',\n lineHeight: '1.5',\n fontWeights: {\n normal: '400',\n medium: '600',\n semibold: '700',\n bold: '800',\n },\n letterSpacing: {\n tight: '0',\n normal: '0.05em',\n wide: '0.1em',\n },\n },\n },\n {\n name: 'neon',\n label: 'Neon Cyberpunk',\n borderRadius: 'medium',\n preview: {\n colors: {\n primary: '#9333ea',\n background: '#0d0f1a',\n accent: '#00ffff',\n },\n },\n lightMode: {\n background: '#0d0f1a',\n foreground: '#ffffff',\n card: '#12141f',\n cardForeground: '#ffffff',\n popover: '#12141f',\n popoverForeground: '#ffffff',\n primary: '#9333ea',\n primaryForeground: '#ffffff',\n secondary: '#1a1d2e',\n secondaryForeground: '#ffffff',\n muted: '#1a1d2e',\n mutedForeground: '#b3b3cc',\n accent: '#00ffff',\n accentForeground: '#0d0f1a',\n destructive: '#ff0000',\n destructiveForeground: '#ffffff',\n border: '#2d3348',\n input: '#2d3348',\n ring: '#9333ea',\n },\n darkMode: {\n background: '#0d0f1a',\n foreground: '#ffffff',\n card: '#12141f',\n cardForeground: '#ffffff',\n popover: '#12141f',\n popoverForeground: '#ffffff',\n primary: '#9333ea',\n primaryForeground: '#ffffff',\n secondary: '#1a1d2e',\n secondaryForeground: '#ffffff',\n muted: '#1a1d2e',\n mutedForeground: '#b3b3cc',\n accent: '#00ffff',\n accentForeground: '#0d0f1a',\n destructive: '#ff0000',\n destructiveForeground: '#0d0f1a',\n border: '#2d3348',\n input: '#2d3348',\n ring: '#9333ea',\n },\n typography: {\n fontFamily: 'var(--font-geist-sans)',\n headingFamily: 'var(--font-geist-mono)',\n baseFontSize: '16px',\n lineHeight: '1.7',\n fontWeights: {\n normal: '400',\n medium: '500',\n semibold: '700',\n bold: '900',\n },\n letterSpacing: {\n tight: '0',\n normal: '0.05em',\n wide: '0.15em',\n },\n },\n },\n {\n name: 'solar',\n label: 'Solar',\n borderRadius: 'large',\n preview: {\n colors: {\n primary: '#c85a19',\n background: '#fffbf5',\n accent: '#ffcc00',\n },\n },\n lightMode: {\n background: '#fffbf5',\n foreground: '#2d1a09',\n card: '#ffffff',\n cardForeground: '#2d1a09',\n popover: '#ffffff',\n popoverForeground: '#2d1a09',\n primary: '#c85a19',\n primaryForeground: '#ffffff',\n secondary: '#fff7e6',\n secondaryForeground: '#2d1a09',\n muted: '#f5ebe0',\n mutedForeground: '#665544',\n accent: '#ffcc00',\n accentForeground: '#2d1a09',\n destructive: '#e34850',\n destructiveForeground: '#ffffff',\n border: '#e8d4c4',\n input: '#e8d4c4',\n ring: '#c85a19',\n },\n darkMode: {\n background: '#1f1610',\n foreground: '#f0dcc7',\n card: '#271c15',\n cardForeground: '#f0dcc7',\n popover: '#271c15',\n popoverForeground: '#f0dcc7',\n primary: '#e37a3d',\n primaryForeground: '#ffffff',\n secondary: '#3d2f26',\n secondaryForeground: '#f0dcc7',\n muted: '#3d2f26',\n mutedForeground: '#ccb8a6',\n accent: '#ffd633',\n accentForeground: '#1f1610',\n destructive: '#993438',\n destructiveForeground: '#ffffff',\n border: '#453828',\n input: '#453828',\n ring: '#e37a3d',\n },\n typography: {\n fontFamily: 'var(--font-geist-sans)',\n headingFamily: 'var(--font-outfit)',\n baseFontSize: '16px',\n lineHeight: '1.6',\n fontWeights: {\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n },\n letterSpacing: {\n tight: '-0.01em',\n normal: '0',\n wide: '0.025em',\n },\n },\n },\n {\n name: 'dealership',\n label: 'Dealership',\n borderRadius: 'medium',\n preview: {\n colors: {\n primary: '#1a2f50',\n background: '#f9fafb',\n accent: '#3b9ad6',\n },\n },\n lightMode: {\n background: '#f9fafb',\n foreground: '#1f2937',\n card: '#ffffff',\n cardForeground: '#1f2937',\n popover: '#ffffff',\n popoverForeground: '#1f2937',\n primary: '#1a2f50',\n primaryForeground: '#ffffff',\n secondary: '#e6ebf0',\n secondaryForeground: '#1f2937',\n muted: '#e6ebf0',\n mutedForeground: '#6b7280',\n accent: '#3b9ad6',\n accentForeground: '#ffffff',\n destructive: '#bc3535',\n destructiveForeground: '#ffffff',\n border: '#d1d5db',\n input: '#d1d5db',\n ring: '#1a2f50',\n },\n darkMode: {\n background: '#111827',\n foreground: '#f3f4f6',\n card: '#1f2937',\n cardForeground: '#f3f4f6',\n popover: '#1f2937',\n popoverForeground: '#f3f4f6',\n primary: '#3b82f6',\n primaryForeground: '#ffffff',\n secondary: '#374151',\n secondaryForeground: '#f3f4f6',\n muted: '#374151',\n mutedForeground: '#9ca3af',\n accent: '#60a5fa',\n accentForeground: '#111827',\n destructive: '#ef4444',\n destructiveForeground: '#ffffff',\n border: '#4b5563',\n input: '#4b5563',\n ring: '#3b82f6',\n },\n typography: {\n fontFamily: 'var(--font-geist-sans)',\n headingFamily: 'var(--font-outfit)',\n baseFontSize: '16px',\n lineHeight: '1.6',\n fontWeights: {\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n },\n letterSpacing: {\n tight: '-0.01em',\n normal: '0.01em',\n wide: '0.05em',\n },\n },\n },\n {\n name: 'real-estate',\n label: 'Real Estate Blue',\n borderRadius: 'large',\n preview: {\n colors: {\n primary: '#1e40af',\n background: '#fafbff',\n accent: '#3b9ad6',\n },\n },\n lightMode: {\n background: '#fafbff',\n foreground: '#1e293b',\n card: '#ffffff',\n cardForeground: '#1e293b',\n popover: '#ffffff',\n popoverForeground: '#1e293b',\n primary: '#1e40af',\n primaryForeground: '#ffffff',\n secondary: '#e0ecff',\n secondaryForeground: '#1e293b',\n muted: '#f1f5f9',\n mutedForeground: '#64748b',\n accent: '#3b9ad6',\n accentForeground: '#ffffff',\n destructive: '#dc2626',\n destructiveForeground: '#ffffff',\n border: '#cbd5e1',\n input: '#f1f5f9',\n ring: '#1e40af',\n },\n darkMode: {\n background: '#0f172a',\n foreground: '#f1f5f9',\n card: '#1e293b',\n cardForeground: '#f1f5f9',\n popover: '#1e293b',\n popoverForeground: '#f1f5f9',\n primary: '#3b82f6',\n primaryForeground: '#ffffff',\n secondary: '#334155',\n secondaryForeground: '#f1f5f9',\n muted: '#334155',\n mutedForeground: '#94a3b8',\n accent: '#60a5fa',\n accentForeground: '#0f172a',\n destructive: '#ef4444',\n destructiveForeground: '#ffffff',\n border: '#475569',\n input: '#334155',\n ring: '#3b82f6',\n },\n typography: {\n fontFamily: 'var(--font-geist-sans)',\n headingFamily: 'var(--font-outfit)',\n baseFontSize: '16px',\n lineHeight: '1.75',\n fontWeights: {\n light: '300',\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n black: '900',\n },\n letterSpacing: {\n tight: '-0.02em',\n normal: '0',\n wide: '0.025em',\n wider: '0.05em',\n },\n },\n },\n {\n name: 'real-estate-gold',\n label: 'Real Estate Gold',\n borderRadius: 'large',\n preview: {\n colors: {\n primary: '#b8860b',\n background: '#fffbf0',\n accent: '#f5d547',\n },\n },\n lightMode: {\n background: '#fffbf0',\n foreground: '#302618',\n card: '#ffffff',\n cardForeground: '#302618',\n popover: '#ffffff',\n popoverForeground: '#302618',\n primary: '#b8860b',\n primaryForeground: '#fffbf0',\n secondary: '#f7eed6',\n secondaryForeground: '#302618',\n muted: '#f3e9d8',\n mutedForeground: '#6d5d47',\n accent: '#f5d547',\n accentForeground: '#302618',\n destructive: '#dc2f2f',\n destructiveForeground: '#ffffff',\n border: '#e5d9c0',\n input: '#f3e9d8',\n ring: '#b8860b',\n },\n darkMode: {\n background: '#1a1510',\n foreground: '#f5f0e6',\n card: '#262014',\n cardForeground: '#f5f0e6',\n popover: '#262014',\n popoverForeground: '#f5f0e6',\n primary: '#daa520',\n primaryForeground: '#1a1510',\n secondary: '#3d3426',\n secondaryForeground: '#f5f0e6',\n muted: '#3d3426',\n mutedForeground: '#b8a68f',\n accent: '#ffd700',\n accentForeground: '#1a1510',\n destructive: '#ef4444',\n destructiveForeground: '#ffffff',\n border: '#554729',\n input: '#3d3426',\n ring: '#daa520',\n },\n typography: {\n fontFamily: 'var(--font-geist-sans)',\n headingFamily: 'var(--font-outfit)',\n baseFontSize: '16px',\n lineHeight: '1.75',\n fontWeights: {\n light: '300',\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n black: '900',\n },\n letterSpacing: {\n tight: '-0.02em',\n normal: '0',\n wide: '0.025em',\n wider: '0.05em',\n },\n },\n },\n {\n name: 'real-estate-neutral',\n label: 'Real Estate Neutral',\n borderRadius: 'large',\n preview: {\n colors: {\n primary: '#57534e',\n background: '#fafaf9',\n accent: '#78716c',\n },\n },\n lightMode: {\n background: '#fafaf9',\n foreground: '#292524',\n card: '#ffffff',\n cardForeground: '#292524',\n popover: '#ffffff',\n popoverForeground: '#292524',\n primary: '#57534e',\n primaryForeground: '#ffffff',\n secondary: '#e7e5e4',\n secondaryForeground: '#292524',\n muted: '#f5f5f4',\n mutedForeground: '#78716c',\n accent: '#78716c',\n accentForeground: '#ffffff',\n destructive: '#dc2626',\n destructiveForeground: '#ffffff',\n border: '#d6d3d1',\n input: '#f5f5f4',\n ring: '#57534e',\n },\n darkMode: {\n background: '#1c1917',\n foreground: '#fafaf9',\n card: '#292524',\n cardForeground: '#fafaf9',\n popover: '#292524',\n popoverForeground: '#fafaf9',\n primary: '#78716c',\n primaryForeground: '#ffffff',\n secondary: '#44403c',\n secondaryForeground: '#fafaf9',\n muted: '#44403c',\n mutedForeground: '#a8a29e',\n accent: '#a8a29e',\n accentForeground: '#1c1917',\n destructive: '#ef4444',\n destructiveForeground: '#ffffff',\n border: '#57534e',\n input: '#44403c',\n ring: '#78716c',\n },\n typography: {\n fontFamily: 'var(--font-geist-sans)',\n headingFamily: 'var(--font-outfit)',\n baseFontSize: '16px',\n lineHeight: '1.75',\n fontWeights: {\n light: '300',\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n black: '900',\n },\n letterSpacing: {\n tight: '-0.02em',\n normal: '0',\n wide: '0.025em',\n wider: '0.05em',\n },\n },\n },\n]\n"],"names":["defaultThemePresets","name","label","borderRadius","preview","colors","primary","background","accent","lightMode","foreground","card","cardForeground","popover","popoverForeground","primaryForeground","secondary","secondaryForeground","muted","mutedForeground","accentForeground","destructive","destructiveForeground","border","input","ring","darkMode","typography","fontFamily","headingFamily","baseFontSize","lineHeight","fontWeights","normal","medium","semibold","bold","letterSpacing","tight","wide","light","black","wider"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/presets.ts"],"sourcesContent":["export interface ThemeTypographyPreset {\r\n fontFamily: string\r\n headingFamily: string\r\n baseFontSize: string\r\n lineHeight: string\r\n fontWeights: {\r\n light?: string\r\n normal?: string\r\n medium?: string\r\n semibold?: string\r\n bold?: string\r\n black?: string\r\n }\r\n letterSpacing: {\r\n tight?: string\r\n normal?: string\r\n wide?: string\r\n wider?: string\r\n }\r\n}\r\n\r\nexport interface ThemePreset {\r\n name: string\r\n label: string\r\n borderRadius: 'none' | 'small' | 'medium' | 'large' | 'xl'\r\n cssFile?: string\r\n preview?: {\r\n colors: {\r\n primary: string\r\n background: string\r\n accent: string\r\n }\r\n }\r\n theme?: string\r\n colorMode?: 'auto' | 'light' | 'dark'\r\n fontScale?: 'small' | 'medium' | 'large'\r\n spacing?: 'small' | 'medium' | 'large'\r\n animationLevel?: 'low' | 'medium' | 'high'\r\n lightMode?: Record<string, string>\r\n darkMode?: Record<string, string>\r\n typography?: ThemeTypographyPreset\r\n}\r\n\r\nexport const defaultThemePresets: ThemePreset[] = [\r\n {\r\n name: 'cool',\r\n label: 'Cool & Professional',\r\n borderRadius: 'medium',\r\n preview: {\r\n colors: {\r\n primary: '#3b82f6',\r\n background: '#ffffff',\r\n accent: '#f1f5f9',\r\n },\r\n },\r\n lightMode: {\r\n background: '#ffffff',\r\n foreground: '#0a0a0a',\r\n card: '#ffffff',\r\n cardForeground: '#0a0a0a',\r\n popover: '#ffffff',\r\n popoverForeground: '#0a0a0a',\r\n primary: '#3b82f6',\r\n primaryForeground: '#ffffff',\r\n secondary: '#f1f5f9',\r\n secondaryForeground: '#0f172a',\r\n muted: '#f1f5f9',\r\n mutedForeground: '#64748b',\r\n accent: '#f1f5f9',\r\n accentForeground: '#0f172a',\r\n destructive: '#ef4444',\r\n destructiveForeground: '#ffffff',\r\n border: '#e2e8f0',\r\n input: '#e2e8f0',\r\n ring: '#3b82f6',\r\n },\r\n darkMode: {\r\n background: '#0a0a0a',\r\n foreground: '#fafafa',\r\n card: '#1a1a1a',\r\n cardForeground: '#fafafa',\r\n popover: '#1a1a1a',\r\n popoverForeground: '#fafafa',\r\n primary: '#60a5fa',\r\n primaryForeground: '#0a0a0a',\r\n secondary: '#27272a',\r\n secondaryForeground: '#fafafa',\r\n muted: '#27272a',\r\n mutedForeground: '#a1a1aa',\r\n accent: '#27272a',\r\n accentForeground: '#fafafa',\r\n destructive: '#f87171',\r\n destructiveForeground: '#0a0a0a',\r\n border: '#27272a',\r\n input: '#27272a',\r\n ring: '#60a5fa',\r\n },\r\n typography: {\r\n fontFamily: 'var(--font-geist-sans)',\r\n headingFamily: 'var(--font-outfit)',\r\n baseFontSize: '16px',\r\n lineHeight: '1.6',\r\n fontWeights: {\r\n normal: '400',\r\n medium: '500',\r\n semibold: '600',\r\n bold: '700',\r\n },\r\n letterSpacing: {\r\n tight: '-0.02em',\r\n normal: '0',\r\n wide: '0.02em',\r\n },\r\n },\r\n },\r\n {\r\n name: 'brutal',\r\n label: 'Modern Brutalism',\r\n borderRadius: 'none',\r\n preview: {\r\n colors: {\r\n primary: '#000000',\r\n background: '#ffffff',\r\n accent: '#ef4444',\r\n },\r\n },\r\n lightMode: {\r\n background: '#ffffff',\r\n foreground: '#000000',\r\n card: '#ffffff',\r\n cardForeground: '#000000',\r\n popover: '#ffffff',\r\n popoverForeground: '#000000',\r\n primary: '#000000',\r\n primaryForeground: '#ffffff',\r\n secondary: '#f5f5f5',\r\n secondaryForeground: '#000000',\r\n muted: '#f5f5f5',\r\n mutedForeground: '#737373',\r\n accent: '#ef4444',\r\n accentForeground: '#ffffff',\r\n destructive: '#ef4444',\r\n destructiveForeground: '#ffffff',\r\n border: '#000000',\r\n input: '#e5e5e5',\r\n ring: '#000000',\r\n },\r\n darkMode: {\r\n background: '#000000',\r\n foreground: '#ffffff',\r\n card: '#0a0a0a',\r\n cardForeground: '#ffffff',\r\n popover: '#0a0a0a',\r\n popoverForeground: '#ffffff',\r\n primary: '#ffffff',\r\n primaryForeground: '#000000',\r\n secondary: '#262626',\r\n secondaryForeground: '#ffffff',\r\n muted: '#262626',\r\n mutedForeground: '#a3a3a3',\r\n accent: '#ef4444',\r\n accentForeground: '#ffffff',\r\n destructive: '#dc2626',\r\n destructiveForeground: '#ffffff',\r\n border: '#ffffff',\r\n input: '#262626',\r\n ring: '#ffffff',\r\n },\r\n typography: {\r\n fontFamily: 'var(--font-geist-mono)',\r\n headingFamily: 'var(--font-geist-mono)',\r\n baseFontSize: '16px',\r\n lineHeight: '1.5',\r\n fontWeights: {\r\n normal: '400',\r\n medium: '600',\r\n semibold: '700',\r\n bold: '800',\r\n },\r\n letterSpacing: {\r\n tight: '0',\r\n normal: '0.05em',\r\n wide: '0.1em',\r\n },\r\n },\r\n },\r\n {\r\n name: 'neon',\r\n label: 'Neon Cyberpunk',\r\n borderRadius: 'medium',\r\n preview: {\r\n colors: {\r\n primary: '#9333ea',\r\n background: '#0d0f1a',\r\n accent: '#00ffff',\r\n },\r\n },\r\n lightMode: {\r\n background: '#0d0f1a',\r\n foreground: '#ffffff',\r\n card: '#12141f',\r\n cardForeground: '#ffffff',\r\n popover: '#12141f',\r\n popoverForeground: '#ffffff',\r\n primary: '#9333ea',\r\n primaryForeground: '#ffffff',\r\n secondary: '#1a1d2e',\r\n secondaryForeground: '#ffffff',\r\n muted: '#1a1d2e',\r\n mutedForeground: '#b3b3cc',\r\n accent: '#00ffff',\r\n accentForeground: '#0d0f1a',\r\n destructive: '#ff0000',\r\n destructiveForeground: '#ffffff',\r\n border: '#2d3348',\r\n input: '#2d3348',\r\n ring: '#9333ea',\r\n },\r\n darkMode: {\r\n background: '#0d0f1a',\r\n foreground: '#ffffff',\r\n card: '#12141f',\r\n cardForeground: '#ffffff',\r\n popover: '#12141f',\r\n popoverForeground: '#ffffff',\r\n primary: '#9333ea',\r\n primaryForeground: '#ffffff',\r\n secondary: '#1a1d2e',\r\n secondaryForeground: '#ffffff',\r\n muted: '#1a1d2e',\r\n mutedForeground: '#b3b3cc',\r\n accent: '#00ffff',\r\n accentForeground: '#0d0f1a',\r\n destructive: '#ff0000',\r\n destructiveForeground: '#0d0f1a',\r\n border: '#2d3348',\r\n input: '#2d3348',\r\n ring: '#9333ea',\r\n },\r\n typography: {\r\n fontFamily: 'var(--font-geist-sans)',\r\n headingFamily: 'var(--font-geist-mono)',\r\n baseFontSize: '16px',\r\n lineHeight: '1.7',\r\n fontWeights: {\r\n normal: '400',\r\n medium: '500',\r\n semibold: '700',\r\n bold: '900',\r\n },\r\n letterSpacing: {\r\n tight: '0',\r\n normal: '0.05em',\r\n wide: '0.15em',\r\n },\r\n },\r\n },\r\n {\r\n name: 'solar',\r\n label: 'Solar',\r\n borderRadius: 'large',\r\n preview: {\r\n colors: {\r\n primary: '#c85a19',\r\n background: '#fffbf5',\r\n accent: '#ffcc00',\r\n },\r\n },\r\n lightMode: {\r\n background: '#fffbf5',\r\n foreground: '#2d1a09',\r\n card: '#ffffff',\r\n cardForeground: '#2d1a09',\r\n popover: '#ffffff',\r\n popoverForeground: '#2d1a09',\r\n primary: '#c85a19',\r\n primaryForeground: '#ffffff',\r\n secondary: '#fff7e6',\r\n secondaryForeground: '#2d1a09',\r\n muted: '#f5ebe0',\r\n mutedForeground: '#665544',\r\n accent: '#ffcc00',\r\n accentForeground: '#2d1a09',\r\n destructive: '#e34850',\r\n destructiveForeground: '#ffffff',\r\n border: '#e8d4c4',\r\n input: '#e8d4c4',\r\n ring: '#c85a19',\r\n },\r\n darkMode: {\r\n background: '#1f1610',\r\n foreground: '#f0dcc7',\r\n card: '#271c15',\r\n cardForeground: '#f0dcc7',\r\n popover: '#271c15',\r\n popoverForeground: '#f0dcc7',\r\n primary: '#e37a3d',\r\n primaryForeground: '#ffffff',\r\n secondary: '#3d2f26',\r\n secondaryForeground: '#f0dcc7',\r\n muted: '#3d2f26',\r\n mutedForeground: '#ccb8a6',\r\n accent: '#ffd633',\r\n accentForeground: '#1f1610',\r\n destructive: '#993438',\r\n destructiveForeground: '#ffffff',\r\n border: '#453828',\r\n input: '#453828',\r\n ring: '#e37a3d',\r\n },\r\n typography: {\r\n fontFamily: 'var(--font-geist-sans)',\r\n headingFamily: 'var(--font-outfit)',\r\n baseFontSize: '16px',\r\n lineHeight: '1.6',\r\n fontWeights: {\r\n normal: '400',\r\n medium: '500',\r\n semibold: '600',\r\n bold: '700',\r\n },\r\n letterSpacing: {\r\n tight: '-0.01em',\r\n normal: '0',\r\n wide: '0.025em',\r\n },\r\n },\r\n },\r\n {\r\n name: 'dealership',\r\n label: 'Dealership',\r\n borderRadius: 'medium',\r\n preview: {\r\n colors: {\r\n primary: '#1a2f50',\r\n background: '#f9fafb',\r\n accent: '#3b9ad6',\r\n },\r\n },\r\n lightMode: {\r\n background: '#f9fafb',\r\n foreground: '#1f2937',\r\n card: '#ffffff',\r\n cardForeground: '#1f2937',\r\n popover: '#ffffff',\r\n popoverForeground: '#1f2937',\r\n primary: '#1a2f50',\r\n primaryForeground: '#ffffff',\r\n secondary: '#e6ebf0',\r\n secondaryForeground: '#1f2937',\r\n muted: '#e6ebf0',\r\n mutedForeground: '#6b7280',\r\n accent: '#3b9ad6',\r\n accentForeground: '#ffffff',\r\n destructive: '#bc3535',\r\n destructiveForeground: '#ffffff',\r\n border: '#d1d5db',\r\n input: '#d1d5db',\r\n ring: '#1a2f50',\r\n },\r\n darkMode: {\r\n background: '#111827',\r\n foreground: '#f3f4f6',\r\n card: '#1f2937',\r\n cardForeground: '#f3f4f6',\r\n popover: '#1f2937',\r\n popoverForeground: '#f3f4f6',\r\n primary: '#3b82f6',\r\n primaryForeground: '#ffffff',\r\n secondary: '#374151',\r\n secondaryForeground: '#f3f4f6',\r\n muted: '#374151',\r\n mutedForeground: '#9ca3af',\r\n accent: '#60a5fa',\r\n accentForeground: '#111827',\r\n destructive: '#ef4444',\r\n destructiveForeground: '#ffffff',\r\n border: '#4b5563',\r\n input: '#4b5563',\r\n ring: '#3b82f6',\r\n },\r\n typography: {\r\n fontFamily: 'var(--font-geist-sans)',\r\n headingFamily: 'var(--font-outfit)',\r\n baseFontSize: '16px',\r\n lineHeight: '1.6',\r\n fontWeights: {\r\n normal: '400',\r\n medium: '500',\r\n semibold: '600',\r\n bold: '700',\r\n },\r\n letterSpacing: {\r\n tight: '-0.01em',\r\n normal: '0.01em',\r\n wide: '0.05em',\r\n },\r\n },\r\n },\r\n {\r\n name: 'real-estate',\r\n label: 'Real Estate Blue',\r\n borderRadius: 'large',\r\n preview: {\r\n colors: {\r\n primary: '#1e40af',\r\n background: '#fafbff',\r\n accent: '#3b9ad6',\r\n },\r\n },\r\n lightMode: {\r\n background: '#fafbff',\r\n foreground: '#1e293b',\r\n card: '#ffffff',\r\n cardForeground: '#1e293b',\r\n popover: '#ffffff',\r\n popoverForeground: '#1e293b',\r\n primary: '#1e40af',\r\n primaryForeground: '#ffffff',\r\n secondary: '#e0ecff',\r\n secondaryForeground: '#1e293b',\r\n muted: '#f1f5f9',\r\n mutedForeground: '#64748b',\r\n accent: '#3b9ad6',\r\n accentForeground: '#ffffff',\r\n destructive: '#dc2626',\r\n destructiveForeground: '#ffffff',\r\n border: '#cbd5e1',\r\n input: '#f1f5f9',\r\n ring: '#1e40af',\r\n },\r\n darkMode: {\r\n background: '#0f172a',\r\n foreground: '#f1f5f9',\r\n card: '#1e293b',\r\n cardForeground: '#f1f5f9',\r\n popover: '#1e293b',\r\n popoverForeground: '#f1f5f9',\r\n primary: '#3b82f6',\r\n primaryForeground: '#ffffff',\r\n secondary: '#334155',\r\n secondaryForeground: '#f1f5f9',\r\n muted: '#334155',\r\n mutedForeground: '#94a3b8',\r\n accent: '#60a5fa',\r\n accentForeground: '#0f172a',\r\n destructive: '#ef4444',\r\n destructiveForeground: '#ffffff',\r\n border: '#475569',\r\n input: '#334155',\r\n ring: '#3b82f6',\r\n },\r\n typography: {\r\n fontFamily: 'var(--font-geist-sans)',\r\n headingFamily: 'var(--font-outfit)',\r\n baseFontSize: '16px',\r\n lineHeight: '1.75',\r\n fontWeights: {\r\n light: '300',\r\n normal: '400',\r\n medium: '500',\r\n semibold: '600',\r\n bold: '700',\r\n black: '900',\r\n },\r\n letterSpacing: {\r\n tight: '-0.02em',\r\n normal: '0',\r\n wide: '0.025em',\r\n wider: '0.05em',\r\n },\r\n },\r\n },\r\n {\r\n name: 'real-estate-gold',\r\n label: 'Real Estate Gold',\r\n borderRadius: 'large',\r\n preview: {\r\n colors: {\r\n primary: '#b8860b',\r\n background: '#fffbf0',\r\n accent: '#f5d547',\r\n },\r\n },\r\n lightMode: {\r\n background: '#fffbf0',\r\n foreground: '#302618',\r\n card: '#ffffff',\r\n cardForeground: '#302618',\r\n popover: '#ffffff',\r\n popoverForeground: '#302618',\r\n primary: '#b8860b',\r\n primaryForeground: '#fffbf0',\r\n secondary: '#f7eed6',\r\n secondaryForeground: '#302618',\r\n muted: '#f3e9d8',\r\n mutedForeground: '#6d5d47',\r\n accent: '#f5d547',\r\n accentForeground: '#302618',\r\n destructive: '#dc2f2f',\r\n destructiveForeground: '#ffffff',\r\n border: '#e5d9c0',\r\n input: '#f3e9d8',\r\n ring: '#b8860b',\r\n },\r\n darkMode: {\r\n background: '#1a1510',\r\n foreground: '#f5f0e6',\r\n card: '#262014',\r\n cardForeground: '#f5f0e6',\r\n popover: '#262014',\r\n popoverForeground: '#f5f0e6',\r\n primary: '#daa520',\r\n primaryForeground: '#1a1510',\r\n secondary: '#3d3426',\r\n secondaryForeground: '#f5f0e6',\r\n muted: '#3d3426',\r\n mutedForeground: '#b8a68f',\r\n accent: '#ffd700',\r\n accentForeground: '#1a1510',\r\n destructive: '#ef4444',\r\n destructiveForeground: '#ffffff',\r\n border: '#554729',\r\n input: '#3d3426',\r\n ring: '#daa520',\r\n },\r\n typography: {\r\n fontFamily: 'var(--font-geist-sans)',\r\n headingFamily: 'var(--font-outfit)',\r\n baseFontSize: '16px',\r\n lineHeight: '1.75',\r\n fontWeights: {\r\n light: '300',\r\n normal: '400',\r\n medium: '500',\r\n semibold: '600',\r\n bold: '700',\r\n black: '900',\r\n },\r\n letterSpacing: {\r\n tight: '-0.02em',\r\n normal: '0',\r\n wide: '0.025em',\r\n wider: '0.05em',\r\n },\r\n },\r\n },\r\n {\r\n name: 'real-estate-neutral',\r\n label: 'Real Estate Neutral',\r\n borderRadius: 'large',\r\n preview: {\r\n colors: {\r\n primary: '#57534e',\r\n background: '#fafaf9',\r\n accent: '#78716c',\r\n },\r\n },\r\n lightMode: {\r\n background: '#fafaf9',\r\n foreground: '#292524',\r\n card: '#ffffff',\r\n cardForeground: '#292524',\r\n popover: '#ffffff',\r\n popoverForeground: '#292524',\r\n primary: '#57534e',\r\n primaryForeground: '#ffffff',\r\n secondary: '#e7e5e4',\r\n secondaryForeground: '#292524',\r\n muted: '#f5f5f4',\r\n mutedForeground: '#78716c',\r\n accent: '#78716c',\r\n accentForeground: '#ffffff',\r\n destructive: '#dc2626',\r\n destructiveForeground: '#ffffff',\r\n border: '#d6d3d1',\r\n input: '#f5f5f4',\r\n ring: '#57534e',\r\n },\r\n darkMode: {\r\n background: '#1c1917',\r\n foreground: '#fafaf9',\r\n card: '#292524',\r\n cardForeground: '#fafaf9',\r\n popover: '#292524',\r\n popoverForeground: '#fafaf9',\r\n primary: '#78716c',\r\n primaryForeground: '#ffffff',\r\n secondary: '#44403c',\r\n secondaryForeground: '#fafaf9',\r\n muted: '#44403c',\r\n mutedForeground: '#a8a29e',\r\n accent: '#a8a29e',\r\n accentForeground: '#1c1917',\r\n destructive: '#ef4444',\r\n destructiveForeground: '#ffffff',\r\n border: '#57534e',\r\n input: '#44403c',\r\n ring: '#78716c',\r\n },\r\n typography: {\r\n fontFamily: 'var(--font-geist-sans)',\r\n headingFamily: 'var(--font-outfit)',\r\n baseFontSize: '16px',\r\n lineHeight: '1.75',\r\n fontWeights: {\r\n light: '300',\r\n normal: '400',\r\n medium: '500',\r\n semibold: '600',\r\n bold: '700',\r\n black: '900',\r\n },\r\n letterSpacing: {\r\n tight: '-0.02em',\r\n normal: '0',\r\n wide: '0.025em',\r\n wider: '0.05em',\r\n },\r\n },\r\n },\r\n]\r\n"],"names":["defaultThemePresets","name","label","borderRadius","preview","colors","primary","background","accent","lightMode","foreground","card","cardForeground","popover","popoverForeground","primaryForeground","secondary","secondaryForeground","muted","mutedForeground","accentForeground","destructive","destructiveForeground","border","input","ring","darkMode","typography","fontFamily","headingFamily","baseFontSize","lineHeight","fontWeights","normal","medium","semibold","bold","letterSpacing","tight","wide","light","black","wider"],"mappings":"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"}
@@ -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'\r\n\r\nimport React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react'\r\nimport { defaultMode, modeLocalStorageKey } from './shared.js'\r\nimport type { Mode, ThemeContextType, ThemeDefaults } from './types.js'\r\n\r\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined)\r\n\r\nexport const useTheme = (): ThemeContextType => {\r\n const context = useContext(ThemeContext)\r\n if (!context) {\r\n throw new Error('useTheme must be used within a ThemeProvider')\r\n }\r\n return context\r\n}\r\n\r\ninterface ThemeProviderProps {\r\n children: React.ReactNode\r\n initialTheme?: ThemeDefaults\r\n initialMode?: Mode\r\n allowColorModeToggle?: boolean\r\n}\r\n\r\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\r\n children,\r\n initialTheme,\r\n initialMode,\r\n allowColorModeToggle = true,\r\n}) => {\r\n // State pro light/dark mode switching\r\n const [mode, setMode] = useState<Mode | null>(initialMode || defaultMode)\r\n const [theme] = useState<ThemeDefaults | null>(initialTheme || null)\r\n\r\n // Funkce pro získání skutečného módu (resolve \"auto\" mode)\r\n const getResolvedMode = useCallback((currentMode: Mode | null): 'light' | 'dark' => {\r\n if (currentMode === 'auto' && typeof window !== 'undefined') {\r\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\r\n return mediaQuery.matches ? 'dark' : 'light'\r\n }\r\n return currentMode === 'dark' ? 'dark' : 'light'\r\n }, [])\r\n\r\n // Aplikace módu na DOM a CSS variables\r\n const applyMode = useCallback(\r\n (currentMode: Mode | null) => {\r\n if (typeof window !== 'undefined') {\r\n const resolvedMode = getResolvedMode(currentMode)\r\n\r\n // Získej aktuální theme z DOM nebo použij fallback\r\n const currentTheme =\r\n document.documentElement.getAttribute('data-theme') ||\r\n (typeof theme === 'string' ? theme : 'cool')\r\n\r\n // Aplikuj data atributy a třídy (kompatibilní s CSS selektory)\r\n document.documentElement.setAttribute('data-color-mode', resolvedMode)\r\n document.documentElement.setAttribute('data-theme-mode', resolvedMode)\r\n document.documentElement.setAttribute('data-theme', currentTheme)\r\n document.documentElement.classList.remove('light', 'dark', 'auto')\r\n document.documentElement.classList.add(resolvedMode)\r\n\r\n // Force re-computation of CSS custom properties\r\n document.documentElement.style.setProperty('--color-mode', resolvedMode)\r\n\r\n // Force repaint to ensure CSS variables update\r\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\r\n document.documentElement.offsetHeight\r\n\r\n // Dispatch custom event for components that need to react to theme changes\r\n window.dispatchEvent(\r\n new CustomEvent('themeChange', {\r\n detail: { mode: resolvedMode, originalMode: currentMode, theme: currentTheme },\r\n }),\r\n )\r\n }\r\n },\r\n [getResolvedMode, theme],\r\n )\r\n\r\n // Uložení light/dark mode do localStorage a aplikace\r\n const updateMode = useCallback(\r\n (newMode: Mode | null) => {\r\n setMode(newMode)\r\n if (newMode && typeof window !== 'undefined') {\r\n localStorage.setItem(modeLocalStorageKey, newMode)\r\n applyMode(newMode)\r\n }\r\n },\r\n [applyMode],\r\n )\r\n\r\n // Načtení mode z localStorage při startu\r\n useEffect(() => {\r\n if (typeof window !== 'undefined') {\r\n const storedMode = localStorage.getItem(modeLocalStorageKey) as Mode | null\r\n if (storedMode && ['light', 'dark', 'auto'].includes(storedMode)) {\r\n setMode(storedMode)\r\n applyMode(storedMode)\r\n } else {\r\n // Fallback na default mode\r\n applyMode(defaultMode)\r\n }\r\n }\r\n }, [applyMode])\r\n\r\n // Listener pro změny system preference (pouze při auto mode)\r\n useEffect(() => {\r\n if (mode === 'auto' && typeof window !== 'undefined') {\r\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\r\n\r\n const handleChange = () => {\r\n applyMode('auto') // Re-resolve auto mode\r\n }\r\n\r\n mediaQuery.addEventListener('change', handleChange)\r\n\r\n return () => {\r\n mediaQuery.removeEventListener('change', handleChange)\r\n }\r\n }\r\n }, [mode, applyMode])\r\n\r\n const refreshTheme = useCallback(() => {\r\n // Refresh theme - aplikuj aktuální mode\r\n applyMode(mode)\r\n }, [mode, applyMode])\r\n\r\n const contextValue = useMemo(\r\n () => ({\r\n theme,\r\n mode,\r\n setTheme: () => {}, // Nepoužíváme - theme se nastavuje přes SSR\r\n setMode: updateMode,\r\n isColorModeToggleAllowed: allowColorModeToggle,\r\n refreshTheme,\r\n }),\r\n [theme, mode, updateMode, allowColorModeToggle, refreshTheme],\r\n )\r\n\r\n return <ThemeContext.Provider value={contextValue}>{children}</ThemeContext.Provider>\r\n}\r\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 +1 @@
1
- {"version":3,"sources":["../../../src/providers/Theme/shared.ts"],"sourcesContent":["import type { Mode, ThemeOption, ThemeDefaults } from './types.js'\n\nexport const themeLocalStorageKey = 'payload-theme'\nexport const modeLocalStorageKey = 'payload-theme-mode'\n\nexport const defaultTheme = 'cool' as ThemeDefaults\nexport const defaultMode = 'auto' as Mode\n\nexport const themeOptions = [\n { label: 'Cool & Professional', value: 'cool' },\n { label: 'Modern Brutalism', value: 'brutal' },\n { label: 'Neon Cyberpunk', value: 'neon' },\n { label: 'Dealership', value: 'dealership' },\n { label: 'Solar', value: 'solar' },\n { label: 'Real Estate Blue', value: 'real-estate' },\n { label: 'Real Estate Gold', value: 'real-estate-gold' },\n { label: 'Real Estate Neutral', value: 'real-estate-neutral' },\n] as ThemeOption[]\n\nexport const getImplicitModePreference = (): Mode | null => {\n const mediaQuery = '(prefers-color-scheme: dark)'\n const mql = window.matchMedia(mediaQuery)\n const hasImplicitPreference = typeof mql.matches === 'boolean'\n\n if (hasImplicitPreference) {\n return mql.matches ? 'dark' : 'light'\n }\n\n return null\n}\n"],"names":["themeLocalStorageKey","modeLocalStorageKey","defaultTheme","defaultMode","themeOptions","label","value","getImplicitModePreference","mediaQuery","mql","window","matchMedia","hasImplicitPreference","matches"],"mappings":"AAEA,OAAO,MAAMA,uBAAuB,gBAAe;AACnD,OAAO,MAAMC,sBAAsB,qBAAoB;AAEvD,OAAO,MAAMC,eAAe,OAAuB;AACnD,OAAO,MAAMC,cAAc,OAAc;AAEzC,OAAO,MAAMC,eAAe;IAC1B;QAAEC,OAAO;QAAuBC,OAAO;IAAO;IAC9C;QAAED,OAAO;QAAoBC,OAAO;IAAS;IAC7C;QAAED,OAAO;QAAkBC,OAAO;IAAO;IACzC;QAAED,OAAO;QAAcC,OAAO;IAAa;IAC3C;QAAED,OAAO;QAASC,OAAO;IAAQ;IACjC;QAAED,OAAO;QAAoBC,OAAO;IAAc;IAClD;QAAED,OAAO;QAAoBC,OAAO;IAAmB;IACvD;QAAED,OAAO;QAAuBC,OAAO;IAAsB;CAC9D,CAAiB;AAElB,OAAO,MAAMC,4BAA4B;IACvC,MAAMC,aAAa;IACnB,MAAMC,MAAMC,OAAOC,UAAU,CAACH;IAC9B,MAAMI,wBAAwB,OAAOH,IAAII,OAAO,KAAK;IAErD,IAAID,uBAAuB;QACzB,OAAOH,IAAII,OAAO,GAAG,SAAS;IAChC;IAEA,OAAO;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../src/providers/Theme/shared.ts"],"sourcesContent":["import type { Mode, ThemeOption, ThemeDefaults } from './types.js'\r\n\r\nexport const themeLocalStorageKey = 'payload-theme'\r\nexport const modeLocalStorageKey = 'payload-theme-mode'\r\n\r\nexport const defaultTheme = 'cool' as ThemeDefaults\r\nexport const defaultMode = 'auto' as Mode\r\n\r\nexport const themeOptions = [\r\n { label: 'Cool & Professional', value: 'cool' },\r\n { label: 'Modern Brutalism', value: 'brutal' },\r\n { label: 'Neon Cyberpunk', value: 'neon' },\r\n { label: 'Dealership', value: 'dealership' },\r\n { label: 'Solar', value: 'solar' },\r\n { label: 'Real Estate Blue', value: 'real-estate' },\r\n { label: 'Real Estate Gold', value: 'real-estate-gold' },\r\n { label: 'Real Estate Neutral', value: 'real-estate-neutral' },\r\n] as ThemeOption[]\r\n\r\nexport const getImplicitModePreference = (): Mode | null => {\r\n const mediaQuery = '(prefers-color-scheme: dark)'\r\n const mql = window.matchMedia(mediaQuery)\r\n const hasImplicitPreference = typeof mql.matches === 'boolean'\r\n\r\n if (hasImplicitPreference) {\r\n return mql.matches ? 'dark' : 'light'\r\n }\r\n\r\n return null\r\n}\r\n"],"names":["themeLocalStorageKey","modeLocalStorageKey","defaultTheme","defaultMode","themeOptions","label","value","getImplicitModePreference","mediaQuery","mql","window","matchMedia","hasImplicitPreference","matches"],"mappings":"AAEA,OAAO,MAAMA,uBAAuB,gBAAe;AACnD,OAAO,MAAMC,sBAAsB,qBAAoB;AAEvD,OAAO,MAAMC,eAAe,OAAuB;AACnD,OAAO,MAAMC,cAAc,OAAc;AAEzC,OAAO,MAAMC,eAAe;IAC1B;QAAEC,OAAO;QAAuBC,OAAO;IAAO;IAC9C;QAAED,OAAO;QAAoBC,OAAO;IAAS;IAC7C;QAAED,OAAO;QAAkBC,OAAO;IAAO;IACzC;QAAED,OAAO;QAAcC,OAAO;IAAa;IAC3C;QAAED,OAAO;QAASC,OAAO;IAAQ;IACjC;QAAED,OAAO;QAAoBC,OAAO;IAAc;IAClD;QAAED,OAAO;QAAoBC,OAAO;IAAmB;IACvD;QAAED,OAAO;QAAuBC,OAAO;IAAsB;CAC9D,CAAiB;AAElB,OAAO,MAAMC,4BAA4B;IACvC,MAAMC,aAAa;IACnB,MAAMC,MAAMC,OAAOC,UAAU,CAACH;IAC9B,MAAMI,wBAAwB,OAAOH,IAAII,OAAO,KAAK;IAErD,IAAID,uBAAuB;QACzB,OAAOH,IAAII,OAAO,GAAG,SAAS;IAChC;IAEA,OAAO;AACT,EAAC"}
@@ -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 cssFile: '/themes/cool.css',\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 cssFile: '/themes/brutal.css',\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 cssFile: '/themes/neon.css',\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 cssFile: '/themes/solar.css',\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 cssFile: '/themes/dealership.css',\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 cssFile: '/themes/real-estate.css',\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 cssFile: '/themes/real-estate-gold.css',\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 cssFile: '/themes/real-estate-neutral.css',\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}\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","cssFile","preview","colors","primary","background","accent","brutal","neon","solar","dealership","borderRadiusPresets","none","value","css","small","medium","large","xl","getThemeConfig","theme","getBorderRadiusConfig","preset"],"mappings":"AAEA,OAAO,MAAMA,eAAmD;IAC9DC,MAAM;QACJC,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;QACTC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;IACF;IACAC,QAAQ;QACNT,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;QACTC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;IACF;IACAE,MAAM;QACJV,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;QACTC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;IACF;IACAG,OAAO;QACLX,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;QACTC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;IACF;IACAI,YAAY;QACVZ,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;QACTC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;IACF;IACA,eAAe;QACbR,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;QACTC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;IACF;IACA,oBAAoB;QAClBR,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;QACTC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;IACF;IACA,uBAAuB;QACrBR,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;QACTC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;IACF;AACF,EAAC;AAED,OAAO,MAAMK,sBAAsB;IACjCC,MAAM;QACJb,OAAO;QACPc,OAAO;QACPC,KAAK;YACH,eAAe;YACf,kBAAkB;YAClB,oBAAoB;YACpB,mBAAmB;YACnB,kBAAkB;YAClB,eAAe;QACjB;IACF;IACAC,OAAO;QACLhB,OAAO;QACPc,OAAO;QACPC,KAAK;YACH,eAAe;YACf,kBAAkB;YAClB,oBAAoB;YACpB,mBAAmB;YACnB,kBAAkB;YAClB,eAAe;QACjB;IACF;IACAE,QAAQ;QACNjB,OAAO;QACPc,OAAO;QACPC,KAAK;YACH,eAAe;YACf,kBAAkB;YAClB,oBAAoB;YACpB,mBAAmB;YACnB,kBAAkB;YAClB,eAAe;QACjB;IACF;IACAG,OAAO;QACLlB,OAAO;QACPc,OAAO;QACPC,KAAK;YACH,eAAe;YACf,kBAAkB;YAClB,oBAAoB;YACpB,mBAAmB;YACnB,kBAAkB;YAClB,eAAe;QACjB;IACF;IACAI,IAAI;QACFnB,OAAO;QACPc,OAAO;QACPC,KAAK;YACH,eAAe;YACf,kBAAkB;YAClB,oBAAoB;YACpB,mBAAmB;YACnB,kBAAkB;YAClB,eAAe;QACjB;IACF;AACF,EAAU;AAEV,OAAO,SAASK,eAAeC,KAAoB;IACjD,OAAOxB,YAAY,CAACwB,MAAM;AAC5B;AAEA,OAAO,SAASC,sBAAsBC,MAAwC;IAC5E,OAAOX,mBAAmB,CAACW,OAAO;AACpC"}
1
+ {"version":3,"sources":["../../../src/providers/Theme/themeConfig.ts"],"sourcesContent":["import type { ThemeConfig, ThemeDefaults } from './types.js'\r\n\r\nexport const themeConfigs: Record<ThemeDefaults, ThemeConfig> = {\r\n cool: {\r\n name: 'cool',\r\n label: 'Cool & Professional',\r\n borderRadius: 'medium',\r\n cssFile: '/themes/cool.css',\r\n preview: {\r\n colors: {\r\n primary: 'hsl(221 83% 53%)',\r\n background: 'hsl(0 0% 100%)',\r\n accent: 'hsl(210 40% 95%)',\r\n },\r\n },\r\n },\r\n brutal: {\r\n name: 'brutal',\r\n label: 'Modern Brutalism',\r\n borderRadius: 'none',\r\n cssFile: '/themes/brutal.css',\r\n preview: {\r\n colors: {\r\n primary: 'hsl(0 0% 0%)',\r\n background: 'hsl(0 0% 100%)',\r\n accent: 'hsl(0 72% 51%)',\r\n },\r\n },\r\n },\r\n neon: {\r\n name: 'neon',\r\n label: 'Neon Cyberpunk',\r\n borderRadius: 'medium',\r\n cssFile: '/themes/neon.css',\r\n preview: {\r\n colors: {\r\n primary: 'hsl(263 90% 51%)',\r\n background: 'hsl(230 25% 5%)',\r\n accent: 'hsl(180 100% 50%)',\r\n },\r\n },\r\n },\r\n solar: {\r\n name: 'solar',\r\n label: 'Solar',\r\n borderRadius: 'large',\r\n cssFile: '/themes/solar.css',\r\n preview: {\r\n colors: {\r\n primary: 'hsl(20 90% 45%)',\r\n background: 'hsl(40 30% 95%)',\r\n accent: 'hsl(40 100% 50%)',\r\n },\r\n },\r\n },\r\n dealership: {\r\n name: 'dealership',\r\n label: 'Dealership',\r\n borderRadius: 'medium',\r\n cssFile: '/themes/dealership.css',\r\n preview: {\r\n colors: {\r\n primary: 'hsl(225 25% 25%)',\r\n background: 'hsl(0 0% 98%)',\r\n accent: 'hsl(15 85% 55%)',\r\n },\r\n },\r\n },\r\n 'real-estate': {\r\n name: 'real-estate',\r\n label: 'Real Estate Blue',\r\n borderRadius: 'large',\r\n cssFile: '/themes/real-estate.css',\r\n preview: {\r\n colors: {\r\n primary: 'hsl(220 90% 48%)',\r\n background: 'hsl(220 40% 98.5%)',\r\n accent: 'hsl(210 85% 55%)',\r\n },\r\n },\r\n },\r\n 'real-estate-gold': {\r\n name: 'real-estate-gold',\r\n label: 'Real Estate Gold',\r\n borderRadius: 'large',\r\n cssFile: '/themes/real-estate-gold.css',\r\n preview: {\r\n colors: {\r\n primary: 'hsl(38 75% 45%)',\r\n background: 'hsl(45 25% 97%)',\r\n accent: 'hsl(42 85% 55%)',\r\n },\r\n },\r\n },\r\n 'real-estate-neutral': {\r\n name: 'real-estate-neutral',\r\n label: 'Real Estate Neutral',\r\n borderRadius: 'large',\r\n cssFile: '/themes/real-estate-neutral.css',\r\n preview: {\r\n colors: {\r\n primary: 'hsl(25 35% 25%)',\r\n background: 'hsl(30 8% 98%)',\r\n accent: 'hsl(35 25% 45%)',\r\n },\r\n },\r\n },\r\n}\r\n\r\nexport const borderRadiusPresets = {\r\n none: {\r\n label: 'None',\r\n value: 'none',\r\n css: {\r\n '--radius-xs': '0',\r\n '--radius-small': '0',\r\n '--radius-default': '0',\r\n '--radius-medium': '0',\r\n '--radius-large': '0',\r\n '--radius-xl': '0',\r\n },\r\n },\r\n small: {\r\n label: 'Small',\r\n value: 'small',\r\n css: {\r\n '--radius-xs': '0.125rem',\r\n '--radius-small': '0.25rem',\r\n '--radius-default': '0.375rem',\r\n '--radius-medium': '0.5rem',\r\n '--radius-large': '0.75rem',\r\n '--radius-xl': '1rem',\r\n },\r\n },\r\n medium: {\r\n label: 'Medium',\r\n value: 'medium',\r\n css: {\r\n '--radius-xs': '0.25rem',\r\n '--radius-small': '0.5rem',\r\n '--radius-default': '0.75rem',\r\n '--radius-medium': '1rem',\r\n '--radius-large': '1.5rem',\r\n '--radius-xl': '2rem',\r\n },\r\n },\r\n large: {\r\n label: 'Large',\r\n value: 'large',\r\n css: {\r\n '--radius-xs': '0.5rem',\r\n '--radius-small': '0.75rem',\r\n '--radius-default': '1rem',\r\n '--radius-medium': '1.5rem',\r\n '--radius-large': '2rem',\r\n '--radius-xl': '2.5rem',\r\n },\r\n },\r\n xl: {\r\n label: 'Extra Large',\r\n value: 'xl',\r\n css: {\r\n '--radius-xs': '0.75rem',\r\n '--radius-small': '1rem',\r\n '--radius-default': '1.5rem',\r\n '--radius-medium': '2rem',\r\n '--radius-large': '2.5rem',\r\n '--radius-xl': '3rem',\r\n },\r\n },\r\n} as const\r\n\r\nexport function getThemeConfig(theme: ThemeDefaults): ThemeConfig {\r\n return themeConfigs[theme]\r\n}\r\n\r\nexport function getBorderRadiusConfig(preset: keyof typeof borderRadiusPresets) {\r\n return borderRadiusPresets[preset]\r\n}\r\n"],"names":["themeConfigs","cool","name","label","borderRadius","cssFile","preview","colors","primary","background","accent","brutal","neon","solar","dealership","borderRadiusPresets","none","value","css","small","medium","large","xl","getThemeConfig","theme","getBorderRadiusConfig","preset"],"mappings":"AAEA,OAAO,MAAMA,eAAmD;IAC9DC,MAAM;QACJC,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;QACTC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;IACF;IACAC,QAAQ;QACNT,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;QACTC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;IACF;IACAE,MAAM;QACJV,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;QACTC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;IACF;IACAG,OAAO;QACLX,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;QACTC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;IACF;IACAI,YAAY;QACVZ,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;QACTC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;IACF;IACA,eAAe;QACbR,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;QACTC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;IACF;IACA,oBAAoB;QAClBR,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;QACTC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;IACF;IACA,uBAAuB;QACrBR,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;QACTC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;IACF;AACF,EAAC;AAED,OAAO,MAAMK,sBAAsB;IACjCC,MAAM;QACJb,OAAO;QACPc,OAAO;QACPC,KAAK;YACH,eAAe;YACf,kBAAkB;YAClB,oBAAoB;YACpB,mBAAmB;YACnB,kBAAkB;YAClB,eAAe;QACjB;IACF;IACAC,OAAO;QACLhB,OAAO;QACPc,OAAO;QACPC,KAAK;YACH,eAAe;YACf,kBAAkB;YAClB,oBAAoB;YACpB,mBAAmB;YACnB,kBAAkB;YAClB,eAAe;QACjB;IACF;IACAE,QAAQ;QACNjB,OAAO;QACPc,OAAO;QACPC,KAAK;YACH,eAAe;YACf,kBAAkB;YAClB,oBAAoB;YACpB,mBAAmB;YACnB,kBAAkB;YAClB,eAAe;QACjB;IACF;IACAG,OAAO;QACLlB,OAAO;QACPc,OAAO;QACPC,KAAK;YACH,eAAe;YACf,kBAAkB;YAClB,oBAAoB;YACpB,mBAAmB;YACnB,kBAAkB;YAClB,eAAe;QACjB;IACF;IACAI,IAAI;QACFnB,OAAO;QACPc,OAAO;QACPC,KAAK;YACH,eAAe;YACf,kBAAkB;YAClB,oBAAoB;YACpB,mBAAmB;YACnB,kBAAkB;YAClB,eAAe;QACjB;IACF;AACF,EAAU;AAEV,OAAO,SAASK,eAAeC,KAAoB;IACjD,OAAOxB,YAAY,CAACwB,MAAM;AAC5B;AAEA,OAAO,SAASC,sBAAsBC,MAAwC;IAC5E,OAAOX,mBAAmB,CAACW,OAAO;AACpC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/providers/Theme/types.ts"],"sourcesContent":["export type ThemeDefaults =\n | 'cool'\n | 'brutal'\n | 'neon'\n | 'solar'\n | 'dealership'\n | 'real-estate'\n | 'real-estate-gold'\n | 'real-estate-neutral';\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;\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?: any; // 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 string\n ? [\n 'cool',\n 'brutal',\n 'neon',\n 'solar',\n 'dealership',\n 'real-estate',\n 'real-estate-gold',\n 'real-estate-neutral',\n ].includes(string)\n : false;\n}\n\nexport function modeIsValid(string: null | string): string is Mode {\n return string ? ['dark', 'light'].includes(string) : false;\n}\n"],"names":["themeIsValid","string","includes","modeIsValid"],"mappings":"AAuEA,OAAO,SAASA,aAAaC,MAAqB;IAChD,OAAOA,SACH;QACE;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KACD,CAACC,QAAQ,CAACD,UACX;AACN;AAEA,OAAO,SAASE,YAAYF,MAAqB;IAC/C,OAAOA,SAAS;QAAC;QAAQ;KAAQ,CAACC,QAAQ,CAACD,UAAU;AACvD"}
1
+ {"version":3,"sources":["../../../src/providers/Theme/types.ts"],"sourcesContent":["export type ThemeDefaults =\r\n | 'cool'\r\n | 'brutal'\r\n | 'neon'\r\n | 'solar'\r\n | 'dealership'\r\n | 'real-estate'\r\n | 'real-estate-gold'\r\n | 'real-estate-neutral';\r\n\r\nexport type Mode = 'dark' | 'light' | 'auto';\r\n\r\nexport type BorderRadiusPreset = 'none' | 'small' | 'medium' | 'large' | 'xl';\r\n\r\nexport type FontScalePreset = 'small' | 'medium' | 'large' | 'xl';\r\n\r\nexport type SpacingPreset = 'compact' | 'medium' | 'spacious';\r\n\r\nexport type AnimationLevelPreset = 'none' | 'reduced' | 'medium' | 'high';\r\n\r\nexport type ColorModePreset = 'auto' | 'light' | 'dark';\r\n\r\nexport interface ThemeConfig {\r\n name: string;\r\n label: string;\r\n borderRadius: BorderRadiusPreset;\r\n cssFile: string;\r\n preview?: {\r\n colors: {\r\n primary: string;\r\n background: string;\r\n accent: string;\r\n };\r\n };\r\n}\r\n\r\nexport interface ThemeContextType {\r\n // Theme management\r\n theme?: ThemeDefaults | null;\r\n setTheme?: (theme: ThemeDefaults) => void; // Add setTheme for enhanced functionality\r\n refreshTheme: () => void; // Refresh theme (now handled server-side)\r\n\r\n // Color mode\r\n mode?: Mode | null;\r\n setMode: (mode: Mode | null) => void;\r\n isColorModeToggleAllowed?: boolean; // Whether admin allows color mode changes\r\n\r\n // Design controls\r\n borderRadius?: BorderRadiusPreset;\r\n setBorderRadius?: (radius: BorderRadiusPreset) => void;\r\n fontScale?: FontScalePreset;\r\n setFontScale?: (scale: FontScalePreset) => void;\r\n spacing?: SpacingPreset;\r\n setSpacing?: (spacing: SpacingPreset) => void;\r\n animationLevel?: AnimationLevelPreset;\r\n setAnimationLevel?: (level: AnimationLevelPreset) => void;\r\n\r\n // Theme loading\r\n preloadTheme?: (theme: ThemeDefaults) => Promise<boolean>;\r\n isThemeLoaded?: (theme: ThemeDefaults) => boolean;\r\n\r\n // Enhanced configuration\r\n themeConfig?: any; // Enhanced theme configuration from plugin\r\n}\r\n\r\nexport interface ThemeOption {\r\n label: string;\r\n value: ThemeDefaults;\r\n config?: ThemeConfig;\r\n}\r\n\r\nexport function themeIsValid(string: null | string): string is ThemeDefaults {\r\n return string\r\n ? [\r\n 'cool',\r\n 'brutal',\r\n 'neon',\r\n 'solar',\r\n 'dealership',\r\n 'real-estate',\r\n 'real-estate-gold',\r\n 'real-estate-neutral',\r\n ].includes(string)\r\n : false;\r\n}\r\n\r\nexport function modeIsValid(string: null | string): string is Mode {\r\n return string ? ['dark', 'light'].includes(string) : false;\r\n}\r\n"],"names":["themeIsValid","string","includes","modeIsValid"],"mappings":"AAuEA,OAAO,SAASA,aAAaC,MAAqB;IAChD,OAAOA,SACH;QACE;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KACD,CAACC,QAAQ,CAACD,UACX;AACN;AAEA,OAAO,SAASE,YAAYF,MAAqB;IAC/C,OAAOA,SAAS;QAAC;QAAQ;KAAQ,CAACC,QAAQ,CAACD,UAAU;AACvD"}
package/dist/server.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import 'server-only';
1
2
  export { ServerThemeInjector } from './components/ServerThemeInjector.js';
2
3
  export { createFallbackCriticalCSS, generateThemePreloadLinks, getThemeCriticalCSS, getThemeCSSPath, } from './utils/themeAssets.js';
3
4
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AAEzE,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,mBAAmB,EACnB,eAAe,GAChB,MAAM,wBAAwB,CAAA"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AAEzE,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,mBAAmB,EACnB,eAAe,GAChB,MAAM,wBAAwB,CAAA"}
package/dist/server.js CHANGED
@@ -1,3 +1,4 @@
1
+ import 'server-only';
1
2
  export { ServerThemeInjector } from './components/ServerThemeInjector.js';
2
3
  export { createFallbackCriticalCSS, generateThemePreloadLinks, getThemeCriticalCSS, getThemeCSSPath } from './utils/themeAssets.js';
3
4
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server.ts"],"sourcesContent":["export { ServerThemeInjector } from './components/ServerThemeInjector.js'\n\nexport {\n createFallbackCriticalCSS,\n generateThemePreloadLinks,\n getThemeCriticalCSS,\n getThemeCSSPath,\n} from './utils/themeAssets.js'\n"],"names":["ServerThemeInjector","createFallbackCriticalCSS","generateThemePreloadLinks","getThemeCriticalCSS","getThemeCSSPath"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ,sCAAqC;AAEzE,SACEC,yBAAyB,EACzBC,yBAAyB,EACzBC,mBAAmB,EACnBC,eAAe,QACV,yBAAwB"}
1
+ {"version":3,"sources":["../src/server.ts"],"sourcesContent":["import 'server-only'\r\n\r\nexport { ServerThemeInjector } from './components/ServerThemeInjector.js'\r\n\r\nexport {\r\n createFallbackCriticalCSS,\r\n generateThemePreloadLinks,\r\n getThemeCriticalCSS,\r\n getThemeCSSPath,\r\n} from './utils/themeAssets.js'\r\n"],"names":["ServerThemeInjector","createFallbackCriticalCSS","generateThemePreloadLinks","getThemeCriticalCSS","getThemeCSSPath"],"mappings":"AAAA,OAAO,cAAa;AAEpB,SAASA,mBAAmB,QAAQ,sCAAqC;AAEzE,SACEC,yBAAyB,EACzBC,yBAAyB,EACzBC,mBAAmB,EACnBC,eAAe,QACV,yBAAwB"}
@@ -0,0 +1,138 @@
1
+ .theme-color-picker-field {
2
+ margin-bottom: 1rem;
3
+
4
+ .field-header {
5
+ margin-bottom: 0.5rem;
6
+ }
7
+
8
+ .field-label {
9
+ display: block;
10
+ font-weight: 500;
11
+ font-size: 0.875rem;
12
+ color: var(--theme-text);
13
+ margin-bottom: 0.25rem;
14
+ }
15
+
16
+ .field-description {
17
+ font-size: 0.75rem;
18
+ color: var(--theme-elevation-400);
19
+ margin-top: 0.25rem;
20
+ }
21
+
22
+ .color-picker-container {
23
+ display: flex;
24
+ gap: 0.75rem;
25
+ align-items: center;
26
+ }
27
+
28
+ .color-input-wrapper {
29
+ display: flex;
30
+ gap: 0.5rem;
31
+ flex: 1;
32
+ }
33
+
34
+ .color-input {
35
+ width: 60px;
36
+ height: 38px;
37
+ border: 1px solid var(--theme-elevation-200);
38
+ border-radius: 4px;
39
+ cursor: pointer;
40
+ padding: 2px;
41
+
42
+ &:hover {
43
+ border-color: var(--theme-elevation-400);
44
+ }
45
+
46
+ &:focus {
47
+ outline: 2px solid var(--theme-elevation-500);
48
+ outline-offset: 1px;
49
+ }
50
+ }
51
+
52
+ .text-input {
53
+ flex: 1;
54
+ height: 38px;
55
+ padding: 0 0.75rem;
56
+ border: 1px solid var(--theme-elevation-200);
57
+ border-radius: 4px;
58
+ font-family: monospace;
59
+ font-size: 0.875rem;
60
+ background: var(--theme-elevation-0);
61
+ color: var(--theme-text);
62
+
63
+ &:hover {
64
+ border-color: var(--theme-elevation-400);
65
+ }
66
+
67
+ &:focus {
68
+ outline: 2px solid var(--theme-elevation-500);
69
+ outline-offset: 1px;
70
+ border-color: var(--theme-elevation-500);
71
+ }
72
+
73
+ &::placeholder {
74
+ color: var(--theme-elevation-400);
75
+ }
76
+
77
+ &:invalid {
78
+ border-color: #ef4444;
79
+ }
80
+ }
81
+
82
+ .color-preview {
83
+ width: 120px;
84
+ height: 38px;
85
+ border-radius: 4px;
86
+ border: 1px solid var(--theme-elevation-200);
87
+ display: flex;
88
+ align-items: center;
89
+ justify-content: center;
90
+ position: relative;
91
+ overflow: hidden;
92
+
93
+ .preview-label {
94
+ font-size: 0.75rem;
95
+ font-family: monospace;
96
+ padding: 0.25rem 0.5rem;
97
+ background: rgba(255, 255, 255, 0.9);
98
+ border-radius: 2px;
99
+ backdrop-filter: blur(4px);
100
+ color: #000;
101
+ font-weight: 500;
102
+ }
103
+ }
104
+
105
+ .mini-preview {
106
+ margin-top: 1rem;
107
+ padding: 1rem;
108
+ border-radius: 6px;
109
+ border: 1px solid;
110
+
111
+ .preview-card {
112
+ padding: 1rem;
113
+ border-radius: 4px;
114
+ border: 1px solid;
115
+ display: flex;
116
+ gap: 0.5rem;
117
+ flex-wrap: wrap;
118
+ }
119
+
120
+ .preview-button {
121
+ padding: 0.5rem 1rem;
122
+ border-radius: 4px;
123
+ border: none;
124
+ font-size: 0.875rem;
125
+ font-weight: 500;
126
+ cursor: pointer;
127
+ transition: opacity 0.2s;
128
+
129
+ &:hover {
130
+ opacity: 0.9;
131
+ }
132
+
133
+ &.secondary {
134
+ border: 1px solid currentColor;
135
+ }
136
+ }
137
+ }
138
+ }
@@ -0,0 +1,138 @@
1
+ .theme-color-picker-field {
2
+ margin-bottom: 1rem;
3
+
4
+ .field-header {
5
+ margin-bottom: 0.5rem;
6
+ }
7
+
8
+ .field-label {
9
+ display: block;
10
+ font-weight: 500;
11
+ font-size: 0.875rem;
12
+ color: var(--theme-text);
13
+ margin-bottom: 0.25rem;
14
+ }
15
+
16
+ .field-description {
17
+ font-size: 0.75rem;
18
+ color: var(--theme-elevation-400);
19
+ margin-top: 0.25rem;
20
+ }
21
+
22
+ .color-picker-container {
23
+ display: flex;
24
+ gap: 0.75rem;
25
+ align-items: center;
26
+ }
27
+
28
+ .color-input-wrapper {
29
+ display: flex;
30
+ gap: 0.5rem;
31
+ flex: 1;
32
+ }
33
+
34
+ .color-input {
35
+ width: 60px;
36
+ height: 38px;
37
+ border: 1px solid var(--theme-elevation-200);
38
+ border-radius: 4px;
39
+ cursor: pointer;
40
+ padding: 2px;
41
+
42
+ &:hover {
43
+ border-color: var(--theme-elevation-400);
44
+ }
45
+
46
+ &:focus {
47
+ outline: 2px solid var(--theme-elevation-500);
48
+ outline-offset: 1px;
49
+ }
50
+ }
51
+
52
+ .text-input {
53
+ flex: 1;
54
+ height: 38px;
55
+ padding: 0 0.75rem;
56
+ border: 1px solid var(--theme-elevation-200);
57
+ border-radius: 4px;
58
+ font-family: monospace;
59
+ font-size: 0.875rem;
60
+ background: var(--theme-elevation-0);
61
+ color: var(--theme-text);
62
+
63
+ &:hover {
64
+ border-color: var(--theme-elevation-400);
65
+ }
66
+
67
+ &:focus {
68
+ outline: 2px solid var(--theme-elevation-500);
69
+ outline-offset: 1px;
70
+ border-color: var(--theme-elevation-500);
71
+ }
72
+
73
+ &::placeholder {
74
+ color: var(--theme-elevation-400);
75
+ }
76
+
77
+ &:invalid {
78
+ border-color: #ef4444;
79
+ }
80
+ }
81
+
82
+ .color-preview {
83
+ width: 120px;
84
+ height: 38px;
85
+ border-radius: 4px;
86
+ border: 1px solid var(--theme-elevation-200);
87
+ display: flex;
88
+ align-items: center;
89
+ justify-content: center;
90
+ position: relative;
91
+ overflow: hidden;
92
+
93
+ .preview-label {
94
+ font-size: 0.75rem;
95
+ font-family: monospace;
96
+ padding: 0.25rem 0.5rem;
97
+ background: rgba(255, 255, 255, 0.9);
98
+ border-radius: 2px;
99
+ backdrop-filter: blur(4px);
100
+ color: #000;
101
+ font-weight: 500;
102
+ }
103
+ }
104
+
105
+ .mini-preview {
106
+ margin-top: 1rem;
107
+ padding: 1rem;
108
+ border-radius: 6px;
109
+ border: 1px solid;
110
+
111
+ .preview-card {
112
+ padding: 1rem;
113
+ border-radius: 4px;
114
+ border: 1px solid;
115
+ display: flex;
116
+ gap: 0.5rem;
117
+ flex-wrap: wrap;
118
+ }
119
+
120
+ .preview-button {
121
+ padding: 0.5rem 1rem;
122
+ border-radius: 4px;
123
+ border: none;
124
+ font-size: 0.875rem;
125
+ font-weight: 500;
126
+ cursor: pointer;
127
+ transition: opacity 0.2s;
128
+
129
+ &:hover {
130
+ opacity: 0.9;
131
+ }
132
+
133
+ &.secondary {
134
+ border: 1px solid currentColor;
135
+ }
136
+ }
137
+ }
138
+ }
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type { ThemePreset } from './presets.js'\n\nexport interface ThemeManagementPluginOptions {\n\t/** Whether the plugin should register itself */\n\tenabled?: boolean\n\t/** Collection slug that stores site-level settings (default: `site-settings`) */\n\ttargetCollection?: string\n\t/** Theme presets available to editors */\n\tthemePresets?: ThemePreset[]\n\t/** Default preset name when no value is stored */\n\tdefaultTheme?: string\n\t/** Allow editors to toggle between light / dark / auto modes */\n\tincludeColorModeToggle?: boolean\n\t/** Expose custom CSS editor */\n\tincludeCustomCSS?: boolean\n\t/** Reserved for future use, keeps API parity */\n\tincludeBrandIdentity?: boolean\n\t/** Enable advanced controls such as animation level */\n\tenableAdvancedFeatures?: boolean\n\t/** Log helpful messages during config mutation */\n\tenableLogging?: boolean\n}\n\nexport interface FetchThemeConfigurationOptions {\n\t/** Optional tenant identifier if your project is multi-tenant */\n\ttenantSlug?: string\n\t/** Collection slug override (default: `site-settings`) */\n\tcollectionSlug?: string\n\t/** Depth parameter passed to Payload REST API */\n\tdepth?: number\n\t/** Locale parameter passed to Payload REST API */\n\tlocale?: string\n\t/** Include draft documents */\n\tdraft?: boolean\n\t/** Extra query parameters to append to the request */\n\tqueryParams?: Record<string, string | number | boolean>\n}\n\n"],"names":[],"mappings":"AAuBA,WAaC"}
1
+ {"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type { ThemePreset } from './presets.js'\r\n\r\nexport interface ThemeManagementPluginOptions {\r\n\t/** Whether the plugin should register itself */\r\n\tenabled?: boolean\r\n\t/** Collection slug that stores site-level settings (default: `site-settings`) */\r\n\ttargetCollection?: string\r\n\t/** Theme presets available to editors */\r\n\tthemePresets?: ThemePreset[]\r\n\t/** Default preset name when no value is stored */\r\n\tdefaultTheme?: string\r\n\t/** Allow editors to toggle between light / dark / auto modes */\r\n\tincludeColorModeToggle?: boolean\r\n\t/** Expose custom CSS editor */\r\n\tincludeCustomCSS?: boolean\r\n\t/** Reserved for future use, keeps API parity */\r\n\tincludeBrandIdentity?: boolean\r\n\t/** Enable advanced controls such as animation level */\r\n\tenableAdvancedFeatures?: boolean\r\n\t/** Log helpful messages during config mutation */\r\n\tenableLogging?: boolean\r\n}\r\n\r\nexport interface FetchThemeConfigurationOptions {\r\n\t/** Optional tenant identifier if your project is multi-tenant */\r\n\ttenantSlug?: string\r\n\t/** Collection slug override (default: `site-settings`) */\r\n\tcollectionSlug?: string\r\n\t/** Depth parameter passed to Payload REST API */\r\n\tdepth?: number\r\n\t/** Locale parameter passed to Payload REST API */\r\n\tlocale?: string\r\n\t/** Include draft documents */\r\n\tdraft?: boolean\r\n\t/** Extra query parameters to append to the request */\r\n\tqueryParams?: Record<string, string | number | boolean>\r\n}\r\n\r\n"],"names":[],"mappings":"AAuBA,WAaC"}