@kilivi/payloadcms-theme-management 2.1.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 +37 -7
- package/dist/components/ServerThemeInjector.d.ts +13 -1
- package/dist/components/ServerThemeInjector.d.ts.map +1 -1
- package/dist/components/ServerThemeInjector.js +24 -1
- package/dist/components/ServerThemeInjector.js.map +1 -1
- package/dist/components/ThemeLivePreviewSync.d.ts +3 -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/typographyPreviewUtils.d.ts +5 -0
- package/dist/components/typographyPreviewUtils.d.ts.map +1 -1
- package/dist/components/typographyPreviewUtils.js +16 -10
- package/dist/components/typographyPreviewUtils.js.map +1 -1
- 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/fields/AppearancePreviewField.d.ts.map +1 -1
- package/dist/fields/AppearancePreviewField.js +196 -133
- package/dist/fields/AppearancePreviewField.js.map +1 -1
- package/dist/fields/FontSelectField.css +155 -0
- package/dist/fields/FontSelectField.d.ts +4 -2
- package/dist/fields/FontSelectField.d.ts.map +1 -1
- package/dist/fields/FontSelectField.js +80 -118
- package/dist/fields/FontSelectField.js.map +1 -1
- package/dist/fields/StylePresetField.d.ts.map +1 -1
- package/dist/fields/StylePresetField.js +31 -30
- package/dist/fields/StylePresetField.js.map +1 -1
- package/dist/fields/ThemePreviewField.css +63 -1
- package/dist/fields/ThemePreviewField.d.ts.map +1 -1
- package/dist/fields/ThemePreviewField.js +2 -5
- package/dist/fields/ThemePreviewField.js.map +1 -1
- package/dist/fields/themeConfigurationField.d.ts.map +1 -1
- package/dist/fields/themeConfigurationField.js +320 -271
- package/dist/fields/themeConfigurationField.js.map +1 -1
- 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/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- 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 +10 -6
- package/dist/payload-types.d.ts.map +1 -1
- package/dist/payload-types.js.map +1 -1
- package/dist/presets.d.ts +6 -0
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js.map +1 -1
- package/dist/style-presets.d.ts +27 -18
- package/dist/style-presets.d.ts.map +1 -1
- package/dist/style-presets.js +399 -217
- package/dist/style-presets.js.map +1 -1
- package/dist/translations.d.ts +5 -0
- package/dist/translations.d.ts.map +1 -1
- package/dist/translations.js +10 -0
- package/dist/translations.js.map +1 -1
- package/dist/utils/livePreviewThemeRuntime.d.ts +6 -1
- package/dist/utils/livePreviewThemeRuntime.d.ts.map +1 -1
- package/dist/utils/livePreviewThemeRuntime.js +11 -1
- package/dist/utils/livePreviewThemeRuntime.js.map +1 -1
- package/dist/utils/resolveThemeConfiguration.d.ts +15 -0
- package/dist/utils/resolveThemeConfiguration.d.ts.map +1 -1
- package/dist/utils/resolveThemeConfiguration.js +41 -8
- package/dist/utils/resolveThemeConfiguration.js.map +1 -1
- package/dist/utils/themeUtils.d.ts.map +1 -1
- package/dist/utils/themeUtils.js +60 -2
- package/dist/utils/themeUtils.js.map +1 -1
- package/package.json +5 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/fields/themeConfigurationField.ts"],"sourcesContent":["import type { Field, TabsField } from 'payload'\nimport {\n BASE_FONT_SIZE_OPTIONS,\n BODY_FONT_OPTIONS,\n HEADING_FONT_OPTIONS,\n LINE_HEIGHT_OPTIONS,\n} from '../constants/themeFonts.js'\nimport type { ThemePreset } from '../index.js'\nimport { getTranslations } from '../translations.js'\nimport { darkModeField, lightModeField } from './colorModeFields.js'\n\ninterface ThemeConfigurationFieldOptions {\n themePresets: ThemePreset[]\n defaultTheme: string\n includeColorModeToggle: boolean\n includeCustomCSS: boolean\n includeBrandIdentity: boolean\n enableAdvancedFeatures?: boolean\n useThemePreviewField?: boolean\n customThemeConfigurationFields?: Field[]\n customThemeConfigurationSections?: Array<{\n label: string | Record<string, string>\n fields: Field[]\n initCollapsed?: boolean\n description?: string | Record<string, string>\n }>\n}\n\n// Type for admin.custom property to avoid ts-expect-error\ninterface ThemeAdminCustom {\n themePresets?: ThemePreset[]\n useThemePreviewField?: boolean\n}\n\n// Type for a single tab (not the full TabsField)\nexport type ThemeTab = NonNullable<TabsField['tabs']>[number]\n\n/**\n * Theme Configuration Field with Theme Selection as default value setter\n * Theme Selection populates lightMode/darkMode colors automatically\n */\nexport function createThemeConfigurationField(options: ThemeConfigurationFieldOptions): ThemeTab {\n const {\n themePresets,\n defaultTheme,\n includeColorModeToggle,\n includeCustomCSS,\n enableAdvancedFeatures = true,\n useThemePreviewField = true,\n customThemeConfigurationFields,\n customThemeConfigurationSections,\n } = options\n\n const fields: Field[] = [\n // NOTE: the palette generator is rendered *inside* ThemePreviewField (in the\n // preset column, above the preset list) — it is not a separate UI field.\n {\n name: 'theme',\n type: 'text',\n required: true,\n defaultValue: defaultTheme,\n label: {\n en: 'Theme Selection',\n cs: 'Výběr motivu',\n },\n validate: (value: unknown, options?: { req?: { i18n?: { language?: string } } }) => {\n if (typeof value === 'string' && value.trim().length > 0) {\n return true\n }\n return getTranslations(options?.req?.i18n?.language ?? 'en').ui.selectThemeError\n },\n admin: {\n description: {\n en: 'Pick a theme to fill in the colours. You can fine-tune them afterwards.',\n cs: 'Vyberte motiv a barvy se předvyplní. Potom je můžete dál upravovat.',\n },\n components: {\n Field: '@kilivi/payloadcms-theme-management/fields/ThemePreviewField',\n },\n custom: {\n themePresets,\n useThemePreviewField,\n } as ThemeAdminCustom,\n },\n },\n ]\n\n // Live preview: colours, fonts and component styles in one place. On wide admins\n // it occupies a sticky right-hand column spanning the whole tab (see\n // ThemePreviewField.css, `.tm-appearance`); on narrow ones it follows the theme picker.\n fields.push({\n name: 'appearancePreview',\n type: 'ui',\n admin: {\n components: {\n Field: '@kilivi/payloadcms-theme-management/fields/AppearancePreviewField',\n },\n },\n })\n\n // Style Preset - visual style selection independent of colors\n fields.push({\n type: 'collapsible',\n label: {\n en: 'Style Preset',\n cs: 'Styl vzhledu',\n },\n admin: {\n initCollapsed: true,\n className: 'tm-section-style-preset',\n description: {\n en: 'Choose a visual style (Brutalism, Swiss, Glassmorphism …) without changing the colour palette.',\n cs: 'Zvolte vizuální styl (Brutalismus, Švýcarský, Glassmorphism …) bez změny barevné palety.',\n },\n },\n fields: [\n {\n name: 'stylePreset',\n type: 'text',\n label: {\n en: 'Active Style Preset',\n cs: 'Aktivní styl vzhledu',\n },\n defaultValue: '',\n admin: {\n components: {\n Field: '@kilivi/payloadcms-theme-management/fields/StylePresetField',\n },\n },\n },\n ],\n })\n\n // Border Radius Configuration - Always visible\n fields.push({\n type: 'row',\n fields: [\n {\n name: 'borderRadius',\n type: 'select',\n label: {\n en: 'Border Radius',\n cs: 'Zaoblení rohů',\n },\n defaultValue: 'medium',\n options: [\n { label: { en: 'None (0px)', cs: 'Žádné (0px)' }, value: 'none' },\n { label: { en: 'Small (0.25rem)', cs: 'Malé (0.25rem)' }, value: 'small' },\n { label: { en: 'Medium (0.5rem)', cs: 'Střední (0.5rem)' }, value: 'medium' },\n { label: { en: 'Large (0.75rem)', cs: 'Velké (0.75rem)' }, value: 'large' },\n { label: { en: 'XL (1rem)', cs: 'XL (1rem)' }, value: 'xl' },\n ],\n admin: {\n description: {\n en: 'Default corner rounding for UI elements',\n cs: 'Výchozí zaoblení rohů pro UI prvky',\n },\n width: '50%',\n },\n dbName: 'border_radius',\n },\n {\n name: 'spacing',\n type: 'select',\n label: {\n en: 'Spacing Scale',\n cs: 'Škála rozestupů',\n },\n defaultValue: 'medium',\n options: [\n { label: { en: 'Compact', cs: 'Kompaktní' }, value: 'compact' },\n { label: { en: 'Medium', cs: 'Střední' }, value: 'medium' },\n { label: { en: 'Comfortable', cs: 'Pohodlné' }, value: 'comfortable' },\n ],\n admin: {\n description: {\n en: 'Global spacing between elements',\n cs: 'Globální rozestupy mezi prvky',\n },\n width: '50%',\n },\n dbName: 'spacing',\n },\n ],\n })\n\n // Color Mode Settings\n if (includeColorModeToggle) {\n fields.push({\n type: 'collapsible',\n label: {\n en: 'Color Mode Settings',\n cs: 'Nastavení barevného režimu',\n },\n admin: {\n // Fine-tuning: collapsed by default so presets and the preview lead the tab.\n initCollapsed: true,\n description: {\n en: 'Individual light and dark mode colours. Edits here take precedence over the theme.',\n cs: 'Jednotlivé barvy světlého a tmavého režimu. Úpravy zde mají přednost před motivem.',\n },\n },\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'colorMode',\n type: 'select',\n label: {\n en: 'Default Color Mode',\n cs: 'Výchozí barevný režim',\n },\n defaultValue: 'auto',\n options: [\n {\n label: {\n en: 'Auto (System)',\n cs: 'Automaticky (Systém)',\n },\n value: 'auto',\n },\n {\n label: { en: 'Light', cs: 'Světlý' },\n value: 'light',\n },\n {\n label: { en: 'Dark', cs: 'Tmavý' },\n value: 'dark',\n },\n ],\n admin: {\n description: {\n en: 'Default color mode for visitors',\n cs: 'Výchozí barevný režim pro návštěvníky',\n },\n width: '50%',\n },\n dbName: 'color_mode',\n },\n {\n name: 'allowColorModeToggle',\n type: 'checkbox',\n label: {\n en: 'Enable Mode Toggle',\n cs: 'Povolit přepínač režimu',\n },\n defaultValue: true,\n admin: {\n description: {\n en: 'Let visitors switch modes',\n cs: 'Umožnit návštěvníkům přepínat režimy',\n },\n width: '50%',\n },\n },\n ],\n },\n lightModeField,\n darkModeField,\n {\n name: 'accessibilityAudit',\n type: 'ui',\n admin: {\n components: {\n Field: '@kilivi/payloadcms-theme-management/fields/AccessibilityAuditField',\n },\n },\n },\n {\n name: 'themeExport',\n type: 'ui',\n admin: {\n components: {\n Field: '@kilivi/payloadcms-theme-management/fields/ThemeExportField',\n },\n },\n },\n ],\n })\n }\n\n // Typography - Always visible\n fields.push({\n type: 'collapsible',\n label: {\n en: 'Typography',\n cs: 'Typografie',\n },\n admin: {\n initCollapsed: true,\n className: 'tm-section-typography',\n description: {\n en: 'Choose font families and base typography settings. Leave fields on \"Use preset\" to inherit the theme defaults.',\n cs: 'Zvolte rodiny písem a základní typografické nastavení. Hodnota \"Použít výchozí\" zachová nastavení motivu.',\n },\n },\n fields: [\n {\n name: 'typography',\n type: 'group',\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'bodyFont',\n type: 'select',\n label: {\n en: 'Body font',\n cs: 'Písmo pro text',\n },\n defaultValue: 'preset',\n options: [...BODY_FONT_OPTIONS],\n admin: {\n width: '50%',\n components: {\n Field: '@kilivi/payloadcms-theme-management/fields/FontSelectField',\n },\n },\n dbName: 'body_font',\n },\n {\n name: 'headingFont',\n type: 'select',\n label: {\n en: 'Heading font',\n cs: 'Písmo pro nadpisy',\n },\n defaultValue: 'preset',\n options: [...HEADING_FONT_OPTIONS],\n admin: {\n width: '50%',\n components: {\n Field: '@kilivi/payloadcms-theme-management/fields/FontSelectField',\n },\n },\n dbName: 'heading_font',\n },\n ],\n },\n {\n type: 'row',\n fields: [\n {\n name: 'bodyFontCustom',\n type: 'text',\n label: {\n en: 'Custom body font stack',\n cs: 'Vlastní písmo pro text',\n },\n admin: {\n width: '50%',\n placeholder: '\"IBM Plex Sans\", sans-serif',\n description: {\n en: 'Provide full CSS font-family stack when using a custom font.',\n cs: 'Při volbě vlastního písma zadejte celý CSS zápis font-family.',\n },\n condition: (_, siblingData) => siblingData?.bodyFont === 'custom',\n },\n },\n {\n name: 'headingFontCustom',\n type: 'text',\n label: {\n en: 'Custom heading font stack',\n cs: 'Vlastní písmo pro nadpisy',\n },\n admin: {\n width: '50%',\n placeholder: '\"Cormorant Garamond\", serif',\n description: {\n en: 'Provide full CSS font-family stack when using a custom heading font.',\n cs: 'Při volbě vlastního nadpisového písma zadejte celý CSS zápis font-family.',\n },\n condition: (_, siblingData) => siblingData?.headingFont === 'custom',\n },\n },\n ],\n },\n {\n type: 'row',\n fields: [\n {\n name: 'baseFontSize',\n type: 'select',\n label: {\n en: 'Base font size',\n cs: 'Základní velikost písma',\n },\n defaultValue: 'preset',\n options: BASE_FONT_SIZE_OPTIONS.map((option) => ({\n label: option.label,\n value: option.value,\n })),\n admin: {\n width: '50%',\n },\n dbName: 'base_font_size',\n },\n {\n name: 'lineHeight',\n type: 'select',\n label: {\n en: 'Line height',\n cs: 'Řádkování',\n },\n defaultValue: 'preset',\n options: LINE_HEIGHT_OPTIONS.map((option) => ({\n label: option.label,\n value: option.value,\n })),\n admin: {\n width: '50%',\n },\n dbName: 'line_height',\n },\n ],\n },\n ],\n },\n ],\n })\n\n const customPresetsField: Field = {\n type: 'collapsible',\n label: {\n en: 'Custom Theme Presets',\n cs: 'Vlastní motivy',\n },\n admin: {\n initCollapsed: true,\n className: 'tm-section-custom-presets',\n description: {\n en: 'Import additional theme presets via JSON to extend or override the defaults. These presets become available instantly in the Theme Selection above.',\n cs: 'Importujte další motivy pomocí JSONu a rozšiřte nebo přepište výchozí nabídku. Motivy budou ihned k dispozici ve výběru výše.',\n },\n },\n fields: [\n {\n name: 'customThemePresets',\n type: 'json',\n label: {\n en: 'Custom Preset JSON',\n cs: 'JSON s vlastními motivy',\n },\n admin: {\n description: {\n en: 'Paste or import an array (or object map) of theme presets. Each entry should include at least a unique \"name\" and \"label\" with optional lightMode/darkMode colors.',\n cs: 'Vložte nebo importujte pole (či objekt) motivů. Každý motiv musí mít unikátní „name“ a „label“ a volitelně barvy pro světlý a tmavý režim.',\n },\n components: {\n Field: '@kilivi/payloadcms-theme-management/fields/ThemePresetImportField',\n },\n },\n },\n ],\n }\n\n fields.push(customPresetsField)\n\n // Visual Effects — glassmorphism, shadows, border style\n fields.push({\n type: 'collapsible',\n label: {\n en: 'Visual Effects',\n cs: 'Vizuální efekty',\n },\n admin: {\n initCollapsed: true,\n className: 'tm-section-effects',\n description: {\n en: 'Configure UI effect style, shadow intensity and border appearance.',\n cs: 'Nastavte styl efektů UI, intenzitu stínů a vzhled okrajů.',\n },\n },\n fields: [\n {\n name: 'visualEffects',\n type: 'group',\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'effectStyle',\n type: 'select',\n label: {\n en: 'Effect Style',\n cs: 'Styl efektů',\n },\n defaultValue: 'flat',\n options: [\n { label: { en: 'Flat', cs: 'Plochý' }, value: 'flat' },\n {\n label: { en: 'Elevated (Box shadows)', cs: 'Vyvýšený (stíny)' },\n value: 'elevated',\n },\n {\n label: {\n en: 'Glassmorphism (Frosted glass)',\n cs: 'Glassmorphism (mléčné sklo)',\n },\n value: 'glass',\n },\n {\n label: { en: 'Neumorphism (Soft UI)', cs: 'Neumorphism (měkké UI)' },\n value: 'neumorphic',\n },\n {\n label: { en: 'Claymorphism (Clay-like)', cs: 'Claymorphism (hlína)' },\n value: 'clay',\n },\n ],\n admin: {\n description: {\n en: 'Visual style applied to cards, panels and interactive elements.',\n cs: 'Vizuální styl karet, panelů a interaktivních prvků.',\n },\n width: '50%',\n },\n dbName: 'effect_style',\n },\n {\n name: 'shadowIntensity',\n type: 'select',\n label: {\n en: 'Shadow Intensity',\n cs: 'Intenzita stínů',\n },\n defaultValue: 'medium',\n options: [\n { label: { en: 'None', cs: 'Žádné' }, value: 'none' },\n { label: { en: 'Subtle', cs: 'Jemné' }, value: 'subtle' },\n { label: { en: 'Medium', cs: 'Střední' }, value: 'medium' },\n { label: { en: 'Strong', cs: 'Silné' }, value: 'strong' },\n { label: { en: 'Dramatic', cs: 'Dramatické' }, value: 'dramatic' },\n ],\n admin: {\n description: {\n en: 'Global shadow depth for elevated elements.',\n cs: 'Globální hloubka stínů pro vyvýšené prvky.',\n },\n width: '50%',\n },\n dbName: 'shadow_intensity',\n },\n ],\n },\n {\n type: 'row',\n fields: [\n {\n name: 'backdropBlur',\n type: 'select',\n label: {\n en: 'Backdrop Blur',\n cs: 'Rozmazání pozadí',\n },\n defaultValue: 'none',\n options: [\n { label: { en: 'None', cs: 'Žádné' }, value: 'none' },\n { label: { en: 'Slight (4px)', cs: 'Jemné (4px)' }, value: 'slight' },\n { label: { en: 'Medium (8px)', cs: 'Střední (8px)' }, value: 'medium' },\n { label: { en: 'Strong (16px)', cs: 'Silné (16px)' }, value: 'strong' },\n { label: { en: 'Heavy (24px)', cs: 'Intenzivní (24px)' }, value: 'heavy' },\n ],\n admin: {\n description: {\n en: 'Blur effect behind translucent elements (requires glass effect style).',\n cs: 'Rozmazání za průhledné prvky (vyžaduje styl skla).',\n },\n width: '50%',\n },\n dbName: 'backdrop_blur',\n },\n {\n name: 'borderStyle',\n type: 'select',\n label: {\n en: 'Border Style',\n cs: 'Styl okrajů',\n },\n defaultValue: 'solid',\n options: [\n { label: { en: 'None', cs: 'Žádné' }, value: 'none' },\n { label: { en: 'Solid', cs: 'Plné' }, value: 'solid' },\n { label: { en: 'Dashed', cs: 'Čárkované' }, value: 'dashed' },\n { label: { en: 'Dotted', cs: 'Tečkované' }, value: 'dotted' },\n { label: { en: 'Double', cs: 'Dvojité' }, value: 'double' },\n ],\n admin: {\n description: {\n en: 'Default border style for cards, inputs and dividers.',\n cs: 'Výchozí styl okrajů pro karty, vstupy a oddělovače.',\n },\n width: '50%',\n },\n dbName: 'border_style',\n },\n ],\n },\n {\n type: 'row',\n fields: [\n {\n name: 'borderWidth',\n type: 'select',\n label: {\n en: 'Border Width',\n cs: 'Tloušťka okraje',\n },\n defaultValue: '1px',\n options: [\n { label: '0px', value: '0px' },\n { label: '1px', value: '1px' },\n { label: '2px', value: '2px' },\n { label: '3px', value: '3px' },\n { label: '4px', value: '4px' },\n ],\n admin: { width: '50%' },\n dbName: 'border_width',\n },\n {\n name: 'glassOpacity',\n type: 'number',\n label: {\n en: 'Glass Opacity (%)',\n cs: 'Průhlednost skla (%)',\n },\n defaultValue: 60,\n min: 0,\n max: 100,\n admin: {\n description: {\n en: 'Card/panel opacity when using glass effect (0 = fully transparent, 100 = opaque).',\n cs: 'Průhlednost karet/panelů při skleněném efektu (0 = plně průhledné, 100 = neprůhledné).',\n },\n width: '50%',\n condition: (_, siblingData) => siblingData?.effectStyle === 'glass',\n },\n },\n ],\n },\n ],\n },\n ],\n })\n\n // Component Styles — buttons, cards, images, icons\n fields.push({\n type: 'collapsible',\n label: {\n en: 'Component Styles',\n cs: 'Styly komponent',\n },\n admin: {\n initCollapsed: true,\n className: 'tm-section-components',\n description: {\n en: 'Customize button variant, card style and navbar appearance.',\n cs: 'Přizpůsobte styl tlačítek, karet a navigační lišty.',\n },\n },\n fields: [\n {\n name: 'componentStyles',\n type: 'group',\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'buttonVariant',\n type: 'select',\n label: {\n en: 'Primary Button Style',\n cs: 'Styl primárního tlačítka',\n },\n defaultValue: 'filled',\n options: [\n { label: { en: 'Filled (solid)', cs: 'Plné (solid)' }, value: 'filled' },\n { label: { en: 'Outlined', cs: 'Ohraničené' }, value: 'outlined' },\n { label: { en: 'Ghost (transparent)', cs: 'Průhledné' }, value: 'ghost' },\n { label: { en: 'Gradient', cs: 'Přechodové' }, value: 'gradient' },\n {\n label: { en: 'Pill (full rounded)', cs: 'Pill (plné zaoblení)' },\n value: 'pill',\n },\n {\n label: { en: 'Brutalist (thick border)', cs: 'Brutalistické (silný okraj)' },\n value: 'brutal',\n },\n ],\n admin: {\n description: {\n en: 'Default visual style of primary action buttons.',\n cs: 'Výchozí vizuální styl primárních tlačítek.',\n },\n width: '50%',\n },\n dbName: 'button_variant',\n },\n {\n name: 'buttonSize',\n type: 'select',\n label: {\n en: 'Button Size',\n cs: 'Velikost tlačítka',\n },\n defaultValue: 'medium',\n options: [\n { label: { en: 'Small', cs: 'Malé' }, value: 'small' },\n { label: { en: 'Medium', cs: 'Střední' }, value: 'medium' },\n { label: { en: 'Large', cs: 'Velké' }, value: 'large' },\n { label: { en: 'XL', cs: 'XL' }, value: 'xl' },\n ],\n admin: {\n description: {\n en: 'Default padding / font-size of buttons.',\n cs: 'Výchozí odsazení a velikost písma tlačítek.',\n },\n width: '50%',\n },\n dbName: 'button_size',\n },\n ],\n },\n {\n type: 'row',\n fields: [\n {\n name: 'cardStyle',\n type: 'select',\n label: {\n en: 'Card Style',\n cs: 'Styl karet',\n },\n defaultValue: 'elevated',\n options: [\n { label: { en: 'Elevated (shadow)', cs: 'Vyvýšené (stín)' }, value: 'elevated' },\n { label: { en: 'Flat (no shadow)', cs: 'Ploché (bez stínu)' }, value: 'flat' },\n { label: { en: 'Bordered', cs: 'S okrajem' }, value: 'bordered' },\n { label: { en: 'Glass', cs: 'Skleněné' }, value: 'glass' },\n { label: { en: 'Neumorphic', cs: 'Neumorfní' }, value: 'neumorphic' },\n {\n label: { en: 'Gradient border', cs: 'Přechodový okraj' },\n value: 'gradient-border',\n },\n ],\n admin: {\n description: {\n en: 'Default card/panel visual style across the website.',\n cs: 'Výchozí vizuální styl karet a panelů na webu.',\n },\n width: '50%',\n },\n dbName: 'card_style',\n },\n {\n name: 'cardHoverEffect',\n type: 'select',\n label: {\n en: 'Card Hover Effect',\n cs: 'Efekt při najetí na kartu',\n },\n defaultValue: 'lift',\n options: [\n { label: { en: 'None', cs: 'Žádný' }, value: 'none' },\n {\n label: { en: 'Lift (translate up)', cs: 'Zvednutí (posun nahoru)' },\n value: 'lift',\n },\n { label: { en: 'Scale up', cs: 'Zvětšení' }, value: 'scale' },\n { label: { en: 'Shadow grow', cs: 'Větší stín' }, value: 'shadow' },\n { label: { en: 'Border glow', cs: 'Zářící okraj' }, value: 'glow' },\n { label: { en: 'Tilt 3D', cs: '3D náklon' }, value: 'tilt' },\n ],\n admin: {\n width: '50%',\n },\n dbName: 'card_hover_effect',\n },\n ],\n },\n\n {\n type: 'row',\n fields: [\n {\n name: 'navbarStyle',\n type: 'select',\n label: {\n en: 'Navbar Style',\n cs: 'Styl navigace',\n },\n defaultValue: 'solid',\n options: [\n { label: { en: 'Solid', cs: 'Plná' }, value: 'solid' },\n {\n label: { en: 'Transparent (on hero)', cs: 'Průhledná (nad hero)' },\n value: 'transparent',\n },\n { label: { en: 'Blurred glass', cs: 'Rozmazané sklo' }, value: 'blur' },\n { label: { en: 'Floating', cs: 'Plovoucí' }, value: 'floating' },\n {\n label: {\n en: 'Minimal (bottom border only)',\n cs: 'Minimalistická (jen spodní okraj)',\n },\n value: 'minimal',\n },\n ],\n admin: {\n description: {\n en: 'Navigation bar visual style.',\n cs: 'Vizuální styl navigační lišty.',\n },\n width: '50%',\n },\n dbName: 'navbar_style',\n },\n {\n name: 'footerStyle',\n type: 'select',\n label: {\n en: 'Footer Style',\n cs: 'Styl patičky',\n },\n defaultValue: 'standard',\n options: [\n { label: { en: 'Standard', cs: 'Standardní' }, value: 'standard' },\n { label: { en: 'Minimal', cs: 'Minimalistická' }, value: 'minimal' },\n { label: { en: 'Dark', cs: 'Tmavá' }, value: 'dark' },\n {\n label: { en: 'Gradient top edge', cs: 'Gradient horní hrana' },\n value: 'gradient-top',\n },\n { label: { en: 'Full colour', cs: 'Plná barva' }, value: 'full-color' },\n ],\n admin: {\n description: {\n en: 'Footer visual style.',\n cs: 'Vizuální styl patičky.',\n },\n width: '50%',\n },\n dbName: 'footer_style',\n },\n ],\n },\n {\n type: 'row',\n fields: [\n {\n name: 'imageStyle',\n type: 'select',\n label: {\n en: 'Image Style',\n cs: 'Styl obrázků',\n },\n defaultValue: 'default',\n options: [\n { label: { en: 'Default', cs: 'Výchozí' }, value: 'default' },\n { label: { en: 'Rounded', cs: 'Zaoblené' }, value: 'rounded' },\n { label: { en: 'Circle', cs: 'Kruhové' }, value: 'circle' },\n { label: { en: 'Vignette', cs: 'Vinětace' }, value: 'vignette' },\n { label: { en: 'Grayscale', cs: 'Černobílé' }, value: 'grayscale' },\n { label: { en: 'Duotone', cs: 'Duotón' }, value: 'duotone' },\n { label: { en: 'Polaroid', cs: 'Polaroid' }, value: 'polaroid' },\n ],\n admin: {\n description: {\n en: 'Default treatment for content images (applied via [data-img] / .themed-image).',\n cs: 'Výchozí úprava obsahových obrázků (přes [data-img] / .themed-image).',\n },\n width: '50%',\n },\n dbName: 'image_style',\n },\n {\n name: 'linkStyle',\n type: 'select',\n label: {\n en: 'Link Style',\n cs: 'Styl odkazů',\n },\n defaultValue: 'underline-hover',\n options: [\n { label: { en: 'Always underlined', cs: 'Vždy podtržené' }, value: 'underline' },\n {\n label: { en: 'Underline on hover', cs: 'Podtržení při najetí' },\n value: 'underline-hover',\n },\n { label: { en: 'No underline', cs: 'Bez podtržení' }, value: 'none' },\n { label: { en: 'Highlight', cs: 'Zvýraznění' }, value: 'highlight' },\n {\n label: { en: 'Animated underline', cs: 'Animované podtržení' },\n value: 'animated',\n },\n ],\n admin: {\n description: {\n en: 'Default style for in-content links (applied via [data-link] / .themed-link).',\n cs: 'Výchozí styl odkazů v obsahu (přes [data-link] / .themed-link).',\n },\n width: '50%',\n },\n dbName: 'link_style',\n },\n ],\n },\n {\n type: 'row',\n fields: [\n {\n name: 'enableScrollReveal',\n type: 'checkbox',\n label: {\n en: 'Scroll reveal animations',\n cs: 'Animace při scrollování',\n },\n defaultValue: true,\n admin: {\n description: {\n en: 'Reveal elements as they enter the viewport.',\n cs: 'Odhalovat prvky při vstupu do viewportu.',\n },\n width: '50%',\n },\n },\n {\n name: 'enableHoverAnimations',\n type: 'checkbox',\n label: {\n en: 'Hover micro-animations',\n cs: 'Hover mikro-animace',\n },\n defaultValue: true,\n admin: {\n description: {\n en: 'Subtle motion on interactive elements when hovered.',\n cs: 'Jemný pohyb interaktivních prvků při najetí.',\n },\n width: '50%',\n },\n },\n ],\n },\n ],\n },\n ],\n })\n\n if (customThemeConfigurationFields?.length) {\n fields.push(...customThemeConfigurationFields)\n }\n\n if (customThemeConfigurationSections?.length) {\n customThemeConfigurationSections.forEach((section) => {\n fields.push({\n type: 'collapsible',\n label: section.label,\n admin: {\n initCollapsed: section.initCollapsed ?? true,\n description: section.description,\n },\n fields: section.fields,\n })\n })\n }\n\n // Advanced Settings (when using extended theme configuration)\n if (enableAdvancedFeatures) {\n const advancedFields: Field[] = [\n {\n name: 'animationLevel',\n type: 'select',\n label: {\n en: 'Animation Level',\n cs: 'Úroveň animací',\n },\n defaultValue: 'medium',\n options: [\n { label: { en: 'None', cs: 'Žádné' }, value: 'none' },\n { label: { en: 'Reduced', cs: 'Snížené' }, value: 'reduced' },\n { label: { en: 'Medium', cs: 'Střední' }, value: 'medium' },\n { label: { en: 'High', cs: 'Vysoké' }, value: 'high' },\n ],\n admin: {\n description: {\n en: 'Control website animations and transitions',\n cs: 'Kontrola animací a přechodů na webu',\n },\n width: '50%',\n },\n dbName: 'animation_level',\n },\n ]\n\n if (includeCustomCSS) {\n advancedFields.push({\n name: 'customCSS',\n type: 'code',\n label: {\n en: 'Custom CSS',\n cs: 'Vlastní CSS',\n },\n admin: {\n language: 'css',\n description: {\n en: 'Add custom CSS to override default styles',\n cs: 'Přidejte vlastní CSS pro přepsání výchozích stylů',\n },\n // placeholder:\n // ':root {\\n --primary: #your-color;\\n --border-radius: 8px;\\n --font-family: \"Your Font\";\\n}\\n\\n.custom-class {\\n /* Your custom styles */\\n}',\n // rows: 8,\n },\n })\n }\n\n fields.push({\n type: 'collapsible',\n label: {\n en: 'Advanced Settings',\n cs: 'Pokročilé nastavení',\n },\n admin: {\n initCollapsed: true,\n className: 'tm-section-advanced',\n },\n fields: advancedFields,\n })\n }\n\n // Return as tab configuration to be injected into tabs structure\n return {\n label: {\n en: 'Appearance Settings',\n cs: 'Nastavení vzhledu',\n },\n fields: [\n {\n name: 'themeConfiguration',\n type: 'group',\n admin: {\n className: 'tm-appearance',\n description: {\n en: 'Appearance and style of the whole website',\n cs: 'Vzhled a styl celého webu',\n },\n },\n fields,\n },\n ],\n }\n}\n"],"names":["BASE_FONT_SIZE_OPTIONS","BODY_FONT_OPTIONS","HEADING_FONT_OPTIONS","LINE_HEIGHT_OPTIONS","getTranslations","darkModeField","lightModeField","createThemeConfigurationField","options","themePresets","defaultTheme","includeColorModeToggle","includeCustomCSS","enableAdvancedFeatures","useThemePreviewField","customThemeConfigurationFields","customThemeConfigurationSections","fields","name","type","required","defaultValue","label","en","cs","validate","value","trim","length","req","i18n","language","ui","selectThemeError","admin","description","components","Field","custom","push","initCollapsed","className","width","dbName","placeholder","condition","_","siblingData","bodyFont","headingFont","map","option","customPresetsField","min","max","effectStyle","forEach","section","advancedFields"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/fields/themeConfigurationField.ts"],"sourcesContent":["import type { Field, TabsField } from 'payload'\nimport {\n BASE_FONT_SIZE_OPTIONS,\n BODY_FONT_OPTIONS,\n HEADING_FONT_OPTIONS,\n HEADING_WEIGHT_OPTIONS,\n LETTER_SPACING_OPTIONS,\n LINE_HEIGHT_OPTIONS,\n} from '../constants/themeFonts.js'\nimport type { ThemePreset } from '../index.js'\nimport { getTranslations } from '../translations.js'\nimport { darkModeField, lightModeField } from './colorModeFields.js'\n\ninterface ThemeConfigurationFieldOptions {\n themePresets: ThemePreset[]\n defaultTheme: string\n includeColorModeToggle: boolean\n includeCustomCSS: boolean\n includeBrandIdentity: boolean\n enableAdvancedFeatures?: boolean\n useThemePreviewField?: boolean\n customThemeConfigurationFields?: Field[]\n customThemeConfigurationSections?: Array<{\n label: string | Record<string, string>\n fields: Field[]\n initCollapsed?: boolean\n description?: string | Record<string, string>\n }>\n}\n\n// Type for admin.custom property to avoid ts-expect-error\ninterface ThemeAdminCustom {\n themePresets?: ThemePreset[]\n useThemePreviewField?: boolean\n}\n\n// Type for a single tab (not the full TabsField)\nexport type ThemeTab = NonNullable<TabsField['tabs']>[number]\n\n/**\n * Theme Configuration Field with Theme Selection as default value setter\n * Theme Selection populates lightMode/darkMode colors automatically\n */\nexport function createThemeConfigurationField(options: ThemeConfigurationFieldOptions): ThemeTab {\n const {\n themePresets,\n defaultTheme,\n includeColorModeToggle,\n includeCustomCSS,\n enableAdvancedFeatures = true,\n useThemePreviewField = true,\n customThemeConfigurationFields,\n customThemeConfigurationSections,\n } = options\n\n const fields: Field[] = [\n // NOTE: the palette generator is rendered *inside* ThemePreviewField (in the\n // preset column, above the preset list) — it is not a separate UI field.\n {\n name: 'theme',\n type: 'text',\n required: true,\n defaultValue: defaultTheme,\n label: {\n en: 'Theme Selection',\n cs: 'Výběr motivu',\n },\n validate: (value: unknown, options?: { req?: { i18n?: { language?: string } } }) => {\n if (typeof value === 'string' && value.trim().length > 0) {\n return true\n }\n return getTranslations(options?.req?.i18n?.language ?? 'en').ui.selectThemeError\n },\n admin: {\n description: {\n en: 'Pick a theme to fill in the colours. You can fine-tune them afterwards.',\n cs: 'Vyberte motiv a barvy se předvyplní. Potom je můžete dál upravovat.',\n },\n components: {\n Field: '@kilivi/payloadcms-theme-management/fields/ThemePreviewField',\n },\n custom: {\n themePresets,\n useThemePreviewField,\n } as ThemeAdminCustom,\n },\n },\n ]\n\n // Live preview: colours, fonts and component styles in one place. On wide admins\n // it occupies a sticky right-hand column spanning the whole tab (see\n // ThemePreviewField.css, `.tm-appearance`); on narrow ones it follows the theme picker.\n fields.push({\n name: 'appearancePreview',\n type: 'ui',\n admin: {\n components: {\n Field: '@kilivi/payloadcms-theme-management/fields/AppearancePreviewField',\n },\n },\n })\n\n // Style Preset - visual style selection independent of colors\n fields.push({\n type: 'collapsible',\n label: {\n en: 'Style Preset',\n cs: 'Styl vzhledu',\n },\n admin: {\n initCollapsed: true,\n className: 'tm-section-style-preset',\n description: {\n en: 'Choose a visual style (Brutalism, Swiss, Glassmorphism …) without changing the colour palette.',\n cs: 'Zvolte vizuální styl (Brutalismus, Švýcarský, Glassmorphism …) bez změny barevné palety.',\n },\n },\n fields: [\n {\n name: 'stylePreset',\n type: 'text',\n label: {\n en: 'Active Style Preset',\n cs: 'Aktivní styl vzhledu',\n },\n defaultValue: '',\n admin: {\n components: {\n Field: '@kilivi/payloadcms-theme-management/fields/StylePresetField',\n },\n },\n },\n ],\n })\n\n // Typography - Always visible\n fields.push({\n type: 'collapsible',\n label: {\n en: 'Typography',\n cs: 'Typografie',\n },\n admin: {\n initCollapsed: true,\n className: 'tm-section-typography',\n description: {\n en: 'Fonts, text size and the character of headings. \"Use theme preset\" keeps the colour theme’s defaults.',\n cs: 'Písma, velikost textu a charakter nadpisů. „Podle motivu“ ponechá výchozí nastavení barevného motivu.',\n },\n },\n fields: [\n {\n name: 'typography',\n type: 'group',\n // The collapsible around it already carries the heading.\n label: false,\n admin: { hideGutter: true },\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'bodyFont',\n type: 'select',\n label: {\n en: 'Body font',\n cs: 'Písmo pro text',\n },\n defaultValue: 'preset',\n options: [...BODY_FONT_OPTIONS],\n admin: {\n width: '50%',\n components: {\n Field: '@kilivi/payloadcms-theme-management/fields/FontSelectField',\n },\n },\n dbName: 'body_font',\n },\n {\n name: 'headingFont',\n type: 'select',\n label: {\n en: 'Heading font',\n cs: 'Písmo pro nadpisy',\n },\n defaultValue: 'preset',\n options: [...HEADING_FONT_OPTIONS],\n admin: {\n width: '50%',\n components: {\n Field: '@kilivi/payloadcms-theme-management/fields/FontSelectField',\n },\n },\n dbName: 'heading_font',\n },\n ],\n },\n {\n type: 'row',\n fields: [\n {\n name: 'bodyFontCustom',\n type: 'text',\n label: {\n en: 'Custom body font stack',\n cs: 'Vlastní písmo pro text',\n },\n admin: {\n width: '50%',\n placeholder: '\"IBM Plex Sans\", sans-serif',\n description: {\n en: 'Provide full CSS font-family stack when using a custom font.',\n cs: 'Při volbě vlastního písma zadejte celý CSS zápis font-family.',\n },\n condition: (_, siblingData) => siblingData?.bodyFont === 'custom',\n },\n },\n {\n name: 'headingFontCustom',\n type: 'text',\n label: {\n en: 'Custom heading font stack',\n cs: 'Vlastní písmo pro nadpisy',\n },\n admin: {\n width: '50%',\n placeholder: '\"Cormorant Garamond\", serif',\n description: {\n en: 'Provide full CSS font-family stack when using a custom heading font.',\n cs: 'Při volbě vlastního nadpisového písma zadejte celý CSS zápis font-family.',\n },\n condition: (_, siblingData) => siblingData?.headingFont === 'custom',\n },\n },\n ],\n },\n {\n type: 'row',\n fields: [\n {\n name: 'baseFontSize',\n type: 'select',\n label: {\n en: 'Base font size',\n cs: 'Základní velikost písma',\n },\n defaultValue: 'preset',\n options: BASE_FONT_SIZE_OPTIONS,\n admin: {\n width: '50%',\n },\n dbName: 'base_font_size',\n },\n {\n name: 'lineHeight',\n type: 'select',\n label: {\n en: 'Line height',\n cs: 'Řádkování',\n },\n defaultValue: 'preset',\n options: LINE_HEIGHT_OPTIONS,\n admin: {\n width: '50%',\n },\n dbName: 'line_height',\n },\n ],\n },\n {\n type: 'row',\n fields: [\n {\n name: 'headingWeight',\n type: 'select',\n label: {\n en: 'Heading weight',\n cs: 'Tloušťka nadpisů',\n },\n defaultValue: 'preset',\n options: HEADING_WEIGHT_OPTIONS,\n admin: {\n width: '50%',\n },\n dbName: 'heading_weight',\n },\n {\n name: 'letterSpacing',\n type: 'select',\n label: {\n en: 'Heading letter spacing',\n cs: 'Prostrkání nadpisů',\n },\n defaultValue: 'preset',\n options: LETTER_SPACING_OPTIONS,\n admin: {\n width: '50%',\n description: {\n en: '\"Extra wide\" also sets headings in capitals.',\n cs: '„Velmi široké“ zároveň převede nadpisy na verzálky.',\n },\n },\n dbName: 'letter_spacing',\n },\n ],\n },\n ],\n },\n ],\n })\n\n // Shape & rhythm — corner rounding and spacing scale\n fields.push({\n type: 'row',\n fields: [\n {\n name: 'borderRadius',\n type: 'select',\n label: {\n en: 'Border Radius',\n cs: 'Zaoblení rohů',\n },\n defaultValue: 'medium',\n options: [\n { label: { en: 'None (0px)', cs: 'Žádné (0px)' }, value: 'none' },\n { label: { en: 'Small (0.25rem)', cs: 'Malé (0.25rem)' }, value: 'small' },\n { label: { en: 'Medium (0.5rem)', cs: 'Střední (0.5rem)' }, value: 'medium' },\n { label: { en: 'Large (0.75rem)', cs: 'Velké (0.75rem)' }, value: 'large' },\n { label: { en: 'XL (1rem)', cs: 'XL (1rem)' }, value: 'xl' },\n ],\n admin: {\n description: {\n en: 'Default corner rounding for UI elements',\n cs: 'Výchozí zaoblení rohů pro UI prvky',\n },\n width: '50%',\n },\n dbName: 'border_radius',\n },\n {\n name: 'spacing',\n type: 'select',\n label: {\n en: 'Spacing Scale',\n cs: 'Škála rozestupů',\n },\n defaultValue: 'medium',\n options: [\n { label: { en: 'Compact', cs: 'Kompaktní' }, value: 'compact' },\n { label: { en: 'Medium', cs: 'Střední' }, value: 'medium' },\n { label: { en: 'Comfortable', cs: 'Pohodlné' }, value: 'comfortable' },\n ],\n admin: {\n description: {\n en: 'Global spacing between elements',\n cs: 'Globální rozestupy mezi prvky',\n },\n width: '50%',\n },\n dbName: 'spacing',\n },\n ],\n })\n\n // Visual Effects — glassmorphism, shadows, border style\n fields.push({\n type: 'collapsible',\n label: {\n en: 'Visual Effects',\n cs: 'Vizuální efekty',\n },\n admin: {\n initCollapsed: true,\n className: 'tm-section-effects',\n description: {\n en: 'Configure UI effect style, shadow intensity and border appearance.',\n cs: 'Nastavte styl efektů UI, intenzitu stínů a vzhled okrajů.',\n },\n },\n fields: [\n {\n name: 'visualEffects',\n type: 'group',\n // The collapsible around it already carries the heading.\n label: false,\n admin: { hideGutter: true },\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'effectStyle',\n type: 'select',\n label: {\n en: 'Effect Style',\n cs: 'Styl efektů',\n },\n defaultValue: 'flat',\n options: [\n { label: { en: 'Flat', cs: 'Plochý' }, value: 'flat' },\n {\n label: { en: 'Elevated (Box shadows)', cs: 'Vyvýšený (stíny)' },\n value: 'elevated',\n },\n {\n label: {\n en: 'Glassmorphism (Frosted glass)',\n cs: 'Glassmorphism (mléčné sklo)',\n },\n value: 'glass',\n },\n {\n label: { en: 'Neumorphism (Soft UI)', cs: 'Neumorphism (měkké UI)' },\n value: 'neumorphic',\n },\n {\n label: { en: 'Claymorphism (Clay-like)', cs: 'Claymorphism (hlína)' },\n value: 'clay',\n },\n ],\n admin: {\n description: {\n en: 'Visual style applied to cards, panels and interactive elements.',\n cs: 'Vizuální styl karet, panelů a interaktivních prvků.',\n },\n width: '50%',\n },\n dbName: 'effect_style',\n },\n {\n name: 'shadowIntensity',\n type: 'select',\n label: {\n en: 'Shadow Intensity',\n cs: 'Intenzita stínů',\n },\n defaultValue: 'medium',\n options: [\n { label: { en: 'None', cs: 'Žádné' }, value: 'none' },\n { label: { en: 'Subtle', cs: 'Jemné' }, value: 'subtle' },\n { label: { en: 'Medium', cs: 'Střední' }, value: 'medium' },\n { label: { en: 'Strong', cs: 'Silné' }, value: 'strong' },\n { label: { en: 'Dramatic', cs: 'Dramatické' }, value: 'dramatic' },\n ],\n admin: {\n description: {\n en: 'Global shadow depth for elevated elements.',\n cs: 'Globální hloubka stínů pro vyvýšené prvky.',\n },\n width: '50%',\n },\n dbName: 'shadow_intensity',\n },\n ],\n },\n {\n type: 'row',\n fields: [\n {\n name: 'backdropBlur',\n type: 'select',\n label: {\n en: 'Backdrop Blur',\n cs: 'Rozmazání pozadí',\n },\n defaultValue: 'none',\n options: [\n { label: { en: 'None', cs: 'Žádné' }, value: 'none' },\n { label: { en: 'Slight (4px)', cs: 'Jemné (4px)' }, value: 'slight' },\n { label: { en: 'Medium (8px)', cs: 'Střední (8px)' }, value: 'medium' },\n { label: { en: 'Strong (16px)', cs: 'Silné (16px)' }, value: 'strong' },\n { label: { en: 'Heavy (24px)', cs: 'Intenzivní (24px)' }, value: 'heavy' },\n ],\n admin: {\n description: {\n en: 'Blur behind translucent glass panels.',\n cs: 'Rozostření za průsvitnými skleněnými panely.',\n },\n width: '50%',\n condition: (_, siblingData) => siblingData?.effectStyle === 'glass',\n },\n dbName: 'backdrop_blur',\n },\n {\n name: 'glassOpacity',\n type: 'number',\n label: {\n en: 'Glass Opacity (%)',\n cs: 'Průhlednost skla (%)',\n },\n defaultValue: 60,\n min: 0,\n max: 100,\n admin: {\n description: {\n en: 'Card/panel opacity when using glass effect (0 = fully transparent, 100 = opaque).',\n cs: 'Průhlednost karet/panelů při skleněném efektu (0 = plně průhledné, 100 = neprůhledné).',\n },\n width: '50%',\n condition: (_, siblingData) => siblingData?.effectStyle === 'glass',\n },\n },\n ],\n },\n {\n type: 'row',\n fields: [\n {\n name: 'borderStyle',\n type: 'select',\n label: {\n en: 'Border Style',\n cs: 'Styl okrajů',\n },\n defaultValue: 'solid',\n options: [\n { label: { en: 'None', cs: 'Žádné' }, value: 'none' },\n { label: { en: 'Solid', cs: 'Plné' }, value: 'solid' },\n { label: { en: 'Dashed', cs: 'Čárkované' }, value: 'dashed' },\n { label: { en: 'Dotted', cs: 'Tečkované' }, value: 'dotted' },\n { label: { en: 'Double', cs: 'Dvojité' }, value: 'double' },\n ],\n admin: {\n description: {\n en: 'Default border style for cards, inputs and dividers.',\n cs: 'Výchozí styl okrajů pro karty, vstupy a oddělovače.',\n },\n width: '50%',\n },\n dbName: 'border_style',\n },\n {\n name: 'borderWidth',\n type: 'select',\n label: {\n en: 'Border Width',\n cs: 'Tloušťka okraje',\n },\n defaultValue: '1px',\n options: [\n { label: '0px', value: '0px' },\n { label: '1px', value: '1px' },\n { label: '2px', value: '2px' },\n { label: '3px', value: '3px' },\n { label: '4px', value: '4px' },\n ],\n admin: {\n width: '50%',\n condition: (_, siblingData) => siblingData?.borderStyle !== 'none',\n },\n dbName: 'border_width',\n },\n ],\n },\n ],\n },\n ],\n })\n\n // Component Styles — buttons, cards, images, icons\n fields.push({\n type: 'collapsible',\n label: {\n en: 'Component Styles',\n cs: 'Styly komponent',\n },\n admin: {\n initCollapsed: true,\n className: 'tm-section-components',\n description: {\n en: 'Customize button variant, card style and navbar appearance.',\n cs: 'Přizpůsobte styl tlačítek, karet a navigační lišty.',\n },\n },\n fields: [\n {\n name: 'componentStyles',\n type: 'group',\n // The collapsible around it already carries the heading.\n label: false,\n admin: { hideGutter: true },\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'buttonVariant',\n type: 'select',\n label: {\n en: 'Primary Button Style',\n cs: 'Styl primárního tlačítka',\n },\n defaultValue: 'filled',\n options: [\n { label: { en: 'Filled (solid)', cs: 'Plné (solid)' }, value: 'filled' },\n { label: { en: 'Outlined', cs: 'Ohraničené' }, value: 'outlined' },\n { label: { en: 'Ghost (transparent)', cs: 'Průhledné' }, value: 'ghost' },\n { label: { en: 'Gradient', cs: 'Přechodové' }, value: 'gradient' },\n {\n label: { en: 'Pill (full rounded)', cs: 'Pill (plné zaoblení)' },\n value: 'pill',\n },\n {\n label: { en: 'Brutalist (thick border)', cs: 'Brutalistické (silný okraj)' },\n value: 'brutal',\n },\n ],\n admin: {\n description: {\n en: 'Default visual style of primary action buttons.',\n cs: 'Výchozí vizuální styl primárních tlačítek.',\n },\n width: '50%',\n },\n dbName: 'button_variant',\n },\n {\n name: 'buttonSize',\n type: 'select',\n label: {\n en: 'Button Size',\n cs: 'Velikost tlačítka',\n },\n defaultValue: 'medium',\n options: [\n { label: { en: 'Small', cs: 'Malé' }, value: 'small' },\n { label: { en: 'Medium', cs: 'Střední' }, value: 'medium' },\n { label: { en: 'Large', cs: 'Velké' }, value: 'large' },\n { label: { en: 'XL', cs: 'XL' }, value: 'xl' },\n ],\n admin: {\n description: {\n en: 'Default padding / font-size of buttons.',\n cs: 'Výchozí odsazení a velikost písma tlačítek.',\n },\n width: '50%',\n },\n dbName: 'button_size',\n },\n ],\n },\n {\n type: 'row',\n fields: [\n {\n name: 'cardStyle',\n type: 'select',\n label: {\n en: 'Card Style',\n cs: 'Styl karet',\n },\n defaultValue: 'elevated',\n options: [\n { label: { en: 'Elevated (shadow)', cs: 'Vyvýšené (stín)' }, value: 'elevated' },\n { label: { en: 'Flat (no shadow)', cs: 'Ploché (bez stínu)' }, value: 'flat' },\n { label: { en: 'Bordered', cs: 'S okrajem' }, value: 'bordered' },\n { label: { en: 'Glass', cs: 'Skleněné' }, value: 'glass' },\n { label: { en: 'Neumorphic', cs: 'Neumorfní' }, value: 'neumorphic' },\n {\n label: { en: 'Gradient border', cs: 'Přechodový okraj' },\n value: 'gradient-border',\n },\n ],\n admin: {\n description: {\n en: 'Default card/panel visual style across the website.',\n cs: 'Výchozí vizuální styl karet a panelů na webu.',\n },\n width: '50%',\n },\n dbName: 'card_style',\n },\n {\n name: 'cardHoverEffect',\n type: 'select',\n label: {\n en: 'Card Hover Effect',\n cs: 'Efekt při najetí na kartu',\n },\n defaultValue: 'lift',\n options: [\n { label: { en: 'None', cs: 'Žádný' }, value: 'none' },\n {\n label: { en: 'Lift (translate up)', cs: 'Zvednutí (posun nahoru)' },\n value: 'lift',\n },\n { label: { en: 'Scale up', cs: 'Zvětšení' }, value: 'scale' },\n { label: { en: 'Shadow grow', cs: 'Větší stín' }, value: 'shadow' },\n { label: { en: 'Border glow', cs: 'Zářící okraj' }, value: 'glow' },\n { label: { en: 'Tilt 3D', cs: '3D náklon' }, value: 'tilt' },\n ],\n admin: {\n width: '50%',\n },\n dbName: 'card_hover_effect',\n },\n ],\n },\n\n {\n type: 'row',\n fields: [\n {\n name: 'navbarStyle',\n type: 'select',\n label: {\n en: 'Navbar Style',\n cs: 'Styl navigace',\n },\n defaultValue: 'solid',\n options: [\n { label: { en: 'Solid', cs: 'Plná' }, value: 'solid' },\n {\n label: { en: 'Transparent (on hero)', cs: 'Průhledná (nad hero)' },\n value: 'transparent',\n },\n { label: { en: 'Blurred glass', cs: 'Rozmazané sklo' }, value: 'blur' },\n { label: { en: 'Floating', cs: 'Plovoucí' }, value: 'floating' },\n {\n label: {\n en: 'Minimal (bottom border only)',\n cs: 'Minimalistická (jen spodní okraj)',\n },\n value: 'minimal',\n },\n ],\n admin: {\n description: {\n en: 'Navigation bar visual style.',\n cs: 'Vizuální styl navigační lišty.',\n },\n width: '50%',\n },\n dbName: 'navbar_style',\n },\n {\n name: 'footerStyle',\n type: 'select',\n label: {\n en: 'Footer Style',\n cs: 'Styl patičky',\n },\n defaultValue: 'standard',\n options: [\n { label: { en: 'Standard', cs: 'Standardní' }, value: 'standard' },\n { label: { en: 'Minimal', cs: 'Minimalistická' }, value: 'minimal' },\n { label: { en: 'Dark', cs: 'Tmavá' }, value: 'dark' },\n {\n label: { en: 'Gradient top edge', cs: 'Gradient horní hrana' },\n value: 'gradient-top',\n },\n { label: { en: 'Full colour', cs: 'Plná barva' }, value: 'full-color' },\n ],\n admin: {\n description: {\n en: 'Footer visual style.',\n cs: 'Vizuální styl patičky.',\n },\n width: '50%',\n },\n dbName: 'footer_style',\n },\n ],\n },\n {\n type: 'row',\n fields: [\n {\n name: 'imageStyle',\n type: 'select',\n label: {\n en: 'Image Style',\n cs: 'Styl obrázků',\n },\n defaultValue: 'default',\n options: [\n { label: { en: 'Default', cs: 'Výchozí' }, value: 'default' },\n { label: { en: 'Rounded', cs: 'Zaoblené' }, value: 'rounded' },\n { label: { en: 'Circle', cs: 'Kruhové' }, value: 'circle' },\n { label: { en: 'Vignette', cs: 'Vinětace' }, value: 'vignette' },\n { label: { en: 'Grayscale', cs: 'Černobílé' }, value: 'grayscale' },\n { label: { en: 'Duotone', cs: 'Duotón' }, value: 'duotone' },\n { label: { en: 'Polaroid', cs: 'Polaroid' }, value: 'polaroid' },\n ],\n admin: {\n description: {\n en: 'How images inside page content are shown.',\n cs: 'Jak se zobrazují obrázky v obsahu stránek.',\n },\n width: '50%',\n },\n dbName: 'image_style',\n },\n {\n name: 'linkStyle',\n type: 'select',\n label: {\n en: 'Link Style',\n cs: 'Styl odkazů',\n },\n defaultValue: 'underline-hover',\n options: [\n { label: { en: 'Always underlined', cs: 'Vždy podtržené' }, value: 'underline' },\n {\n label: { en: 'Underline on hover', cs: 'Podtržení při najetí' },\n value: 'underline-hover',\n },\n { label: { en: 'No underline', cs: 'Bez podtržení' }, value: 'none' },\n { label: { en: 'Highlight', cs: 'Zvýraznění' }, value: 'highlight' },\n {\n label: { en: 'Animated underline', cs: 'Animované podtržení' },\n value: 'animated',\n },\n ],\n admin: {\n description: {\n en: 'How links inside text look.',\n cs: 'Jak vypadají odkazy v textu.',\n },\n width: '50%',\n },\n dbName: 'link_style',\n },\n ],\n },\n {\n type: 'row',\n fields: [\n {\n name: 'enableScrollReveal',\n type: 'checkbox',\n label: {\n en: 'Scroll reveal animations',\n cs: 'Animace při scrollování',\n },\n defaultValue: true,\n admin: {\n description: {\n en: 'Reveal elements as they enter the viewport.',\n cs: 'Odhalovat prvky při vstupu do viewportu.',\n },\n width: '50%',\n },\n },\n {\n name: 'enableHoverAnimations',\n type: 'checkbox',\n label: {\n en: 'Hover micro-animations',\n cs: 'Hover mikro-animace',\n },\n defaultValue: true,\n admin: {\n description: {\n en: 'Subtle motion on interactive elements when hovered.',\n cs: 'Jemný pohyb interaktivních prvků při najetí.',\n },\n width: '50%',\n },\n },\n ],\n },\n ],\n },\n ],\n })\n\n // Color Mode Settings\n if (includeColorModeToggle) {\n fields.push({\n type: 'collapsible',\n label: {\n en: 'Color Mode Settings',\n cs: 'Nastavení barevného režimu',\n },\n admin: {\n className: 'tm-section-colors',\n // Fine-tuning: collapsed by default so presets and the preview lead the tab.\n initCollapsed: true,\n description: {\n en: 'Individual light and dark mode colours. Edits here take precedence over the theme.',\n cs: 'Jednotlivé barvy světlého a tmavého režimu. Úpravy zde mají přednost před motivem.',\n },\n },\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'colorMode',\n type: 'select',\n label: {\n en: 'Default Color Mode',\n cs: 'Výchozí barevný režim',\n },\n defaultValue: 'auto',\n options: [\n {\n label: {\n en: 'Auto (System)',\n cs: 'Automaticky (Systém)',\n },\n value: 'auto',\n },\n {\n label: { en: 'Light', cs: 'Světlý' },\n value: 'light',\n },\n {\n label: { en: 'Dark', cs: 'Tmavý' },\n value: 'dark',\n },\n ],\n admin: {\n description: {\n en: 'Default color mode for visitors',\n cs: 'Výchozí barevný režim pro návštěvníky',\n },\n width: '50%',\n },\n dbName: 'color_mode',\n },\n {\n name: 'allowColorModeToggle',\n type: 'checkbox',\n label: {\n en: 'Enable Mode Toggle',\n cs: 'Povolit přepínač režimu',\n },\n defaultValue: true,\n admin: {\n description: {\n en: 'Let visitors switch modes',\n cs: 'Umožnit návštěvníkům přepínat režimy',\n },\n width: '50%',\n },\n },\n ],\n },\n lightModeField,\n darkModeField,\n {\n name: 'accessibilityAudit',\n type: 'ui',\n admin: {\n components: {\n Field: '@kilivi/payloadcms-theme-management/fields/AccessibilityAuditField',\n },\n },\n },\n {\n name: 'themeExport',\n type: 'ui',\n admin: {\n components: {\n Field: '@kilivi/payloadcms-theme-management/fields/ThemeExportField',\n },\n },\n },\n ],\n })\n }\n\n const customPresetsField: Field = {\n type: 'collapsible',\n label: {\n en: 'Custom Theme Presets',\n cs: 'Vlastní motivy',\n },\n admin: {\n initCollapsed: true,\n className: 'tm-section-custom-presets',\n description: {\n en: 'For developers: import extra colour themes as JSON. They appear in the theme list at the top straight away.',\n cs: 'Pro vývojáře: import dalších barevných motivů ve formátu JSON. Hned se objeví v seznamu motivů nahoře.',\n },\n },\n fields: [\n {\n name: 'customThemePresets',\n type: 'json',\n label: {\n en: 'Custom Preset JSON',\n cs: 'JSON s vlastními motivy',\n },\n admin: {\n description: {\n en: 'Paste or import an array (or object map) of theme presets. Each entry should include at least a unique \"name\" and \"label\" with optional lightMode/darkMode colors.',\n cs: 'Vložte nebo importujte pole (či objekt) motivů. Každý motiv musí mít unikátní „name“ a „label“ a volitelně barvy pro světlý a tmavý režim.',\n },\n components: {\n Field: '@kilivi/payloadcms-theme-management/fields/ThemePresetImportField',\n },\n },\n },\n ],\n }\n\n fields.push(customPresetsField)\n\n if (customThemeConfigurationFields?.length) {\n fields.push(...customThemeConfigurationFields)\n }\n\n if (customThemeConfigurationSections?.length) {\n customThemeConfigurationSections.forEach((section) => {\n fields.push({\n type: 'collapsible',\n label: section.label,\n admin: {\n initCollapsed: section.initCollapsed ?? true,\n description: section.description,\n },\n fields: section.fields,\n })\n })\n }\n\n // Advanced Settings (when using extended theme configuration)\n if (enableAdvancedFeatures) {\n const advancedFields: Field[] = [\n {\n name: 'animationLevel',\n type: 'select',\n label: {\n en: 'Animation Level',\n cs: 'Úroveň animací',\n },\n defaultValue: 'medium',\n options: [\n { label: { en: 'None', cs: 'Žádné' }, value: 'none' },\n { label: { en: 'Reduced', cs: 'Snížené' }, value: 'reduced' },\n { label: { en: 'Medium', cs: 'Střední' }, value: 'medium' },\n { label: { en: 'High', cs: 'Vysoké' }, value: 'high' },\n ],\n admin: {\n description: {\n en: 'Control website animations and transitions',\n cs: 'Kontrola animací a přechodů na webu',\n },\n width: '50%',\n },\n dbName: 'animation_level',\n },\n ]\n\n if (includeCustomCSS) {\n advancedFields.push({\n name: 'customCSS',\n type: 'code',\n label: {\n en: 'Custom CSS',\n cs: 'Vlastní CSS',\n },\n admin: {\n language: 'css',\n description: {\n en: 'Add custom CSS to override default styles',\n cs: 'Přidejte vlastní CSS pro přepsání výchozích stylů',\n },\n // placeholder:\n // ':root {\\n --primary: #your-color;\\n --border-radius: 8px;\\n --font-family: \"Your Font\";\\n}\\n\\n.custom-class {\\n /* Your custom styles */\\n}',\n // rows: 8,\n },\n })\n }\n\n fields.push({\n type: 'collapsible',\n label: {\n en: 'Advanced Settings',\n cs: 'Pokročilé nastavení',\n },\n admin: {\n initCollapsed: true,\n className: 'tm-section-advanced',\n },\n fields: advancedFields,\n })\n }\n\n // Return as tab configuration to be injected into tabs structure\n return {\n label: {\n en: 'Appearance Settings',\n cs: 'Nastavení vzhledu',\n },\n fields: [\n {\n name: 'themeConfiguration',\n type: 'group',\n admin: {\n className: 'tm-appearance',\n description: {\n en: 'Appearance and style of the whole website',\n cs: 'Vzhled a styl celého webu',\n },\n },\n fields,\n },\n ],\n }\n}\n"],"names":["BASE_FONT_SIZE_OPTIONS","BODY_FONT_OPTIONS","HEADING_FONT_OPTIONS","HEADING_WEIGHT_OPTIONS","LETTER_SPACING_OPTIONS","LINE_HEIGHT_OPTIONS","getTranslations","darkModeField","lightModeField","createThemeConfigurationField","options","themePresets","defaultTheme","includeColorModeToggle","includeCustomCSS","enableAdvancedFeatures","useThemePreviewField","customThemeConfigurationFields","customThemeConfigurationSections","fields","name","type","required","defaultValue","label","en","cs","validate","value","trim","length","req","i18n","language","ui","selectThemeError","admin","description","components","Field","custom","push","initCollapsed","className","hideGutter","width","dbName","placeholder","condition","_","siblingData","bodyFont","headingFont","effectStyle","min","max","borderStyle","customPresetsField","forEach","section","advancedFields"],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface NativeLivePreview {
|
|
2
|
+
/** Payload Live Preview is configured for this document. */
|
|
3
|
+
isEnabled: boolean;
|
|
4
|
+
/** The Live Preview iframe / popup is open. */
|
|
5
|
+
isOpen: boolean;
|
|
6
|
+
/** Opens the Live Preview panel (no-op when unavailable). */
|
|
7
|
+
open: () => void;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* State of Payload's native Live Preview for the current document. When it is
|
|
11
|
+
* available, the real site is the preview, so the plugin's mock previews step aside.
|
|
12
|
+
*/
|
|
13
|
+
export declare function useNativeLivePreview(): NativeLivePreview;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=useNativeLivePreview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useNativeLivePreview.d.ts","sourceRoot":"","sources":["../../src/hooks/useNativeLivePreview.ts"],"names":[],"mappings":"AAIA,UAAU,iBAAiB;IACzB,4DAA4D;IAC5D,SAAS,EAAE,OAAO,CAAA;IAClB,+CAA+C;IAC/C,MAAM,EAAE,OAAO,CAAA;IACf,6DAA6D;IAC7D,IAAI,EAAE,MAAM,IAAI,CAAA;CACjB;AAcD;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CAOxD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import * as PayloadUI from '@payloadcms/ui';
|
|
3
|
+
// `useLivePreviewContext` is exported at runtime but missing from some type
|
|
4
|
+
// chains and from unit-test mocks: fall back to "not available".
|
|
5
|
+
const useLivePreviewContextSafe = PayloadUI.useLivePreviewContext ?? (()=>({}));
|
|
6
|
+
/**
|
|
7
|
+
* State of Payload's native Live Preview for the current document. When it is
|
|
8
|
+
* available, the real site is the preview, so the plugin's mock previews step aside.
|
|
9
|
+
*/ export function useNativeLivePreview() {
|
|
10
|
+
const context = useLivePreviewContextSafe() ?? {};
|
|
11
|
+
return {
|
|
12
|
+
isEnabled: Boolean(context.isLivePreviewEnabled),
|
|
13
|
+
isOpen: Boolean(context.isLivePreviewing),
|
|
14
|
+
open: ()=>context.setIsLivePreviewing?.(true)
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=useNativeLivePreview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useNativeLivePreview.ts"],"sourcesContent":["'use client'\n\nimport * as PayloadUI from '@payloadcms/ui'\n\ninterface NativeLivePreview {\n /** Payload Live Preview is configured for this document. */\n isEnabled: boolean\n /** The Live Preview iframe / popup is open. */\n isOpen: boolean\n /** Opens the Live Preview panel (no-op when unavailable). */\n open: () => void\n}\n\ntype LivePreviewContextLike = {\n isLivePreviewEnabled?: boolean\n isLivePreviewing?: boolean\n setIsLivePreviewing?: (value: boolean) => void\n}\n\n// `useLivePreviewContext` is exported at runtime but missing from some type\n// chains and from unit-test mocks: fall back to \"not available\".\nconst useLivePreviewContextSafe: () => LivePreviewContextLike =\n (PayloadUI as unknown as { useLivePreviewContext?: () => LivePreviewContextLike })\n .useLivePreviewContext ?? (() => ({}))\n\n/**\n * State of Payload's native Live Preview for the current document. When it is\n * available, the real site is the preview, so the plugin's mock previews step aside.\n */\nexport function useNativeLivePreview(): NativeLivePreview {\n const context = useLivePreviewContextSafe() ?? {}\n return {\n isEnabled: Boolean(context.isLivePreviewEnabled),\n isOpen: Boolean(context.isLivePreviewing),\n open: () => context.setIsLivePreviewing?.(true),\n }\n}\n"],"names":["PayloadUI","useLivePreviewContextSafe","useLivePreviewContext","useNativeLivePreview","context","isEnabled","Boolean","isLivePreviewEnabled","isOpen","isLivePreviewing","open","setIsLivePreviewing"],"mappings":"AAAA;AAEA,YAAYA,eAAe,iBAAgB;AAiB3C,4EAA4E;AAC5E,iEAAiE;AACjE,MAAMC,4BACJ,AAACD,UACEE,qBAAqB,IAAK,CAAA,IAAO,CAAA,CAAC,CAAA,CAAC;AAExC;;;CAGC,GACD,OAAO,SAASC;IACd,MAAMC,UAAUH,+BAA+B,CAAC;IAChD,OAAO;QACLI,WAAWC,QAAQF,QAAQG,oBAAoB;QAC/CC,QAAQF,QAAQF,QAAQK,gBAAgB;QACxCC,MAAM,IAAMN,QAAQO,mBAAmB,GAAG;IAC5C;AACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Payload's REST API route (`routes.api`), '/api' by default. */
|
|
2
|
+
export declare function useApiRoute(): string;
|
|
3
|
+
/**
|
|
4
|
+
* Load catalog fonts into the admin document through the plugin's self-hosted
|
|
5
|
+
* font endpoint, so previews render in the real faces without the editor's
|
|
6
|
+
* browser contacting Google. One `<link>` per distinct font set, shared by every
|
|
7
|
+
* field that asks for the same set.
|
|
8
|
+
*/
|
|
9
|
+
export declare function useThemeFonts(values: Array<string | null | undefined>): void;
|
|
10
|
+
//# sourceMappingURL=useThemeFonts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useThemeFonts.d.ts","sourceRoot":"","sources":["../../src/hooks/useThemeFonts.ts"],"names":[],"mappings":"AAYA,kEAAkE;AAClE,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,IAAI,CAgB5E"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import * as PayloadUI from '@payloadcms/ui';
|
|
3
|
+
import { useEffect } from 'react';
|
|
4
|
+
import { buildThemeFontsHref } from '../constants/themeFonts.js';
|
|
5
|
+
// Tolerate a missing export (older Payload, unit-test mocks): fall back to '/api'.
|
|
6
|
+
const useConfigSafe = PayloadUI.useConfig ?? (()=>undefined);
|
|
7
|
+
/** Payload's REST API route (`routes.api`), '/api' by default. */ export function useApiRoute() {
|
|
8
|
+
return useConfigSafe()?.config?.routes?.api ?? '/api';
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Load catalog fonts into the admin document through the plugin's self-hosted
|
|
12
|
+
* font endpoint, so previews render in the real faces without the editor's
|
|
13
|
+
* browser contacting Google. One `<link>` per distinct font set, shared by every
|
|
14
|
+
* field that asks for the same set.
|
|
15
|
+
*/ export function useThemeFonts(values) {
|
|
16
|
+
const apiRoute = useApiRoute();
|
|
17
|
+
const href = buildThemeFontsHref(values, {
|
|
18
|
+
apiRoute
|
|
19
|
+
});
|
|
20
|
+
useEffect(()=>{
|
|
21
|
+
if (!href || typeof document === 'undefined') return;
|
|
22
|
+
const exists = [
|
|
23
|
+
...document.querySelectorAll('link[data-tm-fonts]')
|
|
24
|
+
].some((link)=>link.getAttribute('href') === href);
|
|
25
|
+
if (exists) return;
|
|
26
|
+
const link = document.createElement('link');
|
|
27
|
+
link.rel = 'stylesheet';
|
|
28
|
+
link.href = href;
|
|
29
|
+
link.dataset.tmFonts = '';
|
|
30
|
+
document.head.appendChild(link);
|
|
31
|
+
}, [
|
|
32
|
+
href
|
|
33
|
+
]);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=useThemeFonts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useThemeFonts.ts"],"sourcesContent":["'use client'\n\nimport * as PayloadUI from '@payloadcms/ui'\nimport { useEffect } from 'react'\nimport { buildThemeFontsHref } from '../constants/themeFonts.js'\n\ntype UseConfig = () => { config?: { routes?: { api?: string } } } | undefined\n\n// Tolerate a missing export (older Payload, unit-test mocks): fall back to '/api'.\nconst useConfigSafe: UseConfig =\n (PayloadUI as unknown as { useConfig?: UseConfig }).useConfig ?? (() => undefined)\n\n/** Payload's REST API route (`routes.api`), '/api' by default. */\nexport function useApiRoute(): string {\n return useConfigSafe()?.config?.routes?.api ?? '/api'\n}\n\n/**\n * Load catalog fonts into the admin document through the plugin's self-hosted\n * font endpoint, so previews render in the real faces without the editor's\n * browser contacting Google. One `<link>` per distinct font set, shared by every\n * field that asks for the same set.\n */\nexport function useThemeFonts(values: Array<string | null | undefined>): void {\n const apiRoute = useApiRoute()\n const href = buildThemeFontsHref(values, { apiRoute })\n\n useEffect(() => {\n if (!href || typeof document === 'undefined') return\n const exists = [...document.querySelectorAll<HTMLLinkElement>('link[data-tm-fonts]')].some(\n (link) => link.getAttribute('href') === href,\n )\n if (exists) return\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = href\n link.dataset.tmFonts = ''\n document.head.appendChild(link)\n }, [href])\n}\n"],"names":["PayloadUI","useEffect","buildThemeFontsHref","useConfigSafe","useConfig","undefined","useApiRoute","config","routes","api","useThemeFonts","values","apiRoute","href","document","exists","querySelectorAll","some","link","getAttribute","createElement","rel","dataset","tmFonts","head","appendChild"],"mappings":"AAAA;AAEA,YAAYA,eAAe,iBAAgB;AAC3C,SAASC,SAAS,QAAQ,QAAO;AACjC,SAASC,mBAAmB,QAAQ,6BAA4B;AAIhE,mFAAmF;AACnF,MAAMC,gBACJ,AAACH,UAAmDI,SAAS,IAAK,CAAA,IAAMC,SAAQ;AAElF,gEAAgE,GAChE,OAAO,SAASC;IACd,OAAOH,iBAAiBI,QAAQC,QAAQC,OAAO;AACjD;AAEA;;;;;CAKC,GACD,OAAO,SAASC,cAAcC,MAAwC;IACpE,MAAMC,WAAWN;IACjB,MAAMO,OAAOX,oBAAoBS,QAAQ;QAAEC;IAAS;IAEpDX,UAAU;QACR,IAAI,CAACY,QAAQ,OAAOC,aAAa,aAAa;QAC9C,MAAMC,SAAS;eAAID,SAASE,gBAAgB,CAAkB;SAAuB,CAACC,IAAI,CACxF,CAACC,OAASA,KAAKC,YAAY,CAAC,YAAYN;QAE1C,IAAIE,QAAQ;QACZ,MAAMG,OAAOJ,SAASM,aAAa,CAAC;QACpCF,KAAKG,GAAG,GAAG;QACXH,KAAKL,IAAI,GAAGA;QACZK,KAAKI,OAAO,CAACC,OAAO,GAAG;QACvBT,SAASU,IAAI,CAACC,WAAW,CAACP;IAC5B,GAAG;QAACL;KAAK;AACX"}
|
package/dist/index.d.ts
CHANGED
|
@@ -22,6 +22,9 @@ export type { StylePreset } from './style-presets.js';
|
|
|
22
22
|
export { generateThemeColorsCss, hexToHsl } from './utils/themeColors.js';
|
|
23
23
|
export { generateThemeCSS, getThemeStyles } from './utils/themeUtils.js';
|
|
24
24
|
export { getThemeHtmlAttributes } from './utils/themeHtmlAttributes.js';
|
|
25
|
+
export { FONT_CATALOG, buildThemeFontsHref, getFontCatalogEntry, } from './constants/themeFonts.js';
|
|
26
|
+
export type { FontCatalogEntry, ThemeFontLoading } from './constants/themeFonts.js';
|
|
27
|
+
export { themeFontEndpoints } from './endpoints/themeFonts.js';
|
|
25
28
|
export { generateThemeCSS as generatePresetCSS, generateAllThemesCSS, } from './utils/generateThemeCSS.js';
|
|
26
29
|
export { getThemeDynamicCSS, getAllDynamicThemesCSS } from './utils/themeCSS.js';
|
|
27
30
|
export type { Mode, ThemeDefaults } from './providers/Theme/types.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiD,MAAM,EAAa,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { themeFontEndpoints } from './endpoints/themeFonts.js';
|
|
1
2
|
import { DEFAULT_LIVE_PREVIEW_BREAKPOINTS } from './constants/devicePreviews.js';
|
|
2
3
|
import { createThemeConfigurationField } from './fields/themeConfigurationField.js';
|
|
3
4
|
import { allThemePresets } from './presets.js';
|
|
@@ -582,6 +583,9 @@ export const themeManagementPlugin = (options = {})=>{
|
|
|
582
583
|
enableLogging
|
|
583
584
|
});
|
|
584
585
|
endpoints = mergeEndpoint(endpoints, cacheEndpoint);
|
|
586
|
+
themeFontEndpoints.forEach((endpoint)=>{
|
|
587
|
+
endpoints = mergeEndpoint(endpoints, endpoint);
|
|
588
|
+
});
|
|
585
589
|
return {
|
|
586
590
|
...configWithI18n,
|
|
587
591
|
endpoints,
|
|
@@ -630,6 +634,9 @@ export const themeManagementPlugin = (options = {})=>{
|
|
|
630
634
|
enableLogging
|
|
631
635
|
});
|
|
632
636
|
endpoints = mergeEndpoint(endpoints, cacheEndpoint);
|
|
637
|
+
themeFontEndpoints.forEach((endpoint)=>{
|
|
638
|
+
endpoints = mergeEndpoint(endpoints, endpoint);
|
|
639
|
+
});
|
|
633
640
|
return {
|
|
634
641
|
...configWithI18n,
|
|
635
642
|
endpoints,
|
|
@@ -710,6 +717,8 @@ export { allStylePresets, stylePresetCategories } from './style-presets.js';
|
|
|
710
717
|
export { generateThemeColorsCss, hexToHsl } from './utils/themeColors.js';
|
|
711
718
|
export { generateThemeCSS, getThemeStyles } from './utils/themeUtils.js';
|
|
712
719
|
export { getThemeHtmlAttributes } from './utils/themeHtmlAttributes.js';
|
|
720
|
+
export { FONT_CATALOG, buildThemeFontsHref, getFontCatalogEntry } from './constants/themeFonts.js';
|
|
721
|
+
export { themeFontEndpoints } from './endpoints/themeFonts.js';
|
|
713
722
|
// Dynamic theme CSS generation
|
|
714
723
|
export { generateThemeCSS as generatePresetCSS, generateAllThemesCSS } from './utils/generateThemeCSS.js';
|
|
715
724
|
export { getThemeDynamicCSS, getAllDynamicThemesCSS } from './utils/themeCSS.js';
|