@10up/block-renderer-prompt-generator 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.
@@ -0,0 +1,214 @@
1
+ /**
2
+ * Generates color tokens documentation.
3
+ */
4
+ export function generateColorsPrompt(tokens, options) {
5
+ const lines = [
6
+ '### Colors',
7
+ '',
8
+ ];
9
+ // Add Ignite mode warning
10
+ if (options?.igniteMode) {
11
+ lines.push('> **⚠️ IMPORTANT:** For container blocks (groups, columns), use **Section Styles** instead of setting colors directly.');
12
+ lines.push('> Section styles ensure proper color inheritance for child elements.');
13
+ lines.push('> Only use direct colors for specific elements that need a fixed color regardless of context.');
14
+ lines.push('');
15
+ }
16
+ lines.push('Available color slugs:');
17
+ lines.push('');
18
+ if (tokens.colors.palette.length === 0) {
19
+ lines.push('*No color palette defined*');
20
+ return lines.join('\n');
21
+ }
22
+ for (const color of tokens.colors.palette) {
23
+ lines.push(`- \`${color.slug}\`: ${color.name} (${color.color})`);
24
+ }
25
+ return lines.join('\n');
26
+ }
27
+ /**
28
+ * Generates gradient tokens documentation.
29
+ */
30
+ export function generateGradientsPrompt(tokens) {
31
+ if (tokens.colors.gradients.length === 0) {
32
+ return '';
33
+ }
34
+ const lines = [
35
+ '### Gradients',
36
+ '',
37
+ 'Available gradient slugs:',
38
+ '',
39
+ ];
40
+ for (const gradient of tokens.colors.gradients) {
41
+ lines.push(`- \`${gradient.slug}\`: ${gradient.name}`);
42
+ }
43
+ return lines.join('\n');
44
+ }
45
+ /**
46
+ * Generates typography tokens documentation.
47
+ */
48
+ export function generateTypographyPrompt(tokens, options) {
49
+ const lines = ['### Typography', ''];
50
+ // Add Ignite mode warning
51
+ if (options?.igniteMode && options?.igniteTokens?.typographyPresets?.length) {
52
+ lines.push('> **⚠️ IMPORTANT:** Use **Typography Presets** instead of font-size tokens directly.');
53
+ lines.push('> Presets apply consistent font-size, weight, line-height, and letter-spacing together.');
54
+ lines.push('> Use BOTH the `typographyPreset` attribute AND the `className`:');
55
+ lines.push('> `"typographyPreset": "display-lg", "className": "is-typography-preset-display-lg"`');
56
+ lines.push('');
57
+ }
58
+ // Font sizes
59
+ if (tokens.typography.fontSizes.length > 0) {
60
+ if (options?.igniteMode) {
61
+ lines.push('**Font Sizes** *(prefer Typography Presets instead)*:');
62
+ }
63
+ else {
64
+ lines.push('**Font Sizes:**');
65
+ }
66
+ for (const size of tokens.typography.fontSizes) {
67
+ lines.push(`- \`${size.slug}\`: ${size.name} (${size.size})`);
68
+ }
69
+ lines.push('');
70
+ }
71
+ // Font families
72
+ if (tokens.typography.fontFamilies.length > 0) {
73
+ lines.push('**Font Families:**');
74
+ for (const family of tokens.typography.fontFamilies) {
75
+ lines.push(`- \`${family.slug}\`: ${family.name}`);
76
+ }
77
+ lines.push('');
78
+ }
79
+ return lines.join('\n');
80
+ }
81
+ /**
82
+ * Generates spacing tokens documentation.
83
+ */
84
+ export function generateSpacingPrompt(tokens) {
85
+ if (tokens.spacing.spacingSizes.length === 0) {
86
+ return '';
87
+ }
88
+ const lines = [
89
+ '### Spacing',
90
+ '',
91
+ 'Use format `var:preset|spacing|{slug}` for margin/padding:',
92
+ '',
93
+ ];
94
+ for (const spacing of tokens.spacing.spacingSizes) {
95
+ lines.push(`- \`${spacing.slug}\`: ${spacing.name} (${spacing.size})`);
96
+ }
97
+ return lines.join('\n');
98
+ }
99
+ /**
100
+ * Generates shadow tokens documentation.
101
+ */
102
+ export function generateShadowsPrompt(tokens) {
103
+ if (tokens.shadow.presets.length === 0) {
104
+ return '';
105
+ }
106
+ const lines = [
107
+ '### Shadows',
108
+ '',
109
+ 'Available shadow presets:',
110
+ '',
111
+ ];
112
+ for (const shadow of tokens.shadow.presets) {
113
+ lines.push(`- \`${shadow.slug}\`: ${shadow.name}`);
114
+ }
115
+ return lines.join('\n');
116
+ }
117
+ /**
118
+ * Generates layout documentation.
119
+ */
120
+ export function generateLayoutPrompt(tokens) {
121
+ const lines = ['### Layout', ''];
122
+ if (tokens.layout.contentSize) {
123
+ lines.push(`- Content width: ${tokens.layout.contentSize}`);
124
+ }
125
+ if (tokens.layout.wideSize) {
126
+ lines.push(`- Wide width: ${tokens.layout.wideSize}`);
127
+ }
128
+ if (!tokens.layout.contentSize && !tokens.layout.wideSize) {
129
+ lines.push('*No layout settings defined*');
130
+ }
131
+ return lines.join('\n');
132
+ }
133
+ /**
134
+ * Generates complete design tokens documentation.
135
+ */
136
+ export function generateTokensPrompt(tokens, options) {
137
+ const sections = [
138
+ '## Available Design Tokens',
139
+ '',
140
+ ];
141
+ sections.push(generateColorsPrompt(tokens, options));
142
+ sections.push('');
143
+ const gradients = generateGradientsPrompt(tokens);
144
+ if (gradients) {
145
+ sections.push(gradients);
146
+ sections.push('');
147
+ }
148
+ sections.push(generateTypographyPrompt(tokens, options));
149
+ const spacing = generateSpacingPrompt(tokens);
150
+ if (spacing) {
151
+ sections.push(spacing);
152
+ sections.push('');
153
+ }
154
+ const shadows = generateShadowsPrompt(tokens);
155
+ if (shadows) {
156
+ sections.push(shadows);
157
+ sections.push('');
158
+ }
159
+ sections.push(generateLayoutPrompt(tokens));
160
+ sections.push('');
161
+ // Usage example - different for Ignite mode
162
+ if (options?.igniteMode) {
163
+ sections.push(`
164
+ ### Token Usage
165
+
166
+ For spacing, use the preset format:
167
+ \`\`\`json
168
+ {
169
+ "style": {
170
+ "spacing": {
171
+ "padding": {
172
+ "top": "var:preset|spacing|40",
173
+ "bottom": "var:preset|spacing|40"
174
+ }
175
+ }
176
+ }
177
+ }
178
+ \`\`\`
179
+
180
+ **Remember:** For colors and typography, prefer Section Styles and Typography Presets over direct tokens.
181
+ `);
182
+ }
183
+ else {
184
+ sections.push(`
185
+ ### Example Usage
186
+
187
+ Instead of:
188
+ \`\`\`json
189
+ { "backgroundColor": "#007cba" }
190
+ \`\`\`
191
+
192
+ Use the preset slug:
193
+ \`\`\`json
194
+ { "backgroundColor": "primary" }
195
+ \`\`\`
196
+
197
+ For spacing:
198
+ \`\`\`json
199
+ {
200
+ "style": {
201
+ "spacing": {
202
+ "padding": {
203
+ "top": "var:preset|spacing|40",
204
+ "bottom": "var:preset|spacing|40"
205
+ }
206
+ }
207
+ }
208
+ }
209
+ \`\`\`
210
+ `);
211
+ }
212
+ return sections.join('\n');
213
+ }
214
+ //# sourceMappingURL=tokens-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens-prompt.js","sourceRoot":"","sources":["../src/tokens-prompt.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@10up/block-renderer-prompt-generator",
3
+ "version": "0.1.4",
4
+ "description": "Generate AI prompts for WordPress block generation",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "dependencies": {
19
+ "@10up/block-renderer-core": "0.1.4",
20
+ "@10up/block-renderer-theme-json": "0.1.4",
21
+ "@10up/block-renderer-preferences": "0.1.4",
22
+ "@10up/block-renderer-patterns": "0.1.4"
23
+ },
24
+ "devDependencies": {
25
+ "typescript": "^5.7.0",
26
+ "vitest": "^2.1.0"
27
+ },
28
+ "keywords": [
29
+ "wordpress",
30
+ "blocks",
31
+ "ai",
32
+ "prompt",
33
+ "gutenberg"
34
+ ],
35
+ "license": "MIT",
36
+ "repository": {
37
+ "type": "git",
38
+ "url": "https://github.com/10up/json-block-renderer",
39
+ "directory": "packages/prompt-generator"
40
+ },
41
+ "publishConfig": {
42
+ "access": "public"
43
+ },
44
+ "scripts": {
45
+ "build": "tsc -p tsconfig.build.json",
46
+ "dev": "tsc -p tsconfig.build.json --watch",
47
+ "typecheck": "tsc --noEmit",
48
+ "clean": "rm -rf dist",
49
+ "test": "vitest run",
50
+ "test:watch": "vitest"
51
+ }
52
+ }