@blockslides/ai-context 0.1.4 → 0.1.6
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 +53 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +99 -0
- package/dist/index.d.ts +99 -0
- package/dist/index.js +53 -3
- 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 +12 -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.cjs
CHANGED
|
@@ -114,6 +114,11 @@ Node: row
|
|
|
114
114
|
Attrs:
|
|
115
115
|
- 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"
|
|
116
116
|
- className (optional): string (CSS classes)
|
|
117
|
+
- backgroundMode (optional): "none" | "color" | "image" | "imageOverlay"
|
|
118
|
+
- backgroundColor (optional): string (CSS color for row background)
|
|
119
|
+
- backgroundImage (optional): string (URL for row-level background image)
|
|
120
|
+
- backgroundOverlayColor (optional): string (overlay color when using imageOverlay)
|
|
121
|
+
- backgroundOverlayOpacity (optional): number (0\u20131, overlay opacity)
|
|
117
122
|
|
|
118
123
|
Semantics:
|
|
119
124
|
- Fractions determine relative column flex:
|
|
@@ -123,6 +128,7 @@ Semantics:
|
|
|
123
128
|
- 1-1-1: three equal columns
|
|
124
129
|
- 1-1-1-1: four equal columns
|
|
125
130
|
- Empty layout ("", "1") acts as a single full-width column.
|
|
131
|
+
- Use row backgrounds for horizontal bands (e.g., header strip) instead of attaching everything to the slide.
|
|
126
132
|
</row>
|
|
127
133
|
`.trim();
|
|
128
134
|
|
|
@@ -136,6 +142,11 @@ Attrs:
|
|
|
136
142
|
- verticalAlign (optional): "top" | "center" | "bottom" (default "top")
|
|
137
143
|
- horizontalAlign (optional): "left" | "center" | "right" | "stretch" (default "left")
|
|
138
144
|
- padding (optional): "none" (future-friendly)
|
|
145
|
+
- backgroundMode (optional): "none" | "color" | "image" | "imageOverlay"
|
|
146
|
+
- backgroundColor (optional): string (CSS color for the column background)
|
|
147
|
+
- backgroundImage (optional): string (URL for column-level background image)
|
|
148
|
+
- backgroundOverlayColor (optional): string (overlay color when using imageOverlay)
|
|
149
|
+
- backgroundOverlayOpacity (optional): number (0\u20131, overlay opacity)
|
|
139
150
|
|
|
140
151
|
Notes:
|
|
141
152
|
- Use className for spacing, colors, typography (e.g., Tailwind).
|
|
@@ -151,6 +162,11 @@ Attrs:
|
|
|
151
162
|
- id (optional): string (stable identifier; preserve if present)
|
|
152
163
|
- className (optional): string (styling)
|
|
153
164
|
- size (optional): "16x9" | "4x3" | "a4-portrait" | "a4-landscape" | "letter-portrait" | "letter-landscape" | "linkedin-banner"
|
|
165
|
+
- backgroundMode (optional): "none" | "color" | "image" | "imageOverlay"
|
|
166
|
+
- backgroundColor (optional): string (CSS color for solid backgrounds)
|
|
167
|
+
- backgroundImage (optional): string (URL for slide-level background image)
|
|
168
|
+
- backgroundOverlayColor (optional): string (color for the overlay when using imageOverlay)
|
|
169
|
+
- backgroundOverlayOpacity (optional): number (0\u20131, opacity for the overlay)
|
|
154
170
|
|
|
155
171
|
Content:
|
|
156
172
|
- slide contains one or more rows.
|
|
@@ -158,6 +174,7 @@ Content:
|
|
|
158
174
|
Notes:
|
|
159
175
|
- Flyers are slides sized for paper (e.g., size: "a4-portrait").
|
|
160
176
|
- Set size to control canvas dimensions; theme applies the exact width/height.
|
|
177
|
+
- For background images, prefer backgroundMode/backgroundImage over Tailwind bg-[url(...)]; the extension will inject the correct CSS.
|
|
161
178
|
</slide>
|
|
162
179
|
`.trim();
|
|
163
180
|
|
|
@@ -191,6 +208,18 @@ var editingRules = `
|
|
|
191
208
|
- After: column.attrs = { verticalAlign: "center", horizontalAlign: "center", padding: "none" }
|
|
192
209
|
</Centering content in a column>
|
|
193
210
|
|
|
211
|
+
<Backgrounds (slides, rows, columns)>
|
|
212
|
+
- Use structured background attrs instead of raw Tailwind bg-[url(...)] when setting background images.
|
|
213
|
+
- If you use bg-[...], the image will not work because the tailwind classes we need have been tree shaken off - instead use the attributes.
|
|
214
|
+
- For slide-level backgrounds (hero/flyer):
|
|
215
|
+
- Use slide.attrs.backgroundMode = "color" | "image" | "imageOverlay".
|
|
216
|
+
- For images, set slide.attrs.backgroundImage to the image URL.
|
|
217
|
+
- For overlays, set slide.attrs.backgroundOverlayColor (e.g., "rgba(0,0,0,0.8)") and slide.attrs.backgroundOverlayOpacity (0\u20131).
|
|
218
|
+
- For horizontal bands, use row-level backgrounds (row.attrs.background*).
|
|
219
|
+
- For panel-style sections, use column-level backgrounds (column.attrs.background*).
|
|
220
|
+
- Do not mix multiple background images on the same node; prefer one backgroundMode per slide/row/column and layer additional visuals as imageBlock nodes.
|
|
221
|
+
</Backgrounds (slides, rows, columns)>
|
|
222
|
+
|
|
194
223
|
<Text editing (headings and paragraphs)>
|
|
195
224
|
- Preserve semantic types: do not turn headings into paragraphs or vice versa unless explicitly asked.
|
|
196
225
|
- To change heading level, update heading.attrs.level (1\u20136) without changing its id.
|
|
@@ -543,7 +572,14 @@ var row_schema_default = {
|
|
|
543
572
|
layout: {
|
|
544
573
|
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]
|
|
545
574
|
},
|
|
546
|
-
className: { type: ["string", "null"] }
|
|
575
|
+
className: { type: ["string", "null"] },
|
|
576
|
+
backgroundMode: {
|
|
577
|
+
enum: ["none", "color", "image", "imageOverlay", null]
|
|
578
|
+
},
|
|
579
|
+
backgroundColor: { type: ["string", "null"] },
|
|
580
|
+
backgroundImage: { type: ["string", "null"] },
|
|
581
|
+
backgroundOverlayColor: { type: ["string", "null"] },
|
|
582
|
+
backgroundOverlayOpacity: { type: ["number", "null"] }
|
|
547
583
|
},
|
|
548
584
|
additionalProperties: true
|
|
549
585
|
}
|
|
@@ -566,7 +602,14 @@ var column_schema_default = {
|
|
|
566
602
|
contentMode: { enum: ["default", null] },
|
|
567
603
|
verticalAlign: { enum: ["top", "center", "bottom", null] },
|
|
568
604
|
horizontalAlign: { enum: ["left", "center", "right", "stretch", null] },
|
|
569
|
-
padding: { enum: ["none", null] }
|
|
605
|
+
padding: { enum: ["none", null] },
|
|
606
|
+
backgroundMode: {
|
|
607
|
+
enum: ["none", "color", "image", "imageOverlay", null]
|
|
608
|
+
},
|
|
609
|
+
backgroundColor: { type: ["string", "null"] },
|
|
610
|
+
backgroundImage: { type: ["string", "null"] },
|
|
611
|
+
backgroundOverlayColor: { type: ["string", "null"] },
|
|
612
|
+
backgroundOverlayOpacity: { type: ["number", "null"] }
|
|
570
613
|
},
|
|
571
614
|
additionalProperties: true
|
|
572
615
|
}
|
|
@@ -598,7 +641,14 @@ var slide_schema_default = {
|
|
|
598
641
|
"linkedin-banner",
|
|
599
642
|
null
|
|
600
643
|
]
|
|
601
|
-
}
|
|
644
|
+
},
|
|
645
|
+
backgroundMode: {
|
|
646
|
+
enum: ["none", "color", "image", "imageOverlay", null]
|
|
647
|
+
},
|
|
648
|
+
backgroundColor: { type: ["string", "null"] },
|
|
649
|
+
backgroundImage: { type: ["string", "null"] },
|
|
650
|
+
backgroundOverlayColor: { type: ["string", "null"] },
|
|
651
|
+
backgroundOverlayOpacity: { type: ["number", "null"] }
|
|
602
652
|
},
|
|
603
653
|
additionalProperties: true
|
|
604
654
|
}
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/contexts/v1/index.ts","../src/contexts/v1/core.ts","../src/contexts/v1/output.fullDocument.ts","../src/contexts/v1/imageBlock.ts","../src/contexts/v1/row.ts","../src/contexts/v1/column.ts","../src/contexts/v1/slide.ts","../src/contexts/v1/style.ts","../src/contexts/v1/editingRules.ts","../src/contexts/v1/sizing.ts","../src/contexts/v1/blockquote.ts","../src/contexts/v1/bulletList.ts","../src/contexts/v1/codeBlock.ts","../src/contexts/v1/hardBreak.ts","../src/contexts/v1/horizontalRule.ts","../src/contexts/v1/image.ts","../src/contexts/v1/heading.ts","../src/contexts/v1/paragraph.ts","../src/contexts/v1/youtube.ts","../src/examples/v1/index.ts","../src/examples/v1/slides.ts","../src/examples/v1/flyers.ts","../src/bundles/v1/index.ts","../src/bundles/v1/minimalCreate.ts","../src/bundles/v1/imageEditing.ts","../src/bundles/v1/all.ts","../src/schemas/v1/index.ts","../src/schemas/v1/imageBlock.schema.json","../src/schemas/v1/row.schema.json","../src/schemas/v1/column.schema.json","../src/schemas/v1/slide.schema.json","../src/schemas/v1/blockquote.schema.json","../src/schemas/v1/bulletList.schema.json","../src/schemas/v1/codeBlock.schema.json","../src/schemas/v1/hardBreak.schema.json","../src/schemas/v1/horizontalRule.schema.json","../src/schemas/v1/image.schema.json","../src/schemas/v1/heading.schema.json","../src/schemas/v1/paragraph.schema.json","../src/schemas/v1/youtube.schema.json","../src/bundles/v1/allSchemas.ts","../src/bundles/v1/allContexts.ts","../src/recipes/v1/index.ts","../src/recipes/v1/createSlide.ts","../src/recipes/v1/addTwoColumns.ts","../src/recipes/v1/editImageToCover.ts"],"sourcesContent":["export * as contextsV1 from \"./contexts/v1\";\nexport * as examplesV1 from \"./examples/v1\";\nexport * as bundlesV1 from \"./bundles/v1\";\nexport * as recipesV1 from \"./recipes/v1\";\nexport * as schemasV1 from \"./schemas/v1\";\nexport * from \"./types/v1\";\n\n","export { core } from \"./core\";\nexport { fullDocument } from \"./output.fullDocument\";\nexport { imageBlock } from \"./imageBlock\";\nexport { row } from \"./row\";\nexport { column } from \"./column\";\nexport { slide } from \"./slide\";\nexport { style } from \"./style\";\nexport { editingRules } from \"./editingRules\";\nexport { sizing } from \"./sizing\";\nexport { blockquote } from \"./blockquote\";\nexport { bulletList } from \"./bulletList\";\nexport { codeBlock } from \"./codeBlock\";\nexport { hardBreak } from \"./hardBreak\";\nexport { horizontalRule } from \"./horizontalRule\";\nexport { image } from \"./image\";\nexport { heading } from \"./heading\";\nexport { paragraph } from \"./paragraph\";\nexport { youtube } from \"./youtube\";\n\n","export const core = `\n<core>\nYou are given a BlockSlides document to CREATE or EDIT.\n\nDocument shape:\n- doc: { type: \"doc\", content: slide[] }\n- slide: { type: \"slide\", attrs?, content: row[] }\n- row: { type: \"row\", attrs?, content: column[] | block[] }\n- column: { type: \"column\", attrs?, content: (block | row)[] }\n- block: includes nodes like paragraph, heading, imageBlock, etc.\n\nRules:\n- Use only known node types and valid attrs. Do not invent attributes.\n- Prefer stable references: preserve slide.attrs.id if present.\n- Slides and flyers share the same JSON; flyers are slides sized via attrs and theme.\n</core>\n`.trim();\n\n\n","export const fullDocument = `\nOutput contract:\n- Return exactly one JSON object representing the ENTIRE document.\n- No prose, no markdown, no code fences, no comments. JSON only.\n- Include all required attrs. Use allowed enum values only.\n`.trim();\n\n\n","export const imageBlock = `\n<imageBlock>\nNode: imageBlock\nAttrs:\n- src (required): string (URL)\n- alt (optional): string\n- caption (optional): string\n- credit (optional): string\n- layout (optional): \"cover\" | \"contain\" | \"fill\" | \"focus\" | \"pattern\"\n- align (optional): \"left\" | \"center\" | \"right\" | \"stretch\" (default \"center\")\n- width (optional): number (px) or string (\"%\"/\"px\")\n- height (optional): number (px) or string (\"%\"/\"px\")\n- fullBleed (optional): boolean (removes radius; stretches width)\n- assetId (optional): string\n- focalX, focalY (optional): 0–100; spotlight position (when relevant)\n\nBehavior:\n- Numbers for width/height are interpreted as pixels.\n- layout:\n - cover: Fill container; crop edges as needed.\n - contain: Fit entirely; may letterbox.\n - fill: Stretch to container (may distort).\n - focus: Cover + radial spotlight at focalX/focalY.\n - pattern: Hide <img>; use tiled background (from src).\n- Do not set unknown attributes. Preserve existing valid attrs.\n</imageBlock>\n`.trim();\n\n\n","export const row = `\n<row>\nNode: row\nAttrs:\n- 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\"\n- className (optional): string (CSS classes)\n\nSemantics:\n- Fractions determine relative column flex:\n - 1-1: two equal columns\n - 2-1: first column is double width\n - 1-2: second column is double width\n - 1-1-1: three equal columns\n - 1-1-1-1: four equal columns\n- Empty layout (\"\", \"1\") acts as a single full-width column.\n</row>\n`.trim();\n\n\n","export const column = `\n<column>\nNode: column\nAttrs:\n- className (optional): string\n- contentMode (optional): \"default\" (future-friendly)\n- verticalAlign (optional): \"top\" | \"center\" | \"bottom\" (default \"top\")\n- horizontalAlign (optional): \"left\" | \"center\" | \"right\" | \"stretch\" (default \"left\")\n- padding (optional): \"none\" (future-friendly)\n\nNotes:\n- Use className for spacing, colors, typography (e.g., Tailwind).\n- Keep nesting shallow; columns can contain rows or blocks as needed.\n</column>\n`.trim();\n\n\n","export const slide = `\n<slide>\nNode: slide\nAttrs:\n- id (optional): string (stable identifier; preserve if present)\n- className (optional): string (styling)\n- size (optional): \"16x9\" | \"4x3\" | \"a4-portrait\" | \"a4-landscape\" | \"letter-portrait\" | \"letter-landscape\" | \"linkedin-banner\"\n\nContent:\n- slide contains one or more rows.\n\nNotes:\n- Flyers are slides sized for paper (e.g., size: \"a4-portrait\").\n- Set size to control canvas dimensions; theme applies the exact width/height.\n</slide>\n`.trim();\n\n\n","export const style = `\n<style>\nStyling\n- Prefer using attrs.className for styling (e.g., Tailwind classes).\n- Use enums for canonical behaviors (e.g., imageBlock.layout).\n- When enums are insufficient (spacing, backgrounds), use className.\n</style>\n`.trim();\n\n\n","export const editingRules = `\n<General editing rules>\n- Preserve existing ids and valid attributes. Do not remove or rename known attrs.\n- Use only allowed enum values. Do not invent new enum values.\n- Avoid introducing new attributes that are not documented. If styling is needed, prefer className.\n- Keep the document valid: slide > row > column > blocks.\n</General editing rules>\n\n<Centering content in a column>\n- Columns are flex containers. Use their alignment attrs instead of per-block hacks.\n- To center all content vertically and horizontally inside a column:\n - Set column.attrs.verticalAlign = \"center\".\n - Set column.attrs.horizontalAlign = \"center\".\n- This will apply to headings, paragraphs, imageBlocks, and other blocks inside that column.\n- Example:\n - Before: column.attrs = { verticalAlign: \"top\", horizontalAlign: \"left\", padding: \"none\" }\n - After: column.attrs = { verticalAlign: \"center\", horizontalAlign: \"center\", padding: \"none\" }\n</Centering content in a column>\n\n<Text editing (headings and paragraphs)>\n- Preserve semantic types: do not turn headings into paragraphs or vice versa unless explicitly asked.\n- To change heading level, update heading.attrs.level (1–6) without changing its id.\n- To change the text, edit the text nodes inside content, keeping marks and structure when possible.\n- For alignment of text itself, prefer using the textAlign extension (textAlign: \"left\" | \"center\" | \"right\" | \"justify\") if configured.\n- Do not introduce inline HTML; represent formatting via marks (bold, italic, underline, etc.).\n</Text editing (headings and paragraphs)>\n\n<Image blocks>\n- Use imageBlock for rich images; preserve src, assetId, and metadata unless the user explicitly asks to change them.\n- To change the alignment of an imageBlock within its column, set imageBlock.attrs.align to \"left\", \"center\", \"right\", or \"stretch\".\n- To change how the image is fit, adjust imageBlock.attrs.layout (for example: \"cover\", \"contain\", \"fill\", \"focus\", or a configured layout key).\n- When centering both text and image in a column, combine:\n - column verticalAlign/horizontalAlign for layout, and\n - imageBlock align for how the image itself sits in the column.\n- Do not invent new layout or align values that are not documented in the schema.\n</Image blocks>\n\n`.trim();\n\n\n","export const sizing = `\n<sizing>\nSizing\n- Slides and flyers share the same JSON. Flyers are slides sized via slide.attrs.size and theme rules.\n- Allowed sizes: \"16x9\" | \"4x3\" | \"a4-portrait\" | \"a4-landscape\" | \"letter-portrait\" | \"letter-landscape\" | \"linkedin-banner\".\n- Editors may render with fixed canvases or dynamic mode. The default is fixed; dynamic stretches to container with preserved aspect.\n</sizing>\n`.trim();\n\n\n","export const blockquote = `\n<blockquote>\nNode: blockquote\nAttrs:\n- HTML-only; no required JSON attrs beyond optional styling such as className.\n\nContent:\n- One or more block nodes (typically paragraphs, headings, lists).\n\nSemantics:\n- Use for quoted text or callouts inside a column or row.\n- Styling should be applied via className on the surrounding column/slide, not by inventing new attrs here.\n</blockquote>\n`.trim();\n\n\n","export const bulletList = `\n<bulletList>\nNode: bulletList\nAttrs:\n- HTML-only; no required JSON attrs beyond optional styling such as className.\n\nContent:\n- One or more list item nodes (listItem) that contain paragraphs or inline content.\n\nSemantics:\n- Represents an unordered list rendered as <ul>.\n- Use when you need bullet points inside a column or blockquote.\n- Do not use bulletList as a top-level child of doc; it belongs inside a column/row structure.\n</bulletList>\n`.trim();\n\n\n","export const codeBlock = `\n<codeBlock>\nNode: codeBlock\nAttrs:\n- language (optional): string | null (e.g., \"js\", \"ts\", \"python\").\n\nContent:\n- Plain text only (no child nodes); used for preformatted code samples.\n\nSemantics:\n- Renders as <pre><code>…</code></pre>.\n- language controls a CSS class (e.g., \"language-js\") for syntax highlighting.\n- Use when the user explicitly wants a fenced code block, not inline code in a paragraph.\n</codeBlock>\n`.trim();\n\n\n","export const hardBreak = `\n<hardBreak>\nNode: hardBreak\nAttrs:\n- None (HTML-only); behaves like a manual line break.\n\nContent:\n- Inline-only; used within paragraphs or headings.\n\nSemantics:\n- Renders as <br> and as a newline in plain text exports.\n- Use when the user requests a line break without starting a new paragraph.\n</hardBreak>\n`.trim();\n\n\n","export const horizontalRule = `\n<horizontalRule>\nNode: horizontalRule\nAttrs:\n- HTML-only; no JSON attrs beyond optional styling via surrounding layout.\n\nContent:\n- No children; this is a self-contained separator.\n\nSemantics:\n- Renders as <hr>.\n- Use to visually separate sections within a slide (for example, between rows of text).\n</horizontalRule>\n`.trim();\n\n\n","export const image = `\n<image>\nNode: image\nAttrs:\n- src (required): string (URL to the image).\n- alt (optional): string (accessibility text).\n- title (optional): string (tooltip / caption).\n- width, height (optional): numbers (px) used as hints for rendering.\n\nContent:\n- No children; this is an atomic inline or block-level image node depending on editor configuration.\n\nSemantics:\n- Renders as a simple <img>, unlike imageBlock which adds rich framing/caption UI.\n- Prefer imageBlock for designed layouts; use image for simple inline images in paragraphs.\n</image>\n`.trim();\n\n\n","export const heading = `\n<heading>\nNode: heading\nAttrs:\n- level (required): 1 | 2 | 3 | 4 | 5 | 6.\n\nContent:\n- Inline content (text, marks, inline nodes).\n\nSemantics:\n- Renders as <h1>…<h6> depending on level.\n- Use level 1–2 for main slide titles, 3–4 for section headings, 5–6 for subtle labels.\n- Do not invent other attrs; typography/styling should come from className on columns/slides.\n</heading>\n`.trim();\n\n\n","export const paragraph = `\n<paragraph>\nNode: paragraph\nAttrs:\n- HTML-only; no structured JSON attrs beyond optional styling such as className.\n\nContent:\n- Inline content (text with marks, inline nodes such as image or hardBreak).\n\nSemantics:\n- Default text block inside columns and rows.\n- Multiple paragraphs can be stacked within the same column to create vertical rhythm.\n</paragraph>\n`.trim();\n\n\n","export const youtube = `\n<youtube>\nNode: youtube\nAttrs:\n- src (required): string (public YouTube URL).\n- start (optional): number (start time in seconds).\n- width (optional): number (frame width in px).\n- height (optional): number (frame height in px).\n\nContent:\n- No children; this is an atomic embed node.\n\nSemantics:\n- Renders as an embedded YouTube iframe wrapped in a container <div>.\n- Use for video embeds inside a column or row; keep other text in separate paragraphs/columns.\n- Do not embed raw <iframe> HTML directly; always use the youtube node with attrs.\n</youtube>\n`.trim();\n\n\n","export { slides } from \"./slides\";\nexport { flyers } from \"./flyers\";\n\n\n","export const slides = `\nExamples: Slides (full-document output)\n\n{\n \"type\": \"doc\",\n \"content\": [\n {\n \"type\": \"slide\",\n \"attrs\": { \"id\": \"intro\", \"size\": \"16x9\" },\n \"content\": [\n {\n \"type\": \"row\",\n \"attrs\": { \"layout\": \"1-1\" },\n \"content\": [\n { \"type\": \"column\", \"content\": [\n { \"type\": \"heading\", \"attrs\": { \"level\": 2 }, \"content\": [{ \"type\": \"text\", \"text\": \"Welcome\" }] }\n ]},\n { \"type\": \"column\", \"content\": [\n { \"type\": \"imageBlock\", \"attrs\": { \"src\": \"https://picsum.photos/seed/welcome/1200/800\", \"layout\": \"cover\", \"align\": \"center\" } }\n ]}\n ]\n }\n ]\n }\n ]\n}\n\n/* more-slide-examples to be added here */\n`.trim();\n\n\n","export const flyers = `\nExamples: Flyers (A4 slides; full-document output)\n\n{\n \"type\": \"doc\",\n \"content\": [\n {\n \"type\": \"slide\",\n \"attrs\": { \"id\": \"a4-flyer\", \"size\": \"a4-portrait\", \"className\": \"bg-white text-slate-900\" },\n \"content\": [\n {\n \"type\": \"row\",\n \"attrs\": { \"layout\": \"1\" },\n \"content\": [\n { \"type\": \"column\", \"content\": [\n { \"type\": \"heading\", \"attrs\": { \"level\": 2 }, \"content\": [{ \"type\": \"text\", \"text\": \"Event Title\" }] },\n { \"type\": \"paragraph\", \"content\": [{ \"type\": \"text\", \"text\": \"Date · Location\" }] },\n { \"type\": \"imageBlock\", \"attrs\": { \"src\": \"https://picsum.photos/seed/a4/1600/1000\", \"layout\": \"contain\", \"align\": \"center\", \"height\": 320 } }\n ]}\n ]\n }\n ]\n }\n ]\n}\n\n/* more-flyer-examples to be added here */\n`.trim();\n\n\n","export { minimalCreate } from \"./minimalCreate\";\nexport { imageEditing } from \"./imageEditing\";\nexport { all } from \"./all\";\nexport { allSchemas } from \"./allSchemas\";\nexport { allContexts } from \"./allContexts\";\n\n","import { core, fullDocument, slide, row, column, style } from \"../../contexts/v1\";\n\nexport const minimalCreate = [core, fullDocument, slide, row, column, style].join(\"\\n\\n\");\n\n\n","import { core, fullDocument, imageBlock, editingRules } from \"../../contexts/v1\";\n\nexport const imageEditing = [core, fullDocument, imageBlock, editingRules].join(\"\\n\\n\");\n\n\n","import * as ctx from \"../../contexts/v1\";\n\nexport const all = [\n ctx.core,\n ctx.fullDocument,\n ctx.slide,\n ctx.row,\n ctx.column,\n ctx.style,\n ctx.sizing,\n // Core content blocks and media\n ctx.imageBlock,\n ctx.blockquote,\n ctx.bulletList,\n ctx.heading,\n ctx.paragraph,\n ctx.image,\n ctx.codeBlock,\n ctx.hardBreak,\n ctx.horizontalRule,\n ctx.youtube,\n // Editing behavior\n ctx.editingRules,\n].join(\"\\n\\n\");\n\n\n","export { default as imageBlock } from \"./imageBlock.schema.json\";\nexport { default as row } from \"./row.schema.json\";\nexport { default as column } from \"./column.schema.json\";\nexport { default as slide } from \"./slide.schema.json\";\nexport { default as blockquote } from \"./blockquote.schema.json\";\nexport { default as bulletList } from \"./bulletList.schema.json\";\nexport { default as codeBlock } from \"./codeBlock.schema.json\";\nexport { default as hardBreak } from \"./hardBreak.schema.json\";\nexport { default as horizontalRule } from \"./horizontalRule.schema.json\";\nexport { default as image } from \"./image.schema.json\";\nexport { default as heading } from \"./heading.schema.json\";\nexport { default as paragraph } from \"./paragraph.schema.json\";\nexport { default as youtube } from \"./youtube.schema.json\";\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"imageBlock\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"imageBlock\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"src\": { \"type\": \"string\", \"minLength\": 1 },\n \"alt\": { \"type\": \"string\" },\n \"caption\": { \"type\": \"string\" },\n \"credit\": { \"type\": \"string\" },\n \"layout\": { \"enum\": [\"cover\", \"contain\", \"fill\", \"focus\", \"pattern\", null] },\n \"align\": { \"enum\": [\"left\", \"center\", \"right\", \"stretch\", null] },\n \"width\": { \"type\": [\"number\", \"string\", \"null\"] },\n \"height\": { \"type\": [\"number\", \"string\", \"null\"] },\n \"fullBleed\": { \"type\": \"boolean\" },\n \"assetId\": { \"type\": [\"string\", \"null\"] },\n \"focalX\": { \"type\": [\"number\", \"null\"], \"minimum\": 0, \"maximum\": 100 },\n \"focalY\": { \"type\": [\"number\", \"null\"], \"minimum\": 0, \"maximum\": 100 }\n },\n \"required\": [\"src\"],\n \"additionalProperties\": false\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"row\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"row\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"layout\": {\n \"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]\n },\n \"className\": { \"type\": [\"string\", \"null\"] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"column\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"column\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"className\": { \"type\": [\"string\", \"null\"] },\n \"contentMode\": { \"enum\": [\"default\", null] },\n \"verticalAlign\": { \"enum\": [\"top\", \"center\", \"bottom\", null] },\n \"horizontalAlign\": { \"enum\": [\"left\", \"center\", \"right\", \"stretch\", null] },\n \"padding\": { \"enum\": [\"none\", null] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"slide\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"slide\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": { \"type\": [\"string\", \"null\"] },\n \"className\": { \"type\": [\"string\", \"null\"] },\n \"size\": {\n \"enum\": [\n \"16x9\",\n \"4x3\",\n \"a4-portrait\",\n \"a4-landscape\",\n \"letter-portrait\",\n \"letter-landscape\",\n \"linkedin-banner\",\n null\n ]\n }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"blockquote\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"blockquote\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"bulletList\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"bulletList\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"codeBlock\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"codeBlock\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"language\": { \"type\": [\"string\", \"null\"] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"hardBreak\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"hardBreak\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"horizontalRule\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"horizontalRule\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"image\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"image\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"src\": { \"type\": [\"string\", \"null\"] },\n \"alt\": { \"type\": [\"string\", \"null\"] },\n \"title\": { \"type\": [\"string\", \"null\"] },\n \"width\": { \"type\": [\"number\", \"null\"] },\n \"height\": { \"type\": [\"number\", \"null\"] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"heading\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"heading\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"level\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 6\n }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"paragraph\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"paragraph\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"youtube\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"youtube\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"src\": { \"type\": [\"string\", \"null\"] },\n \"start\": { \"type\": \"number\" },\n \"width\": { \"type\": \"number\" },\n \"height\": { \"type\": \"number\" }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","import * as schemas from \"../../schemas/v1\";\n\n/**\n * Human- and AI-readable bundle of all v1 JSON Schemas.\n *\n * Wrapped in a top-level <Schemas>…</Schemas> tag, with each schema\n * enclosed in its own <{name}Schema>…</{name}Schema> block.\n */\nexport const allSchemas = `\n<Schemas>\n${Object.entries(schemas)\n .map(\n ([name, schema]) =>\n `<${name}Schema>\\n` +\n JSON.stringify(schema as unknown, null, 2) +\n `\\n</${name}Schema>`\n )\n .join(\"\\n\\n\")}\n</Schemas>\n`.trim();\n\n\n\n","import * as ctx from \"../../contexts/v1\";\n\n/**\n * All v1 context atoms concatenated into a single string,\n * wrapped in a top-level <Context>…</Context> block.\n */\nexport const allContexts = `\n<Context>\n${[\n ctx.core,\n ctx.fullDocument,\n ctx.slide,\n ctx.row,\n ctx.column,\n ctx.style,\n ctx.sizing,\n ctx.imageBlock,\n ctx.blockquote,\n ctx.bulletList,\n ctx.heading,\n ctx.paragraph,\n ctx.image,\n ctx.codeBlock,\n ctx.hardBreak,\n ctx.horizontalRule,\n ctx.youtube,\n ctx.editingRules,\n].join(\"\\n\\n\")}\n</Context>\n`.trim();\n\n\n\n","export { createSlide } from \"./createSlide\";\nexport { addTwoColumns } from \"./addTwoColumns\";\nexport { editImageToCover } from \"./editImageToCover\";\n\n\n","import { core, fullDocument, slide, row, column } from \"../../contexts/v1\";\n\nexport const createSlide = [\n core,\n fullDocument,\n slide,\n row,\n column,\n `\nReturn a single JSON document that creates one 16x9 slide with a 1-1 row:\n{\n \"type\": \"doc\",\n \"content\": [\n {\n \"type\": \"slide\",\n \"attrs\": { \"size\": \"16x9\" },\n \"content\": [\n { \"type\": \"row\", \"attrs\": { \"layout\": \"1-1\" }, \"content\": [\n { \"type\": \"column\", \"content\": [{ \"type\": \"paragraph\", \"content\": [{ \"type\": \"text\", \"text\": \"Left\" }] }] },\n { \"type\": \"column\", \"content\": [{ \"type\": \"paragraph\", \"content\": [{ \"type\": \"text\", \"text\": \"Right\" }] }] }\n ] }\n ]\n }\n ]\n}\n`.trim(),\n].join(\"\\n\\n\");\n\n\n","import { core, fullDocument, row, column } from \"../../contexts/v1\";\n\nexport const addTwoColumns = [\n core,\n fullDocument,\n row,\n column,\n `\nReturn a full document where the first slide contains a row with layout \"1-1\" and two columns with simple text paragraphs.\n`.trim(),\n].join(\"\\n\\n\");\n\n\n","import { core, fullDocument, imageBlock, editingRules } from \"../../contexts/v1\";\n\nexport const editImageToCover = [\n core,\n fullDocument,\n imageBlock,\n editingRules,\n `\nUpdate an existing imageBlock on the first slide so it uses layout \"cover\" and align \"center\". Preserve all other attributes.\n`.trim(),\n].join(\"\\n\\n\");\n\n\n"],"mappings":"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","names":["v1_exports","v1_exports","v1_exports","v1_exports","v1_exports","v1_exports"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/contexts/v1/index.ts","../src/contexts/v1/core.ts","../src/contexts/v1/output.fullDocument.ts","../src/contexts/v1/imageBlock.ts","../src/contexts/v1/row.ts","../src/contexts/v1/column.ts","../src/contexts/v1/slide.ts","../src/contexts/v1/style.ts","../src/contexts/v1/editingRules.ts","../src/contexts/v1/sizing.ts","../src/contexts/v1/blockquote.ts","../src/contexts/v1/bulletList.ts","../src/contexts/v1/codeBlock.ts","../src/contexts/v1/hardBreak.ts","../src/contexts/v1/horizontalRule.ts","../src/contexts/v1/image.ts","../src/contexts/v1/heading.ts","../src/contexts/v1/paragraph.ts","../src/contexts/v1/youtube.ts","../src/examples/v1/index.ts","../src/examples/v1/slides.ts","../src/examples/v1/flyers.ts","../src/bundles/v1/index.ts","../src/bundles/v1/minimalCreate.ts","../src/bundles/v1/imageEditing.ts","../src/bundles/v1/all.ts","../src/schemas/v1/index.ts","../src/schemas/v1/imageBlock.schema.json","../src/schemas/v1/row.schema.json","../src/schemas/v1/column.schema.json","../src/schemas/v1/slide.schema.json","../src/schemas/v1/blockquote.schema.json","../src/schemas/v1/bulletList.schema.json","../src/schemas/v1/codeBlock.schema.json","../src/schemas/v1/hardBreak.schema.json","../src/schemas/v1/horizontalRule.schema.json","../src/schemas/v1/image.schema.json","../src/schemas/v1/heading.schema.json","../src/schemas/v1/paragraph.schema.json","../src/schemas/v1/youtube.schema.json","../src/bundles/v1/allSchemas.ts","../src/bundles/v1/allContexts.ts","../src/recipes/v1/index.ts","../src/recipes/v1/createSlide.ts","../src/recipes/v1/addTwoColumns.ts","../src/recipes/v1/editImageToCover.ts"],"sourcesContent":["export * as contextsV1 from \"./contexts/v1\";\nexport * as examplesV1 from \"./examples/v1\";\nexport * as bundlesV1 from \"./bundles/v1\";\nexport * as recipesV1 from \"./recipes/v1\";\nexport * as schemasV1 from \"./schemas/v1\";\nexport * from \"./types/v1\";\n\n","export { core } from \"./core\";\nexport { fullDocument } from \"./output.fullDocument\";\nexport { imageBlock } from \"./imageBlock\";\nexport { row } from \"./row\";\nexport { column } from \"./column\";\nexport { slide } from \"./slide\";\nexport { style } from \"./style\";\nexport { editingRules } from \"./editingRules\";\nexport { sizing } from \"./sizing\";\nexport { blockquote } from \"./blockquote\";\nexport { bulletList } from \"./bulletList\";\nexport { codeBlock } from \"./codeBlock\";\nexport { hardBreak } from \"./hardBreak\";\nexport { horizontalRule } from \"./horizontalRule\";\nexport { image } from \"./image\";\nexport { heading } from \"./heading\";\nexport { paragraph } from \"./paragraph\";\nexport { youtube } from \"./youtube\";\n\n","export const core = `\n<core>\nYou are given a BlockSlides document to CREATE or EDIT.\n\nDocument shape:\n- doc: { type: \"doc\", content: slide[] }\n- slide: { type: \"slide\", attrs?, content: row[] }\n- row: { type: \"row\", attrs?, content: column[] | block[] }\n- column: { type: \"column\", attrs?, content: (block | row)[] }\n- block: includes nodes like paragraph, heading, imageBlock, etc.\n\nRules:\n- Use only known node types and valid attrs. Do not invent attributes.\n- Prefer stable references: preserve slide.attrs.id if present.\n- Slides and flyers share the same JSON; flyers are slides sized via attrs and theme.\n</core>\n`.trim();\n\n\n","export const fullDocument = `\nOutput contract:\n- Return exactly one JSON object representing the ENTIRE document.\n- No prose, no markdown, no code fences, no comments. JSON only.\n- Include all required attrs. Use allowed enum values only.\n`.trim();\n\n\n","export const imageBlock = `\n<imageBlock>\nNode: imageBlock\nAttrs:\n- src (required): string (URL)\n- alt (optional): string\n- caption (optional): string\n- credit (optional): string\n- layout (optional): \"cover\" | \"contain\" | \"fill\" | \"focus\" | \"pattern\"\n- align (optional): \"left\" | \"center\" | \"right\" | \"stretch\" (default \"center\")\n- width (optional): number (px) or string (\"%\"/\"px\")\n- height (optional): number (px) or string (\"%\"/\"px\")\n- fullBleed (optional): boolean (removes radius; stretches width)\n- assetId (optional): string\n- focalX, focalY (optional): 0–100; spotlight position (when relevant)\n\nBehavior:\n- Numbers for width/height are interpreted as pixels.\n- layout:\n - cover: Fill container; crop edges as needed.\n - contain: Fit entirely; may letterbox.\n - fill: Stretch to container (may distort).\n - focus: Cover + radial spotlight at focalX/focalY.\n - pattern: Hide <img>; use tiled background (from src).\n- Do not set unknown attributes. Preserve existing valid attrs.\n</imageBlock>\n`.trim();\n\n\n","export const row = `\n<row>\nNode: row\nAttrs:\n- 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\"\n- className (optional): string (CSS classes)\n- backgroundMode (optional): \"none\" | \"color\" | \"image\" | \"imageOverlay\"\n- backgroundColor (optional): string (CSS color for row background)\n- backgroundImage (optional): string (URL for row-level background image)\n- backgroundOverlayColor (optional): string (overlay color when using imageOverlay)\n- backgroundOverlayOpacity (optional): number (0–1, overlay opacity)\n\nSemantics:\n- Fractions determine relative column flex:\n - 1-1: two equal columns\n - 2-1: first column is double width\n - 1-2: second column is double width\n - 1-1-1: three equal columns\n - 1-1-1-1: four equal columns\n- Empty layout (\"\", \"1\") acts as a single full-width column.\n- Use row backgrounds for horizontal bands (e.g., header strip) instead of attaching everything to the slide.\n</row>\n`.trim();\n\n\n","export const column = `\n<column>\nNode: column\nAttrs:\n- className (optional): string\n- contentMode (optional): \"default\" (future-friendly)\n- verticalAlign (optional): \"top\" | \"center\" | \"bottom\" (default \"top\")\n- horizontalAlign (optional): \"left\" | \"center\" | \"right\" | \"stretch\" (default \"left\")\n- padding (optional): \"none\" (future-friendly)\n- backgroundMode (optional): \"none\" | \"color\" | \"image\" | \"imageOverlay\"\n- backgroundColor (optional): string (CSS color for the column background)\n- backgroundImage (optional): string (URL for column-level background image)\n- backgroundOverlayColor (optional): string (overlay color when using imageOverlay)\n- backgroundOverlayOpacity (optional): number (0–1, overlay opacity)\n\nNotes:\n- Use className for spacing, colors, typography (e.g., Tailwind).\n- Keep nesting shallow; columns can contain rows or blocks as needed.\n</column>\n`.trim();\n\n\n","export const slide = `\n<slide>\nNode: slide\nAttrs:\n- id (optional): string (stable identifier; preserve if present)\n- className (optional): string (styling)\n- size (optional): \"16x9\" | \"4x3\" | \"a4-portrait\" | \"a4-landscape\" | \"letter-portrait\" | \"letter-landscape\" | \"linkedin-banner\"\n- backgroundMode (optional): \"none\" | \"color\" | \"image\" | \"imageOverlay\"\n- backgroundColor (optional): string (CSS color for solid backgrounds)\n- backgroundImage (optional): string (URL for slide-level background image)\n- backgroundOverlayColor (optional): string (color for the overlay when using imageOverlay)\n- backgroundOverlayOpacity (optional): number (0–1, opacity for the overlay)\n\nContent:\n- slide contains one or more rows.\n\nNotes:\n- Flyers are slides sized for paper (e.g., size: \"a4-portrait\").\n- Set size to control canvas dimensions; theme applies the exact width/height.\n- For background images, prefer backgroundMode/backgroundImage over Tailwind bg-[url(...)]; the extension will inject the correct CSS.\n</slide>\n`.trim();\n\n\n","export const style = `\n<style>\nStyling\n- Prefer using attrs.className for styling (e.g., Tailwind classes).\n- Use enums for canonical behaviors (e.g., imageBlock.layout).\n- When enums are insufficient (spacing, backgrounds), use className.\n</style>\n`.trim();\n\n\n","export const editingRules = `\n<General editing rules>\n- Preserve existing ids and valid attributes. Do not remove or rename known attrs.\n- Use only allowed enum values. Do not invent new enum values.\n- Avoid introducing new attributes that are not documented. If styling is needed, prefer className.\n- Keep the document valid: slide > row > column > blocks.\n</General editing rules>\n\n<Centering content in a column>\n- Columns are flex containers. Use their alignment attrs instead of per-block hacks.\n- To center all content vertically and horizontally inside a column:\n - Set column.attrs.verticalAlign = \"center\".\n - Set column.attrs.horizontalAlign = \"center\".\n- This will apply to headings, paragraphs, imageBlocks, and other blocks inside that column.\n- Example:\n - Before: column.attrs = { verticalAlign: \"top\", horizontalAlign: \"left\", padding: \"none\" }\n - After: column.attrs = { verticalAlign: \"center\", horizontalAlign: \"center\", padding: \"none\" }\n</Centering content in a column>\n\n<Backgrounds (slides, rows, columns)>\n- Use structured background attrs instead of raw Tailwind bg-[url(...)] when setting background images.\n- If you use bg-[...], the image will not work because the tailwind classes we need have been tree shaken off - instead use the attributes.\n- For slide-level backgrounds (hero/flyer):\n - Use slide.attrs.backgroundMode = \"color\" | \"image\" | \"imageOverlay\".\n - For images, set slide.attrs.backgroundImage to the image URL.\n - For overlays, set slide.attrs.backgroundOverlayColor (e.g., \"rgba(0,0,0,0.8)\") and slide.attrs.backgroundOverlayOpacity (0–1).\n- For horizontal bands, use row-level backgrounds (row.attrs.background*).\n- For panel-style sections, use column-level backgrounds (column.attrs.background*).\n- Do not mix multiple background images on the same node; prefer one backgroundMode per slide/row/column and layer additional visuals as imageBlock nodes.\n</Backgrounds (slides, rows, columns)>\n\n<Text editing (headings and paragraphs)>\n- Preserve semantic types: do not turn headings into paragraphs or vice versa unless explicitly asked.\n- To change heading level, update heading.attrs.level (1–6) without changing its id.\n- To change the text, edit the text nodes inside content, keeping marks and structure when possible.\n- For alignment of text itself, prefer using the textAlign extension (textAlign: \"left\" | \"center\" | \"right\" | \"justify\") if configured.\n- Do not introduce inline HTML; represent formatting via marks (bold, italic, underline, etc.).\n</Text editing (headings and paragraphs)>\n\n<Image blocks>\n- Use imageBlock for rich images; preserve src, assetId, and metadata unless the user explicitly asks to change them.\n- To change the alignment of an imageBlock within its column, set imageBlock.attrs.align to \"left\", \"center\", \"right\", or \"stretch\".\n- To change how the image is fit, adjust imageBlock.attrs.layout (for example: \"cover\", \"contain\", \"fill\", \"focus\", or a configured layout key).\n- When centering both text and image in a column, combine:\n - column verticalAlign/horizontalAlign for layout, and\n - imageBlock align for how the image itself sits in the column.\n- Do not invent new layout or align values that are not documented in the schema.\n</Image blocks>\n\n`.trim();\n\n\n","export const sizing = `\n<sizing>\nSizing\n- Slides and flyers share the same JSON. Flyers are slides sized via slide.attrs.size and theme rules.\n- Allowed sizes: \"16x9\" | \"4x3\" | \"a4-portrait\" | \"a4-landscape\" | \"letter-portrait\" | \"letter-landscape\" | \"linkedin-banner\".\n- Editors may render with fixed canvases or dynamic mode. The default is fixed; dynamic stretches to container with preserved aspect.\n</sizing>\n`.trim();\n\n\n","export const blockquote = `\n<blockquote>\nNode: blockquote\nAttrs:\n- HTML-only; no required JSON attrs beyond optional styling such as className.\n\nContent:\n- One or more block nodes (typically paragraphs, headings, lists).\n\nSemantics:\n- Use for quoted text or callouts inside a column or row.\n- Styling should be applied via className on the surrounding column/slide, not by inventing new attrs here.\n</blockquote>\n`.trim();\n\n\n","export const bulletList = `\n<bulletList>\nNode: bulletList\nAttrs:\n- HTML-only; no required JSON attrs beyond optional styling such as className.\n\nContent:\n- One or more list item nodes (listItem) that contain paragraphs or inline content.\n\nSemantics:\n- Represents an unordered list rendered as <ul>.\n- Use when you need bullet points inside a column or blockquote.\n- Do not use bulletList as a top-level child of doc; it belongs inside a column/row structure.\n</bulletList>\n`.trim();\n\n\n","export const codeBlock = `\n<codeBlock>\nNode: codeBlock\nAttrs:\n- language (optional): string | null (e.g., \"js\", \"ts\", \"python\").\n\nContent:\n- Plain text only (no child nodes); used for preformatted code samples.\n\nSemantics:\n- Renders as <pre><code>…</code></pre>.\n- language controls a CSS class (e.g., \"language-js\") for syntax highlighting.\n- Use when the user explicitly wants a fenced code block, not inline code in a paragraph.\n</codeBlock>\n`.trim();\n\n\n","export const hardBreak = `\n<hardBreak>\nNode: hardBreak\nAttrs:\n- None (HTML-only); behaves like a manual line break.\n\nContent:\n- Inline-only; used within paragraphs or headings.\n\nSemantics:\n- Renders as <br> and as a newline in plain text exports.\n- Use when the user requests a line break without starting a new paragraph.\n</hardBreak>\n`.trim();\n\n\n","export const horizontalRule = `\n<horizontalRule>\nNode: horizontalRule\nAttrs:\n- HTML-only; no JSON attrs beyond optional styling via surrounding layout.\n\nContent:\n- No children; this is a self-contained separator.\n\nSemantics:\n- Renders as <hr>.\n- Use to visually separate sections within a slide (for example, between rows of text).\n</horizontalRule>\n`.trim();\n\n\n","export const image = `\n<image>\nNode: image\nAttrs:\n- src (required): string (URL to the image).\n- alt (optional): string (accessibility text).\n- title (optional): string (tooltip / caption).\n- width, height (optional): numbers (px) used as hints for rendering.\n\nContent:\n- No children; this is an atomic inline or block-level image node depending on editor configuration.\n\nSemantics:\n- Renders as a simple <img>, unlike imageBlock which adds rich framing/caption UI.\n- Prefer imageBlock for designed layouts; use image for simple inline images in paragraphs.\n</image>\n`.trim();\n\n\n","export const heading = `\n<heading>\nNode: heading\nAttrs:\n- level (required): 1 | 2 | 3 | 4 | 5 | 6.\n\nContent:\n- Inline content (text, marks, inline nodes).\n\nSemantics:\n- Renders as <h1>…<h6> depending on level.\n- Use level 1–2 for main slide titles, 3–4 for section headings, 5–6 for subtle labels.\n- Do not invent other attrs; typography/styling should come from className on columns/slides.\n</heading>\n`.trim();\n\n\n","export const paragraph = `\n<paragraph>\nNode: paragraph\nAttrs:\n- HTML-only; no structured JSON attrs beyond optional styling such as className.\n\nContent:\n- Inline content (text with marks, inline nodes such as image or hardBreak).\n\nSemantics:\n- Default text block inside columns and rows.\n- Multiple paragraphs can be stacked within the same column to create vertical rhythm.\n</paragraph>\n`.trim();\n\n\n","export const youtube = `\n<youtube>\nNode: youtube\nAttrs:\n- src (required): string (public YouTube URL).\n- start (optional): number (start time in seconds).\n- width (optional): number (frame width in px).\n- height (optional): number (frame height in px).\n\nContent:\n- No children; this is an atomic embed node.\n\nSemantics:\n- Renders as an embedded YouTube iframe wrapped in a container <div>.\n- Use for video embeds inside a column or row; keep other text in separate paragraphs/columns.\n- Do not embed raw <iframe> HTML directly; always use the youtube node with attrs.\n</youtube>\n`.trim();\n\n\n","export { slides } from \"./slides\";\nexport { flyers } from \"./flyers\";\n\n\n","export const slides = `\nExamples: Slides (full-document output)\n\n{\n \"type\": \"doc\",\n \"content\": [\n {\n \"type\": \"slide\",\n \"attrs\": { \"id\": \"intro\", \"size\": \"16x9\" },\n \"content\": [\n {\n \"type\": \"row\",\n \"attrs\": { \"layout\": \"1-1\" },\n \"content\": [\n { \"type\": \"column\", \"content\": [\n { \"type\": \"heading\", \"attrs\": { \"level\": 2 }, \"content\": [{ \"type\": \"text\", \"text\": \"Welcome\" }] }\n ]},\n { \"type\": \"column\", \"content\": [\n { \"type\": \"imageBlock\", \"attrs\": { \"src\": \"https://picsum.photos/seed/welcome/1200/800\", \"layout\": \"cover\", \"align\": \"center\" } }\n ]}\n ]\n }\n ]\n }\n ]\n}\n\n/* more-slide-examples to be added here */\n`.trim();\n\n\n","export const flyers = `\nExamples: Flyers (A4 slides; full-document output)\n\n{\n \"type\": \"doc\",\n \"content\": [\n {\n \"type\": \"slide\",\n \"attrs\": { \"id\": \"a4-flyer\", \"size\": \"a4-portrait\", \"className\": \"bg-white text-slate-900\" },\n \"content\": [\n {\n \"type\": \"row\",\n \"attrs\": { \"layout\": \"1\" },\n \"content\": [\n { \"type\": \"column\", \"content\": [\n { \"type\": \"heading\", \"attrs\": { \"level\": 2 }, \"content\": [{ \"type\": \"text\", \"text\": \"Event Title\" }] },\n { \"type\": \"paragraph\", \"content\": [{ \"type\": \"text\", \"text\": \"Date · Location\" }] },\n { \"type\": \"imageBlock\", \"attrs\": { \"src\": \"https://picsum.photos/seed/a4/1600/1000\", \"layout\": \"contain\", \"align\": \"center\", \"height\": 320 } }\n ]}\n ]\n }\n ]\n }\n ]\n}\n\n/* more-flyer-examples to be added here */\n`.trim();\n\n\n","export { minimalCreate } from \"./minimalCreate\";\nexport { imageEditing } from \"./imageEditing\";\nexport { all } from \"./all\";\nexport { allSchemas } from \"./allSchemas\";\nexport { allContexts } from \"./allContexts\";\n\n","import { core, fullDocument, slide, row, column, style } from \"../../contexts/v1\";\n\nexport const minimalCreate = [core, fullDocument, slide, row, column, style].join(\"\\n\\n\");\n\n\n","import { core, fullDocument, imageBlock, editingRules } from \"../../contexts/v1\";\n\nexport const imageEditing = [core, fullDocument, imageBlock, editingRules].join(\"\\n\\n\");\n\n\n","import * as ctx from \"../../contexts/v1\";\n\nexport const all = [\n ctx.core,\n ctx.fullDocument,\n ctx.slide,\n ctx.row,\n ctx.column,\n ctx.style,\n ctx.sizing,\n // Core content blocks and media\n ctx.imageBlock,\n ctx.blockquote,\n ctx.bulletList,\n ctx.heading,\n ctx.paragraph,\n ctx.image,\n ctx.codeBlock,\n ctx.hardBreak,\n ctx.horizontalRule,\n ctx.youtube,\n // Editing behavior\n ctx.editingRules,\n].join(\"\\n\\n\");\n\n\n","export { default as imageBlock } from \"./imageBlock.schema.json\";\nexport { default as row } from \"./row.schema.json\";\nexport { default as column } from \"./column.schema.json\";\nexport { default as slide } from \"./slide.schema.json\";\nexport { default as blockquote } from \"./blockquote.schema.json\";\nexport { default as bulletList } from \"./bulletList.schema.json\";\nexport { default as codeBlock } from \"./codeBlock.schema.json\";\nexport { default as hardBreak } from \"./hardBreak.schema.json\";\nexport { default as horizontalRule } from \"./horizontalRule.schema.json\";\nexport { default as image } from \"./image.schema.json\";\nexport { default as heading } from \"./heading.schema.json\";\nexport { default as paragraph } from \"./paragraph.schema.json\";\nexport { default as youtube } from \"./youtube.schema.json\";\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"imageBlock\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"imageBlock\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"src\": { \"type\": \"string\", \"minLength\": 1 },\n \"alt\": { \"type\": \"string\" },\n \"caption\": { \"type\": \"string\" },\n \"credit\": { \"type\": \"string\" },\n \"layout\": { \"enum\": [\"cover\", \"contain\", \"fill\", \"focus\", \"pattern\", null] },\n \"align\": { \"enum\": [\"left\", \"center\", \"right\", \"stretch\", null] },\n \"width\": { \"type\": [\"number\", \"string\", \"null\"] },\n \"height\": { \"type\": [\"number\", \"string\", \"null\"] },\n \"fullBleed\": { \"type\": \"boolean\" },\n \"assetId\": { \"type\": [\"string\", \"null\"] },\n \"focalX\": { \"type\": [\"number\", \"null\"], \"minimum\": 0, \"maximum\": 100 },\n \"focalY\": { \"type\": [\"number\", \"null\"], \"minimum\": 0, \"maximum\": 100 }\n },\n \"required\": [\"src\"],\n \"additionalProperties\": false\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"row\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"row\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"layout\": {\n \"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]\n },\n \"className\": { \"type\": [\"string\", \"null\"] },\n \"backgroundMode\": {\n \"enum\": [\"none\", \"color\", \"image\", \"imageOverlay\", null]\n },\n \"backgroundColor\": { \"type\": [\"string\", \"null\"] },\n \"backgroundImage\": { \"type\": [\"string\", \"null\"] },\n \"backgroundOverlayColor\": { \"type\": [\"string\", \"null\"] },\n \"backgroundOverlayOpacity\": { \"type\": [\"number\", \"null\"] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"column\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"column\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"className\": { \"type\": [\"string\", \"null\"] },\n \"contentMode\": { \"enum\": [\"default\", null] },\n \"verticalAlign\": { \"enum\": [\"top\", \"center\", \"bottom\", null] },\n \"horizontalAlign\": { \"enum\": [\"left\", \"center\", \"right\", \"stretch\", null] },\n \"padding\": { \"enum\": [\"none\", null] },\n \"backgroundMode\": {\n \"enum\": [\"none\", \"color\", \"image\", \"imageOverlay\", null]\n },\n \"backgroundColor\": { \"type\": [\"string\", \"null\"] },\n \"backgroundImage\": { \"type\": [\"string\", \"null\"] },\n \"backgroundOverlayColor\": { \"type\": [\"string\", \"null\"] },\n \"backgroundOverlayOpacity\": { \"type\": [\"number\", \"null\"] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"slide\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"slide\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": { \"type\": [\"string\", \"null\"] },\n \"className\": { \"type\": [\"string\", \"null\"] },\n \"size\": {\n \"enum\": [\n \"16x9\",\n \"4x3\",\n \"a4-portrait\",\n \"a4-landscape\",\n \"letter-portrait\",\n \"letter-landscape\",\n \"linkedin-banner\",\n null\n ]\n },\n \"backgroundMode\": {\n \"enum\": [\"none\", \"color\", \"image\", \"imageOverlay\", null]\n },\n \"backgroundColor\": { \"type\": [\"string\", \"null\"] },\n \"backgroundImage\": { \"type\": [\"string\", \"null\"] },\n \"backgroundOverlayColor\": { \"type\": [\"string\", \"null\"] },\n \"backgroundOverlayOpacity\": { \"type\": [\"number\", \"null\"] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"blockquote\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"blockquote\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"bulletList\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"bulletList\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"codeBlock\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"codeBlock\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"language\": { \"type\": [\"string\", \"null\"] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"hardBreak\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"hardBreak\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"horizontalRule\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"horizontalRule\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"image\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"image\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"src\": { \"type\": [\"string\", \"null\"] },\n \"alt\": { \"type\": [\"string\", \"null\"] },\n \"title\": { \"type\": [\"string\", \"null\"] },\n \"width\": { \"type\": [\"number\", \"null\"] },\n \"height\": { \"type\": [\"number\", \"null\"] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"heading\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"heading\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"level\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 6\n }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"paragraph\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"paragraph\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"youtube\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"youtube\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"src\": { \"type\": [\"string\", \"null\"] },\n \"start\": { \"type\": \"number\" },\n \"width\": { \"type\": \"number\" },\n \"height\": { \"type\": \"number\" }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","import * as schemas from \"../../schemas/v1\";\n\n/**\n * Human- and AI-readable bundle of all v1 JSON Schemas.\n *\n * Wrapped in a top-level <Schemas>…</Schemas> tag, with each schema\n * enclosed in its own <{name}Schema>…</{name}Schema> block.\n */\nexport const allSchemas = `\n<Schemas>\n${Object.entries(schemas)\n .map(\n ([name, schema]) =>\n `<${name}Schema>\\n` +\n JSON.stringify(schema as unknown, null, 2) +\n `\\n</${name}Schema>`\n )\n .join(\"\\n\\n\")}\n</Schemas>\n`.trim();\n\n\n\n","import * as ctx from \"../../contexts/v1\";\n\n/**\n * All v1 context atoms concatenated into a single string,\n * wrapped in a top-level <Context>…</Context> block.\n */\nexport const allContexts = `\n<Context>\n${[\n ctx.core,\n ctx.fullDocument,\n ctx.slide,\n ctx.row,\n ctx.column,\n ctx.style,\n ctx.sizing,\n ctx.imageBlock,\n ctx.blockquote,\n ctx.bulletList,\n ctx.heading,\n ctx.paragraph,\n ctx.image,\n ctx.codeBlock,\n ctx.hardBreak,\n ctx.horizontalRule,\n ctx.youtube,\n ctx.editingRules,\n].join(\"\\n\\n\")}\n</Context>\n`.trim();\n\n\n\n","export { createSlide } from \"./createSlide\";\nexport { addTwoColumns } from \"./addTwoColumns\";\nexport { editImageToCover } from \"./editImageToCover\";\n\n\n","import { core, fullDocument, slide, row, column } from \"../../contexts/v1\";\n\nexport const createSlide = [\n core,\n fullDocument,\n slide,\n row,\n column,\n `\nReturn a single JSON document that creates one 16x9 slide with a 1-1 row:\n{\n \"type\": \"doc\",\n \"content\": [\n {\n \"type\": \"slide\",\n \"attrs\": { \"size\": \"16x9\" },\n \"content\": [\n { \"type\": \"row\", \"attrs\": { \"layout\": \"1-1\" }, \"content\": [\n { \"type\": \"column\", \"content\": [{ \"type\": \"paragraph\", \"content\": [{ \"type\": \"text\", \"text\": \"Left\" }] }] },\n { \"type\": \"column\", \"content\": [{ \"type\": \"paragraph\", \"content\": [{ \"type\": \"text\", \"text\": \"Right\" }] }] }\n ] }\n ]\n }\n ]\n}\n`.trim(),\n].join(\"\\n\\n\");\n\n\n","import { core, fullDocument, row, column } from \"../../contexts/v1\";\n\nexport const addTwoColumns = [\n core,\n fullDocument,\n row,\n column,\n `\nReturn a full document where the first slide contains a row with layout \"1-1\" and two columns with simple text paragraphs.\n`.trim(),\n].join(\"\\n\\n\");\n\n\n","import { core, fullDocument, imageBlock, editingRules } from \"../../contexts/v1\";\n\nexport const editImageToCover = [\n core,\n fullDocument,\n imageBlock,\n editingRules,\n `\nUpdate an existing imageBlock on the first slide so it uses layout \"cover\" and align \"center\". Preserve all other attributes.\n`.trim(),\n].join(\"\\n\\n\");\n\n\n"],"mappings":"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","names":["v1_exports","v1_exports","v1_exports","v1_exports","v1_exports","v1_exports"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -239,6 +239,39 @@ var properties$b = {
|
|
|
239
239
|
"string",
|
|
240
240
|
"null"
|
|
241
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
|
+
]
|
|
242
275
|
}
|
|
243
276
|
},
|
|
244
277
|
additionalProperties: true
|
|
@@ -301,6 +334,39 @@ var properties$a = {
|
|
|
301
334
|
"none",
|
|
302
335
|
null
|
|
303
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
|
+
]
|
|
304
370
|
}
|
|
305
371
|
},
|
|
306
372
|
additionalProperties: true
|
|
@@ -352,6 +418,39 @@ var properties$9 = {
|
|
|
352
418
|
"linkedin-banner",
|
|
353
419
|
null
|
|
354
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
|
+
]
|
|
355
454
|
}
|
|
356
455
|
},
|
|
357
456
|
additionalProperties: true
|
package/dist/index.d.ts
CHANGED
|
@@ -239,6 +239,39 @@ var properties$b = {
|
|
|
239
239
|
"string",
|
|
240
240
|
"null"
|
|
241
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
|
+
]
|
|
242
275
|
}
|
|
243
276
|
},
|
|
244
277
|
additionalProperties: true
|
|
@@ -301,6 +334,39 @@ var properties$a = {
|
|
|
301
334
|
"none",
|
|
302
335
|
null
|
|
303
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
|
+
]
|
|
304
370
|
}
|
|
305
371
|
},
|
|
306
372
|
additionalProperties: true
|
|
@@ -352,6 +418,39 @@ var properties$9 = {
|
|
|
352
418
|
"linkedin-banner",
|
|
353
419
|
null
|
|
354
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
|
+
]
|
|
355
454
|
}
|
|
356
455
|
},
|
|
357
456
|
additionalProperties: true
|
package/dist/index.js
CHANGED
|
@@ -90,6 +90,11 @@ Node: row
|
|
|
90
90
|
Attrs:
|
|
91
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"
|
|
92
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)
|
|
93
98
|
|
|
94
99
|
Semantics:
|
|
95
100
|
- Fractions determine relative column flex:
|
|
@@ -99,6 +104,7 @@ Semantics:
|
|
|
99
104
|
- 1-1-1: three equal columns
|
|
100
105
|
- 1-1-1-1: four equal columns
|
|
101
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.
|
|
102
108
|
</row>
|
|
103
109
|
`.trim();
|
|
104
110
|
|
|
@@ -112,6 +118,11 @@ Attrs:
|
|
|
112
118
|
- verticalAlign (optional): "top" | "center" | "bottom" (default "top")
|
|
113
119
|
- horizontalAlign (optional): "left" | "center" | "right" | "stretch" (default "left")
|
|
114
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)
|
|
115
126
|
|
|
116
127
|
Notes:
|
|
117
128
|
- Use className for spacing, colors, typography (e.g., Tailwind).
|
|
@@ -127,6 +138,11 @@ Attrs:
|
|
|
127
138
|
- id (optional): string (stable identifier; preserve if present)
|
|
128
139
|
- className (optional): string (styling)
|
|
129
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)
|
|
130
146
|
|
|
131
147
|
Content:
|
|
132
148
|
- slide contains one or more rows.
|
|
@@ -134,6 +150,7 @@ Content:
|
|
|
134
150
|
Notes:
|
|
135
151
|
- Flyers are slides sized for paper (e.g., size: "a4-portrait").
|
|
136
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.
|
|
137
154
|
</slide>
|
|
138
155
|
`.trim();
|
|
139
156
|
|
|
@@ -167,6 +184,18 @@ var editingRules = `
|
|
|
167
184
|
- After: column.attrs = { verticalAlign: "center", horizontalAlign: "center", padding: "none" }
|
|
168
185
|
</Centering content in a column>
|
|
169
186
|
|
|
187
|
+
<Backgrounds (slides, rows, columns)>
|
|
188
|
+
- Use structured background attrs instead of raw Tailwind bg-[url(...)] when setting background images.
|
|
189
|
+
- If you use bg-[...], the image will not work because the tailwind classes we need have been tree shaken off - instead use the attributes.
|
|
190
|
+
- For slide-level backgrounds (hero/flyer):
|
|
191
|
+
- Use slide.attrs.backgroundMode = "color" | "image" | "imageOverlay".
|
|
192
|
+
- For images, set slide.attrs.backgroundImage to the image URL.
|
|
193
|
+
- For overlays, set slide.attrs.backgroundOverlayColor (e.g., "rgba(0,0,0,0.8)") and slide.attrs.backgroundOverlayOpacity (0\u20131).
|
|
194
|
+
- For horizontal bands, use row-level backgrounds (row.attrs.background*).
|
|
195
|
+
- For panel-style sections, use column-level backgrounds (column.attrs.background*).
|
|
196
|
+
- Do not mix multiple background images on the same node; prefer one backgroundMode per slide/row/column and layer additional visuals as imageBlock nodes.
|
|
197
|
+
</Backgrounds (slides, rows, columns)>
|
|
198
|
+
|
|
170
199
|
<Text editing (headings and paragraphs)>
|
|
171
200
|
- Preserve semantic types: do not turn headings into paragraphs or vice versa unless explicitly asked.
|
|
172
201
|
- To change heading level, update heading.attrs.level (1\u20136) without changing its id.
|
|
@@ -519,7 +548,14 @@ var row_schema_default = {
|
|
|
519
548
|
layout: {
|
|
520
549
|
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]
|
|
521
550
|
},
|
|
522
|
-
className: { type: ["string", "null"] }
|
|
551
|
+
className: { type: ["string", "null"] },
|
|
552
|
+
backgroundMode: {
|
|
553
|
+
enum: ["none", "color", "image", "imageOverlay", null]
|
|
554
|
+
},
|
|
555
|
+
backgroundColor: { type: ["string", "null"] },
|
|
556
|
+
backgroundImage: { type: ["string", "null"] },
|
|
557
|
+
backgroundOverlayColor: { type: ["string", "null"] },
|
|
558
|
+
backgroundOverlayOpacity: { type: ["number", "null"] }
|
|
523
559
|
},
|
|
524
560
|
additionalProperties: true
|
|
525
561
|
}
|
|
@@ -542,7 +578,14 @@ var column_schema_default = {
|
|
|
542
578
|
contentMode: { enum: ["default", null] },
|
|
543
579
|
verticalAlign: { enum: ["top", "center", "bottom", null] },
|
|
544
580
|
horizontalAlign: { enum: ["left", "center", "right", "stretch", null] },
|
|
545
|
-
padding: { enum: ["none", null] }
|
|
581
|
+
padding: { enum: ["none", null] },
|
|
582
|
+
backgroundMode: {
|
|
583
|
+
enum: ["none", "color", "image", "imageOverlay", null]
|
|
584
|
+
},
|
|
585
|
+
backgroundColor: { type: ["string", "null"] },
|
|
586
|
+
backgroundImage: { type: ["string", "null"] },
|
|
587
|
+
backgroundOverlayColor: { type: ["string", "null"] },
|
|
588
|
+
backgroundOverlayOpacity: { type: ["number", "null"] }
|
|
546
589
|
},
|
|
547
590
|
additionalProperties: true
|
|
548
591
|
}
|
|
@@ -574,7 +617,14 @@ var slide_schema_default = {
|
|
|
574
617
|
"linkedin-banner",
|
|
575
618
|
null
|
|
576
619
|
]
|
|
577
|
-
}
|
|
620
|
+
},
|
|
621
|
+
backgroundMode: {
|
|
622
|
+
enum: ["none", "color", "image", "imageOverlay", null]
|
|
623
|
+
},
|
|
624
|
+
backgroundColor: { type: ["string", "null"] },
|
|
625
|
+
backgroundImage: { type: ["string", "null"] },
|
|
626
|
+
backgroundOverlayColor: { type: ["string", "null"] },
|
|
627
|
+
backgroundOverlayOpacity: { type: ["number", "null"] }
|
|
578
628
|
},
|
|
579
629
|
additionalProperties: true
|
|
580
630
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/contexts/v1/index.ts","../src/contexts/v1/core.ts","../src/contexts/v1/output.fullDocument.ts","../src/contexts/v1/imageBlock.ts","../src/contexts/v1/row.ts","../src/contexts/v1/column.ts","../src/contexts/v1/slide.ts","../src/contexts/v1/style.ts","../src/contexts/v1/editingRules.ts","../src/contexts/v1/sizing.ts","../src/contexts/v1/blockquote.ts","../src/contexts/v1/bulletList.ts","../src/contexts/v1/codeBlock.ts","../src/contexts/v1/hardBreak.ts","../src/contexts/v1/horizontalRule.ts","../src/contexts/v1/image.ts","../src/contexts/v1/heading.ts","../src/contexts/v1/paragraph.ts","../src/contexts/v1/youtube.ts","../src/examples/v1/index.ts","../src/examples/v1/slides.ts","../src/examples/v1/flyers.ts","../src/bundles/v1/index.ts","../src/bundles/v1/minimalCreate.ts","../src/bundles/v1/imageEditing.ts","../src/bundles/v1/all.ts","../src/schemas/v1/index.ts","../src/schemas/v1/imageBlock.schema.json","../src/schemas/v1/row.schema.json","../src/schemas/v1/column.schema.json","../src/schemas/v1/slide.schema.json","../src/schemas/v1/blockquote.schema.json","../src/schemas/v1/bulletList.schema.json","../src/schemas/v1/codeBlock.schema.json","../src/schemas/v1/hardBreak.schema.json","../src/schemas/v1/horizontalRule.schema.json","../src/schemas/v1/image.schema.json","../src/schemas/v1/heading.schema.json","../src/schemas/v1/paragraph.schema.json","../src/schemas/v1/youtube.schema.json","../src/bundles/v1/allSchemas.ts","../src/bundles/v1/allContexts.ts","../src/recipes/v1/index.ts","../src/recipes/v1/createSlide.ts","../src/recipes/v1/addTwoColumns.ts","../src/recipes/v1/editImageToCover.ts"],"sourcesContent":["export { core } from \"./core\";\nexport { fullDocument } from \"./output.fullDocument\";\nexport { imageBlock } from \"./imageBlock\";\nexport { row } from \"./row\";\nexport { column } from \"./column\";\nexport { slide } from \"./slide\";\nexport { style } from \"./style\";\nexport { editingRules } from \"./editingRules\";\nexport { sizing } from \"./sizing\";\nexport { blockquote } from \"./blockquote\";\nexport { bulletList } from \"./bulletList\";\nexport { codeBlock } from \"./codeBlock\";\nexport { hardBreak } from \"./hardBreak\";\nexport { horizontalRule } from \"./horizontalRule\";\nexport { image } from \"./image\";\nexport { heading } from \"./heading\";\nexport { paragraph } from \"./paragraph\";\nexport { youtube } from \"./youtube\";\n\n","export const core = `\n<core>\nYou are given a BlockSlides document to CREATE or EDIT.\n\nDocument shape:\n- doc: { type: \"doc\", content: slide[] }\n- slide: { type: \"slide\", attrs?, content: row[] }\n- row: { type: \"row\", attrs?, content: column[] | block[] }\n- column: { type: \"column\", attrs?, content: (block | row)[] }\n- block: includes nodes like paragraph, heading, imageBlock, etc.\n\nRules:\n- Use only known node types and valid attrs. Do not invent attributes.\n- Prefer stable references: preserve slide.attrs.id if present.\n- Slides and flyers share the same JSON; flyers are slides sized via attrs and theme.\n</core>\n`.trim();\n\n\n","export const fullDocument = `\nOutput contract:\n- Return exactly one JSON object representing the ENTIRE document.\n- No prose, no markdown, no code fences, no comments. JSON only.\n- Include all required attrs. Use allowed enum values only.\n`.trim();\n\n\n","export const imageBlock = `\n<imageBlock>\nNode: imageBlock\nAttrs:\n- src (required): string (URL)\n- alt (optional): string\n- caption (optional): string\n- credit (optional): string\n- layout (optional): \"cover\" | \"contain\" | \"fill\" | \"focus\" | \"pattern\"\n- align (optional): \"left\" | \"center\" | \"right\" | \"stretch\" (default \"center\")\n- width (optional): number (px) or string (\"%\"/\"px\")\n- height (optional): number (px) or string (\"%\"/\"px\")\n- fullBleed (optional): boolean (removes radius; stretches width)\n- assetId (optional): string\n- focalX, focalY (optional): 0–100; spotlight position (when relevant)\n\nBehavior:\n- Numbers for width/height are interpreted as pixels.\n- layout:\n - cover: Fill container; crop edges as needed.\n - contain: Fit entirely; may letterbox.\n - fill: Stretch to container (may distort).\n - focus: Cover + radial spotlight at focalX/focalY.\n - pattern: Hide <img>; use tiled background (from src).\n- Do not set unknown attributes. Preserve existing valid attrs.\n</imageBlock>\n`.trim();\n\n\n","export const row = `\n<row>\nNode: row\nAttrs:\n- 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\"\n- className (optional): string (CSS classes)\n\nSemantics:\n- Fractions determine relative column flex:\n - 1-1: two equal columns\n - 2-1: first column is double width\n - 1-2: second column is double width\n - 1-1-1: three equal columns\n - 1-1-1-1: four equal columns\n- Empty layout (\"\", \"1\") acts as a single full-width column.\n</row>\n`.trim();\n\n\n","export const column = `\n<column>\nNode: column\nAttrs:\n- className (optional): string\n- contentMode (optional): \"default\" (future-friendly)\n- verticalAlign (optional): \"top\" | \"center\" | \"bottom\" (default \"top\")\n- horizontalAlign (optional): \"left\" | \"center\" | \"right\" | \"stretch\" (default \"left\")\n- padding (optional): \"none\" (future-friendly)\n\nNotes:\n- Use className for spacing, colors, typography (e.g., Tailwind).\n- Keep nesting shallow; columns can contain rows or blocks as needed.\n</column>\n`.trim();\n\n\n","export const slide = `\n<slide>\nNode: slide\nAttrs:\n- id (optional): string (stable identifier; preserve if present)\n- className (optional): string (styling)\n- size (optional): \"16x9\" | \"4x3\" | \"a4-portrait\" | \"a4-landscape\" | \"letter-portrait\" | \"letter-landscape\" | \"linkedin-banner\"\n\nContent:\n- slide contains one or more rows.\n\nNotes:\n- Flyers are slides sized for paper (e.g., size: \"a4-portrait\").\n- Set size to control canvas dimensions; theme applies the exact width/height.\n</slide>\n`.trim();\n\n\n","export const style = `\n<style>\nStyling\n- Prefer using attrs.className for styling (e.g., Tailwind classes).\n- Use enums for canonical behaviors (e.g., imageBlock.layout).\n- When enums are insufficient (spacing, backgrounds), use className.\n</style>\n`.trim();\n\n\n","export const editingRules = `\n<General editing rules>\n- Preserve existing ids and valid attributes. Do not remove or rename known attrs.\n- Use only allowed enum values. Do not invent new enum values.\n- Avoid introducing new attributes that are not documented. If styling is needed, prefer className.\n- Keep the document valid: slide > row > column > blocks.\n</General editing rules>\n\n<Centering content in a column>\n- Columns are flex containers. Use their alignment attrs instead of per-block hacks.\n- To center all content vertically and horizontally inside a column:\n - Set column.attrs.verticalAlign = \"center\".\n - Set column.attrs.horizontalAlign = \"center\".\n- This will apply to headings, paragraphs, imageBlocks, and other blocks inside that column.\n- Example:\n - Before: column.attrs = { verticalAlign: \"top\", horizontalAlign: \"left\", padding: \"none\" }\n - After: column.attrs = { verticalAlign: \"center\", horizontalAlign: \"center\", padding: \"none\" }\n</Centering content in a column>\n\n<Text editing (headings and paragraphs)>\n- Preserve semantic types: do not turn headings into paragraphs or vice versa unless explicitly asked.\n- To change heading level, update heading.attrs.level (1–6) without changing its id.\n- To change the text, edit the text nodes inside content, keeping marks and structure when possible.\n- For alignment of text itself, prefer using the textAlign extension (textAlign: \"left\" | \"center\" | \"right\" | \"justify\") if configured.\n- Do not introduce inline HTML; represent formatting via marks (bold, italic, underline, etc.).\n</Text editing (headings and paragraphs)>\n\n<Image blocks>\n- Use imageBlock for rich images; preserve src, assetId, and metadata unless the user explicitly asks to change them.\n- To change the alignment of an imageBlock within its column, set imageBlock.attrs.align to \"left\", \"center\", \"right\", or \"stretch\".\n- To change how the image is fit, adjust imageBlock.attrs.layout (for example: \"cover\", \"contain\", \"fill\", \"focus\", or a configured layout key).\n- When centering both text and image in a column, combine:\n - column verticalAlign/horizontalAlign for layout, and\n - imageBlock align for how the image itself sits in the column.\n- Do not invent new layout or align values that are not documented in the schema.\n</Image blocks>\n\n`.trim();\n\n\n","export const sizing = `\n<sizing>\nSizing\n- Slides and flyers share the same JSON. Flyers are slides sized via slide.attrs.size and theme rules.\n- Allowed sizes: \"16x9\" | \"4x3\" | \"a4-portrait\" | \"a4-landscape\" | \"letter-portrait\" | \"letter-landscape\" | \"linkedin-banner\".\n- Editors may render with fixed canvases or dynamic mode. The default is fixed; dynamic stretches to container with preserved aspect.\n</sizing>\n`.trim();\n\n\n","export const blockquote = `\n<blockquote>\nNode: blockquote\nAttrs:\n- HTML-only; no required JSON attrs beyond optional styling such as className.\n\nContent:\n- One or more block nodes (typically paragraphs, headings, lists).\n\nSemantics:\n- Use for quoted text or callouts inside a column or row.\n- Styling should be applied via className on the surrounding column/slide, not by inventing new attrs here.\n</blockquote>\n`.trim();\n\n\n","export const bulletList = `\n<bulletList>\nNode: bulletList\nAttrs:\n- HTML-only; no required JSON attrs beyond optional styling such as className.\n\nContent:\n- One or more list item nodes (listItem) that contain paragraphs or inline content.\n\nSemantics:\n- Represents an unordered list rendered as <ul>.\n- Use when you need bullet points inside a column or blockquote.\n- Do not use bulletList as a top-level child of doc; it belongs inside a column/row structure.\n</bulletList>\n`.trim();\n\n\n","export const codeBlock = `\n<codeBlock>\nNode: codeBlock\nAttrs:\n- language (optional): string | null (e.g., \"js\", \"ts\", \"python\").\n\nContent:\n- Plain text only (no child nodes); used for preformatted code samples.\n\nSemantics:\n- Renders as <pre><code>…</code></pre>.\n- language controls a CSS class (e.g., \"language-js\") for syntax highlighting.\n- Use when the user explicitly wants a fenced code block, not inline code in a paragraph.\n</codeBlock>\n`.trim();\n\n\n","export const hardBreak = `\n<hardBreak>\nNode: hardBreak\nAttrs:\n- None (HTML-only); behaves like a manual line break.\n\nContent:\n- Inline-only; used within paragraphs or headings.\n\nSemantics:\n- Renders as <br> and as a newline in plain text exports.\n- Use when the user requests a line break without starting a new paragraph.\n</hardBreak>\n`.trim();\n\n\n","export const horizontalRule = `\n<horizontalRule>\nNode: horizontalRule\nAttrs:\n- HTML-only; no JSON attrs beyond optional styling via surrounding layout.\n\nContent:\n- No children; this is a self-contained separator.\n\nSemantics:\n- Renders as <hr>.\n- Use to visually separate sections within a slide (for example, between rows of text).\n</horizontalRule>\n`.trim();\n\n\n","export const image = `\n<image>\nNode: image\nAttrs:\n- src (required): string (URL to the image).\n- alt (optional): string (accessibility text).\n- title (optional): string (tooltip / caption).\n- width, height (optional): numbers (px) used as hints for rendering.\n\nContent:\n- No children; this is an atomic inline or block-level image node depending on editor configuration.\n\nSemantics:\n- Renders as a simple <img>, unlike imageBlock which adds rich framing/caption UI.\n- Prefer imageBlock for designed layouts; use image for simple inline images in paragraphs.\n</image>\n`.trim();\n\n\n","export const heading = `\n<heading>\nNode: heading\nAttrs:\n- level (required): 1 | 2 | 3 | 4 | 5 | 6.\n\nContent:\n- Inline content (text, marks, inline nodes).\n\nSemantics:\n- Renders as <h1>…<h6> depending on level.\n- Use level 1–2 for main slide titles, 3–4 for section headings, 5–6 for subtle labels.\n- Do not invent other attrs; typography/styling should come from className on columns/slides.\n</heading>\n`.trim();\n\n\n","export const paragraph = `\n<paragraph>\nNode: paragraph\nAttrs:\n- HTML-only; no structured JSON attrs beyond optional styling such as className.\n\nContent:\n- Inline content (text with marks, inline nodes such as image or hardBreak).\n\nSemantics:\n- Default text block inside columns and rows.\n- Multiple paragraphs can be stacked within the same column to create vertical rhythm.\n</paragraph>\n`.trim();\n\n\n","export const youtube = `\n<youtube>\nNode: youtube\nAttrs:\n- src (required): string (public YouTube URL).\n- start (optional): number (start time in seconds).\n- width (optional): number (frame width in px).\n- height (optional): number (frame height in px).\n\nContent:\n- No children; this is an atomic embed node.\n\nSemantics:\n- Renders as an embedded YouTube iframe wrapped in a container <div>.\n- Use for video embeds inside a column or row; keep other text in separate paragraphs/columns.\n- Do not embed raw <iframe> HTML directly; always use the youtube node with attrs.\n</youtube>\n`.trim();\n\n\n","export { slides } from \"./slides\";\nexport { flyers } from \"./flyers\";\n\n\n","export const slides = `\nExamples: Slides (full-document output)\n\n{\n \"type\": \"doc\",\n \"content\": [\n {\n \"type\": \"slide\",\n \"attrs\": { \"id\": \"intro\", \"size\": \"16x9\" },\n \"content\": [\n {\n \"type\": \"row\",\n \"attrs\": { \"layout\": \"1-1\" },\n \"content\": [\n { \"type\": \"column\", \"content\": [\n { \"type\": \"heading\", \"attrs\": { \"level\": 2 }, \"content\": [{ \"type\": \"text\", \"text\": \"Welcome\" }] }\n ]},\n { \"type\": \"column\", \"content\": [\n { \"type\": \"imageBlock\", \"attrs\": { \"src\": \"https://picsum.photos/seed/welcome/1200/800\", \"layout\": \"cover\", \"align\": \"center\" } }\n ]}\n ]\n }\n ]\n }\n ]\n}\n\n/* more-slide-examples to be added here */\n`.trim();\n\n\n","export const flyers = `\nExamples: Flyers (A4 slides; full-document output)\n\n{\n \"type\": \"doc\",\n \"content\": [\n {\n \"type\": \"slide\",\n \"attrs\": { \"id\": \"a4-flyer\", \"size\": \"a4-portrait\", \"className\": \"bg-white text-slate-900\" },\n \"content\": [\n {\n \"type\": \"row\",\n \"attrs\": { \"layout\": \"1\" },\n \"content\": [\n { \"type\": \"column\", \"content\": [\n { \"type\": \"heading\", \"attrs\": { \"level\": 2 }, \"content\": [{ \"type\": \"text\", \"text\": \"Event Title\" }] },\n { \"type\": \"paragraph\", \"content\": [{ \"type\": \"text\", \"text\": \"Date · Location\" }] },\n { \"type\": \"imageBlock\", \"attrs\": { \"src\": \"https://picsum.photos/seed/a4/1600/1000\", \"layout\": \"contain\", \"align\": \"center\", \"height\": 320 } }\n ]}\n ]\n }\n ]\n }\n ]\n}\n\n/* more-flyer-examples to be added here */\n`.trim();\n\n\n","export { minimalCreate } from \"./minimalCreate\";\nexport { imageEditing } from \"./imageEditing\";\nexport { all } from \"./all\";\nexport { allSchemas } from \"./allSchemas\";\nexport { allContexts } from \"./allContexts\";\n\n","import { core, fullDocument, slide, row, column, style } from \"../../contexts/v1\";\n\nexport const minimalCreate = [core, fullDocument, slide, row, column, style].join(\"\\n\\n\");\n\n\n","import { core, fullDocument, imageBlock, editingRules } from \"../../contexts/v1\";\n\nexport const imageEditing = [core, fullDocument, imageBlock, editingRules].join(\"\\n\\n\");\n\n\n","import * as ctx from \"../../contexts/v1\";\n\nexport const all = [\n ctx.core,\n ctx.fullDocument,\n ctx.slide,\n ctx.row,\n ctx.column,\n ctx.style,\n ctx.sizing,\n // Core content blocks and media\n ctx.imageBlock,\n ctx.blockquote,\n ctx.bulletList,\n ctx.heading,\n ctx.paragraph,\n ctx.image,\n ctx.codeBlock,\n ctx.hardBreak,\n ctx.horizontalRule,\n ctx.youtube,\n // Editing behavior\n ctx.editingRules,\n].join(\"\\n\\n\");\n\n\n","export { default as imageBlock } from \"./imageBlock.schema.json\";\nexport { default as row } from \"./row.schema.json\";\nexport { default as column } from \"./column.schema.json\";\nexport { default as slide } from \"./slide.schema.json\";\nexport { default as blockquote } from \"./blockquote.schema.json\";\nexport { default as bulletList } from \"./bulletList.schema.json\";\nexport { default as codeBlock } from \"./codeBlock.schema.json\";\nexport { default as hardBreak } from \"./hardBreak.schema.json\";\nexport { default as horizontalRule } from \"./horizontalRule.schema.json\";\nexport { default as image } from \"./image.schema.json\";\nexport { default as heading } from \"./heading.schema.json\";\nexport { default as paragraph } from \"./paragraph.schema.json\";\nexport { default as youtube } from \"./youtube.schema.json\";\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"imageBlock\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"imageBlock\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"src\": { \"type\": \"string\", \"minLength\": 1 },\n \"alt\": { \"type\": \"string\" },\n \"caption\": { \"type\": \"string\" },\n \"credit\": { \"type\": \"string\" },\n \"layout\": { \"enum\": [\"cover\", \"contain\", \"fill\", \"focus\", \"pattern\", null] },\n \"align\": { \"enum\": [\"left\", \"center\", \"right\", \"stretch\", null] },\n \"width\": { \"type\": [\"number\", \"string\", \"null\"] },\n \"height\": { \"type\": [\"number\", \"string\", \"null\"] },\n \"fullBleed\": { \"type\": \"boolean\" },\n \"assetId\": { \"type\": [\"string\", \"null\"] },\n \"focalX\": { \"type\": [\"number\", \"null\"], \"minimum\": 0, \"maximum\": 100 },\n \"focalY\": { \"type\": [\"number\", \"null\"], \"minimum\": 0, \"maximum\": 100 }\n },\n \"required\": [\"src\"],\n \"additionalProperties\": false\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"row\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"row\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"layout\": {\n \"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]\n },\n \"className\": { \"type\": [\"string\", \"null\"] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"column\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"column\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"className\": { \"type\": [\"string\", \"null\"] },\n \"contentMode\": { \"enum\": [\"default\", null] },\n \"verticalAlign\": { \"enum\": [\"top\", \"center\", \"bottom\", null] },\n \"horizontalAlign\": { \"enum\": [\"left\", \"center\", \"right\", \"stretch\", null] },\n \"padding\": { \"enum\": [\"none\", null] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"slide\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"slide\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": { \"type\": [\"string\", \"null\"] },\n \"className\": { \"type\": [\"string\", \"null\"] },\n \"size\": {\n \"enum\": [\n \"16x9\",\n \"4x3\",\n \"a4-portrait\",\n \"a4-landscape\",\n \"letter-portrait\",\n \"letter-landscape\",\n \"linkedin-banner\",\n null\n ]\n }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"blockquote\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"blockquote\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"bulletList\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"bulletList\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"codeBlock\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"codeBlock\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"language\": { \"type\": [\"string\", \"null\"] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"hardBreak\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"hardBreak\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"horizontalRule\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"horizontalRule\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"image\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"image\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"src\": { \"type\": [\"string\", \"null\"] },\n \"alt\": { \"type\": [\"string\", \"null\"] },\n \"title\": { \"type\": [\"string\", \"null\"] },\n \"width\": { \"type\": [\"number\", \"null\"] },\n \"height\": { \"type\": [\"number\", \"null\"] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"heading\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"heading\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"level\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 6\n }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"paragraph\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"paragraph\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"youtube\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"youtube\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"src\": { \"type\": [\"string\", \"null\"] },\n \"start\": { \"type\": \"number\" },\n \"width\": { \"type\": \"number\" },\n \"height\": { \"type\": \"number\" }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","import * as schemas from \"../../schemas/v1\";\n\n/**\n * Human- and AI-readable bundle of all v1 JSON Schemas.\n *\n * Wrapped in a top-level <Schemas>…</Schemas> tag, with each schema\n * enclosed in its own <{name}Schema>…</{name}Schema> block.\n */\nexport const allSchemas = `\n<Schemas>\n${Object.entries(schemas)\n .map(\n ([name, schema]) =>\n `<${name}Schema>\\n` +\n JSON.stringify(schema as unknown, null, 2) +\n `\\n</${name}Schema>`\n )\n .join(\"\\n\\n\")}\n</Schemas>\n`.trim();\n\n\n\n","import * as ctx from \"../../contexts/v1\";\n\n/**\n * All v1 context atoms concatenated into a single string,\n * wrapped in a top-level <Context>…</Context> block.\n */\nexport const allContexts = `\n<Context>\n${[\n ctx.core,\n ctx.fullDocument,\n ctx.slide,\n ctx.row,\n ctx.column,\n ctx.style,\n ctx.sizing,\n ctx.imageBlock,\n ctx.blockquote,\n ctx.bulletList,\n ctx.heading,\n ctx.paragraph,\n ctx.image,\n ctx.codeBlock,\n ctx.hardBreak,\n ctx.horizontalRule,\n ctx.youtube,\n ctx.editingRules,\n].join(\"\\n\\n\")}\n</Context>\n`.trim();\n\n\n\n","export { createSlide } from \"./createSlide\";\nexport { addTwoColumns } from \"./addTwoColumns\";\nexport { editImageToCover } from \"./editImageToCover\";\n\n\n","import { core, fullDocument, slide, row, column } from \"../../contexts/v1\";\n\nexport const createSlide = [\n core,\n fullDocument,\n slide,\n row,\n column,\n `\nReturn a single JSON document that creates one 16x9 slide with a 1-1 row:\n{\n \"type\": \"doc\",\n \"content\": [\n {\n \"type\": \"slide\",\n \"attrs\": { \"size\": \"16x9\" },\n \"content\": [\n { \"type\": \"row\", \"attrs\": { \"layout\": \"1-1\" }, \"content\": [\n { \"type\": \"column\", \"content\": [{ \"type\": \"paragraph\", \"content\": [{ \"type\": \"text\", \"text\": \"Left\" }] }] },\n { \"type\": \"column\", \"content\": [{ \"type\": \"paragraph\", \"content\": [{ \"type\": \"text\", \"text\": \"Right\" }] }] }\n ] }\n ]\n }\n ]\n}\n`.trim(),\n].join(\"\\n\\n\");\n\n\n","import { core, fullDocument, row, column } from \"../../contexts/v1\";\n\nexport const addTwoColumns = [\n core,\n fullDocument,\n row,\n column,\n `\nReturn a full document where the first slide contains a row with layout \"1-1\" and two columns with simple text paragraphs.\n`.trim(),\n].join(\"\\n\\n\");\n\n\n","import { core, fullDocument, imageBlock, editingRules } from \"../../contexts/v1\";\n\nexport const editImageToCover = [\n core,\n fullDocument,\n imageBlock,\n editingRules,\n `\nUpdate an existing imageBlock on the first slide so it uses layout \"cover\" and align \"center\". Preserve all other attributes.\n`.trim(),\n].join(\"\\n\\n\");\n\n\n"],"mappings":"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","names":["v1_exports","v1_exports","v1_exports","v1_exports","v1_exports"]}
|
|
1
|
+
{"version":3,"sources":["../src/contexts/v1/index.ts","../src/contexts/v1/core.ts","../src/contexts/v1/output.fullDocument.ts","../src/contexts/v1/imageBlock.ts","../src/contexts/v1/row.ts","../src/contexts/v1/column.ts","../src/contexts/v1/slide.ts","../src/contexts/v1/style.ts","../src/contexts/v1/editingRules.ts","../src/contexts/v1/sizing.ts","../src/contexts/v1/blockquote.ts","../src/contexts/v1/bulletList.ts","../src/contexts/v1/codeBlock.ts","../src/contexts/v1/hardBreak.ts","../src/contexts/v1/horizontalRule.ts","../src/contexts/v1/image.ts","../src/contexts/v1/heading.ts","../src/contexts/v1/paragraph.ts","../src/contexts/v1/youtube.ts","../src/examples/v1/index.ts","../src/examples/v1/slides.ts","../src/examples/v1/flyers.ts","../src/bundles/v1/index.ts","../src/bundles/v1/minimalCreate.ts","../src/bundles/v1/imageEditing.ts","../src/bundles/v1/all.ts","../src/schemas/v1/index.ts","../src/schemas/v1/imageBlock.schema.json","../src/schemas/v1/row.schema.json","../src/schemas/v1/column.schema.json","../src/schemas/v1/slide.schema.json","../src/schemas/v1/blockquote.schema.json","../src/schemas/v1/bulletList.schema.json","../src/schemas/v1/codeBlock.schema.json","../src/schemas/v1/hardBreak.schema.json","../src/schemas/v1/horizontalRule.schema.json","../src/schemas/v1/image.schema.json","../src/schemas/v1/heading.schema.json","../src/schemas/v1/paragraph.schema.json","../src/schemas/v1/youtube.schema.json","../src/bundles/v1/allSchemas.ts","../src/bundles/v1/allContexts.ts","../src/recipes/v1/index.ts","../src/recipes/v1/createSlide.ts","../src/recipes/v1/addTwoColumns.ts","../src/recipes/v1/editImageToCover.ts"],"sourcesContent":["export { core } from \"./core\";\nexport { fullDocument } from \"./output.fullDocument\";\nexport { imageBlock } from \"./imageBlock\";\nexport { row } from \"./row\";\nexport { column } from \"./column\";\nexport { slide } from \"./slide\";\nexport { style } from \"./style\";\nexport { editingRules } from \"./editingRules\";\nexport { sizing } from \"./sizing\";\nexport { blockquote } from \"./blockquote\";\nexport { bulletList } from \"./bulletList\";\nexport { codeBlock } from \"./codeBlock\";\nexport { hardBreak } from \"./hardBreak\";\nexport { horizontalRule } from \"./horizontalRule\";\nexport { image } from \"./image\";\nexport { heading } from \"./heading\";\nexport { paragraph } from \"./paragraph\";\nexport { youtube } from \"./youtube\";\n\n","export const core = `\n<core>\nYou are given a BlockSlides document to CREATE or EDIT.\n\nDocument shape:\n- doc: { type: \"doc\", content: slide[] }\n- slide: { type: \"slide\", attrs?, content: row[] }\n- row: { type: \"row\", attrs?, content: column[] | block[] }\n- column: { type: \"column\", attrs?, content: (block | row)[] }\n- block: includes nodes like paragraph, heading, imageBlock, etc.\n\nRules:\n- Use only known node types and valid attrs. Do not invent attributes.\n- Prefer stable references: preserve slide.attrs.id if present.\n- Slides and flyers share the same JSON; flyers are slides sized via attrs and theme.\n</core>\n`.trim();\n\n\n","export const fullDocument = `\nOutput contract:\n- Return exactly one JSON object representing the ENTIRE document.\n- No prose, no markdown, no code fences, no comments. JSON only.\n- Include all required attrs. Use allowed enum values only.\n`.trim();\n\n\n","export const imageBlock = `\n<imageBlock>\nNode: imageBlock\nAttrs:\n- src (required): string (URL)\n- alt (optional): string\n- caption (optional): string\n- credit (optional): string\n- layout (optional): \"cover\" | \"contain\" | \"fill\" | \"focus\" | \"pattern\"\n- align (optional): \"left\" | \"center\" | \"right\" | \"stretch\" (default \"center\")\n- width (optional): number (px) or string (\"%\"/\"px\")\n- height (optional): number (px) or string (\"%\"/\"px\")\n- fullBleed (optional): boolean (removes radius; stretches width)\n- assetId (optional): string\n- focalX, focalY (optional): 0–100; spotlight position (when relevant)\n\nBehavior:\n- Numbers for width/height are interpreted as pixels.\n- layout:\n - cover: Fill container; crop edges as needed.\n - contain: Fit entirely; may letterbox.\n - fill: Stretch to container (may distort).\n - focus: Cover + radial spotlight at focalX/focalY.\n - pattern: Hide <img>; use tiled background (from src).\n- Do not set unknown attributes. Preserve existing valid attrs.\n</imageBlock>\n`.trim();\n\n\n","export const row = `\n<row>\nNode: row\nAttrs:\n- 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\"\n- className (optional): string (CSS classes)\n- backgroundMode (optional): \"none\" | \"color\" | \"image\" | \"imageOverlay\"\n- backgroundColor (optional): string (CSS color for row background)\n- backgroundImage (optional): string (URL for row-level background image)\n- backgroundOverlayColor (optional): string (overlay color when using imageOverlay)\n- backgroundOverlayOpacity (optional): number (0–1, overlay opacity)\n\nSemantics:\n- Fractions determine relative column flex:\n - 1-1: two equal columns\n - 2-1: first column is double width\n - 1-2: second column is double width\n - 1-1-1: three equal columns\n - 1-1-1-1: four equal columns\n- Empty layout (\"\", \"1\") acts as a single full-width column.\n- Use row backgrounds for horizontal bands (e.g., header strip) instead of attaching everything to the slide.\n</row>\n`.trim();\n\n\n","export const column = `\n<column>\nNode: column\nAttrs:\n- className (optional): string\n- contentMode (optional): \"default\" (future-friendly)\n- verticalAlign (optional): \"top\" | \"center\" | \"bottom\" (default \"top\")\n- horizontalAlign (optional): \"left\" | \"center\" | \"right\" | \"stretch\" (default \"left\")\n- padding (optional): \"none\" (future-friendly)\n- backgroundMode (optional): \"none\" | \"color\" | \"image\" | \"imageOverlay\"\n- backgroundColor (optional): string (CSS color for the column background)\n- backgroundImage (optional): string (URL for column-level background image)\n- backgroundOverlayColor (optional): string (overlay color when using imageOverlay)\n- backgroundOverlayOpacity (optional): number (0–1, overlay opacity)\n\nNotes:\n- Use className for spacing, colors, typography (e.g., Tailwind).\n- Keep nesting shallow; columns can contain rows or blocks as needed.\n</column>\n`.trim();\n\n\n","export const slide = `\n<slide>\nNode: slide\nAttrs:\n- id (optional): string (stable identifier; preserve if present)\n- className (optional): string (styling)\n- size (optional): \"16x9\" | \"4x3\" | \"a4-portrait\" | \"a4-landscape\" | \"letter-portrait\" | \"letter-landscape\" | \"linkedin-banner\"\n- backgroundMode (optional): \"none\" | \"color\" | \"image\" | \"imageOverlay\"\n- backgroundColor (optional): string (CSS color for solid backgrounds)\n- backgroundImage (optional): string (URL for slide-level background image)\n- backgroundOverlayColor (optional): string (color for the overlay when using imageOverlay)\n- backgroundOverlayOpacity (optional): number (0–1, opacity for the overlay)\n\nContent:\n- slide contains one or more rows.\n\nNotes:\n- Flyers are slides sized for paper (e.g., size: \"a4-portrait\").\n- Set size to control canvas dimensions; theme applies the exact width/height.\n- For background images, prefer backgroundMode/backgroundImage over Tailwind bg-[url(...)]; the extension will inject the correct CSS.\n</slide>\n`.trim();\n\n\n","export const style = `\n<style>\nStyling\n- Prefer using attrs.className for styling (e.g., Tailwind classes).\n- Use enums for canonical behaviors (e.g., imageBlock.layout).\n- When enums are insufficient (spacing, backgrounds), use className.\n</style>\n`.trim();\n\n\n","export const editingRules = `\n<General editing rules>\n- Preserve existing ids and valid attributes. Do not remove or rename known attrs.\n- Use only allowed enum values. Do not invent new enum values.\n- Avoid introducing new attributes that are not documented. If styling is needed, prefer className.\n- Keep the document valid: slide > row > column > blocks.\n</General editing rules>\n\n<Centering content in a column>\n- Columns are flex containers. Use their alignment attrs instead of per-block hacks.\n- To center all content vertically and horizontally inside a column:\n - Set column.attrs.verticalAlign = \"center\".\n - Set column.attrs.horizontalAlign = \"center\".\n- This will apply to headings, paragraphs, imageBlocks, and other blocks inside that column.\n- Example:\n - Before: column.attrs = { verticalAlign: \"top\", horizontalAlign: \"left\", padding: \"none\" }\n - After: column.attrs = { verticalAlign: \"center\", horizontalAlign: \"center\", padding: \"none\" }\n</Centering content in a column>\n\n<Backgrounds (slides, rows, columns)>\n- Use structured background attrs instead of raw Tailwind bg-[url(...)] when setting background images.\n- If you use bg-[...], the image will not work because the tailwind classes we need have been tree shaken off - instead use the attributes.\n- For slide-level backgrounds (hero/flyer):\n - Use slide.attrs.backgroundMode = \"color\" | \"image\" | \"imageOverlay\".\n - For images, set slide.attrs.backgroundImage to the image URL.\n - For overlays, set slide.attrs.backgroundOverlayColor (e.g., \"rgba(0,0,0,0.8)\") and slide.attrs.backgroundOverlayOpacity (0–1).\n- For horizontal bands, use row-level backgrounds (row.attrs.background*).\n- For panel-style sections, use column-level backgrounds (column.attrs.background*).\n- Do not mix multiple background images on the same node; prefer one backgroundMode per slide/row/column and layer additional visuals as imageBlock nodes.\n</Backgrounds (slides, rows, columns)>\n\n<Text editing (headings and paragraphs)>\n- Preserve semantic types: do not turn headings into paragraphs or vice versa unless explicitly asked.\n- To change heading level, update heading.attrs.level (1–6) without changing its id.\n- To change the text, edit the text nodes inside content, keeping marks and structure when possible.\n- For alignment of text itself, prefer using the textAlign extension (textAlign: \"left\" | \"center\" | \"right\" | \"justify\") if configured.\n- Do not introduce inline HTML; represent formatting via marks (bold, italic, underline, etc.).\n</Text editing (headings and paragraphs)>\n\n<Image blocks>\n- Use imageBlock for rich images; preserve src, assetId, and metadata unless the user explicitly asks to change them.\n- To change the alignment of an imageBlock within its column, set imageBlock.attrs.align to \"left\", \"center\", \"right\", or \"stretch\".\n- To change how the image is fit, adjust imageBlock.attrs.layout (for example: \"cover\", \"contain\", \"fill\", \"focus\", or a configured layout key).\n- When centering both text and image in a column, combine:\n - column verticalAlign/horizontalAlign for layout, and\n - imageBlock align for how the image itself sits in the column.\n- Do not invent new layout or align values that are not documented in the schema.\n</Image blocks>\n\n`.trim();\n\n\n","export const sizing = `\n<sizing>\nSizing\n- Slides and flyers share the same JSON. Flyers are slides sized via slide.attrs.size and theme rules.\n- Allowed sizes: \"16x9\" | \"4x3\" | \"a4-portrait\" | \"a4-landscape\" | \"letter-portrait\" | \"letter-landscape\" | \"linkedin-banner\".\n- Editors may render with fixed canvases or dynamic mode. The default is fixed; dynamic stretches to container with preserved aspect.\n</sizing>\n`.trim();\n\n\n","export const blockquote = `\n<blockquote>\nNode: blockquote\nAttrs:\n- HTML-only; no required JSON attrs beyond optional styling such as className.\n\nContent:\n- One or more block nodes (typically paragraphs, headings, lists).\n\nSemantics:\n- Use for quoted text or callouts inside a column or row.\n- Styling should be applied via className on the surrounding column/slide, not by inventing new attrs here.\n</blockquote>\n`.trim();\n\n\n","export const bulletList = `\n<bulletList>\nNode: bulletList\nAttrs:\n- HTML-only; no required JSON attrs beyond optional styling such as className.\n\nContent:\n- One or more list item nodes (listItem) that contain paragraphs or inline content.\n\nSemantics:\n- Represents an unordered list rendered as <ul>.\n- Use when you need bullet points inside a column or blockquote.\n- Do not use bulletList as a top-level child of doc; it belongs inside a column/row structure.\n</bulletList>\n`.trim();\n\n\n","export const codeBlock = `\n<codeBlock>\nNode: codeBlock\nAttrs:\n- language (optional): string | null (e.g., \"js\", \"ts\", \"python\").\n\nContent:\n- Plain text only (no child nodes); used for preformatted code samples.\n\nSemantics:\n- Renders as <pre><code>…</code></pre>.\n- language controls a CSS class (e.g., \"language-js\") for syntax highlighting.\n- Use when the user explicitly wants a fenced code block, not inline code in a paragraph.\n</codeBlock>\n`.trim();\n\n\n","export const hardBreak = `\n<hardBreak>\nNode: hardBreak\nAttrs:\n- None (HTML-only); behaves like a manual line break.\n\nContent:\n- Inline-only; used within paragraphs or headings.\n\nSemantics:\n- Renders as <br> and as a newline in plain text exports.\n- Use when the user requests a line break without starting a new paragraph.\n</hardBreak>\n`.trim();\n\n\n","export const horizontalRule = `\n<horizontalRule>\nNode: horizontalRule\nAttrs:\n- HTML-only; no JSON attrs beyond optional styling via surrounding layout.\n\nContent:\n- No children; this is a self-contained separator.\n\nSemantics:\n- Renders as <hr>.\n- Use to visually separate sections within a slide (for example, between rows of text).\n</horizontalRule>\n`.trim();\n\n\n","export const image = `\n<image>\nNode: image\nAttrs:\n- src (required): string (URL to the image).\n- alt (optional): string (accessibility text).\n- title (optional): string (tooltip / caption).\n- width, height (optional): numbers (px) used as hints for rendering.\n\nContent:\n- No children; this is an atomic inline or block-level image node depending on editor configuration.\n\nSemantics:\n- Renders as a simple <img>, unlike imageBlock which adds rich framing/caption UI.\n- Prefer imageBlock for designed layouts; use image for simple inline images in paragraphs.\n</image>\n`.trim();\n\n\n","export const heading = `\n<heading>\nNode: heading\nAttrs:\n- level (required): 1 | 2 | 3 | 4 | 5 | 6.\n\nContent:\n- Inline content (text, marks, inline nodes).\n\nSemantics:\n- Renders as <h1>…<h6> depending on level.\n- Use level 1–2 for main slide titles, 3–4 for section headings, 5–6 for subtle labels.\n- Do not invent other attrs; typography/styling should come from className on columns/slides.\n</heading>\n`.trim();\n\n\n","export const paragraph = `\n<paragraph>\nNode: paragraph\nAttrs:\n- HTML-only; no structured JSON attrs beyond optional styling such as className.\n\nContent:\n- Inline content (text with marks, inline nodes such as image or hardBreak).\n\nSemantics:\n- Default text block inside columns and rows.\n- Multiple paragraphs can be stacked within the same column to create vertical rhythm.\n</paragraph>\n`.trim();\n\n\n","export const youtube = `\n<youtube>\nNode: youtube\nAttrs:\n- src (required): string (public YouTube URL).\n- start (optional): number (start time in seconds).\n- width (optional): number (frame width in px).\n- height (optional): number (frame height in px).\n\nContent:\n- No children; this is an atomic embed node.\n\nSemantics:\n- Renders as an embedded YouTube iframe wrapped in a container <div>.\n- Use for video embeds inside a column or row; keep other text in separate paragraphs/columns.\n- Do not embed raw <iframe> HTML directly; always use the youtube node with attrs.\n</youtube>\n`.trim();\n\n\n","export { slides } from \"./slides\";\nexport { flyers } from \"./flyers\";\n\n\n","export const slides = `\nExamples: Slides (full-document output)\n\n{\n \"type\": \"doc\",\n \"content\": [\n {\n \"type\": \"slide\",\n \"attrs\": { \"id\": \"intro\", \"size\": \"16x9\" },\n \"content\": [\n {\n \"type\": \"row\",\n \"attrs\": { \"layout\": \"1-1\" },\n \"content\": [\n { \"type\": \"column\", \"content\": [\n { \"type\": \"heading\", \"attrs\": { \"level\": 2 }, \"content\": [{ \"type\": \"text\", \"text\": \"Welcome\" }] }\n ]},\n { \"type\": \"column\", \"content\": [\n { \"type\": \"imageBlock\", \"attrs\": { \"src\": \"https://picsum.photos/seed/welcome/1200/800\", \"layout\": \"cover\", \"align\": \"center\" } }\n ]}\n ]\n }\n ]\n }\n ]\n}\n\n/* more-slide-examples to be added here */\n`.trim();\n\n\n","export const flyers = `\nExamples: Flyers (A4 slides; full-document output)\n\n{\n \"type\": \"doc\",\n \"content\": [\n {\n \"type\": \"slide\",\n \"attrs\": { \"id\": \"a4-flyer\", \"size\": \"a4-portrait\", \"className\": \"bg-white text-slate-900\" },\n \"content\": [\n {\n \"type\": \"row\",\n \"attrs\": { \"layout\": \"1\" },\n \"content\": [\n { \"type\": \"column\", \"content\": [\n { \"type\": \"heading\", \"attrs\": { \"level\": 2 }, \"content\": [{ \"type\": \"text\", \"text\": \"Event Title\" }] },\n { \"type\": \"paragraph\", \"content\": [{ \"type\": \"text\", \"text\": \"Date · Location\" }] },\n { \"type\": \"imageBlock\", \"attrs\": { \"src\": \"https://picsum.photos/seed/a4/1600/1000\", \"layout\": \"contain\", \"align\": \"center\", \"height\": 320 } }\n ]}\n ]\n }\n ]\n }\n ]\n}\n\n/* more-flyer-examples to be added here */\n`.trim();\n\n\n","export { minimalCreate } from \"./minimalCreate\";\nexport { imageEditing } from \"./imageEditing\";\nexport { all } from \"./all\";\nexport { allSchemas } from \"./allSchemas\";\nexport { allContexts } from \"./allContexts\";\n\n","import { core, fullDocument, slide, row, column, style } from \"../../contexts/v1\";\n\nexport const minimalCreate = [core, fullDocument, slide, row, column, style].join(\"\\n\\n\");\n\n\n","import { core, fullDocument, imageBlock, editingRules } from \"../../contexts/v1\";\n\nexport const imageEditing = [core, fullDocument, imageBlock, editingRules].join(\"\\n\\n\");\n\n\n","import * as ctx from \"../../contexts/v1\";\n\nexport const all = [\n ctx.core,\n ctx.fullDocument,\n ctx.slide,\n ctx.row,\n ctx.column,\n ctx.style,\n ctx.sizing,\n // Core content blocks and media\n ctx.imageBlock,\n ctx.blockquote,\n ctx.bulletList,\n ctx.heading,\n ctx.paragraph,\n ctx.image,\n ctx.codeBlock,\n ctx.hardBreak,\n ctx.horizontalRule,\n ctx.youtube,\n // Editing behavior\n ctx.editingRules,\n].join(\"\\n\\n\");\n\n\n","export { default as imageBlock } from \"./imageBlock.schema.json\";\nexport { default as row } from \"./row.schema.json\";\nexport { default as column } from \"./column.schema.json\";\nexport { default as slide } from \"./slide.schema.json\";\nexport { default as blockquote } from \"./blockquote.schema.json\";\nexport { default as bulletList } from \"./bulletList.schema.json\";\nexport { default as codeBlock } from \"./codeBlock.schema.json\";\nexport { default as hardBreak } from \"./hardBreak.schema.json\";\nexport { default as horizontalRule } from \"./horizontalRule.schema.json\";\nexport { default as image } from \"./image.schema.json\";\nexport { default as heading } from \"./heading.schema.json\";\nexport { default as paragraph } from \"./paragraph.schema.json\";\nexport { default as youtube } from \"./youtube.schema.json\";\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"imageBlock\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"imageBlock\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"src\": { \"type\": \"string\", \"minLength\": 1 },\n \"alt\": { \"type\": \"string\" },\n \"caption\": { \"type\": \"string\" },\n \"credit\": { \"type\": \"string\" },\n \"layout\": { \"enum\": [\"cover\", \"contain\", \"fill\", \"focus\", \"pattern\", null] },\n \"align\": { \"enum\": [\"left\", \"center\", \"right\", \"stretch\", null] },\n \"width\": { \"type\": [\"number\", \"string\", \"null\"] },\n \"height\": { \"type\": [\"number\", \"string\", \"null\"] },\n \"fullBleed\": { \"type\": \"boolean\" },\n \"assetId\": { \"type\": [\"string\", \"null\"] },\n \"focalX\": { \"type\": [\"number\", \"null\"], \"minimum\": 0, \"maximum\": 100 },\n \"focalY\": { \"type\": [\"number\", \"null\"], \"minimum\": 0, \"maximum\": 100 }\n },\n \"required\": [\"src\"],\n \"additionalProperties\": false\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"row\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"row\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"layout\": {\n \"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]\n },\n \"className\": { \"type\": [\"string\", \"null\"] },\n \"backgroundMode\": {\n \"enum\": [\"none\", \"color\", \"image\", \"imageOverlay\", null]\n },\n \"backgroundColor\": { \"type\": [\"string\", \"null\"] },\n \"backgroundImage\": { \"type\": [\"string\", \"null\"] },\n \"backgroundOverlayColor\": { \"type\": [\"string\", \"null\"] },\n \"backgroundOverlayOpacity\": { \"type\": [\"number\", \"null\"] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"column\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"column\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"className\": { \"type\": [\"string\", \"null\"] },\n \"contentMode\": { \"enum\": [\"default\", null] },\n \"verticalAlign\": { \"enum\": [\"top\", \"center\", \"bottom\", null] },\n \"horizontalAlign\": { \"enum\": [\"left\", \"center\", \"right\", \"stretch\", null] },\n \"padding\": { \"enum\": [\"none\", null] },\n \"backgroundMode\": {\n \"enum\": [\"none\", \"color\", \"image\", \"imageOverlay\", null]\n },\n \"backgroundColor\": { \"type\": [\"string\", \"null\"] },\n \"backgroundImage\": { \"type\": [\"string\", \"null\"] },\n \"backgroundOverlayColor\": { \"type\": [\"string\", \"null\"] },\n \"backgroundOverlayOpacity\": { \"type\": [\"number\", \"null\"] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"slide\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"slide\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": { \"type\": [\"string\", \"null\"] },\n \"className\": { \"type\": [\"string\", \"null\"] },\n \"size\": {\n \"enum\": [\n \"16x9\",\n \"4x3\",\n \"a4-portrait\",\n \"a4-landscape\",\n \"letter-portrait\",\n \"letter-landscape\",\n \"linkedin-banner\",\n null\n ]\n },\n \"backgroundMode\": {\n \"enum\": [\"none\", \"color\", \"image\", \"imageOverlay\", null]\n },\n \"backgroundColor\": { \"type\": [\"string\", \"null\"] },\n \"backgroundImage\": { \"type\": [\"string\", \"null\"] },\n \"backgroundOverlayColor\": { \"type\": [\"string\", \"null\"] },\n \"backgroundOverlayOpacity\": { \"type\": [\"number\", \"null\"] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"blockquote\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"blockquote\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"bulletList\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"bulletList\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"codeBlock\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"codeBlock\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"language\": { \"type\": [\"string\", \"null\"] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"hardBreak\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"hardBreak\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"horizontalRule\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"horizontalRule\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"image\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"image\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"src\": { \"type\": [\"string\", \"null\"] },\n \"alt\": { \"type\": [\"string\", \"null\"] },\n \"title\": { \"type\": [\"string\", \"null\"] },\n \"width\": { \"type\": [\"number\", \"null\"] },\n \"height\": { \"type\": [\"number\", \"null\"] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"heading\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"heading\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"level\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 6\n }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"paragraph\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"paragraph\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"youtube\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"youtube\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"src\": { \"type\": [\"string\", \"null\"] },\n \"start\": { \"type\": \"number\" },\n \"width\": { \"type\": \"number\" },\n \"height\": { \"type\": \"number\" }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","import * as schemas from \"../../schemas/v1\";\n\n/**\n * Human- and AI-readable bundle of all v1 JSON Schemas.\n *\n * Wrapped in a top-level <Schemas>…</Schemas> tag, with each schema\n * enclosed in its own <{name}Schema>…</{name}Schema> block.\n */\nexport const allSchemas = `\n<Schemas>\n${Object.entries(schemas)\n .map(\n ([name, schema]) =>\n `<${name}Schema>\\n` +\n JSON.stringify(schema as unknown, null, 2) +\n `\\n</${name}Schema>`\n )\n .join(\"\\n\\n\")}\n</Schemas>\n`.trim();\n\n\n\n","import * as ctx from \"../../contexts/v1\";\n\n/**\n * All v1 context atoms concatenated into a single string,\n * wrapped in a top-level <Context>…</Context> block.\n */\nexport const allContexts = `\n<Context>\n${[\n ctx.core,\n ctx.fullDocument,\n ctx.slide,\n ctx.row,\n ctx.column,\n ctx.style,\n ctx.sizing,\n ctx.imageBlock,\n ctx.blockquote,\n ctx.bulletList,\n ctx.heading,\n ctx.paragraph,\n ctx.image,\n ctx.codeBlock,\n ctx.hardBreak,\n ctx.horizontalRule,\n ctx.youtube,\n ctx.editingRules,\n].join(\"\\n\\n\")}\n</Context>\n`.trim();\n\n\n\n","export { createSlide } from \"./createSlide\";\nexport { addTwoColumns } from \"./addTwoColumns\";\nexport { editImageToCover } from \"./editImageToCover\";\n\n\n","import { core, fullDocument, slide, row, column } from \"../../contexts/v1\";\n\nexport const createSlide = [\n core,\n fullDocument,\n slide,\n row,\n column,\n `\nReturn a single JSON document that creates one 16x9 slide with a 1-1 row:\n{\n \"type\": \"doc\",\n \"content\": [\n {\n \"type\": \"slide\",\n \"attrs\": { \"size\": \"16x9\" },\n \"content\": [\n { \"type\": \"row\", \"attrs\": { \"layout\": \"1-1\" }, \"content\": [\n { \"type\": \"column\", \"content\": [{ \"type\": \"paragraph\", \"content\": [{ \"type\": \"text\", \"text\": \"Left\" }] }] },\n { \"type\": \"column\", \"content\": [{ \"type\": \"paragraph\", \"content\": [{ \"type\": \"text\", \"text\": \"Right\" }] }] }\n ] }\n ]\n }\n ]\n}\n`.trim(),\n].join(\"\\n\\n\");\n\n\n","import { core, fullDocument, row, column } from \"../../contexts/v1\";\n\nexport const addTwoColumns = [\n core,\n fullDocument,\n row,\n column,\n `\nReturn a full document where the first slide contains a row with layout \"1-1\" and two columns with simple text paragraphs.\n`.trim(),\n].join(\"\\n\\n\");\n\n\n","import { core, fullDocument, imageBlock, editingRules } from \"../../contexts/v1\";\n\nexport const editImageToCover = [\n core,\n fullDocument,\n imageBlock,\n editingRules,\n `\nUpdate an existing imageBlock on the first slide so it uses layout \"cover\" and align \"center\". Preserve all other attributes.\n`.trim(),\n].join(\"\\n\\n\");\n\n\n"],"mappings":"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","names":["v1_exports","v1_exports","v1_exports","v1_exports","v1_exports"]}
|
package/package.json
CHANGED
|
@@ -7,6 +7,11 @@ Attrs:
|
|
|
7
7
|
- verticalAlign (optional): "top" | "center" | "bottom" (default "top")
|
|
8
8
|
- horizontalAlign (optional): "left" | "center" | "right" | "stretch" (default "left")
|
|
9
9
|
- padding (optional): "none" (future-friendly)
|
|
10
|
+
- backgroundMode (optional): "none" | "color" | "image" | "imageOverlay"
|
|
11
|
+
- backgroundColor (optional): string (CSS color for the column background)
|
|
12
|
+
- backgroundImage (optional): string (URL for column-level background image)
|
|
13
|
+
- backgroundOverlayColor (optional): string (overlay color when using imageOverlay)
|
|
14
|
+
- backgroundOverlayOpacity (optional): number (0–1, overlay opacity)
|
|
10
15
|
|
|
11
16
|
Notes:
|
|
12
17
|
- Use className for spacing, colors, typography (e.g., Tailwind).
|
|
@@ -17,6 +17,18 @@ export const editingRules = `
|
|
|
17
17
|
- After: column.attrs = { verticalAlign: "center", horizontalAlign: "center", padding: "none" }
|
|
18
18
|
</Centering content in a column>
|
|
19
19
|
|
|
20
|
+
<Backgrounds (slides, rows, columns)>
|
|
21
|
+
- Use structured background attrs instead of raw Tailwind bg-[url(...)] when setting background images.
|
|
22
|
+
- If you use bg-[...], the image will not work because the tailwind classes we need have been tree shaken off - instead use the attributes.
|
|
23
|
+
- For slide-level backgrounds (hero/flyer):
|
|
24
|
+
- Use slide.attrs.backgroundMode = "color" | "image" | "imageOverlay".
|
|
25
|
+
- For images, set slide.attrs.backgroundImage to the image URL.
|
|
26
|
+
- For overlays, set slide.attrs.backgroundOverlayColor (e.g., "rgba(0,0,0,0.8)") and slide.attrs.backgroundOverlayOpacity (0–1).
|
|
27
|
+
- For horizontal bands, use row-level backgrounds (row.attrs.background*).
|
|
28
|
+
- For panel-style sections, use column-level backgrounds (column.attrs.background*).
|
|
29
|
+
- Do not mix multiple background images on the same node; prefer one backgroundMode per slide/row/column and layer additional visuals as imageBlock nodes.
|
|
30
|
+
</Backgrounds (slides, rows, columns)>
|
|
31
|
+
|
|
20
32
|
<Text editing (headings and paragraphs)>
|
|
21
33
|
- Preserve semantic types: do not turn headings into paragraphs or vice versa unless explicitly asked.
|
|
22
34
|
- To change heading level, update heading.attrs.level (1–6) without changing its id.
|
package/src/contexts/v1/row.ts
CHANGED
|
@@ -4,6 +4,11 @@ Node: row
|
|
|
4
4
|
Attrs:
|
|
5
5
|
- 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"
|
|
6
6
|
- className (optional): string (CSS classes)
|
|
7
|
+
- backgroundMode (optional): "none" | "color" | "image" | "imageOverlay"
|
|
8
|
+
- backgroundColor (optional): string (CSS color for row background)
|
|
9
|
+
- backgroundImage (optional): string (URL for row-level background image)
|
|
10
|
+
- backgroundOverlayColor (optional): string (overlay color when using imageOverlay)
|
|
11
|
+
- backgroundOverlayOpacity (optional): number (0–1, overlay opacity)
|
|
7
12
|
|
|
8
13
|
Semantics:
|
|
9
14
|
- Fractions determine relative column flex:
|
|
@@ -13,6 +18,7 @@ Semantics:
|
|
|
13
18
|
- 1-1-1: three equal columns
|
|
14
19
|
- 1-1-1-1: four equal columns
|
|
15
20
|
- Empty layout ("", "1") acts as a single full-width column.
|
|
21
|
+
- Use row backgrounds for horizontal bands (e.g., header strip) instead of attaching everything to the slide.
|
|
16
22
|
</row>
|
|
17
23
|
`.trim();
|
|
18
24
|
|
package/src/contexts/v1/slide.ts
CHANGED
|
@@ -5,6 +5,11 @@ Attrs:
|
|
|
5
5
|
- id (optional): string (stable identifier; preserve if present)
|
|
6
6
|
- className (optional): string (styling)
|
|
7
7
|
- size (optional): "16x9" | "4x3" | "a4-portrait" | "a4-landscape" | "letter-portrait" | "letter-landscape" | "linkedin-banner"
|
|
8
|
+
- backgroundMode (optional): "none" | "color" | "image" | "imageOverlay"
|
|
9
|
+
- backgroundColor (optional): string (CSS color for solid backgrounds)
|
|
10
|
+
- backgroundImage (optional): string (URL for slide-level background image)
|
|
11
|
+
- backgroundOverlayColor (optional): string (color for the overlay when using imageOverlay)
|
|
12
|
+
- backgroundOverlayOpacity (optional): number (0–1, opacity for the overlay)
|
|
8
13
|
|
|
9
14
|
Content:
|
|
10
15
|
- slide contains one or more rows.
|
|
@@ -12,6 +17,7 @@ Content:
|
|
|
12
17
|
Notes:
|
|
13
18
|
- Flyers are slides sized for paper (e.g., size: "a4-portrait").
|
|
14
19
|
- Set size to control canvas dimensions; theme applies the exact width/height.
|
|
20
|
+
- For background images, prefer backgroundMode/backgroundImage over Tailwind bg-[url(...)]; the extension will inject the correct CSS.
|
|
15
21
|
</slide>
|
|
16
22
|
`.trim();
|
|
17
23
|
|
|
@@ -11,7 +11,14 @@
|
|
|
11
11
|
"contentMode": { "enum": ["default", null] },
|
|
12
12
|
"verticalAlign": { "enum": ["top", "center", "bottom", null] },
|
|
13
13
|
"horizontalAlign": { "enum": ["left", "center", "right", "stretch", null] },
|
|
14
|
-
"padding": { "enum": ["none", null] }
|
|
14
|
+
"padding": { "enum": ["none", null] },
|
|
15
|
+
"backgroundMode": {
|
|
16
|
+
"enum": ["none", "color", "image", "imageOverlay", null]
|
|
17
|
+
},
|
|
18
|
+
"backgroundColor": { "type": ["string", "null"] },
|
|
19
|
+
"backgroundImage": { "type": ["string", "null"] },
|
|
20
|
+
"backgroundOverlayColor": { "type": ["string", "null"] },
|
|
21
|
+
"backgroundOverlayOpacity": { "type": ["number", "null"] }
|
|
15
22
|
},
|
|
16
23
|
"additionalProperties": true
|
|
17
24
|
}
|
|
@@ -10,7 +10,14 @@
|
|
|
10
10
|
"layout": {
|
|
11
11
|
"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]
|
|
12
12
|
},
|
|
13
|
-
"className": { "type": ["string", "null"] }
|
|
13
|
+
"className": { "type": ["string", "null"] },
|
|
14
|
+
"backgroundMode": {
|
|
15
|
+
"enum": ["none", "color", "image", "imageOverlay", null]
|
|
16
|
+
},
|
|
17
|
+
"backgroundColor": { "type": ["string", "null"] },
|
|
18
|
+
"backgroundImage": { "type": ["string", "null"] },
|
|
19
|
+
"backgroundOverlayColor": { "type": ["string", "null"] },
|
|
20
|
+
"backgroundOverlayOpacity": { "type": ["number", "null"] }
|
|
14
21
|
},
|
|
15
22
|
"additionalProperties": true
|
|
16
23
|
}
|
|
@@ -20,7 +20,14 @@
|
|
|
20
20
|
"linkedin-banner",
|
|
21
21
|
null
|
|
22
22
|
]
|
|
23
|
-
}
|
|
23
|
+
},
|
|
24
|
+
"backgroundMode": {
|
|
25
|
+
"enum": ["none", "color", "image", "imageOverlay", null]
|
|
26
|
+
},
|
|
27
|
+
"backgroundColor": { "type": ["string", "null"] },
|
|
28
|
+
"backgroundImage": { "type": ["string", "null"] },
|
|
29
|
+
"backgroundOverlayColor": { "type": ["string", "null"] },
|
|
30
|
+
"backgroundOverlayOpacity": { "type": ["number", "null"] }
|
|
24
31
|
},
|
|
25
32
|
"additionalProperties": true
|
|
26
33
|
}
|