@kilivi/payloadcms-theme-management 0.1.18 → 0.2.1

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 CHANGED
@@ -2,13 +2,23 @@
2
2
 
3
3
  A comprehensive theme management plugin for Payload CMS v3 that provides powerful theming capabilities with SSR support, preventing FOUC (Flash of Unstyled Content).
4
4
 
5
+ ## 🎉 Version 0.2.0 - New Features!
6
+
7
+ - **✅ Tabs Structure** - Plugin now creates a "Nastavení vzhledu" (Appearance Settings) tab
8
+ - **✅ Extended Theme Support** - OKLCH color format with 19+ semantic tokens
9
+ - **✅ shadcn/ui Compatible** - Works with https://ui.shadcn.com/themes
10
+ - **✅ TweakCN Compatible** - Works with https://tweakcn.com/editor/theme
11
+ - **✅ Chart Colors** - 5 customizable colors for data visualization
12
+
5
13
  ## Features
6
14
 
7
15
  - 🎨 **Multiple Theme Presets** - Cool, Brutal, Neon, Solar, and more
8
- - 🎨 **Custom Color Palette** - Full HSL color customization
16
+ - 🎨 **Extended Themes** - OKLCH-based themes with full shadcn/ui token support
17
+ - 🎨 **Custom Color Palette** - Full HSL color customization (19+ semantic tokens)
9
18
  - 🔤 **Typography Control** - Google Fonts integration for headings, body, and code
10
19
  - 📐 **Border Radius Presets** - Sharp, Rounded, or Pill styles
11
20
  - 🌓 **Dark Mode Support** - Built-in light/dark/system mode toggle
21
+ - 📊 **Chart Colors** - Data visualization color palette
12
22
  - 🚀 **SSR Theme Injection** - Zero FOUC with server-side rendering
13
23
  - ⚡ **Performance Optimized** - Critical CSS inlining, preload links
14
24
  - 🎯 **Type Safe** - Full TypeScript support
@@ -371,6 +381,16 @@ Contributions are welcome! Please:
371
381
  4. Add tests if applicable
372
382
  5. Submit a pull request
373
383
 
384
+ ## Troubleshooting
385
+
386
+ ### Common Issues
387
+
388
+ **Error: "right-hand side of 'in' should be an object, got undefined"**
389
+
390
+ This is a known Payload CMS issue related to user preferences. See [TROUBLESHOOTING.md](./TROUBLESHOOTING.md) for solutions.
391
+
392
+ **Quick Fix:** Go to `/admin/account` and click "Reset Preferences" at the bottom of the page.
393
+
374
394
  ## License
375
395
 
376
396
  Apache-2.0
@@ -0,0 +1,26 @@
1
+ import type { Field } from 'payload';
2
+ /**
3
+ * Extended Theme Color Fields for Light Mode
4
+ */
5
+ export declare const extendedLightModeFields: Field[];
6
+ /**
7
+ * Chart color fields (for data visualization)
8
+ */
9
+ export declare const chartColorFields: Field[];
10
+ /**
11
+ * Extended Theme Selection Field
12
+ */
13
+ export declare const extendedThemeSelectionField: Field;
14
+ /**
15
+ * Extended Light Mode Configuration
16
+ */
17
+ export declare const extendedLightModeField: Field;
18
+ /**
19
+ * Extended Dark Mode Configuration
20
+ */
21
+ export declare const extendedDarkModeField: Field;
22
+ /**
23
+ * Chart Colors Configuration
24
+ */
25
+ export declare const chartColorsField: Field;
26
+ //# sourceMappingURL=extendedThemeFields.d.ts.map
@@ -0,0 +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;AAoCpC;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,KAAK,EAgG1C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,EA0BnC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,2BAA2B,EAAE,KAezC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,KAoBpC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,KAoBnC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAoB9B,CAAA"}
@@ -0,0 +1,290 @@
1
+ import { extendedThemePresets } from '../extended-presets.js';
2
+ /**
3
+ * Extended Theme Configuration Fields
4
+ * Provides advanced color token configuration using OKLCH format
5
+ * Compatible with shadcn/ui and TweakCN theme editors
6
+ */ const extendedThemeOptions = Object.values(extendedThemePresets).map((preset)=>({
7
+ label: preset.label,
8
+ value: preset.value
9
+ }));
10
+ /**
11
+ * Creates OKLCH color input field
12
+ */ function createOKLCHColorField(name, label, description) {
13
+ return {
14
+ name,
15
+ type: 'text',
16
+ label,
17
+ admin: {
18
+ description,
19
+ placeholder: 'oklch(0.5 0.2 250)',
20
+ components: {
21
+ Field: '@kilivi/payloadcms-theme-management/fields/ThemeColorPickerField'
22
+ }
23
+ }
24
+ };
25
+ }
26
+ /**
27
+ * Extended Theme Color Fields for Light Mode
28
+ */ export const extendedLightModeFields = [
29
+ createOKLCHColorField('background', {
30
+ en: 'Background',
31
+ cs: 'Pozadí'
32
+ }, {
33
+ en: 'Main background color',
34
+ cs: 'Hlavní barva pozadí'
35
+ }),
36
+ createOKLCHColorField('foreground', {
37
+ en: 'Foreground',
38
+ cs: 'Popředí'
39
+ }, {
40
+ en: 'Main text color',
41
+ cs: 'Hlavní barva textu'
42
+ }),
43
+ createOKLCHColorField('card', {
44
+ en: 'Card',
45
+ cs: 'Karta'
46
+ }, {
47
+ en: 'Card background',
48
+ cs: 'Pozadí karty'
49
+ }),
50
+ createOKLCHColorField('cardForeground', {
51
+ en: 'Card Foreground',
52
+ cs: 'Popředí karty'
53
+ }, {
54
+ en: 'Card text color',
55
+ cs: 'Barva textu karty'
56
+ }),
57
+ createOKLCHColorField('popover', {
58
+ en: 'Popover',
59
+ cs: 'Vyskakovací okno'
60
+ }, {
61
+ en: 'Popover background',
62
+ cs: 'Pozadí vyskakovacího okna'
63
+ }),
64
+ createOKLCHColorField('popoverForeground', {
65
+ en: 'Popover Foreground',
66
+ cs: 'Popředí vyskakovacího okna'
67
+ }, {
68
+ en: 'Popover text color',
69
+ cs: 'Barva textu vyskakovacího okna'
70
+ }),
71
+ createOKLCHColorField('primary', {
72
+ en: 'Primary',
73
+ cs: 'Primární'
74
+ }, {
75
+ en: 'Primary brand color',
76
+ cs: 'Primární značková barva'
77
+ }),
78
+ createOKLCHColorField('primaryForeground', {
79
+ en: 'Primary Foreground',
80
+ cs: 'Popředí primární'
81
+ }, {
82
+ en: 'Text on primary color',
83
+ cs: 'Text na primární barvě'
84
+ }),
85
+ createOKLCHColorField('secondary', {
86
+ en: 'Secondary',
87
+ cs: 'Sekundární'
88
+ }, {
89
+ en: 'Secondary accent color',
90
+ cs: 'Sekundární akcentová barva'
91
+ }),
92
+ createOKLCHColorField('secondaryForeground', {
93
+ en: 'Secondary Foreground',
94
+ cs: 'Popředí sekundární'
95
+ }, {
96
+ en: 'Text on secondary color',
97
+ cs: 'Text na sekundární barvě'
98
+ }),
99
+ createOKLCHColorField('muted', {
100
+ en: 'Muted',
101
+ cs: 'Tlumená'
102
+ }, {
103
+ en: 'Muted background color',
104
+ cs: 'Tlumená barva pozadí'
105
+ }),
106
+ createOKLCHColorField('mutedForeground', {
107
+ en: 'Muted Foreground',
108
+ cs: 'Popředí tlumené'
109
+ }, {
110
+ en: 'Muted text color',
111
+ cs: 'Tlumená barva textu'
112
+ }),
113
+ createOKLCHColorField('accent', {
114
+ en: 'Accent',
115
+ cs: 'Akcentová'
116
+ }, {
117
+ en: 'Accent color',
118
+ cs: 'Akcentová barva'
119
+ }),
120
+ createOKLCHColorField('accentForeground', {
121
+ en: 'Accent Foreground',
122
+ cs: 'Popředí akcentové'
123
+ }, {
124
+ en: 'Text on accent color',
125
+ cs: 'Text na akcentové barvě'
126
+ }),
127
+ createOKLCHColorField('destructive', {
128
+ en: 'Destructive',
129
+ cs: 'Destruktivní'
130
+ }, {
131
+ en: 'Error/danger color',
132
+ cs: 'Barva chyby/nebezpečí'
133
+ }),
134
+ createOKLCHColorField('destructiveForeground', {
135
+ en: 'Destructive Foreground',
136
+ cs: 'Popředí destruktivní'
137
+ }, {
138
+ en: 'Text on destructive color',
139
+ cs: 'Text na destruktivní barvě'
140
+ }),
141
+ createOKLCHColorField('border', {
142
+ en: 'Border',
143
+ cs: 'Okraj'
144
+ }, {
145
+ en: 'Border color',
146
+ cs: 'Barva okraje'
147
+ }),
148
+ createOKLCHColorField('input', {
149
+ en: 'Input',
150
+ cs: 'Vstup'
151
+ }, {
152
+ en: 'Input border color',
153
+ cs: 'Barva okraje vstupu'
154
+ }),
155
+ createOKLCHColorField('ring', {
156
+ en: 'Ring',
157
+ cs: 'Zvýraznění'
158
+ }, {
159
+ en: 'Focus ring color',
160
+ cs: 'Barva zvýraznění focus'
161
+ })
162
+ ];
163
+ /**
164
+ * Chart color fields (for data visualization)
165
+ */ export const chartColorFields = [
166
+ createOKLCHColorField('chart1', {
167
+ en: 'Chart Color 1',
168
+ cs: 'Barva grafu 1'
169
+ }, {
170
+ en: 'First chart color',
171
+ cs: 'První barva grafu'
172
+ }),
173
+ createOKLCHColorField('chart2', {
174
+ en: 'Chart Color 2',
175
+ cs: 'Barva grafu 2'
176
+ }, {
177
+ en: 'Second chart color',
178
+ cs: 'Druhá barva grafu'
179
+ }),
180
+ createOKLCHColorField('chart3', {
181
+ en: 'Chart Color 3',
182
+ cs: 'Barva grafu 3'
183
+ }, {
184
+ en: 'Third chart color',
185
+ cs: 'Třetí barva grafu'
186
+ }),
187
+ createOKLCHColorField('chart4', {
188
+ en: 'Chart Color 4',
189
+ cs: 'Barva grafu 4'
190
+ }, {
191
+ en: 'Fourth chart color',
192
+ cs: 'Čtvrtá barva grafu'
193
+ }),
194
+ createOKLCHColorField('chart5', {
195
+ en: 'Chart Color 5',
196
+ cs: 'Barva grafu 5'
197
+ }, {
198
+ en: 'Fifth chart color',
199
+ cs: 'Pátá barva grafu'
200
+ })
201
+ ];
202
+ /**
203
+ * Extended Theme Selection Field
204
+ */ export const extendedThemeSelectionField = {
205
+ name: 'extendedTheme',
206
+ type: 'select',
207
+ label: {
208
+ en: '🎨 Extended Theme',
209
+ cs: '🎨 Rozšířené téma'
210
+ },
211
+ defaultValue: 'cool-extended',
212
+ options: extendedThemeOptions,
213
+ admin: {
214
+ description: {
215
+ en: 'Select an extended theme with full OKLCH color support. Compatible with shadcn/ui.',
216
+ cs: 'Vyberte rozšířené téma s plnou podporou OKLCH barev. Kompatibilní s shadcn/ui.'
217
+ }
218
+ }
219
+ };
220
+ /**
221
+ * Extended Light Mode Configuration
222
+ */ export const extendedLightModeField = {
223
+ type: 'collapsible',
224
+ label: {
225
+ en: '☀️ Extended Light Mode',
226
+ cs: '☀️ Rozšířený světlý režim'
227
+ },
228
+ admin: {
229
+ initCollapsed: true,
230
+ description: {
231
+ en: 'Advanced color configuration for light mode using OKLCH format',
232
+ cs: 'Pokročilá konfigurace barev pro světlý režim pomocí formátu OKLCH'
233
+ }
234
+ },
235
+ fields: [
236
+ {
237
+ name: 'extendedLightMode',
238
+ type: 'group',
239
+ fields: extendedLightModeFields
240
+ }
241
+ ]
242
+ };
243
+ /**
244
+ * Extended Dark Mode Configuration
245
+ */ export const extendedDarkModeField = {
246
+ type: 'collapsible',
247
+ label: {
248
+ en: '🌙 Extended Dark Mode',
249
+ cs: '🌙 Rozšířený tmavý režim'
250
+ },
251
+ admin: {
252
+ initCollapsed: true,
253
+ description: {
254
+ en: 'Advanced color configuration for dark mode using OKLCH format',
255
+ cs: 'Pokročilá konfigurace barev pro tmavý režim pomocí formátu OKLCH'
256
+ }
257
+ },
258
+ fields: [
259
+ {
260
+ name: 'extendedDarkMode',
261
+ type: 'group',
262
+ fields: extendedLightModeFields
263
+ }
264
+ ]
265
+ };
266
+ /**
267
+ * Chart Colors Configuration
268
+ */ export const chartColorsField = {
269
+ type: 'collapsible',
270
+ label: {
271
+ en: '📊 Chart Colors',
272
+ cs: '📊 Barvy grafů'
273
+ },
274
+ admin: {
275
+ initCollapsed: true,
276
+ description: {
277
+ en: 'Configure colors for data visualization and charts',
278
+ cs: 'Nakonfigurujte barvy pro vizualizaci dat a grafy'
279
+ }
280
+ },
281
+ fields: [
282
+ {
283
+ name: 'chartColors',
284
+ type: 'group',
285
+ fields: chartColorFields
286
+ }
287
+ ]
288
+ };
289
+
290
+ //# sourceMappingURL=extendedThemeFields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/fields/extendedThemeFields.ts"],"sourcesContent":["import type { Field } from 'payload'\nimport { extendedThemePresets } from '../extended-presets.js'\n\n/**\n * Extended Theme Configuration Fields\n * Provides advanced color token configuration using OKLCH format\n * Compatible with shadcn/ui and TweakCN theme editors\n */\n\nconst extendedThemeOptions = Object.values(extendedThemePresets).map((preset) => ({\n label: preset.label,\n value: preset.value,\n}))\n\n/**\n * Creates OKLCH color input field\n */\nfunction createOKLCHColorField(\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)',\n components: {\n Field: '@kilivi/payloadcms-theme-management/fields/ThemeColorPickerField',\n },\n },\n }\n}\n\n/**\n * Extended Theme Color Fields for Light Mode\n */\nexport const extendedLightModeFields: Field[] = [\n createOKLCHColorField(\n 'background',\n { en: 'Background', cs: 'Pozadí' },\n { en: 'Main background color', cs: 'Hlavní barva pozadí' },\n ),\n createOKLCHColorField(\n 'foreground',\n { en: 'Foreground', cs: 'Popředí' },\n { en: 'Main text color', cs: 'Hlavní barva textu' },\n ),\n createOKLCHColorField(\n 'card',\n { en: 'Card', cs: 'Karta' },\n { en: 'Card background', cs: 'Pozadí karty' },\n ),\n createOKLCHColorField(\n 'cardForeground',\n { en: 'Card Foreground', cs: 'Popředí karty' },\n { en: 'Card text color', cs: 'Barva textu karty' },\n ),\n createOKLCHColorField(\n 'popover',\n { en: 'Popover', cs: 'Vyskakovací okno' },\n { en: 'Popover background', cs: 'Pozadí vyskakovacího okna' },\n ),\n createOKLCHColorField(\n 'popoverForeground',\n { en: 'Popover Foreground', cs: 'Popředí vyskakovacího okna' },\n { en: 'Popover text color', cs: 'Barva textu vyskakovacího okna' },\n ),\n createOKLCHColorField(\n 'primary',\n { en: 'Primary', cs: 'Primární' },\n { en: 'Primary brand color', cs: 'Primární značková barva' },\n ),\n createOKLCHColorField(\n 'primaryForeground',\n { en: 'Primary Foreground', cs: 'Popředí primární' },\n { en: 'Text on primary color', cs: 'Text na primární barvě' },\n ),\n createOKLCHColorField(\n 'secondary',\n { en: 'Secondary', cs: 'Sekundární' },\n { en: 'Secondary accent color', cs: 'Sekundární akcentová barva' },\n ),\n createOKLCHColorField(\n 'secondaryForeground',\n { en: 'Secondary Foreground', cs: 'Popředí sekundární' },\n { en: 'Text on secondary color', cs: 'Text na sekundární barvě' },\n ),\n createOKLCHColorField(\n 'muted',\n { en: 'Muted', cs: 'Tlumená' },\n { en: 'Muted background color', cs: 'Tlumená barva pozadí' },\n ),\n createOKLCHColorField(\n 'mutedForeground',\n { en: 'Muted Foreground', cs: 'Popředí tlumené' },\n { en: 'Muted text color', cs: 'Tlumená barva textu' },\n ),\n createOKLCHColorField(\n 'accent',\n { en: 'Accent', cs: 'Akcentová' },\n { en: 'Accent color', cs: 'Akcentová barva' },\n ),\n createOKLCHColorField(\n 'accentForeground',\n { en: 'Accent Foreground', cs: 'Popředí akcentové' },\n { en: 'Text on accent color', cs: 'Text na akcentové barvě' },\n ),\n createOKLCHColorField(\n 'destructive',\n { en: 'Destructive', cs: 'Destruktivní' },\n { en: 'Error/danger color', cs: 'Barva chyby/nebezpečí' },\n ),\n createOKLCHColorField(\n 'destructiveForeground',\n { en: 'Destructive Foreground', cs: 'Popředí destruktivní' },\n { en: 'Text on destructive color', cs: 'Text na destruktivní barvě' },\n ),\n createOKLCHColorField(\n 'border',\n { en: 'Border', cs: 'Okraj' },\n { en: 'Border color', cs: 'Barva okraje' },\n ),\n createOKLCHColorField(\n 'input',\n { en: 'Input', cs: 'Vstup' },\n { en: 'Input border color', cs: 'Barva okraje vstupu' },\n ),\n createOKLCHColorField(\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 color fields (for data visualization)\n */\nexport const chartColorFields: Field[] = [\n createOKLCHColorField(\n 'chart1',\n { en: 'Chart Color 1', cs: 'Barva grafu 1' },\n { en: 'First chart color', cs: 'První barva grafu' },\n ),\n createOKLCHColorField(\n 'chart2',\n { en: 'Chart Color 2', cs: 'Barva grafu 2' },\n { en: 'Second chart color', cs: 'Druhá barva grafu' },\n ),\n createOKLCHColorField(\n 'chart3',\n { en: 'Chart Color 3', cs: 'Barva grafu 3' },\n { en: 'Third chart color', cs: 'Třetí barva grafu' },\n ),\n createOKLCHColorField(\n 'chart4',\n { en: 'Chart Color 4', cs: 'Barva grafu 4' },\n { en: 'Fourth chart color', cs: 'Čtvrtá barva grafu' },\n ),\n createOKLCHColorField(\n 'chart5',\n { en: 'Chart Color 5', cs: 'Barva grafu 5' },\n { en: 'Fifth chart color', cs: 'Pátá barva grafu' },\n ),\n]\n\n/**\n * Extended Theme Selection Field\n */\nexport const extendedThemeSelectionField: Field = {\n name: 'extendedTheme',\n type: 'select',\n label: {\n en: '🎨 Extended Theme',\n cs: '🎨 Rozšířené téma',\n },\n defaultValue: 'cool-extended',\n options: extendedThemeOptions,\n admin: {\n description: {\n en: 'Select an extended theme with full OKLCH color support. Compatible with shadcn/ui.',\n cs: 'Vyberte rozšířené téma s plnou podporou OKLCH barev. Kompatibilní s shadcn/ui.',\n },\n },\n}\n\n/**\n * Extended Light Mode Configuration\n */\nexport const extendedLightModeField: Field = {\n type: 'collapsible',\n label: {\n en: '☀️ Extended Light Mode',\n cs: '☀️ Rozšířený světlý režim',\n },\n admin: {\n initCollapsed: true,\n description: {\n en: 'Advanced color configuration for light mode using OKLCH format',\n cs: 'Pokročilá konfigurace barev pro světlý režim pomocí formátu OKLCH',\n },\n },\n fields: [\n {\n name: 'extendedLightMode',\n type: 'group',\n fields: extendedLightModeFields,\n },\n ],\n}\n\n/**\n * Extended Dark Mode Configuration\n */\nexport const extendedDarkModeField: Field = {\n type: 'collapsible',\n label: {\n en: '🌙 Extended Dark Mode',\n cs: '🌙 Rozšířený tmavý režim',\n },\n admin: {\n initCollapsed: true,\n description: {\n en: 'Advanced color configuration for dark mode using OKLCH format',\n cs: 'Pokročilá konfigurace barev pro tmavý režim pomocí formátu OKLCH',\n },\n },\n fields: [\n {\n name: 'extendedDarkMode',\n type: 'group',\n fields: extendedLightModeFields, // Same structure, different values\n },\n ],\n}\n\n/**\n * Chart Colors Configuration\n */\nexport const chartColorsField: Field = {\n type: 'collapsible',\n label: {\n en: '📊 Chart Colors',\n cs: '📊 Barvy grafů',\n },\n admin: {\n initCollapsed: true,\n description: {\n en: 'Configure colors for data visualization and charts',\n cs: 'Nakonfigurujte barvy pro vizualizaci dat a grafy',\n },\n },\n fields: [\n {\n name: 'chartColors',\n type: 'group',\n fields: chartColorFields,\n },\n ],\n}\n"],"names":["extendedThemePresets","extendedThemeOptions","Object","values","map","preset","label","value","createOKLCHColorField","name","description","type","admin","placeholder","components","Field","extendedLightModeFields","en","cs","chartColorFields","extendedThemeSelectionField","defaultValue","options","extendedLightModeField","initCollapsed","fields","extendedDarkModeField","chartColorsField"],"mappings":"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AME,8BAAqC;IAChDX,MAAM;IACNE,MAAM;IACNL,OAAO;QACLW,IAAI;QACJC,IAAI;IACN;IACAG,cAAc;IACdC,SAASrB;IACTW,OAAO;QACLF,aAAa;YACXO,IAAI;YACJC,IAAI;QACN;IACF;AACF,EAAC;AAED;;CAEC,GACD,OAAO,MAAMK,yBAAgC;IAC3CZ,MAAM;IACNL,OAAO;QACLW,IAAI;QACJC,IAAI;IACN;IACAN,OAAO;QACLY,eAAe;QACfd,aAAa;YACXO,IAAI;YACJC,IAAI;QACN;IACF;IACAO,QAAQ;QACN;YACEhB,MAAM;YACNE,MAAM;YACNc,QAAQT;QACV;KACD;AACH,EAAC;AAED;;CAEC,GACD,OAAO,MAAMU,wBAA+B;IAC1Cf,MAAM;IACNL,OAAO;QACLW,IAAI;QACJC,IAAI;IACN;IACAN,OAAO;QACLY,eAAe;QACfd,aAAa;YACXO,IAAI;YACJC,IAAI;QACN;IACF;IACAO,QAAQ;QACN;YACEhB,MAAM;YACNE,MAAM;YACNc,QAAQT;QACV;KACD;AACH,EAAC;AAED;;CAEC,GACD,OAAO,MAAMW,mBAA0B;IACrChB,MAAM;IACNL,OAAO;QACLW,IAAI;QACJC,IAAI;IACN;IACAN,OAAO;QACLY,eAAe;QACfd,aAAa;YACXO,IAAI;YACJC,IAAI;QACN;IACF;IACAO,QAAQ;QACN;YACEhB,MAAM;YACNE,MAAM;YACNc,QAAQN;QACV;KACD;AACH,EAAC"}
@@ -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;AAG9C,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,KAAK,CA4Y5F"}
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;AAS9C,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,KAAK,CAya5F"}
@@ -1,5 +1,6 @@
1
1
  import { BASE_FONT_SIZE_OPTIONS, BODY_FONT_OPTIONS, HEADING_FONT_OPTIONS, LINE_HEIGHT_OPTIONS } from '../constants/themeFonts.js';
2
2
  import { darkModeField, lightModeField } from './colorModeFields.js';
3
+ import { extendedThemeSelectionField, extendedLightModeField, extendedDarkModeField, chartColorsField } from './extendedThemeFields.js';
3
4
  /**
4
5
  * Theme Configuration Field with Theme Selection as default value setter
5
6
  * Theme Selection populates lightMode/darkMode colors automatically
@@ -33,8 +34,31 @@ import { darkModeField, lightModeField } from './colorModeFields.js';
33
34
  Field: '@kilivi/payloadcms-theme-management/fields/ThemePreviewField'
34
35
  }
35
36
  }
36
- }
37
+ },
38
+ extendedThemeSelectionField
37
39
  ];
40
+ // Extended Theme Configuration (OKLCH colors, shadcn/ui compatible)
41
+ if (enableAdvancedFeatures) {
42
+ fields.push({
43
+ type: 'collapsible',
44
+ label: {
45
+ en: '🎨 Extended Theme Configuration',
46
+ cs: '🎨 Rozšířená konfigurace tématu'
47
+ },
48
+ admin: {
49
+ initCollapsed: true,
50
+ description: {
51
+ en: 'Advanced color configuration using OKLCH format. Compatible with shadcn/ui and TweakCN.',
52
+ cs: 'Pokročilá konfigurace barev pomocí formátu OKLCH. Kompatibilní s shadcn/ui a TweakCN.'
53
+ }
54
+ },
55
+ fields: [
56
+ extendedLightModeField,
57
+ extendedDarkModeField,
58
+ chartColorsField
59
+ ]
60
+ });
61
+ }
38
62
  // Color Mode Settings
39
63
  if (includeColorModeToggle) {
40
64
  fields.push({
@@ -466,16 +490,21 @@ import { darkModeField, lightModeField } from './colorModeFields.js';
466
490
  });
467
491
  }
468
492
  return {
469
- name: 'themeConfiguration',
470
- type: 'group',
471
- label: false,
472
- admin: {
473
- description: {
474
- en: 'Configure website appearance and styling',
475
- cs: 'Nakonfigurujte vzhled a stylování webu'
493
+ type: 'tabs',
494
+ tabs: [
495
+ {
496
+ name: 'themeConfiguration',
497
+ label: {
498
+ en: '🎨 Appearance Settings',
499
+ cs: '🎨 Nastavení vzhledu'
500
+ },
501
+ description: {
502
+ en: 'Configure website appearance and styling',
503
+ cs: 'Nakonfigurujte vzhled a stylování webu'
504
+ },
505
+ fields
476
506
  }
477
- },
478
- fields
507
+ ]
479
508
  };
480
509
  }
481
510
 
@@ -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'\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 Field with Theme Selection as default value setter\n * Theme Selection populates lightMode/darkMode colors automatically\n */\nexport function createThemeConfigurationField(options: ThemeConfigurationFieldOptions): Field {\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 ]\n\n // Color Mode Settings\n if (includeColorModeToggle) {\n fields.push({\n type: 'collapsible',\n label: {\n en: '🌗 Color Mode Settings',\n cs: '🌗 Nastavení barevného režimu',\n },\n admin: {\n 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 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 },\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 },\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 // Design Customization\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\n // Advanced Settings\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 {\n name: 'themeConfiguration',\n type: 'group',\n label: false,\n admin: {\n description: {\n en: 'Configure website appearance and styling',\n cs: 'Nakonfigurujte vzhled a stylování webu',\n },\n },\n fields,\n }\n}\n"],"names":["BASE_FONT_SIZE_OPTIONS","BODY_FONT_OPTIONS","HEADING_FONT_OPTIONS","LINE_HEIGHT_OPTIONS","darkModeField","lightModeField","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 extendedThemeSelectionField,\n extendedLightModeField,\n extendedDarkModeField,\n chartColorsField,\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 Field with Theme Selection as default value setter\n * Theme Selection populates lightMode/darkMode colors automatically\n */\nexport function createThemeConfigurationField(options: ThemeConfigurationFieldOptions): Field {\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: 'Advanced color configuration using OKLCH format. Compatible with shadcn/ui and TweakCN.',\n cs: 'Pokročilá konfigurace barev pomocí formátu OKLCH. Kompatibilní s shadcn/ui a TweakCN.',\n },\n },\n fields: [\n extendedLightModeField,\n extendedDarkModeField,\n chartColorsField,\n ],\n })\n }\n\n // Color Mode Settings\n if (includeColorModeToggle) {\n fields.push({\n type: 'collapsible',\n label: {\n en: '🌗 Color Mode Settings',\n cs: '🌗 Nastavení barevného režimu',\n },\n admin: {\n 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 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 },\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 },\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 // Design Customization\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\n // Advanced Settings\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 {\n type: 'tabs',\n tabs: [\n {\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 }\n}\n"],"names":["BASE_FONT_SIZE_OPTIONS","BODY_FONT_OPTIONS","HEADING_FONT_OPTIONS","LINE_HEIGHT_OPTIONS","darkModeField","lightModeField","extendedThemeSelectionField","extendedLightModeField","extendedDarkModeField","chartColorsField","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","tabs"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kilivi/payloadcms-theme-management",
3
- "version": "0.1.18",
3
+ "version": "0.2.1",
4
4
  "description": "Theme configuration plugin for Payload CMS v3",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -58,12 +58,17 @@
58
58
  "@payloadcms/richtext-lexical": "^3.0.0",
59
59
  "@swc/cli": "^0.1.65",
60
60
  "@swc/core": "^1.6.3",
61
+ "@testing-library/jest-dom": "^6.9.1",
62
+ "@testing-library/react": "^16.3.0",
63
+ "@types/jest": "^30.0.0",
61
64
  "@types/react": "^18.3.12",
62
65
  "copyfiles": "^2.4.1",
66
+ "jest": "^30.2.0",
63
67
  "payload": "^3.58.0",
64
68
  "react": "^19.0.0",
65
69
  "react-dom": "^19.0.0",
66
70
  "rimraf": "^5.0.5",
71
+ "ts-jest": "^29.4.4",
67
72
  "typescript": "^5.5.3"
68
73
  },
69
74
  "publishConfig": {
@@ -78,6 +83,9 @@
78
83
  "dev": "swc src -d dist --config-file .swcrc --watch",
79
84
  "clean": "rimraf dist tsconfig.tsbuildinfo",
80
85
  "copyfiles": "copyfiles -u 1 \"src/**/*.{html,css,scss,ttf,woff,woff2,eot,svg,jpg,png,json}\" dist/",
86
+ "test": "jest",
87
+ "test:watch": "jest --watch",
88
+ "test:coverage": "jest --coverage",
81
89
  "lint": "eslint src",
82
90
  "lint:fix": "eslint --fix --ext .ts,.tsx src"
83
91
  }