@blockslides/ai-context 0.1.3 → 0.1.5
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/dist/index.cjs +132 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +103 -10
- package/dist/index.d.ts +103 -10
- package/dist/index.js +132 -11
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/contexts/v1/column.ts +5 -0
- package/src/contexts/v1/editingRules.ts +11 -0
- package/src/contexts/v1/row.ts +6 -0
- package/src/contexts/v1/slide.ts +6 -0
- package/src/schemas/v1/column.schema.json +8 -1
- package/src/schemas/v1/row.schema.json +8 -1
- package/src/schemas/v1/slide.schema.json +8 -1
package/dist/index.d.cts
CHANGED
|
@@ -75,20 +75,14 @@ declare const all: string;
|
|
|
75
75
|
/**
|
|
76
76
|
* Human- and AI-readable bundle of all v1 JSON Schemas.
|
|
77
77
|
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
* - Tools that want a single text blob containing every schema
|
|
81
|
-
*
|
|
82
|
-
* Each schema is pretty-printed and prefixed with its key name.
|
|
78
|
+
* Wrapped in a top-level <Schemas>…</Schemas> tag, with each schema
|
|
79
|
+
* enclosed in its own <{name}Schema>…</{name}Schema> block.
|
|
83
80
|
*/
|
|
84
81
|
declare const allSchemas: string;
|
|
85
82
|
|
|
86
83
|
/**
|
|
87
|
-
* All v1 context atoms concatenated into a single string
|
|
88
|
-
*
|
|
89
|
-
* Intended for:
|
|
90
|
-
* - LLMs that should know about every supported node type and layout primitive
|
|
91
|
-
* - Power users who want a “maximal” context (structure + nodes + editing rules + sizing)
|
|
84
|
+
* All v1 context atoms concatenated into a single string,
|
|
85
|
+
* wrapped in a top-level <Context>…</Context> block.
|
|
92
86
|
*/
|
|
93
87
|
declare const allContexts: string;
|
|
94
88
|
|
|
@@ -245,6 +239,39 @@ var properties$b = {
|
|
|
245
239
|
"string",
|
|
246
240
|
"null"
|
|
247
241
|
]
|
|
242
|
+
},
|
|
243
|
+
backgroundMode: {
|
|
244
|
+
"enum": [
|
|
245
|
+
"none",
|
|
246
|
+
"color",
|
|
247
|
+
"image",
|
|
248
|
+
"imageOverlay",
|
|
249
|
+
null
|
|
250
|
+
]
|
|
251
|
+
},
|
|
252
|
+
backgroundColor: {
|
|
253
|
+
type: [
|
|
254
|
+
"string",
|
|
255
|
+
"null"
|
|
256
|
+
]
|
|
257
|
+
},
|
|
258
|
+
backgroundImage: {
|
|
259
|
+
type: [
|
|
260
|
+
"string",
|
|
261
|
+
"null"
|
|
262
|
+
]
|
|
263
|
+
},
|
|
264
|
+
backgroundOverlayColor: {
|
|
265
|
+
type: [
|
|
266
|
+
"string",
|
|
267
|
+
"null"
|
|
268
|
+
]
|
|
269
|
+
},
|
|
270
|
+
backgroundOverlayOpacity: {
|
|
271
|
+
type: [
|
|
272
|
+
"number",
|
|
273
|
+
"null"
|
|
274
|
+
]
|
|
248
275
|
}
|
|
249
276
|
},
|
|
250
277
|
additionalProperties: true
|
|
@@ -307,6 +334,39 @@ var properties$a = {
|
|
|
307
334
|
"none",
|
|
308
335
|
null
|
|
309
336
|
]
|
|
337
|
+
},
|
|
338
|
+
backgroundMode: {
|
|
339
|
+
"enum": [
|
|
340
|
+
"none",
|
|
341
|
+
"color",
|
|
342
|
+
"image",
|
|
343
|
+
"imageOverlay",
|
|
344
|
+
null
|
|
345
|
+
]
|
|
346
|
+
},
|
|
347
|
+
backgroundColor: {
|
|
348
|
+
type: [
|
|
349
|
+
"string",
|
|
350
|
+
"null"
|
|
351
|
+
]
|
|
352
|
+
},
|
|
353
|
+
backgroundImage: {
|
|
354
|
+
type: [
|
|
355
|
+
"string",
|
|
356
|
+
"null"
|
|
357
|
+
]
|
|
358
|
+
},
|
|
359
|
+
backgroundOverlayColor: {
|
|
360
|
+
type: [
|
|
361
|
+
"string",
|
|
362
|
+
"null"
|
|
363
|
+
]
|
|
364
|
+
},
|
|
365
|
+
backgroundOverlayOpacity: {
|
|
366
|
+
type: [
|
|
367
|
+
"number",
|
|
368
|
+
"null"
|
|
369
|
+
]
|
|
310
370
|
}
|
|
311
371
|
},
|
|
312
372
|
additionalProperties: true
|
|
@@ -358,6 +418,39 @@ var properties$9 = {
|
|
|
358
418
|
"linkedin-banner",
|
|
359
419
|
null
|
|
360
420
|
]
|
|
421
|
+
},
|
|
422
|
+
backgroundMode: {
|
|
423
|
+
"enum": [
|
|
424
|
+
"none",
|
|
425
|
+
"color",
|
|
426
|
+
"image",
|
|
427
|
+
"imageOverlay",
|
|
428
|
+
null
|
|
429
|
+
]
|
|
430
|
+
},
|
|
431
|
+
backgroundColor: {
|
|
432
|
+
type: [
|
|
433
|
+
"string",
|
|
434
|
+
"null"
|
|
435
|
+
]
|
|
436
|
+
},
|
|
437
|
+
backgroundImage: {
|
|
438
|
+
type: [
|
|
439
|
+
"string",
|
|
440
|
+
"null"
|
|
441
|
+
]
|
|
442
|
+
},
|
|
443
|
+
backgroundOverlayColor: {
|
|
444
|
+
type: [
|
|
445
|
+
"string",
|
|
446
|
+
"null"
|
|
447
|
+
]
|
|
448
|
+
},
|
|
449
|
+
backgroundOverlayOpacity: {
|
|
450
|
+
type: [
|
|
451
|
+
"number",
|
|
452
|
+
"null"
|
|
453
|
+
]
|
|
361
454
|
}
|
|
362
455
|
},
|
|
363
456
|
additionalProperties: true
|
package/dist/index.d.ts
CHANGED
|
@@ -75,20 +75,14 @@ declare const all: string;
|
|
|
75
75
|
/**
|
|
76
76
|
* Human- and AI-readable bundle of all v1 JSON Schemas.
|
|
77
77
|
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
* - Tools that want a single text blob containing every schema
|
|
81
|
-
*
|
|
82
|
-
* Each schema is pretty-printed and prefixed with its key name.
|
|
78
|
+
* Wrapped in a top-level <Schemas>…</Schemas> tag, with each schema
|
|
79
|
+
* enclosed in its own <{name}Schema>…</{name}Schema> block.
|
|
83
80
|
*/
|
|
84
81
|
declare const allSchemas: string;
|
|
85
82
|
|
|
86
83
|
/**
|
|
87
|
-
* All v1 context atoms concatenated into a single string
|
|
88
|
-
*
|
|
89
|
-
* Intended for:
|
|
90
|
-
* - LLMs that should know about every supported node type and layout primitive
|
|
91
|
-
* - Power users who want a “maximal” context (structure + nodes + editing rules + sizing)
|
|
84
|
+
* All v1 context atoms concatenated into a single string,
|
|
85
|
+
* wrapped in a top-level <Context>…</Context> block.
|
|
92
86
|
*/
|
|
93
87
|
declare const allContexts: string;
|
|
94
88
|
|
|
@@ -245,6 +239,39 @@ var properties$b = {
|
|
|
245
239
|
"string",
|
|
246
240
|
"null"
|
|
247
241
|
]
|
|
242
|
+
},
|
|
243
|
+
backgroundMode: {
|
|
244
|
+
"enum": [
|
|
245
|
+
"none",
|
|
246
|
+
"color",
|
|
247
|
+
"image",
|
|
248
|
+
"imageOverlay",
|
|
249
|
+
null
|
|
250
|
+
]
|
|
251
|
+
},
|
|
252
|
+
backgroundColor: {
|
|
253
|
+
type: [
|
|
254
|
+
"string",
|
|
255
|
+
"null"
|
|
256
|
+
]
|
|
257
|
+
},
|
|
258
|
+
backgroundImage: {
|
|
259
|
+
type: [
|
|
260
|
+
"string",
|
|
261
|
+
"null"
|
|
262
|
+
]
|
|
263
|
+
},
|
|
264
|
+
backgroundOverlayColor: {
|
|
265
|
+
type: [
|
|
266
|
+
"string",
|
|
267
|
+
"null"
|
|
268
|
+
]
|
|
269
|
+
},
|
|
270
|
+
backgroundOverlayOpacity: {
|
|
271
|
+
type: [
|
|
272
|
+
"number",
|
|
273
|
+
"null"
|
|
274
|
+
]
|
|
248
275
|
}
|
|
249
276
|
},
|
|
250
277
|
additionalProperties: true
|
|
@@ -307,6 +334,39 @@ var properties$a = {
|
|
|
307
334
|
"none",
|
|
308
335
|
null
|
|
309
336
|
]
|
|
337
|
+
},
|
|
338
|
+
backgroundMode: {
|
|
339
|
+
"enum": [
|
|
340
|
+
"none",
|
|
341
|
+
"color",
|
|
342
|
+
"image",
|
|
343
|
+
"imageOverlay",
|
|
344
|
+
null
|
|
345
|
+
]
|
|
346
|
+
},
|
|
347
|
+
backgroundColor: {
|
|
348
|
+
type: [
|
|
349
|
+
"string",
|
|
350
|
+
"null"
|
|
351
|
+
]
|
|
352
|
+
},
|
|
353
|
+
backgroundImage: {
|
|
354
|
+
type: [
|
|
355
|
+
"string",
|
|
356
|
+
"null"
|
|
357
|
+
]
|
|
358
|
+
},
|
|
359
|
+
backgroundOverlayColor: {
|
|
360
|
+
type: [
|
|
361
|
+
"string",
|
|
362
|
+
"null"
|
|
363
|
+
]
|
|
364
|
+
},
|
|
365
|
+
backgroundOverlayOpacity: {
|
|
366
|
+
type: [
|
|
367
|
+
"number",
|
|
368
|
+
"null"
|
|
369
|
+
]
|
|
310
370
|
}
|
|
311
371
|
},
|
|
312
372
|
additionalProperties: true
|
|
@@ -358,6 +418,39 @@ var properties$9 = {
|
|
|
358
418
|
"linkedin-banner",
|
|
359
419
|
null
|
|
360
420
|
]
|
|
421
|
+
},
|
|
422
|
+
backgroundMode: {
|
|
423
|
+
"enum": [
|
|
424
|
+
"none",
|
|
425
|
+
"color",
|
|
426
|
+
"image",
|
|
427
|
+
"imageOverlay",
|
|
428
|
+
null
|
|
429
|
+
]
|
|
430
|
+
},
|
|
431
|
+
backgroundColor: {
|
|
432
|
+
type: [
|
|
433
|
+
"string",
|
|
434
|
+
"null"
|
|
435
|
+
]
|
|
436
|
+
},
|
|
437
|
+
backgroundImage: {
|
|
438
|
+
type: [
|
|
439
|
+
"string",
|
|
440
|
+
"null"
|
|
441
|
+
]
|
|
442
|
+
},
|
|
443
|
+
backgroundOverlayColor: {
|
|
444
|
+
type: [
|
|
445
|
+
"string",
|
|
446
|
+
"null"
|
|
447
|
+
]
|
|
448
|
+
},
|
|
449
|
+
backgroundOverlayOpacity: {
|
|
450
|
+
type: [
|
|
451
|
+
"number",
|
|
452
|
+
"null"
|
|
453
|
+
]
|
|
361
454
|
}
|
|
362
455
|
},
|
|
363
456
|
additionalProperties: true
|
package/dist/index.js
CHANGED
|
@@ -29,6 +29,7 @@ __export(v1_exports, {
|
|
|
29
29
|
|
|
30
30
|
// src/contexts/v1/core.ts
|
|
31
31
|
var core = `
|
|
32
|
+
<core>
|
|
32
33
|
You are given a BlockSlides document to CREATE or EDIT.
|
|
33
34
|
|
|
34
35
|
Document shape:
|
|
@@ -42,6 +43,7 @@ Rules:
|
|
|
42
43
|
- Use only known node types and valid attrs. Do not invent attributes.
|
|
43
44
|
- Prefer stable references: preserve slide.attrs.id if present.
|
|
44
45
|
- Slides and flyers share the same JSON; flyers are slides sized via attrs and theme.
|
|
46
|
+
</core>
|
|
45
47
|
`.trim();
|
|
46
48
|
|
|
47
49
|
// src/contexts/v1/output.fullDocument.ts
|
|
@@ -54,6 +56,7 @@ Output contract:
|
|
|
54
56
|
|
|
55
57
|
// src/contexts/v1/imageBlock.ts
|
|
56
58
|
var imageBlock = `
|
|
59
|
+
<imageBlock>
|
|
57
60
|
Node: imageBlock
|
|
58
61
|
Attrs:
|
|
59
62
|
- src (required): string (URL)
|
|
@@ -77,14 +80,21 @@ Behavior:
|
|
|
77
80
|
- focus: Cover + radial spotlight at focalX/focalY.
|
|
78
81
|
- pattern: Hide <img>; use tiled background (from src).
|
|
79
82
|
- Do not set unknown attributes. Preserve existing valid attrs.
|
|
83
|
+
</imageBlock>
|
|
80
84
|
`.trim();
|
|
81
85
|
|
|
82
86
|
// src/contexts/v1/row.ts
|
|
83
87
|
var row = `
|
|
88
|
+
<row>
|
|
84
89
|
Node: row
|
|
85
90
|
Attrs:
|
|
86
91
|
- layout (optional): "", "1", "1-1", "2-1", "1-2", "1-1-1", "2-1-1", "1-2-1", "1-1-2", "1-1-1-1"
|
|
87
92
|
- className (optional): string (CSS classes)
|
|
93
|
+
- backgroundMode (optional): "none" | "color" | "image" | "imageOverlay"
|
|
94
|
+
- backgroundColor (optional): string (CSS color for row background)
|
|
95
|
+
- backgroundImage (optional): string (URL for row-level background image)
|
|
96
|
+
- backgroundOverlayColor (optional): string (overlay color when using imageOverlay)
|
|
97
|
+
- backgroundOverlayOpacity (optional): number (0\u20131, overlay opacity)
|
|
88
98
|
|
|
89
99
|
Semantics:
|
|
90
100
|
- Fractions determine relative column flex:
|
|
@@ -94,10 +104,13 @@ Semantics:
|
|
|
94
104
|
- 1-1-1: three equal columns
|
|
95
105
|
- 1-1-1-1: four equal columns
|
|
96
106
|
- Empty layout ("", "1") acts as a single full-width column.
|
|
107
|
+
- Use row backgrounds for horizontal bands (e.g., header strip) instead of attaching everything to the slide.
|
|
108
|
+
</row>
|
|
97
109
|
`.trim();
|
|
98
110
|
|
|
99
111
|
// src/contexts/v1/column.ts
|
|
100
112
|
var column = `
|
|
113
|
+
<column>
|
|
101
114
|
Node: column
|
|
102
115
|
Attrs:
|
|
103
116
|
- className (optional): string
|
|
@@ -105,19 +118,31 @@ Attrs:
|
|
|
105
118
|
- verticalAlign (optional): "top" | "center" | "bottom" (default "top")
|
|
106
119
|
- horizontalAlign (optional): "left" | "center" | "right" | "stretch" (default "left")
|
|
107
120
|
- padding (optional): "none" (future-friendly)
|
|
121
|
+
- backgroundMode (optional): "none" | "color" | "image" | "imageOverlay"
|
|
122
|
+
- backgroundColor (optional): string (CSS color for the column background)
|
|
123
|
+
- backgroundImage (optional): string (URL for column-level background image)
|
|
124
|
+
- backgroundOverlayColor (optional): string (overlay color when using imageOverlay)
|
|
125
|
+
- backgroundOverlayOpacity (optional): number (0\u20131, overlay opacity)
|
|
108
126
|
|
|
109
127
|
Notes:
|
|
110
128
|
- Use className for spacing, colors, typography (e.g., Tailwind).
|
|
111
129
|
- Keep nesting shallow; columns can contain rows or blocks as needed.
|
|
130
|
+
</column>
|
|
112
131
|
`.trim();
|
|
113
132
|
|
|
114
133
|
// src/contexts/v1/slide.ts
|
|
115
134
|
var slide = `
|
|
135
|
+
<slide>
|
|
116
136
|
Node: slide
|
|
117
137
|
Attrs:
|
|
118
138
|
- id (optional): string (stable identifier; preserve if present)
|
|
119
139
|
- className (optional): string (styling)
|
|
120
140
|
- size (optional): "16x9" | "4x3" | "a4-portrait" | "a4-landscape" | "letter-portrait" | "letter-landscape" | "linkedin-banner"
|
|
141
|
+
- backgroundMode (optional): "none" | "color" | "image" | "imageOverlay"
|
|
142
|
+
- backgroundColor (optional): string (CSS color for solid backgrounds)
|
|
143
|
+
- backgroundImage (optional): string (URL for slide-level background image)
|
|
144
|
+
- backgroundOverlayColor (optional): string (color for the overlay when using imageOverlay)
|
|
145
|
+
- backgroundOverlayOpacity (optional): number (0\u20131, opacity for the overlay)
|
|
121
146
|
|
|
122
147
|
Content:
|
|
123
148
|
- slide contains one or more rows.
|
|
@@ -125,35 +150,84 @@ Content:
|
|
|
125
150
|
Notes:
|
|
126
151
|
- Flyers are slides sized for paper (e.g., size: "a4-portrait").
|
|
127
152
|
- Set size to control canvas dimensions; theme applies the exact width/height.
|
|
153
|
+
- For background images, prefer backgroundMode/backgroundImage over Tailwind bg-[url(...)]; the extension will inject the correct CSS.
|
|
154
|
+
</slide>
|
|
128
155
|
`.trim();
|
|
129
156
|
|
|
130
157
|
// src/contexts/v1/style.ts
|
|
131
158
|
var style = `
|
|
159
|
+
<style>
|
|
132
160
|
Styling
|
|
133
161
|
- Prefer using attrs.className for styling (e.g., Tailwind classes).
|
|
134
162
|
- Use enums for canonical behaviors (e.g., imageBlock.layout).
|
|
135
163
|
- When enums are insufficient (spacing, backgrounds), use className.
|
|
164
|
+
</style>
|
|
136
165
|
`.trim();
|
|
137
166
|
|
|
138
167
|
// src/contexts/v1/editingRules.ts
|
|
139
168
|
var editingRules = `
|
|
140
|
-
|
|
169
|
+
<General editing rules>
|
|
141
170
|
- Preserve existing ids and valid attributes. Do not remove or rename known attrs.
|
|
142
171
|
- Use only allowed enum values. Do not invent new enum values.
|
|
143
|
-
- Avoid introducing new
|
|
172
|
+
- Avoid introducing new attributes that are not documented. If styling is needed, prefer className.
|
|
144
173
|
- Keep the document valid: slide > row > column > blocks.
|
|
174
|
+
</General editing rules>
|
|
175
|
+
|
|
176
|
+
<Centering content in a column>
|
|
177
|
+
- Columns are flex containers. Use their alignment attrs instead of per-block hacks.
|
|
178
|
+
- To center all content vertically and horizontally inside a column:
|
|
179
|
+
- Set column.attrs.verticalAlign = "center".
|
|
180
|
+
- Set column.attrs.horizontalAlign = "center".
|
|
181
|
+
- This will apply to headings, paragraphs, imageBlocks, and other blocks inside that column.
|
|
182
|
+
- Example:
|
|
183
|
+
- Before: column.attrs = { verticalAlign: "top", horizontalAlign: "left", padding: "none" }
|
|
184
|
+
- After: column.attrs = { verticalAlign: "center", horizontalAlign: "center", padding: "none" }
|
|
185
|
+
</Centering content in a column>
|
|
186
|
+
|
|
187
|
+
<Backgrounds (slides, rows, columns)>
|
|
188
|
+
- Prefer structured background attrs over raw Tailwind bg-[url(...)] when setting background images.
|
|
189
|
+
- For slide-level backgrounds (hero/flyer):
|
|
190
|
+
- Use slide.attrs.backgroundMode = "color" | "image" | "imageOverlay".
|
|
191
|
+
- For images, set slide.attrs.backgroundImage to the image URL.
|
|
192
|
+
- For overlays, set slide.attrs.backgroundOverlayColor (e.g., "rgba(0,0,0,0.8)") and slide.attrs.backgroundOverlayOpacity (0\u20131).
|
|
193
|
+
- For horizontal bands, use row-level backgrounds (row.attrs.background*).
|
|
194
|
+
- For panel-style sections, use column-level backgrounds (column.attrs.background*).
|
|
195
|
+
- Do not mix multiple background images on the same node; prefer one backgroundMode per slide/row/column and layer additional visuals as imageBlock nodes.
|
|
196
|
+
</Backgrounds (slides, rows, columns)>
|
|
197
|
+
|
|
198
|
+
<Text editing (headings and paragraphs)>
|
|
199
|
+
- Preserve semantic types: do not turn headings into paragraphs or vice versa unless explicitly asked.
|
|
200
|
+
- To change heading level, update heading.attrs.level (1\u20136) without changing its id.
|
|
201
|
+
- To change the text, edit the text nodes inside content, keeping marks and structure when possible.
|
|
202
|
+
- For alignment of text itself, prefer using the textAlign extension (textAlign: "left" | "center" | "right" | "justify") if configured.
|
|
203
|
+
- Do not introduce inline HTML; represent formatting via marks (bold, italic, underline, etc.).
|
|
204
|
+
</Text editing (headings and paragraphs)>
|
|
205
|
+
|
|
206
|
+
<Image blocks>
|
|
207
|
+
- Use imageBlock for rich images; preserve src, assetId, and metadata unless the user explicitly asks to change them.
|
|
208
|
+
- To change the alignment of an imageBlock within its column, set imageBlock.attrs.align to "left", "center", "right", or "stretch".
|
|
209
|
+
- To change how the image is fit, adjust imageBlock.attrs.layout (for example: "cover", "contain", "fill", "focus", or a configured layout key).
|
|
210
|
+
- When centering both text and image in a column, combine:
|
|
211
|
+
- column verticalAlign/horizontalAlign for layout, and
|
|
212
|
+
- imageBlock align for how the image itself sits in the column.
|
|
213
|
+
- Do not invent new layout or align values that are not documented in the schema.
|
|
214
|
+
</Image blocks>
|
|
215
|
+
|
|
145
216
|
`.trim();
|
|
146
217
|
|
|
147
218
|
// src/contexts/v1/sizing.ts
|
|
148
219
|
var sizing = `
|
|
220
|
+
<sizing>
|
|
149
221
|
Sizing
|
|
150
222
|
- Slides and flyers share the same JSON. Flyers are slides sized via slide.attrs.size and theme rules.
|
|
151
223
|
- Allowed sizes: "16x9" | "4x3" | "a4-portrait" | "a4-landscape" | "letter-portrait" | "letter-landscape" | "linkedin-banner".
|
|
152
224
|
- Editors may render with fixed canvases or dynamic mode. The default is fixed; dynamic stretches to container with preserved aspect.
|
|
225
|
+
</sizing>
|
|
153
226
|
`.trim();
|
|
154
227
|
|
|
155
228
|
// src/contexts/v1/blockquote.ts
|
|
156
229
|
var blockquote = `
|
|
230
|
+
<blockquote>
|
|
157
231
|
Node: blockquote
|
|
158
232
|
Attrs:
|
|
159
233
|
- HTML-only; no required JSON attrs beyond optional styling such as className.
|
|
@@ -164,10 +238,12 @@ Content:
|
|
|
164
238
|
Semantics:
|
|
165
239
|
- Use for quoted text or callouts inside a column or row.
|
|
166
240
|
- Styling should be applied via className on the surrounding column/slide, not by inventing new attrs here.
|
|
241
|
+
</blockquote>
|
|
167
242
|
`.trim();
|
|
168
243
|
|
|
169
244
|
// src/contexts/v1/bulletList.ts
|
|
170
245
|
var bulletList = `
|
|
246
|
+
<bulletList>
|
|
171
247
|
Node: bulletList
|
|
172
248
|
Attrs:
|
|
173
249
|
- HTML-only; no required JSON attrs beyond optional styling such as className.
|
|
@@ -179,10 +255,12 @@ Semantics:
|
|
|
179
255
|
- Represents an unordered list rendered as <ul>.
|
|
180
256
|
- Use when you need bullet points inside a column or blockquote.
|
|
181
257
|
- Do not use bulletList as a top-level child of doc; it belongs inside a column/row structure.
|
|
258
|
+
</bulletList>
|
|
182
259
|
`.trim();
|
|
183
260
|
|
|
184
261
|
// src/contexts/v1/codeBlock.ts
|
|
185
262
|
var codeBlock = `
|
|
263
|
+
<codeBlock>
|
|
186
264
|
Node: codeBlock
|
|
187
265
|
Attrs:
|
|
188
266
|
- language (optional): string | null (e.g., "js", "ts", "python").
|
|
@@ -194,10 +272,12 @@ Semantics:
|
|
|
194
272
|
- Renders as <pre><code>\u2026</code></pre>.
|
|
195
273
|
- language controls a CSS class (e.g., "language-js") for syntax highlighting.
|
|
196
274
|
- Use when the user explicitly wants a fenced code block, not inline code in a paragraph.
|
|
275
|
+
</codeBlock>
|
|
197
276
|
`.trim();
|
|
198
277
|
|
|
199
278
|
// src/contexts/v1/hardBreak.ts
|
|
200
279
|
var hardBreak = `
|
|
280
|
+
<hardBreak>
|
|
201
281
|
Node: hardBreak
|
|
202
282
|
Attrs:
|
|
203
283
|
- None (HTML-only); behaves like a manual line break.
|
|
@@ -208,10 +288,12 @@ Content:
|
|
|
208
288
|
Semantics:
|
|
209
289
|
- Renders as <br> and as a newline in plain text exports.
|
|
210
290
|
- Use when the user requests a line break without starting a new paragraph.
|
|
291
|
+
</hardBreak>
|
|
211
292
|
`.trim();
|
|
212
293
|
|
|
213
294
|
// src/contexts/v1/horizontalRule.ts
|
|
214
295
|
var horizontalRule = `
|
|
296
|
+
<horizontalRule>
|
|
215
297
|
Node: horizontalRule
|
|
216
298
|
Attrs:
|
|
217
299
|
- HTML-only; no JSON attrs beyond optional styling via surrounding layout.
|
|
@@ -222,10 +304,12 @@ Content:
|
|
|
222
304
|
Semantics:
|
|
223
305
|
- Renders as <hr>.
|
|
224
306
|
- Use to visually separate sections within a slide (for example, between rows of text).
|
|
307
|
+
</horizontalRule>
|
|
225
308
|
`.trim();
|
|
226
309
|
|
|
227
310
|
// src/contexts/v1/image.ts
|
|
228
311
|
var image = `
|
|
312
|
+
<image>
|
|
229
313
|
Node: image
|
|
230
314
|
Attrs:
|
|
231
315
|
- src (required): string (URL to the image).
|
|
@@ -239,10 +323,12 @@ Content:
|
|
|
239
323
|
Semantics:
|
|
240
324
|
- Renders as a simple <img>, unlike imageBlock which adds rich framing/caption UI.
|
|
241
325
|
- Prefer imageBlock for designed layouts; use image for simple inline images in paragraphs.
|
|
326
|
+
</image>
|
|
242
327
|
`.trim();
|
|
243
328
|
|
|
244
329
|
// src/contexts/v1/heading.ts
|
|
245
330
|
var heading = `
|
|
331
|
+
<heading>
|
|
246
332
|
Node: heading
|
|
247
333
|
Attrs:
|
|
248
334
|
- level (required): 1 | 2 | 3 | 4 | 5 | 6.
|
|
@@ -254,10 +340,12 @@ Semantics:
|
|
|
254
340
|
- Renders as <h1>\u2026<h6> depending on level.
|
|
255
341
|
- Use level 1\u20132 for main slide titles, 3\u20134 for section headings, 5\u20136 for subtle labels.
|
|
256
342
|
- Do not invent other attrs; typography/styling should come from className on columns/slides.
|
|
343
|
+
</heading>
|
|
257
344
|
`.trim();
|
|
258
345
|
|
|
259
346
|
// src/contexts/v1/paragraph.ts
|
|
260
347
|
var paragraph = `
|
|
348
|
+
<paragraph>
|
|
261
349
|
Node: paragraph
|
|
262
350
|
Attrs:
|
|
263
351
|
- HTML-only; no structured JSON attrs beyond optional styling such as className.
|
|
@@ -268,10 +356,12 @@ Content:
|
|
|
268
356
|
Semantics:
|
|
269
357
|
- Default text block inside columns and rows.
|
|
270
358
|
- Multiple paragraphs can be stacked within the same column to create vertical rhythm.
|
|
359
|
+
</paragraph>
|
|
271
360
|
`.trim();
|
|
272
361
|
|
|
273
362
|
// src/contexts/v1/youtube.ts
|
|
274
363
|
var youtube = `
|
|
364
|
+
<youtube>
|
|
275
365
|
Node: youtube
|
|
276
366
|
Attrs:
|
|
277
367
|
- src (required): string (public YouTube URL).
|
|
@@ -286,6 +376,7 @@ Semantics:
|
|
|
286
376
|
- Renders as an embedded YouTube iframe wrapped in a container <div>.
|
|
287
377
|
- Use for video embeds inside a column or row; keep other text in separate paragraphs/columns.
|
|
288
378
|
- Do not embed raw <iframe> HTML directly; always use the youtube node with attrs.
|
|
379
|
+
</youtube>
|
|
289
380
|
`.trim();
|
|
290
381
|
|
|
291
382
|
// src/examples/v1/index.ts
|
|
@@ -456,7 +547,14 @@ var row_schema_default = {
|
|
|
456
547
|
layout: {
|
|
457
548
|
enum: ["", "1", "1-1", "2-1", "1-2", "1-1-1", "2-1-1", "1-2-1", "1-1-2", "1-1-1-1", null]
|
|
458
549
|
},
|
|
459
|
-
className: { type: ["string", "null"] }
|
|
550
|
+
className: { type: ["string", "null"] },
|
|
551
|
+
backgroundMode: {
|
|
552
|
+
enum: ["none", "color", "image", "imageOverlay", null]
|
|
553
|
+
},
|
|
554
|
+
backgroundColor: { type: ["string", "null"] },
|
|
555
|
+
backgroundImage: { type: ["string", "null"] },
|
|
556
|
+
backgroundOverlayColor: { type: ["string", "null"] },
|
|
557
|
+
backgroundOverlayOpacity: { type: ["number", "null"] }
|
|
460
558
|
},
|
|
461
559
|
additionalProperties: true
|
|
462
560
|
}
|
|
@@ -479,7 +577,14 @@ var column_schema_default = {
|
|
|
479
577
|
contentMode: { enum: ["default", null] },
|
|
480
578
|
verticalAlign: { enum: ["top", "center", "bottom", null] },
|
|
481
579
|
horizontalAlign: { enum: ["left", "center", "right", "stretch", null] },
|
|
482
|
-
padding: { enum: ["none", null] }
|
|
580
|
+
padding: { enum: ["none", null] },
|
|
581
|
+
backgroundMode: {
|
|
582
|
+
enum: ["none", "color", "image", "imageOverlay", null]
|
|
583
|
+
},
|
|
584
|
+
backgroundColor: { type: ["string", "null"] },
|
|
585
|
+
backgroundImage: { type: ["string", "null"] },
|
|
586
|
+
backgroundOverlayColor: { type: ["string", "null"] },
|
|
587
|
+
backgroundOverlayOpacity: { type: ["number", "null"] }
|
|
483
588
|
},
|
|
484
589
|
additionalProperties: true
|
|
485
590
|
}
|
|
@@ -511,7 +616,14 @@ var slide_schema_default = {
|
|
|
511
616
|
"linkedin-banner",
|
|
512
617
|
null
|
|
513
618
|
]
|
|
514
|
-
}
|
|
619
|
+
},
|
|
620
|
+
backgroundMode: {
|
|
621
|
+
enum: ["none", "color", "image", "imageOverlay", null]
|
|
622
|
+
},
|
|
623
|
+
backgroundColor: { type: ["string", "null"] },
|
|
624
|
+
backgroundImage: { type: ["string", "null"] },
|
|
625
|
+
backgroundOverlayColor: { type: ["string", "null"] },
|
|
626
|
+
backgroundOverlayOpacity: { type: ["number", "null"] }
|
|
515
627
|
},
|
|
516
628
|
additionalProperties: true
|
|
517
629
|
}
|
|
@@ -688,13 +800,20 @@ var youtube_schema_default = {
|
|
|
688
800
|
};
|
|
689
801
|
|
|
690
802
|
// src/bundles/v1/allSchemas.ts
|
|
691
|
-
var allSchemas =
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
803
|
+
var allSchemas = `
|
|
804
|
+
<Schemas>
|
|
805
|
+
${Object.entries(v1_exports3).map(
|
|
806
|
+
([name, schema]) => `<${name}Schema>
|
|
807
|
+
` + JSON.stringify(schema, null, 2) + `
|
|
808
|
+
</${name}Schema>`
|
|
809
|
+
).join("\n\n")}
|
|
810
|
+
</Schemas>
|
|
811
|
+
`.trim();
|
|
695
812
|
|
|
696
813
|
// src/bundles/v1/allContexts.ts
|
|
697
|
-
var allContexts =
|
|
814
|
+
var allContexts = `
|
|
815
|
+
<Context>
|
|
816
|
+
${[
|
|
698
817
|
core,
|
|
699
818
|
fullDocument,
|
|
700
819
|
slide,
|
|
@@ -713,7 +832,9 @@ var allContexts = [
|
|
|
713
832
|
horizontalRule,
|
|
714
833
|
youtube,
|
|
715
834
|
editingRules
|
|
716
|
-
].join("\n\n")
|
|
835
|
+
].join("\n\n")}
|
|
836
|
+
</Context>
|
|
837
|
+
`.trim();
|
|
717
838
|
|
|
718
839
|
// src/recipes/v1/index.ts
|
|
719
840
|
var v1_exports5 = {};
|