@kilivi/payloadcms-theme-management 0.1.5 → 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.
- package/README.md +97 -97
- package/dist/components/ServerThemeInjector.d.ts +1 -1
- package/dist/components/ServerThemeInjector.d.ts.map +1 -1
- package/dist/components/{ServerThemeInjector.jsx → ServerThemeInjector.js} +50 -37
- package/dist/components/ServerThemeInjector.js.map +1 -0
- package/dist/components/ThemePreview.js +318 -0
- package/dist/components/ThemePreview.js.map +1 -0
- package/dist/components/typographyPreviewUtils.js +12 -17
- package/dist/components/typographyPreviewUtils.js.map +1 -1
- package/dist/constants/themeFonts.js +94 -24
- package/dist/constants/themeFonts.js.map +1 -1
- package/dist/fields/ColorPickerField.js +332 -0
- package/dist/fields/ColorPickerField.js.map +1 -0
- package/dist/fields/RadiusField.js +174 -0
- package/dist/fields/RadiusField.js.map +1 -0
- package/dist/fields/ThemeColorPickerField.css +138 -138
- package/dist/fields/ThemeColorPickerField.js +163 -0
- package/dist/fields/ThemeColorPickerField.js.map +1 -0
- package/dist/fields/ThemePreviewField.js +558 -0
- package/dist/fields/ThemePreviewField.js.map +1 -0
- package/dist/fields/ThemeTokenSelectField.js +209 -0
- package/dist/fields/ThemeTokenSelectField.js.map +1 -0
- package/dist/fields/colorModeFields.js +167 -73
- package/dist/fields/colorModeFields.js.map +1 -1
- package/dist/fields/themeConfigurationField.d.ts +1 -1
- package/dist/fields/themeConfigurationField.d.ts.map +1 -1
- package/dist/fields/themeConfigurationField.js +227 -134
- package/dist/fields/themeConfigurationField.js.map +1 -1
- package/dist/index.d.ts +17 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +52 -52
- package/dist/index.js.map +1 -1
- package/dist/payload-types.js +5 -5
- package/dist/payload-types.js.map +1 -1
- package/dist/plugin.d.ts +1 -2
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +2 -1
- package/dist/plugin.js.map +1 -1
- package/dist/presets.js +66 -65
- package/dist/presets.js.map +1 -1
- package/dist/providers/Theme/index.d.ts +1 -1
- package/dist/providers/Theme/index.d.ts.map +1 -1
- package/dist/providers/Theme/{index.jsx → index.js} +61 -31
- package/dist/providers/Theme/index.js.map +1 -0
- package/dist/providers/Theme/shared.d.ts +1 -1
- package/dist/providers/Theme/shared.d.ts.map +1 -1
- package/dist/providers/Theme/shared.js +34 -9
- package/dist/providers/Theme/shared.js.map +1 -1
- package/dist/providers/Theme/themeConfig.d.ts +1 -1
- package/dist/providers/Theme/themeConfig.d.ts.map +1 -1
- package/dist/providers/Theme/themeConfig.js +37 -36
- package/dist/providers/Theme/themeConfig.js.map +1 -1
- package/dist/providers/Theme/types.js +15 -13
- package/dist/providers/Theme/types.js.map +1 -1
- package/dist/server.d.ts +2 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +3 -2
- package/dist/server.js.map +1 -1
- package/dist/src/--verbose/dist/fields/ThemeColorPickerField.scss +138 -0
- package/dist/src/dist/fields/ThemeColorPickerField.scss +138 -0
- package/dist/types.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/resolveThemeConfiguration.d.ts +3 -3
- package/dist/utils/resolveThemeConfiguration.d.ts.map +1 -1
- package/dist/utils/resolveThemeConfiguration.js +53 -34
- package/dist/utils/resolveThemeConfiguration.js.map +1 -1
- package/dist/utils/themeAssets.d.ts +1 -1
- package/dist/utils/themeAssets.d.ts.map +1 -1
- package/dist/utils/themeAssets.js +4 -4
- package/dist/utils/themeAssets.js.map +1 -1
- package/dist/utils/themeColors.js +95 -41
- package/dist/utils/themeColors.js.map +1 -1
- package/dist/utils/themeUtils.d.ts +2 -2
- package/dist/utils/themeUtils.d.ts.map +1 -1
- package/dist/utils/themeUtils.js +38 -53
- package/dist/utils/themeUtils.js.map +1 -1
- package/package.json +13 -5
- package/dist/components/ServerThemeInjector.jsx.map +0 -1
- package/dist/components/ThemePreview.jsx +0 -231
- package/dist/components/ThemePreview.jsx.map +0 -1
- package/dist/fields/ColorPickerField.jsx +0 -205
- package/dist/fields/ColorPickerField.jsx.map +0 -1
- package/dist/fields/RadiusField.jsx +0 -123
- package/dist/fields/RadiusField.jsx.map +0 -1
- package/dist/fields/ThemeColorPickerField.jsx +0 -110
- package/dist/fields/ThemeColorPickerField.jsx.map +0 -1
- package/dist/fields/ThemePreviewField.jsx +0 -420
- package/dist/fields/ThemePreviewField.jsx.map +0 -1
- package/dist/fields/ThemeTokenSelectField.jsx +0 -151
- package/dist/fields/ThemeTokenSelectField.jsx.map +0 -1
- package/dist/providers/Theme/index.jsx.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Mode, ThemeOption, ThemeDefaults } from './types';
|
|
1
|
+
import type { Mode, ThemeOption, ThemeDefaults } from './types.js';
|
|
2
2
|
export declare const themeLocalStorageKey = "payload-theme";
|
|
3
3
|
export declare const modeLocalStorageKey = "payload-theme-mode";
|
|
4
4
|
export declare const defaultTheme: ThemeDefaults;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/providers/Theme/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/providers/Theme/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAElE,eAAO,MAAM,oBAAoB,kBAAkB,CAAA;AACnD,eAAO,MAAM,mBAAmB,uBAAuB,CAAA;AAEvD,eAAO,MAAM,YAAY,EAAa,aAAa,CAAA;AACnD,eAAO,MAAM,WAAW,EAAa,IAAI,CAAA;AAEzC,eAAO,MAAM,YAAY,EASpB,WAAW,EAAE,CAAA;AAElB,eAAO,MAAM,yBAAyB,QAAO,IAAI,GAAG,IAUnD,CAAA"}
|
|
@@ -3,16 +3,40 @@ export const modeLocalStorageKey = 'payload-theme-mode';
|
|
|
3
3
|
export const defaultTheme = 'cool';
|
|
4
4
|
export const defaultMode = 'auto';
|
|
5
5
|
export const themeOptions = [
|
|
6
|
-
{
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
{
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
6
|
+
{
|
|
7
|
+
label: 'Cool & Professional',
|
|
8
|
+
value: 'cool'
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
label: 'Modern Brutalism',
|
|
12
|
+
value: 'brutal'
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
label: 'Neon Cyberpunk',
|
|
16
|
+
value: 'neon'
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
label: 'Dealership',
|
|
20
|
+
value: 'dealership'
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
label: 'Solar',
|
|
24
|
+
value: 'solar'
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
label: 'Real Estate Blue',
|
|
28
|
+
value: 'real-estate'
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
label: 'Real Estate Gold',
|
|
32
|
+
value: 'real-estate-gold'
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
label: 'Real Estate Neutral',
|
|
36
|
+
value: 'real-estate-neutral'
|
|
37
|
+
}
|
|
14
38
|
];
|
|
15
|
-
export const getImplicitModePreference = ()
|
|
39
|
+
export const getImplicitModePreference = ()=>{
|
|
16
40
|
const mediaQuery = '(prefers-color-scheme: dark)';
|
|
17
41
|
const mql = window.matchMedia(mediaQuery);
|
|
18
42
|
const hasImplicitPreference = typeof mql.matches === 'boolean';
|
|
@@ -21,4 +45,5 @@ export const getImplicitModePreference = () => {
|
|
|
21
45
|
}
|
|
22
46
|
return null;
|
|
23
47
|
};
|
|
48
|
+
|
|
24
49
|
//# sourceMappingURL=shared.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/providers/Theme/shared.ts"],"sourcesContent":["import type { Mode, ThemeOption, ThemeDefaults } from './types.js'\r\n\r\nexport const themeLocalStorageKey = 'payload-theme'\r\nexport const modeLocalStorageKey = 'payload-theme-mode'\r\n\r\nexport const defaultTheme = 'cool' as ThemeDefaults\r\nexport const defaultMode = 'auto' as Mode\r\n\r\nexport const themeOptions = [\r\n { label: 'Cool & Professional', value: 'cool' },\r\n { label: 'Modern Brutalism', value: 'brutal' },\r\n { label: 'Neon Cyberpunk', value: 'neon' },\r\n { label: 'Dealership', value: 'dealership' },\r\n { label: 'Solar', value: 'solar' },\r\n { label: 'Real Estate Blue', value: 'real-estate' },\r\n { label: 'Real Estate Gold', value: 'real-estate-gold' },\r\n { label: 'Real Estate Neutral', value: 'real-estate-neutral' },\r\n] as ThemeOption[]\r\n\r\nexport const getImplicitModePreference = (): Mode | null => {\r\n const mediaQuery = '(prefers-color-scheme: dark)'\r\n const mql = window.matchMedia(mediaQuery)\r\n const hasImplicitPreference = typeof mql.matches === 'boolean'\r\n\r\n if (hasImplicitPreference) {\r\n return mql.matches ? 'dark' : 'light'\r\n }\r\n\r\n return null\r\n}\r\n"],"names":["themeLocalStorageKey","modeLocalStorageKey","defaultTheme","defaultMode","themeOptions","label","value","getImplicitModePreference","mediaQuery","mql","window","matchMedia","hasImplicitPreference","matches"],"mappings":"AAEA,OAAO,MAAMA,uBAAuB,gBAAe;AACnD,OAAO,MAAMC,sBAAsB,qBAAoB;AAEvD,OAAO,MAAMC,eAAe,OAAuB;AACnD,OAAO,MAAMC,cAAc,OAAc;AAEzC,OAAO,MAAMC,eAAe;IAC1B;QAAEC,OAAO;QAAuBC,OAAO;IAAO;IAC9C;QAAED,OAAO;QAAoBC,OAAO;IAAS;IAC7C;QAAED,OAAO;QAAkBC,OAAO;IAAO;IACzC;QAAED,OAAO;QAAcC,OAAO;IAAa;IAC3C;QAAED,OAAO;QAASC,OAAO;IAAQ;IACjC;QAAED,OAAO;QAAoBC,OAAO;IAAc;IAClD;QAAED,OAAO;QAAoBC,OAAO;IAAmB;IACvD;QAAED,OAAO;QAAuBC,OAAO;IAAsB;CAC9D,CAAiB;AAElB,OAAO,MAAMC,4BAA4B;IACvC,MAAMC,aAAa;IACnB,MAAMC,MAAMC,OAAOC,UAAU,CAACH;IAC9B,MAAMI,wBAAwB,OAAOH,IAAII,OAAO,KAAK;IAErD,IAAID,uBAAuB;QACzB,OAAOH,IAAII,OAAO,GAAG,SAAS;IAChC;IAEA,OAAO;AACT,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"themeConfig.d.ts","sourceRoot":"","sources":["../../../src/providers/Theme/themeConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"themeConfig.d.ts","sourceRoot":"","sources":["../../../src/providers/Theme/themeConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE5D,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,aAAa,EAAE,WAAW,CAyG3D,CAAA;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6DtB,CAAA;AAEV,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,WAAW,CAEhE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,OAAO,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE7E"}
|
|
@@ -8,9 +8,9 @@ export const themeConfigs = {
|
|
|
8
8
|
colors: {
|
|
9
9
|
primary: 'hsl(221 83% 53%)',
|
|
10
10
|
background: 'hsl(0 0% 100%)',
|
|
11
|
-
accent: 'hsl(210 40% 95%)'
|
|
12
|
-
}
|
|
13
|
-
}
|
|
11
|
+
accent: 'hsl(210 40% 95%)'
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
14
|
},
|
|
15
15
|
brutal: {
|
|
16
16
|
name: 'brutal',
|
|
@@ -21,9 +21,9 @@ export const themeConfigs = {
|
|
|
21
21
|
colors: {
|
|
22
22
|
primary: 'hsl(0 0% 0%)',
|
|
23
23
|
background: 'hsl(0 0% 100%)',
|
|
24
|
-
accent: 'hsl(0 72% 51%)'
|
|
25
|
-
}
|
|
26
|
-
}
|
|
24
|
+
accent: 'hsl(0 72% 51%)'
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
27
|
},
|
|
28
28
|
neon: {
|
|
29
29
|
name: 'neon',
|
|
@@ -34,9 +34,9 @@ export const themeConfigs = {
|
|
|
34
34
|
colors: {
|
|
35
35
|
primary: 'hsl(263 90% 51%)',
|
|
36
36
|
background: 'hsl(230 25% 5%)',
|
|
37
|
-
accent: 'hsl(180 100% 50%)'
|
|
38
|
-
}
|
|
39
|
-
}
|
|
37
|
+
accent: 'hsl(180 100% 50%)'
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
40
|
},
|
|
41
41
|
solar: {
|
|
42
42
|
name: 'solar',
|
|
@@ -47,9 +47,9 @@ export const themeConfigs = {
|
|
|
47
47
|
colors: {
|
|
48
48
|
primary: 'hsl(20 90% 45%)',
|
|
49
49
|
background: 'hsl(40 30% 95%)',
|
|
50
|
-
accent: 'hsl(40 100% 50%)'
|
|
51
|
-
}
|
|
52
|
-
}
|
|
50
|
+
accent: 'hsl(40 100% 50%)'
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
53
|
},
|
|
54
54
|
dealership: {
|
|
55
55
|
name: 'dealership',
|
|
@@ -60,9 +60,9 @@ export const themeConfigs = {
|
|
|
60
60
|
colors: {
|
|
61
61
|
primary: 'hsl(225 25% 25%)',
|
|
62
62
|
background: 'hsl(0 0% 98%)',
|
|
63
|
-
accent: 'hsl(15 85% 55%)'
|
|
64
|
-
}
|
|
65
|
-
}
|
|
63
|
+
accent: 'hsl(15 85% 55%)'
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
66
|
},
|
|
67
67
|
'real-estate': {
|
|
68
68
|
name: 'real-estate',
|
|
@@ -73,9 +73,9 @@ export const themeConfigs = {
|
|
|
73
73
|
colors: {
|
|
74
74
|
primary: 'hsl(220 90% 48%)',
|
|
75
75
|
background: 'hsl(220 40% 98.5%)',
|
|
76
|
-
accent: 'hsl(210 85% 55%)'
|
|
77
|
-
}
|
|
78
|
-
}
|
|
76
|
+
accent: 'hsl(210 85% 55%)'
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
79
|
},
|
|
80
80
|
'real-estate-gold': {
|
|
81
81
|
name: 'real-estate-gold',
|
|
@@ -86,9 +86,9 @@ export const themeConfigs = {
|
|
|
86
86
|
colors: {
|
|
87
87
|
primary: 'hsl(38 75% 45%)',
|
|
88
88
|
background: 'hsl(45 25% 97%)',
|
|
89
|
-
accent: 'hsl(42 85% 55%)'
|
|
90
|
-
}
|
|
91
|
-
}
|
|
89
|
+
accent: 'hsl(42 85% 55%)'
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
92
|
},
|
|
93
93
|
'real-estate-neutral': {
|
|
94
94
|
name: 'real-estate-neutral',
|
|
@@ -99,10 +99,10 @@ export const themeConfigs = {
|
|
|
99
99
|
colors: {
|
|
100
100
|
primary: 'hsl(25 35% 25%)',
|
|
101
101
|
background: 'hsl(30 8% 98%)',
|
|
102
|
-
accent: 'hsl(35 25% 45%)'
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
102
|
+
accent: 'hsl(35 25% 45%)'
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
106
|
};
|
|
107
107
|
export const borderRadiusPresets = {
|
|
108
108
|
none: {
|
|
@@ -114,8 +114,8 @@ export const borderRadiusPresets = {
|
|
|
114
114
|
'--radius-default': '0',
|
|
115
115
|
'--radius-medium': '0',
|
|
116
116
|
'--radius-large': '0',
|
|
117
|
-
'--radius-xl': '0'
|
|
118
|
-
}
|
|
117
|
+
'--radius-xl': '0'
|
|
118
|
+
}
|
|
119
119
|
},
|
|
120
120
|
small: {
|
|
121
121
|
label: 'Small',
|
|
@@ -126,8 +126,8 @@ export const borderRadiusPresets = {
|
|
|
126
126
|
'--radius-default': '0.375rem',
|
|
127
127
|
'--radius-medium': '0.5rem',
|
|
128
128
|
'--radius-large': '0.75rem',
|
|
129
|
-
'--radius-xl': '1rem'
|
|
130
|
-
}
|
|
129
|
+
'--radius-xl': '1rem'
|
|
130
|
+
}
|
|
131
131
|
},
|
|
132
132
|
medium: {
|
|
133
133
|
label: 'Medium',
|
|
@@ -138,8 +138,8 @@ export const borderRadiusPresets = {
|
|
|
138
138
|
'--radius-default': '0.75rem',
|
|
139
139
|
'--radius-medium': '1rem',
|
|
140
140
|
'--radius-large': '1.5rem',
|
|
141
|
-
'--radius-xl': '2rem'
|
|
142
|
-
}
|
|
141
|
+
'--radius-xl': '2rem'
|
|
142
|
+
}
|
|
143
143
|
},
|
|
144
144
|
large: {
|
|
145
145
|
label: 'Large',
|
|
@@ -150,8 +150,8 @@ export const borderRadiusPresets = {
|
|
|
150
150
|
'--radius-default': '1rem',
|
|
151
151
|
'--radius-medium': '1.5rem',
|
|
152
152
|
'--radius-large': '2rem',
|
|
153
|
-
'--radius-xl': '2.5rem'
|
|
154
|
-
}
|
|
153
|
+
'--radius-xl': '2.5rem'
|
|
154
|
+
}
|
|
155
155
|
},
|
|
156
156
|
xl: {
|
|
157
157
|
label: 'Extra Large',
|
|
@@ -162,9 +162,9 @@ export const borderRadiusPresets = {
|
|
|
162
162
|
'--radius-default': '1.5rem',
|
|
163
163
|
'--radius-medium': '2rem',
|
|
164
164
|
'--radius-large': '2.5rem',
|
|
165
|
-
'--radius-xl': '3rem'
|
|
166
|
-
}
|
|
167
|
-
}
|
|
165
|
+
'--radius-xl': '3rem'
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
168
|
};
|
|
169
169
|
export function getThemeConfig(theme) {
|
|
170
170
|
return themeConfigs[theme];
|
|
@@ -172,4 +172,5 @@ export function getThemeConfig(theme) {
|
|
|
172
172
|
export function getBorderRadiusConfig(preset) {
|
|
173
173
|
return borderRadiusPresets[preset];
|
|
174
174
|
}
|
|
175
|
+
|
|
175
176
|
//# sourceMappingURL=themeConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/providers/Theme/themeConfig.ts"],"sourcesContent":["import type { ThemeConfig, ThemeDefaults } from './types.js'\r\n\r\nexport const themeConfigs: Record<ThemeDefaults, ThemeConfig> = {\r\n cool: {\r\n name: 'cool',\r\n label: 'Cool & Professional',\r\n borderRadius: 'medium',\r\n cssFile: '/themes/cool.css',\r\n preview: {\r\n colors: {\r\n primary: 'hsl(221 83% 53%)',\r\n background: 'hsl(0 0% 100%)',\r\n accent: 'hsl(210 40% 95%)',\r\n },\r\n },\r\n },\r\n brutal: {\r\n name: 'brutal',\r\n label: 'Modern Brutalism',\r\n borderRadius: 'none',\r\n cssFile: '/themes/brutal.css',\r\n preview: {\r\n colors: {\r\n primary: 'hsl(0 0% 0%)',\r\n background: 'hsl(0 0% 100%)',\r\n accent: 'hsl(0 72% 51%)',\r\n },\r\n },\r\n },\r\n neon: {\r\n name: 'neon',\r\n label: 'Neon Cyberpunk',\r\n borderRadius: 'medium',\r\n cssFile: '/themes/neon.css',\r\n preview: {\r\n colors: {\r\n primary: 'hsl(263 90% 51%)',\r\n background: 'hsl(230 25% 5%)',\r\n accent: 'hsl(180 100% 50%)',\r\n },\r\n },\r\n },\r\n solar: {\r\n name: 'solar',\r\n label: 'Solar',\r\n borderRadius: 'large',\r\n cssFile: '/themes/solar.css',\r\n preview: {\r\n colors: {\r\n primary: 'hsl(20 90% 45%)',\r\n background: 'hsl(40 30% 95%)',\r\n accent: 'hsl(40 100% 50%)',\r\n },\r\n },\r\n },\r\n dealership: {\r\n name: 'dealership',\r\n label: 'Dealership',\r\n borderRadius: 'medium',\r\n cssFile: '/themes/dealership.css',\r\n preview: {\r\n colors: {\r\n primary: 'hsl(225 25% 25%)',\r\n background: 'hsl(0 0% 98%)',\r\n accent: 'hsl(15 85% 55%)',\r\n },\r\n },\r\n },\r\n 'real-estate': {\r\n name: 'real-estate',\r\n label: 'Real Estate Blue',\r\n borderRadius: 'large',\r\n cssFile: '/themes/real-estate.css',\r\n preview: {\r\n colors: {\r\n primary: 'hsl(220 90% 48%)',\r\n background: 'hsl(220 40% 98.5%)',\r\n accent: 'hsl(210 85% 55%)',\r\n },\r\n },\r\n },\r\n 'real-estate-gold': {\r\n name: 'real-estate-gold',\r\n label: 'Real Estate Gold',\r\n borderRadius: 'large',\r\n cssFile: '/themes/real-estate-gold.css',\r\n preview: {\r\n colors: {\r\n primary: 'hsl(38 75% 45%)',\r\n background: 'hsl(45 25% 97%)',\r\n accent: 'hsl(42 85% 55%)',\r\n },\r\n },\r\n },\r\n 'real-estate-neutral': {\r\n name: 'real-estate-neutral',\r\n label: 'Real Estate Neutral',\r\n borderRadius: 'large',\r\n cssFile: '/themes/real-estate-neutral.css',\r\n preview: {\r\n colors: {\r\n primary: 'hsl(25 35% 25%)',\r\n background: 'hsl(30 8% 98%)',\r\n accent: 'hsl(35 25% 45%)',\r\n },\r\n },\r\n },\r\n}\r\n\r\nexport const borderRadiusPresets = {\r\n none: {\r\n label: 'None',\r\n value: 'none',\r\n css: {\r\n '--radius-xs': '0',\r\n '--radius-small': '0',\r\n '--radius-default': '0',\r\n '--radius-medium': '0',\r\n '--radius-large': '0',\r\n '--radius-xl': '0',\r\n },\r\n },\r\n small: {\r\n label: 'Small',\r\n value: 'small',\r\n css: {\r\n '--radius-xs': '0.125rem',\r\n '--radius-small': '0.25rem',\r\n '--radius-default': '0.375rem',\r\n '--radius-medium': '0.5rem',\r\n '--radius-large': '0.75rem',\r\n '--radius-xl': '1rem',\r\n },\r\n },\r\n medium: {\r\n label: 'Medium',\r\n value: 'medium',\r\n css: {\r\n '--radius-xs': '0.25rem',\r\n '--radius-small': '0.5rem',\r\n '--radius-default': '0.75rem',\r\n '--radius-medium': '1rem',\r\n '--radius-large': '1.5rem',\r\n '--radius-xl': '2rem',\r\n },\r\n },\r\n large: {\r\n label: 'Large',\r\n value: 'large',\r\n css: {\r\n '--radius-xs': '0.5rem',\r\n '--radius-small': '0.75rem',\r\n '--radius-default': '1rem',\r\n '--radius-medium': '1.5rem',\r\n '--radius-large': '2rem',\r\n '--radius-xl': '2.5rem',\r\n },\r\n },\r\n xl: {\r\n label: 'Extra Large',\r\n value: 'xl',\r\n css: {\r\n '--radius-xs': '0.75rem',\r\n '--radius-small': '1rem',\r\n '--radius-default': '1.5rem',\r\n '--radius-medium': '2rem',\r\n '--radius-large': '2.5rem',\r\n '--radius-xl': '3rem',\r\n },\r\n },\r\n} as const\r\n\r\nexport function getThemeConfig(theme: ThemeDefaults): ThemeConfig {\r\n return themeConfigs[theme]\r\n}\r\n\r\nexport function getBorderRadiusConfig(preset: keyof typeof borderRadiusPresets) {\r\n return borderRadiusPresets[preset]\r\n}\r\n"],"names":["themeConfigs","cool","name","label","borderRadius","cssFile","preview","colors","primary","background","accent","brutal","neon","solar","dealership","borderRadiusPresets","none","value","css","small","medium","large","xl","getThemeConfig","theme","getBorderRadiusConfig","preset"],"mappings":"AAEA,OAAO,MAAMA,eAAmD;IAC9DC,MAAM;QACJC,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;QACTC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;IACF;IACAC,QAAQ;QACNT,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;QACTC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;IACF;IACAE,MAAM;QACJV,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;QACTC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;IACF;IACAG,OAAO;QACLX,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;QACTC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;IACF;IACAI,YAAY;QACVZ,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;QACTC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;IACF;IACA,eAAe;QACbR,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;QACTC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;IACF;IACA,oBAAoB;QAClBR,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;QACTC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;IACF;IACA,uBAAuB;QACrBR,MAAM;QACNC,OAAO;QACPC,cAAc;QACdC,SAAS;QACTC,SAAS;YACPC,QAAQ;gBACNC,SAAS;gBACTC,YAAY;gBACZC,QAAQ;YACV;QACF;IACF;AACF,EAAC;AAED,OAAO,MAAMK,sBAAsB;IACjCC,MAAM;QACJb,OAAO;QACPc,OAAO;QACPC,KAAK;YACH,eAAe;YACf,kBAAkB;YAClB,oBAAoB;YACpB,mBAAmB;YACnB,kBAAkB;YAClB,eAAe;QACjB;IACF;IACAC,OAAO;QACLhB,OAAO;QACPc,OAAO;QACPC,KAAK;YACH,eAAe;YACf,kBAAkB;YAClB,oBAAoB;YACpB,mBAAmB;YACnB,kBAAkB;YAClB,eAAe;QACjB;IACF;IACAE,QAAQ;QACNjB,OAAO;QACPc,OAAO;QACPC,KAAK;YACH,eAAe;YACf,kBAAkB;YAClB,oBAAoB;YACpB,mBAAmB;YACnB,kBAAkB;YAClB,eAAe;QACjB;IACF;IACAG,OAAO;QACLlB,OAAO;QACPc,OAAO;QACPC,KAAK;YACH,eAAe;YACf,kBAAkB;YAClB,oBAAoB;YACpB,mBAAmB;YACnB,kBAAkB;YAClB,eAAe;QACjB;IACF;IACAI,IAAI;QACFnB,OAAO;QACPc,OAAO;QACPC,KAAK;YACH,eAAe;YACf,kBAAkB;YAClB,oBAAoB;YACpB,mBAAmB;YACnB,kBAAkB;YAClB,eAAe;QACjB;IACF;AACF,EAAU;AAEV,OAAO,SAASK,eAAeC,KAAoB;IACjD,OAAOxB,YAAY,CAACwB,MAAM;AAC5B;AAEA,OAAO,SAASC,sBAAsBC,MAAwC;IAC5E,OAAOX,mBAAmB,CAACW,OAAO;AACpC"}
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
export function themeIsValid(string) {
|
|
2
|
-
return string
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
].includes(string)
|
|
13
|
-
: false;
|
|
2
|
+
return string ? [
|
|
3
|
+
'cool',
|
|
4
|
+
'brutal',
|
|
5
|
+
'neon',
|
|
6
|
+
'solar',
|
|
7
|
+
'dealership',
|
|
8
|
+
'real-estate',
|
|
9
|
+
'real-estate-gold',
|
|
10
|
+
'real-estate-neutral'
|
|
11
|
+
].includes(string) : false;
|
|
14
12
|
}
|
|
15
13
|
export function modeIsValid(string) {
|
|
16
|
-
return string ? [
|
|
14
|
+
return string ? [
|
|
15
|
+
'dark',
|
|
16
|
+
'light'
|
|
17
|
+
].includes(string) : false;
|
|
17
18
|
}
|
|
19
|
+
|
|
18
20
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/providers/Theme/types.ts"],"sourcesContent":["export type ThemeDefaults =\r\n | 'cool'\r\n | 'brutal'\r\n | 'neon'\r\n | 'solar'\r\n | 'dealership'\r\n | 'real-estate'\r\n | 'real-estate-gold'\r\n | 'real-estate-neutral';\r\n\r\nexport type Mode = 'dark' | 'light' | 'auto';\r\n\r\nexport type BorderRadiusPreset = 'none' | 'small' | 'medium' | 'large' | 'xl';\r\n\r\nexport type FontScalePreset = 'small' | 'medium' | 'large' | 'xl';\r\n\r\nexport type SpacingPreset = 'compact' | 'medium' | 'spacious';\r\n\r\nexport type AnimationLevelPreset = 'none' | 'reduced' | 'medium' | 'high';\r\n\r\nexport type ColorModePreset = 'auto' | 'light' | 'dark';\r\n\r\nexport interface ThemeConfig {\r\n name: string;\r\n label: string;\r\n borderRadius: BorderRadiusPreset;\r\n cssFile: string;\r\n preview?: {\r\n colors: {\r\n primary: string;\r\n background: string;\r\n accent: string;\r\n };\r\n };\r\n}\r\n\r\nexport interface ThemeContextType {\r\n // Theme management\r\n theme?: ThemeDefaults | null;\r\n setTheme?: (theme: ThemeDefaults) => void; // Add setTheme for enhanced functionality\r\n refreshTheme: () => void; // Refresh theme (now handled server-side)\r\n\r\n // Color mode\r\n mode?: Mode | null;\r\n setMode: (mode: Mode | null) => void;\r\n isColorModeToggleAllowed?: boolean; // Whether admin allows color mode changes\r\n\r\n // Design controls\r\n borderRadius?: BorderRadiusPreset;\r\n setBorderRadius?: (radius: BorderRadiusPreset) => void;\r\n fontScale?: FontScalePreset;\r\n setFontScale?: (scale: FontScalePreset) => void;\r\n spacing?: SpacingPreset;\r\n setSpacing?: (spacing: SpacingPreset) => void;\r\n animationLevel?: AnimationLevelPreset;\r\n setAnimationLevel?: (level: AnimationLevelPreset) => void;\r\n\r\n // Theme loading\r\n preloadTheme?: (theme: ThemeDefaults) => Promise<boolean>;\r\n isThemeLoaded?: (theme: ThemeDefaults) => boolean;\r\n\r\n // Enhanced configuration\r\n themeConfig?: any; // Enhanced theme configuration from plugin\r\n}\r\n\r\nexport interface ThemeOption {\r\n label: string;\r\n value: ThemeDefaults;\r\n config?: ThemeConfig;\r\n}\r\n\r\nexport function themeIsValid(string: null | string): string is ThemeDefaults {\r\n return string\r\n ? [\r\n 'cool',\r\n 'brutal',\r\n 'neon',\r\n 'solar',\r\n 'dealership',\r\n 'real-estate',\r\n 'real-estate-gold',\r\n 'real-estate-neutral',\r\n ].includes(string)\r\n : false;\r\n}\r\n\r\nexport function modeIsValid(string: null | string): string is Mode {\r\n return string ? ['dark', 'light'].includes(string) : false;\r\n}\r\n"],"names":["themeIsValid","string","includes","modeIsValid"],"mappings":"AAuEA,OAAO,SAASA,aAAaC,MAAqB;IAChD,OAAOA,SACH;QACE;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KACD,CAACC,QAAQ,CAACD,UACX;AACN;AAEA,OAAO,SAASE,YAAYF,MAAqB;IAC/C,OAAOA,SAAS;QAAC;QAAQ;KAAQ,CAACC,QAAQ,CAACD,UAAU;AACvD"}
|
package/dist/server.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { ServerThemeInjector } from './components/ServerThemeInjector';
|
|
2
|
-
export { createFallbackCriticalCSS, generateThemePreloadLinks, getThemeCriticalCSS, getThemeCSSPath, } from './utils/themeAssets';
|
|
1
|
+
export { ServerThemeInjector } from './components/ServerThemeInjector.js';
|
|
2
|
+
export { createFallbackCriticalCSS, generateThemePreloadLinks, getThemeCriticalCSS, getThemeCSSPath, } from './utils/themeAssets.js';
|
|
3
3
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AAEzE,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,mBAAmB,EACnB,eAAe,GAChB,MAAM,wBAAwB,CAAA"}
|
package/dist/server.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
export { ServerThemeInjector } from './components/ServerThemeInjector';
|
|
2
|
-
export { createFallbackCriticalCSS, generateThemePreloadLinks, getThemeCriticalCSS, getThemeCSSPath
|
|
1
|
+
export { ServerThemeInjector } from './components/ServerThemeInjector.js';
|
|
2
|
+
export { createFallbackCriticalCSS, generateThemePreloadLinks, getThemeCriticalCSS, getThemeCSSPath } from './utils/themeAssets.js';
|
|
3
|
+
|
|
3
4
|
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../src/server.ts"],"sourcesContent":["export { ServerThemeInjector } from './components/ServerThemeInjector.js'\r\n\r\nexport {\r\n createFallbackCriticalCSS,\r\n generateThemePreloadLinks,\r\n getThemeCriticalCSS,\r\n getThemeCSSPath,\r\n} from './utils/themeAssets.js'\r\n"],"names":["ServerThemeInjector","createFallbackCriticalCSS","generateThemePreloadLinks","getThemeCriticalCSS","getThemeCSSPath"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ,sCAAqC;AAEzE,SACEC,yBAAyB,EACzBC,yBAAyB,EACzBC,mBAAmB,EACnBC,eAAe,QACV,yBAAwB"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
.theme-color-picker-field {
|
|
2
|
+
margin-bottom: 1rem;
|
|
3
|
+
|
|
4
|
+
.field-header {
|
|
5
|
+
margin-bottom: 0.5rem;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.field-label {
|
|
9
|
+
display: block;
|
|
10
|
+
font-weight: 500;
|
|
11
|
+
font-size: 0.875rem;
|
|
12
|
+
color: var(--theme-text);
|
|
13
|
+
margin-bottom: 0.25rem;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.field-description {
|
|
17
|
+
font-size: 0.75rem;
|
|
18
|
+
color: var(--theme-elevation-400);
|
|
19
|
+
margin-top: 0.25rem;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.color-picker-container {
|
|
23
|
+
display: flex;
|
|
24
|
+
gap: 0.75rem;
|
|
25
|
+
align-items: center;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.color-input-wrapper {
|
|
29
|
+
display: flex;
|
|
30
|
+
gap: 0.5rem;
|
|
31
|
+
flex: 1;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.color-input {
|
|
35
|
+
width: 60px;
|
|
36
|
+
height: 38px;
|
|
37
|
+
border: 1px solid var(--theme-elevation-200);
|
|
38
|
+
border-radius: 4px;
|
|
39
|
+
cursor: pointer;
|
|
40
|
+
padding: 2px;
|
|
41
|
+
|
|
42
|
+
&:hover {
|
|
43
|
+
border-color: var(--theme-elevation-400);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
&:focus {
|
|
47
|
+
outline: 2px solid var(--theme-elevation-500);
|
|
48
|
+
outline-offset: 1px;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.text-input {
|
|
53
|
+
flex: 1;
|
|
54
|
+
height: 38px;
|
|
55
|
+
padding: 0 0.75rem;
|
|
56
|
+
border: 1px solid var(--theme-elevation-200);
|
|
57
|
+
border-radius: 4px;
|
|
58
|
+
font-family: monospace;
|
|
59
|
+
font-size: 0.875rem;
|
|
60
|
+
background: var(--theme-elevation-0);
|
|
61
|
+
color: var(--theme-text);
|
|
62
|
+
|
|
63
|
+
&:hover {
|
|
64
|
+
border-color: var(--theme-elevation-400);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
&:focus {
|
|
68
|
+
outline: 2px solid var(--theme-elevation-500);
|
|
69
|
+
outline-offset: 1px;
|
|
70
|
+
border-color: var(--theme-elevation-500);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
&::placeholder {
|
|
74
|
+
color: var(--theme-elevation-400);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
&:invalid {
|
|
78
|
+
border-color: #ef4444;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.color-preview {
|
|
83
|
+
width: 120px;
|
|
84
|
+
height: 38px;
|
|
85
|
+
border-radius: 4px;
|
|
86
|
+
border: 1px solid var(--theme-elevation-200);
|
|
87
|
+
display: flex;
|
|
88
|
+
align-items: center;
|
|
89
|
+
justify-content: center;
|
|
90
|
+
position: relative;
|
|
91
|
+
overflow: hidden;
|
|
92
|
+
|
|
93
|
+
.preview-label {
|
|
94
|
+
font-size: 0.75rem;
|
|
95
|
+
font-family: monospace;
|
|
96
|
+
padding: 0.25rem 0.5rem;
|
|
97
|
+
background: rgba(255, 255, 255, 0.9);
|
|
98
|
+
border-radius: 2px;
|
|
99
|
+
backdrop-filter: blur(4px);
|
|
100
|
+
color: #000;
|
|
101
|
+
font-weight: 500;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.mini-preview {
|
|
106
|
+
margin-top: 1rem;
|
|
107
|
+
padding: 1rem;
|
|
108
|
+
border-radius: 6px;
|
|
109
|
+
border: 1px solid;
|
|
110
|
+
|
|
111
|
+
.preview-card {
|
|
112
|
+
padding: 1rem;
|
|
113
|
+
border-radius: 4px;
|
|
114
|
+
border: 1px solid;
|
|
115
|
+
display: flex;
|
|
116
|
+
gap: 0.5rem;
|
|
117
|
+
flex-wrap: wrap;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.preview-button {
|
|
121
|
+
padding: 0.5rem 1rem;
|
|
122
|
+
border-radius: 4px;
|
|
123
|
+
border: none;
|
|
124
|
+
font-size: 0.875rem;
|
|
125
|
+
font-weight: 500;
|
|
126
|
+
cursor: pointer;
|
|
127
|
+
transition: opacity 0.2s;
|
|
128
|
+
|
|
129
|
+
&:hover {
|
|
130
|
+
opacity: 0.9;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
&.secondary {
|
|
134
|
+
border: 1px solid currentColor;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
.theme-color-picker-field {
|
|
2
|
+
margin-bottom: 1rem;
|
|
3
|
+
|
|
4
|
+
.field-header {
|
|
5
|
+
margin-bottom: 0.5rem;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.field-label {
|
|
9
|
+
display: block;
|
|
10
|
+
font-weight: 500;
|
|
11
|
+
font-size: 0.875rem;
|
|
12
|
+
color: var(--theme-text);
|
|
13
|
+
margin-bottom: 0.25rem;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.field-description {
|
|
17
|
+
font-size: 0.75rem;
|
|
18
|
+
color: var(--theme-elevation-400);
|
|
19
|
+
margin-top: 0.25rem;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.color-picker-container {
|
|
23
|
+
display: flex;
|
|
24
|
+
gap: 0.75rem;
|
|
25
|
+
align-items: center;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.color-input-wrapper {
|
|
29
|
+
display: flex;
|
|
30
|
+
gap: 0.5rem;
|
|
31
|
+
flex: 1;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.color-input {
|
|
35
|
+
width: 60px;
|
|
36
|
+
height: 38px;
|
|
37
|
+
border: 1px solid var(--theme-elevation-200);
|
|
38
|
+
border-radius: 4px;
|
|
39
|
+
cursor: pointer;
|
|
40
|
+
padding: 2px;
|
|
41
|
+
|
|
42
|
+
&:hover {
|
|
43
|
+
border-color: var(--theme-elevation-400);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
&:focus {
|
|
47
|
+
outline: 2px solid var(--theme-elevation-500);
|
|
48
|
+
outline-offset: 1px;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.text-input {
|
|
53
|
+
flex: 1;
|
|
54
|
+
height: 38px;
|
|
55
|
+
padding: 0 0.75rem;
|
|
56
|
+
border: 1px solid var(--theme-elevation-200);
|
|
57
|
+
border-radius: 4px;
|
|
58
|
+
font-family: monospace;
|
|
59
|
+
font-size: 0.875rem;
|
|
60
|
+
background: var(--theme-elevation-0);
|
|
61
|
+
color: var(--theme-text);
|
|
62
|
+
|
|
63
|
+
&:hover {
|
|
64
|
+
border-color: var(--theme-elevation-400);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
&:focus {
|
|
68
|
+
outline: 2px solid var(--theme-elevation-500);
|
|
69
|
+
outline-offset: 1px;
|
|
70
|
+
border-color: var(--theme-elevation-500);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
&::placeholder {
|
|
74
|
+
color: var(--theme-elevation-400);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
&:invalid {
|
|
78
|
+
border-color: #ef4444;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.color-preview {
|
|
83
|
+
width: 120px;
|
|
84
|
+
height: 38px;
|
|
85
|
+
border-radius: 4px;
|
|
86
|
+
border: 1px solid var(--theme-elevation-200);
|
|
87
|
+
display: flex;
|
|
88
|
+
align-items: center;
|
|
89
|
+
justify-content: center;
|
|
90
|
+
position: relative;
|
|
91
|
+
overflow: hidden;
|
|
92
|
+
|
|
93
|
+
.preview-label {
|
|
94
|
+
font-size: 0.75rem;
|
|
95
|
+
font-family: monospace;
|
|
96
|
+
padding: 0.25rem 0.5rem;
|
|
97
|
+
background: rgba(255, 255, 255, 0.9);
|
|
98
|
+
border-radius: 2px;
|
|
99
|
+
backdrop-filter: blur(4px);
|
|
100
|
+
color: #000;
|
|
101
|
+
font-weight: 500;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.mini-preview {
|
|
106
|
+
margin-top: 1rem;
|
|
107
|
+
padding: 1rem;
|
|
108
|
+
border-radius: 6px;
|
|
109
|
+
border: 1px solid;
|
|
110
|
+
|
|
111
|
+
.preview-card {
|
|
112
|
+
padding: 1rem;
|
|
113
|
+
border-radius: 4px;
|
|
114
|
+
border: 1px solid;
|
|
115
|
+
display: flex;
|
|
116
|
+
gap: 0.5rem;
|
|
117
|
+
flex-wrap: wrap;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.preview-button {
|
|
121
|
+
padding: 0.5rem 1rem;
|
|
122
|
+
border-radius: 4px;
|
|
123
|
+
border: none;
|
|
124
|
+
font-size: 0.875rem;
|
|
125
|
+
font-weight: 500;
|
|
126
|
+
cursor: pointer;
|
|
127
|
+
transition: opacity 0.2s;
|
|
128
|
+
|
|
129
|
+
&:hover {
|
|
130
|
+
opacity: 0.9;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
&.secondary {
|
|
134
|
+
border: 1px solid currentColor;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ThemePreset } from './presets';
|
|
2
|
-
export interface
|
|
1
|
+
import type { ThemePreset } from './presets.js';
|
|
2
|
+
export interface ThemeManagementPluginOptions {
|
|
3
3
|
/** Whether the plugin should register itself */
|
|
4
4
|
enabled?: boolean;
|
|
5
5
|
/** Collection slug that stores site-level settings (default: `site-settings`) */
|