@kilivi/payloadcms-theme-management 0.1.6 → 0.1.7

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.
Files changed (93) hide show
  1. package/README.md +97 -97
  2. package/dist/components/ServerThemeInjector.d.ts +1 -1
  3. package/dist/components/ServerThemeInjector.d.ts.map +1 -1
  4. package/dist/components/{ServerThemeInjector.jsx → ServerThemeInjector.js} +50 -37
  5. package/dist/components/ServerThemeInjector.js.map +1 -0
  6. package/dist/components/ThemePreview.js +318 -0
  7. package/dist/components/ThemePreview.js.map +1 -0
  8. package/dist/components/typographyPreviewUtils.js +12 -17
  9. package/dist/components/typographyPreviewUtils.js.map +1 -1
  10. package/dist/constants/themeFonts.js +94 -24
  11. package/dist/constants/themeFonts.js.map +1 -1
  12. package/dist/fields/ColorPickerField.js +332 -0
  13. package/dist/fields/ColorPickerField.js.map +1 -0
  14. package/dist/fields/RadiusField.js +174 -0
  15. package/dist/fields/RadiusField.js.map +1 -0
  16. package/dist/fields/ThemeColorPickerField.css +138 -138
  17. package/dist/fields/ThemeColorPickerField.js +163 -0
  18. package/dist/fields/ThemeColorPickerField.js.map +1 -0
  19. package/dist/fields/ThemePreviewField.js +558 -0
  20. package/dist/fields/ThemePreviewField.js.map +1 -0
  21. package/dist/fields/ThemeTokenSelectField.js +209 -0
  22. package/dist/fields/ThemeTokenSelectField.js.map +1 -0
  23. package/dist/fields/colorModeFields.js +167 -73
  24. package/dist/fields/colorModeFields.js.map +1 -1
  25. package/dist/fields/themeConfigurationField.d.ts +1 -1
  26. package/dist/fields/themeConfigurationField.d.ts.map +1 -1
  27. package/dist/fields/themeConfigurationField.js +227 -134
  28. package/dist/fields/themeConfigurationField.js.map +1 -1
  29. package/dist/index.d.ts +17 -16
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +52 -52
  32. package/dist/index.js.map +1 -1
  33. package/dist/payload-types.js +5 -5
  34. package/dist/payload-types.js.map +1 -1
  35. package/dist/plugin.d.ts +1 -2
  36. package/dist/plugin.d.ts.map +1 -1
  37. package/dist/plugin.js +2 -1
  38. package/dist/plugin.js.map +1 -1
  39. package/dist/presets.js +66 -65
  40. package/dist/presets.js.map +1 -1
  41. package/dist/providers/Theme/index.d.ts +1 -1
  42. package/dist/providers/Theme/index.d.ts.map +1 -1
  43. package/dist/providers/Theme/{index.jsx → index.js} +61 -31
  44. package/dist/providers/Theme/index.js.map +1 -0
  45. package/dist/providers/Theme/shared.d.ts +1 -1
  46. package/dist/providers/Theme/shared.d.ts.map +1 -1
  47. package/dist/providers/Theme/shared.js +34 -9
  48. package/dist/providers/Theme/shared.js.map +1 -1
  49. package/dist/providers/Theme/themeConfig.d.ts +1 -1
  50. package/dist/providers/Theme/themeConfig.d.ts.map +1 -1
  51. package/dist/providers/Theme/themeConfig.js +37 -36
  52. package/dist/providers/Theme/themeConfig.js.map +1 -1
  53. package/dist/providers/Theme/types.js +15 -13
  54. package/dist/providers/Theme/types.js.map +1 -1
  55. package/dist/server.d.ts +2 -2
  56. package/dist/server.d.ts.map +1 -1
  57. package/dist/server.js +3 -2
  58. package/dist/server.js.map +1 -1
  59. package/dist/src/--verbose/dist/fields/ThemeColorPickerField.scss +138 -0
  60. package/dist/src/dist/fields/ThemeColorPickerField.scss +138 -0
  61. package/dist/types.d.ts +2 -2
  62. package/dist/types.d.ts.map +1 -1
  63. package/dist/types.js +2 -1
  64. package/dist/types.js.map +1 -1
  65. package/dist/utils/resolveThemeConfiguration.d.ts +3 -3
  66. package/dist/utils/resolveThemeConfiguration.d.ts.map +1 -1
  67. package/dist/utils/resolveThemeConfiguration.js +53 -34
  68. package/dist/utils/resolveThemeConfiguration.js.map +1 -1
  69. package/dist/utils/themeAssets.d.ts +1 -1
  70. package/dist/utils/themeAssets.d.ts.map +1 -1
  71. package/dist/utils/themeAssets.js +4 -4
  72. package/dist/utils/themeAssets.js.map +1 -1
  73. package/dist/utils/themeColors.js +95 -41
  74. package/dist/utils/themeColors.js.map +1 -1
  75. package/dist/utils/themeUtils.d.ts +2 -2
  76. package/dist/utils/themeUtils.d.ts.map +1 -1
  77. package/dist/utils/themeUtils.js +38 -53
  78. package/dist/utils/themeUtils.js.map +1 -1
  79. package/package.json +13 -5
  80. package/dist/components/ServerThemeInjector.jsx.map +0 -1
  81. package/dist/components/ThemePreview.jsx +0 -231
  82. package/dist/components/ThemePreview.jsx.map +0 -1
  83. package/dist/fields/ColorPickerField.jsx +0 -205
  84. package/dist/fields/ColorPickerField.jsx.map +0 -1
  85. package/dist/fields/RadiusField.jsx +0 -123
  86. package/dist/fields/RadiusField.jsx.map +0 -1
  87. package/dist/fields/ThemeColorPickerField.jsx +0 -110
  88. package/dist/fields/ThemeColorPickerField.jsx.map +0 -1
  89. package/dist/fields/ThemePreviewField.jsx +0 -420
  90. package/dist/fields/ThemePreviewField.jsx.map +0 -1
  91. package/dist/fields/ThemeTokenSelectField.jsx +0 -151
  92. package/dist/fields/ThemeTokenSelectField.jsx.map +0 -1
  93. package/dist/providers/Theme/index.jsx.map +0 -1
@@ -0,0 +1,209 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useField } from '@payloadcms/ui';
4
+ import { useCallback, useEffect, useState } from 'react';
5
+ import { defaultThemePresets } from '../presets.js';
6
+ import { resolveThemeConfiguration } from '../utils/resolveThemeConfiguration.js';
7
+ const FALLBACK_TOKENS = [
8
+ {
9
+ value: 'background',
10
+ label: 'Theme background',
11
+ color: 'var(--background)'
12
+ },
13
+ {
14
+ value: 'card',
15
+ label: 'Card background',
16
+ color: 'var(--card)'
17
+ },
18
+ {
19
+ value: 'muted',
20
+ label: 'Muted surface',
21
+ color: 'var(--muted)'
22
+ },
23
+ {
24
+ value: 'accent',
25
+ label: 'Accent surface',
26
+ color: 'var(--accent)'
27
+ },
28
+ {
29
+ value: 'secondary',
30
+ label: 'Secondary surface',
31
+ color: 'var(--secondary)'
32
+ },
33
+ {
34
+ value: 'primary',
35
+ label: 'Primary surface',
36
+ color: 'var(--primary)'
37
+ }
38
+ ];
39
+ async function fetchThemeConfiguration() {
40
+ try {
41
+ const response = await fetch('/api/site-settings');
42
+ if (!response.ok) {
43
+ return null;
44
+ }
45
+ const data = await response.json();
46
+ return data?.docs?.[0]?.themeConfiguration ?? null;
47
+ } catch (error) {
48
+ console.warn('[ThemeTokenSelectField] Failed to fetch theme configuration:', error);
49
+ return null;
50
+ }
51
+ }
52
+ function buildOptionsFromConfiguration(configuration) {
53
+ if (!configuration) {
54
+ return FALLBACK_TOKENS;
55
+ }
56
+ const resolved = resolveThemeConfiguration(configuration);
57
+ const lightMode = resolved.lightMode ?? defaultThemePresets[0]?.lightMode ?? {};
58
+ const orderedKeys = [
59
+ 'background',
60
+ 'card',
61
+ 'muted',
62
+ 'accent',
63
+ 'secondary',
64
+ 'primary',
65
+ 'popover'
66
+ ];
67
+ const typedLightMode = lightMode;
68
+ const tokens = orderedKeys.map((key)=>{
69
+ const value = typedLightMode?.[key];
70
+ if (typeof value !== 'string' || value.trim().length === 0) {
71
+ return null;
72
+ }
73
+ const labelMap = {
74
+ background: 'Theme background',
75
+ card: 'Card background',
76
+ muted: 'Muted surface',
77
+ accent: 'Accent surface',
78
+ secondary: 'Secondary surface',
79
+ primary: 'Primary surface',
80
+ popover: 'Popover surface'
81
+ };
82
+ return {
83
+ value: key,
84
+ label: labelMap[key] ?? key,
85
+ color: value
86
+ };
87
+ }).filter((token)=>Boolean(token));
88
+ return tokens.length > 0 ? tokens : FALLBACK_TOKENS;
89
+ }
90
+ export default function ThemeTokenSelectField(props) {
91
+ const { path, field } = props;
92
+ const { value, setValue } = useField({
93
+ path
94
+ });
95
+ const [options, setOptions] = useState(FALLBACK_TOKENS);
96
+ const selectedValue = value || 'background';
97
+ useEffect(()=>{
98
+ let isMounted = true;
99
+ fetchThemeConfiguration().then((configuration)=>{
100
+ if (!isMounted) return;
101
+ setOptions(buildOptionsFromConfiguration(configuration));
102
+ });
103
+ return ()=>{
104
+ isMounted = false;
105
+ };
106
+ }, []);
107
+ const handleSelect = useCallback((nextValue)=>{
108
+ setValue(nextValue);
109
+ }, [
110
+ setValue
111
+ ]);
112
+ const label = typeof field.label === 'string' ? field.label : '';
113
+ let description = '';
114
+ if (typeof field.admin?.description === 'string') {
115
+ description = field.admin.description;
116
+ } else if (field.admin?.description && typeof field.admin.description === 'object' && typeof field.admin.description.en === 'string') {
117
+ description = field.admin.description.en;
118
+ }
119
+ return /*#__PURE__*/ _jsxs("div", {
120
+ className: "field-type theme-token-select",
121
+ children: [
122
+ label && /*#__PURE__*/ _jsxs("label", {
123
+ className: "field-label",
124
+ htmlFor: path,
125
+ style: {
126
+ display: 'block',
127
+ marginBottom: '8px'
128
+ },
129
+ children: [
130
+ label,
131
+ field.required && /*#__PURE__*/ _jsx("span", {
132
+ className: "required",
133
+ children: "*"
134
+ })
135
+ ]
136
+ }),
137
+ description && /*#__PURE__*/ _jsx("div", {
138
+ className: "field-description",
139
+ style: {
140
+ marginBottom: '12px',
141
+ fontSize: '13px',
142
+ color: 'var(--theme-elevation-500)'
143
+ },
144
+ children: description
145
+ }),
146
+ /*#__PURE__*/ _jsx("div", {
147
+ className: "token-grid",
148
+ style: {
149
+ display: 'grid',
150
+ gridTemplateColumns: 'repeat(auto-fill, minmax(140px, 1fr))',
151
+ gap: '10px'
152
+ },
153
+ children: options.map((option)=>{
154
+ const isActive = option.value === selectedValue;
155
+ return /*#__PURE__*/ _jsxs("button", {
156
+ type: "button",
157
+ onClick: ()=>handleSelect(option.value),
158
+ style: {
159
+ display: 'flex',
160
+ alignItems: 'center',
161
+ gap: '10px',
162
+ padding: '10px 12px',
163
+ borderRadius: '10px',
164
+ border: isActive ? '2px solid var(--theme-primary-500)' : '1px solid var(--theme-elevation-150)',
165
+ backgroundColor: 'var(--theme-elevation-0)',
166
+ boxShadow: isActive ? '0 10px 20px -10px rgba(59, 130, 246, 0.4)' : '0 1px 2px rgba(15, 23, 42, 0.08)',
167
+ cursor: 'pointer',
168
+ transition: 'border-color 0.2s ease, box-shadow 0.2s ease'
169
+ },
170
+ children: [
171
+ /*#__PURE__*/ _jsx("span", {
172
+ "aria-hidden": true,
173
+ style: {
174
+ width: '32px',
175
+ height: '32px',
176
+ borderRadius: '8px',
177
+ border: '1px solid rgba(15, 23, 42, 0.08)',
178
+ background: option.color
179
+ }
180
+ }),
181
+ /*#__PURE__*/ _jsx("span", {
182
+ style: {
183
+ fontSize: '13px',
184
+ fontWeight: 600,
185
+ color: 'var(--theme-elevation-800)'
186
+ },
187
+ children: option.label
188
+ })
189
+ ]
190
+ }, option.value);
191
+ })
192
+ }),
193
+ /*#__PURE__*/ _jsx("select", {
194
+ id: path,
195
+ value: selectedValue,
196
+ onChange: (event)=>handleSelect(event.target.value),
197
+ style: {
198
+ display: 'none'
199
+ },
200
+ children: options.map((option)=>/*#__PURE__*/ _jsx("option", {
201
+ value: option.value,
202
+ children: option.label
203
+ }, option.value))
204
+ })
205
+ ]
206
+ });
207
+ }
208
+
209
+ //# sourceMappingURL=ThemeTokenSelectField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/fields/ThemeTokenSelectField.tsx"],"sourcesContent":["'use client'\r\n\r\nimport { useField } from '@payloadcms/ui'\r\nimport type { SelectFieldClientProps } from 'payload'\r\nimport { useCallback, useEffect, useState } from 'react'\r\nimport { defaultThemePresets } from '../presets.js'\r\nimport { resolveThemeConfiguration } from '../utils/resolveThemeConfiguration.js'\r\n\r\ninterface ThemeColorOption {\r\n value: string\r\n label: string\r\n color: string\r\n description?: string\r\n}\r\n\r\nconst FALLBACK_TOKENS: ThemeColorOption[] = [\r\n { value: 'background', label: 'Theme background', color: 'var(--background)' },\r\n { value: 'card', label: 'Card background', color: 'var(--card)' },\r\n { value: 'muted', label: 'Muted surface', color: 'var(--muted)' },\r\n { value: 'accent', label: 'Accent surface', color: 'var(--accent)' },\r\n { value: 'secondary', label: 'Secondary surface', color: 'var(--secondary)' },\r\n { value: 'primary', label: 'Primary surface', color: 'var(--primary)' },\r\n]\r\n\r\nasync function fetchThemeConfiguration(): Promise<Record<string, unknown> | null> {\r\n try {\r\n const response = await fetch('/api/site-settings')\r\n if (!response.ok) {\r\n return null\r\n }\r\n const data = await response.json()\r\n return data?.docs?.[0]?.themeConfiguration ?? null\r\n } catch (error) {\r\n console.warn('[ThemeTokenSelectField] Failed to fetch theme configuration:', error)\r\n return null\r\n }\r\n}\r\n\r\nfunction buildOptionsFromConfiguration(configuration: Record<string, unknown> | null): ThemeColorOption[] {\r\n if (!configuration) {\r\n return FALLBACK_TOKENS\r\n }\r\n\r\n const resolved = resolveThemeConfiguration(configuration)\r\n const lightMode = resolved.lightMode ?? defaultThemePresets[0]?.lightMode ?? {}\r\n const orderedKeys: string[] = [\r\n 'background',\r\n 'card',\r\n 'muted',\r\n 'accent',\r\n 'secondary',\r\n 'primary',\r\n 'popover',\r\n ]\r\n\r\n const typedLightMode = lightMode as Record<string, string | null | undefined>\r\n\r\n const tokens = orderedKeys\r\n .map((key) => {\r\n const value = typedLightMode?.[key]\r\n if (typeof value !== 'string' || value.trim().length === 0) {\r\n return null\r\n }\r\n\r\n const labelMap: Record<string, string> = {\r\n background: 'Theme background',\r\n card: 'Card background',\r\n muted: 'Muted surface',\r\n accent: 'Accent surface',\r\n secondary: 'Secondary surface',\r\n primary: 'Primary surface',\r\n popover: 'Popover surface',\r\n }\r\n\r\n return {\r\n value: key,\r\n label: labelMap[key] ?? key,\r\n color: value,\r\n }\r\n })\r\n .filter((token): token is ThemeColorOption => Boolean(token))\r\n\r\n return tokens.length > 0 ? tokens : FALLBACK_TOKENS\r\n}\r\n\r\nexport default function ThemeTokenSelectField(props: SelectFieldClientProps) {\r\n const { path, field } = props\r\n const { value, setValue } = useField<string>({ path })\r\n const [options, setOptions] = useState<ThemeColorOption[]>(FALLBACK_TOKENS)\r\n const selectedValue = value || 'background'\r\n\r\n useEffect(() => {\r\n let isMounted = true\r\n\r\n fetchThemeConfiguration().then((configuration) => {\r\n if (!isMounted) return\r\n setOptions(buildOptionsFromConfiguration(configuration))\r\n })\r\n\r\n return () => {\r\n isMounted = false\r\n }\r\n }, [])\r\n\r\n const handleSelect = useCallback(\r\n (nextValue: string) => {\r\n setValue(nextValue)\r\n },\r\n [setValue],\r\n )\r\n\r\n const label = typeof field.label === 'string' ? field.label : ''\r\n let description = ''\r\n if (typeof field.admin?.description === 'string') {\r\n description = field.admin.description\r\n } else if (\r\n field.admin?.description &&\r\n typeof field.admin.description === 'object' &&\r\n typeof field.admin.description.en === 'string'\r\n ) {\r\n description = field.admin.description.en\r\n }\r\n\r\n return (\r\n <div className=\"field-type theme-token-select\">\r\n {label && (\r\n <label\r\n className=\"field-label\"\r\n htmlFor={path}\r\n style={{ display: 'block', marginBottom: '8px' }}\r\n >\r\n {label}\r\n {field.required && <span className=\"required\">*</span>}\r\n </label>\r\n )}\r\n\r\n {description && (\r\n <div\r\n className=\"field-description\"\r\n style={{ marginBottom: '12px', fontSize: '13px', color: 'var(--theme-elevation-500)' }}\r\n >\r\n {description}\r\n </div>\r\n )}\r\n\r\n <div\r\n className=\"token-grid\"\r\n style={{\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(auto-fill, minmax(140px, 1fr))',\r\n gap: '10px',\r\n }}\r\n >\r\n {options.map((option) => {\r\n const isActive = option.value === selectedValue\r\n return (\r\n <button\r\n type=\"button\"\r\n key={option.value}\r\n onClick={() => handleSelect(option.value)}\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '10px',\r\n padding: '10px 12px',\r\n borderRadius: '10px',\r\n border: isActive\r\n ? '2px solid var(--theme-primary-500)'\r\n : '1px solid var(--theme-elevation-150)',\r\n backgroundColor: 'var(--theme-elevation-0)',\r\n boxShadow: isActive\r\n ? '0 10px 20px -10px rgba(59, 130, 246, 0.4)'\r\n : '0 1px 2px rgba(15, 23, 42, 0.08)',\r\n cursor: 'pointer',\r\n transition: 'border-color 0.2s ease, box-shadow 0.2s ease',\r\n }}\r\n >\r\n <span\r\n aria-hidden\r\n style={{\r\n width: '32px',\r\n height: '32px',\r\n borderRadius: '8px',\r\n border: '1px solid rgba(15, 23, 42, 0.08)',\r\n background: option.color,\r\n }}\r\n />\r\n <span\r\n style={{ fontSize: '13px', fontWeight: 600, color: 'var(--theme-elevation-800)' }}\r\n >\r\n {option.label}\r\n </span>\r\n </button>\r\n )\r\n })}\r\n </div>\r\n\r\n <select\r\n id={path}\r\n value={selectedValue}\r\n onChange={(event) => handleSelect(event.target.value)}\r\n style={{ display: 'none' }}\r\n >\r\n {options.map((option) => (\r\n <option key={option.value} value={option.value}>\r\n {option.label}\r\n </option>\r\n ))}\r\n </select>\r\n </div>\r\n )\r\n}\r\n"],"names":["useField","useCallback","useEffect","useState","defaultThemePresets","resolveThemeConfiguration","FALLBACK_TOKENS","value","label","color","fetchThemeConfiguration","response","fetch","ok","data","json","docs","themeConfiguration","error","console","warn","buildOptionsFromConfiguration","configuration","resolved","lightMode","orderedKeys","typedLightMode","tokens","map","key","trim","length","labelMap","background","card","muted","accent","secondary","primary","popover","filter","token","Boolean","ThemeTokenSelectField","props","path","field","setValue","options","setOptions","selectedValue","isMounted","then","handleSelect","nextValue","description","admin","en","div","className","htmlFor","style","display","marginBottom","required","span","fontSize","gridTemplateColumns","gap","option","isActive","button","type","onClick","alignItems","padding","borderRadius","border","backgroundColor","boxShadow","cursor","transition","aria-hidden","width","height","fontWeight","select","id","onChange","event","target"],"mappings":"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"}
@@ -18,125 +18,218 @@ const colorFieldKeys = [
18
18
  'destructiveForeground',
19
19
  'border',
20
20
  'input',
21
- 'ring',
21
+ 'ring'
22
22
  ];
23
23
  const colorFieldDefinitions = [
24
24
  {
25
25
  name: 'background',
26
- label: { en: 'Background', cs: 'Pozadí' },
27
- description: { en: 'Main background color', cs: 'Hlavní barva pozadí' },
26
+ label: {
27
+ en: 'Background',
28
+ cs: 'Pozadí'
29
+ },
30
+ description: {
31
+ en: 'Main background color',
32
+ cs: 'Hlavní barva pozadí'
33
+ }
28
34
  },
29
35
  {
30
36
  name: 'foreground',
31
- label: { en: 'Foreground', cs: 'Popředí' },
32
- description: { en: 'Main text color', cs: 'Hlavní barva textu' },
37
+ label: {
38
+ en: 'Foreground',
39
+ cs: 'Popředí'
40
+ },
41
+ description: {
42
+ en: 'Main text color',
43
+ cs: 'Hlavní barva textu'
44
+ }
33
45
  },
34
46
  {
35
47
  name: 'primary',
36
- label: { en: 'Primary', cs: 'Primární' },
48
+ label: {
49
+ en: 'Primary',
50
+ cs: 'Primární'
51
+ },
37
52
  description: {
38
53
  en: 'Primary brand color for buttons, links',
39
- cs: 'Primární barva značky pro tlačítka, odkazy',
40
- },
54
+ cs: 'Primární barva značky pro tlačítka, odkazy'
55
+ }
41
56
  },
42
57
  {
43
58
  name: 'primaryForeground',
44
- label: { en: 'Primary Foreground', cs: 'Primární popředí' },
59
+ label: {
60
+ en: 'Primary Foreground',
61
+ cs: 'Primární popředí'
62
+ },
45
63
  description: {
46
64
  en: 'Text color on primary background',
47
- cs: 'Barva textu na primárním pozadí',
48
- },
65
+ cs: 'Barva textu na primárním pozadí'
66
+ }
49
67
  },
50
68
  {
51
69
  name: 'card',
52
- label: { en: 'Card', cs: 'Karta' },
53
- description: { en: 'Card background color', cs: 'Barva pozadí karty' },
70
+ label: {
71
+ en: 'Card',
72
+ cs: 'Karta'
73
+ },
74
+ description: {
75
+ en: 'Card background color',
76
+ cs: 'Barva pozadí karty'
77
+ }
54
78
  },
55
79
  {
56
80
  name: 'cardForeground',
57
- label: { en: 'Card Foreground', cs: 'Karta popředí' },
81
+ label: {
82
+ en: 'Card Foreground',
83
+ cs: 'Karta popředí'
84
+ },
58
85
  description: {
59
86
  en: 'Text color on card background',
60
- cs: 'Barva textu na pozadí karty',
61
- },
87
+ cs: 'Barva textu na pozadí karty'
88
+ }
62
89
  },
63
90
  {
64
91
  name: 'popover',
65
- label: { en: 'Popover', cs: 'Popover' },
66
- description: { en: 'Popover background color', cs: 'Barva pozadí popoveru' },
92
+ label: {
93
+ en: 'Popover',
94
+ cs: 'Popover'
95
+ },
96
+ description: {
97
+ en: 'Popover background color',
98
+ cs: 'Barva pozadí popoveru'
99
+ }
67
100
  },
68
101
  {
69
102
  name: 'popoverForeground',
70
- label: { en: 'Popover Foreground', cs: 'Popover popředí' },
103
+ label: {
104
+ en: 'Popover Foreground',
105
+ cs: 'Popover popředí'
106
+ },
71
107
  description: {
72
108
  en: 'Text color on popover background',
73
- cs: 'Barva textu na pozadí popoveru',
74
- },
109
+ cs: 'Barva textu na pozadí popoveru'
110
+ }
75
111
  },
76
112
  {
77
113
  name: 'secondary',
78
- label: { en: 'Secondary', cs: 'Sekundární' },
79
- description: { en: 'Secondary UI elements', cs: 'Sekundární UI prvky' },
114
+ label: {
115
+ en: 'Secondary',
116
+ cs: 'Sekundární'
117
+ },
118
+ description: {
119
+ en: 'Secondary UI elements',
120
+ cs: 'Sekundární UI prvky'
121
+ }
80
122
  },
81
123
  {
82
124
  name: 'secondaryForeground',
83
- label: { en: 'Secondary Foreground', cs: 'Sekundární popředí' },
125
+ label: {
126
+ en: 'Secondary Foreground',
127
+ cs: 'Sekundární popředí'
128
+ },
84
129
  description: {
85
130
  en: 'Text color on secondary background',
86
- cs: 'Barva textu na sekundárním pozadí',
87
- },
131
+ cs: 'Barva textu na sekundárním pozadí'
132
+ }
88
133
  },
89
134
  {
90
135
  name: 'muted',
91
- label: { en: 'Muted', cs: 'Ztlumený' },
92
- description: { en: 'Muted backgrounds', cs: 'Ztlumená pozadí' },
136
+ label: {
137
+ en: 'Muted',
138
+ cs: 'Ztlumený'
139
+ },
140
+ description: {
141
+ en: 'Muted backgrounds',
142
+ cs: 'Ztlumená pozadí'
143
+ }
93
144
  },
94
145
  {
95
146
  name: 'mutedForeground',
96
- label: { en: 'Muted Foreground', cs: 'Ztlumené popředí' },
97
- description: { en: 'Muted text color', cs: 'Ztlumená barva textu' },
147
+ label: {
148
+ en: 'Muted Foreground',
149
+ cs: 'Ztlumené popředí'
150
+ },
151
+ description: {
152
+ en: 'Muted text color',
153
+ cs: 'Ztlumená barva textu'
154
+ }
98
155
  },
99
156
  {
100
157
  name: 'accent',
101
- label: { en: 'Accent', cs: 'Akcent' },
102
- description: { en: 'Accent color for highlights', cs: 'Akcentová barva pro zvýraznění' },
158
+ label: {
159
+ en: 'Accent',
160
+ cs: 'Akcent'
161
+ },
162
+ description: {
163
+ en: 'Accent color for highlights',
164
+ cs: 'Akcentová barva pro zvýraznění'
165
+ }
103
166
  },
104
167
  {
105
168
  name: 'accentForeground',
106
- label: { en: 'Accent Foreground', cs: 'Akcent popředí' },
169
+ label: {
170
+ en: 'Accent Foreground',
171
+ cs: 'Akcent popředí'
172
+ },
107
173
  description: {
108
174
  en: 'Text color on accent background',
109
- cs: 'Barva textu na akcentovém pozadí',
110
- },
175
+ cs: 'Barva textu na akcentovém pozadí'
176
+ }
111
177
  },
112
178
  {
113
179
  name: 'destructive',
114
- label: { en: 'Destructive', cs: 'Destruktivní' },
115
- description: { en: 'Error and destructive actions', cs: 'Chyby a destruktivní akce' },
180
+ label: {
181
+ en: 'Destructive',
182
+ cs: 'Destruktivní'
183
+ },
184
+ description: {
185
+ en: 'Error and destructive actions',
186
+ cs: 'Chyby a destruktivní akce'
187
+ }
116
188
  },
117
189
  {
118
190
  name: 'destructiveForeground',
119
- label: { en: 'Destructive Foreground', cs: 'Destruktivní popředí' },
191
+ label: {
192
+ en: 'Destructive Foreground',
193
+ cs: 'Destruktivní popředí'
194
+ },
120
195
  description: {
121
196
  en: 'Text color on destructive background',
122
- cs: 'Barva textu na destruktivním pozadí',
123
- },
197
+ cs: 'Barva textu na destruktivním pozadí'
198
+ }
124
199
  },
125
200
  {
126
201
  name: 'border',
127
- label: { en: 'Border', cs: 'Okraj' },
128
- description: { en: 'Border color', cs: 'Barva okraje' },
202
+ label: {
203
+ en: 'Border',
204
+ cs: 'Okraj'
205
+ },
206
+ description: {
207
+ en: 'Border color',
208
+ cs: 'Barva okraje'
209
+ }
129
210
  },
130
211
  {
131
212
  name: 'input',
132
- label: { en: 'Input', cs: 'Vstup' },
133
- description: { en: 'Input border color', cs: 'Barva okraje vstupů' },
213
+ label: {
214
+ en: 'Input',
215
+ cs: 'Vstup'
216
+ },
217
+ description: {
218
+ en: 'Input border color',
219
+ cs: 'Barva okraje vstupů'
220
+ }
134
221
  },
135
222
  {
136
223
  name: 'ring',
137
- label: { en: 'Ring', cs: 'Prstenec' },
138
- description: { en: 'Focus ring color', cs: 'Barva focus prstence' },
139
- },
224
+ label: {
225
+ en: 'Ring',
226
+ cs: 'Prstenec'
227
+ },
228
+ description: {
229
+ en: 'Focus ring color',
230
+ cs: 'Barva focus prstence'
231
+ }
232
+ }
140
233
  ];
141
234
  // Light Mode Default Colors (Shadcn UI inspired defaults)
142
235
  export const lightModeDefaults = {
@@ -158,7 +251,7 @@ export const lightModeDefaults = {
158
251
  destructiveForeground: '#fafafa',
159
252
  border: '#e4e4e7',
160
253
  input: '#e4e4e7',
161
- ring: '#18181b',
254
+ ring: '#18181b'
162
255
  };
163
256
  // Dark Mode Default Colors (Shadcn UI inspired defaults)
164
257
  export const darkModeDefaults = {
@@ -180,62 +273,63 @@ export const darkModeDefaults = {
180
273
  destructiveForeground: '#fafafa',
181
274
  border: '#27272a',
182
275
  input: '#27272a',
183
- ring: '#d4d4d8',
276
+ ring: '#d4d4d8'
184
277
  };
185
278
  function createColorFields(defaults) {
186
- return colorFieldDefinitions.map(({ name, label, description }) => ({
187
- name,
188
- type: 'text',
189
- label,
190
- defaultValue: defaults[name],
191
- admin: {
192
- components: {
193
- Field: themeColorPickerComponentPath,
194
- },
195
- description,
196
- },
197
- }));
279
+ return colorFieldDefinitions.map(({ name, label, description })=>({
280
+ name,
281
+ type: 'text',
282
+ label,
283
+ defaultValue: defaults[name],
284
+ admin: {
285
+ components: {
286
+ Field: themeColorPickerComponentPath
287
+ },
288
+ description
289
+ }
290
+ }));
198
291
  }
199
292
  export const lightModeField = {
200
293
  type: 'collapsible',
201
294
  label: {
202
295
  en: '☀️ Light Mode Colors',
203
- cs: '☀️ Barvy světlého režimu',
296
+ cs: '☀️ Barvy světlého režimu'
204
297
  },
205
298
  admin: {
206
299
  initCollapsed: true,
207
300
  description: {
208
301
  en: 'Configure colors for light mode',
209
- cs: 'Nakonfigurujte barvy pro světlý režim',
210
- },
302
+ cs: 'Nakonfigurujte barvy pro světlý režim'
303
+ }
211
304
  },
212
305
  fields: [
213
306
  {
214
307
  name: 'lightMode',
215
308
  type: 'group',
216
- fields: createColorFields(lightModeDefaults),
217
- },
218
- ],
309
+ fields: createColorFields(lightModeDefaults)
310
+ }
311
+ ]
219
312
  };
220
313
  export const darkModeField = {
221
314
  type: 'collapsible',
222
315
  label: {
223
316
  en: '🌙 Dark Mode Colors',
224
- cs: '🌙 Barvy tmavého režimu',
317
+ cs: '🌙 Barvy tmavého režimu'
225
318
  },
226
319
  admin: {
227
320
  initCollapsed: true,
228
321
  description: {
229
322
  en: 'Configure colors for dark mode',
230
- cs: 'Nakonfigurujte barvy pro tmavý režim',
231
- },
323
+ cs: 'Nakonfigurujte barvy pro tmavý režim'
324
+ }
232
325
  },
233
326
  fields: [
234
327
  {
235
328
  name: 'darkMode',
236
329
  type: 'group',
237
- fields: createColorFields(darkModeDefaults),
238
- },
239
- ],
330
+ fields: createColorFields(darkModeDefaults)
331
+ }
332
+ ]
240
333
  };
334
+
241
335
  //# sourceMappingURL=colorModeFields.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"colorModeFields.js","sourceRoot":"","sources":["../../src/fields/colorModeFields.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/fields/colorModeFields.ts"],"sourcesContent":["import type { Field } from 'payload'\r\n\r\nconst themeColorPickerComponentPath = '@payloadcms-plugins/theme-management/fields/ThemeColorPickerField'\r\n\r\ntype LocalizedText = Record<string, string>\r\n\r\nconst colorFieldKeys = [\r\n 'background',\r\n 'foreground',\r\n 'primary',\r\n 'primaryForeground',\r\n 'card',\r\n 'cardForeground',\r\n 'popover',\r\n 'popoverForeground',\r\n 'secondary',\r\n 'secondaryForeground',\r\n 'muted',\r\n 'mutedForeground',\r\n 'accent',\r\n 'accentForeground',\r\n 'destructive',\r\n 'destructiveForeground',\r\n 'border',\r\n 'input',\r\n 'ring',\r\n] as const\r\n\r\ntype ColorToken = (typeof colorFieldKeys)[number]\r\n\r\ninterface ColorFieldDefinition {\r\n name: ColorToken\r\n label: LocalizedText\r\n description: LocalizedText\r\n}\r\n\r\ntype ColorPalette = Record<ColorToken, string>\r\n\r\nconst colorFieldDefinitions: ColorFieldDefinition[] = [\r\n {\r\n name: 'background',\r\n label: { en: 'Background', cs: 'Pozadí' },\r\n description: { en: 'Main background color', cs: 'Hlavní barva pozadí' },\r\n },\r\n {\r\n name: 'foreground',\r\n label: { en: 'Foreground', cs: 'Popředí' },\r\n description: { en: 'Main text color', cs: 'Hlavní barva textu' },\r\n },\r\n {\r\n name: 'primary',\r\n label: { en: 'Primary', cs: 'Primární' },\r\n description: {\r\n en: 'Primary brand color for buttons, links',\r\n cs: 'Primární barva značky pro tlačítka, odkazy',\r\n },\r\n },\r\n {\r\n name: 'primaryForeground',\r\n label: { en: 'Primary Foreground', cs: 'Primární popředí' },\r\n description: {\r\n en: 'Text color on primary background',\r\n cs: 'Barva textu na primárním pozadí',\r\n },\r\n },\r\n {\r\n name: 'card',\r\n label: { en: 'Card', cs: 'Karta' },\r\n description: { en: 'Card background color', cs: 'Barva pozadí karty' },\r\n },\r\n {\r\n name: 'cardForeground',\r\n label: { en: 'Card Foreground', cs: 'Karta popředí' },\r\n description: {\r\n en: 'Text color on card background',\r\n cs: 'Barva textu na pozadí karty',\r\n },\r\n },\r\n {\r\n name: 'popover',\r\n label: { en: 'Popover', cs: 'Popover' },\r\n description: { en: 'Popover background color', cs: 'Barva pozadí popoveru' },\r\n },\r\n {\r\n name: 'popoverForeground',\r\n label: { en: 'Popover Foreground', cs: 'Popover popředí' },\r\n description: {\r\n en: 'Text color on popover background',\r\n cs: 'Barva textu na pozadí popoveru',\r\n },\r\n },\r\n {\r\n name: 'secondary',\r\n label: { en: 'Secondary', cs: 'Sekundární' },\r\n description: { en: 'Secondary UI elements', cs: 'Sekundární UI prvky' },\r\n },\r\n {\r\n name: 'secondaryForeground',\r\n label: { en: 'Secondary Foreground', cs: 'Sekundární popředí' },\r\n description: {\r\n en: 'Text color on secondary background',\r\n cs: 'Barva textu na sekundárním pozadí',\r\n },\r\n },\r\n {\r\n name: 'muted',\r\n label: { en: 'Muted', cs: 'Ztlumený' },\r\n description: { en: 'Muted backgrounds', cs: 'Ztlumená pozadí' },\r\n },\r\n {\r\n name: 'mutedForeground',\r\n label: { en: 'Muted Foreground', cs: 'Ztlumené popředí' },\r\n description: { en: 'Muted text color', cs: 'Ztlumená barva textu' },\r\n },\r\n {\r\n name: 'accent',\r\n label: { en: 'Accent', cs: 'Akcent' },\r\n description: { en: 'Accent color for highlights', cs: 'Akcentová barva pro zvýraznění' },\r\n },\r\n {\r\n name: 'accentForeground',\r\n label: { en: 'Accent Foreground', cs: 'Akcent popředí' },\r\n description: {\r\n en: 'Text color on accent background',\r\n cs: 'Barva textu na akcentovém pozadí',\r\n },\r\n },\r\n {\r\n name: 'destructive',\r\n label: { en: 'Destructive', cs: 'Destruktivní' },\r\n description: { en: 'Error and destructive actions', cs: 'Chyby a destruktivní akce' },\r\n },\r\n {\r\n name: 'destructiveForeground',\r\n label: { en: 'Destructive Foreground', cs: 'Destruktivní popředí' },\r\n description: {\r\n en: 'Text color on destructive background',\r\n cs: 'Barva textu na destruktivním pozadí',\r\n },\r\n },\r\n {\r\n name: 'border',\r\n label: { en: 'Border', cs: 'Okraj' },\r\n description: { en: 'Border color', cs: 'Barva okraje' },\r\n },\r\n {\r\n name: 'input',\r\n label: { en: 'Input', cs: 'Vstup' },\r\n description: { en: 'Input border color', cs: 'Barva okraje vstupů' },\r\n },\r\n {\r\n name: 'ring',\r\n label: { en: 'Ring', cs: 'Prstenec' },\r\n description: { en: 'Focus ring color', cs: 'Barva focus prstence' },\r\n },\r\n]\r\n\r\n// Light Mode Default Colors (Shadcn UI inspired defaults)\r\nexport const lightModeDefaults: ColorPalette = {\r\n background: '#ffffff',\r\n foreground: '#0a0a0a',\r\n card: '#ffffff',\r\n cardForeground: '#0a0a0a',\r\n popover: '#ffffff',\r\n popoverForeground: '#0a0a0a',\r\n primary: '#9372f7',\r\n primaryForeground: '#fafafa',\r\n secondary: '#f4f4f5',\r\n secondaryForeground: '#18181b',\r\n muted: '#f4f4f5',\r\n mutedForeground: '#71717a',\r\n accent: '#f4f4f5',\r\n accentForeground: '#18181b',\r\n destructive: '#ef4444',\r\n destructiveForeground: '#fafafa',\r\n border: '#e4e4e7',\r\n input: '#e4e4e7',\r\n ring: '#18181b',\r\n}\r\n\r\n// Dark Mode Default Colors (Shadcn UI inspired defaults)\r\nexport const darkModeDefaults: ColorPalette = {\r\n background: '#0a0a0a',\r\n foreground: '#fafafa',\r\n card: '#09090b',\r\n cardForeground: '#fafafa',\r\n popover: '#09090b',\r\n popoverForeground: '#fafafa',\r\n primary: '#9372f7',\r\n primaryForeground: '#09090b',\r\n secondary: '#27272a',\r\n secondaryForeground: '#fafafa',\r\n muted: '#27272a',\r\n mutedForeground: '#a1a1aa',\r\n accent: '#27272a',\r\n accentForeground: '#fafafa',\r\n destructive: '#7f1d1d',\r\n destructiveForeground: '#fafafa',\r\n border: '#27272a',\r\n input: '#27272a',\r\n ring: '#d4d4d8',\r\n}\r\n\r\nfunction createColorFields(defaults: ColorPalette): Field[] {\r\n return colorFieldDefinitions.map(({ name, label, description }) => ({\r\n name,\r\n type: 'text',\r\n label,\r\n defaultValue: defaults[name],\r\n admin: {\r\n components: {\r\n Field: themeColorPickerComponentPath,\r\n },\r\n description,\r\n },\r\n }))\r\n}\r\n\r\nexport const lightModeField: Field = {\r\n type: 'collapsible',\r\n label: {\r\n en: '☀️ Light Mode Colors',\r\n cs: '☀️ Barvy světlého režimu',\r\n },\r\n admin: {\r\n initCollapsed: true,\r\n description: {\r\n en: 'Configure colors for light mode',\r\n cs: 'Nakonfigurujte barvy pro světlý režim',\r\n },\r\n },\r\n fields: [\r\n {\r\n name: 'lightMode',\r\n type: 'group',\r\n fields: createColorFields(lightModeDefaults),\r\n },\r\n ],\r\n}\r\n\r\nexport const darkModeField: Field = {\r\n type: 'collapsible',\r\n label: {\r\n en: '🌙 Dark Mode Colors',\r\n cs: '🌙 Barvy tmavého režimu',\r\n },\r\n admin: {\r\n initCollapsed: true,\r\n description: {\r\n en: 'Configure colors for dark mode',\r\n cs: 'Nakonfigurujte barvy pro tmavý režim',\r\n },\r\n },\r\n fields: [\r\n {\r\n name: 'darkMode',\r\n type: 'group',\r\n fields: createColorFields(darkModeDefaults),\r\n },\r\n ],\r\n}\r\n"],"names":["themeColorPickerComponentPath","colorFieldKeys","colorFieldDefinitions","name","label","en","cs","description","lightModeDefaults","background","foreground","card","cardForeground","popover","popoverForeground","primary","primaryForeground","secondary","secondaryForeground","muted","mutedForeground","accent","accentForeground","destructive","destructiveForeground","border","input","ring","darkModeDefaults","createColorFields","defaults","map","type","defaultValue","admin","components","Field","lightModeField","initCollapsed","fields","darkModeField"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { Field } from 'payload';
2
- import type { ThemePreset } from '../index';
2
+ import type { ThemePreset } from '../index.js';
3
3
  interface ThemeConfigurationFieldOptions {
4
4
  themePresets: ThemePreset[];
5
5
  defaultTheme: string;
@@ -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,UAAU,CAAA;AAG3C,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;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"}