@kilivi/payloadcms-theme-management 1.1.2 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +318 -847
- package/dist/components/AppearanceSessionControls.d.ts +15 -0
- package/dist/components/AppearanceSessionControls.d.ts.map +1 -0
- package/dist/components/AppearanceSessionControls.js +152 -0
- package/dist/components/AppearanceSessionControls.js.map +1 -0
- package/dist/components/ColorModeToggle.css +42 -0
- package/dist/components/ColorModeToggle.d.ts +40 -0
- package/dist/components/ColorModeToggle.d.ts.map +1 -0
- package/dist/components/ColorModeToggle.js +111 -0
- package/dist/components/ColorModeToggle.js.map +1 -0
- package/dist/components/ServerThemeInjector.d.ts.map +1 -1
- package/dist/components/ServerThemeInjector.js +41 -14
- package/dist/components/ServerThemeInjector.js.map +1 -1
- package/dist/components/ThemeLivePreviewSync.d.ts +1 -0
- package/dist/components/ThemeLivePreviewSync.d.ts.map +1 -1
- package/dist/components/ThemeLivePreviewSync.js +1 -1
- package/dist/components/ThemeLivePreviewSync.js.map +1 -1
- package/dist/components/ThemeSwitcher.d.ts +36 -0
- package/dist/components/ThemeSwitcher.d.ts.map +1 -0
- package/dist/components/ThemeSwitcher.js +89 -0
- package/dist/components/ThemeSwitcher.js.map +1 -0
- package/dist/components/typographyPreviewUtils.d.ts.map +1 -1
- package/dist/components/typographyPreviewUtils.js +8 -1
- package/dist/components/typographyPreviewUtils.js.map +1 -1
- package/dist/constants/devicePreviews.d.ts +35 -0
- package/dist/constants/devicePreviews.d.ts.map +1 -0
- package/dist/constants/devicePreviews.js +43 -0
- package/dist/constants/devicePreviews.js.map +1 -0
- package/dist/constants/themeFonts.js +9 -9
- package/dist/constants/themeFonts.js.map +1 -1
- package/dist/extended-presets.d.ts +0 -4
- package/dist/extended-presets.d.ts.map +1 -1
- package/dist/extended-presets.js +1 -18
- package/dist/extended-presets.js.map +1 -1
- package/dist/extended-themes.d.ts.map +1 -1
- package/dist/extended-themes.js +428 -0
- package/dist/extended-themes.js.map +1 -1
- package/dist/fields/AccessibilityAuditField.d.ts +2 -0
- package/dist/fields/AccessibilityAuditField.d.ts.map +1 -0
- package/dist/fields/AccessibilityAuditField.js +303 -0
- package/dist/fields/AccessibilityAuditField.js.map +1 -0
- package/dist/fields/AppearancePreviewField.d.ts +2 -0
- package/dist/fields/AppearancePreviewField.d.ts.map +1 -0
- package/dist/fields/AppearancePreviewField.js +763 -0
- package/dist/fields/AppearancePreviewField.js.map +1 -0
- package/dist/fields/ColorPickerField.d.ts.map +1 -1
- package/dist/fields/ColorPickerField.js +89 -85
- package/dist/fields/ColorPickerField.js.map +1 -1
- package/dist/fields/FontSelectField.d.ts +6 -0
- package/dist/fields/FontSelectField.d.ts.map +1 -1
- package/dist/fields/FontSelectField.js +195 -122
- package/dist/fields/FontSelectField.js.map +1 -1
- package/dist/fields/PaletteGeneratorField.d.ts +7 -0
- package/dist/fields/PaletteGeneratorField.d.ts.map +1 -0
- package/dist/fields/PaletteGeneratorField.js +327 -0
- package/dist/fields/PaletteGeneratorField.js.map +1 -0
- package/dist/fields/StylePresetField.d.ts +3 -0
- package/dist/fields/StylePresetField.d.ts.map +1 -0
- package/dist/fields/StylePresetField.js +462 -0
- package/dist/fields/StylePresetField.js.map +1 -0
- package/dist/fields/ThemeColorPickerField.css +115 -35
- package/dist/fields/ThemeColorPickerField.d.ts.map +1 -1
- package/dist/fields/ThemeColorPickerField.js +204 -70
- package/dist/fields/ThemeColorPickerField.js.map +1 -1
- package/dist/fields/ThemeExportField.d.ts +6 -0
- package/dist/fields/ThemeExportField.d.ts.map +1 -0
- package/dist/fields/ThemeExportField.js +202 -0
- package/dist/fields/ThemeExportField.js.map +1 -0
- package/dist/fields/ThemePresetImportField.d.ts.map +1 -1
- package/dist/fields/ThemePresetImportField.js +56 -25
- package/dist/fields/ThemePresetImportField.js.map +1 -1
- package/dist/fields/ThemePreviewField.css +382 -5
- package/dist/fields/ThemePreviewField.d.ts.map +1 -1
- package/dist/fields/ThemePreviewField.js +268 -170
- package/dist/fields/ThemePreviewField.js.map +1 -1
- package/dist/fields/ThemeTokenSelectField.d.ts.map +1 -1
- package/dist/fields/ThemeTokenSelectField.js +278 -80
- package/dist/fields/ThemeTokenSelectField.js.map +1 -1
- package/dist/fields/colorFieldHelpers.d.ts +90 -0
- package/dist/fields/colorFieldHelpers.d.ts.map +1 -0
- package/dist/fields/colorFieldHelpers.js +133 -0
- package/dist/fields/colorFieldHelpers.js.map +1 -0
- package/dist/fields/colorModeFields.d.ts +1 -1
- package/dist/fields/colorModeFields.d.ts.map +1 -1
- package/dist/fields/colorModeFields.js +49 -7
- package/dist/fields/colorModeFields.js.map +1 -1
- package/dist/fields/themeConfigurationField.d.ts +8 -1
- package/dist/fields/themeConfigurationField.d.ts.map +1 -1
- package/dist/fields/themeConfigurationField.js +961 -29
- package/dist/fields/themeConfigurationField.js.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/FontPreview.d.ts.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/FontPreview.js +8 -4
- package/dist/globals/ThemeSettings/FontPicker/FontPreview.js.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/index.d.ts.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/index.js +81 -26
- package/dist/globals/ThemeSettings/FontPicker/index.js.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/styles.css +98 -41
- package/dist/globals/ThemeSettings/FontPicker/translations.d.ts +6 -0
- package/dist/globals/ThemeSettings/FontPicker/translations.d.ts.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/translations.js +14 -2
- package/dist/globals/ThemeSettings/FontPicker/translations.js.map +1 -1
- package/dist/globals/ThemeSettings/config.d.ts.map +1 -1
- package/dist/globals/ThemeSettings/config.js +76 -79
- package/dist/globals/ThemeSettings/config.js.map +1 -1
- package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.d.ts.map +1 -1
- package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.js +63 -62
- package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.js.map +1 -1
- package/dist/globals/ThemeSettings/fields/TypographyInfoField.d.ts.map +1 -1
- package/dist/globals/ThemeSettings/fields/TypographyInfoField.js +22 -25
- package/dist/globals/ThemeSettings/fields/TypographyInfoField.js.map +1 -1
- package/dist/hooks/useAppearanceSession.d.ts +50 -0
- package/dist/hooks/useAppearanceSession.d.ts.map +1 -0
- package/dist/hooks/useAppearanceSession.js +91 -0
- package/dist/hooks/useAppearanceSession.js.map +1 -0
- package/dist/hooks/useThemeTranslations.d.ts +13 -0
- package/dist/hooks/useThemeTranslations.d.ts.map +1 -0
- package/dist/hooks/useThemeTranslations.js +22 -0
- package/dist/hooks/useThemeTranslations.js.map +1 -0
- package/dist/i18n.d.ts +53 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +53 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +10 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +130 -32
- package/dist/index.js.map +1 -1
- package/dist/payload-types.d.ts +24 -0
- package/dist/payload-types.d.ts.map +1 -1
- package/dist/payload-types.js.map +1 -1
- package/dist/presets.d.ts +8 -0
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js.map +1 -1
- package/dist/providers/Theme/index.d.ts.map +1 -1
- package/dist/providers/Theme/index.js +75 -11
- package/dist/providers/Theme/index.js.map +1 -1
- package/dist/providers/Theme/themeConfig.d.ts.map +1 -1
- package/dist/providers/Theme/themeConfig.js +104 -0
- package/dist/providers/Theme/themeConfig.js.map +1 -1
- package/dist/providers/Theme/types.d.ts +1 -1
- package/dist/providers/Theme/types.d.ts.map +1 -1
- package/dist/providers/Theme/types.js +10 -1
- package/dist/providers/Theme/types.js.map +1 -1
- package/dist/style-presets.d.ts +66 -0
- package/dist/style-presets.d.ts.map +1 -0
- package/dist/style-presets.js +556 -0
- package/dist/style-presets.js.map +1 -0
- package/dist/translations.d.ts +159 -1
- package/dist/translations.d.ts.map +1 -1
- package/dist/translations.js +310 -9
- package/dist/translations.js.map +1 -1
- package/dist/tweakcn-special-themes.d.ts.map +1 -1
- package/dist/tweakcn-special-themes.js +585 -9
- package/dist/tweakcn-special-themes.js.map +1 -1
- package/dist/types/css.d.js +3 -0
- package/dist/types/css.d.js.map +1 -0
- package/dist/types.d.ts +30 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utilities/getThemeSettings.d.ts.map +1 -1
- package/dist/utilities/getThemeSettings.js +2 -14
- package/dist/utilities/getThemeSettings.js.map +1 -1
- package/dist/utils/contrast.d.ts +63 -0
- package/dist/utils/contrast.d.ts.map +1 -0
- package/dist/utils/contrast.js +158 -0
- package/dist/utils/contrast.js.map +1 -0
- package/dist/utils/exportTokens.d.ts +30 -0
- package/dist/utils/exportTokens.d.ts.map +1 -0
- package/dist/utils/exportTokens.js +183 -0
- package/dist/utils/exportTokens.js.map +1 -0
- package/dist/utils/generatePalette.d.ts +46 -0
- package/dist/utils/generatePalette.d.ts.map +1 -0
- package/dist/utils/generatePalette.js +127 -0
- package/dist/utils/generatePalette.js.map +1 -0
- package/dist/utils/generateThemeCSS.d.ts.map +1 -1
- package/dist/utils/generateThemeCSS.js +2 -40
- package/dist/utils/generateThemeCSS.js.map +1 -1
- package/dist/utils/livePreviewThemeRuntime.d.ts +16 -2
- package/dist/utils/livePreviewThemeRuntime.d.ts.map +1 -1
- package/dist/utils/livePreviewThemeRuntime.js +37 -14
- package/dist/utils/livePreviewThemeRuntime.js.map +1 -1
- package/dist/utils/localizedText.d.ts +8 -0
- package/dist/utils/localizedText.d.ts.map +1 -0
- package/dist/utils/localizedText.js +21 -0
- package/dist/utils/localizedText.js.map +1 -0
- package/dist/utils/resolveThemeConfiguration.d.ts +45 -1
- package/dist/utils/resolveThemeConfiguration.d.ts.map +1 -1
- package/dist/utils/resolveThemeConfiguration.js +12 -5
- package/dist/utils/resolveThemeConfiguration.js.map +1 -1
- package/dist/utils/themeColors.d.ts +3 -0
- package/dist/utils/themeColors.d.ts.map +1 -1
- package/dist/utils/themeColors.js +30 -1
- package/dist/utils/themeColors.js.map +1 -1
- package/dist/utils/themeHtmlAttributes.d.ts +32 -12
- package/dist/utils/themeHtmlAttributes.d.ts.map +1 -1
- package/dist/utils/themeHtmlAttributes.js +38 -5
- package/dist/utils/themeHtmlAttributes.js.map +1 -1
- package/dist/utils/themeUtils.d.ts +3 -5
- package/dist/utils/themeUtils.d.ts.map +1 -1
- package/dist/utils/themeUtils.js +416 -6
- package/dist/utils/themeUtils.js.map +1 -1
- package/dist/utils/tweakcnConverter.d.ts +1 -3
- package/dist/utils/tweakcnConverter.d.ts.map +1 -1
- package/dist/utils/tweakcnConverter.js +1 -3
- package/dist/utils/tweakcnConverter.js.map +1 -1
- package/package.json +11 -5
- package/dist/components/ThemePreview.d.ts +0 -3
- package/dist/components/ThemePreview.d.ts.map +0 -1
- package/dist/components/ThemePreview.js +0 -321
- package/dist/components/ThemePreview.js.map +0 -1
- package/dist/plugin.d.ts +0 -2
- package/dist/plugin.d.ts.map +0 -1
- package/dist/plugin.js +0 -3
- package/dist/plugin.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/fields/ThemePreviewField.tsx"],"sourcesContent":["'use client'\n\nimport './ThemePreviewField.css'\nimport { useField, useForm, useFormFields } from '@payloadcms/ui'\nimport type { SelectFieldClientProps } from 'payload'\nimport { useCallback, useEffect, useMemo, useRef } from 'react'\nimport type {\n ResolvedTypographyPreview,\n TypographySelection,\n} from '../components/typographyPreviewUtils.js'\nimport { resolveTypographyPreview } from '../components/typographyPreviewUtils.js'\nimport { allThemePresets } from '../index.js'\nimport type { ThemePreset, ThemeTypographyPreset } from '../presets.js'\nimport { borderRadiusPresets } from '../providers/Theme/themeConfig.js'\nimport { getTranslations } from '../translations.js'\nimport { getAdminLanguage } from '../utils/getAdminLanguage.js'\nimport { darkModeDefaults, lightModeDefaults } from './colorModeFields.js'\n\ninterface ColorModeColors {\n background?: string\n foreground?: string\n card?: string\n cardForeground?: string\n popover?: string\n popoverForeground?: string\n primary?: string\n primaryForeground?: string\n secondary?: string\n secondaryForeground?: string\n muted?: string\n mutedForeground?: string\n accent?: string\n accentForeground?: string\n destructive?: string\n destructiveForeground?: string\n border?: string\n input?: string\n ring?: string\n}\n\ninterface ThemePresetDefinition {\n label: string\n lightMode: ColorModeColors\n darkMode: ColorModeColors\n typography?: ThemeTypographyPreset\n borderRadius: 'none' | 'small' | 'medium' | 'large' | 'xl'\n}\n\n// FALLBACK_THEME and runtime theme presets are computed inside the component\n\nconst colorKeys = Object.keys(lightModeDefaults) as (keyof ColorModeColors)[]\n\n// translations and swatches will be computed inside the component to respect admin language at runtime\n\ninterface ModePreviewProps {\n icon: string\n title: string\n colors: ColorModeColors\n typography: ResolvedTypographyPreview\n radius: {\n card: string\n chip: string\n pill: string\n }\n}\n\nfunction ModePreview({ icon, title, colors, typography, radius }: Readonly<ModePreviewProps>) {\n const t = getTranslations(getAdminLanguage())\n const background = colors.background ?? '#ffffff'\n const foreground = colors.foreground ?? '#0a0a0a'\n const borderColor = colors.border ?? 'rgba(148, 163, 184, 0.35)'\n const cardBackground = colors.card ?? background\n const cardForeground = colors.cardForeground ?? foreground\n const primary = colors.primary ?? foreground\n const primaryForeground = colors.primaryForeground ?? background\n const secondary = colors.secondary ?? '#f4f4f5'\n const secondaryForeground = colors.secondaryForeground ?? foreground\n const muted = colors.muted ?? secondary\n const mutedForeground = colors.mutedForeground ?? secondaryForeground\n const accent = colors.accent ?? secondary\n const accentForeground = colors.accentForeground ?? secondaryForeground\n const headingFont = typography.headingFont\n const bodyFont = typography.bodyFont\n const baseFontSize = typography.baseFontSize\n const lineHeight = typography.lineHeight\n\n return (\n <div\n style={{\n display: 'grid',\n gap: '16px',\n padding: '18px',\n borderRadius: '12px',\n backgroundColor: background,\n color: foreground,\n border: `1px solid ${borderColor}`,\n boxShadow: '0 8px 20px rgba(15, 23, 42, 0.08)',\n fontFamily: bodyFont,\n }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n fontSize: '12px',\n fontWeight: 600,\n letterSpacing: '0.08em',\n textTransform: 'uppercase',\n opacity: 0.7,\n }}\n >\n <span>\n {icon} {title}\n </span>\n <span style={{ fontFamily: 'monospace', fontSize: '11px' }}>\n {background.toUpperCase()}\n </span>\n </div>\n\n <div\n style={{\n backgroundColor: cardBackground,\n color: cardForeground,\n borderRadius: radius.card,\n border: `1px solid ${borderColor}`,\n padding: '16px',\n display: 'flex',\n gap: '12px',\n flexWrap: 'wrap',\n }}\n >\n <button\n type=\"button\"\n style={{\n padding: '10px 18px',\n borderRadius: radius.pill,\n border: 'none',\n cursor: 'pointer',\n fontSize: '12px',\n fontWeight: 600,\n letterSpacing: '0.02em',\n backgroundColor: primary,\n color: primaryForeground,\n boxShadow: '0 6px 14px rgba(15, 23, 42, 0.15)',\n }}\n >\n {t.ui.primaryAction}\n </button>\n <button\n type=\"button\"\n style={{\n padding: '10px 18px',\n borderRadius: radius.chip,\n border: '1px solid transparent',\n cursor: 'pointer',\n fontSize: '12px',\n fontWeight: 600,\n letterSpacing: '0.02em',\n backgroundColor: secondary,\n color: secondaryForeground,\n boxShadow: 'inset 0 0 0 1px rgba(15, 23, 42, 0.08)',\n }}\n >\n {t.ui.secondaryAction}\n </button>\n </div>\n\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(120px, 1fr))',\n gap: '10px',\n }}\n >\n <div\n style={{\n borderRadius: radius.chip,\n padding: '10px 12px',\n fontSize: '12px',\n fontWeight: 500,\n backgroundColor: muted,\n color: mutedForeground,\n }}\n >\n Muted Card\n </div>\n <div\n style={{\n borderRadius: radius.chip,\n padding: '10px 12px',\n fontSize: '12px',\n fontWeight: 500,\n backgroundColor: accent,\n color: accentForeground,\n }}\n >\n Accent Tag\n </div>\n </div>\n\n <div\n style={{\n display: 'grid',\n gap: '8px',\n borderRadius: '10px',\n border: `1px dashed ${borderColor}`,\n padding: '14px',\n backgroundColor: 'rgba(148, 163, 184, 0.08)',\n }}\n >\n <div\n style={{\n fontFamily: headingFont,\n fontSize: 'clamp(24px, 3vw, 32px)',\n fontWeight: 600,\n lineHeight: 1.2,\n }}\n >\n Nadpis / Heading preview\n </div>\n <p\n style={{\n margin: 0,\n fontFamily: bodyFont,\n fontSize: baseFontSize,\n lineHeight,\n color: foreground,\n opacity: 0.85,\n }}\n >\n Sphinx of black quartz, judge my vow. Příliš žluťoučký kůň úpěl ďábelské ódy.\n </p>\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n gap: '10px',\n fontSize: '11px',\n color: 'rgba(15, 23, 42, 0.7)',\n }}\n >\n <span>Body: {typography.bodyLabel}</span>\n <span>Heading: {typography.headingLabel}</span>\n <span>Base size: {baseFontSize}</span>\n <span>Line height: {lineHeight}</span>\n </div>\n </div>\n </div>\n )\n}\n\nexport default function ThemePreviewField(props: SelectFieldClientProps) {\n const { field, path } = props\n const showPreviewPanel =\n (field?.admin?.custom as unknown as { useThemePreviewField?: boolean })?.useThemePreviewField ??\n true\n // If the plugin provided theme presets via admin config, prefer those;\n // support both `field.admin.themePresets` (legacy) and `field.admin.custom.themePresets`\n // otherwise fallback to `allThemePresets`.\n // Prefer presets passed via `admin.custom.themePresets` (set by the field factory / plugin).\n // Fall back to legacy `admin.themePresets` for backwards compatibility, then to `allThemePresets`.\n const baseThemePresets =\n (field?.admin?.custom as unknown as { themePresets?: ThemePreset[] })?.themePresets ??\n (field?.admin as unknown as { themePresets?: ThemePreset[] })?.themePresets ??\n allThemePresets\n const runtimeThemePresets = useMemo(() => {\n return (baseThemePresets as ThemePreset[]).reduce<Record<string, ThemePresetDefinition>>(\n (acc, preset) => {\n acc[preset.name] = {\n label: preset.label,\n lightMode: { ...lightModeDefaults, ...(preset.lightMode ?? {}) },\n darkMode: { ...darkModeDefaults, ...(preset.darkMode ?? {}) },\n typography: preset.typography,\n borderRadius: preset.borderRadius,\n }\n return acc\n },\n {},\n )\n }, [baseThemePresets])\n const fallbackTheme = baseThemePresets[0]?.name ?? 'cool'\n const { value: selectedTheme, setValue } = useField<string>({ path })\n const { dispatchFields } = useForm()\n const formFields = useFormFields(([formState]: any) => formState)\n const hasAppliedInitialPresetRef = useRef(false)\n\n const applyPreset = useCallback(\n (presetName: string) => {\n const preset = runtimeThemePresets[presetName]\n if (!preset) {\n return\n }\n\n colorKeys.forEach((key) => {\n const lightValue = preset.lightMode[key]\n const darkValue = preset.darkMode[key]\n\n if (lightValue) {\n dispatchFields({\n type: 'UPDATE',\n path: `themeConfiguration.lightMode.${key}`,\n value: lightValue,\n })\n }\n\n if (darkValue) {\n dispatchFields({\n type: 'UPDATE',\n path: `themeConfiguration.darkMode.${key}`,\n value: darkValue,\n })\n }\n })\n },\n [dispatchFields],\n )\n\n const handleThemeSelect = useCallback(\n (value: string) => {\n setValue(value)\n\n if (!value) {\n return\n }\n\n hasAppliedInitialPresetRef.current = true\n applyPreset(value)\n },\n [applyPreset, setValue],\n )\n\n useEffect(() => {\n if (!selectedTheme) {\n return\n }\n\n if (runtimeThemePresets[selectedTheme]) {\n return\n }\n\n hasAppliedInitialPresetRef.current = false\n setValue(fallbackTheme)\n }, [selectedTheme, setValue])\n\n useEffect(() => {\n if (hasAppliedInitialPresetRef.current) {\n return\n }\n\n if (!selectedTheme) {\n return\n }\n\n if (!formFields) {\n return\n }\n\n const preset = runtimeThemePresets[selectedTheme]\n if (!preset) {\n hasAppliedInitialPresetRef.current = true\n return\n }\n\n const hasExistingValues = colorKeys.some((key) => {\n const lightField = formFields[`themeConfiguration.lightMode.${key}`]\n const darkField = formFields[`themeConfiguration.darkMode.${key}`]\n\n const lightValue = typeof lightField?.value === 'string' && lightField.value.trim().length > 0\n const darkValue = typeof darkField?.value === 'string' && darkField.value.trim().length > 0\n\n return lightValue || darkValue\n })\n\n if (hasExistingValues) {\n hasAppliedInitialPresetRef.current = true\n return\n }\n\n applyPreset(selectedTheme)\n hasAppliedInitialPresetRef.current = true\n }, [selectedTheme, formFields, applyPreset])\n\n const lightModeColors = useMemo(() => {\n const presetLightMode = selectedTheme\n ? runtimeThemePresets[selectedTheme]?.lightMode\n : undefined\n\n return colorKeys.reduce<ColorModeColors>((acc, key) => {\n const fieldState = formFields?.[`themeConfiguration.lightMode.${key}`]\n const rawValue =\n typeof fieldState?.value === 'string' && fieldState.value.trim().length > 0\n ? fieldState.value\n : undefined\n\n acc[key] = rawValue ?? presetLightMode?.[key] ?? lightModeDefaults[key]\n return acc\n }, {} as ColorModeColors)\n }, [formFields, selectedTheme])\n\n const darkModeColors = useMemo(() => {\n const presetDarkMode = selectedTheme ? runtimeThemePresets[selectedTheme]?.darkMode : undefined\n\n return colorKeys.reduce<ColorModeColors>((acc, key) => {\n const fieldState = formFields?.[`themeConfiguration.darkMode.${key}`]\n const rawValue =\n typeof fieldState?.value === 'string' && fieldState.value.trim().length > 0\n ? fieldState.value\n : undefined\n\n acc[key] = rawValue ?? presetDarkMode?.[key] ?? darkModeDefaults[key]\n return acc\n }, {} as ColorModeColors)\n }, [formFields, selectedTheme])\n\n const activePreset = selectedTheme ? runtimeThemePresets[selectedTheme] : undefined\n const formTypographySelection = useMemo<TypographySelection | null>(() => {\n if (!formFields) {\n return null\n }\n\n const getValue = (key: string) => formFields[`themeConfiguration.typography.${key}`]?.value\n\n return {\n bodyFont: (getValue('bodyFont') as string | undefined) ?? undefined,\n headingFont: (getValue('headingFont') as string | undefined) ?? undefined,\n bodyFontCustom: (getValue('bodyFontCustom') as string | undefined) ?? undefined,\n headingFontCustom: (getValue('headingFontCustom') as string | undefined) ?? undefined,\n baseFontSize: (getValue('baseFontSize') as string | undefined) ?? undefined,\n lineHeight: (getValue('lineHeight') as string | undefined) ?? undefined,\n }\n }, [formFields])\n\n const previewTypography = useMemo<ResolvedTypographyPreview>(() => {\n return resolveTypographyPreview(formTypographySelection, selectedTheme)\n }, [formTypographySelection, selectedTheme])\n\n const borderRadiusValue = formFields?.['themeConfiguration.borderRadius']?.value\n const presetRadius = activePreset?.borderRadius ?? 'medium'\n const resolvedBorderRadius = (\n typeof borderRadiusValue === 'string' && borderRadiusValue.length\n ? borderRadiusValue\n : presetRadius\n ) as keyof typeof borderRadiusPresets\n const borderRadiusPreset = borderRadiusPresets[resolvedBorderRadius] ?? borderRadiusPresets.medium\n const borderRadiusCSS =\n typeof borderRadiusPreset.css === 'string'\n ? { '--radius-default': borderRadiusPreset.css }\n : (borderRadiusPreset.css as Record<string, string>)\n const previewRadius = {\n card: borderRadiusCSS['--radius-large'] ?? '1rem',\n chip: borderRadiusCSS['--radius-default'] ?? '0.75rem',\n pill: borderRadiusCSS['--radius-xl'] ?? borderRadiusCSS['--radius-large'] ?? '999px',\n }\n\n // Translate labels at runtime based on admin language\n const t = getTranslations(getAdminLanguage())\n // Explicitly type keys as `keyof ColorModeColors` to satisfy TypeScript when indexing `lightMode`/`darkMode`\n const highlightSwatches: { key: keyof ColorModeColors; label: string }[] = [\n { key: 'primary', label: t.colors.primary },\n { key: 'secondary', label: t.colors.secondary },\n { key: 'accent', label: t.colors.accent },\n { key: 'background', label: t.colors.background },\n { key: 'foreground', label: t.colors.foreground },\n ]\n\n const fieldLabel =\n typeof field.label === 'string' ? field.label : field.label?.en || field.label?.cs || 'Theme'\n\n return (\n <div style={{ marginBottom: '24px' }}>\n <label\n style={{\n display: 'block',\n marginBottom: '10px',\n fontSize: '13px',\n fontWeight: 600,\n color: 'var(--theme-elevation-800)',\n }}\n >\n {fieldLabel}\n </label>\n\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n gap: '24px',\n alignItems: 'flex-start',\n }}\n >\n <div\n style={{\n flex: '0 0 320px',\n minWidth: '260px',\n maxWidth: '420px',\n display: 'grid',\n gap: '12px',\n }}\n >\n <div className=\"theme-preset-list\">\n {Object.entries(runtimeThemePresets).map(([key, preset]) => {\n const isSelected = key === selectedTheme\n const swatches = highlightSwatches\n .map(({ key: colorKey }) => preset.lightMode[colorKey] as string | undefined)\n .filter((v): v is string => typeof v === 'string' && v.trim().length > 0)\n\n return (\n <button\n key={key}\n type=\"button\"\n onClick={() => handleThemeSelect(key)}\n className={`theme-preset-button ${isSelected ? 'selected' : ''}`}\n >\n <div className=\"theme-info\">\n <span className=\"theme-label\">{preset.label}</span>\n <span className=\"theme-name\">{key}</span>\n </div>\n <div className=\"theme-swatches\" aria-hidden=\"true\">\n {swatches.map((color, index) => (\n <span\n key={`${key}-swatch-${color}-${index}`}\n className=\"color-swatch\"\n style={{ backgroundColor: color }}\n />\n ))}\n </div>\n </button>\n )\n })}\n </div>\n\n {activePreset && (\n <div\n style={{\n padding: '12px',\n borderRadius: '10px',\n border: '1px solid var(--theme-elevation-200)',\n backgroundColor: 'var(--theme-elevation-50)',\n display: 'grid',\n gap: '8px',\n fontSize: '12px',\n color: 'var(--theme-elevation-600)',\n }}\n >\n <div style={{ fontWeight: 600, color: 'var(--theme-elevation-800)' }}>\n {activePreset.label}\n </div>\n <div>Primary color: {activePreset.lightMode.primary}</div>\n <div>Accent color: {activePreset.lightMode.accent}</div>\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n gap: '12px',\n marginTop: '4px',\n }}\n >\n {highlightSwatches.map(({ key, label }) => {\n const swatchValue = activePreset.lightMode[key]\n\n if (!swatchValue) {\n return null\n }\n\n return (\n <div\n key={key}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n minWidth: 'fit-content',\n }}\n >\n <span\n style={{\n width: '22px',\n height: '22px',\n borderRadius: '999px',\n border: '1px solid rgba(15, 23, 42, 0.12)',\n backgroundColor: swatchValue,\n boxShadow: 'inset 0 1px 2px rgba(15, 23, 42, 0.08)',\n }}\n aria-hidden=\"true\"\n />\n <span style={{ fontSize: '11px', color: 'var(--theme-elevation-700)' }}>\n {label}\n </span>\n </div>\n )\n })}\n </div>\n </div>\n )}\n\n {field.admin?.description && (\n <div\n style={{\n fontSize: '12px',\n color: 'var(--theme-elevation-600)',\n lineHeight: 1.5,\n }}\n >\n {typeof field.admin.description === 'string'\n ? field.admin.description\n : field.admin.description?.en || field.admin.description?.cs || ''}\n </div>\n )}\n </div>\n\n {showPreviewPanel && (\n <div\n style={{\n flex: '1 1 420px',\n minWidth: '320px',\n position: 'sticky',\n top: '96px',\n alignSelf: 'flex-start',\n }}\n >\n <div\n style={{\n width: '100%',\n borderRadius: '16px',\n border: '1px solid var(--theme-elevation-200)',\n backgroundColor: 'var(--theme-elevation-25)',\n padding: '20px',\n display: 'grid',\n gap: '18px',\n maxHeight: 'calc(100vh - 140px)',\n overflowY: 'auto',\n }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n fontWeight: 600,\n fontSize: '13px',\n color: 'var(--theme-elevation-800)',\n }}\n >\n {/* safe translations for preview header */}\n <span>{getTranslations('en').livePreview.smallTitle}</span>\n <span style={{ fontSize: '12px', color: 'var(--theme-elevation-600)' }}>\n {activePreset ? activePreset.label : getTranslations('en').preview.customPalette}\n </span>\n </div>\n\n <div\n style={{\n display: 'grid',\n gap: '16px',\n }}\n >\n <ModePreview\n icon=\"☀️\"\n title={getTranslations('en').ui.lightMode}\n colors={lightModeColors}\n typography={previewTypography}\n radius={previewRadius}\n />\n <ModePreview\n icon=\"🌙\"\n title={getTranslations('en').ui.darkMode}\n colors={darkModeColors}\n typography={previewTypography}\n radius={previewRadius}\n />\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n )\n}\n"],"names":["useField","useForm","useFormFields","useCallback","useEffect","useMemo","useRef","resolveTypographyPreview","allThemePresets","borderRadiusPresets","getTranslations","getAdminLanguage","darkModeDefaults","lightModeDefaults","colorKeys","Object","keys","ModePreview","icon","title","colors","typography","radius","t","background","foreground","borderColor","border","cardBackground","card","cardForeground","primary","primaryForeground","secondary","secondaryForeground","muted","mutedForeground","accent","accentForeground","headingFont","bodyFont","baseFontSize","lineHeight","div","style","display","gap","padding","borderRadius","backgroundColor","color","boxShadow","fontFamily","alignItems","justifyContent","fontSize","fontWeight","letterSpacing","textTransform","opacity","span","toUpperCase","flexWrap","button","type","pill","cursor","ui","primaryAction","chip","secondaryAction","gridTemplateColumns","p","margin","bodyLabel","headingLabel","ThemePreviewField","props","field","path","showPreviewPanel","admin","custom","useThemePreviewField","baseThemePresets","themePresets","runtimeThemePresets","reduce","acc","preset","name","label","lightMode","darkMode","fallbackTheme","value","selectedTheme","setValue","dispatchFields","formFields","formState","hasAppliedInitialPresetRef","applyPreset","presetName","forEach","key","lightValue","darkValue","handleThemeSelect","current","hasExistingValues","some","lightField","darkField","trim","length","lightModeColors","presetLightMode","undefined","fieldState","rawValue","darkModeColors","presetDarkMode","activePreset","formTypographySelection","getValue","bodyFontCustom","headingFontCustom","previewTypography","borderRadiusValue","presetRadius","resolvedBorderRadius","borderRadiusPreset","medium","borderRadiusCSS","css","previewRadius","highlightSwatches","fieldLabel","en","cs","marginBottom","flex","minWidth","maxWidth","className","entries","map","isSelected","swatches","colorKey","filter","v","onClick","aria-hidden","index","marginTop","swatchValue","width","height","description","position","top","alignSelf","maxHeight","overflowY","livePreview","smallTitle","preview","customPalette"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/fields/ThemePreviewField.tsx"],"sourcesContent":["'use client'\n\nimport './ThemePreviewField.css'\nimport { useField, useForm, useFormFields } from '@payloadcms/ui'\nimport * as _PayloadUI from '@payloadcms/ui'\nimport { ChevronDown, ChevronRight, Moon, Palette, Sun, type LucideIcon } from 'lucide-react'\nimport type { SelectFieldClientProps } from 'payload'\nimport { useCallback, useEffect, useId, useMemo, useRef, useState } from 'react'\nimport type {\n ResolvedTypographyPreview,\n TypographySelection,\n} from '../components/typographyPreviewUtils.js'\nimport { resolveTypographyPreview } from '../components/typographyPreviewUtils.js'\nimport { allThemePresets } from '../index.js'\nimport type { ThemePreset, ThemeTypographyPreset } from '../presets.js'\nimport { useThemeLanguage, useThemeTranslations } from '../hooks/useThemeTranslations.js'\nimport PaletteGeneratorField from './PaletteGeneratorField.js'\nimport { borderRadiusPresets } from '../providers/Theme/themeConfig.js'\nimport { darkModeDefaults, lightModeDefaults } from './colorModeFields.js'\nimport { parseThemePresetInput } from '../utils/customThemePresets.js'\nimport { resolveLocalizedText } from '../utils/localizedText.js'\nimport { AppearanceLocks, AppearanceUndoBar } from '../components/AppearanceSessionControls.js'\nimport { createBulkWriter, getAppearanceSession } from '../hooks/useAppearanceSession.js'\n\n// useLivePreviewContext is exported from @payloadcms/ui at runtime but TypeScript fails to resolve\n// the re-export chain (context.js → context.d.ts) in pnpm symlinked node_modules.\n// Fall back to a no-op so the component never crashes when the export is absent.\n//\n// Context fields (from packages/ui/src/providers/LivePreview/context.ts):\n// isLivePreviewEnabled – whether livePreview is configured for this document in Payload config\n// isLivePreviewing – whether the user has actively clicked Preview (iframe/popup is open)\ntype _LivePreviewCtxResult = { isLivePreviewEnabled?: boolean; isLivePreviewing?: boolean }\nconst _useLivePreviewContext: () => _LivePreviewCtxResult =\n (_PayloadUI as unknown as { useLivePreviewContext?: () => _LivePreviewCtxResult })\n .useLivePreviewContext ??\n function useLivePreviewContextFallback() {\n return {}\n }\n\ninterface ColorModeColors {\n background?: string\n foreground?: string\n card?: string\n cardForeground?: string\n popover?: string\n popoverForeground?: string\n primary?: string\n primaryForeground?: string\n secondary?: string\n secondaryForeground?: string\n muted?: string\n mutedForeground?: string\n accent?: string\n accentForeground?: string\n destructive?: string\n destructiveForeground?: string\n border?: string\n input?: string\n ring?: string\n}\n\ninterface ThemePresetDefinition {\n label: string\n lightMode: ColorModeColors\n darkMode: ColorModeColors\n typography?: ThemeTypographyPreset\n borderRadius: 'none' | 'small' | 'medium' | 'large' | 'xl'\n visualEffects?: ThemePreset['visualEffects']\n}\n\n// FALLBACK_THEME and runtime theme presets are computed inside the component\n\nconst colorKeys = Object.keys(lightModeDefaults) as (keyof ColorModeColors)[]\n\n// translations and swatches will be computed inside the component to respect admin language at runtime\n\ninterface ModePreviewProps {\n icon: LucideIcon\n title: string\n colors: ColorModeColors\n typography: ResolvedTypographyPreview\n radius: {\n card: string\n chip: string\n pill: string\n }\n}\n\nfunction ModePreview({ icon: Icon, title, colors, typography, radius }: Readonly<ModePreviewProps>) {\n const t = useThemeTranslations()\n const background = colors.background ?? '#ffffff'\n const foreground = colors.foreground ?? '#0a0a0a'\n const borderColor = colors.border ?? 'rgba(148, 163, 184, 0.35)'\n const cardBackground = colors.card ?? background\n const cardForeground = colors.cardForeground ?? foreground\n const primary = colors.primary ?? foreground\n const primaryForeground = colors.primaryForeground ?? background\n const secondary = colors.secondary ?? '#f4f4f5'\n const secondaryForeground = colors.secondaryForeground ?? foreground\n const muted = colors.muted ?? secondary\n const mutedForeground = colors.mutedForeground ?? secondaryForeground\n const accent = colors.accent ?? secondary\n const accentForeground = colors.accentForeground ?? secondaryForeground\n const headingFont = typography.headingFont\n const bodyFont = typography.bodyFont\n const baseFontSize = typography.baseFontSize\n const lineHeight = typography.lineHeight\n\n return (\n <div\n // A picture of the site: its sample buttons must not become dead tab stops.\n ref={(el) => el?.setAttribute('inert', '')}\n style={{\n display: 'grid',\n gap: '16px',\n padding: '18px',\n borderRadius: '12px',\n backgroundColor: background,\n color: foreground,\n border: `1px solid ${borderColor}`,\n boxShadow: '0 8px 20px rgba(15, 23, 42, 0.08)',\n fontFamily: bodyFont,\n }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n fontSize: '12px',\n fontWeight: 600,\n letterSpacing: '0.08em',\n textTransform: 'uppercase',\n opacity: 0.7,\n }}\n >\n <span style={{ display: 'inline-flex', alignItems: 'center', gap: '6px' }}>\n <Icon size={13} aria-hidden />\n {title}\n </span>\n <span style={{ fontFamily: 'monospace', fontSize: '11px' }}>\n {background.toUpperCase()}\n </span>\n </div>\n\n <div\n style={{\n backgroundColor: cardBackground,\n color: cardForeground,\n borderRadius: radius.card,\n border: `1px solid ${borderColor}`,\n padding: '16px',\n display: 'flex',\n gap: '12px',\n flexWrap: 'wrap',\n }}\n >\n <button\n type=\"button\"\n style={{\n padding: '10px 18px',\n borderRadius: radius.pill,\n border: 'none',\n cursor: 'pointer',\n fontSize: '12px',\n fontWeight: 600,\n letterSpacing: '0.02em',\n backgroundColor: primary,\n color: primaryForeground,\n boxShadow: '0 6px 14px rgba(15, 23, 42, 0.15)',\n }}\n >\n {t.ui.primaryAction}\n </button>\n <button\n type=\"button\"\n style={{\n padding: '10px 18px',\n borderRadius: radius.chip,\n border: '1px solid transparent',\n cursor: 'pointer',\n fontSize: '12px',\n fontWeight: 600,\n letterSpacing: '0.02em',\n backgroundColor: secondary,\n color: secondaryForeground,\n boxShadow: 'inset 0 0 0 1px rgba(15, 23, 42, 0.08)',\n }}\n >\n {t.ui.secondaryAction}\n </button>\n </div>\n\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(120px, 1fr))',\n gap: '10px',\n }}\n >\n <div\n style={{\n borderRadius: radius.chip,\n padding: '10px 12px',\n fontSize: '12px',\n fontWeight: 500,\n backgroundColor: muted,\n color: mutedForeground,\n }}\n >\n {t.ui.mutedSample}\n </div>\n <div\n style={{\n borderRadius: radius.chip,\n padding: '10px 12px',\n fontSize: '12px',\n fontWeight: 500,\n backgroundColor: accent,\n color: accentForeground,\n }}\n >\n {t.ui.accentSample}\n </div>\n </div>\n\n <div\n style={{\n display: 'grid',\n gap: '8px',\n borderRadius: '10px',\n border: `1px dashed ${borderColor}`,\n padding: '14px',\n backgroundColor: 'rgba(148, 163, 184, 0.08)',\n }}\n >\n <div\n style={{\n fontFamily: headingFont,\n fontSize: 'clamp(24px, 3vw, 32px)',\n fontWeight: 600,\n lineHeight: 1.2,\n }}\n >\n {t.ui.headingSample}\n </div>\n <p\n style={{\n margin: 0,\n fontFamily: bodyFont,\n fontSize: baseFontSize,\n lineHeight,\n color: foreground,\n opacity: 0.85,\n }}\n >\n {t.ui.bodySample}\n </p>\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n gap: '10px',\n fontSize: '12px',\n // Follow the previewed palette so the meta line stays readable in dark mode.\n color: mutedForeground,\n }}\n >\n <span>\n {t.ui.bodyFontLabel}: {typography.bodyLabel}\n </span>\n <span>\n {t.ui.headingFontLabel}: {typography.headingLabel}\n </span>\n <span>\n {t.ui.baseSizeLabel}: {baseFontSize}\n </span>\n <span>\n {t.ui.lineHeightLabel}: {lineHeight}\n </span>\n </div>\n </div>\n </div>\n )\n}\n\nexport default function ThemePreviewField(props: SelectFieldClientProps) {\n const { field, path } = props\n // useThemePreviewField: explicit opt-out via admin.custom.useThemePreviewField = false\n // Plugin always passes true; advanced users can override to permanently hide the panel.\n const configuredShowPreview =\n (field?.admin?.custom as unknown as { useThemePreviewField?: boolean })?.useThemePreviewField ??\n true\n // isLivePreviewing: true only when the user actively clicked Preview and the iframe/popup is open.\n // While editing (before clicking Preview), the panel is always shown regardless of livePreview config.\n // Default context value is false, so the panel shows by default even without LivePreview provider.\n const { isLivePreviewing } = _useLivePreviewContext()\n const showPreviewPanel = configuredShowPreview && !isLivePreviewing\n // If the plugin provided theme presets via admin config, prefer those;\n // support both `field.admin.themePresets` (legacy) and `field.admin.custom.themePresets`\n // otherwise fallback to `allThemePresets`.\n // Prefer presets passed via `admin.custom.themePresets` (set by the field factory / plugin).\n // Fall back to legacy `admin.themePresets` for backwards compatibility, then to `allThemePresets`.\n const configuredThemePresets =\n (field?.admin?.custom as unknown as { themePresets?: ThemePreset[] })?.themePresets ??\n (field?.admin as unknown as { themePresets?: ThemePreset[] })?.themePresets ??\n allThemePresets\n // Presets imported through the \"Custom Theme Presets\" JSON field live next to\n // this field. Merge them in (overriding built-ins by name) so they show up in\n // the picker as soon as they are imported.\n const customPresetsPath = [...path.split('.').slice(0, -1), 'customThemePresets'].join('.')\n const customPresetsValue = useFormFields(\n ([formState]: any) => formState?.[customPresetsPath]?.value as unknown,\n )\n const baseThemePresets = useMemo(() => {\n const custom = parseThemePresetInput(customPresetsValue)\n if (custom.length === 0) return configuredThemePresets\n const byName = new Map(configuredThemePresets.map((preset) => [preset.name, preset]))\n custom.forEach((preset) => byName.set(preset.name, preset))\n return [...byName.values()]\n }, [configuredThemePresets, customPresetsValue])\n const runtimeThemePresets = useMemo(() => {\n return (baseThemePresets as ThemePreset[]).reduce<Record<string, ThemePresetDefinition>>(\n (acc, preset) => {\n acc[preset.name] = {\n label: preset.label,\n lightMode: { ...lightModeDefaults, ...(preset.lightMode ?? {}) },\n darkMode: { ...darkModeDefaults, ...(preset.darkMode ?? {}) },\n typography: preset.typography,\n borderRadius: preset.borderRadius,\n visualEffects: preset.visualEffects,\n }\n return acc\n },\n {},\n )\n }, [baseThemePresets])\n const fallbackTheme = baseThemePresets[0]?.name ?? 'cool'\n const { value: selectedTheme, setValue } = useField<string>({ path })\n const { dispatchFields } = useForm()\n const formFields = useFormFields(([formState]: any) => formState)\n const hasAppliedInitialPresetRef = useRef(false)\n const [previewOpen, setPreviewOpen] = useState(true)\n // Preset list starts collapsed once a theme is already selected so the\n // preview panel — not the long preset list — dominates the layout.\n const [presetsOpen, setPresetsOpen] = useState(false)\n\n const { setModified } = useForm()\n\n /**\n * Write a theme preset into the form, honouring the session locks:\n * colours (Colours lock), visual effects (Style lock). Theme fonts apply\n * implicitly through the \"Use theme preset\" font option, so with the Fonts lock\n * on we pin the current preset font as a custom value before switching.\n */\n const applyPreset = useCallback(\n (presetName: string, writer: ReturnType<typeof createBulkWriter>) => {\n const preset = runtimeThemePresets[presetName]\n if (!preset) {\n return\n }\n const { locks } = getAppearanceSession()\n\n if (!locks.colors) {\n colorKeys.forEach((key) => {\n const lightValue = preset.lightMode[key]\n const darkValue = preset.darkMode[key]\n if (lightValue) writer.write(`themeConfiguration.lightMode.${key}`, lightValue)\n if (darkValue) writer.write(`themeConfiguration.darkMode.${key}`, darkValue)\n })\n }\n\n if (locks.fonts && selectedTheme) {\n const typographyValue = (key: string) =>\n formFields?.[`themeConfiguration.typography.${key}`]?.value as string | undefined\n const current = resolveTypographyPreview(\n {\n bodyFont: typographyValue('bodyFont'),\n headingFont: typographyValue('headingFont'),\n },\n selectedTheme,\n )\n const pin = (key: 'bodyFont' | 'headingFont', family: string) => {\n const value = typographyValue(key)\n if (!value || value === 'preset') {\n writer.write(`themeConfiguration.typography.${key}`, 'custom')\n writer.write(`themeConfiguration.typography.${key}Custom`, family)\n }\n }\n pin('bodyFont', current.bodyFont)\n pin('headingFont', current.headingFont)\n }\n\n if (!locks.style && preset.visualEffects) {\n const vfKeys = [\n 'effectStyle',\n 'shadowIntensity',\n 'backdropBlur',\n 'borderStyle',\n 'borderWidth',\n 'glassOpacity',\n ] as const\n vfKeys.forEach((key) => {\n const value = preset.visualEffects?.[key]\n if (value !== undefined) writer.write(`themeConfiguration.visualEffects.${key}`, value)\n })\n }\n },\n [runtimeThemePresets, formFields, selectedTheme],\n )\n\n const handleThemeSelect = useCallback(\n (value: string) => {\n if (!value) {\n setValue(value)\n return\n }\n\n hasAppliedInitialPresetRef.current = true\n const writer = createBulkWriter(formFields, dispatchFields)\n writer.write(path, value)\n applyPreset(value, writer)\n setModified(true)\n writer.commit('theme', runtimeThemePresets[value]?.label ?? value)\n },\n [applyPreset, setValue, formFields, dispatchFields, path, setModified, runtimeThemePresets],\n )\n\n useEffect(() => {\n if (!selectedTheme) {\n return\n }\n\n if (runtimeThemePresets[selectedTheme]) {\n return\n }\n\n hasAppliedInitialPresetRef.current = false\n setValue(fallbackTheme)\n }, [selectedTheme, setValue])\n\n useEffect(() => {\n if (hasAppliedInitialPresetRef.current) {\n return\n }\n\n if (!selectedTheme) {\n return\n }\n\n if (!formFields) {\n return\n }\n\n const preset = runtimeThemePresets[selectedTheme]\n if (!preset) {\n hasAppliedInitialPresetRef.current = true\n return\n }\n\n const hasExistingValues = colorKeys.some((key) => {\n const lightField = formFields[`themeConfiguration.lightMode.${key}`]\n const darkField = formFields[`themeConfiguration.darkMode.${key}`]\n\n const lightValue = typeof lightField?.value === 'string' && lightField.value.trim().length > 0\n const darkValue = typeof darkField?.value === 'string' && darkField.value.trim().length > 0\n\n return lightValue || darkValue\n })\n\n if (hasExistingValues) {\n hasAppliedInitialPresetRef.current = true\n return\n }\n\n // First-time fill of empty colour fields: not an editor action, so no undo entry.\n applyPreset(selectedTheme, createBulkWriter(formFields, dispatchFields))\n hasAppliedInitialPresetRef.current = true\n }, [selectedTheme, formFields, applyPreset])\n\n const lightModeColors = useMemo(() => {\n const presetLightMode = selectedTheme\n ? runtimeThemePresets[selectedTheme]?.lightMode\n : undefined\n\n return colorKeys.reduce<ColorModeColors>((acc, key) => {\n const fieldState = formFields?.[`themeConfiguration.lightMode.${key}`]\n const rawValue =\n typeof fieldState?.value === 'string' && fieldState.value.trim().length > 0\n ? fieldState.value\n : undefined\n\n acc[key] = rawValue ?? presetLightMode?.[key] ?? lightModeDefaults[key]\n return acc\n }, {} as ColorModeColors)\n }, [formFields, selectedTheme])\n\n const darkModeColors = useMemo(() => {\n const presetDarkMode = selectedTheme ? runtimeThemePresets[selectedTheme]?.darkMode : undefined\n\n return colorKeys.reduce<ColorModeColors>((acc, key) => {\n const fieldState = formFields?.[`themeConfiguration.darkMode.${key}`]\n const rawValue =\n typeof fieldState?.value === 'string' && fieldState.value.trim().length > 0\n ? fieldState.value\n : undefined\n\n acc[key] = rawValue ?? presetDarkMode?.[key] ?? darkModeDefaults[key]\n return acc\n }, {} as ColorModeColors)\n }, [formFields, selectedTheme])\n\n const activePreset = selectedTheme ? runtimeThemePresets[selectedTheme] : undefined\n const formTypographySelection = useMemo<TypographySelection | null>(() => {\n if (!formFields) {\n return null\n }\n\n const getValue = (key: string) => formFields[`themeConfiguration.typography.${key}`]?.value\n\n return {\n bodyFont: (getValue('bodyFont') as string | undefined) ?? undefined,\n headingFont: (getValue('headingFont') as string | undefined) ?? undefined,\n bodyFontCustom: (getValue('bodyFontCustom') as string | undefined) ?? undefined,\n headingFontCustom: (getValue('headingFontCustom') as string | undefined) ?? undefined,\n baseFontSize: (getValue('baseFontSize') as string | undefined) ?? undefined,\n lineHeight: (getValue('lineHeight') as string | undefined) ?? undefined,\n }\n }, [formFields])\n\n const previewTypography = useMemo<ResolvedTypographyPreview>(() => {\n return resolveTypographyPreview(formTypographySelection, selectedTheme)\n }, [formTypographySelection, selectedTheme])\n\n const borderRadiusValue = formFields?.['themeConfiguration.borderRadius']?.value\n const presetRadius = activePreset?.borderRadius ?? 'medium'\n const resolvedBorderRadius = (\n typeof borderRadiusValue === 'string' && borderRadiusValue.length\n ? borderRadiusValue\n : presetRadius\n ) as keyof typeof borderRadiusPresets\n const borderRadiusPreset = borderRadiusPresets[resolvedBorderRadius] ?? borderRadiusPresets.medium\n const borderRadiusCSS =\n typeof borderRadiusPreset.css === 'string'\n ? { '--radius-default': borderRadiusPreset.css }\n : (borderRadiusPreset.css as Record<string, string>)\n const previewRadius = {\n card: borderRadiusCSS['--radius-large'] ?? '1rem',\n chip: borderRadiusCSS['--radius-default'] ?? '0.75rem',\n pill: borderRadiusCSS['--radius-xl'] ?? borderRadiusCSS['--radius-large'] ?? '999px',\n }\n\n // Translate labels at runtime based on the active Payload admin language\n const t = useThemeTranslations()\n const fieldId = `tm-theme-${useId().replace(/:/g, '')}`\n // Explicitly type keys as `keyof ColorModeColors` to satisfy TypeScript when indexing `lightMode`/`darkMode`\n const highlightSwatches: { key: keyof ColorModeColors; label: string }[] = [\n { key: 'primary', label: t.colors.primary },\n { key: 'secondary', label: t.colors.secondary },\n { key: 'accent', label: t.colors.accent },\n { key: 'background', label: t.colors.background },\n { key: 'foreground', label: t.colors.foreground },\n ]\n\n const presetCount = Object.keys(runtimeThemePresets).length\n const summarySwatches = highlightSwatches\n .map(({ key }) => (activePreset ? activePreset.lightMode[key] : lightModeColors[key]))\n .filter((v): v is string => typeof v === 'string' && v.trim().length > 0)\n\n // Field labels/descriptions arrive as `{ en, cs, … }` objects. Resolve them\n // against the active admin language (Payload i18n) instead of hard-coding `en`,\n // otherwise the theme selection stays English in every locale.\n const adminLanguage = useThemeLanguage()\n const resolveLocalized = (\n value: string | Record<string, string> | null | undefined,\n fallback = '',\n ): string => resolveLocalizedText(value, adminLanguage, fallback)\n\n const fieldLabel = resolveLocalized(\n field.label as string | Record<string, string> | undefined,\n 'Theme',\n )\n const fieldDescription = resolveLocalized(\n field.admin?.description as string | Record<string, string> | undefined,\n )\n\n return (\n <div style={{ marginBottom: '24px' }}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n marginBottom: '10px',\n }}\n >\n <div\n id={`${fieldId}-label`}\n style={{\n fontSize: '13px',\n fontWeight: 600,\n color: 'var(--theme-elevation-800)',\n }}\n >\n {fieldLabel}\n </div>\n {showPreviewPanel && (\n <button\n type=\"button\"\n onClick={() => setPreviewOpen((v) => !v)}\n className=\"theme-preview-toggle\"\n aria-expanded={previewOpen}\n aria-controls={`${fieldId}-preview`}\n >\n {previewOpen ? (\n <ChevronDown size={12} aria-hidden />\n ) : (\n <ChevronRight size={12} aria-hidden />\n )}\n {previewOpen ? t.ui.hidePreview : t.ui.showPreview}\n </button>\n )}\n </div>\n\n <div\n className={`theme-preview-layout${\n showPreviewPanel && previewOpen ? '' : ' theme-preview-layout--single'\n }`}\n >\n <div className=\"theme-preset-column\">\n {/* Palette generator lives in the same column as the preset picker:\n editors either generate a palette from a brand colour / logo, or\n pick a ready-made preset right below it. */}\n <AppearanceLocks />\n <AppearanceUndoBar sources={['theme', 'palette']} />\n <PaletteGeneratorField />\n\n {/* Collapsible preset picker — collapsed by default so the live preview\n stays the focal point; the summary row keeps the active preset visible. */}\n <button\n type=\"button\"\n className={`theme-preset-summary${presetsOpen ? ' is-open' : ''}`}\n onClick={() => setPresetsOpen((v) => !v)}\n aria-expanded={presetsOpen}\n aria-controls={`${fieldId}-presets`}\n aria-label={\n activePreset ? `${t.ui.choosePreset}: ${activePreset.label}` : t.ui.choosePreset\n }\n >\n {presetsOpen ? (\n <ChevronDown size={14} aria-hidden />\n ) : (\n <ChevronRight size={14} aria-hidden />\n )}\n <span className=\"theme-preset-summary__info\">\n <span className=\"theme-label\">{activePreset?.label ?? t.ui.choosePreset}</span>\n <span className=\"theme-name\">\n {`${presetCount} ${t.ui.presetCount}`}\n </span>\n </span>\n <span className=\"theme-swatches\" aria-hidden=\"true\">\n {summarySwatches.map((color, index) => (\n <span\n key={`summary-swatch-${color}-${index}`}\n className=\"color-swatch\"\n style={{ backgroundColor: color }}\n />\n ))}\n </span>\n </button>\n\n {presetsOpen && (\n <div\n className=\"theme-preset-list\"\n id={`${fieldId}-presets`}\n role=\"group\"\n aria-labelledby={`${fieldId}-label`}\n >\n {Object.entries(runtimeThemePresets).map(([key, preset]) => {\n const isSelected = key === selectedTheme\n const swatches = highlightSwatches\n .map(({ key: colorKey }) => preset.lightMode[colorKey] as string | undefined)\n .filter((v): v is string => typeof v === 'string' && v.trim().length > 0)\n\n return (\n <button\n key={key}\n type=\"button\"\n aria-pressed={isSelected}\n onClick={() => handleThemeSelect(key)}\n className={`theme-preset-button ${isSelected ? 'selected' : ''}`}\n >\n <div className=\"theme-info\">\n <span className=\"theme-label\">{preset.label}</span>\n </div>\n <div className=\"theme-swatches\" aria-hidden=\"true\">\n {swatches.map((color, index) => (\n <span\n key={`${key}-swatch-${color}-${index}`}\n className=\"color-swatch\"\n style={{ backgroundColor: color }}\n />\n ))}\n </div>\n </button>\n )\n })}\n </div>\n )}\n\n {fieldDescription && (\n <div\n style={{\n fontSize: '12px',\n color: 'var(--theme-elevation-600)',\n lineHeight: 1.5,\n }}\n >\n {fieldDescription}\n </div>\n )}\n </div>\n\n {showPreviewPanel && previewOpen && (\n <div className=\"theme-preview-panel\" id={`${fieldId}-preview`}>\n <div\n style={{\n width: '100%',\n borderRadius: '16px',\n border: '1px solid var(--theme-elevation-200)',\n backgroundColor: 'var(--theme-elevation-25)',\n padding: '20px',\n display: 'grid',\n gap: '18px',\n maxHeight: 'calc(100vh - 140px)',\n overflowY: 'auto',\n }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n fontWeight: 600,\n fontSize: '13px',\n color: 'var(--theme-elevation-800)',\n }}\n >\n {/* Role label — this panel is dedicated to COLOURS + TYPOGRAPHY.\n Effects & component structure live in the separate\n \"Effects & components\" preview (AppearancePreviewField). */}\n <span style={{ display: 'inline-flex', alignItems: 'center', gap: '6px' }}>\n <Palette size={14} aria-hidden />\n {t.ui.colorsAndTypography}\n </span>\n <span style={{ fontSize: '12px', color: 'var(--theme-elevation-600)' }}>\n {activePreset ? activePreset.label : t.preview.customPalette}\n </span>\n </div>\n\n <div\n style={{\n display: 'grid',\n gap: '16px',\n }}\n >\n <ModePreview\n icon={Sun}\n title={t.ui.lightMode}\n colors={lightModeColors}\n typography={previewTypography}\n radius={previewRadius}\n />\n <ModePreview\n icon={Moon}\n title={t.ui.darkMode}\n colors={darkModeColors}\n typography={previewTypography}\n radius={previewRadius}\n />\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n )\n}\n"],"names":["useField","useForm","useFormFields","_PayloadUI","ChevronDown","ChevronRight","Moon","Palette","Sun","useCallback","useEffect","useId","useMemo","useRef","useState","resolveTypographyPreview","allThemePresets","useThemeLanguage","useThemeTranslations","PaletteGeneratorField","borderRadiusPresets","darkModeDefaults","lightModeDefaults","parseThemePresetInput","resolveLocalizedText","AppearanceLocks","AppearanceUndoBar","createBulkWriter","getAppearanceSession","_useLivePreviewContext","useLivePreviewContext","useLivePreviewContextFallback","colorKeys","Object","keys","ModePreview","icon","Icon","title","colors","typography","radius","t","background","foreground","borderColor","border","cardBackground","card","cardForeground","primary","primaryForeground","secondary","secondaryForeground","muted","mutedForeground","accent","accentForeground","headingFont","bodyFont","baseFontSize","lineHeight","div","ref","el","setAttribute","style","display","gap","padding","borderRadius","backgroundColor","color","boxShadow","fontFamily","alignItems","justifyContent","fontSize","fontWeight","letterSpacing","textTransform","opacity","span","size","aria-hidden","toUpperCase","flexWrap","button","type","pill","cursor","ui","primaryAction","chip","secondaryAction","gridTemplateColumns","mutedSample","accentSample","headingSample","p","margin","bodySample","bodyFontLabel","bodyLabel","headingFontLabel","headingLabel","baseSizeLabel","lineHeightLabel","ThemePreviewField","props","field","path","configuredShowPreview","admin","custom","useThemePreviewField","isLivePreviewing","showPreviewPanel","configuredThemePresets","themePresets","customPresetsPath","split","slice","join","customPresetsValue","formState","value","baseThemePresets","length","byName","Map","map","preset","name","forEach","set","values","runtimeThemePresets","reduce","acc","label","lightMode","darkMode","visualEffects","fallbackTheme","selectedTheme","setValue","dispatchFields","formFields","hasAppliedInitialPresetRef","previewOpen","setPreviewOpen","presetsOpen","setPresetsOpen","setModified","applyPreset","presetName","writer","locks","key","lightValue","darkValue","write","fonts","typographyValue","current","pin","family","vfKeys","undefined","handleThemeSelect","commit","hasExistingValues","some","lightField","darkField","trim","lightModeColors","presetLightMode","fieldState","rawValue","darkModeColors","presetDarkMode","activePreset","formTypographySelection","getValue","bodyFontCustom","headingFontCustom","previewTypography","borderRadiusValue","presetRadius","resolvedBorderRadius","borderRadiusPreset","medium","borderRadiusCSS","css","previewRadius","fieldId","replace","highlightSwatches","presetCount","summarySwatches","filter","v","adminLanguage","resolveLocalized","fallback","fieldLabel","fieldDescription","description","marginBottom","id","onClick","className","aria-expanded","aria-controls","hidePreview","showPreview","sources","aria-label","choosePreset","index","role","aria-labelledby","entries","isSelected","swatches","colorKey","aria-pressed","width","maxHeight","overflowY","colorsAndTypography","preview","customPalette"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeTokenSelectField.d.ts","sourceRoot":"","sources":["../../src/fields/ThemeTokenSelectField.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"ThemeTokenSelectField.d.ts","sourceRoot":"","sources":["../../src/fields/ThemeTokenSelectField.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAiGrD,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,KAAK,EAAE,sBAAsB,+BA4c1E"}
|