@10up/block-renderer-theme-json 0.1.4
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 +518 -0
- package/dist/__benchmarks__/parser.bench.d.ts +5 -0
- package/dist/__benchmarks__/parser.bench.d.ts.map +1 -0
- package/dist/__benchmarks__/parser.bench.js +92 -0
- package/dist/__benchmarks__/parser.bench.js.map +1 -0
- package/dist/__tests__/fixtures/theme-json.d.ts +9 -0
- package/dist/__tests__/fixtures/theme-json.d.ts.map +1 -0
- package/dist/__tests__/fixtures/theme-json.js +212 -0
- package/dist/__tests__/fixtures/theme-json.js.map +1 -0
- package/dist/css-generator.d.ts +20 -0
- package/dist/css-generator.d.ts.map +1 -0
- package/dist/css-generator.js +262 -0
- package/dist/css-generator.js.map +1 -0
- package/dist/css-variables.d.ts +82 -0
- package/dist/css-variables.d.ts.map +1 -0
- package/dist/css-variables.js +143 -0
- package/dist/css-variables.js.map +1 -0
- package/dist/ignite-extractor.d.ts +46 -0
- package/dist/ignite-extractor.d.ts.map +1 -0
- package/dist/ignite-extractor.js +96 -0
- package/dist/ignite-extractor.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/parser.d.ts +45 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +242 -0
- package/dist/parser.js.map +1 -0
- package/dist/types.d.ts +459 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +40 -0
- package/dist/types.js.map +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
export const minimalThemeJson = {
|
|
2
|
+
version: 3,
|
|
3
|
+
settings: {},
|
|
4
|
+
styles: {},
|
|
5
|
+
};
|
|
6
|
+
export const fullThemeJson = {
|
|
7
|
+
version: 3,
|
|
8
|
+
$schema: 'https://schemas.wp.org/trunk/theme.json',
|
|
9
|
+
settings: {
|
|
10
|
+
color: {
|
|
11
|
+
palette: [
|
|
12
|
+
{ slug: 'primary', color: '#0073aa', name: 'Primary' },
|
|
13
|
+
{ slug: 'secondary', color: '#23282d', name: 'Secondary' },
|
|
14
|
+
{ slug: 'accent', color: '#00a0d2', name: 'Accent' },
|
|
15
|
+
{ slug: 'contrast', color: '#ffffff', name: 'Contrast' },
|
|
16
|
+
{ slug: 'base', color: '#1e1e1e', name: 'Base' },
|
|
17
|
+
],
|
|
18
|
+
gradients: [
|
|
19
|
+
{
|
|
20
|
+
slug: 'primary-to-accent',
|
|
21
|
+
gradient: 'linear-gradient(135deg, #0073aa 0%, #00a0d2 100%)',
|
|
22
|
+
name: 'Primary to Accent',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
slug: 'vertical-secondary',
|
|
26
|
+
gradient: 'linear-gradient(to bottom, #23282d 0%, #1e1e1e 100%)',
|
|
27
|
+
name: 'Vertical Secondary',
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
duotone: [
|
|
31
|
+
{
|
|
32
|
+
slug: 'dark-grayscale',
|
|
33
|
+
colors: ['#000000', '#ffffff'],
|
|
34
|
+
name: 'Dark Grayscale',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
slug: 'primary-contrast',
|
|
38
|
+
colors: ['#0073aa', '#ffffff'],
|
|
39
|
+
name: 'Primary Contrast',
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
typography: {
|
|
44
|
+
fontFamilies: [
|
|
45
|
+
{
|
|
46
|
+
slug: 'system-sans',
|
|
47
|
+
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
|
|
48
|
+
name: 'System Sans',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
slug: 'heading',
|
|
52
|
+
fontFamily: '"Playfair Display", Georgia, serif',
|
|
53
|
+
name: 'Heading',
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
slug: 'body',
|
|
57
|
+
fontFamily: '"Open Sans", sans-serif',
|
|
58
|
+
name: 'Body',
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
fontSizes: [
|
|
62
|
+
{ slug: 'small', size: '0.875rem', name: 'Small' },
|
|
63
|
+
{ slug: 'medium', size: '1rem', name: 'Medium' },
|
|
64
|
+
{ slug: 'large', size: '1.25rem', name: 'Large' },
|
|
65
|
+
{ slug: 'x-large', size: '1.5rem', name: 'Extra Large' },
|
|
66
|
+
{ slug: 'xx-large', size: '2rem', name: 'Huge' },
|
|
67
|
+
],
|
|
68
|
+
},
|
|
69
|
+
spacing: {
|
|
70
|
+
spacingSizes: [
|
|
71
|
+
{ slug: '20', size: '0.5rem', name: 'Extra Small' },
|
|
72
|
+
{ slug: '30', size: '0.75rem', name: 'Small' },
|
|
73
|
+
{ slug: '40', size: '1rem', name: 'Medium' },
|
|
74
|
+
{ slug: '50', size: '1.5rem', name: 'Large' },
|
|
75
|
+
{ slug: '60', size: '2rem', name: 'Extra Large' },
|
|
76
|
+
{ slug: '70', size: '3rem', name: 'Huge' },
|
|
77
|
+
{ slug: '80', size: '4rem', name: 'Giant' },
|
|
78
|
+
],
|
|
79
|
+
units: ['px', 'em', 'rem', '%', 'vw', 'vh'],
|
|
80
|
+
},
|
|
81
|
+
shadow: {
|
|
82
|
+
presets: [
|
|
83
|
+
{
|
|
84
|
+
slug: 'natural',
|
|
85
|
+
shadow: '0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24)',
|
|
86
|
+
name: 'Natural',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
slug: 'deep',
|
|
90
|
+
shadow: '0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22)',
|
|
91
|
+
name: 'Deep',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
slug: 'sharp',
|
|
95
|
+
shadow: '0 4px 6px rgba(0, 0, 0, 0.3)',
|
|
96
|
+
name: 'Sharp',
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
},
|
|
100
|
+
layout: {
|
|
101
|
+
contentSize: '800px',
|
|
102
|
+
wideSize: '1200px',
|
|
103
|
+
},
|
|
104
|
+
custom: {
|
|
105
|
+
lineHeight: {
|
|
106
|
+
tight: '1.2',
|
|
107
|
+
normal: '1.6',
|
|
108
|
+
loose: '1.8',
|
|
109
|
+
},
|
|
110
|
+
borderRadius: {
|
|
111
|
+
small: '4px',
|
|
112
|
+
medium: '8px',
|
|
113
|
+
large: '16px',
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
styles: {
|
|
118
|
+
color: {
|
|
119
|
+
background: 'var(--wp--preset--color--base)',
|
|
120
|
+
text: 'var(--wp--preset--color--contrast)',
|
|
121
|
+
},
|
|
122
|
+
typography: {
|
|
123
|
+
fontFamily: 'var(--wp--preset--font-family--body)',
|
|
124
|
+
fontSize: 'var(--wp--preset--font-size--medium)',
|
|
125
|
+
lineHeight: '1.6',
|
|
126
|
+
},
|
|
127
|
+
spacing: {
|
|
128
|
+
blockGap: 'var(--wp--preset--spacing--40)',
|
|
129
|
+
padding: {
|
|
130
|
+
top: 'var(--wp--preset--spacing--50)',
|
|
131
|
+
right: 'var(--wp--preset--spacing--50)',
|
|
132
|
+
bottom: 'var(--wp--preset--spacing--50)',
|
|
133
|
+
left: 'var(--wp--preset--spacing--50)',
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
elements: {
|
|
137
|
+
heading: {
|
|
138
|
+
color: {
|
|
139
|
+
text: 'var(--wp--preset--color--primary)',
|
|
140
|
+
},
|
|
141
|
+
typography: {
|
|
142
|
+
fontFamily: 'var(--wp--preset--font-family--heading)',
|
|
143
|
+
fontWeight: '700',
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
link: {
|
|
147
|
+
color: {
|
|
148
|
+
text: 'var(--wp--preset--color--accent)',
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
button: {
|
|
152
|
+
color: {
|
|
153
|
+
background: 'var(--wp--preset--color--primary)',
|
|
154
|
+
text: 'var(--wp--preset--color--contrast)',
|
|
155
|
+
},
|
|
156
|
+
border: {
|
|
157
|
+
radius: '4px',
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
blocks: {
|
|
162
|
+
'core/paragraph': {
|
|
163
|
+
spacing: {
|
|
164
|
+
margin: {
|
|
165
|
+
bottom: 'var(--wp--preset--spacing--40)',
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
'core/heading': {
|
|
170
|
+
spacing: {
|
|
171
|
+
margin: {
|
|
172
|
+
top: 'var(--wp--preset--spacing--50)',
|
|
173
|
+
bottom: 'var(--wp--preset--spacing--30)',
|
|
174
|
+
},
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
'core/group': {
|
|
178
|
+
spacing: {
|
|
179
|
+
padding: {
|
|
180
|
+
top: 'var(--wp--preset--spacing--50)',
|
|
181
|
+
bottom: 'var(--wp--preset--spacing--50)',
|
|
182
|
+
},
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
};
|
|
188
|
+
export const emptySettingsThemeJson = {
|
|
189
|
+
version: 2,
|
|
190
|
+
styles: {
|
|
191
|
+
color: {
|
|
192
|
+
background: '#ffffff',
|
|
193
|
+
text: '#000000',
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
export const partialThemeJson = {
|
|
198
|
+
version: 3,
|
|
199
|
+
settings: {
|
|
200
|
+
color: {
|
|
201
|
+
palette: [
|
|
202
|
+
{ slug: 'primary', color: '#0000ff', name: 'Primary' },
|
|
203
|
+
],
|
|
204
|
+
},
|
|
205
|
+
typography: {
|
|
206
|
+
fontSizes: [
|
|
207
|
+
{ slug: 'normal', size: '16px', name: 'Normal' },
|
|
208
|
+
],
|
|
209
|
+
},
|
|
210
|
+
},
|
|
211
|
+
};
|
|
212
|
+
//# sourceMappingURL=theme-json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-json.js","sourceRoot":"","sources":["../../../src/__tests__/fixtures/theme-json.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { SectionStyle } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Convert block type to CSS class selector
|
|
4
|
+
* e.g., core/group -> .wp-block-group, tenup/tabs -> .wp-block-tenup-tabs
|
|
5
|
+
*/
|
|
6
|
+
export declare function blockTypeToSelector(blockType: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* Flatten nested object to CSS custom properties
|
|
9
|
+
* { color: { button: { bg: "red" } } } -> { "--wp--custom--color--button--bg": "red" }
|
|
10
|
+
*/
|
|
11
|
+
export declare function flattenCustomToProperties(obj: Record<string, unknown>, prefix?: string): Record<string, string>;
|
|
12
|
+
/**
|
|
13
|
+
* Generate CSS for a single section style
|
|
14
|
+
*/
|
|
15
|
+
export declare function generateSectionStyleCss(sectionStyle: SectionStyle): string;
|
|
16
|
+
/**
|
|
17
|
+
* Generate CSS for all section styles
|
|
18
|
+
*/
|
|
19
|
+
export declare function generateAllSectionStylesCss(sectionStyles: SectionStyle[]): string;
|
|
20
|
+
//# sourceMappingURL=css-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css-generator.d.ts","sourceRoot":"","sources":["../src/css-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,YAAY,CAAC;AAS5D;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAS7D;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,MAAM,SAAiB,GACtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiBxB;AAwID;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAwD1E;AAsBD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,MAAM,CAKjF"}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert camelCase to kebab-case
|
|
3
|
+
*/
|
|
4
|
+
function toKebabCase(str) {
|
|
5
|
+
return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Convert block type to CSS class selector
|
|
9
|
+
* e.g., core/group -> .wp-block-group, tenup/tabs -> .wp-block-tenup-tabs
|
|
10
|
+
*/
|
|
11
|
+
export function blockTypeToSelector(blockType) {
|
|
12
|
+
// Replace namespace separator with dash and add wp-block- prefix
|
|
13
|
+
const className = blockType.replace('/', '-');
|
|
14
|
+
// For core blocks: core-group -> wp-block-group
|
|
15
|
+
// For other blocks: tenup-tabs -> wp-block-tenup-tabs
|
|
16
|
+
if (className.startsWith('core-')) {
|
|
17
|
+
return `.wp-block-${className.slice(5)}`;
|
|
18
|
+
}
|
|
19
|
+
return `.wp-block-${className}`;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Flatten nested object to CSS custom properties
|
|
23
|
+
* { color: { button: { bg: "red" } } } -> { "--wp--custom--color--button--bg": "red" }
|
|
24
|
+
*/
|
|
25
|
+
export function flattenCustomToProperties(obj, prefix = '--wp--custom') {
|
|
26
|
+
const result = {};
|
|
27
|
+
function recurse(current, path) {
|
|
28
|
+
if (typeof current === 'string') {
|
|
29
|
+
result[path] = current;
|
|
30
|
+
}
|
|
31
|
+
else if (typeof current === 'number') {
|
|
32
|
+
result[path] = String(current);
|
|
33
|
+
}
|
|
34
|
+
else if (typeof current === 'object' && current !== null) {
|
|
35
|
+
for (const [key, value] of Object.entries(current)) {
|
|
36
|
+
recurse(value, `${path}--${toKebabCase(key)}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
recurse(obj, prefix);
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Convert StyleObject to CSS property declarations
|
|
45
|
+
*/
|
|
46
|
+
function styleObjectToCssProperties(style) {
|
|
47
|
+
const props = {};
|
|
48
|
+
// Color properties
|
|
49
|
+
if (style.color?.background) {
|
|
50
|
+
props['background-color'] = style.color.background;
|
|
51
|
+
}
|
|
52
|
+
if (style.color?.text) {
|
|
53
|
+
props['color'] = style.color.text;
|
|
54
|
+
}
|
|
55
|
+
if (style.color?.gradient) {
|
|
56
|
+
props['background'] = style.color.gradient;
|
|
57
|
+
}
|
|
58
|
+
// Typography properties
|
|
59
|
+
if (style.typography?.fontFamily) {
|
|
60
|
+
props['font-family'] = style.typography.fontFamily;
|
|
61
|
+
}
|
|
62
|
+
if (style.typography?.fontSize) {
|
|
63
|
+
props['font-size'] = style.typography.fontSize;
|
|
64
|
+
}
|
|
65
|
+
if (style.typography?.fontStyle) {
|
|
66
|
+
props['font-style'] = style.typography.fontStyle;
|
|
67
|
+
}
|
|
68
|
+
if (style.typography?.fontWeight) {
|
|
69
|
+
props['font-weight'] = style.typography.fontWeight;
|
|
70
|
+
}
|
|
71
|
+
if (style.typography?.lineHeight) {
|
|
72
|
+
props['line-height'] = style.typography.lineHeight;
|
|
73
|
+
}
|
|
74
|
+
if (style.typography?.textDecoration) {
|
|
75
|
+
props['text-decoration'] = style.typography.textDecoration;
|
|
76
|
+
}
|
|
77
|
+
if (style.typography?.textTransform) {
|
|
78
|
+
props['text-transform'] = style.typography.textTransform;
|
|
79
|
+
}
|
|
80
|
+
if (style.typography?.letterSpacing) {
|
|
81
|
+
props['letter-spacing'] = style.typography.letterSpacing;
|
|
82
|
+
}
|
|
83
|
+
// Spacing properties
|
|
84
|
+
if (style.spacing?.padding) {
|
|
85
|
+
if (typeof style.spacing.padding === 'string') {
|
|
86
|
+
props['padding'] = style.spacing.padding;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
if (style.spacing.padding.top)
|
|
90
|
+
props['padding-top'] = style.spacing.padding.top;
|
|
91
|
+
if (style.spacing.padding.right)
|
|
92
|
+
props['padding-right'] = style.spacing.padding.right;
|
|
93
|
+
if (style.spacing.padding.bottom)
|
|
94
|
+
props['padding-bottom'] = style.spacing.padding.bottom;
|
|
95
|
+
if (style.spacing.padding.left)
|
|
96
|
+
props['padding-left'] = style.spacing.padding.left;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (style.spacing?.margin) {
|
|
100
|
+
if (typeof style.spacing.margin === 'string') {
|
|
101
|
+
props['margin'] = style.spacing.margin;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
if (style.spacing.margin.top)
|
|
105
|
+
props['margin-top'] = style.spacing.margin.top;
|
|
106
|
+
if (style.spacing.margin.right)
|
|
107
|
+
props['margin-right'] = style.spacing.margin.right;
|
|
108
|
+
if (style.spacing.margin.bottom)
|
|
109
|
+
props['margin-bottom'] = style.spacing.margin.bottom;
|
|
110
|
+
if (style.spacing.margin.left)
|
|
111
|
+
props['margin-left'] = style.spacing.margin.left;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (style.spacing?.blockGap) {
|
|
115
|
+
props['gap'] = style.spacing.blockGap;
|
|
116
|
+
}
|
|
117
|
+
// Border properties
|
|
118
|
+
if (style.border?.color) {
|
|
119
|
+
props['border-color'] = style.border.color;
|
|
120
|
+
}
|
|
121
|
+
if (style.border?.style) {
|
|
122
|
+
props['border-style'] = style.border.style;
|
|
123
|
+
}
|
|
124
|
+
if (style.border?.width) {
|
|
125
|
+
props['border-width'] = style.border.width;
|
|
126
|
+
}
|
|
127
|
+
if (style.border?.radius) {
|
|
128
|
+
if (typeof style.border.radius === 'string') {
|
|
129
|
+
props['border-radius'] = style.border.radius;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
if (style.border.radius.top)
|
|
133
|
+
props['border-top-left-radius'] = style.border.radius.top;
|
|
134
|
+
if (style.border.radius.right)
|
|
135
|
+
props['border-top-right-radius'] = style.border.radius.right;
|
|
136
|
+
if (style.border.radius.bottom)
|
|
137
|
+
props['border-bottom-right-radius'] = style.border.radius.bottom;
|
|
138
|
+
if (style.border.radius.left)
|
|
139
|
+
props['border-bottom-left-radius'] = style.border.radius.left;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// Shadow
|
|
143
|
+
if (style.shadow) {
|
|
144
|
+
props['box-shadow'] = style.shadow;
|
|
145
|
+
}
|
|
146
|
+
// Outline
|
|
147
|
+
if (style.outline?.color) {
|
|
148
|
+
props['outline-color'] = style.outline.color;
|
|
149
|
+
}
|
|
150
|
+
if (style.outline?.style) {
|
|
151
|
+
props['outline-style'] = style.outline.style;
|
|
152
|
+
}
|
|
153
|
+
if (style.outline?.width) {
|
|
154
|
+
props['outline-width'] = style.outline.width;
|
|
155
|
+
}
|
|
156
|
+
if (style.outline?.offset) {
|
|
157
|
+
props['outline-offset'] = style.outline.offset;
|
|
158
|
+
}
|
|
159
|
+
// Dimensions
|
|
160
|
+
if (style.dimensions?.minHeight) {
|
|
161
|
+
props['min-height'] = style.dimensions.minHeight;
|
|
162
|
+
}
|
|
163
|
+
if (style.dimensions?.aspectRatio) {
|
|
164
|
+
props['aspect-ratio'] = style.dimensions.aspectRatio;
|
|
165
|
+
}
|
|
166
|
+
return props;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Generate CSS rule block from selector and properties
|
|
170
|
+
*/
|
|
171
|
+
function generateCssRule(selector, properties) {
|
|
172
|
+
const entries = Object.entries(properties);
|
|
173
|
+
if (entries.length === 0)
|
|
174
|
+
return '';
|
|
175
|
+
const lines = [`${selector} {`];
|
|
176
|
+
for (const [prop, value] of entries) {
|
|
177
|
+
lines.push(` ${prop}: ${value};`);
|
|
178
|
+
}
|
|
179
|
+
lines.push('}');
|
|
180
|
+
return lines.join('\n');
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Generate CSS for a single section style
|
|
184
|
+
*/
|
|
185
|
+
export function generateSectionStyleCss(sectionStyle) {
|
|
186
|
+
const rules = [];
|
|
187
|
+
// Build main selector: :is(.wp-block-group, .wp-block-columns).is-style-{slug}
|
|
188
|
+
const blockSelectors = sectionStyle.blockTypes.map(blockTypeToSelector).join(', ');
|
|
189
|
+
const mainSelector = `:is(${blockSelectors}).is-style-${sectionStyle.slug}`;
|
|
190
|
+
// Collect all properties for main rule
|
|
191
|
+
const mainProps = {};
|
|
192
|
+
// Add custom properties from settings.custom
|
|
193
|
+
if (sectionStyle.customSettings) {
|
|
194
|
+
const customProps = flattenCustomToProperties(sectionStyle.customSettings);
|
|
195
|
+
Object.assign(mainProps, customProps);
|
|
196
|
+
}
|
|
197
|
+
// Add styles from global styles section
|
|
198
|
+
if (sectionStyle.styles.global) {
|
|
199
|
+
const styleProps = styleObjectToCssProperties(sectionStyle.styles.global);
|
|
200
|
+
Object.assign(mainProps, styleProps);
|
|
201
|
+
}
|
|
202
|
+
// Generate main rule
|
|
203
|
+
const mainRule = generateCssRule(mainSelector, mainProps);
|
|
204
|
+
if (mainRule) {
|
|
205
|
+
rules.push(mainRule);
|
|
206
|
+
}
|
|
207
|
+
// Generate element rules (e.g., link, heading styles)
|
|
208
|
+
if (sectionStyle.styles.elements) {
|
|
209
|
+
for (const [element, elementStyle] of Object.entries(sectionStyle.styles.elements)) {
|
|
210
|
+
const elementSelector = getElementSelector(element);
|
|
211
|
+
if (!elementSelector)
|
|
212
|
+
continue;
|
|
213
|
+
const fullSelector = `${mainSelector} ${elementSelector}`;
|
|
214
|
+
const elementProps = styleObjectToCssProperties(elementStyle);
|
|
215
|
+
const elementRule = generateCssRule(fullSelector, elementProps);
|
|
216
|
+
if (elementRule) {
|
|
217
|
+
rules.push(elementRule);
|
|
218
|
+
}
|
|
219
|
+
// Handle pseudo-states like :hover, :focus
|
|
220
|
+
for (const [key, value] of Object.entries(elementStyle)) {
|
|
221
|
+
if (key.startsWith(':') && typeof value === 'object' && value !== null) {
|
|
222
|
+
const pseudoSelector = `${fullSelector}${key}`;
|
|
223
|
+
const pseudoProps = styleObjectToCssProperties(value);
|
|
224
|
+
const pseudoRule = generateCssRule(pseudoSelector, pseudoProps);
|
|
225
|
+
if (pseudoRule) {
|
|
226
|
+
rules.push(pseudoRule);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return rules.join('\n\n');
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Map WordPress element names to CSS selectors
|
|
236
|
+
*/
|
|
237
|
+
function getElementSelector(element) {
|
|
238
|
+
const elementMap = {
|
|
239
|
+
link: 'a',
|
|
240
|
+
h1: 'h1',
|
|
241
|
+
h2: 'h2',
|
|
242
|
+
h3: 'h3',
|
|
243
|
+
h4: 'h4',
|
|
244
|
+
h5: 'h5',
|
|
245
|
+
h6: 'h6',
|
|
246
|
+
heading: 'h1, h2, h3, h4, h5, h6',
|
|
247
|
+
button: '.wp-element-button, .wp-block-button__link',
|
|
248
|
+
caption: '.wp-element-caption, figcaption',
|
|
249
|
+
cite: 'cite',
|
|
250
|
+
};
|
|
251
|
+
return elementMap[element] || null;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Generate CSS for all section styles
|
|
255
|
+
*/
|
|
256
|
+
export function generateAllSectionStylesCss(sectionStyles) {
|
|
257
|
+
return sectionStyles
|
|
258
|
+
.map(generateSectionStyleCss)
|
|
259
|
+
.filter(css => css.length > 0)
|
|
260
|
+
.join('\n\n');
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=css-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css-generator.js","sourceRoot":"","sources":["../src/css-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { ThemeTokens } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Token type for CSS variable generation
|
|
4
|
+
*/
|
|
5
|
+
export type TokenType = 'color' | 'gradient' | 'font-family' | 'font-size' | 'spacing' | 'shadow' | 'duotone';
|
|
6
|
+
/**
|
|
7
|
+
* Generates a WordPress CSS variable reference.
|
|
8
|
+
* WordPress uses a special format: var:preset|type|slug
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* generateCssVarReference('color', 'primary') => 'var:preset|color|primary'
|
|
12
|
+
*/
|
|
13
|
+
export declare function generateCssVarReference(type: TokenType, slug: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Generates the actual CSS custom property name.
|
|
16
|
+
* This is what WordPress generates in the CSS output.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* generateCssPropertyName('color', 'primary') => '--wp--preset--color--primary'
|
|
20
|
+
*/
|
|
21
|
+
export declare function generateCssPropertyName(type: TokenType, slug: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Generates a CSS var() function reference.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* generateCssVarFunction('color', 'primary') => 'var(--wp--preset--color--primary)'
|
|
27
|
+
*/
|
|
28
|
+
export declare function generateCssVarFunction(type: TokenType, slug: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* Parses a WordPress CSS variable reference back to its components.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* parseCssVarReference('var:preset|color|primary') => { type: 'color', slug: 'primary' }
|
|
34
|
+
*/
|
|
35
|
+
export declare function parseCssVarReference(reference: string): {
|
|
36
|
+
type: TokenType;
|
|
37
|
+
slug: string;
|
|
38
|
+
} | null;
|
|
39
|
+
/**
|
|
40
|
+
* Checks if a value is a WordPress CSS variable reference.
|
|
41
|
+
*/
|
|
42
|
+
export declare function isCssVarReference(value: string): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Converts a WordPress CSS variable reference to actual CSS.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* convertToActualCss('var:preset|color|primary') => 'var(--wp--preset--color--primary)'
|
|
48
|
+
*/
|
|
49
|
+
export declare function convertToActualCss(reference: string): string;
|
|
50
|
+
/**
|
|
51
|
+
* Gets all available color slugs from theme tokens.
|
|
52
|
+
*/
|
|
53
|
+
export declare function getColorSlugs(tokens: ThemeTokens): string[];
|
|
54
|
+
/**
|
|
55
|
+
* Gets all available gradient slugs from theme tokens.
|
|
56
|
+
*/
|
|
57
|
+
export declare function getGradientSlugs(tokens: ThemeTokens): string[];
|
|
58
|
+
/**
|
|
59
|
+
* Gets all available font family slugs from theme tokens.
|
|
60
|
+
*/
|
|
61
|
+
export declare function getFontFamilySlugs(tokens: ThemeTokens): string[];
|
|
62
|
+
/**
|
|
63
|
+
* Gets all available font size slugs from theme tokens.
|
|
64
|
+
*/
|
|
65
|
+
export declare function getFontSizeSlugs(tokens: ThemeTokens): string[];
|
|
66
|
+
/**
|
|
67
|
+
* Gets all available spacing slugs from theme tokens.
|
|
68
|
+
*/
|
|
69
|
+
export declare function getSpacingSlugs(tokens: ThemeTokens): string[];
|
|
70
|
+
/**
|
|
71
|
+
* Gets all available shadow slugs from theme tokens.
|
|
72
|
+
*/
|
|
73
|
+
export declare function getShadowSlugs(tokens: ThemeTokens): string[];
|
|
74
|
+
/**
|
|
75
|
+
* Validates that a slug exists in the theme tokens.
|
|
76
|
+
*/
|
|
77
|
+
export declare function validateSlug(tokens: ThemeTokens, type: TokenType, slug: string): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Gets the actual value for a token slug.
|
|
80
|
+
*/
|
|
81
|
+
export declare function getTokenValue(tokens: ThemeTokens, type: TokenType, slug: string): string | null;
|
|
82
|
+
//# sourceMappingURL=css-variables.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css-variables.d.ts","sourceRoot":"","sources":["../src/css-variables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,OAAO,GACP,UAAU,GACV,aAAa,GACb,WAAW,GACX,SAAS,GACT,QAAQ,GACR,SAAS,CAAC;AAEd;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,GAChB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQ1C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAK5D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAE3D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAE9D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAEhE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAE9D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAE7D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAE5D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,MAAM,GACX,OAAO,CAmBT;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,IAAI,CAiBf"}
|