@kilivi/payloadcms-theme-management 2.0.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +346 -845
- package/dist/components/AppearanceSessionControls.d.ts +15 -0
- package/dist/components/AppearanceSessionControls.d.ts.map +1 -0
- package/dist/components/AppearanceSessionControls.js +152 -0
- package/dist/components/AppearanceSessionControls.js.map +1 -0
- package/dist/components/ColorModeToggle.css +42 -0
- package/dist/components/ColorModeToggle.d.ts +40 -0
- package/dist/components/ColorModeToggle.d.ts.map +1 -0
- package/dist/components/ColorModeToggle.js +111 -0
- package/dist/components/ColorModeToggle.js.map +1 -0
- package/dist/components/ServerThemeInjector.d.ts +13 -1
- package/dist/components/ServerThemeInjector.d.ts.map +1 -1
- package/dist/components/ServerThemeInjector.js +65 -15
- package/dist/components/ServerThemeInjector.js.map +1 -1
- package/dist/components/ThemeLivePreviewSync.d.ts +4 -0
- package/dist/components/ThemeLivePreviewSync.d.ts.map +1 -1
- package/dist/components/ThemeLivePreviewSync.js +28 -4
- package/dist/components/ThemeLivePreviewSync.js.map +1 -1
- package/dist/components/ThemeSwitcher.d.ts +36 -0
- package/dist/components/ThemeSwitcher.d.ts.map +1 -0
- package/dist/components/ThemeSwitcher.js +89 -0
- package/dist/components/ThemeSwitcher.js.map +1 -0
- package/dist/components/typographyPreviewUtils.d.ts +5 -0
- package/dist/components/typographyPreviewUtils.d.ts.map +1 -1
- package/dist/components/typographyPreviewUtils.js +24 -11
- package/dist/components/typographyPreviewUtils.js.map +1 -1
- package/dist/constants/devicePreviews.d.ts +35 -0
- package/dist/constants/devicePreviews.d.ts.map +1 -0
- package/dist/constants/devicePreviews.js +43 -0
- package/dist/constants/devicePreviews.js.map +1 -0
- package/dist/constants/themeFonts.d.ts +94 -168
- package/dist/constants/themeFonts.d.ts.map +1 -1
- package/dist/constants/themeFonts.js +260 -140
- package/dist/constants/themeFonts.js.map +1 -1
- package/dist/endpoints/themeFonts.d.ts +5 -0
- package/dist/endpoints/themeFonts.d.ts.map +1 -0
- package/dist/endpoints/themeFonts.js +138 -0
- package/dist/endpoints/themeFonts.js.map +1 -0
- package/dist/extended-presets.d.ts +0 -4
- package/dist/extended-presets.d.ts.map +1 -1
- package/dist/extended-presets.js +1 -18
- package/dist/extended-presets.js.map +1 -1
- package/dist/extended-themes.d.ts.map +1 -1
- package/dist/extended-themes.js +428 -0
- package/dist/extended-themes.js.map +1 -1
- package/dist/fields/AccessibilityAuditField.d.ts +2 -0
- package/dist/fields/AccessibilityAuditField.d.ts.map +1 -0
- package/dist/fields/AccessibilityAuditField.js +303 -0
- package/dist/fields/AccessibilityAuditField.js.map +1 -0
- package/dist/fields/AppearancePreviewField.d.ts +2 -0
- package/dist/fields/AppearancePreviewField.d.ts.map +1 -0
- package/dist/fields/AppearancePreviewField.js +826 -0
- package/dist/fields/AppearancePreviewField.js.map +1 -0
- package/dist/fields/ColorPickerField.d.ts.map +1 -1
- package/dist/fields/ColorPickerField.js +89 -85
- package/dist/fields/ColorPickerField.js.map +1 -1
- package/dist/fields/FontSelectField.css +155 -0
- package/dist/fields/FontSelectField.d.ts +8 -0
- package/dist/fields/FontSelectField.d.ts.map +1 -1
- package/dist/fields/FontSelectField.js +223 -188
- package/dist/fields/FontSelectField.js.map +1 -1
- package/dist/fields/PaletteGeneratorField.d.ts +7 -0
- package/dist/fields/PaletteGeneratorField.d.ts.map +1 -0
- package/dist/fields/PaletteGeneratorField.js +327 -0
- package/dist/fields/PaletteGeneratorField.js.map +1 -0
- package/dist/fields/StylePresetField.d.ts +3 -0
- package/dist/fields/StylePresetField.d.ts.map +1 -0
- package/dist/fields/StylePresetField.js +463 -0
- package/dist/fields/StylePresetField.js.map +1 -0
- package/dist/fields/ThemeColorPickerField.css +115 -35
- package/dist/fields/ThemeColorPickerField.d.ts.map +1 -1
- package/dist/fields/ThemeColorPickerField.js +204 -70
- package/dist/fields/ThemeColorPickerField.js.map +1 -1
- package/dist/fields/ThemeExportField.d.ts +6 -0
- package/dist/fields/ThemeExportField.d.ts.map +1 -0
- package/dist/fields/ThemeExportField.js +202 -0
- package/dist/fields/ThemeExportField.js.map +1 -0
- package/dist/fields/ThemePresetImportField.d.ts.map +1 -1
- package/dist/fields/ThemePresetImportField.js +56 -25
- package/dist/fields/ThemePresetImportField.js.map +1 -1
- package/dist/fields/ThemePreviewField.css +444 -5
- package/dist/fields/ThemePreviewField.d.ts.map +1 -1
- package/dist/fields/ThemePreviewField.js +265 -170
- package/dist/fields/ThemePreviewField.js.map +1 -1
- package/dist/fields/ThemeTokenSelectField.d.ts.map +1 -1
- package/dist/fields/ThemeTokenSelectField.js +278 -80
- package/dist/fields/ThemeTokenSelectField.js.map +1 -1
- package/dist/fields/colorFieldHelpers.d.ts +90 -0
- package/dist/fields/colorFieldHelpers.d.ts.map +1 -0
- package/dist/fields/colorFieldHelpers.js +133 -0
- package/dist/fields/colorFieldHelpers.js.map +1 -0
- package/dist/fields/colorModeFields.d.ts +1 -1
- package/dist/fields/colorModeFields.d.ts.map +1 -1
- package/dist/fields/colorModeFields.js +49 -7
- package/dist/fields/colorModeFields.js.map +1 -1
- package/dist/fields/themeConfigurationField.d.ts +8 -1
- package/dist/fields/themeConfigurationField.d.ts.map +1 -1
- package/dist/fields/themeConfigurationField.js +1209 -228
- package/dist/fields/themeConfigurationField.js.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/FontPreview.d.ts.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/FontPreview.js +8 -4
- package/dist/globals/ThemeSettings/FontPicker/FontPreview.js.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/index.d.ts.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/index.js +81 -26
- package/dist/globals/ThemeSettings/FontPicker/index.js.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/styles.css +98 -41
- package/dist/globals/ThemeSettings/FontPicker/translations.d.ts +6 -0
- package/dist/globals/ThemeSettings/FontPicker/translations.d.ts.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/translations.js +14 -2
- package/dist/globals/ThemeSettings/FontPicker/translations.js.map +1 -1
- package/dist/globals/ThemeSettings/config.d.ts.map +1 -1
- package/dist/globals/ThemeSettings/config.js +76 -79
- package/dist/globals/ThemeSettings/config.js.map +1 -1
- package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.d.ts.map +1 -1
- package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.js +63 -62
- package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.js.map +1 -1
- package/dist/globals/ThemeSettings/fields/TypographyInfoField.d.ts.map +1 -1
- package/dist/globals/ThemeSettings/fields/TypographyInfoField.js +22 -25
- package/dist/globals/ThemeSettings/fields/TypographyInfoField.js.map +1 -1
- package/dist/hooks/useAppearanceSession.d.ts +50 -0
- package/dist/hooks/useAppearanceSession.d.ts.map +1 -0
- package/dist/hooks/useAppearanceSession.js +91 -0
- package/dist/hooks/useAppearanceSession.js.map +1 -0
- package/dist/hooks/useNativeLivePreview.d.ts +15 -0
- package/dist/hooks/useNativeLivePreview.d.ts.map +1 -0
- package/dist/hooks/useNativeLivePreview.js +18 -0
- package/dist/hooks/useNativeLivePreview.js.map +1 -0
- package/dist/hooks/useThemeFonts.d.ts +10 -0
- package/dist/hooks/useThemeFonts.d.ts.map +1 -0
- package/dist/hooks/useThemeFonts.js +36 -0
- package/dist/hooks/useThemeFonts.js.map +1 -0
- package/dist/hooks/useThemeTranslations.d.ts +13 -0
- package/dist/hooks/useThemeTranslations.d.ts.map +1 -0
- package/dist/hooks/useThemeTranslations.js +22 -0
- package/dist/hooks/useThemeTranslations.js.map +1 -0
- package/dist/i18n.d.ts +53 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +53 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +13 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +59 -29
- package/dist/index.js.map +1 -1
- package/dist/next-fonts.d.ts +3 -0
- package/dist/next-fonts.d.ts.map +1 -0
- package/dist/next-fonts.js +360 -0
- package/dist/next-fonts.js.map +1 -0
- package/dist/payload-types.d.ts +34 -6
- package/dist/payload-types.d.ts.map +1 -1
- package/dist/payload-types.js.map +1 -1
- package/dist/presets.d.ts +14 -0
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js.map +1 -1
- package/dist/providers/Theme/index.d.ts.map +1 -1
- package/dist/providers/Theme/index.js +75 -11
- package/dist/providers/Theme/index.js.map +1 -1
- package/dist/providers/Theme/themeConfig.d.ts.map +1 -1
- package/dist/providers/Theme/themeConfig.js +104 -0
- package/dist/providers/Theme/themeConfig.js.map +1 -1
- package/dist/providers/Theme/types.d.ts +1 -1
- package/dist/providers/Theme/types.d.ts.map +1 -1
- package/dist/providers/Theme/types.js +10 -1
- package/dist/providers/Theme/types.js.map +1 -1
- package/dist/style-presets.d.ts +75 -0
- package/dist/style-presets.d.ts.map +1 -0
- package/dist/style-presets.js +738 -0
- package/dist/style-presets.js.map +1 -0
- package/dist/translations.d.ts +164 -1
- package/dist/translations.d.ts.map +1 -1
- package/dist/translations.js +320 -9
- package/dist/translations.js.map +1 -1
- package/dist/tweakcn-special-themes.d.ts.map +1 -1
- package/dist/tweakcn-special-themes.js +585 -9
- package/dist/tweakcn-special-themes.js.map +1 -1
- package/dist/types/css.d.js +3 -0
- package/dist/types/css.d.js.map +1 -0
- package/dist/types.d.ts +26 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utilities/getThemeSettings.d.ts.map +1 -1
- package/dist/utilities/getThemeSettings.js +2 -14
- package/dist/utilities/getThemeSettings.js.map +1 -1
- package/dist/utils/contrast.d.ts +63 -0
- package/dist/utils/contrast.d.ts.map +1 -0
- package/dist/utils/contrast.js +158 -0
- package/dist/utils/contrast.js.map +1 -0
- package/dist/utils/exportTokens.d.ts +30 -0
- package/dist/utils/exportTokens.d.ts.map +1 -0
- package/dist/utils/exportTokens.js +183 -0
- package/dist/utils/exportTokens.js.map +1 -0
- package/dist/utils/generatePalette.d.ts +46 -0
- package/dist/utils/generatePalette.d.ts.map +1 -0
- package/dist/utils/generatePalette.js +127 -0
- package/dist/utils/generatePalette.js.map +1 -0
- package/dist/utils/generateThemeCSS.d.ts.map +1 -1
- package/dist/utils/generateThemeCSS.js +2 -40
- package/dist/utils/generateThemeCSS.js.map +1 -1
- package/dist/utils/livePreviewThemeRuntime.d.ts +22 -3
- package/dist/utils/livePreviewThemeRuntime.d.ts.map +1 -1
- package/dist/utils/livePreviewThemeRuntime.js +48 -15
- package/dist/utils/livePreviewThemeRuntime.js.map +1 -1
- package/dist/utils/localizedText.d.ts +8 -0
- package/dist/utils/localizedText.d.ts.map +1 -0
- package/dist/utils/localizedText.js +21 -0
- package/dist/utils/localizedText.js.map +1 -0
- package/dist/utils/resolveThemeConfiguration.d.ts +60 -1
- package/dist/utils/resolveThemeConfiguration.d.ts.map +1 -1
- package/dist/utils/resolveThemeConfiguration.js +53 -13
- package/dist/utils/resolveThemeConfiguration.js.map +1 -1
- package/dist/utils/themeColors.d.ts +3 -0
- package/dist/utils/themeColors.d.ts.map +1 -1
- package/dist/utils/themeColors.js +30 -1
- package/dist/utils/themeColors.js.map +1 -1
- package/dist/utils/themeHtmlAttributes.d.ts +32 -12
- package/dist/utils/themeHtmlAttributes.d.ts.map +1 -1
- package/dist/utils/themeHtmlAttributes.js +38 -5
- package/dist/utils/themeHtmlAttributes.js.map +1 -1
- package/dist/utils/themeUtils.d.ts +3 -5
- package/dist/utils/themeUtils.d.ts.map +1 -1
- package/dist/utils/themeUtils.js +474 -6
- package/dist/utils/themeUtils.js.map +1 -1
- package/dist/utils/tweakcnConverter.d.ts +1 -3
- package/dist/utils/tweakcnConverter.d.ts.map +1 -1
- package/dist/utils/tweakcnConverter.js +1 -3
- package/dist/utils/tweakcnConverter.js.map +1 -1
- package/package.json +15 -5
- package/dist/components/ThemePreview.d.ts +0 -3
- package/dist/components/ThemePreview.d.ts.map +0 -1
- package/dist/components/ThemePreview.js +0 -321
- package/dist/components/ThemePreview.js.map +0 -1
- package/dist/plugin.d.ts +0 -2
- package/dist/plugin.d.ts.map +0 -1
- package/dist/plugin.js +0 -3
- package/dist/plugin.js.map +0 -1
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type { Field, GroupField } from 'payload';
|
|
2
|
+
/**
|
|
3
|
+
* Out-of-the-box field builders for adding theme-aware colour controls to ANY
|
|
4
|
+
* Payload collection/block/global — without hand-writing the radio + token-select
|
|
5
|
+
* + colour-picker boilerplate every time.
|
|
6
|
+
*
|
|
7
|
+
* Pair these builders with {@link resolveColorValue} on the front-end to turn the
|
|
8
|
+
* stored value into a ready-to-use CSS colour string.
|
|
9
|
+
*/
|
|
10
|
+
type LocalizedLabel = string | {
|
|
11
|
+
[locale: string]: string;
|
|
12
|
+
};
|
|
13
|
+
export type ColorGroupOptions = {
|
|
14
|
+
/** Field label (bilingual object or plain string). */
|
|
15
|
+
label?: LocalizedLabel;
|
|
16
|
+
/** Whether the editor starts on the theme token or a custom colour. Default: `'theme'`. */
|
|
17
|
+
defaultSource?: 'theme' | 'custom';
|
|
18
|
+
/** Placeholder shown in the custom colour input. Default: `'#1d4ed8'`. */
|
|
19
|
+
placeholder?: string;
|
|
20
|
+
/** Description shown under the custom colour input. */
|
|
21
|
+
customDescription?: LocalizedLabel;
|
|
22
|
+
/** Description shown under the theme-token select. */
|
|
23
|
+
themeDescription?: LocalizedLabel;
|
|
24
|
+
/** Make the whole group required. */
|
|
25
|
+
required?: boolean;
|
|
26
|
+
/** Extra admin.condition applied to the whole group. */
|
|
27
|
+
condition?: GroupField['admin'] extends {
|
|
28
|
+
condition?: infer C;
|
|
29
|
+
} ? C : never;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* A theme-aware colour group: editors pick either a colour token from the active
|
|
33
|
+
* theme (rendered with live swatches) or a fully custom HEX/HSL/RGB/CSS value.
|
|
34
|
+
*
|
|
35
|
+
* The stored shape is:
|
|
36
|
+
* ```ts
|
|
37
|
+
* { source: 'theme' | 'custom', themeToken?: string, customColor?: string }
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* Resolve it on the front-end with {@link resolveColorValue}.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* import { createColorGroup } from '@kilivi/payloadcms-theme-management/fields/colorFieldHelpers'
|
|
45
|
+
*
|
|
46
|
+
* fields: [
|
|
47
|
+
* createColorGroup('sectionBackground', { label: { en: 'Background', cs: 'Pozadí' } }),
|
|
48
|
+
* ]
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare const createColorGroup: (name: string, options?: ColorGroupOptions) => GroupField;
|
|
52
|
+
/**
|
|
53
|
+
* A single, always-custom colour field backed by the visual colour picker.
|
|
54
|
+
* Use when you don't need the theme-token option.
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```ts
|
|
58
|
+
* createColorField('badgeColor', { label: { en: 'Badge color', cs: 'Barva odznaku' } })
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare const createColorField: (name: string, options?: {
|
|
62
|
+
label?: LocalizedLabel;
|
|
63
|
+
placeholder?: string;
|
|
64
|
+
description?: LocalizedLabel;
|
|
65
|
+
required?: boolean;
|
|
66
|
+
}) => Field;
|
|
67
|
+
/** Shape produced by {@link createColorGroup}. */
|
|
68
|
+
export type ColorGroupValue = {
|
|
69
|
+
source?: 'theme' | 'custom' | null;
|
|
70
|
+
themeToken?: string | null;
|
|
71
|
+
customColor?: string | null;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Turn a stored {@link createColorGroup} value into a CSS colour string.
|
|
75
|
+
*
|
|
76
|
+
* - `source: 'theme'` → `var(--<token>)`
|
|
77
|
+
* - `source: 'custom'` → the raw custom value
|
|
78
|
+
*
|
|
79
|
+
* @param value The stored group value.
|
|
80
|
+
* @param fallback Returned when nothing usable is set. Defaults to `undefined`.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```tsx
|
|
84
|
+
* const bg = resolveColorValue(data.appearance?.sectionBackground, 'var(--background)')
|
|
85
|
+
* <section style={{ background: bg }} />
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
export declare const resolveColorValue: (value: ColorGroupValue | null | undefined, fallback?: string) => string | undefined;
|
|
89
|
+
export {};
|
|
90
|
+
//# sourceMappingURL=colorFieldHelpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colorFieldHelpers.d.ts","sourceRoot":"","sources":["../../src/fields/colorFieldHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEhD;;;;;;;GAOG;AAEH,KAAK,cAAc,GAAG,MAAM,GAAG;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAA;AAI3D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,sDAAsD;IACtD,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB,2FAA2F;IAC3F,aAAa,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IAClC,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,uDAAuD;IACvD,iBAAiB,CAAC,EAAE,cAAc,CAAA;IAClC,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,cAAc,CAAA;IACjC,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,wDAAwD;IACxD,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG,KAAK,CAAA;CAC5E,CAAA;AAID;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,UAAS,iBAAsB,KAC9B,UA2DF,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,UAAS;IAAE,KAAK,CAAC,EAAE,cAAc,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,KAC/G,KAcD,CAAA;AAEF,kDAAkD;AAClD,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAA;IAClC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,GAC5B,OAAO,eAAe,GAAG,IAAI,GAAG,SAAS,EACzC,WAAW,MAAM,KAChB,MAAM,GAAG,SAkBX,CAAA"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
const FIELD_PREFIX = '@kilivi/payloadcms-theme-management/fields';
|
|
2
|
+
const text = (en, cs)=>({
|
|
3
|
+
en,
|
|
4
|
+
cs
|
|
5
|
+
});
|
|
6
|
+
/**
|
|
7
|
+
* A theme-aware colour group: editors pick either a colour token from the active
|
|
8
|
+
* theme (rendered with live swatches) or a fully custom HEX/HSL/RGB/CSS value.
|
|
9
|
+
*
|
|
10
|
+
* The stored shape is:
|
|
11
|
+
* ```ts
|
|
12
|
+
* { source: 'theme' | 'custom', themeToken?: string, customColor?: string }
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* Resolve it on the front-end with {@link resolveColorValue}.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* import { createColorGroup } from '@kilivi/payloadcms-theme-management/fields/colorFieldHelpers'
|
|
20
|
+
*
|
|
21
|
+
* fields: [
|
|
22
|
+
* createColorGroup('sectionBackground', { label: { en: 'Background', cs: 'Pozadí' } }),
|
|
23
|
+
* ]
|
|
24
|
+
* ```
|
|
25
|
+
*/ export const createColorGroup = (name, options = {})=>{
|
|
26
|
+
const { label, defaultSource = 'theme', placeholder = '#1d4ed8', customDescription = text('HEX, HSL, RGB or CSS variable (e.g. var(--primary))', 'HEX, HSL, RGB nebo CSS proměnná (např. var(--primary))'), themeDescription = text('Pick a color from the active theme', 'Vyberte barvu z aktivního tématu'), required, condition } = options;
|
|
27
|
+
return {
|
|
28
|
+
name,
|
|
29
|
+
type: 'group',
|
|
30
|
+
label: label ?? false,
|
|
31
|
+
admin: condition ? {
|
|
32
|
+
condition
|
|
33
|
+
} : undefined,
|
|
34
|
+
fields: [
|
|
35
|
+
{
|
|
36
|
+
name: 'source',
|
|
37
|
+
type: 'radio',
|
|
38
|
+
label: text('Color source', 'Zdroj barvy'),
|
|
39
|
+
defaultValue: defaultSource,
|
|
40
|
+
required,
|
|
41
|
+
options: [
|
|
42
|
+
{
|
|
43
|
+
label: text('Theme color', 'Barva tématu'),
|
|
44
|
+
value: 'theme'
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
label: text('Custom color', 'Vlastní barva'),
|
|
48
|
+
value: 'custom'
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
admin: {
|
|
52
|
+
layout: 'horizontal'
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: 'themeToken',
|
|
57
|
+
type: 'text',
|
|
58
|
+
label: text('Theme color token', 'Token barvy tématu'),
|
|
59
|
+
admin: {
|
|
60
|
+
description: themeDescription,
|
|
61
|
+
components: {
|
|
62
|
+
Field: `${FIELD_PREFIX}/ThemeTokenSelectField`
|
|
63
|
+
},
|
|
64
|
+
condition: (_, siblingData)=>siblingData?.source !== 'custom'
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: 'customColor',
|
|
69
|
+
type: 'text',
|
|
70
|
+
label: text('Custom color', 'Vlastní barva'),
|
|
71
|
+
admin: {
|
|
72
|
+
placeholder,
|
|
73
|
+
description: customDescription,
|
|
74
|
+
components: {
|
|
75
|
+
Field: `${FIELD_PREFIX}/ColorPickerField`
|
|
76
|
+
},
|
|
77
|
+
condition: (_, siblingData)=>siblingData?.source === 'custom'
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* A single, always-custom colour field backed by the visual colour picker.
|
|
85
|
+
* Use when you don't need the theme-token option.
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```ts
|
|
89
|
+
* createColorField('badgeColor', { label: { en: 'Badge color', cs: 'Barva odznaku' } })
|
|
90
|
+
* ```
|
|
91
|
+
*/ export const createColorField = (name, options = {})=>({
|
|
92
|
+
name,
|
|
93
|
+
type: 'text',
|
|
94
|
+
label: options.label ?? false,
|
|
95
|
+
required: options.required,
|
|
96
|
+
admin: {
|
|
97
|
+
placeholder: options.placeholder ?? '#1d4ed8',
|
|
98
|
+
description: options.description ?? text('HEX, HSL, RGB or CSS variable', 'HEX, HSL, RGB nebo CSS proměnná'),
|
|
99
|
+
components: {
|
|
100
|
+
Field: `${FIELD_PREFIX}/ColorPickerField`
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
/**
|
|
105
|
+
* Turn a stored {@link createColorGroup} value into a CSS colour string.
|
|
106
|
+
*
|
|
107
|
+
* - `source: 'theme'` → `var(--<token>)`
|
|
108
|
+
* - `source: 'custom'` → the raw custom value
|
|
109
|
+
*
|
|
110
|
+
* @param value The stored group value.
|
|
111
|
+
* @param fallback Returned when nothing usable is set. Defaults to `undefined`.
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```tsx
|
|
115
|
+
* const bg = resolveColorValue(data.appearance?.sectionBackground, 'var(--background)')
|
|
116
|
+
* <section style={{ background: bg }} />
|
|
117
|
+
* ```
|
|
118
|
+
*/ export const resolveColorValue = (value, fallback)=>{
|
|
119
|
+
if (!value) return fallback;
|
|
120
|
+
if (value.source === 'custom') {
|
|
121
|
+
const custom = value.customColor?.trim();
|
|
122
|
+
return custom && custom.length > 0 ? custom : fallback;
|
|
123
|
+
}
|
|
124
|
+
// Default to theme token (covers source === 'theme' and unset).
|
|
125
|
+
const token = value.themeToken?.trim();
|
|
126
|
+
if (token && token.length > 0) {
|
|
127
|
+
// Allow callers to store either a bare token (`primary`) or a full expression.
|
|
128
|
+
return token.startsWith('var(') || token.includes('(') || token.startsWith('#') ? token : `var(--${token})`;
|
|
129
|
+
}
|
|
130
|
+
return fallback;
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
//# sourceMappingURL=colorFieldHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/fields/colorFieldHelpers.ts"],"sourcesContent":["import type { Field, GroupField } from 'payload'\n\n/**\n * Out-of-the-box field builders for adding theme-aware colour controls to ANY\n * Payload collection/block/global — without hand-writing the radio + token-select\n * + colour-picker boilerplate every time.\n *\n * Pair these builders with {@link resolveColorValue} on the front-end to turn the\n * stored value into a ready-to-use CSS colour string.\n */\n\ntype LocalizedLabel = string | { [locale: string]: string }\n\nconst FIELD_PREFIX = '@kilivi/payloadcms-theme-management/fields'\n\nexport type ColorGroupOptions = {\n /** Field label (bilingual object or plain string). */\n label?: LocalizedLabel\n /** Whether the editor starts on the theme token or a custom colour. Default: `'theme'`. */\n defaultSource?: 'theme' | 'custom'\n /** Placeholder shown in the custom colour input. Default: `'#1d4ed8'`. */\n placeholder?: string\n /** Description shown under the custom colour input. */\n customDescription?: LocalizedLabel\n /** Description shown under the theme-token select. */\n themeDescription?: LocalizedLabel\n /** Make the whole group required. */\n required?: boolean\n /** Extra admin.condition applied to the whole group. */\n condition?: GroupField['admin'] extends { condition?: infer C } ? C : never\n}\n\nconst text = (en: string, cs: string) => ({ en, cs })\n\n/**\n * A theme-aware colour group: editors pick either a colour token from the active\n * theme (rendered with live swatches) or a fully custom HEX/HSL/RGB/CSS value.\n *\n * The stored shape is:\n * ```ts\n * { source: 'theme' | 'custom', themeToken?: string, customColor?: string }\n * ```\n *\n * Resolve it on the front-end with {@link resolveColorValue}.\n *\n * @example\n * ```ts\n * import { createColorGroup } from '@kilivi/payloadcms-theme-management/fields/colorFieldHelpers'\n *\n * fields: [\n * createColorGroup('sectionBackground', { label: { en: 'Background', cs: 'Pozadí' } }),\n * ]\n * ```\n */\nexport const createColorGroup = (\n name: string,\n options: ColorGroupOptions = {},\n): GroupField => {\n const {\n label,\n defaultSource = 'theme',\n placeholder = '#1d4ed8',\n customDescription = text(\n 'HEX, HSL, RGB or CSS variable (e.g. var(--primary))',\n 'HEX, HSL, RGB nebo CSS proměnná (např. var(--primary))',\n ),\n themeDescription = text('Pick a color from the active theme', 'Vyberte barvu z aktivního tématu'),\n required,\n condition,\n } = options\n\n return {\n name,\n type: 'group',\n label: label ?? false,\n admin: condition ? { condition } : undefined,\n fields: [\n {\n name: 'source',\n type: 'radio',\n label: text('Color source', 'Zdroj barvy'),\n defaultValue: defaultSource,\n required,\n options: [\n { label: text('Theme color', 'Barva tématu'), value: 'theme' },\n { label: text('Custom color', 'Vlastní barva'), value: 'custom' },\n ],\n admin: { layout: 'horizontal' },\n },\n {\n name: 'themeToken',\n type: 'text',\n label: text('Theme color token', 'Token barvy tématu'),\n admin: {\n description: themeDescription,\n components: {\n Field: `${FIELD_PREFIX}/ThemeTokenSelectField`,\n },\n condition: (_, siblingData) => siblingData?.source !== 'custom',\n },\n },\n {\n name: 'customColor',\n type: 'text',\n label: text('Custom color', 'Vlastní barva'),\n admin: {\n placeholder,\n description: customDescription,\n components: {\n Field: `${FIELD_PREFIX}/ColorPickerField`,\n },\n condition: (_, siblingData) => siblingData?.source === 'custom',\n },\n },\n ],\n }\n}\n\n/**\n * A single, always-custom colour field backed by the visual colour picker.\n * Use when you don't need the theme-token option.\n *\n * @example\n * ```ts\n * createColorField('badgeColor', { label: { en: 'Badge color', cs: 'Barva odznaku' } })\n * ```\n */\nexport const createColorField = (\n name: string,\n options: { label?: LocalizedLabel; placeholder?: string; description?: LocalizedLabel; required?: boolean } = {},\n): Field => ({\n name,\n type: 'text',\n label: options.label ?? false,\n required: options.required,\n admin: {\n placeholder: options.placeholder ?? '#1d4ed8',\n description:\n options.description ??\n text('HEX, HSL, RGB or CSS variable', 'HEX, HSL, RGB nebo CSS proměnná'),\n components: {\n Field: `${FIELD_PREFIX}/ColorPickerField`,\n },\n },\n})\n\n/** Shape produced by {@link createColorGroup}. */\nexport type ColorGroupValue = {\n source?: 'theme' | 'custom' | null\n themeToken?: string | null\n customColor?: string | null\n}\n\n/**\n * Turn a stored {@link createColorGroup} value into a CSS colour string.\n *\n * - `source: 'theme'` → `var(--<token>)`\n * - `source: 'custom'` → the raw custom value\n *\n * @param value The stored group value.\n * @param fallback Returned when nothing usable is set. Defaults to `undefined`.\n *\n * @example\n * ```tsx\n * const bg = resolveColorValue(data.appearance?.sectionBackground, 'var(--background)')\n * <section style={{ background: bg }} />\n * ```\n */\nexport const resolveColorValue = (\n value: ColorGroupValue | null | undefined,\n fallback?: string,\n): string | undefined => {\n if (!value) return fallback\n\n if (value.source === 'custom') {\n const custom = value.customColor?.trim()\n return custom && custom.length > 0 ? custom : fallback\n }\n\n // Default to theme token (covers source === 'theme' and unset).\n const token = value.themeToken?.trim()\n if (token && token.length > 0) {\n // Allow callers to store either a bare token (`primary`) or a full expression.\n return token.startsWith('var(') || token.includes('(') || token.startsWith('#')\n ? token\n : `var(--${token})`\n }\n\n return fallback\n}\n"],"names":["FIELD_PREFIX","text","en","cs","createColorGroup","name","options","label","defaultSource","placeholder","customDescription","themeDescription","required","condition","type","admin","undefined","fields","defaultValue","value","layout","description","components","Field","_","siblingData","source","createColorField","resolveColorValue","fallback","custom","customColor","trim","length","token","themeToken","startsWith","includes"],"mappings":"AAaA,MAAMA,eAAe;AAmBrB,MAAMC,OAAO,CAACC,IAAYC,KAAgB,CAAA;QAAED;QAAIC;IAAG,CAAA;AAEnD;;;;;;;;;;;;;;;;;;;CAmBC,GACD,OAAO,MAAMC,mBAAmB,CAC9BC,MACAC,UAA6B,CAAC,CAAC;IAE/B,MAAM,EACJC,KAAK,EACLC,gBAAgB,OAAO,EACvBC,cAAc,SAAS,EACvBC,oBAAoBT,KAClB,uDACA,yDACD,EACDU,mBAAmBV,KAAK,sCAAsC,mCAAmC,EACjGW,QAAQ,EACRC,SAAS,EACV,GAAGP;IAEJ,OAAO;QACLD;QACAS,MAAM;QACNP,OAAOA,SAAS;QAChBQ,OAAOF,YAAY;YAAEA;QAAU,IAAIG;QACnCC,QAAQ;YACN;gBACEZ,MAAM;gBACNS,MAAM;gBACNP,OAAON,KAAK,gBAAgB;gBAC5BiB,cAAcV;gBACdI;gBACAN,SAAS;oBACP;wBAAEC,OAAON,KAAK,eAAe;wBAAiBkB,OAAO;oBAAQ;oBAC7D;wBAAEZ,OAAON,KAAK,gBAAgB;wBAAkBkB,OAAO;oBAAS;iBACjE;gBACDJ,OAAO;oBAAEK,QAAQ;gBAAa;YAChC;YACA;gBACEf,MAAM;gBACNS,MAAM;gBACNP,OAAON,KAAK,qBAAqB;gBACjCc,OAAO;oBACLM,aAAaV;oBACbW,YAAY;wBACVC,OAAO,GAAGvB,aAAa,sBAAsB,CAAC;oBAChD;oBACAa,WAAW,CAACW,GAAGC,cAAgBA,aAAaC,WAAW;gBACzD;YACF;YACA;gBACErB,MAAM;gBACNS,MAAM;gBACNP,OAAON,KAAK,gBAAgB;gBAC5Bc,OAAO;oBACLN;oBACAY,aAAaX;oBACbY,YAAY;wBACVC,OAAO,GAAGvB,aAAa,iBAAiB,CAAC;oBAC3C;oBACAa,WAAW,CAACW,GAAGC,cAAgBA,aAAaC,WAAW;gBACzD;YACF;SACD;IACH;AACF,EAAC;AAED;;;;;;;;CAQC,GACD,OAAO,MAAMC,mBAAmB,CAC9BtB,MACAC,UAA8G,CAAC,CAAC,GACrG,CAAA;QACXD;QACAS,MAAM;QACNP,OAAOD,QAAQC,KAAK,IAAI;QACxBK,UAAUN,QAAQM,QAAQ;QAC1BG,OAAO;YACLN,aAAaH,QAAQG,WAAW,IAAI;YACpCY,aACEf,QAAQe,WAAW,IACnBpB,KAAK,iCAAiC;YACxCqB,YAAY;gBACVC,OAAO,GAAGvB,aAAa,iBAAiB,CAAC;YAC3C;QACF;IACF,CAAA,EAAE;AASF;;;;;;;;;;;;;;CAcC,GACD,OAAO,MAAM4B,oBAAoB,CAC/BT,OACAU;IAEA,IAAI,CAACV,OAAO,OAAOU;IAEnB,IAAIV,MAAMO,MAAM,KAAK,UAAU;QAC7B,MAAMI,SAASX,MAAMY,WAAW,EAAEC;QAClC,OAAOF,UAAUA,OAAOG,MAAM,GAAG,IAAIH,SAASD;IAChD;IAEA,gEAAgE;IAChE,MAAMK,QAAQf,MAAMgB,UAAU,EAAEH;IAChC,IAAIE,SAASA,MAAMD,MAAM,GAAG,GAAG;QAC7B,+EAA+E;QAC/E,OAAOC,MAAME,UAAU,CAAC,WAAWF,MAAMG,QAAQ,CAAC,QAAQH,MAAME,UAAU,CAAC,OACvEF,QACA,CAAC,MAAM,EAAEA,MAAM,CAAC,CAAC;IACvB;IAEA,OAAOL;AACT,EAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Field } from 'payload';
|
|
2
|
-
declare const colorFieldKeys: readonly ["background", "foreground", "primary", "primaryForeground", "card", "cardForeground", "popover", "popoverForeground", "secondary", "secondaryForeground", "muted", "mutedForeground", "accent", "accentForeground", "destructive", "destructiveForeground", "border", "input", "ring"];
|
|
2
|
+
declare const colorFieldKeys: readonly ["background", "foreground", "primary", "primaryForeground", "card", "cardForeground", "popover", "popoverForeground", "secondary", "secondaryForeground", "muted", "mutedForeground", "accent", "accentForeground", "destructive", "destructiveForeground", "border", "input", "ring", "gradientFrom", "gradientVia", "gradientTo"];
|
|
3
3
|
type ColorToken = (typeof colorFieldKeys)[number];
|
|
4
4
|
type ColorPalette = Record<ColorToken, string>;
|
|
5
5
|
export declare const lightModeDefaults: ColorPalette;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colorModeFields.d.ts","sourceRoot":"","sources":["../../src/fields/colorModeFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"colorModeFields.d.ts","sourceRoot":"","sources":["../../src/fields/colorModeFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAOpC,QAAA,MAAM,cAAc,+UAuBV,CAAA;AAEV,KAAK,UAAU,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;AAQjD,KAAK,YAAY,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;AAkJ9C,eAAO,MAAM,iBAAiB,EAAE,YAuB/B,CAAA;AAGD,eAAO,MAAM,gBAAgB,EAAE,YAuB9B,CAAA;AAiBD,eAAO,MAAM,cAAc,EAAE,KAoB5B,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,KAoB3B,CAAA"}
|
|
@@ -18,7 +18,10 @@ const colorFieldKeys = [
|
|
|
18
18
|
'destructiveForeground',
|
|
19
19
|
'border',
|
|
20
20
|
'input',
|
|
21
|
-
'ring'
|
|
21
|
+
'ring',
|
|
22
|
+
'gradientFrom',
|
|
23
|
+
'gradientVia',
|
|
24
|
+
'gradientTo'
|
|
22
25
|
];
|
|
23
26
|
const colorFieldDefinitions = [
|
|
24
27
|
{
|
|
@@ -229,6 +232,39 @@ const colorFieldDefinitions = [
|
|
|
229
232
|
en: 'Focus ring color',
|
|
230
233
|
cs: 'Barva focus prstence'
|
|
231
234
|
}
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
name: 'gradientFrom',
|
|
238
|
+
label: {
|
|
239
|
+
en: 'Gradient · From',
|
|
240
|
+
cs: 'Gradient · Od'
|
|
241
|
+
},
|
|
242
|
+
description: {
|
|
243
|
+
en: 'Start colour of the brand gradient (--gradient-from)',
|
|
244
|
+
cs: 'Počáteční barva brandového gradientu (--gradient-from)'
|
|
245
|
+
}
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
name: 'gradientVia',
|
|
249
|
+
label: {
|
|
250
|
+
en: 'Gradient · Via',
|
|
251
|
+
cs: 'Gradient · Přes'
|
|
252
|
+
},
|
|
253
|
+
description: {
|
|
254
|
+
en: 'Optional middle colour of the brand gradient (--gradient-via)',
|
|
255
|
+
cs: 'Volitelná prostřední barva gradientu (--gradient-via)'
|
|
256
|
+
}
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
name: 'gradientTo',
|
|
260
|
+
label: {
|
|
261
|
+
en: 'Gradient · To',
|
|
262
|
+
cs: 'Gradient · Do'
|
|
263
|
+
},
|
|
264
|
+
description: {
|
|
265
|
+
en: 'End colour of the brand gradient (--gradient-to)',
|
|
266
|
+
cs: 'Koncová barva brandového gradientu (--gradient-to)'
|
|
267
|
+
}
|
|
232
268
|
}
|
|
233
269
|
];
|
|
234
270
|
// Light Mode Default Colors (Shadcn UI inspired defaults)
|
|
@@ -251,7 +287,10 @@ export const lightModeDefaults = {
|
|
|
251
287
|
destructiveForeground: '#fafafa',
|
|
252
288
|
border: '#e4e4e7',
|
|
253
289
|
input: '#e4e4e7',
|
|
254
|
-
ring: '#18181b'
|
|
290
|
+
ring: '#18181b',
|
|
291
|
+
gradientFrom: '#9372f7',
|
|
292
|
+
gradientVia: '#7c6ff0',
|
|
293
|
+
gradientTo: '#22d3ee'
|
|
255
294
|
};
|
|
256
295
|
// Dark Mode Default Colors (Shadcn UI inspired defaults)
|
|
257
296
|
export const darkModeDefaults = {
|
|
@@ -273,7 +312,10 @@ export const darkModeDefaults = {
|
|
|
273
312
|
destructiveForeground: '#fafafa',
|
|
274
313
|
border: '#27272a',
|
|
275
314
|
input: '#27272a',
|
|
276
|
-
ring: '#d4d4d8'
|
|
315
|
+
ring: '#d4d4d8',
|
|
316
|
+
gradientFrom: '#9372f7',
|
|
317
|
+
gradientVia: '#7c6ff0',
|
|
318
|
+
gradientTo: '#22d3ee'
|
|
277
319
|
};
|
|
278
320
|
function createColorFields(defaults) {
|
|
279
321
|
return colorFieldDefinitions.map(({ name, label, description })=>({
|
|
@@ -292,8 +334,8 @@ function createColorFields(defaults) {
|
|
|
292
334
|
export const lightModeField = {
|
|
293
335
|
type: 'collapsible',
|
|
294
336
|
label: {
|
|
295
|
-
en: '
|
|
296
|
-
cs: '
|
|
337
|
+
en: 'Light Mode Colors',
|
|
338
|
+
cs: 'Barvy světlého režimu'
|
|
297
339
|
},
|
|
298
340
|
admin: {
|
|
299
341
|
initCollapsed: true,
|
|
@@ -313,8 +355,8 @@ export const lightModeField = {
|
|
|
313
355
|
export const darkModeField = {
|
|
314
356
|
type: 'collapsible',
|
|
315
357
|
label: {
|
|
316
|
-
en: '
|
|
317
|
-
cs: '
|
|
358
|
+
en: 'Dark Mode Colors',
|
|
359
|
+
cs: 'Barvy tmavého režimu'
|
|
318
360
|
},
|
|
319
361
|
admin: {
|
|
320
362
|
initCollapsed: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/fields/colorModeFields.ts"],"sourcesContent":["import type { Field } from 'payload'\n\nconst themeColorPickerComponentPath = '@kilivi/payloadcms-theme-management/fields/ThemeColorPickerField'\n\ntype LocalizedText = Record<string, string>\n\nconst colorFieldKeys = [\n 'background',\n 'foreground',\n 'primary',\n 'primaryForeground',\n 'card',\n 'cardForeground',\n 'popover',\n 'popoverForeground',\n 'secondary',\n 'secondaryForeground',\n 'muted',\n 'mutedForeground',\n 'accent',\n 'accentForeground',\n 'destructive',\n 'destructiveForeground',\n 'border',\n 'input',\n 'ring',\n] as const\n\ntype ColorToken = (typeof colorFieldKeys)[number]\n\ninterface ColorFieldDefinition {\n name: ColorToken\n label: LocalizedText\n description: LocalizedText\n}\n\ntype ColorPalette = Record<ColorToken, string>\n\nconst colorFieldDefinitions: ColorFieldDefinition[] = [\n {\n name: 'background',\n label: { en: 'Background', cs: 'Pozadí' },\n description: { en: 'Main background color', cs: 'Hlavní barva pozadí' },\n },\n {\n name: 'foreground',\n label: { en: 'Foreground', cs: 'Popředí' },\n description: { en: 'Main text color', cs: 'Hlavní barva textu' },\n },\n {\n name: 'primary',\n label: { en: 'Primary', cs: 'Primární' },\n description: {\n en: 'Primary brand color for buttons, links',\n cs: 'Primární barva značky pro tlačítka, odkazy',\n },\n },\n {\n name: 'primaryForeground',\n label: { en: 'Primary Foreground', cs: 'Primární popředí' },\n description: {\n en: 'Text color on primary background',\n cs: 'Barva textu na primárním pozadí',\n },\n },\n {\n name: 'card',\n label: { en: 'Card', cs: 'Karta' },\n description: { en: 'Card background color', cs: 'Barva pozadí karty' },\n },\n {\n name: 'cardForeground',\n label: { en: 'Card Foreground', cs: 'Karta popředí' },\n description: {\n en: 'Text color on card background',\n cs: 'Barva textu na pozadí karty',\n },\n },\n {\n name: 'popover',\n label: { en: 'Popover', cs: 'Popover' },\n description: { en: 'Popover background color', cs: 'Barva pozadí popoveru' },\n },\n {\n name: 'popoverForeground',\n label: { en: 'Popover Foreground', cs: 'Popover popředí' },\n description: {\n en: 'Text color on popover background',\n cs: 'Barva textu na pozadí popoveru',\n },\n },\n {\n name: 'secondary',\n label: { en: 'Secondary', cs: 'Sekundární' },\n description: { en: 'Secondary UI elements', cs: 'Sekundární UI prvky' },\n },\n {\n name: 'secondaryForeground',\n label: { en: 'Secondary Foreground', cs: 'Sekundární popředí' },\n description: {\n en: 'Text color on secondary background',\n cs: 'Barva textu na sekundárním pozadí',\n },\n },\n {\n name: 'muted',\n label: { en: 'Muted', cs: 'Ztlumený' },\n description: { en: 'Muted backgrounds', cs: 'Ztlumená pozadí' },\n },\n {\n name: 'mutedForeground',\n label: { en: 'Muted Foreground', cs: 'Ztlumené popředí' },\n description: { en: 'Muted text color', cs: 'Ztlumená barva textu' },\n },\n {\n name: 'accent',\n label: { en: 'Accent', cs: 'Akcent' },\n description: { en: 'Accent color for highlights', cs: 'Akcentová barva pro zvýraznění' },\n },\n {\n name: 'accentForeground',\n label: { en: 'Accent Foreground', cs: 'Akcent popředí' },\n description: {\n en: 'Text color on accent background',\n cs: 'Barva textu na akcentovém pozadí',\n },\n },\n {\n name: 'destructive',\n label: { en: 'Destructive', cs: 'Destruktivní' },\n description: { en: 'Error and destructive actions', cs: 'Chyby a destruktivní akce' },\n },\n {\n name: 'destructiveForeground',\n label: { en: 'Destructive Foreground', cs: 'Destruktivní popředí' },\n description: {\n en: 'Text color on destructive background',\n cs: 'Barva textu na destruktivním pozadí',\n },\n },\n {\n name: 'border',\n label: { en: 'Border', cs: 'Okraj' },\n description: { en: 'Border color', cs: 'Barva okraje' },\n },\n {\n name: 'input',\n label: { en: 'Input', cs: 'Vstup' },\n description: { en: 'Input border color', cs: 'Barva okraje vstupů' },\n },\n {\n name: 'ring',\n label: { en: 'Ring', cs: 'Prstenec' },\n description: { en: 'Focus ring color', cs: 'Barva focus prstence' },\n },\n]\n\n// Light Mode Default Colors (Shadcn UI inspired defaults)\nexport const lightModeDefaults: ColorPalette = {\n background: '#ffffff',\n foreground: '#0a0a0a',\n card: '#ffffff',\n cardForeground: '#0a0a0a',\n popover: '#ffffff',\n popoverForeground: '#0a0a0a',\n primary: '#9372f7',\n primaryForeground: '#fafafa',\n secondary: '#f4f4f5',\n secondaryForeground: '#18181b',\n muted: '#f4f4f5',\n mutedForeground: '#71717a',\n accent: '#f4f4f5',\n accentForeground: '#18181b',\n destructive: '#ef4444',\n destructiveForeground: '#fafafa',\n border: '#e4e4e7',\n input: '#e4e4e7',\n ring: '#18181b',\n}\n\n// Dark Mode Default Colors (Shadcn UI inspired defaults)\nexport const darkModeDefaults: ColorPalette = {\n background: '#0a0a0a',\n foreground: '#fafafa',\n card: '#09090b',\n cardForeground: '#fafafa',\n popover: '#09090b',\n popoverForeground: '#fafafa',\n primary: '#9372f7',\n primaryForeground: '#09090b',\n secondary: '#27272a',\n secondaryForeground: '#fafafa',\n muted: '#27272a',\n mutedForeground: '#a1a1aa',\n accent: '#27272a',\n accentForeground: '#fafafa',\n destructive: '#7f1d1d',\n destructiveForeground: '#fafafa',\n border: '#27272a',\n input: '#27272a',\n ring: '#d4d4d8',\n}\n\nfunction createColorFields(defaults: ColorPalette): Field[] {\n return colorFieldDefinitions.map(({ name, label, description }) => ({\n name,\n type: 'text',\n label,\n defaultValue: defaults[name],\n admin: {\n components: {\n Field: themeColorPickerComponentPath,\n },\n description,\n },\n }))\n}\n\nexport const lightModeField: Field = {\n type: 'collapsible',\n label: {\n en: '☀️ Light Mode Colors',\n cs: '☀️ Barvy světlého režimu',\n },\n admin: {\n initCollapsed: true,\n description: {\n en: 'Configure colors for light mode',\n cs: 'Nakonfigurujte barvy pro světlý režim',\n },\n },\n fields: [\n {\n name: 'lightMode',\n type: 'group',\n fields: createColorFields(lightModeDefaults),\n },\n ],\n}\n\nexport const darkModeField: Field = {\n type: 'collapsible',\n label: {\n en: '🌙 Dark Mode Colors',\n cs: '🌙 Barvy tmavého režimu',\n },\n admin: {\n initCollapsed: true,\n description: {\n en: 'Configure colors for dark mode',\n cs: 'Nakonfigurujte barvy pro tmavý režim',\n },\n },\n fields: [\n {\n name: 'darkMode',\n type: 'group',\n fields: createColorFields(darkModeDefaults),\n },\n ],\n}\n"],"names":["themeColorPickerComponentPath","colorFieldKeys","colorFieldDefinitions","name","label","en","cs","description","lightModeDefaults","background","foreground","card","cardForeground","popover","popoverForeground","primary","primaryForeground","secondary","secondaryForeground","muted","mutedForeground","accent","accentForeground","destructive","destructiveForeground","border","input","ring","darkModeDefaults","createColorFields","defaults","map","type","defaultValue","admin","components","Field","lightModeField","initCollapsed","fields","darkModeField"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/fields/colorModeFields.ts"],"sourcesContent":["import type { Field } from 'payload'\n\nconst themeColorPickerComponentPath =\n '@kilivi/payloadcms-theme-management/fields/ThemeColorPickerField'\n\ntype LocalizedText = Record<string, string>\n\nconst colorFieldKeys = [\n 'background',\n 'foreground',\n 'primary',\n 'primaryForeground',\n 'card',\n 'cardForeground',\n 'popover',\n 'popoverForeground',\n 'secondary',\n 'secondaryForeground',\n 'muted',\n 'mutedForeground',\n 'accent',\n 'accentForeground',\n 'destructive',\n 'destructiveForeground',\n 'border',\n 'input',\n 'ring',\n 'gradientFrom',\n 'gradientVia',\n 'gradientTo',\n] as const\n\ntype ColorToken = (typeof colorFieldKeys)[number]\n\ninterface ColorFieldDefinition {\n name: ColorToken\n label: LocalizedText\n description: LocalizedText\n}\n\ntype ColorPalette = Record<ColorToken, string>\n\nconst colorFieldDefinitions: ColorFieldDefinition[] = [\n {\n name: 'background',\n label: { en: 'Background', cs: 'Pozadí' },\n description: { en: 'Main background color', cs: 'Hlavní barva pozadí' },\n },\n {\n name: 'foreground',\n label: { en: 'Foreground', cs: 'Popředí' },\n description: { en: 'Main text color', cs: 'Hlavní barva textu' },\n },\n {\n name: 'primary',\n label: { en: 'Primary', cs: 'Primární' },\n description: {\n en: 'Primary brand color for buttons, links',\n cs: 'Primární barva značky pro tlačítka, odkazy',\n },\n },\n {\n name: 'primaryForeground',\n label: { en: 'Primary Foreground', cs: 'Primární popředí' },\n description: {\n en: 'Text color on primary background',\n cs: 'Barva textu na primárním pozadí',\n },\n },\n {\n name: 'card',\n label: { en: 'Card', cs: 'Karta' },\n description: { en: 'Card background color', cs: 'Barva pozadí karty' },\n },\n {\n name: 'cardForeground',\n label: { en: 'Card Foreground', cs: 'Karta popředí' },\n description: {\n en: 'Text color on card background',\n cs: 'Barva textu na pozadí karty',\n },\n },\n {\n name: 'popover',\n label: { en: 'Popover', cs: 'Popover' },\n description: { en: 'Popover background color', cs: 'Barva pozadí popoveru' },\n },\n {\n name: 'popoverForeground',\n label: { en: 'Popover Foreground', cs: 'Popover popředí' },\n description: {\n en: 'Text color on popover background',\n cs: 'Barva textu na pozadí popoveru',\n },\n },\n {\n name: 'secondary',\n label: { en: 'Secondary', cs: 'Sekundární' },\n description: { en: 'Secondary UI elements', cs: 'Sekundární UI prvky' },\n },\n {\n name: 'secondaryForeground',\n label: { en: 'Secondary Foreground', cs: 'Sekundární popředí' },\n description: {\n en: 'Text color on secondary background',\n cs: 'Barva textu na sekundárním pozadí',\n },\n },\n {\n name: 'muted',\n label: { en: 'Muted', cs: 'Ztlumený' },\n description: { en: 'Muted backgrounds', cs: 'Ztlumená pozadí' },\n },\n {\n name: 'mutedForeground',\n label: { en: 'Muted Foreground', cs: 'Ztlumené popředí' },\n description: { en: 'Muted text color', cs: 'Ztlumená barva textu' },\n },\n {\n name: 'accent',\n label: { en: 'Accent', cs: 'Akcent' },\n description: { en: 'Accent color for highlights', cs: 'Akcentová barva pro zvýraznění' },\n },\n {\n name: 'accentForeground',\n label: { en: 'Accent Foreground', cs: 'Akcent popředí' },\n description: {\n en: 'Text color on accent background',\n cs: 'Barva textu na akcentovém pozadí',\n },\n },\n {\n name: 'destructive',\n label: { en: 'Destructive', cs: 'Destruktivní' },\n description: { en: 'Error and destructive actions', cs: 'Chyby a destruktivní akce' },\n },\n {\n name: 'destructiveForeground',\n label: { en: 'Destructive Foreground', cs: 'Destruktivní popředí' },\n description: {\n en: 'Text color on destructive background',\n cs: 'Barva textu na destruktivním pozadí',\n },\n },\n {\n name: 'border',\n label: { en: 'Border', cs: 'Okraj' },\n description: { en: 'Border color', cs: 'Barva okraje' },\n },\n {\n name: 'input',\n label: { en: 'Input', cs: 'Vstup' },\n description: { en: 'Input border color', cs: 'Barva okraje vstupů' },\n },\n {\n name: 'ring',\n label: { en: 'Ring', cs: 'Prstenec' },\n description: { en: 'Focus ring color', cs: 'Barva focus prstence' },\n },\n {\n name: 'gradientFrom',\n label: { en: 'Gradient · From', cs: 'Gradient · Od' },\n description: {\n en: 'Start colour of the brand gradient (--gradient-from)',\n cs: 'Počáteční barva brandového gradientu (--gradient-from)',\n },\n },\n {\n name: 'gradientVia',\n label: { en: 'Gradient · Via', cs: 'Gradient · Přes' },\n description: {\n en: 'Optional middle colour of the brand gradient (--gradient-via)',\n cs: 'Volitelná prostřední barva gradientu (--gradient-via)',\n },\n },\n {\n name: 'gradientTo',\n label: { en: 'Gradient · To', cs: 'Gradient · Do' },\n description: {\n en: 'End colour of the brand gradient (--gradient-to)',\n cs: 'Koncová barva brandového gradientu (--gradient-to)',\n },\n },\n]\n\n// Light Mode Default Colors (Shadcn UI inspired defaults)\nexport const lightModeDefaults: ColorPalette = {\n background: '#ffffff',\n foreground: '#0a0a0a',\n card: '#ffffff',\n cardForeground: '#0a0a0a',\n popover: '#ffffff',\n popoverForeground: '#0a0a0a',\n primary: '#9372f7',\n primaryForeground: '#fafafa',\n secondary: '#f4f4f5',\n secondaryForeground: '#18181b',\n muted: '#f4f4f5',\n mutedForeground: '#71717a',\n accent: '#f4f4f5',\n accentForeground: '#18181b',\n destructive: '#ef4444',\n destructiveForeground: '#fafafa',\n border: '#e4e4e7',\n input: '#e4e4e7',\n ring: '#18181b',\n gradientFrom: '#9372f7',\n gradientVia: '#7c6ff0',\n gradientTo: '#22d3ee',\n}\n\n// Dark Mode Default Colors (Shadcn UI inspired defaults)\nexport const darkModeDefaults: ColorPalette = {\n background: '#0a0a0a',\n foreground: '#fafafa',\n card: '#09090b',\n cardForeground: '#fafafa',\n popover: '#09090b',\n popoverForeground: '#fafafa',\n primary: '#9372f7',\n primaryForeground: '#09090b',\n secondary: '#27272a',\n secondaryForeground: '#fafafa',\n muted: '#27272a',\n mutedForeground: '#a1a1aa',\n accent: '#27272a',\n accentForeground: '#fafafa',\n destructive: '#7f1d1d',\n destructiveForeground: '#fafafa',\n border: '#27272a',\n input: '#27272a',\n ring: '#d4d4d8',\n gradientFrom: '#9372f7',\n gradientVia: '#7c6ff0',\n gradientTo: '#22d3ee',\n}\n\nfunction createColorFields(defaults: ColorPalette): Field[] {\n return colorFieldDefinitions.map(({ name, label, description }) => ({\n name,\n type: 'text',\n label,\n defaultValue: defaults[name],\n admin: {\n components: {\n Field: themeColorPickerComponentPath,\n },\n description,\n },\n }))\n}\n\nexport const lightModeField: Field = {\n type: 'collapsible',\n label: {\n en: 'Light Mode Colors',\n cs: 'Barvy světlého režimu',\n },\n admin: {\n initCollapsed: true,\n description: {\n en: 'Configure colors for light mode',\n cs: 'Nakonfigurujte barvy pro světlý režim',\n },\n },\n fields: [\n {\n name: 'lightMode',\n type: 'group',\n fields: createColorFields(lightModeDefaults),\n },\n ],\n}\n\nexport const darkModeField: Field = {\n type: 'collapsible',\n label: {\n en: 'Dark Mode Colors',\n cs: 'Barvy tmavého režimu',\n },\n admin: {\n initCollapsed: true,\n description: {\n en: 'Configure colors for dark mode',\n cs: 'Nakonfigurujte barvy pro tmavý režim',\n },\n },\n fields: [\n {\n name: 'darkMode',\n type: 'group',\n fields: createColorFields(darkModeDefaults),\n },\n ],\n}\n"],"names":["themeColorPickerComponentPath","colorFieldKeys","colorFieldDefinitions","name","label","en","cs","description","lightModeDefaults","background","foreground","card","cardForeground","popover","popoverForeground","primary","primaryForeground","secondary","secondaryForeground","muted","mutedForeground","accent","accentForeground","destructive","destructiveForeground","border","input","ring","gradientFrom","gradientVia","gradientTo","darkModeDefaults","createColorFields","defaults","map","type","defaultValue","admin","components","Field","lightModeField","initCollapsed","fields","darkModeField"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { TabsField } from 'payload';
|
|
1
|
+
import type { Field, TabsField } from 'payload';
|
|
2
2
|
import type { ThemePreset } from '../index.js';
|
|
3
3
|
interface ThemeConfigurationFieldOptions {
|
|
4
4
|
themePresets: ThemePreset[];
|
|
@@ -8,6 +8,13 @@ interface ThemeConfigurationFieldOptions {
|
|
|
8
8
|
includeBrandIdentity: boolean;
|
|
9
9
|
enableAdvancedFeatures?: boolean;
|
|
10
10
|
useThemePreviewField?: boolean;
|
|
11
|
+
customThemeConfigurationFields?: Field[];
|
|
12
|
+
customThemeConfigurationSections?: Array<{
|
|
13
|
+
label: string | Record<string, string>;
|
|
14
|
+
fields: Field[];
|
|
15
|
+
initCollapsed?: boolean;
|
|
16
|
+
description?: string | Record<string, string>;
|
|
17
|
+
}>;
|
|
11
18
|
}
|
|
12
19
|
export type ThemeTab = NonNullable<TabsField['tabs']>[number];
|
|
13
20
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"themeConfigurationField.d.ts","sourceRoot":"","sources":["../../src/fields/themeConfigurationField.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"themeConfigurationField.d.ts","sourceRoot":"","sources":["../../src/fields/themeConfigurationField.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAS/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAI9C,UAAU,8BAA8B;IACtC,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,YAAY,EAAE,MAAM,CAAA;IACpB,sBAAsB,EAAE,OAAO,CAAA;IAC/B,gBAAgB,EAAE,OAAO,CAAA;IACzB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,8BAA8B,CAAC,EAAE,KAAK,EAAE,CAAA;IACxC,gCAAgC,CAAC,EAAE,KAAK,CAAC;QACvC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACtC,MAAM,EAAE,KAAK,EAAE,CAAA;QACf,aAAa,CAAC,EAAE,OAAO,CAAA;QACvB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAC9C,CAAC,CAAA;CACH;AASD,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;AAE7D;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,8BAA8B,GAAG,QAAQ,CAoiC/F"}
|