@kilivi/payloadcms-theme-management 2.0.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +346 -845
- package/dist/components/AppearanceSessionControls.d.ts +15 -0
- package/dist/components/AppearanceSessionControls.d.ts.map +1 -0
- package/dist/components/AppearanceSessionControls.js +152 -0
- package/dist/components/AppearanceSessionControls.js.map +1 -0
- package/dist/components/ColorModeToggle.css +42 -0
- package/dist/components/ColorModeToggle.d.ts +40 -0
- package/dist/components/ColorModeToggle.d.ts.map +1 -0
- package/dist/components/ColorModeToggle.js +111 -0
- package/dist/components/ColorModeToggle.js.map +1 -0
- package/dist/components/ServerThemeInjector.d.ts +13 -1
- package/dist/components/ServerThemeInjector.d.ts.map +1 -1
- package/dist/components/ServerThemeInjector.js +65 -15
- package/dist/components/ServerThemeInjector.js.map +1 -1
- package/dist/components/ThemeLivePreviewSync.d.ts +4 -0
- package/dist/components/ThemeLivePreviewSync.d.ts.map +1 -1
- package/dist/components/ThemeLivePreviewSync.js +28 -4
- package/dist/components/ThemeLivePreviewSync.js.map +1 -1
- package/dist/components/ThemeSwitcher.d.ts +36 -0
- package/dist/components/ThemeSwitcher.d.ts.map +1 -0
- package/dist/components/ThemeSwitcher.js +89 -0
- package/dist/components/ThemeSwitcher.js.map +1 -0
- package/dist/components/typographyPreviewUtils.d.ts +5 -0
- package/dist/components/typographyPreviewUtils.d.ts.map +1 -1
- package/dist/components/typographyPreviewUtils.js +24 -11
- package/dist/components/typographyPreviewUtils.js.map +1 -1
- package/dist/constants/devicePreviews.d.ts +35 -0
- package/dist/constants/devicePreviews.d.ts.map +1 -0
- package/dist/constants/devicePreviews.js +43 -0
- package/dist/constants/devicePreviews.js.map +1 -0
- package/dist/constants/themeFonts.d.ts +94 -168
- package/dist/constants/themeFonts.d.ts.map +1 -1
- package/dist/constants/themeFonts.js +260 -140
- package/dist/constants/themeFonts.js.map +1 -1
- package/dist/endpoints/themeFonts.d.ts +5 -0
- package/dist/endpoints/themeFonts.d.ts.map +1 -0
- package/dist/endpoints/themeFonts.js +138 -0
- package/dist/endpoints/themeFonts.js.map +1 -0
- package/dist/extended-presets.d.ts +0 -4
- package/dist/extended-presets.d.ts.map +1 -1
- package/dist/extended-presets.js +1 -18
- package/dist/extended-presets.js.map +1 -1
- package/dist/extended-themes.d.ts.map +1 -1
- package/dist/extended-themes.js +428 -0
- package/dist/extended-themes.js.map +1 -1
- package/dist/fields/AccessibilityAuditField.d.ts +2 -0
- package/dist/fields/AccessibilityAuditField.d.ts.map +1 -0
- package/dist/fields/AccessibilityAuditField.js +303 -0
- package/dist/fields/AccessibilityAuditField.js.map +1 -0
- package/dist/fields/AppearancePreviewField.d.ts +2 -0
- package/dist/fields/AppearancePreviewField.d.ts.map +1 -0
- package/dist/fields/AppearancePreviewField.js +826 -0
- package/dist/fields/AppearancePreviewField.js.map +1 -0
- package/dist/fields/ColorPickerField.d.ts.map +1 -1
- package/dist/fields/ColorPickerField.js +89 -85
- package/dist/fields/ColorPickerField.js.map +1 -1
- package/dist/fields/FontSelectField.css +155 -0
- package/dist/fields/FontSelectField.d.ts +8 -0
- package/dist/fields/FontSelectField.d.ts.map +1 -1
- package/dist/fields/FontSelectField.js +223 -188
- package/dist/fields/FontSelectField.js.map +1 -1
- package/dist/fields/PaletteGeneratorField.d.ts +7 -0
- package/dist/fields/PaletteGeneratorField.d.ts.map +1 -0
- package/dist/fields/PaletteGeneratorField.js +327 -0
- package/dist/fields/PaletteGeneratorField.js.map +1 -0
- package/dist/fields/StylePresetField.d.ts +3 -0
- package/dist/fields/StylePresetField.d.ts.map +1 -0
- package/dist/fields/StylePresetField.js +463 -0
- package/dist/fields/StylePresetField.js.map +1 -0
- package/dist/fields/ThemeColorPickerField.css +115 -35
- package/dist/fields/ThemeColorPickerField.d.ts.map +1 -1
- package/dist/fields/ThemeColorPickerField.js +204 -70
- package/dist/fields/ThemeColorPickerField.js.map +1 -1
- package/dist/fields/ThemeExportField.d.ts +6 -0
- package/dist/fields/ThemeExportField.d.ts.map +1 -0
- package/dist/fields/ThemeExportField.js +202 -0
- package/dist/fields/ThemeExportField.js.map +1 -0
- package/dist/fields/ThemePresetImportField.d.ts.map +1 -1
- package/dist/fields/ThemePresetImportField.js +56 -25
- package/dist/fields/ThemePresetImportField.js.map +1 -1
- package/dist/fields/ThemePreviewField.css +444 -5
- package/dist/fields/ThemePreviewField.d.ts.map +1 -1
- package/dist/fields/ThemePreviewField.js +265 -170
- package/dist/fields/ThemePreviewField.js.map +1 -1
- package/dist/fields/ThemeTokenSelectField.d.ts.map +1 -1
- package/dist/fields/ThemeTokenSelectField.js +278 -80
- package/dist/fields/ThemeTokenSelectField.js.map +1 -1
- package/dist/fields/colorFieldHelpers.d.ts +90 -0
- package/dist/fields/colorFieldHelpers.d.ts.map +1 -0
- package/dist/fields/colorFieldHelpers.js +133 -0
- package/dist/fields/colorFieldHelpers.js.map +1 -0
- package/dist/fields/colorModeFields.d.ts +1 -1
- package/dist/fields/colorModeFields.d.ts.map +1 -1
- package/dist/fields/colorModeFields.js +49 -7
- package/dist/fields/colorModeFields.js.map +1 -1
- package/dist/fields/themeConfigurationField.d.ts +8 -1
- package/dist/fields/themeConfigurationField.d.ts.map +1 -1
- package/dist/fields/themeConfigurationField.js +1209 -228
- package/dist/fields/themeConfigurationField.js.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/FontPreview.d.ts.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/FontPreview.js +8 -4
- package/dist/globals/ThemeSettings/FontPicker/FontPreview.js.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/index.d.ts.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/index.js +81 -26
- package/dist/globals/ThemeSettings/FontPicker/index.js.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/styles.css +98 -41
- package/dist/globals/ThemeSettings/FontPicker/translations.d.ts +6 -0
- package/dist/globals/ThemeSettings/FontPicker/translations.d.ts.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/translations.js +14 -2
- package/dist/globals/ThemeSettings/FontPicker/translations.js.map +1 -1
- package/dist/globals/ThemeSettings/config.d.ts.map +1 -1
- package/dist/globals/ThemeSettings/config.js +76 -79
- package/dist/globals/ThemeSettings/config.js.map +1 -1
- package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.d.ts.map +1 -1
- package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.js +63 -62
- package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.js.map +1 -1
- package/dist/globals/ThemeSettings/fields/TypographyInfoField.d.ts.map +1 -1
- package/dist/globals/ThemeSettings/fields/TypographyInfoField.js +22 -25
- package/dist/globals/ThemeSettings/fields/TypographyInfoField.js.map +1 -1
- package/dist/hooks/useAppearanceSession.d.ts +50 -0
- package/dist/hooks/useAppearanceSession.d.ts.map +1 -0
- package/dist/hooks/useAppearanceSession.js +91 -0
- package/dist/hooks/useAppearanceSession.js.map +1 -0
- package/dist/hooks/useNativeLivePreview.d.ts +15 -0
- package/dist/hooks/useNativeLivePreview.d.ts.map +1 -0
- package/dist/hooks/useNativeLivePreview.js +18 -0
- package/dist/hooks/useNativeLivePreview.js.map +1 -0
- package/dist/hooks/useThemeFonts.d.ts +10 -0
- package/dist/hooks/useThemeFonts.d.ts.map +1 -0
- package/dist/hooks/useThemeFonts.js +36 -0
- package/dist/hooks/useThemeFonts.js.map +1 -0
- package/dist/hooks/useThemeTranslations.d.ts +13 -0
- package/dist/hooks/useThemeTranslations.d.ts.map +1 -0
- package/dist/hooks/useThemeTranslations.js +22 -0
- package/dist/hooks/useThemeTranslations.js.map +1 -0
- package/dist/i18n.d.ts +53 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +53 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +13 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +59 -29
- package/dist/index.js.map +1 -1
- package/dist/next-fonts.d.ts +3 -0
- package/dist/next-fonts.d.ts.map +1 -0
- package/dist/next-fonts.js +360 -0
- package/dist/next-fonts.js.map +1 -0
- package/dist/payload-types.d.ts +34 -6
- package/dist/payload-types.d.ts.map +1 -1
- package/dist/payload-types.js.map +1 -1
- package/dist/presets.d.ts +14 -0
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js.map +1 -1
- package/dist/providers/Theme/index.d.ts.map +1 -1
- package/dist/providers/Theme/index.js +75 -11
- package/dist/providers/Theme/index.js.map +1 -1
- package/dist/providers/Theme/themeConfig.d.ts.map +1 -1
- package/dist/providers/Theme/themeConfig.js +104 -0
- package/dist/providers/Theme/themeConfig.js.map +1 -1
- package/dist/providers/Theme/types.d.ts +1 -1
- package/dist/providers/Theme/types.d.ts.map +1 -1
- package/dist/providers/Theme/types.js +10 -1
- package/dist/providers/Theme/types.js.map +1 -1
- package/dist/style-presets.d.ts +75 -0
- package/dist/style-presets.d.ts.map +1 -0
- package/dist/style-presets.js +738 -0
- package/dist/style-presets.js.map +1 -0
- package/dist/translations.d.ts +164 -1
- package/dist/translations.d.ts.map +1 -1
- package/dist/translations.js +320 -9
- package/dist/translations.js.map +1 -1
- package/dist/tweakcn-special-themes.d.ts.map +1 -1
- package/dist/tweakcn-special-themes.js +585 -9
- package/dist/tweakcn-special-themes.js.map +1 -1
- package/dist/types/css.d.js +3 -0
- package/dist/types/css.d.js.map +1 -0
- package/dist/types.d.ts +26 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utilities/getThemeSettings.d.ts.map +1 -1
- package/dist/utilities/getThemeSettings.js +2 -14
- package/dist/utilities/getThemeSettings.js.map +1 -1
- package/dist/utils/contrast.d.ts +63 -0
- package/dist/utils/contrast.d.ts.map +1 -0
- package/dist/utils/contrast.js +158 -0
- package/dist/utils/contrast.js.map +1 -0
- package/dist/utils/exportTokens.d.ts +30 -0
- package/dist/utils/exportTokens.d.ts.map +1 -0
- package/dist/utils/exportTokens.js +183 -0
- package/dist/utils/exportTokens.js.map +1 -0
- package/dist/utils/generatePalette.d.ts +46 -0
- package/dist/utils/generatePalette.d.ts.map +1 -0
- package/dist/utils/generatePalette.js +127 -0
- package/dist/utils/generatePalette.js.map +1 -0
- package/dist/utils/generateThemeCSS.d.ts.map +1 -1
- package/dist/utils/generateThemeCSS.js +2 -40
- package/dist/utils/generateThemeCSS.js.map +1 -1
- package/dist/utils/livePreviewThemeRuntime.d.ts +22 -3
- package/dist/utils/livePreviewThemeRuntime.d.ts.map +1 -1
- package/dist/utils/livePreviewThemeRuntime.js +48 -15
- package/dist/utils/livePreviewThemeRuntime.js.map +1 -1
- package/dist/utils/localizedText.d.ts +8 -0
- package/dist/utils/localizedText.d.ts.map +1 -0
- package/dist/utils/localizedText.js +21 -0
- package/dist/utils/localizedText.js.map +1 -0
- package/dist/utils/resolveThemeConfiguration.d.ts +60 -1
- package/dist/utils/resolveThemeConfiguration.d.ts.map +1 -1
- package/dist/utils/resolveThemeConfiguration.js +53 -13
- package/dist/utils/resolveThemeConfiguration.js.map +1 -1
- package/dist/utils/themeColors.d.ts +3 -0
- package/dist/utils/themeColors.d.ts.map +1 -1
- package/dist/utils/themeColors.js +30 -1
- package/dist/utils/themeColors.js.map +1 -1
- package/dist/utils/themeHtmlAttributes.d.ts +32 -12
- package/dist/utils/themeHtmlAttributes.d.ts.map +1 -1
- package/dist/utils/themeHtmlAttributes.js +38 -5
- package/dist/utils/themeHtmlAttributes.js.map +1 -1
- package/dist/utils/themeUtils.d.ts +3 -5
- package/dist/utils/themeUtils.d.ts.map +1 -1
- package/dist/utils/themeUtils.js +474 -6
- package/dist/utils/themeUtils.js.map +1 -1
- package/dist/utils/tweakcnConverter.d.ts +1 -3
- package/dist/utils/tweakcnConverter.d.ts.map +1 -1
- package/dist/utils/tweakcnConverter.js +1 -3
- package/dist/utils/tweakcnConverter.js.map +1 -1
- package/package.json +15 -5
- package/dist/components/ThemePreview.d.ts +0 -3
- package/dist/components/ThemePreview.d.ts.map +0 -1
- package/dist/components/ThemePreview.js +0 -321
- package/dist/components/ThemePreview.js.map +0 -1
- package/dist/plugin.d.ts +0 -2
- package/dist/plugin.d.ts.map +0 -1
- package/dist/plugin.js +0 -3
- package/dist/plugin.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/next-fonts.ts"],"sourcesContent":["/**\n * Theme fonts via next/font — the Next.js best practice, opt-in.\n *\n * Every font an editor can pick in Appearance Settings (FONT_CATALOG) declared\n * once with `next/font/google`: the files are downloaded at build time and\n * served from your own domain with metric-matched fallbacks (no layout shift),\n * and the visitor's browser never contacts Google.\n *\n * - `preload: false` — the tenant picks the font at runtime, so nothing is\n * preloaded; the browser downloads only the face the page actually uses.\n * - Each `variable` matches the `--font-*` name in FONT_CATALOG, and the theme\n * CSS reads `var(--font-lora, \"Lora\")`, so these copies win automatically.\n *\n * Usage (app/layout.tsx):\n *\n * import { themeFontVariables } from '@kilivi/payloadcms-theme-management/next-fonts'\n * <html className={themeFontVariables}>\n * <head><ServerThemeInjector themeConfiguration={…} fontLoading=\"none\" /></head>\n *\n * Without this module the plugin still serves the fonts from your own domain\n * through its `/api/theme-fonts` endpoints (the default, no setup needed).\n */\nimport {\n Archivo,\n Archivo_Black,\n Bebas_Neue,\n Cormorant_Garamond,\n Crimson_Pro,\n DM_Sans,\n DM_Serif_Display,\n Fraunces,\n IBM_Plex_Mono,\n Inter,\n JetBrains_Mono,\n Lato,\n Libre_Baskerville,\n Lora,\n Manrope,\n Merriweather,\n Montserrat,\n Nunito,\n Open_Sans,\n Outfit,\n Playfair_Display,\n Plus_Jakarta_Sans,\n Poppins,\n Raleway,\n Roboto,\n Source_Sans_3,\n Space_Grotesk,\n Space_Mono,\n Syne,\n Work_Sans,\n} from 'next/font/google'\n\n// Variable fonts: one file covers every weight.\nconst inter = Inter({ subsets: ['latin', 'latin-ext'], variable: '--font-inter', display: 'swap', preload: false })\nconst roboto = Roboto({ subsets: ['latin', 'latin-ext'], variable: '--font-roboto', display: 'swap', preload: false })\nconst openSans = Open_Sans({ subsets: ['latin', 'latin-ext'], variable: '--font-open-sans', display: 'swap', preload: false })\nconst montserrat = Montserrat({ subsets: ['latin', 'latin-ext'], variable: '--font-montserrat', display: 'swap', preload: false })\nconst raleway = Raleway({ subsets: ['latin', 'latin-ext'], variable: '--font-raleway', display: 'swap', preload: false })\nconst dmSans = DM_Sans({ subsets: ['latin', 'latin-ext'], variable: '--font-dm-sans', display: 'swap', preload: false })\nconst nunito = Nunito({ subsets: ['latin', 'latin-ext'], variable: '--font-nunito', display: 'swap', preload: false })\nconst plusJakarta = Plus_Jakarta_Sans({ subsets: ['latin', 'latin-ext'], variable: '--font-plus-jakarta', display: 'swap', preload: false })\nconst manrope = Manrope({ subsets: ['latin', 'latin-ext'], variable: '--font-manrope', display: 'swap', preload: false })\nconst spaceGrotesk = Space_Grotesk({ subsets: ['latin', 'latin-ext'], variable: '--font-space-grotesk', display: 'swap', preload: false })\nconst sourceSans = Source_Sans_3({ subsets: ['latin', 'latin-ext'], variable: '--font-source-sans', display: 'swap', preload: false })\nconst workSans = Work_Sans({ subsets: ['latin', 'latin-ext'], variable: '--font-work-sans', display: 'swap', preload: false })\nconst archivo = Archivo({ subsets: ['latin', 'latin-ext'], variable: '--font-archivo', display: 'swap', preload: false })\nconst outfit = Outfit({ subsets: ['latin', 'latin-ext'], variable: '--font-outfit', display: 'swap', preload: false })\nconst playfair = Playfair_Display({ subsets: ['latin', 'latin-ext'], variable: '--font-playfair', display: 'swap', preload: false })\nconst merriweather = Merriweather({ subsets: ['latin', 'latin-ext'], variable: '--font-merriweather', display: 'swap', preload: false })\nconst lora = Lora({ subsets: ['latin', 'latin-ext'], variable: '--font-lora', display: 'swap', preload: false })\nconst cormorant = Cormorant_Garamond({ subsets: ['latin', 'latin-ext'], variable: '--font-cormorant', display: 'swap', preload: false })\nconst crimson = Crimson_Pro({ subsets: ['latin', 'latin-ext'], variable: '--font-crimson', display: 'swap', preload: false })\nconst fraunces = Fraunces({ subsets: ['latin', 'latin-ext'], variable: '--font-fraunces', display: 'swap', preload: false })\nconst syne = Syne({ subsets: ['latin', 'latin-ext'], variable: '--font-syne', display: 'swap', preload: false })\nconst jetbrains = JetBrains_Mono({ subsets: ['latin', 'latin-ext'], variable: '--font-jetbrains-mono', display: 'swap', preload: false })\n\n// Static fonts: weights must be listed.\nconst lato = Lato({ subsets: ['latin', 'latin-ext'], weight: ['300', '400', '700', '900'], variable: '--font-lato', display: 'swap', preload: false })\nconst poppins = Poppins({ subsets: ['latin', 'latin-ext'], weight: ['300', '400', '500', '600', '700', '800'], variable: '--font-poppins', display: 'swap', preload: false })\nconst libreBaskerville = Libre_Baskerville({ subsets: ['latin', 'latin-ext'], weight: ['400', '700'], variable: '--font-libre-baskerville', display: 'swap', preload: false })\nconst dmSerif = DM_Serif_Display({ subsets: ['latin', 'latin-ext'], weight: '400', variable: '--font-dm-serif', display: 'swap', preload: false })\nconst bebas = Bebas_Neue({ subsets: ['latin', 'latin-ext'], weight: '400', variable: '--font-bebas', display: 'swap', preload: false })\nconst archivoBlack = Archivo_Black({ subsets: ['latin', 'latin-ext'], weight: '400', variable: '--font-archivo-black', display: 'swap', preload: false })\nconst spaceMono = Space_Mono({ subsets: ['latin', 'latin-ext'], weight: ['400', '700'], variable: '--font-space-mono', display: 'swap', preload: false })\nconst ibmPlexMono = IBM_Plex_Mono({ subsets: ['latin', 'latin-ext'], weight: ['300', '400', '500', '600', '700'], variable: '--font-ibm-plex-mono', display: 'swap', preload: false })\n\n/** Class names that define every `--font-*` variable; put them on <html>. */\nexport const themeFontVariables = [\n inter,\n roboto,\n openSans,\n lato,\n montserrat,\n poppins,\n raleway,\n dmSans,\n nunito,\n plusJakarta,\n manrope,\n spaceGrotesk,\n sourceSans,\n workSans,\n archivo,\n outfit,\n playfair,\n merriweather,\n lora,\n cormorant,\n crimson,\n fraunces,\n libreBaskerville,\n dmSerif,\n bebas,\n archivoBlack,\n syne,\n spaceMono,\n ibmPlexMono,\n jetbrains,\n]\n .map((font) => font.variable)\n .join(' ')\n"],"names":["Archivo","Archivo_Black","Bebas_Neue","Cormorant_Garamond","Crimson_Pro","DM_Sans","DM_Serif_Display","Fraunces","IBM_Plex_Mono","Inter","JetBrains_Mono","Lato","Libre_Baskerville","Lora","Manrope","Merriweather","Montserrat","Nunito","Open_Sans","Outfit","Playfair_Display","Plus_Jakarta_Sans","Poppins","Raleway","Roboto","Source_Sans_3","Space_Grotesk","Space_Mono","Syne","Work_Sans","inter","subsets","variable","display","preload","roboto","openSans","montserrat","raleway","dmSans","nunito","plusJakarta","manrope","spaceGrotesk","sourceSans","workSans","archivo","outfit","playfair","merriweather","lora","cormorant","crimson","fraunces","syne","jetbrains","lato","weight","poppins","libreBaskerville","dmSerif","bebas","archivoBlack","spaceMono","ibmPlexMono","themeFontVariables","map","font","join"],"mappings":"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"}
|
package/dist/payload-types.d.ts
CHANGED
|
@@ -33,14 +33,18 @@ export interface ThemeColorOverride {
|
|
|
33
33
|
ring?: string | null;
|
|
34
34
|
}
|
|
35
35
|
export interface ThemeTypographyOverride {
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
/** 'preset', 'custom' or a font from FONT_CATALOG (e.g. 'Inter', 'Playfair Display'). */
|
|
37
|
+
bodyFont?: string | null;
|
|
38
|
+
/** 'preset', 'custom' or a font from FONT_CATALOG. */
|
|
39
|
+
headingFont?: string | null;
|
|
38
40
|
bodyFontCustom?: string | null;
|
|
39
41
|
headingFontCustom?: string | null;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
/** 'preset' or a pixel number without unit ('14' … '20'). */
|
|
43
|
+
baseFontSize?: string | null;
|
|
44
|
+
/** 'preset' or a unitless line height ('1.4' … '1.8'). */
|
|
45
|
+
lineHeight?: string | null;
|
|
46
|
+
headingWeight?: ('preset' | '300' | '400' | '500' | '600' | '700' | '800') | null;
|
|
47
|
+
letterSpacing?: ('preset' | 'tight' | 'normal' | 'wide' | 'wider') | null;
|
|
44
48
|
}
|
|
45
49
|
export interface ThemeCustomization {
|
|
46
50
|
primaryColor?: string | null;
|
|
@@ -49,6 +53,27 @@ export interface ThemeCustomization {
|
|
|
49
53
|
textColor?: string | null;
|
|
50
54
|
customCSS?: string | null;
|
|
51
55
|
}
|
|
56
|
+
export interface ThemeVisualEffects {
|
|
57
|
+
effectStyle?: 'flat' | 'elevated' | 'glass' | 'neumorphic' | 'clay' | null;
|
|
58
|
+
shadowIntensity?: 'none' | 'subtle' | 'medium' | 'strong' | 'dramatic' | null;
|
|
59
|
+
backdropBlur?: 'none' | 'slight' | 'medium' | 'strong' | 'heavy' | null;
|
|
60
|
+
borderStyle?: 'none' | 'solid' | 'dashed' | 'dotted' | 'double' | null;
|
|
61
|
+
borderWidth?: '0px' | '1px' | '2px' | '3px' | '4px' | null;
|
|
62
|
+
glassOpacity?: number | null;
|
|
63
|
+
}
|
|
64
|
+
export interface ThemeComponentStyles {
|
|
65
|
+
buttonVariant?: 'filled' | 'outlined' | 'ghost' | 'gradient' | 'pill' | 'brutal' | null;
|
|
66
|
+
buttonSize?: 'small' | 'medium' | 'large' | 'xl' | null;
|
|
67
|
+
cardStyle?: 'elevated' | 'flat' | 'bordered' | 'glass' | 'neumorphic' | 'gradient-border' | null;
|
|
68
|
+
cardHoverEffect?: 'none' | 'lift' | 'scale' | 'shadow' | 'glow' | 'tilt' | null;
|
|
69
|
+
imageStyle?: 'default' | 'rounded' | 'circle' | 'vignette' | 'grayscale' | 'duotone' | 'polaroid' | null;
|
|
70
|
+
iconSet?: 'lucide' | 'heroicons' | 'phosphor' | 'tabler' | 'font-awesome' | null;
|
|
71
|
+
navbarStyle?: 'solid' | 'transparent' | 'blur' | 'floating' | 'minimal' | null;
|
|
72
|
+
footerStyle?: 'standard' | 'minimal' | 'dark' | 'gradient-top' | 'full-color' | null;
|
|
73
|
+
linkStyle?: 'underline' | 'underline-hover' | 'none' | 'highlight' | 'animated' | null;
|
|
74
|
+
enableScrollReveal?: boolean | null;
|
|
75
|
+
enableHoverAnimations?: boolean | null;
|
|
76
|
+
}
|
|
52
77
|
export interface SiteThemeConfiguration {
|
|
53
78
|
theme?: string | null;
|
|
54
79
|
preset?: string | null;
|
|
@@ -65,6 +90,9 @@ export interface SiteThemeConfiguration {
|
|
|
65
90
|
customCSS?: string | null;
|
|
66
91
|
customization?: ThemeCustomization | null;
|
|
67
92
|
radius?: string | null;
|
|
93
|
+
visualEffects?: ThemeVisualEffects | null;
|
|
94
|
+
componentStyles?: ThemeComponentStyles | null;
|
|
95
|
+
stylePreset?: string | null;
|
|
68
96
|
}
|
|
69
97
|
export interface SiteSetting {
|
|
70
98
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payload-types.d.ts","sourceRoot":"","sources":["../src/payload-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,kBAAkB;IACjC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"payload-types.d.ts","sourceRoot":"","sources":["../src/payload-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/payload-types.ts"],"sourcesContent":["/**\n * Payload types for theme configuration\n * These are placeholder types that will be extended in the consuming application\n */\n\nexport interface ThemeColorOverride {\n [token: string]: string | null | undefined
|
|
1
|
+
{"version":3,"sources":["../src/payload-types.ts"],"sourcesContent":["/**\n * Payload types for theme configuration\n * These are placeholder types that will be extended in the consuming application\n */\n\nexport interface ThemeColorOverride {\n [token: string]: string | null | undefined\n primary?: string | null\n secondary?: string | null\n accent?: string | null\n background?: string | null\n surface?: string | null\n surfaceVariant?: string | null\n text?: string | null\n textSecondary?: string | null\n border?: string | null\n success?: string | null\n warning?: string | null\n error?: string | null\n info?: string | null\n foreground?: string | null\n card?: string | null\n cardForeground?: string | null\n popover?: string | null\n popoverForeground?: string | null\n primaryForeground?: string | null\n secondaryForeground?: string | null\n muted?: string | null\n mutedForeground?: string | null\n accentForeground?: string | null\n destructive?: string | null\n destructiveForeground?: string | null\n input?: string | null\n ring?: string | null\n}\n\nexport interface ThemeTypographyOverride {\n /** 'preset', 'custom' or a font from FONT_CATALOG (e.g. 'Inter', 'Playfair Display'). */\n bodyFont?: string | null\n /** 'preset', 'custom' or a font from FONT_CATALOG. */\n headingFont?: string | null\n bodyFontCustom?: string | null\n headingFontCustom?: string | null\n /** 'preset' or a pixel number without unit ('14' … '20'). */\n baseFontSize?: string | null\n /** 'preset' or a unitless line height ('1.4' … '1.8'). */\n lineHeight?: string | null\n headingWeight?: ('preset' | '300' | '400' | '500' | '600' | '700' | '800') | null\n letterSpacing?: ('preset' | 'tight' | 'normal' | 'wide' | 'wider') | null\n}\n\nexport interface ThemeCustomization {\n primaryColor?: string | null\n accentColor?: string | null\n backgroundColor?: string | null\n textColor?: string | null\n customCSS?: string | null\n}\n\nexport interface ThemeVisualEffects {\n effectStyle?: 'flat' | 'elevated' | 'glass' | 'neumorphic' | 'clay' | null\n shadowIntensity?: 'none' | 'subtle' | 'medium' | 'strong' | 'dramatic' | null\n backdropBlur?: 'none' | 'slight' | 'medium' | 'strong' | 'heavy' | null\n borderStyle?: 'none' | 'solid' | 'dashed' | 'dotted' | 'double' | null\n borderWidth?: '0px' | '1px' | '2px' | '3px' | '4px' | null\n glassOpacity?: number | null\n}\n\nexport interface ThemeComponentStyles {\n buttonVariant?: 'filled' | 'outlined' | 'ghost' | 'gradient' | 'pill' | 'brutal' | null\n buttonSize?: 'small' | 'medium' | 'large' | 'xl' | null\n cardStyle?: 'elevated' | 'flat' | 'bordered' | 'glass' | 'neumorphic' | 'gradient-border' | null\n cardHoverEffect?: 'none' | 'lift' | 'scale' | 'shadow' | 'glow' | 'tilt' | null\n imageStyle?:\n | 'default'\n | 'rounded'\n | 'circle'\n | 'vignette'\n | 'grayscale'\n | 'duotone'\n | 'polaroid'\n | null\n iconSet?: 'lucide' | 'heroicons' | 'phosphor' | 'tabler' | 'font-awesome' | null\n navbarStyle?: 'solid' | 'transparent' | 'blur' | 'floating' | 'minimal' | null\n footerStyle?: 'standard' | 'minimal' | 'dark' | 'gradient-top' | 'full-color' | null\n linkStyle?: 'underline' | 'underline-hover' | 'none' | 'highlight' | 'animated' | null\n enableScrollReveal?: boolean | null\n enableHoverAnimations?: boolean | null\n}\n\nexport interface SiteThemeConfiguration {\n theme?: string | null\n preset?: string | null\n colorMode?: 'auto' | 'light' | 'dark' | null\n allowColorModeToggle?: boolean | null\n lightMode?: ThemeColorOverride | null\n darkMode?: ThemeColorOverride | null\n colors?: ThemeColorOverride | null\n typography?: ThemeTypographyOverride | null\n borderRadius?: 'none' | 'small' | 'medium' | 'large' | 'xl' | null\n fontScale?: 'small' | 'medium' | 'large' | 'xl' | null\n spacing?: 'compact' | 'medium' | 'spacious' | null\n animationLevel?: 'none' | 'reduced' | 'medium' | 'high' | null\n customCSS?: string | null\n customization?: ThemeCustomization | null\n radius?: string | null\n visualEffects?: ThemeVisualEffects | null\n componentStyles?: ThemeComponentStyles | null\n stylePreset?: string | null\n}\n\nexport interface SiteSetting {\n id: string\n title?: string | null\n slug?: string | null\n themeConfiguration: SiteThemeConfiguration | null\n updatedAt: string\n createdAt: string\n}\n\nexport interface Config {\n collections: {\n 'site-settings': SiteSetting\n }\n globals: Record<string, unknown>\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAqHD,WAKC"}
|
package/dist/presets.d.ts
CHANGED
|
@@ -17,6 +17,12 @@ export interface ThemeTypographyPreset {
|
|
|
17
17
|
wide?: string;
|
|
18
18
|
wider?: string;
|
|
19
19
|
};
|
|
20
|
+
/** Heading font-weight (e.g. '700'). */
|
|
21
|
+
headingWeight?: string;
|
|
22
|
+
/** Heading letter-spacing as a CSS length (e.g. '-0.025em'). */
|
|
23
|
+
headingLetterSpacing?: string;
|
|
24
|
+
/** Heading text-transform ('none' | 'uppercase'). */
|
|
25
|
+
headingTransform?: string;
|
|
20
26
|
}
|
|
21
27
|
export interface ThemePreset {
|
|
22
28
|
name: string;
|
|
@@ -38,6 +44,14 @@ export interface ThemePreset {
|
|
|
38
44
|
lightMode?: Record<string, string>;
|
|
39
45
|
darkMode?: Record<string, string>;
|
|
40
46
|
typography?: ThemeTypographyPreset;
|
|
47
|
+
visualEffects?: {
|
|
48
|
+
effectStyle?: 'flat' | 'elevated' | 'glass' | 'neumorphic' | 'clay';
|
|
49
|
+
shadowIntensity?: 'none' | 'subtle' | 'medium' | 'strong' | 'dramatic';
|
|
50
|
+
backdropBlur?: 'none' | 'slight' | 'medium' | 'strong' | 'heavy';
|
|
51
|
+
borderStyle?: 'none' | 'solid' | 'dashed' | 'dotted' | 'double';
|
|
52
|
+
borderWidth?: '0px' | '1px' | '2px' | '3px' | '4px';
|
|
53
|
+
glassOpacity?: number;
|
|
54
|
+
};
|
|
41
55
|
}
|
|
42
56
|
export declare const defaultThemePresets: ThemePreset[];
|
|
43
57
|
export declare const allThemePresets: ThemePreset[];
|
package/dist/presets.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE;QACX,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;IACD,aAAa,EAAE;QACb,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE;QACX,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;IACD,aAAa,EAAE;QACb,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;IACD,wCAAwC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,gEAAgE;IAChE,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAA;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,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;IACD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;IACrC,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAA;IACxC,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAA;IACtC,cAAc,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,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;CACF;AAED,eAAO,MAAM,mBAAmB,EAAE,WAAW,EAkkB5C,CAAA;AAGD,eAAO,MAAM,eAAe,EAAE,WAAW,EAAgD,CAAA"}
|
package/dist/presets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/presets.ts"],"sourcesContent":["// Import extended color themes\nimport { extendedThemes } from './extended-themes.js'\n\nexport 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\n// Export all theme presets (default + extended)\nexport const allThemePresets: ThemePreset[] = [...defaultThemePresets, ...extendedThemes]\n"],"names":["extendedThemes","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","allThemePresets"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/presets.ts"],"sourcesContent":["// Import extended color themes\nimport { extendedThemes } from './extended-themes.js'\n\nexport 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 /** Heading font-weight (e.g. '700'). */\n headingWeight?: string\n /** Heading letter-spacing as a CSS length (e.g. '-0.025em'). */\n headingLetterSpacing?: string\n /** Heading text-transform ('none' | 'uppercase'). */\n headingTransform?: string\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 visualEffects?: {\n effectStyle?: 'flat' | 'elevated' | 'glass' | 'neumorphic' | 'clay'\n shadowIntensity?: 'none' | 'subtle' | 'medium' | 'strong' | 'dramatic'\n backdropBlur?: 'none' | 'slight' | 'medium' | 'strong' | 'heavy'\n borderStyle?: 'none' | 'solid' | 'dashed' | 'dotted' | 'double'\n borderWidth?: '0px' | '1px' | '2px' | '3px' | '4px'\n glassOpacity?: number\n }\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\n// Export all theme presets (default + extended)\nexport const allThemePresets: ThemePreset[] = [...defaultThemePresets, ...extendedThemes]\n"],"names":["extendedThemes","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","allThemePresets"],"mappings":"AAAA,+BAA+B;AAC/B,SAASA,cAAc,QAAQ,uBAAsB;AA2DrD,OAAO,MAAMC,sBAAqC;IAChD;QACEC,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;QACAC,WAAW;YACTF,YAAY;YACZG,YAAY;YACZC,MAAM;YACNC,gBAAgB;YAChBC,SAAS;YACTC,mBAAmB;YACnBR,SAAS;YACTS,mBAAmB;YACnBC,WAAW;YACXC,qBAAqB;YACrBC,OAAO;YACPC,iBAAiB;YACjBX,QAAQ;YACRY,kBAAkB;YAClBC,aAAa;YACbC,uBAAuB;YACvBC,QAAQ;YACRC,OAAO;YACPC,MAAM;QACR;QACAC,UAAU;YACRnB,YAAY;YACZG,YAAY;YACZC,MAAM;YACNC,gBAAgB;YAChBC,SAAS;YACTC,mBAAmB;YACnBR,SAAS;YACTS,mBAAmB;YACnBC,WAAW;YACXC,qBAAqB;YACrBC,OAAO;YACPC,iBAAiB;YACjBX,QAAQ;YACRY,kBAAkB;YAClBC,aAAa;YACbC,uBAAuB;YACvBC,QAAQ;YACRC,OAAO;YACPC,MAAM;QACR;QACAE,YAAY;YACVC,YAAY;YACZC,eAAe;YACfC,cAAc;YACdC,YAAY;YACZC,aAAa;gBACXC,QAAQ;gBACRC,QAAQ;gBACRC,UAAU;gBACVC,MAAM;YACR;YACAC,eAAe;gBACbC,OAAO;gBACPL,QAAQ;gBACRM,MAAM;YACR;QACF;IACF;IACA;QACEtC,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;QACAC,WAAW;YACTF,YAAY;YACZG,YAAY;YACZC,MAAM;YACNC,gBAAgB;YAChBC,SAAS;YACTC,mBAAmB;YACnBR,SAAS;YACTS,mBAAmB;YACnBC,WAAW;YACXC,qBAAqB;YACrBC,OAAO;YACPC,iBAAiB;YACjBX,QAAQ;YACRY,kBAAkB;YAClBC,aAAa;YACbC,uBAAuB;YACvBC,QAAQ;YACRC,OAAO;YACPC,MAAM;QACR;QACAC,UAAU;YACRnB,YAAY;YACZG,YAAY;YACZC,MAAM;YACNC,gBAAgB;YAChBC,SAAS;YACTC,mBAAmB;YACnBR,SAAS;YACTS,mBAAmB;YACnBC,WAAW;YACXC,qBAAqB;YACrBC,OAAO;YACPC,iBAAiB;YACjBX,QAAQ;YACRY,kBAAkB;YAClBC,aAAa;YACbC,uBAAuB;YACvBC,QAAQ;YACRC,OAAO;YACPC,MAAM;QACR;QACAE,YAAY;YACVC,YAAY;YACZC,eAAe;YACfC,cAAc;YACdC,YAAY;YACZC,aAAa;gBACXC,QAAQ;gBACRC,QAAQ;gBACRC,UAAU;gBACVC,MAAM;YACR;YACAC,eAAe;gBACbC,OAAO;gBACPL,QAAQ;gBACRM,MAAM;YACR;QACF;IACF;IACA;QACEtC,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;QACAC,WAAW;YACTF,YAAY;YACZG,YAAY;YACZC,MAAM;YACNC,gBAAgB;YAChBC,SAAS;YACTC,mBAAmB;YACnBR,SAAS;YACTS,mBAAmB;YACnBC,WAAW;YACXC,qBAAqB;YACrBC,OAAO;YACPC,iBAAiB;YACjBX,QAAQ;YACRY,kBAAkB;YAClBC,aAAa;YACbC,uBAAuB;YACvBC,QAAQ;YACRC,OAAO;YACPC,MAAM;QACR;QACAC,UAAU;YACRnB,YAAY;YACZG,YAAY;YACZC,MAAM;YACNC,gBAAgB;YAChBC,SAAS;YACTC,mBAAmB;YACnBR,SAAS;YACTS,mBAAmB;YACnBC,WAAW;YACXC,qBAAqB;YACrBC,OAAO;YACPC,iBAAiB;YACjBX,QAAQ;YACRY,kBAAkB;YAClBC,aAAa;YACbC,uBAAuB;YACvBC,QAAQ;YACRC,OAAO;YACPC,MAAM;QACR;QACAE,YAAY;YACVC,YAAY;YACZC,eAAe;YACfC,cAAc;YACdC,YAAY;YACZC,aAAa;gBACXC,QAAQ;gBACRC,QAAQ;gBACRC,UAAU;gBACVC,MAAM;YACR;YACAC,eAAe;gBACbC,OAAO;gBACPL,QAAQ;gBACRM,MAAM;YACR;QACF;IACF;IACA;QACEtC,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;QACAC,WAAW;YACTF,YAAY;YACZG,YAAY;YACZC,MAAM;YACNC,gBAAgB;YAChBC,SAAS;YACTC,mBAAmB;YACnBR,SAAS;YACTS,mBAAmB;YACnBC,WAAW;YACXC,qBAAqB;YACrBC,OAAO;YACPC,iBAAiB;YACjBX,QAAQ;YACRY,kBAAkB;YAClBC,aAAa;YACbC,uBAAuB;YACvBC,QAAQ;YACRC,OAAO;YACPC,MAAM;QACR;QACAC,UAAU;YACRnB,YAAY;YACZG,YAAY;YACZC,MAAM;YACNC,gBAAgB;YAChBC,SAAS;YACTC,mBAAmB;YACnBR,SAAS;YACTS,mBAAmB;YACnBC,WAAW;YACXC,qBAAqB;YACrBC,OAAO;YACPC,iBAAiB;YACjBX,QAAQ;YACRY,kBAAkB;YAClBC,aAAa;YACbC,uBAAuB;YACvBC,QAAQ;YACRC,OAAO;YACPC,MAAM;QACR;QACAE,YAAY;YACVC,YAAY;YACZC,eAAe;YACfC,cAAc;YACdC,YAAY;YACZC,aAAa;gBACXC,QAAQ;gBACRC,QAAQ;gBACRC,UAAU;gBACVC,MAAM;YACR;YACAC,eAAe;gBACbC,OAAO;gBACPL,QAAQ;gBACRM,MAAM;YACR;QACF;IACF;IACA;QACEtC,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;QACAC,WAAW;YACTF,YAAY;YACZG,YAAY;YACZC,MAAM;YACNC,gBAAgB;YAChBC,SAAS;YACTC,mBAAmB;YACnBR,SAAS;YACTS,mBAAmB;YACnBC,WAAW;YACXC,qBAAqB;YACrBC,OAAO;YACPC,iBAAiB;YACjBX,QAAQ;YACRY,kBAAkB;YAClBC,aAAa;YACbC,uBAAuB;YACvBC,QAAQ;YACRC,OAAO;YACPC,MAAM;QACR;QACAC,UAAU;YACRnB,YAAY;YACZG,YAAY;YACZC,MAAM;YACNC,gBAAgB;YAChBC,SAAS;YACTC,mBAAmB;YACnBR,SAAS;YACTS,mBAAmB;YACnBC,WAAW;YACXC,qBAAqB;YACrBC,OAAO;YACPC,iBAAiB;YACjBX,QAAQ;YACRY,kBAAkB;YAClBC,aAAa;YACbC,uBAAuB;YACvBC,QAAQ;YACRC,OAAO;YACPC,MAAM;QACR;QACAE,YAAY;YACVC,YAAY;YACZC,eAAe;YACfC,cAAc;YACdC,YAAY;YACZC,aAAa;gBACXC,QAAQ;gBACRC,QAAQ;gBACRC,UAAU;gBACVC,MAAM;YACR;YACAC,eAAe;gBACbC,OAAO;gBACPL,QAAQ;gBACRM,MAAM;YACR;QACF;IACF;IACA;QACEtC,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;QACAC,WAAW;YACTF,YAAY;YACZG,YAAY;YACZC,MAAM;YACNC,gBAAgB;YAChBC,SAAS;YACTC,mBAAmB;YACnBR,SAAS;YACTS,mBAAmB;YACnBC,WAAW;YACXC,qBAAqB;YACrBC,OAAO;YACPC,iBAAiB;YACjBX,QAAQ;YACRY,kBAAkB;YAClBC,aAAa;YACbC,uBAAuB;YACvBC,QAAQ;YACRC,OAAO;YACPC,MAAM;QACR;QACAC,UAAU;YACRnB,YAAY;YACZG,YAAY;YACZC,MAAM;YACNC,gBAAgB;YAChBC,SAAS;YACTC,mBAAmB;YACnBR,SAAS;YACTS,mBAAmB;YACnBC,WAAW;YACXC,qBAAqB;YACrBC,OAAO;YACPC,iBAAiB;YACjBX,QAAQ;YACRY,kBAAkB;YAClBC,aAAa;YACbC,uBAAuB;YACvBC,QAAQ;YACRC,OAAO;YACPC,MAAM;QACR;QACAE,YAAY;YACVC,YAAY;YACZC,eAAe;YACfC,cAAc;YACdC,YAAY;YACZC,aAAa;gBACXQ,OAAO;gBACPP,QAAQ;gBACRC,QAAQ;gBACRC,UAAU;gBACVC,MAAM;gBACNK,OAAO;YACT;YACAJ,eAAe;gBACbC,OAAO;gBACPL,QAAQ;gBACRM,MAAM;gBACNG,OAAO;YACT;QACF;IACF;IACA;QACEzC,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;QACAC,WAAW;YACTF,YAAY;YACZG,YAAY;YACZC,MAAM;YACNC,gBAAgB;YAChBC,SAAS;YACTC,mBAAmB;YACnBR,SAAS;YACTS,mBAAmB;YACnBC,WAAW;YACXC,qBAAqB;YACrBC,OAAO;YACPC,iBAAiB;YACjBX,QAAQ;YACRY,kBAAkB;YAClBC,aAAa;YACbC,uBAAuB;YACvBC,QAAQ;YACRC,OAAO;YACPC,MAAM;QACR;QACAC,UAAU;YACRnB,YAAY;YACZG,YAAY;YACZC,MAAM;YACNC,gBAAgB;YAChBC,SAAS;YACTC,mBAAmB;YACnBR,SAAS;YACTS,mBAAmB;YACnBC,WAAW;YACXC,qBAAqB;YACrBC,OAAO;YACPC,iBAAiB;YACjBX,QAAQ;YACRY,kBAAkB;YAClBC,aAAa;YACbC,uBAAuB;YACvBC,QAAQ;YACRC,OAAO;YACPC,MAAM;QACR;QACAE,YAAY;YACVC,YAAY;YACZC,eAAe;YACfC,cAAc;YACdC,YAAY;YACZC,aAAa;gBACXQ,OAAO;gBACPP,QAAQ;gBACRC,QAAQ;gBACRC,UAAU;gBACVC,MAAM;gBACNK,OAAO;YACT;YACAJ,eAAe;gBACbC,OAAO;gBACPL,QAAQ;gBACRM,MAAM;gBACNG,OAAO;YACT;QACF;IACF;IACA;QACEzC,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;QACAC,WAAW;YACTF,YAAY;YACZG,YAAY;YACZC,MAAM;YACNC,gBAAgB;YAChBC,SAAS;YACTC,mBAAmB;YACnBR,SAAS;YACTS,mBAAmB;YACnBC,WAAW;YACXC,qBAAqB;YACrBC,OAAO;YACPC,iBAAiB;YACjBX,QAAQ;YACRY,kBAAkB;YAClBC,aAAa;YACbC,uBAAuB;YACvBC,QAAQ;YACRC,OAAO;YACPC,MAAM;QACR;QACAC,UAAU;YACRnB,YAAY;YACZG,YAAY;YACZC,MAAM;YACNC,gBAAgB;YAChBC,SAAS;YACTC,mBAAmB;YACnBR,SAAS;YACTS,mBAAmB;YACnBC,WAAW;YACXC,qBAAqB;YACrBC,OAAO;YACPC,iBAAiB;YACjBX,QAAQ;YACRY,kBAAkB;YAClBC,aAAa;YACbC,uBAAuB;YACvBC,QAAQ;YACRC,OAAO;YACPC,MAAM;QACR;QACAE,YAAY;YACVC,YAAY;YACZC,eAAe;YACfC,cAAc;YACdC,YAAY;YACZC,aAAa;gBACXQ,OAAO;gBACPP,QAAQ;gBACRC,QAAQ;gBACRC,UAAU;gBACVC,MAAM;gBACNK,OAAO;YACT;YACAJ,eAAe;gBACbC,OAAO;gBACPL,QAAQ;gBACRM,MAAM;gBACNG,OAAO;YACT;QACF;IACF;CACD,CAAA;AAED,gDAAgD;AAChD,OAAO,MAAMC,kBAAiC;OAAI3C;OAAwBD;CAAe,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Theme/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA+E,MAAM,OAAO,CAAA;AAEnG,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAIvE,eAAO,MAAM,QAAQ,QAAO,gBAM3B,CAAA;AAED,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Theme/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA+E,MAAM,OAAO,CAAA;AAEnG,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAIvE,eAAO,MAAM,QAAQ,QAAO,gBAM3B,CAAA;AAED,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA+ItD,CAAA"}
|
|
@@ -11,10 +11,10 @@ export const useTheme = ()=>{
|
|
|
11
11
|
return context;
|
|
12
12
|
};
|
|
13
13
|
export const ThemeProvider = ({ children, initialTheme, initialMode, allowColorModeToggle = true })=>{
|
|
14
|
-
//
|
|
14
|
+
// Light/dark mode state
|
|
15
15
|
const [mode, setMode] = useState(initialMode || defaultMode);
|
|
16
16
|
const [theme] = useState(initialTheme || null);
|
|
17
|
-
//
|
|
17
|
+
// Resolve the effective mode: "auto" maps to the system preference
|
|
18
18
|
const getResolvedMode = useCallback((currentMode)=>{
|
|
19
19
|
if (currentMode === 'auto' && typeof window !== 'undefined') {
|
|
20
20
|
const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
|
|
@@ -22,13 +22,13 @@ export const ThemeProvider = ({ children, initialTheme, initialMode, allowColorM
|
|
|
22
22
|
}
|
|
23
23
|
return currentMode === 'dark' ? 'dark' : 'light';
|
|
24
24
|
}, []);
|
|
25
|
-
//
|
|
25
|
+
// Apply color mode to DOM attributes and CSS variables
|
|
26
26
|
const applyMode = useCallback((currentMode)=>{
|
|
27
27
|
if (typeof window !== 'undefined') {
|
|
28
28
|
const resolvedMode = getResolvedMode(currentMode);
|
|
29
|
-
//
|
|
29
|
+
// Read current theme from DOM or fall back to default
|
|
30
30
|
const currentTheme = document.documentElement.getAttribute('data-theme') || (typeof theme === 'string' ? theme : 'cool');
|
|
31
|
-
//
|
|
31
|
+
// Set data attributes and classes (compatible with CSS selectors)
|
|
32
32
|
document.documentElement.setAttribute('data-color-mode', resolvedMode);
|
|
33
33
|
document.documentElement.setAttribute('data-theme-mode', resolvedMode);
|
|
34
34
|
document.documentElement.setAttribute('data-theme', currentTheme);
|
|
@@ -36,6 +36,70 @@ export const ThemeProvider = ({ children, initialTheme, initialMode, allowColorM
|
|
|
36
36
|
document.documentElement.classList.add(resolvedMode);
|
|
37
37
|
// Force re-computation of CSS custom properties
|
|
38
38
|
document.documentElement.style.setProperty('--color-mode', resolvedMode);
|
|
39
|
+
// Synchronise data attributes for effect/component styles from CSS vars
|
|
40
|
+
// (set by ServerThemeInjector; this ensures client hydration matches SSR).
|
|
41
|
+
// Each entry maps a CSS custom property to the data attribute that the
|
|
42
|
+
// generated CSS selectors target. Attributes are only set when the var
|
|
43
|
+
// has a value, so we never clobber server-rendered attributes with empties.
|
|
44
|
+
const computedStyle = getComputedStyle(document.documentElement);
|
|
45
|
+
const cssVarToAttr = [
|
|
46
|
+
[
|
|
47
|
+
'--effect-style',
|
|
48
|
+
'data-effect-style'
|
|
49
|
+
],
|
|
50
|
+
[
|
|
51
|
+
'--shadow-intensity',
|
|
52
|
+
'data-shadow-intensity'
|
|
53
|
+
],
|
|
54
|
+
[
|
|
55
|
+
'--backdrop-blur-level',
|
|
56
|
+
'data-backdrop-blur'
|
|
57
|
+
],
|
|
58
|
+
[
|
|
59
|
+
'--border-style',
|
|
60
|
+
'data-border-style'
|
|
61
|
+
],
|
|
62
|
+
[
|
|
63
|
+
'--border-width',
|
|
64
|
+
'data-border-width'
|
|
65
|
+
],
|
|
66
|
+
[
|
|
67
|
+
'--card-style',
|
|
68
|
+
'data-card-style'
|
|
69
|
+
],
|
|
70
|
+
[
|
|
71
|
+
'--card-hover-effect',
|
|
72
|
+
'data-card-hover'
|
|
73
|
+
],
|
|
74
|
+
[
|
|
75
|
+
'--button-variant',
|
|
76
|
+
'data-button-variant'
|
|
77
|
+
],
|
|
78
|
+
[
|
|
79
|
+
'--button-size',
|
|
80
|
+
'data-button-size'
|
|
81
|
+
],
|
|
82
|
+
[
|
|
83
|
+
'--navbar-style',
|
|
84
|
+
'data-navbar-style'
|
|
85
|
+
],
|
|
86
|
+
[
|
|
87
|
+
'--footer-style',
|
|
88
|
+
'data-footer-style'
|
|
89
|
+
],
|
|
90
|
+
[
|
|
91
|
+
'--image-style',
|
|
92
|
+
'data-image-style'
|
|
93
|
+
],
|
|
94
|
+
[
|
|
95
|
+
'--link-style',
|
|
96
|
+
'data-link-style'
|
|
97
|
+
]
|
|
98
|
+
];
|
|
99
|
+
for (const [cssVar, attr] of cssVarToAttr){
|
|
100
|
+
const value = computedStyle.getPropertyValue(cssVar).trim();
|
|
101
|
+
if (value) document.documentElement.setAttribute(attr, value);
|
|
102
|
+
}
|
|
39
103
|
// Force repaint to ensure CSS variables update
|
|
40
104
|
// eslint-disable-next-line @typescript-eslint/no-unused-expressions
|
|
41
105
|
document.documentElement.offsetHeight;
|
|
@@ -52,7 +116,7 @@ export const ThemeProvider = ({ children, initialTheme, initialMode, allowColorM
|
|
|
52
116
|
getResolvedMode,
|
|
53
117
|
theme
|
|
54
118
|
]);
|
|
55
|
-
//
|
|
119
|
+
// Persist the selected mode to localStorage and apply it to the DOM
|
|
56
120
|
const updateMode = useCallback((newMode)=>{
|
|
57
121
|
setMode(newMode);
|
|
58
122
|
if (newMode && typeof window !== 'undefined') {
|
|
@@ -62,7 +126,7 @@ export const ThemeProvider = ({ children, initialTheme, initialMode, allowColorM
|
|
|
62
126
|
}, [
|
|
63
127
|
applyMode
|
|
64
128
|
]);
|
|
65
|
-
//
|
|
129
|
+
// Restore mode from localStorage on mount
|
|
66
130
|
useEffect(()=>{
|
|
67
131
|
if (typeof window !== 'undefined') {
|
|
68
132
|
const storedMode = localStorage.getItem(modeLocalStorageKey);
|
|
@@ -74,19 +138,19 @@ export const ThemeProvider = ({ children, initialTheme, initialMode, allowColorM
|
|
|
74
138
|
setMode(storedMode);
|
|
75
139
|
applyMode(storedMode);
|
|
76
140
|
} else {
|
|
77
|
-
//
|
|
141
|
+
// Fall back to the default mode
|
|
78
142
|
applyMode(defaultMode);
|
|
79
143
|
}
|
|
80
144
|
}
|
|
81
145
|
}, [
|
|
82
146
|
applyMode
|
|
83
147
|
]);
|
|
84
|
-
//
|
|
148
|
+
// Listen for system color-scheme changes (only relevant when mode === 'auto')
|
|
85
149
|
useEffect(()=>{
|
|
86
150
|
if (mode === 'auto' && typeof window !== 'undefined') {
|
|
87
151
|
const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
|
|
88
152
|
const handleChange = ()=>{
|
|
89
|
-
applyMode('auto'); // Re-
|
|
153
|
+
applyMode('auto'); // Re-evaluate auto mode against current system preference
|
|
90
154
|
};
|
|
91
155
|
mediaQuery.addEventListener('change', handleChange);
|
|
92
156
|
return ()=>{
|
|
@@ -98,7 +162,7 @@ export const ThemeProvider = ({ children, initialTheme, initialMode, allowColorM
|
|
|
98
162
|
applyMode
|
|
99
163
|
]);
|
|
100
164
|
const refreshTheme = useCallback(()=>{
|
|
101
|
-
//
|
|
165
|
+
// Re-apply the current mode (e.g. after external DOM changes)
|
|
102
166
|
applyMode(mode);
|
|
103
167
|
}, [
|
|
104
168
|
mode,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/providers/Theme/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react'\nimport { defaultMode, modeLocalStorageKey } from './shared.js'\nimport type { Mode, ThemeContextType, ThemeDefaults } from './types.js'\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined)\n\nexport const useTheme = (): ThemeContextType => {\n const context = useContext(ThemeContext)\n if (!context) {\n throw new Error('useTheme must be used within a ThemeProvider')\n }\n return context\n}\n\ninterface ThemeProviderProps {\n children: React.ReactNode\n initialTheme?: ThemeDefaults\n initialMode?: Mode\n allowColorModeToggle?: boolean\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n children,\n initialTheme,\n initialMode,\n allowColorModeToggle = true,\n}) => {\n // State pro light/dark mode switching\n const [mode, setMode] = useState<Mode | null>(initialMode || defaultMode)\n const [theme] = useState<ThemeDefaults | null>(initialTheme || null)\n\n // Funkce pro získání skutečného módu (resolve \"auto\" mode)\n const getResolvedMode = useCallback((currentMode: Mode | null): 'light' | 'dark' => {\n if (currentMode === 'auto' && typeof window !== 'undefined') {\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n return mediaQuery.matches ? 'dark' : 'light'\n }\n return currentMode === 'dark' ? 'dark' : 'light'\n }, [])\n\n // Aplikace módu na DOM a CSS variables\n const applyMode = useCallback(\n (currentMode: Mode | null) => {\n if (typeof window !== 'undefined') {\n const resolvedMode = getResolvedMode(currentMode)\n\n // Získej aktuální theme z DOM nebo použij fallback\n const currentTheme =\n document.documentElement.getAttribute('data-theme') ||\n (typeof theme === 'string' ? theme : 'cool')\n\n // Aplikuj data atributy a třídy (kompatibilní s CSS selektory)\n document.documentElement.setAttribute('data-color-mode', resolvedMode)\n document.documentElement.setAttribute('data-theme-mode', resolvedMode)\n document.documentElement.setAttribute('data-theme', currentTheme)\n document.documentElement.classList.remove('light', 'dark', 'auto')\n document.documentElement.classList.add(resolvedMode)\n\n // Force re-computation of CSS custom properties\n document.documentElement.style.setProperty('--color-mode', resolvedMode)\n\n // Force repaint to ensure CSS variables update\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n document.documentElement.offsetHeight\n\n // Dispatch custom event for components that need to react to theme changes\n window.dispatchEvent(\n new CustomEvent('themeChange', {\n detail: { mode: resolvedMode, originalMode: currentMode, theme: currentTheme },\n }),\n )\n }\n },\n [getResolvedMode, theme],\n )\n\n // Uložení light/dark mode do localStorage a aplikace\n const updateMode = useCallback(\n (newMode: Mode | null) => {\n setMode(newMode)\n if (newMode && typeof window !== 'undefined') {\n localStorage.setItem(modeLocalStorageKey, newMode)\n applyMode(newMode)\n }\n },\n [applyMode],\n )\n\n // Načtení mode z localStorage při startu\n useEffect(() => {\n if (typeof window !== 'undefined') {\n const storedMode = localStorage.getItem(modeLocalStorageKey) as Mode | null\n if (storedMode && ['light', 'dark', 'auto'].includes(storedMode)) {\n setMode(storedMode)\n applyMode(storedMode)\n } else {\n // Fallback na default mode\n applyMode(defaultMode)\n }\n }\n }, [applyMode])\n\n // Listener pro změny system preference (pouze při auto mode)\n useEffect(() => {\n if (mode === 'auto' && typeof window !== 'undefined') {\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n\n const handleChange = () => {\n applyMode('auto') // Re-resolve auto mode\n }\n\n mediaQuery.addEventListener('change', handleChange)\n\n return () => {\n mediaQuery.removeEventListener('change', handleChange)\n }\n }\n }, [mode, applyMode])\n\n const refreshTheme = useCallback(() => {\n // Refresh theme - aplikuj aktuální mode\n applyMode(mode)\n }, [mode, applyMode])\n\n const contextValue = useMemo(\n () => ({\n theme,\n mode,\n setTheme: () => {}, // Nepoužíváme - theme se nastavuje přes SSR\n setMode: updateMode,\n isColorModeToggleAllowed: allowColorModeToggle,\n refreshTheme,\n }),\n [theme, mode, updateMode, allowColorModeToggle, refreshTheme],\n )\n\n return <ThemeContext.Provider value={contextValue}>{children}</ThemeContext.Provider>\n}\n"],"names":["React","createContext","useCallback","useContext","useEffect","useMemo","useState","defaultMode","modeLocalStorageKey","ThemeContext","undefined","useTheme","context","Error","ThemeProvider","children","initialTheme","initialMode","allowColorModeToggle","mode","setMode","theme","getResolvedMode","currentMode","window","mediaQuery","matchMedia","matches","applyMode","resolvedMode","currentTheme","document","documentElement","getAttribute","setAttribute","classList","remove","add","style","setProperty","offsetHeight","dispatchEvent","CustomEvent","detail","originalMode","updateMode","newMode","localStorage","setItem","storedMode","getItem","includes","handleChange","addEventListener","removeEventListener","refreshTheme","contextValue","setTheme","isColorModeToggleAllowed","Provider","value"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/providers/Theme/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react'\nimport { defaultMode, modeLocalStorageKey } from './shared.js'\nimport type { Mode, ThemeContextType, ThemeDefaults } from './types.js'\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined)\n\nexport const useTheme = (): ThemeContextType => {\n const context = useContext(ThemeContext)\n if (!context) {\n throw new Error('useTheme must be used within a ThemeProvider')\n }\n return context\n}\n\ninterface ThemeProviderProps {\n children: React.ReactNode\n initialTheme?: ThemeDefaults\n initialMode?: Mode\n allowColorModeToggle?: boolean\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n children,\n initialTheme,\n initialMode,\n allowColorModeToggle = true,\n}) => {\n // Light/dark mode state\n const [mode, setMode] = useState<Mode | null>(initialMode || defaultMode)\n const [theme] = useState<ThemeDefaults | null>(initialTheme || null)\n\n // Resolve the effective mode: \"auto\" maps to the system preference\n const getResolvedMode = useCallback((currentMode: Mode | null): 'light' | 'dark' => {\n if (currentMode === 'auto' && typeof window !== 'undefined') {\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n return mediaQuery.matches ? 'dark' : 'light'\n }\n return currentMode === 'dark' ? 'dark' : 'light'\n }, [])\n\n // Apply color mode to DOM attributes and CSS variables\n const applyMode = useCallback(\n (currentMode: Mode | null) => {\n if (typeof window !== 'undefined') {\n const resolvedMode = getResolvedMode(currentMode)\n\n // Read current theme from DOM or fall back to default\n const currentTheme =\n document.documentElement.getAttribute('data-theme') ||\n (typeof theme === 'string' ? theme : 'cool')\n\n // Set data attributes and classes (compatible with CSS selectors)\n document.documentElement.setAttribute('data-color-mode', resolvedMode)\n document.documentElement.setAttribute('data-theme-mode', resolvedMode)\n document.documentElement.setAttribute('data-theme', currentTheme)\n document.documentElement.classList.remove('light', 'dark', 'auto')\n document.documentElement.classList.add(resolvedMode)\n\n // Force re-computation of CSS custom properties\n document.documentElement.style.setProperty('--color-mode', resolvedMode)\n\n // Synchronise data attributes for effect/component styles from CSS vars\n // (set by ServerThemeInjector; this ensures client hydration matches SSR).\n // Each entry maps a CSS custom property to the data attribute that the\n // generated CSS selectors target. Attributes are only set when the var\n // has a value, so we never clobber server-rendered attributes with empties.\n const computedStyle = getComputedStyle(document.documentElement)\n const cssVarToAttr: Array<[cssVar: string, attr: string]> = [\n ['--effect-style', 'data-effect-style'],\n ['--shadow-intensity', 'data-shadow-intensity'],\n ['--backdrop-blur-level', 'data-backdrop-blur'],\n ['--border-style', 'data-border-style'],\n ['--border-width', 'data-border-width'],\n ['--card-style', 'data-card-style'],\n ['--card-hover-effect', 'data-card-hover'],\n ['--button-variant', 'data-button-variant'],\n ['--button-size', 'data-button-size'],\n ['--navbar-style', 'data-navbar-style'],\n ['--footer-style', 'data-footer-style'],\n ['--image-style', 'data-image-style'],\n ['--link-style', 'data-link-style'],\n ]\n\n for (const [cssVar, attr] of cssVarToAttr) {\n const value = computedStyle.getPropertyValue(cssVar).trim()\n if (value) document.documentElement.setAttribute(attr, value)\n }\n\n // Force repaint to ensure CSS variables update\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n document.documentElement.offsetHeight\n\n // Dispatch custom event for components that need to react to theme changes\n window.dispatchEvent(\n new CustomEvent('themeChange', {\n detail: { mode: resolvedMode, originalMode: currentMode, theme: currentTheme },\n }),\n )\n }\n },\n [getResolvedMode, theme],\n )\n\n // Persist the selected mode to localStorage and apply it to the DOM\n const updateMode = useCallback(\n (newMode: Mode | null) => {\n setMode(newMode)\n if (newMode && typeof window !== 'undefined') {\n localStorage.setItem(modeLocalStorageKey, newMode)\n applyMode(newMode)\n }\n },\n [applyMode],\n )\n\n // Restore mode from localStorage on mount\n useEffect(() => {\n if (typeof window !== 'undefined') {\n const storedMode = localStorage.getItem(modeLocalStorageKey) as Mode | null\n if (storedMode && ['light', 'dark', 'auto'].includes(storedMode)) {\n setMode(storedMode)\n applyMode(storedMode)\n } else {\n // Fall back to the default mode\n applyMode(defaultMode)\n }\n }\n }, [applyMode])\n\n // Listen for system color-scheme changes (only relevant when mode === 'auto')\n useEffect(() => {\n if (mode === 'auto' && typeof window !== 'undefined') {\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n\n const handleChange = () => {\n applyMode('auto') // Re-evaluate auto mode against current system preference\n }\n\n mediaQuery.addEventListener('change', handleChange)\n\n return () => {\n mediaQuery.removeEventListener('change', handleChange)\n }\n }\n }, [mode, applyMode])\n\n const refreshTheme = useCallback(() => {\n // Re-apply the current mode (e.g. after external DOM changes)\n applyMode(mode)\n }, [mode, applyMode])\n\n const contextValue = useMemo(\n () => ({\n theme,\n mode,\n setTheme: () => {}, // Theme is set via SSR; client-side mutation is intentionally a no-op\n setMode: updateMode,\n isColorModeToggleAllowed: allowColorModeToggle,\n refreshTheme,\n }),\n [theme, mode, updateMode, allowColorModeToggle, refreshTheme],\n )\n\n return <ThemeContext.Provider value={contextValue}>{children}</ThemeContext.Provider>\n}\n"],"names":["React","createContext","useCallback","useContext","useEffect","useMemo","useState","defaultMode","modeLocalStorageKey","ThemeContext","undefined","useTheme","context","Error","ThemeProvider","children","initialTheme","initialMode","allowColorModeToggle","mode","setMode","theme","getResolvedMode","currentMode","window","mediaQuery","matchMedia","matches","applyMode","resolvedMode","currentTheme","document","documentElement","getAttribute","setAttribute","classList","remove","add","style","setProperty","computedStyle","getComputedStyle","cssVarToAttr","cssVar","attr","value","getPropertyValue","trim","offsetHeight","dispatchEvent","CustomEvent","detail","originalMode","updateMode","newMode","localStorage","setItem","storedMode","getItem","includes","handleChange","addEventListener","removeEventListener","refreshTheme","contextValue","setTheme","isColorModeToggleAllowed","Provider"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"themeConfig.d.ts","sourceRoot":"","sources":["../../../src/providers/Theme/themeConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE5D,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,aAAa,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"themeConfig.d.ts","sourceRoot":"","sources":["../../../src/providers/Theme/themeConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE5D,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,aAAa,EAAE,WAAW,CAyc3D,CAAA;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6DtB,CAAA;AAEV,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,WAAW,CAEhE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,OAAO,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE7E"}
|