@kilivi/payloadcms-theme-management 0.2.11 → 0.2.12
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/dist/fields/ExtendedThemeAutoPopulateField.d.ts +12 -0
- package/dist/fields/ExtendedThemeAutoPopulateField.d.ts.map +1 -0
- package/dist/fields/ExtendedThemeAutoPopulateField.js +176 -0
- package/dist/fields/ExtendedThemeAutoPopulateField.js.map +1 -0
- package/dist/fields/extendedThemeFields.d.ts +2 -1
- package/dist/fields/extendedThemeFields.d.ts.map +1 -1
- package/dist/fields/extendedThemeFields.js +5 -4
- package/dist/fields/extendedThemeFields.js.map +1 -1
- package/dist/fields/themeConfigurationField.d.ts.map +1 -1
- package/dist/fields/themeConfigurationField.js +4 -8
- package/dist/fields/themeConfigurationField.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/font-loader.d.ts +127 -0
- package/dist/providers/font-loader.d.ts.map +1 -0
- package/dist/providers/font-loader.js +212 -0
- package/dist/providers/font-loader.js.map +1 -0
- package/package.json +1 -1
- package/dist/fields/ThemePresetSelectField.d.ts +0 -4
- package/dist/fields/ThemePresetSelectField.d.ts.map +0 -1
- package/dist/fields/ThemePresetSelectField.js +0 -228
- package/dist/fields/ThemePresetSelectField.js.map +0 -1
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SelectFieldClientComponent } from 'payload';
|
|
2
|
+
/**
|
|
3
|
+
* Extended Theme Field with Auto-Population
|
|
4
|
+
*
|
|
5
|
+
* This component:
|
|
6
|
+
* 1. Shows color swatches for each theme option
|
|
7
|
+
* 2. Auto-populates ALL color fields when a theme is selected
|
|
8
|
+
* 3. Fills in ALL light mode and dark mode colors with preset defaults
|
|
9
|
+
*/
|
|
10
|
+
declare const ExtendedThemeAutoPopulateField: SelectFieldClientComponent;
|
|
11
|
+
export default ExtendedThemeAutoPopulateField;
|
|
12
|
+
//# sourceMappingURL=ExtendedThemeAutoPopulateField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExtendedThemeAutoPopulateField.d.ts","sourceRoot":"","sources":["../../src/fields/ExtendedThemeAutoPopulateField.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAA;AAIzD;;;;;;;GAOG;AACH,QAAA,MAAM,8BAA8B,EAAE,0BAsLrC,CAAA;AAED,eAAe,8BAA8B,CAAA"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useField, useForm } from '@payloadcms/ui';
|
|
4
|
+
import { useCallback, useEffect, useRef } from 'react';
|
|
5
|
+
import { allExtendedThemePresets } from '../extended-presets.js';
|
|
6
|
+
/**
|
|
7
|
+
* Extended Theme Field with Auto-Population
|
|
8
|
+
*
|
|
9
|
+
* This component:
|
|
10
|
+
* 1. Shows color swatches for each theme option
|
|
11
|
+
* 2. Auto-populates ALL color fields when a theme is selected
|
|
12
|
+
* 3. Fills in ALL light mode and dark mode colors with preset defaults
|
|
13
|
+
*/ const ExtendedThemeAutoPopulateField = ({ field, path })=>{
|
|
14
|
+
const { value, setValue } = useField({
|
|
15
|
+
path
|
|
16
|
+
});
|
|
17
|
+
const { dispatchFields } = useForm();
|
|
18
|
+
const hasInitializedRef = useRef(false);
|
|
19
|
+
const options = field.options || [];
|
|
20
|
+
const selectedOption = options.find((opt)=>opt.value === value);
|
|
21
|
+
// Auto-populate colors when theme is selected
|
|
22
|
+
const applyThemePreset = useCallback((presetKey)=>{
|
|
23
|
+
const preset = allExtendedThemePresets[presetKey];
|
|
24
|
+
if (!preset) return;
|
|
25
|
+
// Apply all light mode colors
|
|
26
|
+
Object.entries(preset.styles.light).forEach(([key, colorValue])=>{
|
|
27
|
+
dispatchFields({
|
|
28
|
+
type: 'UPDATE',
|
|
29
|
+
path: `themeConfiguration.extendedLightMode.${key}`,
|
|
30
|
+
value: colorValue
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
// Apply all dark mode colors
|
|
34
|
+
Object.entries(preset.styles.dark).forEach(([key, colorValue])=>{
|
|
35
|
+
dispatchFields({
|
|
36
|
+
type: 'UPDATE',
|
|
37
|
+
path: `themeConfiguration.extendedDarkMode.${key}`,
|
|
38
|
+
value: colorValue
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
}, [
|
|
42
|
+
dispatchFields
|
|
43
|
+
]);
|
|
44
|
+
const handleChange = useCallback((newValue)=>{
|
|
45
|
+
setValue(newValue);
|
|
46
|
+
if (newValue) {
|
|
47
|
+
applyThemePreset(newValue);
|
|
48
|
+
}
|
|
49
|
+
}, [
|
|
50
|
+
setValue,
|
|
51
|
+
applyThemePreset
|
|
52
|
+
]);
|
|
53
|
+
// Auto-populate on initial load if value exists
|
|
54
|
+
useEffect(()=>{
|
|
55
|
+
if (!hasInitializedRef.current && value) {
|
|
56
|
+
applyThemePreset(value);
|
|
57
|
+
hasInitializedRef.current = true;
|
|
58
|
+
}
|
|
59
|
+
}, [
|
|
60
|
+
value,
|
|
61
|
+
applyThemePreset
|
|
62
|
+
]);
|
|
63
|
+
// Get color swatches for a preset
|
|
64
|
+
const getPresetColors = (presetValue)=>{
|
|
65
|
+
const preset = allExtendedThemePresets[presetValue];
|
|
66
|
+
if (!preset) return [];
|
|
67
|
+
const colors = [
|
|
68
|
+
preset.styles.light.primary,
|
|
69
|
+
preset.styles.light.secondary,
|
|
70
|
+
preset.styles.light.accent,
|
|
71
|
+
preset.styles.light.background,
|
|
72
|
+
preset.styles.light.foreground
|
|
73
|
+
].filter(Boolean);
|
|
74
|
+
return colors.slice(0, 5);
|
|
75
|
+
};
|
|
76
|
+
const label = typeof field.label === 'string' ? field.label : field.label?.en || field.label?.cs || 'Theme Preset';
|
|
77
|
+
const description = typeof field.admin?.description === 'string' ? field.admin.description : field.admin?.description?.en || field.admin?.description?.cs;
|
|
78
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
79
|
+
style: {
|
|
80
|
+
marginBottom: '16px'
|
|
81
|
+
},
|
|
82
|
+
children: [
|
|
83
|
+
/*#__PURE__*/ _jsx("label", {
|
|
84
|
+
style: {
|
|
85
|
+
display: 'block',
|
|
86
|
+
marginBottom: '6px',
|
|
87
|
+
fontSize: '13px',
|
|
88
|
+
fontWeight: 600,
|
|
89
|
+
color: 'var(--theme-elevation-800)'
|
|
90
|
+
},
|
|
91
|
+
children: label
|
|
92
|
+
}),
|
|
93
|
+
description && /*#__PURE__*/ _jsx("div", {
|
|
94
|
+
style: {
|
|
95
|
+
fontSize: '12px',
|
|
96
|
+
color: 'var(--theme-elevation-500)',
|
|
97
|
+
marginBottom: '8px'
|
|
98
|
+
},
|
|
99
|
+
children: description
|
|
100
|
+
}),
|
|
101
|
+
/*#__PURE__*/ _jsxs("select", {
|
|
102
|
+
value: value || '',
|
|
103
|
+
onChange: (e)=>handleChange(e.target.value),
|
|
104
|
+
style: {
|
|
105
|
+
width: '100%',
|
|
106
|
+
padding: '10px 12px',
|
|
107
|
+
borderRadius: '6px',
|
|
108
|
+
border: '1px solid var(--theme-elevation-200)',
|
|
109
|
+
backgroundColor: 'var(--theme-input-bg)',
|
|
110
|
+
color: 'var(--theme-elevation-800)',
|
|
111
|
+
fontSize: '14px',
|
|
112
|
+
cursor: 'pointer'
|
|
113
|
+
},
|
|
114
|
+
children: [
|
|
115
|
+
/*#__PURE__*/ _jsx("option", {
|
|
116
|
+
value: "",
|
|
117
|
+
children: "Select a theme..."
|
|
118
|
+
}),
|
|
119
|
+
options.map((option)=>/*#__PURE__*/ _jsx("option", {
|
|
120
|
+
value: option.value,
|
|
121
|
+
children: option.label
|
|
122
|
+
}, option.value))
|
|
123
|
+
]
|
|
124
|
+
}),
|
|
125
|
+
selectedOption && /*#__PURE__*/ _jsxs("div", {
|
|
126
|
+
style: {
|
|
127
|
+
marginTop: '12px',
|
|
128
|
+
padding: '12px',
|
|
129
|
+
borderRadius: '8px',
|
|
130
|
+
backgroundColor: 'var(--theme-elevation-50)',
|
|
131
|
+
border: '1px solid var(--theme-elevation-200)'
|
|
132
|
+
},
|
|
133
|
+
children: [
|
|
134
|
+
/*#__PURE__*/ _jsx("div", {
|
|
135
|
+
style: {
|
|
136
|
+
fontSize: '12px',
|
|
137
|
+
fontWeight: 600,
|
|
138
|
+
marginBottom: '8px',
|
|
139
|
+
color: 'var(--theme-elevation-700)'
|
|
140
|
+
},
|
|
141
|
+
children: selectedOption.label
|
|
142
|
+
}),
|
|
143
|
+
/*#__PURE__*/ _jsx("div", {
|
|
144
|
+
style: {
|
|
145
|
+
display: 'flex',
|
|
146
|
+
gap: '8px',
|
|
147
|
+
alignItems: 'center'
|
|
148
|
+
},
|
|
149
|
+
children: getPresetColors(selectedOption.value).map((color, index)=>/*#__PURE__*/ _jsx("div", {
|
|
150
|
+
style: {
|
|
151
|
+
width: '32px',
|
|
152
|
+
height: '32px',
|
|
153
|
+
borderRadius: '6px',
|
|
154
|
+
backgroundColor: color,
|
|
155
|
+
border: '1px solid rgba(0, 0, 0, 0.1)',
|
|
156
|
+
boxShadow: '0 2px 4px rgba(0, 0, 0, 0.05)'
|
|
157
|
+
},
|
|
158
|
+
title: color
|
|
159
|
+
}, `${selectedOption.value}-${index}`))
|
|
160
|
+
}),
|
|
161
|
+
/*#__PURE__*/ _jsx("div", {
|
|
162
|
+
style: {
|
|
163
|
+
marginTop: '8px',
|
|
164
|
+
fontSize: '11px',
|
|
165
|
+
color: 'var(--theme-elevation-500)'
|
|
166
|
+
},
|
|
167
|
+
children: "✅ All colors auto-populated from this theme"
|
|
168
|
+
})
|
|
169
|
+
]
|
|
170
|
+
})
|
|
171
|
+
]
|
|
172
|
+
});
|
|
173
|
+
};
|
|
174
|
+
export default ExtendedThemeAutoPopulateField;
|
|
175
|
+
|
|
176
|
+
//# sourceMappingURL=ExtendedThemeAutoPopulateField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/fields/ExtendedThemeAutoPopulateField.tsx"],"sourcesContent":["'use client'\n\nimport { useField, useForm } from '@payloadcms/ui'\nimport type { SelectFieldClientComponent } from 'payload'\nimport { useCallback, useEffect, useRef } from 'react'\nimport { allExtendedThemePresets } from '../extended-presets.js'\n\n/**\n * Extended Theme Field with Auto-Population\n *\n * This component:\n * 1. Shows color swatches for each theme option\n * 2. Auto-populates ALL color fields when a theme is selected\n * 3. Fills in ALL light mode and dark mode colors with preset defaults\n */\nconst ExtendedThemeAutoPopulateField: SelectFieldClientComponent = ({ field, path }) => {\n const { value, setValue } = useField<string>({ path })\n const { dispatchFields } = useForm()\n const hasInitializedRef = useRef(false)\n\n const options = (field.options as Array<{ label: string; value: string }>) || []\n const selectedOption = options.find((opt) => opt.value === value)\n\n // Auto-populate colors when theme is selected\n const applyThemePreset = useCallback(\n (presetKey: string) => {\n const preset = allExtendedThemePresets[presetKey as keyof typeof allExtendedThemePresets]\n if (!preset) return\n\n // Apply all light mode colors\n Object.entries(preset.styles.light).forEach(([key, colorValue]) => {\n dispatchFields({\n type: 'UPDATE',\n path: `themeConfiguration.extendedLightMode.${key}`,\n value: colorValue,\n })\n })\n\n // Apply all dark mode colors\n Object.entries(preset.styles.dark).forEach(([key, colorValue]) => {\n dispatchFields({\n type: 'UPDATE',\n path: `themeConfiguration.extendedDarkMode.${key}`,\n value: colorValue,\n })\n })\n },\n [dispatchFields],\n )\n\n const handleChange = useCallback(\n (newValue: string) => {\n setValue(newValue)\n if (newValue) {\n applyThemePreset(newValue)\n }\n },\n [setValue, applyThemePreset],\n )\n\n // Auto-populate on initial load if value exists\n useEffect(() => {\n if (!hasInitializedRef.current && value) {\n applyThemePreset(value)\n hasInitializedRef.current = true\n }\n }, [value, applyThemePreset])\n\n // Get color swatches for a preset\n const getPresetColors = (presetValue: string) => {\n const preset = allExtendedThemePresets[presetValue as keyof typeof allExtendedThemePresets]\n if (!preset) return []\n\n const colors = [\n preset.styles.light.primary,\n preset.styles.light.secondary,\n preset.styles.light.accent,\n preset.styles.light.background,\n preset.styles.light.foreground,\n ].filter(Boolean)\n\n return colors.slice(0, 5)\n }\n\n const label =\n typeof field.label === 'string'\n ? field.label\n : field.label?.en || field.label?.cs || 'Theme Preset'\n const description =\n typeof field.admin?.description === 'string'\n ? field.admin.description\n : field.admin?.description?.en || field.admin?.description?.cs\n\n return (\n <div style={{ marginBottom: '16px' }}>\n <label\n style={{\n display: 'block',\n marginBottom: '6px',\n fontSize: '13px',\n fontWeight: 600,\n color: 'var(--theme-elevation-800)',\n }}\n >\n {label}\n </label>\n\n {description && (\n <div\n style={{\n fontSize: '12px',\n color: 'var(--theme-elevation-500)',\n marginBottom: '8px',\n }}\n >\n {description}\n </div>\n )}\n\n <select\n value={value || ''}\n onChange={(e) => handleChange(e.target.value)}\n style={{\n width: '100%',\n padding: '10px 12px',\n borderRadius: '6px',\n border: '1px solid var(--theme-elevation-200)',\n backgroundColor: 'var(--theme-input-bg)',\n color: 'var(--theme-elevation-800)',\n fontSize: '14px',\n cursor: 'pointer',\n }}\n >\n <option value=\"\">Select a theme...</option>\n {options.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n\n {/* Show color swatches for selected theme */}\n {selectedOption && (\n <div\n style={{\n marginTop: '12px',\n padding: '12px',\n borderRadius: '8px',\n backgroundColor: 'var(--theme-elevation-50)',\n border: '1px solid var(--theme-elevation-200)',\n }}\n >\n <div\n style={{\n fontSize: '12px',\n fontWeight: 600,\n marginBottom: '8px',\n color: 'var(--theme-elevation-700)',\n }}\n >\n {selectedOption.label}\n </div>\n <div\n style={{\n display: 'flex',\n gap: '8px',\n alignItems: 'center',\n }}\n >\n {getPresetColors(selectedOption.value).map((color, index) => (\n <div\n key={`${selectedOption.value}-${index}`}\n style={{\n width: '32px',\n height: '32px',\n borderRadius: '6px',\n backgroundColor: color,\n border: '1px solid rgba(0, 0, 0, 0.1)',\n boxShadow: '0 2px 4px rgba(0, 0, 0, 0.05)',\n }}\n title={color}\n />\n ))}\n </div>\n <div\n style={{\n marginTop: '8px',\n fontSize: '11px',\n color: 'var(--theme-elevation-500)',\n }}\n >\n ✅ All colors auto-populated from this theme\n </div>\n </div>\n )}\n </div>\n )\n}\n\nexport default ExtendedThemeAutoPopulateField\n"],"names":["useField","useForm","useCallback","useEffect","useRef","allExtendedThemePresets","ExtendedThemeAutoPopulateField","field","path","value","setValue","dispatchFields","hasInitializedRef","options","selectedOption","find","opt","applyThemePreset","presetKey","preset","Object","entries","styles","light","forEach","key","colorValue","type","dark","handleChange","newValue","current","getPresetColors","presetValue","colors","primary","secondary","accent","background","foreground","filter","Boolean","slice","label","en","cs","description","admin","div","style","marginBottom","display","fontSize","fontWeight","color","select","onChange","e","target","width","padding","borderRadius","border","backgroundColor","cursor","option","map","marginTop","gap","alignItems","index","height","boxShadow","title"],"mappings":"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"}
|
|
@@ -28,7 +28,8 @@ export declare const advancedTypographyFields: Field[];
|
|
|
28
28
|
*/
|
|
29
29
|
export declare const designSystemFields: Field[];
|
|
30
30
|
/**
|
|
31
|
-
* Extended Theme Selection Field with Visual Preview
|
|
31
|
+
* Extended Theme Selection Field with Visual Preview and Auto-Population
|
|
32
|
+
* Automatically fills all color fields when a theme is selected
|
|
32
33
|
*/
|
|
33
34
|
export declare const extendedThemeSelectionField: Field;
|
|
34
35
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extendedThemeFields.d.ts","sourceRoot":"","sources":["../../src/fields/extendedThemeFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAsEpC;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,EAgGlC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,EA0BnC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,EA0B/B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,EAiBnC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,KAAK,EAS3C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,EAKrC,CAAA;AAED
|
|
1
|
+
{"version":3,"file":"extendedThemeFields.d.ts","sourceRoot":"","sources":["../../src/fields/extendedThemeFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAsEpC;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,EAgGlC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,EA0BnC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,EA0B/B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,EAiBnC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,KAAK,EAS3C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,EAKrC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAE,KAkBzC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,KAoBlC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAoBjC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAoB/B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,KAoBnC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,KAoBrC,CAAA;AAID,eAAO,MAAM,sBAAsB;;;;;kBAOkjhB,CAAC;sBAA0B,CAAC;uBAA4C,CAAC;iBAAsC,CAAC;;;;;;;;qBAAsJ,CAAC;;;;gBAA9jgB,CAAC;uBAAmG,CAAC;gBAA0F,CAAC;iBAA6E,CAAC;kBAAoK,CAAC;;;;;;;;;;;;;;;;wGAPvpC,CAAA;AAC1D,eAAO,MAAM,qBAAqB;;;;;kBAMmjhB,CAAC;sBAA0B,CAAC;uBAA4C,CAAC;iBAAsC,CAAC;;;;;;;;qBAAsJ,CAAC;;;;gBAA9jgB,CAAC;uBAAmG,CAAC;gBAA0F,CAAC;iBAA6E,CAAC;kBAAoK,CAAC;;;;;;;;;;;;;;;;wGANzpC,CAAA;AACxD,eAAO,MAAM,gBAAgB,EAIxB,KAAK,CAAA"}
|
|
@@ -330,7 +330,8 @@ import { allExtendedThemePresets } from '../extended-presets.js';
|
|
|
330
330
|
})
|
|
331
331
|
];
|
|
332
332
|
/**
|
|
333
|
-
* Extended Theme Selection Field with Visual Preview
|
|
333
|
+
* Extended Theme Selection Field with Visual Preview and Auto-Population
|
|
334
|
+
* Automatically fills all color fields when a theme is selected
|
|
334
335
|
*/ export const extendedThemeSelectionField = {
|
|
335
336
|
name: 'extendedTheme',
|
|
336
337
|
type: 'select',
|
|
@@ -342,11 +343,11 @@ import { allExtendedThemePresets } from '../extended-presets.js';
|
|
|
342
343
|
options: extendedThemeOptions,
|
|
343
344
|
admin: {
|
|
344
345
|
description: {
|
|
345
|
-
en: 'Select a professional theme with full OKLCH color support (TweakCN compatible)',
|
|
346
|
-
cs: 'Vyberte profesionální téma s plnou podporou OKLCH barev (kompatibilní s TweakCN)'
|
|
346
|
+
en: 'Select a professional theme with full OKLCH color support (TweakCN compatible). All colors will be auto-populated.',
|
|
347
|
+
cs: 'Vyberte profesionální téma s plnou podporou OKLCH barev (kompatibilní s TweakCN). Všechny barvy budou automaticky vyplněny.'
|
|
347
348
|
},
|
|
348
349
|
components: {
|
|
349
|
-
Field: '@/fields/
|
|
350
|
+
Field: '@/fields/ExtendedThemeAutoPopulateField#default'
|
|
350
351
|
}
|
|
351
352
|
}
|
|
352
353
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/fields/extendedThemeFields.ts"],"sourcesContent":["import type { Field } from 'payload'\nimport { allExtendedThemePresets } from '../extended-presets.js'\n\n/**\n * Extended Theme Configuration Fields\n * Full TweakCN-compatible theme system with:\n * - All shadcn/ui color tokens (19 base + 5 chart = 24 color tokens)\n * - Shadow controls (6 properties)\n * - Font families (3 families: sans, serif, mono)\n * - Advanced typography (letter-spacing, global spacing)\n * - Professional color picker with live preview\n */\n\nconst extendedThemeOptions = Object.values(allExtendedThemePresets).map((preset) => {\n const primaryColor = preset.styles.light.primary\n const bgColor = preset.styles.light.background\n\n return {\n label: preset.label,\n value: preset.value,\n // Add visual preview in the dropdown\n __meta: {\n primary: primaryColor,\n background: bgColor,\n },\n }\n})\n\n/**\n * Creates professional OKLCH color field with enhanced UI\n */\nfunction createColorField(\n name: string,\n label: { en: string; cs: string },\n description?: { en: string; cs: string },\n): Field {\n return {\n name,\n type: 'text',\n label,\n admin: {\n description,\n placeholder: 'oklch(0.5 0.2 250) or #rgb or hsl(...)',\n components: {\n Field: '@kilivi/payloadcms-theme-management/fields/ThemeColorPickerField',\n },\n },\n }\n}\n\n/**\n * Creates text field for non-color values (fonts, shadows, etc.)\n */\nfunction createTextField(\n name: string,\n label: { en: string; cs: string },\n placeholder: string,\n description?: { en: string; cs: string },\n): Field {\n return {\n name,\n type: 'text',\n label,\n admin: {\n description,\n placeholder,\n },\n }\n}\n\n/**\n * Base Color Tokens (19 tokens)\n * Required for all themes\n */\nexport const baseColorFields: Field[] = [\n createColorField(\n 'background',\n { en: 'Background', cs: 'Pozadí' },\n { en: 'Main page background', cs: 'Hlavní pozadí stránky' },\n ),\n createColorField(\n 'foreground',\n { en: 'Foreground', cs: 'Popředí' },\n { en: 'Primary text color', cs: 'Primární barva textu' },\n ),\n createColorField(\n 'card',\n { en: 'Card', cs: 'Karta' },\n { en: 'Card background', cs: 'Pozadí karty' },\n ),\n createColorField(\n 'cardForeground',\n { en: 'Card Foreground', cs: 'Popředí karty' },\n { en: 'Text on cards', cs: 'Text na kartách' },\n ),\n createColorField(\n 'popover',\n { en: 'Popover', cs: 'Vyskakovací okno' },\n { en: 'Popover/dropdown background', cs: 'Pozadí vyskakovacích oken' },\n ),\n createColorField(\n 'popoverForeground',\n { en: 'Popover Foreground', cs: 'Popředí vyskakovacího okna' },\n { en: 'Text in popovers', cs: 'Text ve vyskakovacích oknech' },\n ),\n createColorField(\n 'primary',\n { en: 'Primary', cs: 'Primární' },\n { en: 'Primary brand color', cs: 'Primární značková barva' },\n ),\n createColorField(\n 'primaryForeground',\n { en: 'Primary Foreground', cs: 'Popředí primární' },\n { en: 'Text on primary', cs: 'Text na primární barvě' },\n ),\n createColorField(\n 'secondary',\n { en: 'Secondary', cs: 'Sekundární' },\n { en: 'Secondary accent', cs: 'Sekundární akcent' },\n ),\n createColorField(\n 'secondaryForeground',\n { en: 'Secondary Foreground', cs: 'Popředí sekundární' },\n { en: 'Text on secondary', cs: 'Text na sekundární' },\n ),\n createColorField(\n 'muted',\n { en: 'Muted', cs: 'Tlumená' },\n { en: 'Muted background', cs: 'Tlumené pozadí' },\n ),\n createColorField(\n 'mutedForeground',\n { en: 'Muted Foreground', cs: 'Popředí tlumené' },\n { en: 'Muted text', cs: 'Tlumený text' },\n ),\n createColorField(\n 'accent',\n { en: 'Accent', cs: 'Akcentová' },\n { en: 'Accent/hover color', cs: 'Akcentová/hover barva' },\n ),\n createColorField(\n 'accentForeground',\n { en: 'Accent Foreground', cs: 'Popředí akcentové' },\n { en: 'Text on accent', cs: 'Text na akcentové' },\n ),\n createColorField(\n 'destructive',\n { en: 'Destructive', cs: 'Destruktivní' },\n { en: 'Error/danger color', cs: 'Barva chyby/nebezpečí' },\n ),\n createColorField(\n 'destructiveForeground',\n { en: 'Destructive Foreground', cs: 'Popředí destruktivní' },\n { en: 'Text on destructive', cs: 'Text na destruktivní' },\n ),\n createColorField(\n 'border',\n { en: 'Border', cs: 'Okraj' },\n { en: 'Default border color', cs: 'Výchozí barva okraje' },\n ),\n createColorField(\n 'input',\n { en: 'Input', cs: 'Vstupní pole' },\n { en: 'Input border color', cs: 'Barva okraje vstupu' },\n ),\n createColorField(\n 'ring',\n { en: 'Ring', cs: 'Zvýraznění' },\n { en: 'Focus ring color', cs: 'Barva zvýraznění focus' },\n ),\n]\n\n/**\n * Chart Colors (5 tokens)\n * For data visualization\n */\nexport const chartColorFields: Field[] = [\n createColorField(\n 'chart1',\n { en: 'Chart 1', cs: 'Graf 1' },\n { en: 'First chart color', cs: 'První barva grafu' },\n ),\n createColorField(\n 'chart2',\n { en: 'Chart 2', cs: 'Graf 2' },\n { en: 'Second chart color', cs: 'Druhá barva grafu' },\n ),\n createColorField(\n 'chart3',\n { en: 'Chart 3', cs: 'Graf 3' },\n { en: 'Third chart color', cs: 'Třetí barva grafu' },\n ),\n createColorField(\n 'chart4',\n { en: 'Chart 4', cs: 'Graf 4' },\n { en: 'Fourth chart color', cs: 'Čtvrtá barva grafu' },\n ),\n createColorField(\n 'chart5',\n { en: 'Chart 5', cs: 'Graf 5' },\n { en: 'Fifth chart color', cs: 'Pátá barva grafu' },\n ),\n]\n\n/**\n * Shadow Controls (6 properties)\n * TweakCN essential feature\n */\nexport const shadowFields: Field[] = [\n createColorField(\n 'shadowColor',\n { en: 'Shadow Color', cs: 'Barva stínu' },\n { en: 'Base shadow color', cs: 'Základní barva stínu' },\n ),\n createTextField('shadowOpacity', { en: 'Shadow Opacity', cs: 'Průhlednost stínu' }, '0.18', {\n en: 'Shadow opacity (0-1)',\n cs: 'Průhlednost stínu (0-1)',\n }),\n createTextField('shadowBlur', { en: 'Shadow Blur', cs: 'Rozmazání stínu' }, '2px', {\n en: 'Blur radius',\n cs: 'Poloměr rozmazání',\n }),\n createTextField('shadowSpread', { en: 'Shadow Spread', cs: 'Rozprostření stínu' }, '0px', {\n en: 'Spread radius',\n cs: 'Poloměr rozprostření',\n }),\n createTextField('shadowOffsetX', { en: 'Shadow Offset X', cs: 'Posun stínu X' }, '0px', {\n en: 'Horizontal offset',\n cs: 'Horizontální posun',\n }),\n createTextField('shadowOffsetY', { en: 'Shadow Offset Y', cs: 'Posun stínu Y' }, '1px', {\n en: 'Vertical offset',\n cs: 'Vertikální posun',\n }),\n]\n\n/**\n * Font Family Configuration (3 families)\n * TweakCN essential feature\n */\nexport const fontFamilyFields: Field[] = [\n createTextField(\n 'fontSans',\n { en: 'Sans-Serif Font', cs: 'Bezpatkové písmo' },\n 'Inter, system-ui, sans-serif',\n { en: 'Primary sans-serif font stack', cs: 'Primární bezpatkové písmo' },\n ),\n createTextField('fontSerif', { en: 'Serif Font', cs: 'Patkové písmo' }, 'Georgia, serif', {\n en: 'Serif font stack',\n cs: 'Patkové písmo',\n }),\n createTextField(\n 'fontMono',\n { en: 'Monospace Font', cs: 'Monospace písmo' },\n 'JetBrains Mono, monospace',\n { en: 'Monospace font stack', cs: 'Monospace písmo' },\n ),\n]\n\n/**\n * Advanced Typography (2 properties)\n */\nexport const advancedTypographyFields: Field[] = [\n createTextField('letterSpacing', { en: 'Letter Spacing', cs: 'Rozestup písmen' }, '0em', {\n en: 'Global letter spacing',\n cs: 'Globální rozestup písmen',\n }),\n createTextField('spacing', { en: 'Spacing Scale', cs: 'Škála rozestupů' }, '0.25rem', {\n en: 'Base spacing unit',\n cs: 'Základní jednotka rozestupu',\n }),\n]\n\n/**\n * Border Radius Configuration\n */\nexport const designSystemFields: Field[] = [\n createTextField('radius', { en: 'Border Radius', cs: 'Zaoblení rohů' }, '0.5rem', {\n en: 'Default border radius',\n cs: 'Výchozí zaoblení rohů',\n }),\n]\n\n/**\n * Extended Theme Selection Field with Visual Preview\n */\nexport const extendedThemeSelectionField: Field = {\n name: 'extendedTheme',\n type: 'select',\n label: {\n en: '🎨 Theme Preset',\n cs: '🎨 Přednastavené téma',\n },\n defaultValue: 'cool-extended',\n options: extendedThemeOptions,\n admin: {\n description: {\n en: 'Select a professional theme with full OKLCH color support (TweakCN compatible)',\n cs: 'Vyberte profesionální téma s plnou podporou OKLCH barev (kompatibilní s TweakCN)',\n },\n components: {\n Field: '@/fields/ThemePresetSelectField#default',\n },\n },\n}\n\n/**\n * Unified Light Mode Configuration\n * Combines all color tokens in one place\n */\nexport const lightModeColorsField: 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: 'Complete color configuration for light mode',\n cs: 'Kompletní konfigurace barev pro světlý režim',\n },\n },\n fields: [\n {\n name: 'extendedLightMode',\n type: 'group',\n fields: [...baseColorFields, ...chartColorFields],\n },\n ],\n}\n\n/**\n * Unified Dark Mode Configuration\n */\nexport const darkModeColorsField: 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: 'Complete color configuration for dark mode',\n cs: 'Kompletní konfigurace barev pro tmavý režim',\n },\n },\n fields: [\n {\n name: 'extendedDarkMode',\n type: 'group',\n fields: [...baseColorFields, ...chartColorFields],\n },\n ],\n}\n\n/**\n * Shadow Configuration Section\n */\nexport const shadowConfigField: Field = {\n type: 'collapsible',\n label: {\n en: '🌓 Shadows & Elevation',\n cs: '🌓 Stíny a výška',\n },\n admin: {\n initCollapsed: true,\n description: {\n en: 'Configure shadow system for depth and elevation',\n cs: 'Nakonfigurujte systém stínů pro hloubku a výšku',\n },\n },\n fields: [\n {\n name: 'shadows',\n type: 'group',\n fields: shadowFields,\n },\n ],\n}\n\n/**\n * Typography Configuration Section\n */\nexport const typographyConfigField: Field = {\n type: 'collapsible',\n label: {\n en: '� Typography',\n cs: '� Typografie',\n },\n admin: {\n initCollapsed: true,\n description: {\n en: 'Font families and advanced typography settings',\n cs: 'Rodiny písem a pokročilá nastavení typografie',\n },\n },\n fields: [\n {\n name: 'typography',\n type: 'group',\n fields: [...fontFamilyFields, ...advancedTypographyFields],\n },\n ],\n}\n\n/**\n * Design System Configuration\n */\nexport const designSystemConfigField: Field = {\n type: 'collapsible',\n label: {\n en: '⚙️ Design System',\n cs: '⚙️ Designový systém',\n },\n admin: {\n initCollapsed: true,\n description: {\n en: 'Global design tokens (radius, spacing, etc.)',\n cs: 'Globální design tokeny (zaoblení, rozestupy, atd.)',\n },\n },\n fields: [\n {\n name: 'designSystem',\n type: 'group',\n fields: designSystemFields,\n },\n ],\n}\n\n// DEPRECATED: Old fields kept for backwards compatibility\n// TODO: Remove in v1.0.0\nexport const extendedLightModeField = lightModeColorsField\nexport const extendedDarkModeField = darkModeColorsField\nexport const chartColorsField = {\n type: 'group',\n name: 'chartColors',\n fields: chartColorFields,\n} as Field\n"],"names":["allExtendedThemePresets","extendedThemeOptions","Object","values","map","preset","primaryColor","styles","light","primary","bgColor","background","label","value","__meta","createColorField","name","description","type","admin","placeholder","components","Field","createTextField","baseColorFields","en","cs","chartColorFields","shadowFields","fontFamilyFields","advancedTypographyFields","designSystemFields","extendedThemeSelectionField","defaultValue","options","lightModeColorsField","initCollapsed","fields","darkModeColorsField","shadowConfigField","typographyConfigField","designSystemConfigField","extendedLightModeField","extendedDarkModeField","chartColorsField"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/fields/extendedThemeFields.ts"],"sourcesContent":["import type { Field } from 'payload'\nimport { allExtendedThemePresets } from '../extended-presets.js'\n\n/**\n * Extended Theme Configuration Fields\n * Full TweakCN-compatible theme system with:\n * - All shadcn/ui color tokens (19 base + 5 chart = 24 color tokens)\n * - Shadow controls (6 properties)\n * - Font families (3 families: sans, serif, mono)\n * - Advanced typography (letter-spacing, global spacing)\n * - Professional color picker with live preview\n */\n\nconst extendedThemeOptions = Object.values(allExtendedThemePresets).map((preset) => {\n const primaryColor = preset.styles.light.primary\n const bgColor = preset.styles.light.background\n\n return {\n label: preset.label,\n value: preset.value,\n // Add visual preview in the dropdown\n __meta: {\n primary: primaryColor,\n background: bgColor,\n },\n }\n})\n\n/**\n * Creates professional OKLCH color field with enhanced UI\n */\nfunction createColorField(\n name: string,\n label: { en: string; cs: string },\n description?: { en: string; cs: string },\n): Field {\n return {\n name,\n type: 'text',\n label,\n admin: {\n description,\n placeholder: 'oklch(0.5 0.2 250) or #rgb or hsl(...)',\n components: {\n Field: '@kilivi/payloadcms-theme-management/fields/ThemeColorPickerField',\n },\n },\n }\n}\n\n/**\n * Creates text field for non-color values (fonts, shadows, etc.)\n */\nfunction createTextField(\n name: string,\n label: { en: string; cs: string },\n placeholder: string,\n description?: { en: string; cs: string },\n): Field {\n return {\n name,\n type: 'text',\n label,\n admin: {\n description,\n placeholder,\n },\n }\n}\n\n/**\n * Base Color Tokens (19 tokens)\n * Required for all themes\n */\nexport const baseColorFields: Field[] = [\n createColorField(\n 'background',\n { en: 'Background', cs: 'Pozadí' },\n { en: 'Main page background', cs: 'Hlavní pozadí stránky' },\n ),\n createColorField(\n 'foreground',\n { en: 'Foreground', cs: 'Popředí' },\n { en: 'Primary text color', cs: 'Primární barva textu' },\n ),\n createColorField(\n 'card',\n { en: 'Card', cs: 'Karta' },\n { en: 'Card background', cs: 'Pozadí karty' },\n ),\n createColorField(\n 'cardForeground',\n { en: 'Card Foreground', cs: 'Popředí karty' },\n { en: 'Text on cards', cs: 'Text na kartách' },\n ),\n createColorField(\n 'popover',\n { en: 'Popover', cs: 'Vyskakovací okno' },\n { en: 'Popover/dropdown background', cs: 'Pozadí vyskakovacích oken' },\n ),\n createColorField(\n 'popoverForeground',\n { en: 'Popover Foreground', cs: 'Popředí vyskakovacího okna' },\n { en: 'Text in popovers', cs: 'Text ve vyskakovacích oknech' },\n ),\n createColorField(\n 'primary',\n { en: 'Primary', cs: 'Primární' },\n { en: 'Primary brand color', cs: 'Primární značková barva' },\n ),\n createColorField(\n 'primaryForeground',\n { en: 'Primary Foreground', cs: 'Popředí primární' },\n { en: 'Text on primary', cs: 'Text na primární barvě' },\n ),\n createColorField(\n 'secondary',\n { en: 'Secondary', cs: 'Sekundární' },\n { en: 'Secondary accent', cs: 'Sekundární akcent' },\n ),\n createColorField(\n 'secondaryForeground',\n { en: 'Secondary Foreground', cs: 'Popředí sekundární' },\n { en: 'Text on secondary', cs: 'Text na sekundární' },\n ),\n createColorField(\n 'muted',\n { en: 'Muted', cs: 'Tlumená' },\n { en: 'Muted background', cs: 'Tlumené pozadí' },\n ),\n createColorField(\n 'mutedForeground',\n { en: 'Muted Foreground', cs: 'Popředí tlumené' },\n { en: 'Muted text', cs: 'Tlumený text' },\n ),\n createColorField(\n 'accent',\n { en: 'Accent', cs: 'Akcentová' },\n { en: 'Accent/hover color', cs: 'Akcentová/hover barva' },\n ),\n createColorField(\n 'accentForeground',\n { en: 'Accent Foreground', cs: 'Popředí akcentové' },\n { en: 'Text on accent', cs: 'Text na akcentové' },\n ),\n createColorField(\n 'destructive',\n { en: 'Destructive', cs: 'Destruktivní' },\n { en: 'Error/danger color', cs: 'Barva chyby/nebezpečí' },\n ),\n createColorField(\n 'destructiveForeground',\n { en: 'Destructive Foreground', cs: 'Popředí destruktivní' },\n { en: 'Text on destructive', cs: 'Text na destruktivní' },\n ),\n createColorField(\n 'border',\n { en: 'Border', cs: 'Okraj' },\n { en: 'Default border color', cs: 'Výchozí barva okraje' },\n ),\n createColorField(\n 'input',\n { en: 'Input', cs: 'Vstupní pole' },\n { en: 'Input border color', cs: 'Barva okraje vstupu' },\n ),\n createColorField(\n 'ring',\n { en: 'Ring', cs: 'Zvýraznění' },\n { en: 'Focus ring color', cs: 'Barva zvýraznění focus' },\n ),\n]\n\n/**\n * Chart Colors (5 tokens)\n * For data visualization\n */\nexport const chartColorFields: Field[] = [\n createColorField(\n 'chart1',\n { en: 'Chart 1', cs: 'Graf 1' },\n { en: 'First chart color', cs: 'První barva grafu' },\n ),\n createColorField(\n 'chart2',\n { en: 'Chart 2', cs: 'Graf 2' },\n { en: 'Second chart color', cs: 'Druhá barva grafu' },\n ),\n createColorField(\n 'chart3',\n { en: 'Chart 3', cs: 'Graf 3' },\n { en: 'Third chart color', cs: 'Třetí barva grafu' },\n ),\n createColorField(\n 'chart4',\n { en: 'Chart 4', cs: 'Graf 4' },\n { en: 'Fourth chart color', cs: 'Čtvrtá barva grafu' },\n ),\n createColorField(\n 'chart5',\n { en: 'Chart 5', cs: 'Graf 5' },\n { en: 'Fifth chart color', cs: 'Pátá barva grafu' },\n ),\n]\n\n/**\n * Shadow Controls (6 properties)\n * TweakCN essential feature\n */\nexport const shadowFields: Field[] = [\n createColorField(\n 'shadowColor',\n { en: 'Shadow Color', cs: 'Barva stínu' },\n { en: 'Base shadow color', cs: 'Základní barva stínu' },\n ),\n createTextField('shadowOpacity', { en: 'Shadow Opacity', cs: 'Průhlednost stínu' }, '0.18', {\n en: 'Shadow opacity (0-1)',\n cs: 'Průhlednost stínu (0-1)',\n }),\n createTextField('shadowBlur', { en: 'Shadow Blur', cs: 'Rozmazání stínu' }, '2px', {\n en: 'Blur radius',\n cs: 'Poloměr rozmazání',\n }),\n createTextField('shadowSpread', { en: 'Shadow Spread', cs: 'Rozprostření stínu' }, '0px', {\n en: 'Spread radius',\n cs: 'Poloměr rozprostření',\n }),\n createTextField('shadowOffsetX', { en: 'Shadow Offset X', cs: 'Posun stínu X' }, '0px', {\n en: 'Horizontal offset',\n cs: 'Horizontální posun',\n }),\n createTextField('shadowOffsetY', { en: 'Shadow Offset Y', cs: 'Posun stínu Y' }, '1px', {\n en: 'Vertical offset',\n cs: 'Vertikální posun',\n }),\n]\n\n/**\n * Font Family Configuration (3 families)\n * TweakCN essential feature\n */\nexport const fontFamilyFields: Field[] = [\n createTextField(\n 'fontSans',\n { en: 'Sans-Serif Font', cs: 'Bezpatkové písmo' },\n 'Inter, system-ui, sans-serif',\n { en: 'Primary sans-serif font stack', cs: 'Primární bezpatkové písmo' },\n ),\n createTextField('fontSerif', { en: 'Serif Font', cs: 'Patkové písmo' }, 'Georgia, serif', {\n en: 'Serif font stack',\n cs: 'Patkové písmo',\n }),\n createTextField(\n 'fontMono',\n { en: 'Monospace Font', cs: 'Monospace písmo' },\n 'JetBrains Mono, monospace',\n { en: 'Monospace font stack', cs: 'Monospace písmo' },\n ),\n]\n\n/**\n * Advanced Typography (2 properties)\n */\nexport const advancedTypographyFields: Field[] = [\n createTextField('letterSpacing', { en: 'Letter Spacing', cs: 'Rozestup písmen' }, '0em', {\n en: 'Global letter spacing',\n cs: 'Globální rozestup písmen',\n }),\n createTextField('spacing', { en: 'Spacing Scale', cs: 'Škála rozestupů' }, '0.25rem', {\n en: 'Base spacing unit',\n cs: 'Základní jednotka rozestupu',\n }),\n]\n\n/**\n * Border Radius Configuration\n */\nexport const designSystemFields: Field[] = [\n createTextField('radius', { en: 'Border Radius', cs: 'Zaoblení rohů' }, '0.5rem', {\n en: 'Default border radius',\n cs: 'Výchozí zaoblení rohů',\n }),\n]\n\n/**\n * Extended Theme Selection Field with Visual Preview and Auto-Population\n * Automatically fills all color fields when a theme is selected\n */\nexport const extendedThemeSelectionField: Field = {\n name: 'extendedTheme',\n type: 'select',\n label: {\n en: '🎨 Theme Preset',\n cs: '🎨 Přednastavené téma',\n },\n defaultValue: 'cool-extended',\n options: extendedThemeOptions,\n admin: {\n description: {\n en: 'Select a professional theme with full OKLCH color support (TweakCN compatible). All colors will be auto-populated.',\n cs: 'Vyberte profesionální téma s plnou podporou OKLCH barev (kompatibilní s TweakCN). Všechny barvy budou automaticky vyplněny.',\n },\n components: {\n Field: '@/fields/ExtendedThemeAutoPopulateField#default',\n },\n },\n}\n\n/**\n * Unified Light Mode Configuration\n * Combines all color tokens in one place\n */\nexport const lightModeColorsField: 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: 'Complete color configuration for light mode',\n cs: 'Kompletní konfigurace barev pro světlý režim',\n },\n },\n fields: [\n {\n name: 'extendedLightMode',\n type: 'group',\n fields: [...baseColorFields, ...chartColorFields],\n },\n ],\n}\n\n/**\n * Unified Dark Mode Configuration\n */\nexport const darkModeColorsField: 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: 'Complete color configuration for dark mode',\n cs: 'Kompletní konfigurace barev pro tmavý režim',\n },\n },\n fields: [\n {\n name: 'extendedDarkMode',\n type: 'group',\n fields: [...baseColorFields, ...chartColorFields],\n },\n ],\n}\n\n/**\n * Shadow Configuration Section\n */\nexport const shadowConfigField: Field = {\n type: 'collapsible',\n label: {\n en: '🌓 Shadows & Elevation',\n cs: '🌓 Stíny a výška',\n },\n admin: {\n initCollapsed: true,\n description: {\n en: 'Configure shadow system for depth and elevation',\n cs: 'Nakonfigurujte systém stínů pro hloubku a výšku',\n },\n },\n fields: [\n {\n name: 'shadows',\n type: 'group',\n fields: shadowFields,\n },\n ],\n}\n\n/**\n * Typography Configuration Section\n */\nexport const typographyConfigField: Field = {\n type: 'collapsible',\n label: {\n en: '� Typography',\n cs: '� Typografie',\n },\n admin: {\n initCollapsed: true,\n description: {\n en: 'Font families and advanced typography settings',\n cs: 'Rodiny písem a pokročilá nastavení typografie',\n },\n },\n fields: [\n {\n name: 'typography',\n type: 'group',\n fields: [...fontFamilyFields, ...advancedTypographyFields],\n },\n ],\n}\n\n/**\n * Design System Configuration\n */\nexport const designSystemConfigField: Field = {\n type: 'collapsible',\n label: {\n en: '⚙️ Design System',\n cs: '⚙️ Designový systém',\n },\n admin: {\n initCollapsed: true,\n description: {\n en: 'Global design tokens (radius, spacing, etc.)',\n cs: 'Globální design tokeny (zaoblení, rozestupy, atd.)',\n },\n },\n fields: [\n {\n name: 'designSystem',\n type: 'group',\n fields: designSystemFields,\n },\n ],\n}\n\n// DEPRECATED: Old fields kept for backwards compatibility\n// TODO: Remove in v1.0.0\nexport const extendedLightModeField = lightModeColorsField\nexport const extendedDarkModeField = darkModeColorsField\nexport const chartColorsField = {\n type: 'group',\n name: 'chartColors',\n fields: chartColorFields,\n} as Field\n"],"names":["allExtendedThemePresets","extendedThemeOptions","Object","values","map","preset","primaryColor","styles","light","primary","bgColor","background","label","value","__meta","createColorField","name","description","type","admin","placeholder","components","Field","createTextField","baseColorFields","en","cs","chartColorFields","shadowFields","fontFamilyFields","advancedTypographyFields","designSystemFields","extendedThemeSelectionField","defaultValue","options","lightModeColorsField","initCollapsed","fields","darkModeColorsField","shadowConfigField","typographyConfigField","designSystemConfigField","extendedLightModeField","extendedDarkModeField","chartColorsField"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"themeConfigurationField.d.ts","sourceRoot":"","sources":["../../src/fields/themeConfigurationField.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAOpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAW9C,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;CACjC;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,8BAA8B,GAAG;IACtF,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;IACjC,WAAW,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;IACvC,MAAM,EAAE,KAAK,EAAE,CAAA;CAChB,
|
|
1
|
+
{"version":3,"file":"themeConfigurationField.d.ts","sourceRoot":"","sources":["../../src/fields/themeConfigurationField.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAOpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAW9C,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;CACjC;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,8BAA8B,GAAG;IACtF,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;IACjC,WAAW,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;IACvC,MAAM,EAAE,KAAK,EAAE,CAAA;CAChB,CA+aA"}
|
|
@@ -173,10 +173,8 @@ import { darkModeColorsField, designSystemConfigField, extendedThemeSelectionFie
|
|
|
173
173
|
cs: 'Písmo pro text'
|
|
174
174
|
},
|
|
175
175
|
defaultValue: 'preset',
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
value: option.value
|
|
179
|
-
})),
|
|
176
|
+
// @ts-expect-error - Pass full objects including fontFamily for custom rendering
|
|
177
|
+
options: BODY_FONT_OPTIONS,
|
|
180
178
|
admin: {
|
|
181
179
|
width: '50%',
|
|
182
180
|
components: {
|
|
@@ -192,10 +190,8 @@ import { darkModeColorsField, designSystemConfigField, extendedThemeSelectionFie
|
|
|
192
190
|
cs: 'Písmo pro nadpisy'
|
|
193
191
|
},
|
|
194
192
|
defaultValue: 'preset',
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
value: option.value
|
|
198
|
-
})),
|
|
193
|
+
// @ts-expect-error - Pass full objects including fontFamily for custom rendering
|
|
194
|
+
options: HEADING_FONT_OPTIONS,
|
|
199
195
|
admin: {
|
|
200
196
|
width: '50%',
|
|
201
197
|
components: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/fields/themeConfigurationField.ts"],"sourcesContent":["import type { Field } 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 { darkModeField, lightModeField } from './colorModeFields.js'\nimport {\n darkModeColorsField,\n designSystemConfigField,\n extendedThemeSelectionField,\n lightModeColorsField,\n shadowConfigField,\n typographyConfigField,\n} from './extendedThemeFields.js'\n\ninterface ThemeConfigurationFieldOptions {\n themePresets: ThemePreset[]\n defaultTheme: string\n includeColorModeToggle: boolean\n includeCustomCSS: boolean\n includeBrandIdentity: boolean\n enableAdvancedFeatures?: boolean\n}\n\n/**\n * Theme Configuration Tab Configuration\n * Returns tab config that can be injected into existing tabs field\n */\nexport function createThemeConfigurationField(options: ThemeConfigurationFieldOptions): {\n name: string\n label: { en: string; cs: string }\n description: { en: string; cs: string }\n fields: Field[]\n} {\n const {\n themePresets,\n defaultTheme,\n includeColorModeToggle,\n includeCustomCSS,\n enableAdvancedFeatures = true,\n } = options\n\n const themeOptions = themePresets.map((preset) => {\n const previewColor = preset.preview?.colors.primary\n const label = previewColor ? `${preset.label} • ${previewColor}` : preset.label\n return {\n label,\n value: preset.name,\n }\n })\n\n const fields: Field[] = [\n {\n name: 'theme',\n type: 'select',\n required: true,\n defaultValue: defaultTheme,\n options: themeOptions,\n label: {\n en: '🎨 Theme Selection',\n cs: '🎨 Výběr tématu',\n },\n admin: {\n description: {\n en: 'Select a theme to auto-populate color values. You can customize colors after selection.',\n cs: 'Vyberte téma pro automatické předvyplnění barev. Po výběru můžete barvy upravit.',\n },\n components: {\n Field: '@kilivi/payloadcms-theme-management/fields/ThemePreviewField',\n },\n },\n },\n extendedThemeSelectionField,\n ]\n\n // Extended Theme Configuration (OKLCH colors, shadcn/ui compatible)\n if (enableAdvancedFeatures) {\n fields.push({\n type: 'collapsible',\n label: {\n en: '🎨 Extended Theme Configuration',\n cs: '🎨 Rozšířená konfigurace tématu',\n },\n admin: {\n initCollapsed: true,\n description: {\n en: 'Professional theme system with TweakCN compatibility. Full OKLCH color support, shadows, typography, and more.',\n cs: 'Profesionální systém témat s kompatibilitou TweakCN. Plná podpora OKLCH barev, stíny, typografie a další.',\n },\n },\n fields: [\n lightModeColorsField,\n darkModeColorsField,\n shadowConfigField,\n typographyConfigField,\n designSystemConfigField,\n ],\n })\n }\n\n // Color Mode Settings (only when NOT using extended theme configuration)\n if (includeColorModeToggle && !enableAdvancedFeatures) {\n fields.push({\n type: 'collapsible',\n label: {\n en: '🌗 Color Mode Settings',\n cs: '🌗 Nastavení barevného režimu',\n },\n admin: {\n initCollapsed: false,\n description: {\n en: 'Configure light and dark mode colors. Changes here override theme selection.',\n cs: 'Nakonfigurujte barvy světlého a tmavého režimu. Změny zde přepíší výběr tématu.',\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 },\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 })\n }\n\n // Typography (only when NOT using extended theme configuration)\n if (!enableAdvancedFeatures) {\n fields.push({\n type: 'collapsible',\n label: {\n en: '🅰️ Typography',\n cs: '🅰️ Typografie',\n },\n admin: {\n initCollapsed: true,\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.map((option) => ({\n label: option.label,\n value: option.value,\n })),\n admin: {\n width: '50%',\n components: {\n Field: '@/fields/FontSelectField#default',\n },\n },\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.map((option) => ({\n label: option.label,\n value: option.value,\n })),\n admin: {\n width: '50%',\n components: {\n Field: '@/fields/FontSelectField#default',\n },\n },\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 },\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 },\n ],\n },\n ],\n },\n ],\n })\n }\n\n // Design Customization (only when NOT using extended theme configuration)\n if (!enableAdvancedFeatures) {\n fields.push({\n type: 'collapsible',\n label: {\n en: '✨ Design Customization',\n cs: '✨ Přizpůsobení designu',\n },\n admin: {\n initCollapsed: true,\n },\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', cs: 'Žádné' }, value: 'none' },\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: 'Full', cs: 'Plné' }, value: 'xl' },\n ],\n admin: {\n components: {\n Field: '@kilivi/payloadcms-theme-management/fields/RadiusField',\n },\n width: '33%',\n },\n },\n {\n name: 'fontScale',\n type: 'select',\n label: {\n en: 'Font Scale',\n cs: 'Velikost písma',\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 ],\n admin: {\n width: '33%',\n },\n },\n {\n name: 'spacing',\n type: 'select',\n label: {\n en: 'Spacing',\n cs: 'Mezery',\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: 'Spacious', cs: 'Prostorné' }, value: 'spacious' },\n ],\n admin: {\n width: '34%',\n },\n },\n ],\n })\n } // End of !enableAdvancedFeatures block\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 },\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 },\n fields: advancedFields,\n })\n }\n\n // Return just the tab configuration, not the full tabs field\n // The plugin will inject this into existing tabs or create a group field\n return {\n name: 'themeConfiguration',\n label: {\n en: '🎨 Appearance Settings',\n cs: '🎨 Nastavení vzhledu',\n },\n description: {\n en: 'Configure website appearance and styling',\n cs: 'Nakonfigurujte vzhled a stylování webu',\n },\n fields,\n }\n}\n"],"names":["BASE_FONT_SIZE_OPTIONS","BODY_FONT_OPTIONS","HEADING_FONT_OPTIONS","LINE_HEIGHT_OPTIONS","darkModeField","lightModeField","darkModeColorsField","designSystemConfigField","extendedThemeSelectionField","lightModeColorsField","shadowConfigField","typographyConfigField","createThemeConfigurationField","options","themePresets","defaultTheme","includeColorModeToggle","includeCustomCSS","enableAdvancedFeatures","themeOptions","map","preset","previewColor","preview","colors","primary","label","value","name","fields","type","required","defaultValue","en","cs","admin","description","components","Field","push","initCollapsed","width","option","placeholder","condition","_","siblingData","bodyFont","headingFont","advancedFields","language"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/fields/themeConfigurationField.ts"],"sourcesContent":["import type { Field } 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 { darkModeField, lightModeField } from './colorModeFields.js'\nimport {\n darkModeColorsField,\n designSystemConfigField,\n extendedThemeSelectionField,\n lightModeColorsField,\n shadowConfigField,\n typographyConfigField,\n} from './extendedThemeFields.js'\n\ninterface ThemeConfigurationFieldOptions {\n themePresets: ThemePreset[]\n defaultTheme: string\n includeColorModeToggle: boolean\n includeCustomCSS: boolean\n includeBrandIdentity: boolean\n enableAdvancedFeatures?: boolean\n}\n\n/**\n * Theme Configuration Tab Configuration\n * Returns tab config that can be injected into existing tabs field\n */\nexport function createThemeConfigurationField(options: ThemeConfigurationFieldOptions): {\n name: string\n label: { en: string; cs: string }\n description: { en: string; cs: string }\n fields: Field[]\n} {\n const {\n themePresets,\n defaultTheme,\n includeColorModeToggle,\n includeCustomCSS,\n enableAdvancedFeatures = true,\n } = options\n\n const themeOptions = themePresets.map((preset) => {\n const previewColor = preset.preview?.colors.primary\n const label = previewColor ? `${preset.label} • ${previewColor}` : preset.label\n return {\n label,\n value: preset.name,\n }\n })\n\n const fields: Field[] = [\n {\n name: 'theme',\n type: 'select',\n required: true,\n defaultValue: defaultTheme,\n options: themeOptions,\n label: {\n en: '🎨 Theme Selection',\n cs: '🎨 Výběr tématu',\n },\n admin: {\n description: {\n en: 'Select a theme to auto-populate color values. You can customize colors after selection.',\n cs: 'Vyberte téma pro automatické předvyplnění barev. Po výběru můžete barvy upravit.',\n },\n components: {\n Field: '@kilivi/payloadcms-theme-management/fields/ThemePreviewField',\n },\n },\n },\n extendedThemeSelectionField,\n ]\n\n // Extended Theme Configuration (OKLCH colors, shadcn/ui compatible)\n if (enableAdvancedFeatures) {\n fields.push({\n type: 'collapsible',\n label: {\n en: '🎨 Extended Theme Configuration',\n cs: '🎨 Rozšířená konfigurace tématu',\n },\n admin: {\n initCollapsed: true,\n description: {\n en: 'Professional theme system with TweakCN compatibility. Full OKLCH color support, shadows, typography, and more.',\n cs: 'Profesionální systém témat s kompatibilitou TweakCN. Plná podpora OKLCH barev, stíny, typografie a další.',\n },\n },\n fields: [\n lightModeColorsField,\n darkModeColorsField,\n shadowConfigField,\n typographyConfigField,\n designSystemConfigField,\n ],\n })\n }\n\n // Color Mode Settings (only when NOT using extended theme configuration)\n if (includeColorModeToggle && !enableAdvancedFeatures) {\n fields.push({\n type: 'collapsible',\n label: {\n en: '🌗 Color Mode Settings',\n cs: '🌗 Nastavení barevného režimu',\n },\n admin: {\n initCollapsed: false,\n description: {\n en: 'Configure light and dark mode colors. Changes here override theme selection.',\n cs: 'Nakonfigurujte barvy světlého a tmavého režimu. Změny zde přepíší výběr tématu.',\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 },\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 })\n }\n\n // Typography (only when NOT using extended theme configuration)\n if (!enableAdvancedFeatures) {\n fields.push({\n type: 'collapsible',\n label: {\n en: '🅰️ Typography',\n cs: '🅰️ Typografie',\n },\n admin: {\n initCollapsed: true,\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 // @ts-expect-error - Pass full objects including fontFamily for custom rendering\n options: BODY_FONT_OPTIONS,\n admin: {\n width: '50%',\n components: {\n Field: '@/fields/FontSelectField#default',\n },\n },\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 // @ts-expect-error - Pass full objects including fontFamily for custom rendering\n options: HEADING_FONT_OPTIONS,\n admin: {\n width: '50%',\n components: {\n Field: '@/fields/FontSelectField#default',\n },\n },\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 },\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 },\n ],\n },\n ],\n },\n ],\n })\n }\n\n // Design Customization (only when NOT using extended theme configuration)\n if (!enableAdvancedFeatures) {\n fields.push({\n type: 'collapsible',\n label: {\n en: '✨ Design Customization',\n cs: '✨ Přizpůsobení designu',\n },\n admin: {\n initCollapsed: true,\n },\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', cs: 'Žádné' }, value: 'none' },\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: 'Full', cs: 'Plné' }, value: 'xl' },\n ],\n admin: {\n components: {\n Field: '@kilivi/payloadcms-theme-management/fields/RadiusField',\n },\n width: '33%',\n },\n },\n {\n name: 'fontScale',\n type: 'select',\n label: {\n en: 'Font Scale',\n cs: 'Velikost písma',\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 ],\n admin: {\n width: '33%',\n },\n },\n {\n name: 'spacing',\n type: 'select',\n label: {\n en: 'Spacing',\n cs: 'Mezery',\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: 'Spacious', cs: 'Prostorné' }, value: 'spacious' },\n ],\n admin: {\n width: '34%',\n },\n },\n ],\n })\n } // End of !enableAdvancedFeatures block\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 },\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 },\n fields: advancedFields,\n })\n }\n\n // Return just the tab configuration, not the full tabs field\n // The plugin will inject this into existing tabs or create a group field\n return {\n name: 'themeConfiguration',\n label: {\n en: '🎨 Appearance Settings',\n cs: '🎨 Nastavení vzhledu',\n },\n description: {\n en: 'Configure website appearance and styling',\n cs: 'Nakonfigurujte vzhled a stylování webu',\n },\n fields,\n }\n}\n"],"names":["BASE_FONT_SIZE_OPTIONS","BODY_FONT_OPTIONS","HEADING_FONT_OPTIONS","LINE_HEIGHT_OPTIONS","darkModeField","lightModeField","darkModeColorsField","designSystemConfigField","extendedThemeSelectionField","lightModeColorsField","shadowConfigField","typographyConfigField","createThemeConfigurationField","options","themePresets","defaultTheme","includeColorModeToggle","includeCustomCSS","enableAdvancedFeatures","themeOptions","map","preset","previewColor","preview","colors","primary","label","value","name","fields","type","required","defaultValue","en","cs","admin","description","components","Field","push","initCollapsed","width","placeholder","condition","_","siblingData","bodyFont","headingFont","option","advancedFields","language"],"mappings":"AACA,SACEA,sBAAsB,EACtBC,iBAAiB,EACjBC,oBAAoB,EACpBC,mBAAmB,QACd,6BAA4B;AAEnC,SAASC,aAAa,EAAEC,cAAc,QAAQ,uBAAsB;AACpE,SACEC,mBAAmB,EACnBC,uBAAuB,EACvBC,2BAA2B,EAC3BC,oBAAoB,EACpBC,iBAAiB,EACjBC,qBAAqB,QAChB,2BAA0B;AAWjC;;;CAGC,GACD,OAAO,SAASC,8BAA8BC,OAAuC;IAMnF,MAAM,EACJC,YAAY,EACZC,YAAY,EACZC,sBAAsB,EACtBC,gBAAgB,EAChBC,yBAAyB,IAAI,EAC9B,GAAGL;IAEJ,MAAMM,eAAeL,aAAaM,GAAG,CAAC,CAACC;QACrC,MAAMC,eAAeD,OAAOE,OAAO,EAAEC,OAAOC;QAC5C,MAAMC,QAAQJ,eAAe,GAAGD,OAAOK,KAAK,CAAC,GAAG,EAAEJ,cAAc,GAAGD,OAAOK,KAAK;QAC/E,OAAO;YACLA;YACAC,OAAON,OAAOO,IAAI;QACpB;IACF;IAEA,MAAMC,SAAkB;QACtB;YACED,MAAM;YACNE,MAAM;YACNC,UAAU;YACVC,cAAcjB;YACdF,SAASM;YACTO,OAAO;gBACLO,IAAI;gBACJC,IAAI;YACN;YACAC,OAAO;gBACLC,aAAa;oBACXH,IAAI;oBACJC,IAAI;gBACN;gBACAG,YAAY;oBACVC,OAAO;gBACT;YACF;QACF;QACA9B;KACD;IAED,oEAAoE;IACpE,IAAIU,wBAAwB;QAC1BW,OAAOU,IAAI,CAAC;YACVT,MAAM;YACNJ,OAAO;gBACLO,IAAI;gBACJC,IAAI;YACN;YACAC,OAAO;gBACLK,eAAe;gBACfJ,aAAa;oBACXH,IAAI;oBACJC,IAAI;gBACN;YACF;YACAL,QAAQ;gBACNpB;gBACAH;gBACAI;gBACAC;gBACAJ;aACD;QACH;IACF;IAEA,yEAAyE;IACzE,IAAIS,0BAA0B,CAACE,wBAAwB;QACrDW,OAAOU,IAAI,CAAC;YACVT,MAAM;YACNJ,OAAO;gBACLO,IAAI;gBACJC,IAAI;YACN;YACAC,OAAO;gBACLK,eAAe;gBACfJ,aAAa;oBACXH,IAAI;oBACJC,IAAI;gBACN;YACF;YACAL,QAAQ;gBACN;oBACEC,MAAM;oBACND,QAAQ;wBACN;4BACED,MAAM;4BACNE,MAAM;4BACNJ,OAAO;gCACLO,IAAI;gCACJC,IAAI;4BACN;4BACAF,cAAc;4BACdnB,SAAS;gCACP;oCACEa,OAAO;wCACLO,IAAI;wCACJC,IAAI;oCACN;oCACAP,OAAO;gCACT;gCACA;oCACED,OAAO;wCAAEO,IAAI;wCAASC,IAAI;oCAAS;oCACnCP,OAAO;gCACT;gCACA;oCACED,OAAO;wCAAEO,IAAI;wCAAQC,IAAI;oCAAQ;oCACjCP,OAAO;gCACT;6BACD;4BACDQ,OAAO;gCACLC,aAAa;oCACXH,IAAI;oCACJC,IAAI;gCACN;gCACAO,OAAO;4BACT;wBACF;wBACA;4BACEb,MAAM;4BACNE,MAAM;4BACNJ,OAAO;gCACLO,IAAI;gCACJC,IAAI;4BACN;4BACAF,cAAc;4BACdG,OAAO;gCACLC,aAAa;oCACXH,IAAI;oCACJC,IAAI;gCACN;gCACAO,OAAO;4BACT;wBACF;qBACD;gBACH;gBACApC;gBACAD;aACD;QACH;IACF;IAEA,gEAAgE;IAChE,IAAI,CAACc,wBAAwB;QAC3BW,OAAOU,IAAI,CAAC;YACVT,MAAM;YACNJ,OAAO;gBACLO,IAAI;gBACJC,IAAI;YACN;YACAC,OAAO;gBACLK,eAAe;gBACfJ,aAAa;oBACXH,IAAI;oBACJC,IAAI;gBACN;YACF;YACAL,QAAQ;gBACN;oBACED,MAAM;oBACNE,MAAM;oBACND,QAAQ;wBACN;4BACEC,MAAM;4BACND,QAAQ;gCACN;oCACED,MAAM;oCACNE,MAAM;oCACNJ,OAAO;wCACLO,IAAI;wCACJC,IAAI;oCACN;oCACAF,cAAc;oCACd,iFAAiF;oCACjFnB,SAASZ;oCACTkC,OAAO;wCACLM,OAAO;wCACPJ,YAAY;4CACVC,OAAO;wCACT;oCACF;gCACF;gCACA;oCACEV,MAAM;oCACNE,MAAM;oCACNJ,OAAO;wCACLO,IAAI;wCACJC,IAAI;oCACN;oCACAF,cAAc;oCACd,iFAAiF;oCACjFnB,SAASX;oCACTiC,OAAO;wCACLM,OAAO;wCACPJ,YAAY;4CACVC,OAAO;wCACT;oCACF;gCACF;6BACD;wBACH;wBACA;4BACER,MAAM;4BACND,QAAQ;gCACN;oCACED,MAAM;oCACNE,MAAM;oCACNJ,OAAO;wCACLO,IAAI;wCACJC,IAAI;oCACN;oCACAC,OAAO;wCACLM,OAAO;wCACPC,aAAa;wCACbN,aAAa;4CACXH,IAAI;4CACJC,IAAI;wCACN;wCACAS,WAAW,CAACC,GAAGC,cAAgBA,aAAaC,aAAa;oCAC3D;gCACF;gCACA;oCACElB,MAAM;oCACNE,MAAM;oCACNJ,OAAO;wCACLO,IAAI;wCACJC,IAAI;oCACN;oCACAC,OAAO;wCACLM,OAAO;wCACPC,aAAa;wCACbN,aAAa;4CACXH,IAAI;4CACJC,IAAI;wCACN;wCACAS,WAAW,CAACC,GAAGC,cAAgBA,aAAaE,gBAAgB;oCAC9D;gCACF;6BACD;wBACH;wBACA;4BACEjB,MAAM;4BACND,QAAQ;gCACN;oCACED,MAAM;oCACNE,MAAM;oCACNJ,OAAO;wCACLO,IAAI;wCACJC,IAAI;oCACN;oCACAF,cAAc;oCACdnB,SAASb,uBAAuBoB,GAAG,CAAC,CAAC4B,SAAY,CAAA;4CAC/CtB,OAAOsB,OAAOtB,KAAK;4CACnBC,OAAOqB,OAAOrB,KAAK;wCACrB,CAAA;oCACAQ,OAAO;wCACLM,OAAO;oCACT;gCACF;gCACA;oCACEb,MAAM;oCACNE,MAAM;oCACNJ,OAAO;wCACLO,IAAI;wCACJC,IAAI;oCACN;oCACAF,cAAc;oCACdnB,SAASV,oBAAoBiB,GAAG,CAAC,CAAC4B,SAAY,CAAA;4CAC5CtB,OAAOsB,OAAOtB,KAAK;4CACnBC,OAAOqB,OAAOrB,KAAK;wCACrB,CAAA;oCACAQ,OAAO;wCACLM,OAAO;oCACT;gCACF;6BACD;wBACH;qBACD;gBACH;aACD;QACH;IACF;IAEA,0EAA0E;IAC1E,IAAI,CAACvB,wBAAwB;QAC3BW,OAAOU,IAAI,CAAC;YACVT,MAAM;YACNJ,OAAO;gBACLO,IAAI;gBACJC,IAAI;YACN;YACAC,OAAO;gBACLK,eAAe;YACjB;YACAX,QAAQ;gBACN;oBACED,MAAM;oBACNE,MAAM;oBACNJ,OAAO;wBACLO,IAAI;wBACJC,IAAI;oBACN;oBACAF,cAAc;oBACdnB,SAAS;wBACP;4BAAEa,OAAO;gCAAEO,IAAI;gCAAQC,IAAI;4BAAQ;4BAAGP,OAAO;wBAAO;wBACpD;4BAAED,OAAO;gCAAEO,IAAI;gCAASC,IAAI;4BAAO;4BAAGP,OAAO;wBAAQ;wBACrD;4BAAED,OAAO;gCAAEO,IAAI;gCAAUC,IAAI;4BAAU;4BAAGP,OAAO;wBAAS;wBAC1D;4BAAED,OAAO;gCAAEO,IAAI;gCAASC,IAAI;4BAAQ;4BAAGP,OAAO;wBAAQ;wBACtD;4BAAED,OAAO;gCAAEO,IAAI;gCAAQC,IAAI;4BAAO;4BAAGP,OAAO;wBAAK;qBAClD;oBACDQ,OAAO;wBACLE,YAAY;4BACVC,OAAO;wBACT;wBACAG,OAAO;oBACT;gBACF;gBACA;oBACEb,MAAM;oBACNE,MAAM;oBACNJ,OAAO;wBACLO,IAAI;wBACJC,IAAI;oBACN;oBACAF,cAAc;oBACdnB,SAAS;wBACP;4BAAEa,OAAO;gCAAEO,IAAI;gCAASC,IAAI;4BAAO;4BAAGP,OAAO;wBAAQ;wBACrD;4BAAED,OAAO;gCAAEO,IAAI;gCAAUC,IAAI;4BAAU;4BAAGP,OAAO;wBAAS;wBAC1D;4BAAED,OAAO;gCAAEO,IAAI;gCAASC,IAAI;4BAAQ;4BAAGP,OAAO;wBAAQ;qBACvD;oBACDQ,OAAO;wBACLM,OAAO;oBACT;gBACF;gBACA;oBACEb,MAAM;oBACNE,MAAM;oBACNJ,OAAO;wBACLO,IAAI;wBACJC,IAAI;oBACN;oBACAF,cAAc;oBACdnB,SAAS;wBACP;4BAAEa,OAAO;gCAAEO,IAAI;gCAAWC,IAAI;4BAAY;4BAAGP,OAAO;wBAAU;wBAC9D;4BAAED,OAAO;gCAAEO,IAAI;gCAAUC,IAAI;4BAAU;4BAAGP,OAAO;wBAAS;wBAC1D;4BAAED,OAAO;gCAAEO,IAAI;gCAAYC,IAAI;4BAAY;4BAAGP,OAAO;wBAAW;qBACjE;oBACDQ,OAAO;wBACLM,OAAO;oBACT;gBACF;aACD;QACH;IACF,EAAE,uCAAuC;IAEzC,8DAA8D;IAC9D,IAAIvB,wBAAwB;QAC1B,MAAM+B,iBAA0B;YAC9B;gBACErB,MAAM;gBACNE,MAAM;gBACNJ,OAAO;oBACLO,IAAI;oBACJC,IAAI;gBACN;gBACAF,cAAc;gBACdnB,SAAS;oBACP;wBAAEa,OAAO;4BAAEO,IAAI;4BAAQC,IAAI;wBAAQ;wBAAGP,OAAO;oBAAO;oBACpD;wBAAED,OAAO;4BAAEO,IAAI;4BAAWC,IAAI;wBAAU;wBAAGP,OAAO;oBAAU;oBAC5D;wBAAED,OAAO;4BAAEO,IAAI;4BAAUC,IAAI;wBAAU;wBAAGP,OAAO;oBAAS;oBAC1D;wBAAED,OAAO;4BAAEO,IAAI;4BAAQC,IAAI;wBAAS;wBAAGP,OAAO;oBAAO;iBACtD;gBACDQ,OAAO;oBACLC,aAAa;wBACXH,IAAI;wBACJC,IAAI;oBACN;oBACAO,OAAO;gBACT;YACF;SACD;QAED,IAAIxB,kBAAkB;YACpBgC,eAAeV,IAAI,CAAC;gBAClBX,MAAM;gBACNE,MAAM;gBACNJ,OAAO;oBACLO,IAAI;oBACJC,IAAI;gBACN;gBACAC,OAAO;oBACLe,UAAU;oBACVd,aAAa;wBACXH,IAAI;wBACJC,IAAI;oBACN;gBAIF;YACF;QACF;QAEAL,OAAOU,IAAI,CAAC;YACVT,MAAM;YACNJ,OAAO;gBACLO,IAAI;gBACJC,IAAI;YACN;YACAC,OAAO;gBACLK,eAAe;YACjB;YACAX,QAAQoB;QACV;IACF;IAEA,6DAA6D;IAC7D,yEAAyE;IACzE,OAAO;QACLrB,MAAM;QACNF,OAAO;YACLO,IAAI;YACJC,IAAI;QACN;QACAE,aAAa;YACXH,IAAI;YACJC,IAAI;QACN;QACAL;IACF;AACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ export { generateThemeCSS, getThemeStyles } from './utils/themeUtils.js';
|
|
|
20
20
|
export { getThemeHtmlAttributes } from './utils/themeHtmlAttributes.js';
|
|
21
21
|
export type { Mode, ThemeDefaults } from './providers/Theme/types.js';
|
|
22
22
|
export { ThemeProvider } from './providers/Theme/index.js';
|
|
23
|
+
export { getFontLoaderCode, getThemeFontFamilies, ThemeFontProvider, useThemeFonts, FONT_IMPORT_MAP, } from './providers/font-loader.js';
|
|
23
24
|
export { ThemeLivePreview } from './fields/ThemeLivePreview.js';
|
|
24
25
|
export declare const ThemeManagementPlugin: (options?: ThemeManagementPluginOptions) => Plugin;
|
|
25
26
|
/** @deprecated use {@link themeManagementPlugin} */
|
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,EAAmC,MAAM,EAAE,MAAM,SAAS,CAAA;AAEtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmC,MAAM,EAAE,MAAM,SAAS,CAAA;AAEtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C,OAAO,KAAK,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAA;AAuF9F,eAAO,MAAM,qBAAqB,GAAI,UAAS,4BAAiC,KAAG,MAwFlF,CAAA;AAED,KAAK,iBAAiB,GAAG,MAAM,GAAG,8BAA8B,CAAA;AAEhE,eAAO,MAAM,uBAAuB,GAClC,UAAU,iBAAiB,KAC1B,OAAO,CAAC,sBAAsB,GAAG,IAAI,CA2CvC,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,WAAW,MAAM,KAAG,WAAW,GAAG,IAEhE,CAAA;AAED,eAAO,MAAM,wBAAwB,QAAO,WAAW,EAEtD,CAAA;AAED,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AACtE,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACnF,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,iCAAiC,CAAA;AACxC,YAAY,EAAE,4BAA4B,EAAE,8BAA8B,EAAE,MAAM,YAAY,CAAA;AAC9F,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,sCAAsC,CAAA;AAC7C,YAAY,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAA;AACtF,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACzE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AAEvE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAG1D,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,eAAe,GAChB,MAAM,4BAA4B,CAAA;AAGnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAE/D,eAAO,MAAM,qBAAqB,aA5La,4BAA4B,KAAQ,MA4LzB,CAAA;AAC1D,oDAAoD;AACpD,eAAO,MAAM,wBAAwB,aA9LU,4BAA4B,KAAQ,MA8LtB,CAAA;AAE7D,eAAe,qBAAqB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -165,6 +165,8 @@ export { generateThemeColorsCss, hexToHsl } from './utils/themeColors.js';
|
|
|
165
165
|
export { generateThemeCSS, getThemeStyles } from './utils/themeUtils.js';
|
|
166
166
|
export { getThemeHtmlAttributes } from './utils/themeHtmlAttributes.js';
|
|
167
167
|
export { ThemeProvider } from './providers/Theme/index.js';
|
|
168
|
+
// Font loading utilities for Next.js integration
|
|
169
|
+
export { getFontLoaderCode, getThemeFontFamilies, ThemeFontProvider, useThemeFonts, FONT_IMPORT_MAP } from './providers/font-loader.js';
|
|
168
170
|
// Components
|
|
169
171
|
export { ThemeLivePreview } from './fields/ThemeLivePreview.js';
|
|
170
172
|
export const ThemeManagementPlugin = themeManagementPlugin;
|