motionrender 0.0.0-stage → 0.2.0

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.
Files changed (203) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +61 -2
  3. package/blocks/badge.json +68 -0
  4. package/blocks/big-stat.json +240 -0
  5. package/blocks/cta-end.json +283 -0
  6. package/blocks/feature-list.json +286 -0
  7. package/blocks/footage.json +43 -0
  8. package/blocks/fx-background-swap.json +170 -0
  9. package/blocks/fx-before-after.json +212 -0
  10. package/blocks/fx-captions.json +34 -0
  11. package/blocks/fx-chat.json +368 -0
  12. package/blocks/fx-checklist.json +609 -0
  13. package/blocks/fx-clone-wall.json +181 -0
  14. package/blocks/fx-color-pop.json +92 -0
  15. package/blocks/fx-command-bridge.json +358 -0
  16. package/blocks/fx-counter-hero.json +206 -0
  17. package/blocks/fx-cta-card.json +337 -0
  18. package/blocks/fx-day-to-night.json +174 -0
  19. package/blocks/fx-duo-title.json +245 -0
  20. package/blocks/fx-duotone.json +95 -0
  21. package/blocks/fx-extruded-title.json +309 -0
  22. package/blocks/fx-gallery.json +239 -0
  23. package/blocks/fx-glass-cards.json +921 -0
  24. package/blocks/fx-glitch-title.json +373 -0
  25. package/blocks/fx-grade-look.json +91 -0
  26. package/blocks/fx-highlighter.json +53 -0
  27. package/blocks/fx-icon-orbit.json +2694 -0
  28. package/blocks/fx-lens-flare.json +325 -0
  29. package/blocks/fx-letterbox.json +105 -0
  30. package/blocks/fx-light-leak.json +140 -0
  31. package/blocks/fx-map-journey.json +443 -0
  32. package/blocks/fx-neon-outline.json +743 -0
  33. package/blocks/fx-notifications.json +456 -0
  34. package/blocks/fx-progress-ring.json +143 -0
  35. package/blocks/fx-pull-out.json +68 -0
  36. package/blocks/fx-punch-in.json +81 -0
  37. package/blocks/fx-rgb-flash.json +166 -0
  38. package/blocks/fx-shake-hit.json +120 -0
  39. package/blocks/fx-split-reveal.json +110 -0
  40. package/blocks/fx-spotlight.json +1383 -0
  41. package/blocks/fx-stats-split.json +500 -0
  42. package/blocks/fx-step-tracker.json +528 -0
  43. package/blocks/fx-sticker-freeze.json +584 -0
  44. package/blocks/fx-strike-rewrite.json +79 -0
  45. package/blocks/fx-ticker.json +179 -0
  46. package/blocks/fx-timeline.json +1287 -0
  47. package/blocks/fx-tracked-label.json +167 -0
  48. package/blocks/fx-typewriter-quote.json +164 -0
  49. package/blocks/handle.json +43 -0
  50. package/blocks/icon-row.json +404 -0
  51. package/blocks/image-caption.json +248 -0
  52. package/blocks/lower-third.json +106 -0
  53. package/blocks/phone-mockup.json +459 -0
  54. package/blocks/progress-bar.json +51 -0
  55. package/blocks/quote.json +347 -0
  56. package/blocks/section-title.json +240 -0
  57. package/blocks/split-screen.json +283 -0
  58. package/blocks/stat-grid.json +315 -0
  59. package/blocks/steps.json +266 -0
  60. package/blocks/title-hero.json +287 -0
  61. package/dist/builder.d.ts +1 -0
  62. package/dist/builder.js +169 -0
  63. package/dist/cli.js +9301 -0
  64. package/dist/fonts/LICENSE-Inter.txt +93 -0
  65. package/dist/fonts/inter-cyrillic-ext-opsz-italic.woff2 +0 -0
  66. package/dist/fonts/inter-cyrillic-ext-opsz-normal.woff2 +0 -0
  67. package/dist/fonts/inter-cyrillic-opsz-italic.woff2 +0 -0
  68. package/dist/fonts/inter-cyrillic-opsz-normal.woff2 +0 -0
  69. package/dist/fonts/inter-greek-ext-opsz-italic.woff2 +0 -0
  70. package/dist/fonts/inter-greek-ext-opsz-normal.woff2 +0 -0
  71. package/dist/fonts/inter-greek-opsz-italic.woff2 +0 -0
  72. package/dist/fonts/inter-greek-opsz-normal.woff2 +0 -0
  73. package/dist/fonts/inter-latin-ext-opsz-italic.woff2 +0 -0
  74. package/dist/fonts/inter-latin-ext-opsz-normal.woff2 +0 -0
  75. package/dist/fonts/inter-latin-opsz-italic.woff2 +0 -0
  76. package/dist/fonts/inter-latin-opsz-normal.woff2 +0 -0
  77. package/dist/fonts/inter-vietnamese-opsz-italic.woff2 +0 -0
  78. package/dist/fonts/inter-vietnamese-opsz-normal.woff2 +0 -0
  79. package/dist/index.d.ts +2 -0
  80. package/dist/index.js +2330 -0
  81. package/dist/player.d.ts +1 -0
  82. package/dist/player.js +80 -0
  83. package/dist/react.d.ts +1 -0
  84. package/dist/react.js +140 -0
  85. package/dist/runtime/canvas-runtime.js +261 -0
  86. package/dist/runtime/lottie_light_canvas.min.js +1 -0
  87. package/dist/runtime/text-layout.js +50 -0
  88. package/dist/sfx/click.wav +0 -0
  89. package/dist/sfx/ding.wav +0 -0
  90. package/dist/sfx/pop.wav +0 -0
  91. package/dist/sfx/riser.wav +0 -0
  92. package/dist/sfx/thump.wav +0 -0
  93. package/dist/sfx/tick.wav +0 -0
  94. package/dist/sfx/whoosh.wav +0 -0
  95. package/dist/types/packages/ai/src/assets.d.ts +26 -0
  96. package/dist/types/packages/ai/src/batch.d.ts +19 -0
  97. package/dist/types/packages/ai/src/compose.d.ts +34 -0
  98. package/dist/types/packages/ai/src/history.d.ts +37 -0
  99. package/dist/types/packages/ai/src/image.d.ts +19 -0
  100. package/dist/types/packages/ai/src/index.d.ts +13 -0
  101. package/dist/types/packages/ai/src/json.d.ts +2 -0
  102. package/dist/types/packages/ai/src/narrate.d.ts +63 -0
  103. package/dist/types/packages/ai/src/patch.d.ts +15 -0
  104. package/dist/types/packages/ai/src/project.d.ts +27 -0
  105. package/dist/types/packages/ai/src/prompt.d.ts +30 -0
  106. package/dist/types/packages/ai/src/providers.d.ts +109 -0
  107. package/dist/types/packages/ai/src/template.d.ts +80 -0
  108. package/dist/types/packages/ai/src/voiceover.d.ts +49 -0
  109. package/dist/types/packages/animation/src/index.d.ts +27 -0
  110. package/dist/types/packages/assets/src/cache.d.ts +26 -0
  111. package/dist/types/packages/assets/src/index.d.ts +8 -0
  112. package/dist/types/packages/builder/src/index.d.ts +270 -0
  113. package/dist/types/packages/cli/src/ai-studio-page.d.ts +1 -0
  114. package/dist/types/packages/cli/src/ai-studio.d.ts +35 -0
  115. package/dist/types/packages/cli/src/ai.d.ts +3 -0
  116. package/dist/types/packages/cli/src/args.d.ts +9 -0
  117. package/dist/types/packages/cli/src/blocks-cli.d.ts +3 -0
  118. package/dist/types/packages/cli/src/blocks.d.ts +50 -0
  119. package/dist/types/packages/cli/src/build.d.ts +1 -0
  120. package/dist/types/packages/cli/src/dev-page.d.ts +1 -0
  121. package/dist/types/packages/cli/src/dev.d.ts +13 -0
  122. package/dist/types/packages/cli/src/index.d.ts +2 -0
  123. package/dist/types/packages/cli/src/init.d.ts +10 -0
  124. package/dist/types/packages/cli/src/serve.d.ts +2 -0
  125. package/dist/types/packages/cli/src/studio.d.ts +36 -0
  126. package/dist/types/packages/cli/src/templates.d.ts +63 -0
  127. package/dist/types/packages/cli/src/thumbnail.d.ts +20 -0
  128. package/dist/types/packages/cli/src/track.d.ts +35 -0
  129. package/dist/types/packages/cli/src/worker.d.ts +13 -0
  130. package/dist/types/packages/contracts/src/index.d.ts +377 -0
  131. package/dist/types/packages/core/src/audio.d.ts +14 -0
  132. package/dist/types/packages/core/src/distributed.d.ts +50 -0
  133. package/dist/types/packages/core/src/index.d.ts +63 -0
  134. package/dist/types/packages/core/src/media.d.ts +11 -0
  135. package/dist/types/packages/core/src/review.d.ts +29 -0
  136. package/dist/types/packages/ffmpeg/src/index.d.ts +68 -0
  137. package/dist/types/packages/graphics/src/fonts.d.ts +3 -0
  138. package/dist/types/packages/graphics/src/index.d.ts +121 -0
  139. package/dist/types/packages/graphics/src/runtime.d.ts +10 -0
  140. package/dist/types/packages/jobs/src/env.d.ts +78 -0
  141. package/dist/types/packages/jobs/src/handlers.d.ts +17 -0
  142. package/dist/types/packages/jobs/src/index.d.ts +5 -0
  143. package/dist/types/packages/jobs/src/input.d.ts +18 -0
  144. package/dist/types/packages/jobs/src/queue.d.ts +70 -0
  145. package/dist/types/packages/jobs/src/redis.d.ts +42 -0
  146. package/dist/types/packages/player/src/bundle.d.ts +4 -0
  147. package/dist/types/packages/player/src/canvas-runtime.d.ts +11 -0
  148. package/dist/types/packages/player/src/index.d.ts +29 -0
  149. package/dist/types/packages/react/src/index.d.ts +76 -0
  150. package/dist/types/packages/renderer/src/index.d.ts +35 -0
  151. package/dist/types/packages/renderer/src/pool.d.ts +7 -0
  152. package/dist/types/packages/renderer/src/video.d.ts +9 -0
  153. package/dist/types/packages/schema/src/captions.d.ts +24 -0
  154. package/dist/types/packages/schema/src/expression.d.ts +1 -0
  155. package/dist/types/packages/schema/src/index.d.ts +1213 -0
  156. package/dist/types/packages/schema/src/variables.d.ts +115 -0
  157. package/dist/types/packages/storage/src/index.d.ts +78 -0
  158. package/dist/types/packages/timeline/src/index.d.ts +104 -0
  159. package/package.json +78 -4
  160. package/skills/ove/SKILL.md +356 -0
  161. package/skills/ove-ai-compose/SKILL.md +36 -0
  162. package/skills/ove-batch-videos/SKILL.md +23 -0
  163. package/skills/ove-code-video/SKILL.md +68 -0
  164. package/skills/ove-effects/SKILL.md +65 -0
  165. package/skills/ove-make-reel/SKILL.md +30 -0
  166. package/skills/ove-voiceover-captions/SKILL.md +31 -0
  167. package/studio/assets/index-CzOvWv9w.css +1 -0
  168. package/studio/assets/index-J_fvKgng.js +11 -0
  169. package/studio/index.html +16 -0
  170. package/templates/case-study/composition.json +358 -0
  171. package/templates/case-study/template.json +8 -0
  172. package/templates/event-invite/composition.json +245 -0
  173. package/templates/event-invite/template.json +8 -0
  174. package/templates/explainer-square/composition.json +1335 -0
  175. package/templates/explainer-square/template.json +13 -0
  176. package/templates/keynote-wide/composition.json +1458 -0
  177. package/templates/keynote-wide/template.json +13 -0
  178. package/templates/launch-wide/composition.json +1306 -0
  179. package/templates/launch-wide/template.json +13 -0
  180. package/templates/product-card/composition.json +196 -0
  181. package/templates/product-card/data.example.json +5 -0
  182. package/templates/product-card/template.json +8 -0
  183. package/templates/product-wide/composition.json +1609 -0
  184. package/templates/product-wide/template.json +14 -0
  185. package/templates/quote-card/composition.json +123 -0
  186. package/templates/quote-card/template.json +8 -0
  187. package/templates/sale-promo/composition.json +290 -0
  188. package/templates/sale-promo/template.json +8 -0
  189. package/templates/showcase-tall/composition.json +1646 -0
  190. package/templates/showcase-tall/template.json +14 -0
  191. package/templates/slideshow/composition.json +167 -0
  192. package/templates/slideshow/template.json +8 -0
  193. package/templates/social-reel/composition.json +252 -0
  194. package/templates/social-reel/template.json +8 -0
  195. package/templates/starter/assets/logo.svg +4 -0
  196. package/templates/starter/composition.json +84 -0
  197. package/templates/story-tall/composition.json +1379 -0
  198. package/templates/story-tall/template.json +13 -0
  199. package/themes/espresso.json +15 -0
  200. package/themes/midnight.json +15 -0
  201. package/themes/neon.json +15 -0
  202. package/themes/paper.json +15 -0
  203. package/themes/signal.json +15 -0
@@ -0,0 +1,1335 @@
1
+ {
2
+ "$schema": "./composition.schema.json",
3
+ "version": "1.0",
4
+ "id": "explainer-square",
5
+ "name": "Explainer (1:1)",
6
+ "width": 1080,
7
+ "height": 1080,
8
+ "fps": 30,
9
+ "durationFrames": "auto",
10
+ "motionBlur": {
11
+ "samples": 4,
12
+ "shutter": 180
13
+ },
14
+ "variables": {
15
+ "bg": {
16
+ "type": "color",
17
+ "default": "#f6f1e8",
18
+ "description": "Theme: bg"
19
+ },
20
+ "surface": {
21
+ "type": "color",
22
+ "default": "#e9e1d2",
23
+ "description": "Theme: surface"
24
+ },
25
+ "text": {
26
+ "type": "color",
27
+ "default": "#1d1a16",
28
+ "description": "Theme: text"
29
+ },
30
+ "muted": {
31
+ "type": "color",
32
+ "default": "#6e665a",
33
+ "description": "Theme: muted"
34
+ },
35
+ "accent": {
36
+ "type": "color",
37
+ "default": "#d9482b",
38
+ "description": "Theme: accent"
39
+ },
40
+ "accent2": {
41
+ "type": "color",
42
+ "default": "#1f6f5c",
43
+ "description": "Theme: accent2"
44
+ },
45
+ "radius": {
46
+ "type": "number",
47
+ "default": 8,
48
+ "description": "Theme: radius"
49
+ },
50
+ "headWeight": {
51
+ "type": "number",
52
+ "default": 800,
53
+ "description": "Theme: headWeight"
54
+ },
55
+ "kicker": {
56
+ "type": "string",
57
+ "default": "HOW IT WORKS",
58
+ "description": "Small label above the title"
59
+ },
60
+ "title": {
61
+ "type": "string",
62
+ "default": "From idea to finished in three steps",
63
+ "description": "The title (about 6 words)"
64
+ },
65
+ "subtitle": {
66
+ "type": "string",
67
+ "default": "No jargon, no waiting.",
68
+ "description": "One supporting sentence"
69
+ },
70
+ "stepsTitle": {
71
+ "type": "string",
72
+ "default": "The three steps",
73
+ "description": "Heading of the steps"
74
+ },
75
+ "steps": {
76
+ "type": "list",
77
+ "items": {
78
+ "title": {
79
+ "type": "string",
80
+ "default": ""
81
+ },
82
+ "detail": {
83
+ "type": "string",
84
+ "default": ""
85
+ }
86
+ },
87
+ "default": [
88
+ {
89
+ "title": "Tell us what you need",
90
+ "detail": "A few words is enough."
91
+ },
92
+ {
93
+ "title": "Check the draft",
94
+ "detail": "Change anything you like."
95
+ },
96
+ {
97
+ "title": "Publish",
98
+ "detail": "Share it everywhere at once."
99
+ }
100
+ ],
101
+ "description": "Up to four steps with a short title and detail"
102
+ },
103
+ "resultsTitle": {
104
+ "type": "string",
105
+ "default": "What people see",
106
+ "description": "Heading of the numbers"
107
+ },
108
+ "results": {
109
+ "type": "list",
110
+ "items": {
111
+ "value": {
112
+ "type": "string",
113
+ "default": ""
114
+ },
115
+ "label": {
116
+ "type": "string",
117
+ "default": ""
118
+ }
119
+ },
120
+ "default": [
121
+ {
122
+ "value": "3x",
123
+ "label": "faster"
124
+ },
125
+ {
126
+ "value": "40%",
127
+ "label": "lower cost"
128
+ },
129
+ {
130
+ "value": "100%",
131
+ "label": "repeatable"
132
+ }
133
+ ],
134
+ "description": "Exactly three numbers with labels"
135
+ },
136
+ "ctaHeadline": {
137
+ "type": "string",
138
+ "default": "Start today",
139
+ "description": "Closing line"
140
+ },
141
+ "ctaButton": {
142
+ "type": "string",
143
+ "default": "Get started",
144
+ "description": "Button text"
145
+ },
146
+ "url": {
147
+ "type": "string",
148
+ "default": "example.com",
149
+ "description": "Web address"
150
+ }
151
+ },
152
+ "scenes": [
153
+ {
154
+ "id": "title-hero",
155
+ "name": "Title hero",
156
+ "durationFrames": 120,
157
+ "camera": {
158
+ "animations": [
159
+ {
160
+ "property": "zoom",
161
+ "keyframes": [
162
+ {
163
+ "frame": 0,
164
+ "value": 1
165
+ },
166
+ {
167
+ "frame": 120,
168
+ "value": 1.08,
169
+ "easing": "drift"
170
+ }
171
+ ]
172
+ }
173
+ ]
174
+ },
175
+ "layers": [
176
+ {
177
+ "use": "title_hero",
178
+ "id": "title-hero-block",
179
+ "with": {
180
+ "kicker": "{{kicker}}",
181
+ "headline": "{{title}}",
182
+ "subtitle": "{{subtitle}}"
183
+ }
184
+ }
185
+ ]
186
+ },
187
+ {
188
+ "id": "steps",
189
+ "name": "Numbered steps",
190
+ "durationFrames": 180,
191
+ "camera": {
192
+ "animations": [
193
+ {
194
+ "property": "zoom",
195
+ "keyframes": [
196
+ {
197
+ "frame": 0,
198
+ "value": 1
199
+ },
200
+ {
201
+ "frame": 180,
202
+ "value": 1.04,
203
+ "easing": "drift"
204
+ }
205
+ ]
206
+ }
207
+ ]
208
+ },
209
+ "layers": [
210
+ {
211
+ "use": "steps",
212
+ "id": "steps-block",
213
+ "with": {
214
+ "title": "{{stepsTitle}}",
215
+ "steps": "{{steps}}"
216
+ }
217
+ }
218
+ ],
219
+ "transitionIn": {
220
+ "type": "push",
221
+ "durationFrames": 16,
222
+ "direction": "left",
223
+ "easing": "glide"
224
+ }
225
+ },
226
+ {
227
+ "id": "stat-grid",
228
+ "name": "Stat grid",
229
+ "durationFrames": 120,
230
+ "camera": {
231
+ "animations": [
232
+ {
233
+ "property": "zoom",
234
+ "keyframes": [
235
+ {
236
+ "frame": 0,
237
+ "value": 1
238
+ },
239
+ {
240
+ "frame": 120,
241
+ "value": 1.05,
242
+ "easing": "drift"
243
+ }
244
+ ]
245
+ }
246
+ ]
247
+ },
248
+ "layers": [
249
+ {
250
+ "use": "stat_grid",
251
+ "id": "stat-grid-block",
252
+ "with": {
253
+ "title": "{{resultsTitle}}",
254
+ "stats": "{{results}}"
255
+ }
256
+ }
257
+ ],
258
+ "transitionIn": {
259
+ "type": "push",
260
+ "durationFrames": 16,
261
+ "direction": "left",
262
+ "easing": "glide"
263
+ }
264
+ },
265
+ {
266
+ "id": "cta-end",
267
+ "name": "Call to action",
268
+ "durationFrames": 120,
269
+ "camera": {
270
+ "animations": [
271
+ {
272
+ "property": "zoom",
273
+ "keyframes": [
274
+ {
275
+ "frame": 0,
276
+ "value": 1
277
+ },
278
+ {
279
+ "frame": 120,
280
+ "value": 1.06,
281
+ "easing": "drift"
282
+ }
283
+ ]
284
+ }
285
+ ]
286
+ },
287
+ "layers": [
288
+ {
289
+ "use": "cta_end",
290
+ "id": "cta-end-block",
291
+ "with": {
292
+ "headline": "{{ctaHeadline}}",
293
+ "button": "{{ctaButton}}",
294
+ "url": "{{url}}"
295
+ }
296
+ }
297
+ ],
298
+ "transitionIn": {
299
+ "type": "push",
300
+ "durationFrames": 16,
301
+ "direction": "left",
302
+ "easing": "glide"
303
+ }
304
+ }
305
+ ],
306
+ "components": {
307
+ "title_hero": {
308
+ "description": "Opening title: small kicker, big headline that rises word by word, a short line under it.",
309
+ "params": {
310
+ "kicker": {
311
+ "type": "string",
312
+ "default": "INTRODUCING"
313
+ },
314
+ "headline": {
315
+ "type": "string",
316
+ "default": "Make something people remember"
317
+ },
318
+ "subtitle": {
319
+ "type": "string",
320
+ "default": "One clear line about why it matters."
321
+ }
322
+ },
323
+ "layers": [
324
+ {
325
+ "id": "bg",
326
+ "type": "rect",
327
+ "x": 0,
328
+ "y": 0,
329
+ "width": "{{canvas.width}}",
330
+ "height": "{{canvas.height}}",
331
+ "fill": "{{bg}}"
332
+ },
333
+ {
334
+ "id": "glow",
335
+ "type": "circle",
336
+ "x": "{{round(canvas.width * 0.55)}}",
337
+ "y": "{{round(canvas.height * -0.1)}}",
338
+ "width": "{{round(min(canvas.width, canvas.height) * 1.1)}}",
339
+ "fill": "{{accent}}",
340
+ "opacity": 0.14,
341
+ "blur": 120,
342
+ "animations": [
343
+ {
344
+ "property": "scale",
345
+ "keyframes": [
346
+ {
347
+ "frame": 0,
348
+ "value": 0.9
349
+ },
350
+ {
351
+ "frame": 150,
352
+ "value": 1.1,
353
+ "easing": "drift"
354
+ }
355
+ ]
356
+ },
357
+ {
358
+ "property": "x",
359
+ "keyframes": [
360
+ {
361
+ "frame": 0,
362
+ "value": "{{round(canvas.width * 0.55)}}"
363
+ },
364
+ {
365
+ "frame": 180,
366
+ "value": "{{round(canvas.width * 0.45000000000000007)}}",
367
+ "easing": "drift"
368
+ }
369
+ ]
370
+ }
371
+ ]
372
+ },
373
+ {
374
+ "id": "glow2",
375
+ "type": "circle",
376
+ "x": "{{round(canvas.width * 0.44999999999999996)}}",
377
+ "y": "{{round(canvas.height * 1.1)}}",
378
+ "width": "{{round(min(canvas.width, canvas.height) * 0.8)}}",
379
+ "fill": "{{accent2}}",
380
+ "opacity": 0.084,
381
+ "blur": 140,
382
+ "animations": [
383
+ {
384
+ "property": "y",
385
+ "keyframes": [
386
+ {
387
+ "frame": 0,
388
+ "value": "{{round(canvas.height * 1.1)}}"
389
+ },
390
+ {
391
+ "frame": 180,
392
+ "value": "{{round(canvas.height * 1)}}",
393
+ "easing": "drift"
394
+ }
395
+ ]
396
+ },
397
+ {
398
+ "property": "scale",
399
+ "keyframes": [
400
+ {
401
+ "frame": 0,
402
+ "value": 1.1
403
+ },
404
+ {
405
+ "frame": 150,
406
+ "value": 0.9,
407
+ "easing": "drift"
408
+ }
409
+ ]
410
+ }
411
+ ]
412
+ },
413
+ {
414
+ "id": "stack",
415
+ "type": "group",
416
+ "x": "{{round(canvas.width * 0.08)}}",
417
+ "y": 0,
418
+ "width": "{{round(canvas.width * 0.84)}}",
419
+ "height": "{{canvas.height}}",
420
+ "layout": {
421
+ "direction": "column",
422
+ "gap": "{{round(min(canvas.width, canvas.height) * 0.03)}}",
423
+ "align": "start",
424
+ "justify": "center"
425
+ },
426
+ "children": [
427
+ {
428
+ "id": "kicker",
429
+ "type": "text",
430
+ "content": "{{kicker}}",
431
+ "fontSize": "{{round(min(canvas.width, canvas.height) * 0.032)}}",
432
+ "color": "{{accent}}",
433
+ "fontWeight": 700,
434
+ "letterSpacing": "{{round(min(canvas.width, canvas.height) * 0.006)}}",
435
+ "startFrame": 0,
436
+ "animations": [
437
+ {
438
+ "property": "opacity",
439
+ "keyframes": [
440
+ {
441
+ "frame": 0,
442
+ "value": 0
443
+ },
444
+ {
445
+ "frame": 14,
446
+ "value": 1,
447
+ "easing": "glide"
448
+ }
449
+ ]
450
+ },
451
+ {
452
+ "property": "y",
453
+ "keyframes": [
454
+ {
455
+ "frame": 0,
456
+ "value": 20,
457
+ "easing": "land"
458
+ },
459
+ {
460
+ "frame": 18,
461
+ "value": 0
462
+ }
463
+ ]
464
+ }
465
+ ]
466
+ },
467
+ {
468
+ "id": "headline",
469
+ "type": "text",
470
+ "content": "{{headline}}",
471
+ "fontSize": "{{round(min(canvas.width, canvas.height) * 0.1)}}",
472
+ "color": "{{text}}",
473
+ "fontWeight": "{{headWeight}}",
474
+ "lineHeight": 1.05,
475
+ "maxWidth": "{{round(canvas.width * 0.84)}}",
476
+ "maxLines": 4,
477
+ "minFontSize": "{{round(min(canvas.width, canvas.height) * 0.06)}}",
478
+ "split": {
479
+ "by": "words",
480
+ "stagger": 4,
481
+ "preset": "rise",
482
+ "duration": 18
483
+ },
484
+ "startFrame": 8
485
+ },
486
+ {
487
+ "id": "rule",
488
+ "type": "rect",
489
+ "width": "{{round(min(canvas.width, canvas.height) * 0.12)}}",
490
+ "height": "{{round(min(canvas.width, canvas.height) * 0.008)}}",
491
+ "radius": "{{round(min(canvas.width, canvas.height) * 0.004)}}",
492
+ "fill": "{{accent}}",
493
+ "startFrame": 26,
494
+ "animations": [
495
+ {
496
+ "property": "width",
497
+ "keyframes": [
498
+ {
499
+ "frame": 0,
500
+ "value": 1
501
+ },
502
+ {
503
+ "frame": 20,
504
+ "value": "{{round(min(canvas.width, canvas.height) * 0.12)}}",
505
+ "easing": "land"
506
+ }
507
+ ]
508
+ }
509
+ ]
510
+ },
511
+ {
512
+ "id": "subtitle",
513
+ "type": "text",
514
+ "content": "{{subtitle}}",
515
+ "fontSize": "{{round(min(canvas.width, canvas.height) * 0.04)}}",
516
+ "color": "{{muted}}",
517
+ "maxWidth": "{{round(canvas.width * 0.7)}}",
518
+ "maxLines": 3,
519
+ "minFontSize": "{{round(min(canvas.width, canvas.height) * 0.028)}}",
520
+ "startFrame": 34,
521
+ "animations": [
522
+ {
523
+ "property": "opacity",
524
+ "keyframes": [
525
+ {
526
+ "frame": 0,
527
+ "value": 0
528
+ },
529
+ {
530
+ "frame": 14,
531
+ "value": 1,
532
+ "easing": "glide"
533
+ }
534
+ ]
535
+ },
536
+ {
537
+ "property": "y",
538
+ "keyframes": [
539
+ {
540
+ "frame": 0,
541
+ "value": 24,
542
+ "easing": "land"
543
+ },
544
+ {
545
+ "frame": 18,
546
+ "value": 0
547
+ }
548
+ ]
549
+ }
550
+ ]
551
+ }
552
+ ]
553
+ },
554
+ {
555
+ "id": "sfx-in",
556
+ "type": "audio",
557
+ "src": "sfx:whoosh",
558
+ "startFrame": 3,
559
+ "volume": 0.45
560
+ }
561
+ ]
562
+ },
563
+ "steps": {
564
+ "description": "Up to four numbered steps, each with a short title and a line of detail.",
565
+ "params": {
566
+ "title": {
567
+ "type": "string",
568
+ "default": "How it works"
569
+ },
570
+ "steps": {
571
+ "type": "list",
572
+ "items": {
573
+ "title": {
574
+ "type": "string",
575
+ "default": ""
576
+ },
577
+ "detail": {
578
+ "type": "string",
579
+ "default": ""
580
+ }
581
+ },
582
+ "default": [
583
+ {
584
+ "title": "Write the brief",
585
+ "detail": "Say what the video is about."
586
+ },
587
+ {
588
+ "title": "Check it",
589
+ "detail": "Errors are reported with their location."
590
+ },
591
+ {
592
+ "title": "Render it",
593
+ "detail": "The same file gives the same video, every time."
594
+ }
595
+ ]
596
+ }
597
+ },
598
+ "layers": [
599
+ {
600
+ "id": "bg",
601
+ "type": "rect",
602
+ "x": 0,
603
+ "y": 0,
604
+ "width": "{{canvas.width}}",
605
+ "height": "{{canvas.height}}",
606
+ "fill": "{{bg}}"
607
+ },
608
+ {
609
+ "id": "stack",
610
+ "type": "group",
611
+ "x": "{{round(canvas.width * 0.08)}}",
612
+ "y": 0,
613
+ "width": "{{round(canvas.width * 0.84)}}",
614
+ "height": "{{canvas.height}}",
615
+ "layout": {
616
+ "direction": "column",
617
+ "gap": "{{round(min(canvas.width, canvas.height) * 0.03)}}",
618
+ "align": "start",
619
+ "justify": "center"
620
+ },
621
+ "children": [
622
+ {
623
+ "id": "title",
624
+ "type": "text",
625
+ "content": "{{title}}",
626
+ "fontSize": "{{round(min(canvas.width, canvas.height) * 0.075)}}",
627
+ "color": "{{text}}",
628
+ "fontWeight": "{{headWeight}}",
629
+ "maxWidth": "{{round(canvas.width * 0.84)}}",
630
+ "maxLines": 2,
631
+ "minFontSize": "{{round(min(canvas.width, canvas.height) * 0.04)}}",
632
+ "startFrame": 0,
633
+ "animations": [
634
+ {
635
+ "property": "opacity",
636
+ "keyframes": [
637
+ {
638
+ "frame": 0,
639
+ "value": 0
640
+ },
641
+ {
642
+ "frame": 14,
643
+ "value": 1,
644
+ "easing": "glide"
645
+ }
646
+ ]
647
+ },
648
+ {
649
+ "property": "y",
650
+ "keyframes": [
651
+ {
652
+ "frame": 0,
653
+ "value": 24,
654
+ "easing": "land"
655
+ },
656
+ {
657
+ "frame": 18,
658
+ "value": 0
659
+ }
660
+ ]
661
+ }
662
+ ]
663
+ },
664
+ {
665
+ "id": "rows",
666
+ "type": "group",
667
+ "width": "{{round(canvas.width * 0.84)}}",
668
+ "layout": {
669
+ "direction": "column",
670
+ "gap": "{{round(min(canvas.width, canvas.height) * 0.04)}}",
671
+ "align": "start"
672
+ },
673
+ "children": [
674
+ {
675
+ "repeat": "{{steps}}",
676
+ "as": "s",
677
+ "each": [
678
+ {
679
+ "id": "step-{{index}}",
680
+ "type": "group",
681
+ "startFrame": "{{18 + index * 20}}",
682
+ "layout": {
683
+ "direction": "row",
684
+ "gap": "{{round(min(canvas.width, canvas.height) * 0.03)}}",
685
+ "align": "start"
686
+ },
687
+ "animations": [
688
+ {
689
+ "property": "opacity",
690
+ "keyframes": [
691
+ {
692
+ "frame": 0,
693
+ "value": 0
694
+ },
695
+ {
696
+ "frame": 12,
697
+ "value": 1
698
+ }
699
+ ]
700
+ },
701
+ {
702
+ "property": "y",
703
+ "keyframes": [
704
+ {
705
+ "frame": 0,
706
+ "value": 30,
707
+ "easing": "land"
708
+ },
709
+ {
710
+ "frame": 18,
711
+ "value": 0
712
+ }
713
+ ]
714
+ }
715
+ ],
716
+ "children": [
717
+ {
718
+ "id": "num-{{index}}",
719
+ "type": "group",
720
+ "width": "{{round(min(canvas.width, canvas.height) * 0.075)}}",
721
+ "height": "{{round(min(canvas.width, canvas.height) * 0.075)}}",
722
+ "children": [
723
+ {
724
+ "id": "disc",
725
+ "type": "circle",
726
+ "x": "{{round(min(canvas.width, canvas.height) * 0.0375)}}",
727
+ "y": "{{round(min(canvas.width, canvas.height) * 0.0375)}}",
728
+ "width": "{{round(min(canvas.width, canvas.height) * 0.075)}}",
729
+ "fill": "{{accent}}"
730
+ },
731
+ {
732
+ "id": "n",
733
+ "type": "text",
734
+ "content": "{{string(index + 1)}}",
735
+ "x": "{{round(min(canvas.width, canvas.height) * 0.0375)}}",
736
+ "y": "{{round(min(canvas.width, canvas.height) * 0.0375 - min(canvas.width, canvas.height) * 0.0225)}}",
737
+ "fontSize": "{{round(min(canvas.width, canvas.height) * 0.04)}}",
738
+ "fontWeight": 800,
739
+ "color": "{{bg}}",
740
+ "textAlign": "center"
741
+ }
742
+ ]
743
+ },
744
+ {
745
+ "id": "copy-{{index}}",
746
+ "type": "group",
747
+ "layout": {
748
+ "direction": "column",
749
+ "gap": "{{round(min(canvas.width, canvas.height) * 0.008)}}"
750
+ },
751
+ "children": [
752
+ {
753
+ "id": "st-{{index}}",
754
+ "type": "text",
755
+ "content": "{{s.title}}",
756
+ "fontSize": "{{round(min(canvas.width, canvas.height) * 0.05)}}",
757
+ "color": "{{text}}",
758
+ "fontWeight": 700,
759
+ "maxWidth": "{{round(canvas.width * 0.7)}}",
760
+ "maxLines": 2,
761
+ "minFontSize": "{{round(min(canvas.width, canvas.height) * 0.032)}}"
762
+ },
763
+ {
764
+ "id": "sd-{{index}}",
765
+ "type": "text",
766
+ "content": "{{s.detail}}",
767
+ "fontSize": "{{round(min(canvas.width, canvas.height) * 0.032)}}",
768
+ "color": "{{muted}}",
769
+ "maxWidth": "{{round(canvas.width * 0.7)}}",
770
+ "maxLines": 2,
771
+ "minFontSize": "{{round(min(canvas.width, canvas.height) * 0.026)}}"
772
+ }
773
+ ]
774
+ }
775
+ ]
776
+ }
777
+ ]
778
+ }
779
+ ]
780
+ }
781
+ ]
782
+ },
783
+ {
784
+ "repeat": "{{steps}}",
785
+ "as": "x",
786
+ "each": [
787
+ {
788
+ "id": "sfx-step-{{index}}",
789
+ "type": "audio",
790
+ "src": "sfx:tick",
791
+ "startFrame": "{{18 + index * 20}}",
792
+ "volume": 0.4
793
+ }
794
+ ]
795
+ }
796
+ ]
797
+ },
798
+ "stat_grid": {
799
+ "description": "Three numbers side by side, each with a label.",
800
+ "params": {
801
+ "title": {
802
+ "type": "string",
803
+ "default": "The results"
804
+ },
805
+ "stats": {
806
+ "type": "list",
807
+ "items": {
808
+ "value": {
809
+ "type": "string",
810
+ "default": ""
811
+ },
812
+ "label": {
813
+ "type": "string",
814
+ "default": ""
815
+ }
816
+ },
817
+ "default": [
818
+ {
819
+ "value": "3x",
820
+ "label": "faster to make"
821
+ },
822
+ {
823
+ "value": "40%",
824
+ "label": "lower cost"
825
+ },
826
+ {
827
+ "value": "100%",
828
+ "label": "repeatable"
829
+ }
830
+ ]
831
+ }
832
+ },
833
+ "layers": [
834
+ {
835
+ "id": "bg",
836
+ "type": "rect",
837
+ "x": 0,
838
+ "y": 0,
839
+ "width": "{{canvas.width}}",
840
+ "height": "{{canvas.height}}",
841
+ "fill": "{{bg}}"
842
+ },
843
+ {
844
+ "id": "glow",
845
+ "type": "circle",
846
+ "x": "{{round(canvas.width * 0.5)}}",
847
+ "y": "{{round(canvas.height * 0.8)}}",
848
+ "width": "{{round(min(canvas.width, canvas.height) * 1.1)}}",
849
+ "fill": "{{accent}}",
850
+ "opacity": 0.1,
851
+ "blur": 120,
852
+ "animations": [
853
+ {
854
+ "property": "scale",
855
+ "keyframes": [
856
+ {
857
+ "frame": 0,
858
+ "value": 0.9
859
+ },
860
+ {
861
+ "frame": 150,
862
+ "value": 1.1,
863
+ "easing": "drift"
864
+ }
865
+ ]
866
+ },
867
+ {
868
+ "property": "x",
869
+ "keyframes": [
870
+ {
871
+ "frame": 0,
872
+ "value": "{{round(canvas.width * 0.5)}}"
873
+ },
874
+ {
875
+ "frame": 180,
876
+ "value": "{{round(canvas.width * 0.4)}}",
877
+ "easing": "drift"
878
+ }
879
+ ]
880
+ }
881
+ ]
882
+ },
883
+ {
884
+ "id": "glow2",
885
+ "type": "circle",
886
+ "x": "{{round(canvas.width * 0.5)}}",
887
+ "y": "{{round(canvas.height * 0.19999999999999996)}}",
888
+ "width": "{{round(min(canvas.width, canvas.height) * 0.8)}}",
889
+ "fill": "{{accent2}}",
890
+ "opacity": 0.06,
891
+ "blur": 140,
892
+ "animations": [
893
+ {
894
+ "property": "y",
895
+ "keyframes": [
896
+ {
897
+ "frame": 0,
898
+ "value": "{{round(canvas.height * 0.19999999999999996)}}"
899
+ },
900
+ {
901
+ "frame": 180,
902
+ "value": "{{round(canvas.height * 0.09999999999999998)}}",
903
+ "easing": "drift"
904
+ }
905
+ ]
906
+ },
907
+ {
908
+ "property": "scale",
909
+ "keyframes": [
910
+ {
911
+ "frame": 0,
912
+ "value": 1.1
913
+ },
914
+ {
915
+ "frame": 150,
916
+ "value": 0.9,
917
+ "easing": "drift"
918
+ }
919
+ ]
920
+ }
921
+ ]
922
+ },
923
+ {
924
+ "id": "stack",
925
+ "type": "group",
926
+ "x": "{{round(canvas.width * 0.08)}}",
927
+ "y": 0,
928
+ "width": "{{round(canvas.width * 0.84)}}",
929
+ "height": "{{canvas.height}}",
930
+ "layout": {
931
+ "direction": "column",
932
+ "gap": "{{round(min(canvas.width, canvas.height) * 0.07)}}",
933
+ "align": "start",
934
+ "justify": "center"
935
+ },
936
+ "children": [
937
+ {
938
+ "id": "title",
939
+ "type": "text",
940
+ "content": "{{title}}",
941
+ "fontSize": "{{round(min(canvas.width, canvas.height) * 0.05)}}",
942
+ "color": "{{text}}",
943
+ "fontWeight": "{{headWeight}}",
944
+ "maxWidth": "{{round(canvas.width * 0.84)}}",
945
+ "maxLines": 2,
946
+ "minFontSize": "{{round(min(canvas.width, canvas.height) * 0.036)}}",
947
+ "startFrame": 0,
948
+ "animations": [
949
+ {
950
+ "property": "opacity",
951
+ "keyframes": [
952
+ {
953
+ "frame": 0,
954
+ "value": 0
955
+ },
956
+ {
957
+ "frame": 14,
958
+ "value": 1,
959
+ "easing": "glide"
960
+ }
961
+ ]
962
+ },
963
+ {
964
+ "property": "y",
965
+ "keyframes": [
966
+ {
967
+ "frame": 0,
968
+ "value": 24,
969
+ "easing": "land"
970
+ },
971
+ {
972
+ "frame": 18,
973
+ "value": 0
974
+ }
975
+ ]
976
+ }
977
+ ]
978
+ },
979
+ {
980
+ "id": "cells",
981
+ "type": "group",
982
+ "width": "{{round(canvas.width * 0.84)}}",
983
+ "layout": {
984
+ "direction": "row",
985
+ "gap": "{{round(min(canvas.width, canvas.height) * 0.04)}}",
986
+ "align": "start",
987
+ "justify": "space-between"
988
+ },
989
+ "children": [
990
+ {
991
+ "repeat": "{{stats}}",
992
+ "as": "st",
993
+ "each": [
994
+ {
995
+ "id": "cell-{{index}}",
996
+ "type": "group",
997
+ "startFrame": "{{14 + index * 12}}",
998
+ "layout": {
999
+ "direction": "column",
1000
+ "gap": "{{round(min(canvas.width, canvas.height) * 0.012)}}"
1001
+ },
1002
+ "animations": [
1003
+ {
1004
+ "property": "opacity",
1005
+ "keyframes": [
1006
+ {
1007
+ "frame": 0,
1008
+ "value": 0
1009
+ },
1010
+ {
1011
+ "frame": 12,
1012
+ "value": 1
1013
+ }
1014
+ ]
1015
+ },
1016
+ {
1017
+ "property": "y",
1018
+ "keyframes": [
1019
+ {
1020
+ "frame": 0,
1021
+ "value": 30,
1022
+ "easing": "land"
1023
+ },
1024
+ {
1025
+ "frame": 18,
1026
+ "value": 0
1027
+ }
1028
+ ]
1029
+ }
1030
+ ],
1031
+ "children": [
1032
+ {
1033
+ "id": "bar-{{index}}",
1034
+ "type": "rect",
1035
+ "width": "{{round(canvas.width * 0.84 / max(count, 1) - min(canvas.width, canvas.height) * 0.04)}}",
1036
+ "height": "{{round(min(canvas.width, canvas.height) * 0.008)}}",
1037
+ "fill": "{{accent}}"
1038
+ },
1039
+ {
1040
+ "id": "v-{{index}}",
1041
+ "type": "text",
1042
+ "content": "{{st.value}}",
1043
+ "fontSize": "{{round(min(min(canvas.width, canvas.height) * 0.08, (canvas.width * 0.84 / max(count, 1) - min(canvas.width, canvas.height) * 0.04) * 0.3))}}",
1044
+ "color": "{{accent}}",
1045
+ "fontWeight": 900,
1046
+ "maxWidth": "{{round(canvas.width * 0.84 / max(count, 1) - min(canvas.width, canvas.height) * 0.04)}}",
1047
+ "lineHeight": 1.05
1048
+ },
1049
+ {
1050
+ "id": "l-{{index}}",
1051
+ "type": "text",
1052
+ "content": "{{st.label}}",
1053
+ "fontSize": "{{round(min(canvas.width, canvas.height) * 0.032)}}",
1054
+ "color": "{{muted}}",
1055
+ "maxWidth": "{{round(canvas.width * 0.84 / max(count, 1) - min(canvas.width, canvas.height) * 0.04)}}",
1056
+ "maxLines": 3,
1057
+ "minFontSize": "{{round(min(canvas.width, canvas.height) * 0.026)}}"
1058
+ }
1059
+ ]
1060
+ }
1061
+ ]
1062
+ }
1063
+ ]
1064
+ }
1065
+ ]
1066
+ },
1067
+ {
1068
+ "repeat": "{{stats}}",
1069
+ "as": "x",
1070
+ "each": [
1071
+ {
1072
+ "id": "sfx-cell-{{index}}",
1073
+ "type": "audio",
1074
+ "src": "sfx:pop",
1075
+ "startFrame": "{{14 + index * 12}}",
1076
+ "volume": 0.4
1077
+ }
1078
+ ]
1079
+ }
1080
+ ]
1081
+ },
1082
+ "cta_end": {
1083
+ "description": "Closing scene: a headline, a button and a web address.",
1084
+ "params": {
1085
+ "headline": {
1086
+ "type": "string",
1087
+ "default": "Ready to start?"
1088
+ },
1089
+ "button": {
1090
+ "type": "string",
1091
+ "default": "Get started"
1092
+ },
1093
+ "url": {
1094
+ "type": "string",
1095
+ "default": "example.com"
1096
+ }
1097
+ },
1098
+ "layers": [
1099
+ {
1100
+ "id": "bg",
1101
+ "type": "rect",
1102
+ "x": 0,
1103
+ "y": 0,
1104
+ "width": "{{canvas.width}}",
1105
+ "height": "{{canvas.height}}",
1106
+ "fill": "{{bg}}"
1107
+ },
1108
+ {
1109
+ "id": "glow",
1110
+ "type": "circle",
1111
+ "x": "{{round(canvas.width * 0.5)}}",
1112
+ "y": "{{round(canvas.height * 0.4)}}",
1113
+ "width": "{{round(min(canvas.width, canvas.height) * 1.1)}}",
1114
+ "fill": "{{accent}}",
1115
+ "opacity": 0.16,
1116
+ "blur": 120,
1117
+ "animations": [
1118
+ {
1119
+ "property": "scale",
1120
+ "keyframes": [
1121
+ {
1122
+ "frame": 0,
1123
+ "value": 0.9
1124
+ },
1125
+ {
1126
+ "frame": 150,
1127
+ "value": 1.1,
1128
+ "easing": "drift"
1129
+ }
1130
+ ]
1131
+ },
1132
+ {
1133
+ "property": "x",
1134
+ "keyframes": [
1135
+ {
1136
+ "frame": 0,
1137
+ "value": "{{round(canvas.width * 0.5)}}"
1138
+ },
1139
+ {
1140
+ "frame": 180,
1141
+ "value": "{{round(canvas.width * 0.4)}}",
1142
+ "easing": "drift"
1143
+ }
1144
+ ]
1145
+ }
1146
+ ]
1147
+ },
1148
+ {
1149
+ "id": "glow2",
1150
+ "type": "circle",
1151
+ "x": "{{round(canvas.width * 0.5)}}",
1152
+ "y": "{{round(canvas.height * 0.6)}}",
1153
+ "width": "{{round(min(canvas.width, canvas.height) * 0.8)}}",
1154
+ "fill": "{{accent2}}",
1155
+ "opacity": 0.096,
1156
+ "blur": 140,
1157
+ "animations": [
1158
+ {
1159
+ "property": "y",
1160
+ "keyframes": [
1161
+ {
1162
+ "frame": 0,
1163
+ "value": "{{round(canvas.height * 0.6)}}"
1164
+ },
1165
+ {
1166
+ "frame": 180,
1167
+ "value": "{{round(canvas.height * 0.5)}}",
1168
+ "easing": "drift"
1169
+ }
1170
+ ]
1171
+ },
1172
+ {
1173
+ "property": "scale",
1174
+ "keyframes": [
1175
+ {
1176
+ "frame": 0,
1177
+ "value": 1.1
1178
+ },
1179
+ {
1180
+ "frame": 150,
1181
+ "value": 0.9,
1182
+ "easing": "drift"
1183
+ }
1184
+ ]
1185
+ }
1186
+ ]
1187
+ },
1188
+ {
1189
+ "id": "stack",
1190
+ "type": "group",
1191
+ "x": 0,
1192
+ "y": 0,
1193
+ "width": "{{canvas.width}}",
1194
+ "height": "{{canvas.height}}",
1195
+ "layout": {
1196
+ "direction": "column",
1197
+ "gap": "{{round(min(canvas.width, canvas.height) * 0.05)}}",
1198
+ "align": "center",
1199
+ "justify": "center"
1200
+ },
1201
+ "children": [
1202
+ {
1203
+ "id": "headline",
1204
+ "type": "text",
1205
+ "content": "{{headline}}",
1206
+ "fontSize": "{{round(min(canvas.width, canvas.height) * 0.1)}}",
1207
+ "color": "{{text}}",
1208
+ "fontWeight": "{{headWeight}}",
1209
+ "textAlign": "center",
1210
+ "maxWidth": "{{round(canvas.width * 0.84)}}",
1211
+ "maxLines": 3,
1212
+ "minFontSize": "{{round(min(canvas.width, canvas.height) * 0.06)}}",
1213
+ "lineHeight": 1.05,
1214
+ "split": {
1215
+ "by": "words",
1216
+ "stagger": 4,
1217
+ "preset": "rise",
1218
+ "duration": 18
1219
+ }
1220
+ },
1221
+ {
1222
+ "id": "btn",
1223
+ "type": "group",
1224
+ "width": "{{round(canvas.width * 0.42)}}",
1225
+ "height": "{{round(min(canvas.width, canvas.height) * 0.13)}}",
1226
+ "startFrame": 24,
1227
+ "animations": [
1228
+ {
1229
+ "property": "scale",
1230
+ "keyframes": [
1231
+ {
1232
+ "frame": 0,
1233
+ "value": 0.85,
1234
+ "easing": "pop"
1235
+ },
1236
+ {
1237
+ "frame": 16,
1238
+ "value": 1
1239
+ }
1240
+ ]
1241
+ },
1242
+ {
1243
+ "property": "opacity",
1244
+ "keyframes": [
1245
+ {
1246
+ "frame": 0,
1247
+ "value": 0
1248
+ },
1249
+ {
1250
+ "frame": 8,
1251
+ "value": 1
1252
+ }
1253
+ ]
1254
+ }
1255
+ ],
1256
+ "children": [
1257
+ {
1258
+ "id": "pill",
1259
+ "type": "rect",
1260
+ "x": 0,
1261
+ "y": 0,
1262
+ "width": "{{round(canvas.width * 0.42)}}",
1263
+ "height": "{{round(min(canvas.width, canvas.height) * 0.13)}}",
1264
+ "radius": "{{round(min(canvas.width, canvas.height) * 0.065)}}",
1265
+ "fill": "{{accent}}"
1266
+ },
1267
+ {
1268
+ "id": "label",
1269
+ "type": "text",
1270
+ "content": "{{button}}",
1271
+ "x": "{{round(canvas.width * 0.21)}}",
1272
+ "y": "{{round(min(canvas.width, canvas.height) * 0.065 - min(canvas.width, canvas.height) * 0.03)}}",
1273
+ "fontSize": "{{round(min(canvas.width, canvas.height) * 0.05)}}",
1274
+ "fontWeight": 800,
1275
+ "color": "{{bg}}",
1276
+ "textAlign": "center",
1277
+ "maxWidth": "{{round(canvas.width * 0.38)}}",
1278
+ "maxLines": 1,
1279
+ "minFontSize": "{{round(min(canvas.width, canvas.height) * 0.032)}}"
1280
+ }
1281
+ ]
1282
+ },
1283
+ {
1284
+ "id": "url",
1285
+ "type": "text",
1286
+ "content": "{{url}}",
1287
+ "fontSize": "{{round(min(canvas.width, canvas.height) * 0.04)}}",
1288
+ "color": "{{muted}}",
1289
+ "textAlign": "center",
1290
+ "maxWidth": "{{round(canvas.width * 0.8)}}",
1291
+ "startFrame": 34,
1292
+ "animations": [
1293
+ {
1294
+ "property": "opacity",
1295
+ "keyframes": [
1296
+ {
1297
+ "frame": 0,
1298
+ "value": 0
1299
+ },
1300
+ {
1301
+ "frame": 14,
1302
+ "value": 1,
1303
+ "easing": "glide"
1304
+ }
1305
+ ]
1306
+ },
1307
+ {
1308
+ "property": "y",
1309
+ "keyframes": [
1310
+ {
1311
+ "frame": 0,
1312
+ "value": 16,
1313
+ "easing": "land"
1314
+ },
1315
+ {
1316
+ "frame": 18,
1317
+ "value": 0
1318
+ }
1319
+ ]
1320
+ }
1321
+ ]
1322
+ }
1323
+ ]
1324
+ },
1325
+ {
1326
+ "id": "sfx-btn",
1327
+ "type": "audio",
1328
+ "src": "sfx:ding",
1329
+ "startFrame": 24,
1330
+ "volume": 0.45
1331
+ }
1332
+ ]
1333
+ }
1334
+ }
1335
+ }