mulmocast 2.1.39 → 2.1.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -0
- package/lib/actions/pdf.js +18 -15
- package/lib/slide/blocks.d.ts +5 -0
- package/lib/slide/blocks.js +97 -0
- package/lib/slide/index.d.ts +5 -0
- package/lib/slide/index.js +7 -0
- package/lib/slide/layouts/big_quote.d.ts +2 -0
- package/lib/slide/layouts/big_quote.js +19 -0
- package/lib/slide/layouts/columns.d.ts +2 -0
- package/lib/slide/layouts/columns.js +56 -0
- package/lib/slide/layouts/comparison.d.ts +2 -0
- package/lib/slide/layouts/comparison.js +28 -0
- package/lib/slide/layouts/funnel.d.ts +2 -0
- package/lib/slide/layouts/funnel.js +27 -0
- package/lib/slide/layouts/grid.d.ts +2 -0
- package/lib/slide/layouts/grid.js +43 -0
- package/lib/slide/layouts/index.d.ts +3 -0
- package/lib/slide/layouts/index.js +43 -0
- package/lib/slide/layouts/matrix.d.ts +2 -0
- package/lib/slide/layouts/matrix.js +53 -0
- package/lib/slide/layouts/split.d.ts +2 -0
- package/lib/slide/layouts/split.js +38 -0
- package/lib/slide/layouts/stats.d.ts +2 -0
- package/lib/slide/layouts/stats.js +23 -0
- package/lib/slide/layouts/table.d.ts +2 -0
- package/lib/slide/layouts/table.js +46 -0
- package/lib/slide/layouts/timeline.d.ts +2 -0
- package/lib/slide/layouts/timeline.js +24 -0
- package/lib/slide/layouts/title.d.ts +2 -0
- package/lib/slide/layouts/title.js +17 -0
- package/lib/slide/render.d.ts +3 -0
- package/lib/slide/render.js +29 -0
- package/lib/slide/schema.d.ts +4009 -0
- package/lib/slide/schema.js +330 -0
- package/lib/slide/utils.d.ts +32 -0
- package/lib/slide/utils.js +112 -0
- package/lib/types/schema.d.ts +4487 -38
- package/lib/types/schema.js +11 -0
- package/lib/types/slide.d.ts +4009 -0
- package/lib/types/slide.js +330 -0
- package/lib/utils/context.d.ts +1169 -9
- package/lib/utils/image_plugins/index.js +14 -1
- package/lib/utils/image_plugins/slide.d.ts +5 -0
- package/lib/utils/image_plugins/slide.js +35 -0
- package/package.json +8 -8
- package/scripts/test/golden_age_of_discovery.json +270 -0
- package/scripts/test/test_slide_01.json +105 -0
- package/scripts/test/test_slide_11.json +144 -0
- package/scripts/test/test_slide_12.json +887 -0
- package/scripts/test/test_slide_showcase_corporate.json +497 -0
- package/scripts/test/test_slide_showcase_creative.json +545 -0
- package/scripts/test/test_slide_showcase_minimal.json +501 -0
- package/scripts/test/test_slide_showcase_pop.json +547 -0
- package/scripts/test/test_slide_showcase_warm.json +486 -0
|
@@ -0,0 +1,887 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$mulmocast": { "version": "1.1" },
|
|
3
|
+
"lang": "en",
|
|
4
|
+
"title": "Slide Plugin Showcase - All Layouts",
|
|
5
|
+
"beats": [
|
|
6
|
+
{
|
|
7
|
+
"text": "Title slide with decorative elements",
|
|
8
|
+
"image": {
|
|
9
|
+
"type": "slide",
|
|
10
|
+
"theme": {
|
|
11
|
+
"colors": {
|
|
12
|
+
"bg": "0F172A",
|
|
13
|
+
"bgCard": "1E293B",
|
|
14
|
+
"bgCardAlt": "334155",
|
|
15
|
+
"text": "F8FAFC",
|
|
16
|
+
"textMuted": "CBD5E1",
|
|
17
|
+
"textDim": "64748B",
|
|
18
|
+
"primary": "3B82F6",
|
|
19
|
+
"accent": "8B5CF6",
|
|
20
|
+
"success": "22C55E",
|
|
21
|
+
"warning": "F59E0B",
|
|
22
|
+
"danger": "EF4444",
|
|
23
|
+
"info": "14B8A6",
|
|
24
|
+
"highlight": "EC4899"
|
|
25
|
+
},
|
|
26
|
+
"fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
|
|
27
|
+
},
|
|
28
|
+
"slide": {
|
|
29
|
+
"layout": "title",
|
|
30
|
+
"title": "MulmoCast Slide DSL\nShowcase 2026",
|
|
31
|
+
"subtitle": "All 11 layouts, 7 content blocks, and rich theming in action",
|
|
32
|
+
"author": "MulmoCast Team | February 2026",
|
|
33
|
+
"note": "This showcase demonstrates every slide layout and content block type available in the MulmoCast Slide DSL."
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"text": "Three-column workflow with numbered steps and arrows",
|
|
39
|
+
"image": {
|
|
40
|
+
"type": "slide",
|
|
41
|
+
"theme": {
|
|
42
|
+
"colors": {
|
|
43
|
+
"bg": "0F172A",
|
|
44
|
+
"bgCard": "1E293B",
|
|
45
|
+
"bgCardAlt": "334155",
|
|
46
|
+
"text": "F8FAFC",
|
|
47
|
+
"textMuted": "CBD5E1",
|
|
48
|
+
"textDim": "64748B",
|
|
49
|
+
"primary": "3B82F6",
|
|
50
|
+
"accent": "8B5CF6",
|
|
51
|
+
"success": "22C55E",
|
|
52
|
+
"warning": "F59E0B",
|
|
53
|
+
"danger": "EF4444",
|
|
54
|
+
"info": "14B8A6",
|
|
55
|
+
"highlight": "EC4899"
|
|
56
|
+
},
|
|
57
|
+
"fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
|
|
58
|
+
},
|
|
59
|
+
"slide": {
|
|
60
|
+
"layout": "columns",
|
|
61
|
+
"accentColor": "primary",
|
|
62
|
+
"stepLabel": "WORKFLOW",
|
|
63
|
+
"title": "How It Works",
|
|
64
|
+
"subtitle": "From JSON to beautiful slides in three steps",
|
|
65
|
+
"showArrows": true,
|
|
66
|
+
"columns": [
|
|
67
|
+
{
|
|
68
|
+
"title": "Define",
|
|
69
|
+
"num": 1,
|
|
70
|
+
"accentColor": "primary",
|
|
71
|
+
"content": [
|
|
72
|
+
{ "type": "text", "value": "Write your slide data in structured JSON using the MulmoCast DSL schema." },
|
|
73
|
+
{ "type": "bullets", "items": ["Theme colors & fonts", "Layout selection", "Content blocks"] }
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"title": "Render",
|
|
78
|
+
"num": 2,
|
|
79
|
+
"accentColor": "accent",
|
|
80
|
+
"content": [
|
|
81
|
+
{ "type": "text", "value": "The renderer converts JSON into Tailwind-powered HTML documents." },
|
|
82
|
+
{ "type": "bullets", "items": ["11 layout engines", "Semantic color mapping", "Responsive design"] }
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"title": "Capture",
|
|
87
|
+
"num": 3,
|
|
88
|
+
"accentColor": "success",
|
|
89
|
+
"content": [
|
|
90
|
+
{ "type": "text", "value": "Puppeteer captures pixel-perfect screenshots from the HTML." },
|
|
91
|
+
{ "type": "bullets", "items": ["1280x720 default", "PNG output", "Batch processing"] }
|
|
92
|
+
]
|
|
93
|
+
}
|
|
94
|
+
],
|
|
95
|
+
"callout": { "label": "Tip", "text": "All steps run automatically via the mulmo images command", "color": "info", "leftBar": true }
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"text": "Key performance metrics with change indicators",
|
|
101
|
+
"image": {
|
|
102
|
+
"type": "slide",
|
|
103
|
+
"theme": {
|
|
104
|
+
"colors": {
|
|
105
|
+
"bg": "0F172A",
|
|
106
|
+
"bgCard": "1E293B",
|
|
107
|
+
"bgCardAlt": "334155",
|
|
108
|
+
"text": "F8FAFC",
|
|
109
|
+
"textMuted": "CBD5E1",
|
|
110
|
+
"textDim": "64748B",
|
|
111
|
+
"primary": "3B82F6",
|
|
112
|
+
"accent": "8B5CF6",
|
|
113
|
+
"success": "22C55E",
|
|
114
|
+
"warning": "F59E0B",
|
|
115
|
+
"danger": "EF4444",
|
|
116
|
+
"info": "14B8A6",
|
|
117
|
+
"highlight": "EC4899"
|
|
118
|
+
},
|
|
119
|
+
"fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
|
|
120
|
+
},
|
|
121
|
+
"slide": {
|
|
122
|
+
"layout": "stats",
|
|
123
|
+
"accentColor": "primary",
|
|
124
|
+
"title": "Platform Metrics",
|
|
125
|
+
"subtitle": "Real-time performance snapshot as of February 2026",
|
|
126
|
+
"stats": [
|
|
127
|
+
{ "value": "11", "label": "Layout Types", "color": "primary" },
|
|
128
|
+
{ "value": "7", "label": "Content Blocks", "color": "accent" },
|
|
129
|
+
{ "value": "13", "label": "Theme Colors", "color": "info" },
|
|
130
|
+
{ "value": "<1s", "label": "Render Time", "color": "success", "change": "-40%" }
|
|
131
|
+
],
|
|
132
|
+
"callout": { "text": "All metrics are validated at build time via Zod schemas", "align": "center" }
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"text": "Before and after comparison with content blocks",
|
|
138
|
+
"image": {
|
|
139
|
+
"type": "slide",
|
|
140
|
+
"theme": {
|
|
141
|
+
"colors": {
|
|
142
|
+
"bg": "0F172A",
|
|
143
|
+
"bgCard": "1E293B",
|
|
144
|
+
"bgCardAlt": "334155",
|
|
145
|
+
"text": "F8FAFC",
|
|
146
|
+
"textMuted": "CBD5E1",
|
|
147
|
+
"textDim": "64748B",
|
|
148
|
+
"primary": "3B82F6",
|
|
149
|
+
"accent": "8B5CF6",
|
|
150
|
+
"success": "22C55E",
|
|
151
|
+
"warning": "F59E0B",
|
|
152
|
+
"danger": "EF4444",
|
|
153
|
+
"info": "14B8A6",
|
|
154
|
+
"highlight": "EC4899"
|
|
155
|
+
},
|
|
156
|
+
"fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
|
|
157
|
+
},
|
|
158
|
+
"slide": {
|
|
159
|
+
"layout": "comparison",
|
|
160
|
+
"accentColor": "primary",
|
|
161
|
+
"stepLabel": "MIGRATION",
|
|
162
|
+
"title": "Before vs After",
|
|
163
|
+
"subtitle": "The shift from manual slide creation to DSL-driven automation",
|
|
164
|
+
"left": {
|
|
165
|
+
"title": "Manual (pptxgenjs)",
|
|
166
|
+
"accentColor": "danger",
|
|
167
|
+
"content": [
|
|
168
|
+
{ "type": "code", "code": "slide.addText('Title', {\n x: 0.5, y: 0.3,\n fontSize: 36,\n color: '3B82F6'\n});" },
|
|
169
|
+
{ "type": "bullets", "items": ["Repetitive API calls", "Magic numbers everywhere", "No type safety", "Hard to maintain"], "icon": "✗" },
|
|
170
|
+
{ "type": "metric", "value": "200+", "label": "Lines per slide", "color": "danger" }
|
|
171
|
+
],
|
|
172
|
+
"footer": "Error-prone and tedious"
|
|
173
|
+
},
|
|
174
|
+
"right": {
|
|
175
|
+
"title": "DSL (MulmoCast Slide)",
|
|
176
|
+
"accentColor": "success",
|
|
177
|
+
"content": [
|
|
178
|
+
{ "type": "code", "code": "{\n \"layout\": \"title\",\n \"title\": \"Hello World\",\n \"subtitle\": \"Clean & typed\"\n}" },
|
|
179
|
+
{ "type": "bullets", "items": ["Declarative JSON", "Zod-validated schemas", "Full type inference", "LLM-friendly output"], "icon": "✓" },
|
|
180
|
+
{ "type": "metric", "value": "5", "label": "Lines per slide", "color": "success" }
|
|
181
|
+
],
|
|
182
|
+
"footer": "Clean, fast, and reliable"
|
|
183
|
+
},
|
|
184
|
+
"callout": { "label": "Result", "text": "40x less code, 100% type-safe, LLM-generatable", "color": "success", "leftBar": true }
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"text": "Grid layout with icons showing content block types",
|
|
190
|
+
"image": {
|
|
191
|
+
"type": "slide",
|
|
192
|
+
"theme": {
|
|
193
|
+
"colors": {
|
|
194
|
+
"bg": "0F172A",
|
|
195
|
+
"bgCard": "1E293B",
|
|
196
|
+
"bgCardAlt": "334155",
|
|
197
|
+
"text": "F8FAFC",
|
|
198
|
+
"textMuted": "CBD5E1",
|
|
199
|
+
"textDim": "64748B",
|
|
200
|
+
"primary": "3B82F6",
|
|
201
|
+
"accent": "8B5CF6",
|
|
202
|
+
"success": "22C55E",
|
|
203
|
+
"warning": "F59E0B",
|
|
204
|
+
"danger": "EF4444",
|
|
205
|
+
"info": "14B8A6",
|
|
206
|
+
"highlight": "EC4899"
|
|
207
|
+
},
|
|
208
|
+
"fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
|
|
209
|
+
},
|
|
210
|
+
"slide": {
|
|
211
|
+
"layout": "grid",
|
|
212
|
+
"accentColor": "accent",
|
|
213
|
+
"title": "Content Block Types",
|
|
214
|
+
"subtitle": "7 atomic building blocks for composing slide content",
|
|
215
|
+
"gridColumns": 4,
|
|
216
|
+
"items": [
|
|
217
|
+
{ "title": "Text", "icon": "Aa", "accentColor": "primary", "description": "Paragraphs with bold, dim, color, alignment" },
|
|
218
|
+
{ "title": "Bullets", "icon": "•", "accentColor": "accent", "description": "Ordered/unordered lists with custom icons" },
|
|
219
|
+
{ "title": "Code", "icon": "</>", "accentColor": "info", "description": "Syntax-highlighted code blocks" },
|
|
220
|
+
{ "title": "Callout", "icon": "!", "accentColor": "warning", "description": "Quote, info, and warning callouts" },
|
|
221
|
+
{ "title": "Metric", "icon": "#", "accentColor": "success", "description": "Large numbers with labels and changes" },
|
|
222
|
+
{ "title": "Divider", "icon": "—", "accentColor": "danger", "description": "Horizontal separators with color" },
|
|
223
|
+
{ "title": "Image", "icon": "IMG", "accentColor": "highlight", "description": "External images with contain/cover fit" }
|
|
224
|
+
],
|
|
225
|
+
"footer": "All blocks are composable — combine them freely inside cards, panels, and grids"
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"text": "Inspirational quote with big quote layout",
|
|
231
|
+
"image": {
|
|
232
|
+
"type": "slide",
|
|
233
|
+
"theme": {
|
|
234
|
+
"colors": {
|
|
235
|
+
"bg": "0F172A",
|
|
236
|
+
"bgCard": "1E293B",
|
|
237
|
+
"bgCardAlt": "334155",
|
|
238
|
+
"text": "F8FAFC",
|
|
239
|
+
"textMuted": "CBD5E1",
|
|
240
|
+
"textDim": "64748B",
|
|
241
|
+
"primary": "3B82F6",
|
|
242
|
+
"accent": "8B5CF6",
|
|
243
|
+
"success": "22C55E",
|
|
244
|
+
"warning": "F59E0B",
|
|
245
|
+
"danger": "EF4444",
|
|
246
|
+
"info": "14B8A6",
|
|
247
|
+
"highlight": "EC4899"
|
|
248
|
+
},
|
|
249
|
+
"fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
|
|
250
|
+
},
|
|
251
|
+
"slide": {
|
|
252
|
+
"layout": "bigQuote",
|
|
253
|
+
"accentColor": "accent",
|
|
254
|
+
"quote": "The best way to predict the future is to invent it.",
|
|
255
|
+
"author": "Alan Kay",
|
|
256
|
+
"role": "Computer Scientist & Turing Award Recipient"
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
"text": "Project timeline with milestones",
|
|
262
|
+
"image": {
|
|
263
|
+
"type": "slide",
|
|
264
|
+
"theme": {
|
|
265
|
+
"colors": {
|
|
266
|
+
"bg": "0F172A",
|
|
267
|
+
"bgCard": "1E293B",
|
|
268
|
+
"bgCardAlt": "334155",
|
|
269
|
+
"text": "F8FAFC",
|
|
270
|
+
"textMuted": "CBD5E1",
|
|
271
|
+
"textDim": "64748B",
|
|
272
|
+
"primary": "3B82F6",
|
|
273
|
+
"accent": "8B5CF6",
|
|
274
|
+
"success": "22C55E",
|
|
275
|
+
"warning": "F59E0B",
|
|
276
|
+
"danger": "EF4444",
|
|
277
|
+
"info": "14B8A6",
|
|
278
|
+
"highlight": "EC4899"
|
|
279
|
+
},
|
|
280
|
+
"fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
|
|
281
|
+
},
|
|
282
|
+
"slide": {
|
|
283
|
+
"layout": "timeline",
|
|
284
|
+
"accentColor": "primary",
|
|
285
|
+
"stepLabel": "ROADMAP",
|
|
286
|
+
"title": "Development Timeline",
|
|
287
|
+
"subtitle": "Key milestones from prototype to production",
|
|
288
|
+
"items": [
|
|
289
|
+
{ "date": "Jan 2026", "title": "Prototype", "description": "pptxgenjs proof-of-concept\nBasic 5 layouts", "color": "primary", "done": true },
|
|
290
|
+
{ "date": "Feb 2026", "title": "DSL Design", "description": "JSON schema definition\nZod validation", "color": "accent", "done": true },
|
|
291
|
+
{ "date": "Feb 2026", "title": "Integration", "description": "mulmocast-cli plugin\n11 layouts + 7 blocks", "color": "info", "done": true },
|
|
292
|
+
{ "date": "Mar 2026", "title": "Package", "description": "Standalone npm package\nmulmocast-slide", "color": "warning" },
|
|
293
|
+
{ "date": "Q2 2026", "title": "LLM Agents", "description": "Auto-generation from\nnatural language prompts", "color": "success" }
|
|
294
|
+
]
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
"text": "Split layout with image on the right",
|
|
300
|
+
"image": {
|
|
301
|
+
"type": "slide",
|
|
302
|
+
"theme": {
|
|
303
|
+
"colors": {
|
|
304
|
+
"bg": "0F172A",
|
|
305
|
+
"bgCard": "1E293B",
|
|
306
|
+
"bgCardAlt": "334155",
|
|
307
|
+
"text": "F8FAFC",
|
|
308
|
+
"textMuted": "CBD5E1",
|
|
309
|
+
"textDim": "64748B",
|
|
310
|
+
"primary": "3B82F6",
|
|
311
|
+
"accent": "8B5CF6",
|
|
312
|
+
"success": "22C55E",
|
|
313
|
+
"warning": "F59E0B",
|
|
314
|
+
"danger": "EF4444",
|
|
315
|
+
"info": "14B8A6",
|
|
316
|
+
"highlight": "EC4899"
|
|
317
|
+
},
|
|
318
|
+
"fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
|
|
319
|
+
},
|
|
320
|
+
"slide": {
|
|
321
|
+
"layout": "split",
|
|
322
|
+
"accentColor": "primary",
|
|
323
|
+
"left": {
|
|
324
|
+
"title": "Architecture",
|
|
325
|
+
"label": "DESIGN",
|
|
326
|
+
"accentColor": "primary",
|
|
327
|
+
"ratio": 55,
|
|
328
|
+
"content": [
|
|
329
|
+
{ "type": "text", "value": "The slide module is fully self-contained with zero dependencies on mulmocast-cli internals.", "bold": true },
|
|
330
|
+
{ "type": "divider", "color": "primary" },
|
|
331
|
+
{
|
|
332
|
+
"type": "bullets",
|
|
333
|
+
"items": [
|
|
334
|
+
"Pure function: theme + slide → HTML string",
|
|
335
|
+
"Tailwind CSS via CDN for styling",
|
|
336
|
+
"Puppeteer for screenshot capture",
|
|
337
|
+
"Zod schemas for validation"
|
|
338
|
+
]
|
|
339
|
+
},
|
|
340
|
+
{ "type": "callout", "text": "Can be extracted to standalone mulmocast-slide package", "style": "info" }
|
|
341
|
+
]
|
|
342
|
+
},
|
|
343
|
+
"right": {
|
|
344
|
+
"title": "Module Structure",
|
|
345
|
+
"dark": true,
|
|
346
|
+
"ratio": 45,
|
|
347
|
+
"content": [
|
|
348
|
+
{
|
|
349
|
+
"type": "code",
|
|
350
|
+
"code": "src/slide/\n├── schema.ts # Zod schemas\n├── utils.ts # HTML helpers\n├── blocks.ts # Content blocks\n├── render.ts # Main entry\n├── index.ts # Public API\n└── layouts/\n ├── title.ts\n ├── columns.ts\n ├── comparison.ts\n ├── grid.ts\n ├── stats.ts\n ├── timeline.ts\n ├── split.ts\n ├── big_quote.ts\n ├── matrix.ts\n ├── table.ts\n └── funnel.ts"
|
|
351
|
+
}
|
|
352
|
+
]
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
"text": "2x2 strategic matrix with axis labels",
|
|
359
|
+
"image": {
|
|
360
|
+
"type": "slide",
|
|
361
|
+
"theme": {
|
|
362
|
+
"colors": {
|
|
363
|
+
"bg": "0F172A",
|
|
364
|
+
"bgCard": "1E293B",
|
|
365
|
+
"bgCardAlt": "334155",
|
|
366
|
+
"text": "F8FAFC",
|
|
367
|
+
"textMuted": "CBD5E1",
|
|
368
|
+
"textDim": "64748B",
|
|
369
|
+
"primary": "3B82F6",
|
|
370
|
+
"accent": "8B5CF6",
|
|
371
|
+
"success": "22C55E",
|
|
372
|
+
"warning": "F59E0B",
|
|
373
|
+
"danger": "EF4444",
|
|
374
|
+
"info": "14B8A6",
|
|
375
|
+
"highlight": "EC4899"
|
|
376
|
+
},
|
|
377
|
+
"fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
|
|
378
|
+
},
|
|
379
|
+
"slide": {
|
|
380
|
+
"layout": "matrix",
|
|
381
|
+
"accentColor": "info",
|
|
382
|
+
"title": "Slide Generation Approaches",
|
|
383
|
+
"subtitle": "Comparing methods by flexibility and ease of use",
|
|
384
|
+
"xAxis": { "low": "Low Flexibility", "high": "High Flexibility" },
|
|
385
|
+
"yAxis": { "low": "Hard to Use", "high": "Easy to Use" },
|
|
386
|
+
"cells": [
|
|
387
|
+
{ "label": "Manual HTML", "accentColor": "danger", "items": ["Full control", "Very tedious", "No validation"] },
|
|
388
|
+
{ "label": "MulmoCast DSL", "accentColor": "success", "items": ["Flexible layouts", "Type-safe JSON", "LLM-friendly"] },
|
|
389
|
+
{ "label": "pptxgenjs API", "accentColor": "warning", "items": ["Native PPTX", "Verbose code", "Magic numbers"] },
|
|
390
|
+
{ "label": "Template Engine", "accentColor": "info", "items": ["Pre-built themes", "Limited custom", "Quick start"] }
|
|
391
|
+
]
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
"text": "Data table with styled cells and row headers",
|
|
397
|
+
"image": {
|
|
398
|
+
"type": "slide",
|
|
399
|
+
"theme": {
|
|
400
|
+
"colors": {
|
|
401
|
+
"bg": "0F172A",
|
|
402
|
+
"bgCard": "1E293B",
|
|
403
|
+
"bgCardAlt": "334155",
|
|
404
|
+
"text": "F8FAFC",
|
|
405
|
+
"textMuted": "CBD5E1",
|
|
406
|
+
"textDim": "64748B",
|
|
407
|
+
"primary": "3B82F6",
|
|
408
|
+
"accent": "8B5CF6",
|
|
409
|
+
"success": "22C55E",
|
|
410
|
+
"warning": "F59E0B",
|
|
411
|
+
"danger": "EF4444",
|
|
412
|
+
"info": "14B8A6",
|
|
413
|
+
"highlight": "EC4899"
|
|
414
|
+
},
|
|
415
|
+
"fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
|
|
416
|
+
},
|
|
417
|
+
"slide": {
|
|
418
|
+
"layout": "table",
|
|
419
|
+
"accentColor": "primary",
|
|
420
|
+
"title": "Layout Feature Matrix",
|
|
421
|
+
"subtitle": "Capabilities of each slide layout type",
|
|
422
|
+
"headers": ["Layout", "Cards", "Content Blocks", "Callout Bar", "Axes/Headers"],
|
|
423
|
+
"rowHeaders": true,
|
|
424
|
+
"rows": [
|
|
425
|
+
["title", "—", "note only", "—", "—"],
|
|
426
|
+
[
|
|
427
|
+
"columns",
|
|
428
|
+
{ "text": "✓", "color": "success", "bold": true },
|
|
429
|
+
{ "text": "✓", "color": "success", "bold": true },
|
|
430
|
+
{ "text": "✓", "color": "success", "bold": true },
|
|
431
|
+
"—"
|
|
432
|
+
],
|
|
433
|
+
["comparison", "—", { "text": "✓", "color": "success", "bold": true }, { "text": "✓", "color": "success", "bold": true }, "—"],
|
|
434
|
+
["grid", "—", { "text": "✓", "color": "success", "bold": true }, "—", "—"],
|
|
435
|
+
["stats", "—", "—", { "text": "✓", "color": "success", "bold": true }, "—"],
|
|
436
|
+
["timeline", "—", "—", "—", "—"],
|
|
437
|
+
["split", "—", { "text": "✓", "color": "success", "bold": true }, "—", "—"],
|
|
438
|
+
["matrix", "—", { "text": "✓", "color": "success", "bold": true }, "—", { "text": "✓", "color": "success", "bold": true }],
|
|
439
|
+
["table", "—", "—", { "text": "✓", "color": "success", "bold": true }, { "text": "✓", "color": "success", "bold": true }],
|
|
440
|
+
["funnel", "—", "—", { "text": "✓", "color": "success", "bold": true }, "—"]
|
|
441
|
+
],
|
|
442
|
+
"callout": { "label": "Note", "text": "bigQuote layout is minimal by design — quote, author, and role only", "color": "info", "leftBar": true }
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
},
|
|
446
|
+
{
|
|
447
|
+
"text": "Sales funnel with conversion data",
|
|
448
|
+
"image": {
|
|
449
|
+
"type": "slide",
|
|
450
|
+
"theme": {
|
|
451
|
+
"colors": {
|
|
452
|
+
"bg": "0F172A",
|
|
453
|
+
"bgCard": "1E293B",
|
|
454
|
+
"bgCardAlt": "334155",
|
|
455
|
+
"text": "F8FAFC",
|
|
456
|
+
"textMuted": "CBD5E1",
|
|
457
|
+
"textDim": "64748B",
|
|
458
|
+
"primary": "3B82F6",
|
|
459
|
+
"accent": "8B5CF6",
|
|
460
|
+
"success": "22C55E",
|
|
461
|
+
"warning": "F59E0B",
|
|
462
|
+
"danger": "EF4444",
|
|
463
|
+
"info": "14B8A6",
|
|
464
|
+
"highlight": "EC4899"
|
|
465
|
+
},
|
|
466
|
+
"fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
|
|
467
|
+
},
|
|
468
|
+
"slide": {
|
|
469
|
+
"layout": "funnel",
|
|
470
|
+
"accentColor": "primary",
|
|
471
|
+
"title": "Developer Adoption Funnel",
|
|
472
|
+
"subtitle": "From awareness to active contributors",
|
|
473
|
+
"stages": [
|
|
474
|
+
{ "label": "Awareness", "value": "50K", "description": "GitHub stars, blog posts, conference talks", "color": "primary" },
|
|
475
|
+
{ "label": "Trial", "value": "12K", "description": "npm install, first JSON authored", "color": "accent" },
|
|
476
|
+
{ "label": "Adoption", "value": "3.2K", "description": "Production usage, CI/CD integration", "color": "info" },
|
|
477
|
+
{ "label": "Champion", "value": "840", "description": "Team rollout, internal evangelism", "color": "warning" },
|
|
478
|
+
{ "label": "Contributor", "value": "120", "description": "PRs, plugins, community layouts", "color": "success" }
|
|
479
|
+
],
|
|
480
|
+
"callout": { "text": "2.4% awareness-to-contributor conversion rate", "align": "center" }
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
},
|
|
484
|
+
{
|
|
485
|
+
"text": "Columns with rich content blocks including code and callouts",
|
|
486
|
+
"image": {
|
|
487
|
+
"type": "slide",
|
|
488
|
+
"theme": {
|
|
489
|
+
"colors": {
|
|
490
|
+
"bg": "0F172A",
|
|
491
|
+
"bgCard": "1E293B",
|
|
492
|
+
"bgCardAlt": "334155",
|
|
493
|
+
"text": "F8FAFC",
|
|
494
|
+
"textMuted": "CBD5E1",
|
|
495
|
+
"textDim": "64748B",
|
|
496
|
+
"primary": "3B82F6",
|
|
497
|
+
"accent": "8B5CF6",
|
|
498
|
+
"success": "22C55E",
|
|
499
|
+
"warning": "F59E0B",
|
|
500
|
+
"danger": "EF4444",
|
|
501
|
+
"info": "14B8A6",
|
|
502
|
+
"highlight": "EC4899"
|
|
503
|
+
},
|
|
504
|
+
"fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
|
|
505
|
+
},
|
|
506
|
+
"slide": {
|
|
507
|
+
"layout": "columns",
|
|
508
|
+
"accentColor": "accent",
|
|
509
|
+
"title": "Content Block Showcase",
|
|
510
|
+
"subtitle": "Cards can contain any combination of content blocks",
|
|
511
|
+
"columns": [
|
|
512
|
+
{
|
|
513
|
+
"title": "Code + Text",
|
|
514
|
+
"accentColor": "info",
|
|
515
|
+
"icon": "</>",
|
|
516
|
+
"content": [
|
|
517
|
+
{ "type": "code", "code": "const html = generateSlideHTML(\n theme,\n slide\n);" },
|
|
518
|
+
{ "type": "text", "value": "One function call renders a complete HTML document with Tailwind styling.", "dim": true }
|
|
519
|
+
]
|
|
520
|
+
},
|
|
521
|
+
{
|
|
522
|
+
"title": "Metrics + Callout",
|
|
523
|
+
"accentColor": "success",
|
|
524
|
+
"icon": "#",
|
|
525
|
+
"content": [
|
|
526
|
+
{ "type": "metric", "value": "141", "label": "Unit Tests", "color": "success", "change": "+141" },
|
|
527
|
+
{ "type": "divider" },
|
|
528
|
+
{ "type": "callout", "text": "All tests pass on Linux, macOS, and Windows", "style": "info" }
|
|
529
|
+
]
|
|
530
|
+
}
|
|
531
|
+
]
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
},
|
|
535
|
+
{
|
|
536
|
+
"text": "Split layout with image block on the right side",
|
|
537
|
+
"image": {
|
|
538
|
+
"type": "slide",
|
|
539
|
+
"theme": {
|
|
540
|
+
"colors": {
|
|
541
|
+
"bg": "0F172A",
|
|
542
|
+
"bgCard": "1E293B",
|
|
543
|
+
"bgCardAlt": "334155",
|
|
544
|
+
"text": "F8FAFC",
|
|
545
|
+
"textMuted": "CBD5E1",
|
|
546
|
+
"textDim": "64748B",
|
|
547
|
+
"primary": "3B82F6",
|
|
548
|
+
"accent": "8B5CF6",
|
|
549
|
+
"success": "22C55E",
|
|
550
|
+
"warning": "F59E0B",
|
|
551
|
+
"danger": "EF4444",
|
|
552
|
+
"info": "14B8A6",
|
|
553
|
+
"highlight": "EC4899"
|
|
554
|
+
},
|
|
555
|
+
"fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
|
|
556
|
+
},
|
|
557
|
+
"slide": {
|
|
558
|
+
"layout": "split",
|
|
559
|
+
"accentColor": "highlight",
|
|
560
|
+
"left": {
|
|
561
|
+
"title": "Image Support",
|
|
562
|
+
"label": "FEATURE",
|
|
563
|
+
"accentColor": "highlight",
|
|
564
|
+
"ratio": 50,
|
|
565
|
+
"content": [
|
|
566
|
+
{ "type": "text", "value": "Content blocks can include external images with flexible sizing options.", "bold": true },
|
|
567
|
+
{ "type": "divider", "color": "highlight" },
|
|
568
|
+
{
|
|
569
|
+
"type": "bullets",
|
|
570
|
+
"items": ["contain mode preserves aspect ratio", "cover mode fills the container", "Alt text for accessibility", "Works with any public URL"]
|
|
571
|
+
},
|
|
572
|
+
{ "type": "callout", "label": "Note", "text": "Images are loaded via Puppeteer at render time", "color": "info" }
|
|
573
|
+
]
|
|
574
|
+
},
|
|
575
|
+
"right": {
|
|
576
|
+
"ratio": 50,
|
|
577
|
+
"content": [{ "type": "image", "src": "https://picsum.photos/seed/mulmo1/600/400", "alt": "Sample landscape photo", "fit": "cover" }]
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
},
|
|
582
|
+
{
|
|
583
|
+
"text": "Grid layout with images in content blocks",
|
|
584
|
+
"image": {
|
|
585
|
+
"type": "slide",
|
|
586
|
+
"theme": {
|
|
587
|
+
"colors": {
|
|
588
|
+
"bg": "0F172A",
|
|
589
|
+
"bgCard": "1E293B",
|
|
590
|
+
"bgCardAlt": "334155",
|
|
591
|
+
"text": "F8FAFC",
|
|
592
|
+
"textMuted": "CBD5E1",
|
|
593
|
+
"textDim": "64748B",
|
|
594
|
+
"primary": "3B82F6",
|
|
595
|
+
"accent": "8B5CF6",
|
|
596
|
+
"success": "22C55E",
|
|
597
|
+
"warning": "F59E0B",
|
|
598
|
+
"danger": "EF4444",
|
|
599
|
+
"info": "14B8A6",
|
|
600
|
+
"highlight": "EC4899"
|
|
601
|
+
},
|
|
602
|
+
"fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
|
|
603
|
+
},
|
|
604
|
+
"slide": {
|
|
605
|
+
"layout": "grid",
|
|
606
|
+
"accentColor": "primary",
|
|
607
|
+
"title": "Image Gallery",
|
|
608
|
+
"subtitle": "Grid items with embedded images from Picsum",
|
|
609
|
+
"gridColumns": 3,
|
|
610
|
+
"items": [
|
|
611
|
+
{
|
|
612
|
+
"title": "Mountain Vista",
|
|
613
|
+
"accentColor": "primary",
|
|
614
|
+
"content": [{ "type": "image", "src": "https://picsum.photos/seed/mountain/400/250", "alt": "Mountain landscape", "fit": "cover" }]
|
|
615
|
+
},
|
|
616
|
+
{
|
|
617
|
+
"title": "Ocean Waves",
|
|
618
|
+
"accentColor": "info",
|
|
619
|
+
"content": [{ "type": "image", "src": "https://picsum.photos/seed/ocean42/400/250", "alt": "Ocean view", "fit": "cover" }]
|
|
620
|
+
},
|
|
621
|
+
{
|
|
622
|
+
"title": "City Lights",
|
|
623
|
+
"accentColor": "accent",
|
|
624
|
+
"content": [{ "type": "image", "src": "https://picsum.photos/seed/citynight/400/250", "alt": "City skyline at night", "fit": "cover" }]
|
|
625
|
+
}
|
|
626
|
+
]
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
},
|
|
630
|
+
{
|
|
631
|
+
"text": "Comparison of light vs dark themes",
|
|
632
|
+
"image": {
|
|
633
|
+
"type": "slide",
|
|
634
|
+
"theme": {
|
|
635
|
+
"colors": {
|
|
636
|
+
"bg": "0F172A",
|
|
637
|
+
"bgCard": "1E293B",
|
|
638
|
+
"bgCardAlt": "334155",
|
|
639
|
+
"text": "F8FAFC",
|
|
640
|
+
"textMuted": "CBD5E1",
|
|
641
|
+
"textDim": "64748B",
|
|
642
|
+
"primary": "3B82F6",
|
|
643
|
+
"accent": "8B5CF6",
|
|
644
|
+
"success": "22C55E",
|
|
645
|
+
"warning": "F59E0B",
|
|
646
|
+
"danger": "EF4444",
|
|
647
|
+
"info": "14B8A6",
|
|
648
|
+
"highlight": "EC4899"
|
|
649
|
+
},
|
|
650
|
+
"fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
|
|
651
|
+
},
|
|
652
|
+
"slide": {
|
|
653
|
+
"layout": "comparison",
|
|
654
|
+
"accentColor": "accent",
|
|
655
|
+
"title": "Theme Variants",
|
|
656
|
+
"subtitle": "The same DSL supports any color palette",
|
|
657
|
+
"left": {
|
|
658
|
+
"title": "Dark Theme",
|
|
659
|
+
"accentColor": "primary",
|
|
660
|
+
"content": [
|
|
661
|
+
{ "type": "code", "code": "\"bg\": \"0F172A\",\n\"bgCard\": \"1E293B\",\n\"text\": \"F8FAFC\",\n\"primary\": \"3B82F6\"" },
|
|
662
|
+
{ "type": "bullets", "items": ["Easy on the eyes", "Great for presentations", "Professional look"] },
|
|
663
|
+
{ "type": "callout", "text": "Recommended for conference talks and videos", "style": "info" }
|
|
664
|
+
]
|
|
665
|
+
},
|
|
666
|
+
"right": {
|
|
667
|
+
"title": "Light Theme",
|
|
668
|
+
"accentColor": "highlight",
|
|
669
|
+
"content": [
|
|
670
|
+
{ "type": "code", "code": "\"bg\": \"FFF0F5\",\n\"bgCard\": \"FFFFFF\",\n\"text\": \"1A1A2E\",\n\"primary\": \"E91E63\"" },
|
|
671
|
+
{ "type": "bullets", "items": ["Clean and bright", "Print-friendly", "Accessible contrast"] },
|
|
672
|
+
{ "type": "callout", "text": "Ideal for documents and printed handouts", "style": "info" }
|
|
673
|
+
]
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
},
|
|
678
|
+
{
|
|
679
|
+
"text": "Stats slide with bright pink light theme",
|
|
680
|
+
"image": {
|
|
681
|
+
"type": "slide",
|
|
682
|
+
"theme": {
|
|
683
|
+
"colors": {
|
|
684
|
+
"bg": "FFF0F5",
|
|
685
|
+
"bgCard": "FFFFFF",
|
|
686
|
+
"bgCardAlt": "FDE8EF",
|
|
687
|
+
"text": "1A1A2E",
|
|
688
|
+
"textMuted": "4A4A6A",
|
|
689
|
+
"textDim": "9090B0",
|
|
690
|
+
"primary": "E91E63",
|
|
691
|
+
"accent": "7C3AED",
|
|
692
|
+
"success": "10B981",
|
|
693
|
+
"warning": "F59E0B",
|
|
694
|
+
"danger": "EF4444",
|
|
695
|
+
"info": "06B6D4",
|
|
696
|
+
"highlight": "F97316"
|
|
697
|
+
},
|
|
698
|
+
"fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
|
|
699
|
+
},
|
|
700
|
+
"slide": {
|
|
701
|
+
"layout": "stats",
|
|
702
|
+
"accentColor": "primary",
|
|
703
|
+
"stepLabel": "LIGHT THEME DEMO",
|
|
704
|
+
"title": "Campaign Performance",
|
|
705
|
+
"subtitle": "Same layout, completely different feel with a light color palette",
|
|
706
|
+
"stats": [
|
|
707
|
+
{ "value": "2.4M", "label": "Impressions", "color": "primary", "change": "+128%" },
|
|
708
|
+
{ "value": "340K", "label": "Engagements", "color": "accent", "change": "+85%" },
|
|
709
|
+
{ "value": "12.4%", "label": "Conv. Rate", "color": "success", "change": "+3.2%" },
|
|
710
|
+
{ "value": "$1.8M", "label": "Revenue", "color": "highlight", "change": "+67%" }
|
|
711
|
+
]
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
},
|
|
715
|
+
{
|
|
716
|
+
"text": "Table showing Zod schema field types",
|
|
717
|
+
"image": {
|
|
718
|
+
"type": "slide",
|
|
719
|
+
"theme": {
|
|
720
|
+
"colors": {
|
|
721
|
+
"bg": "0F172A",
|
|
722
|
+
"bgCard": "1E293B",
|
|
723
|
+
"bgCardAlt": "334155",
|
|
724
|
+
"text": "F8FAFC",
|
|
725
|
+
"textMuted": "CBD5E1",
|
|
726
|
+
"textDim": "64748B",
|
|
727
|
+
"primary": "3B82F6",
|
|
728
|
+
"accent": "8B5CF6",
|
|
729
|
+
"success": "22C55E",
|
|
730
|
+
"warning": "F59E0B",
|
|
731
|
+
"danger": "EF4444",
|
|
732
|
+
"info": "14B8A6",
|
|
733
|
+
"highlight": "EC4899"
|
|
734
|
+
},
|
|
735
|
+
"fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
|
|
736
|
+
},
|
|
737
|
+
"slide": {
|
|
738
|
+
"layout": "table",
|
|
739
|
+
"accentColor": "accent",
|
|
740
|
+
"title": "Schema Type Reference",
|
|
741
|
+
"subtitle": "Key Zod types used in the slide DSL",
|
|
742
|
+
"headers": ["Schema", "Type", "Required", "Description"],
|
|
743
|
+
"rowHeaders": true,
|
|
744
|
+
"striped": true,
|
|
745
|
+
"rows": [
|
|
746
|
+
["hexColorSchema", "string", { "text": "Yes", "color": "success", "bold": true }, "6-digit hex (e.g. 3B82F6)"],
|
|
747
|
+
["accentColorKey", "enum", { "text": "Yes", "color": "success", "bold": true }, "primary | accent | success | ..."],
|
|
748
|
+
["contentBlockSchema", "union", { "text": "Yes", "color": "success", "bold": true }, "Discriminated union of 7 types"],
|
|
749
|
+
["slideLayoutSchema", "union", { "text": "Yes", "color": "success", "bold": true }, "Discriminated union of 11 layouts"],
|
|
750
|
+
["cardSchema", "object", { "text": "No", "color": "warning" }, "Title + optional content/num/icon"],
|
|
751
|
+
["calloutBarSchema", "object", { "text": "No", "color": "warning" }, "Bottom bar with label + text"],
|
|
752
|
+
["slideStyleSchema", "object", { "text": "No", "color": "warning" }, "bgColor, footer, decorations"]
|
|
753
|
+
]
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
},
|
|
757
|
+
{
|
|
758
|
+
"text": "Timeline with all items completed",
|
|
759
|
+
"image": {
|
|
760
|
+
"type": "slide",
|
|
761
|
+
"theme": {
|
|
762
|
+
"colors": {
|
|
763
|
+
"bg": "0F172A",
|
|
764
|
+
"bgCard": "1E293B",
|
|
765
|
+
"bgCardAlt": "334155",
|
|
766
|
+
"text": "F8FAFC",
|
|
767
|
+
"textMuted": "CBD5E1",
|
|
768
|
+
"textDim": "64748B",
|
|
769
|
+
"primary": "3B82F6",
|
|
770
|
+
"accent": "8B5CF6",
|
|
771
|
+
"success": "22C55E",
|
|
772
|
+
"warning": "F59E0B",
|
|
773
|
+
"danger": "EF4444",
|
|
774
|
+
"info": "14B8A6",
|
|
775
|
+
"highlight": "EC4899"
|
|
776
|
+
},
|
|
777
|
+
"fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
|
|
778
|
+
},
|
|
779
|
+
"slide": {
|
|
780
|
+
"layout": "timeline",
|
|
781
|
+
"accentColor": "success",
|
|
782
|
+
"stepLabel": "COMPLETED",
|
|
783
|
+
"title": "Implementation Progress",
|
|
784
|
+
"subtitle": "All planned milestones achieved",
|
|
785
|
+
"items": [
|
|
786
|
+
{ "date": "Day 1", "title": "Schema", "description": "Zod schemas for\n11 layouts + 7 blocks", "color": "primary", "done": true },
|
|
787
|
+
{ "date": "Day 2", "title": "Renderers", "description": "HTML generators for\nevery layout type", "color": "accent", "done": true },
|
|
788
|
+
{ "date": "Day 3", "title": "Tests", "description": "141 unit tests covering\nall edge cases", "color": "info", "done": true },
|
|
789
|
+
{ "date": "Day 3", "title": "Integration", "description": "Plugin system and\nmulmo CLI support", "color": "warning", "done": true },
|
|
790
|
+
{ "date": "Day 4", "title": "Review", "description": "Security fixes and\nPR feedback", "color": "success", "done": true }
|
|
791
|
+
]
|
|
792
|
+
}
|
|
793
|
+
}
|
|
794
|
+
},
|
|
795
|
+
{
|
|
796
|
+
"text": "Columns with image content blocks",
|
|
797
|
+
"image": {
|
|
798
|
+
"type": "slide",
|
|
799
|
+
"theme": {
|
|
800
|
+
"colors": {
|
|
801
|
+
"bg": "0F172A",
|
|
802
|
+
"bgCard": "1E293B",
|
|
803
|
+
"bgCardAlt": "334155",
|
|
804
|
+
"text": "F8FAFC",
|
|
805
|
+
"textMuted": "CBD5E1",
|
|
806
|
+
"textDim": "64748B",
|
|
807
|
+
"primary": "3B82F6",
|
|
808
|
+
"accent": "8B5CF6",
|
|
809
|
+
"success": "22C55E",
|
|
810
|
+
"warning": "F59E0B",
|
|
811
|
+
"danger": "EF4444",
|
|
812
|
+
"info": "14B8A6",
|
|
813
|
+
"highlight": "EC4899"
|
|
814
|
+
},
|
|
815
|
+
"fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
|
|
816
|
+
},
|
|
817
|
+
"slide": {
|
|
818
|
+
"layout": "columns",
|
|
819
|
+
"accentColor": "primary",
|
|
820
|
+
"title": "Use Cases",
|
|
821
|
+
"subtitle": "Real-world applications of the MulmoCast Slide DSL",
|
|
822
|
+
"columns": [
|
|
823
|
+
{
|
|
824
|
+
"title": "Tech Talks",
|
|
825
|
+
"accentColor": "primary",
|
|
826
|
+
"content": [
|
|
827
|
+
{ "type": "image", "src": "https://picsum.photos/seed/techtalk/500/200", "alt": "Conference presentation", "fit": "cover" },
|
|
828
|
+
{ "type": "text", "value": "Generate beautiful slides from structured data for conference presentations." }
|
|
829
|
+
]
|
|
830
|
+
},
|
|
831
|
+
{
|
|
832
|
+
"title": "Documentation",
|
|
833
|
+
"accentColor": "info",
|
|
834
|
+
"content": [
|
|
835
|
+
{ "type": "image", "src": "https://picsum.photos/seed/docs99/500/200", "alt": "Technical documentation", "fit": "cover" },
|
|
836
|
+
{ "type": "text", "value": "Create visual documentation with consistent branding and layouts." }
|
|
837
|
+
]
|
|
838
|
+
},
|
|
839
|
+
{
|
|
840
|
+
"title": "Video Content",
|
|
841
|
+
"accentColor": "accent",
|
|
842
|
+
"content": [
|
|
843
|
+
{ "type": "image", "src": "https://picsum.photos/seed/video77/500/200", "alt": "Video production", "fit": "cover" },
|
|
844
|
+
{ "type": "text", "value": "MulmoCast renders slides as images for podcast and video overlays." }
|
|
845
|
+
]
|
|
846
|
+
}
|
|
847
|
+
]
|
|
848
|
+
}
|
|
849
|
+
}
|
|
850
|
+
},
|
|
851
|
+
{
|
|
852
|
+
"text": "Closing title slide with custom background color",
|
|
853
|
+
"image": {
|
|
854
|
+
"type": "slide",
|
|
855
|
+
"theme": {
|
|
856
|
+
"colors": {
|
|
857
|
+
"bg": "0F172A",
|
|
858
|
+
"bgCard": "1E293B",
|
|
859
|
+
"bgCardAlt": "334155",
|
|
860
|
+
"text": "F8FAFC",
|
|
861
|
+
"textMuted": "CBD5E1",
|
|
862
|
+
"textDim": "64748B",
|
|
863
|
+
"primary": "3B82F6",
|
|
864
|
+
"accent": "8B5CF6",
|
|
865
|
+
"success": "22C55E",
|
|
866
|
+
"warning": "F59E0B",
|
|
867
|
+
"danger": "EF4444",
|
|
868
|
+
"info": "14B8A6",
|
|
869
|
+
"highlight": "EC4899"
|
|
870
|
+
},
|
|
871
|
+
"fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
|
|
872
|
+
},
|
|
873
|
+
"slide": {
|
|
874
|
+
"layout": "title",
|
|
875
|
+
"accentColor": "accent",
|
|
876
|
+
"title": "Thank You",
|
|
877
|
+
"subtitle": "MulmoCast Slide DSL — 11 layouts, 7 blocks, infinite possibilities",
|
|
878
|
+
"author": "github.com/receptron/mulmocast-cli",
|
|
879
|
+
"style": {
|
|
880
|
+
"bgColor": "1A1033",
|
|
881
|
+
"footer": "MulmoCast Slide DSL Showcase | February 2026"
|
|
882
|
+
}
|
|
883
|
+
}
|
|
884
|
+
}
|
|
885
|
+
}
|
|
886
|
+
]
|
|
887
|
+
}
|