sketchmark 2.0.0 → 2.1.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 (132) hide show
  1. package/ANIMATABLE_MATRIX.md +177 -0
  2. package/KERNEL_SPEC.md +412 -0
  3. package/PACKS.md +81 -0
  4. package/PRESETS.md +182 -0
  5. package/README.md +274 -188
  6. package/bin/editor-ui.cjs +2285 -0
  7. package/bin/preview-ui.cjs +74 -0
  8. package/bin/sketchmark.cjs +648 -2008
  9. package/dist/src/animatable.d.ts +21 -0
  10. package/dist/src/animatable.js +439 -0
  11. package/dist/src/builders/index.d.ts +1 -11
  12. package/dist/src/builders/index.js +1 -19
  13. package/dist/src/diagnostics.js +1 -64
  14. package/dist/src/edit.d.ts +27 -0
  15. package/dist/src/edit.js +162 -0
  16. package/dist/src/index.d.ts +4 -13
  17. package/dist/src/index.js +4 -13
  18. package/dist/src/keyframes.d.ts +48 -0
  19. package/dist/src/keyframes.js +182 -0
  20. package/dist/src/motion.d.ts +4 -0
  21. package/dist/src/motion.js +262 -0
  22. package/dist/src/normalize.js +120 -151
  23. package/dist/src/presets/characters.d.ts +15 -0
  24. package/dist/src/presets/characters.js +113 -0
  25. package/dist/src/presets/compose.d.ts +5 -0
  26. package/dist/src/presets/compose.js +80 -0
  27. package/dist/src/presets/effects.d.ts +40 -0
  28. package/dist/src/presets/effects.js +79 -0
  29. package/dist/src/presets/helpers.d.ts +33 -0
  30. package/dist/src/presets/helpers.js +165 -0
  31. package/dist/src/presets/index.d.ts +9 -0
  32. package/dist/src/presets/index.js +48 -0
  33. package/dist/src/presets/motions.d.ts +33 -0
  34. package/dist/src/presets/motions.js +75 -0
  35. package/dist/src/presets/scenes.d.ts +35 -0
  36. package/dist/src/presets/scenes.js +134 -0
  37. package/dist/src/presets/shapes.d.ts +71 -0
  38. package/dist/src/presets/shapes.js +96 -0
  39. package/dist/src/presets/transitions.d.ts +29 -0
  40. package/dist/src/presets/transitions.js +113 -0
  41. package/dist/src/presets/types.d.ts +34 -0
  42. package/dist/src/presets/types.js +2 -0
  43. package/dist/src/render/html.js +1 -4
  44. package/dist/src/render/svg.d.ts +2 -2
  45. package/dist/src/render/svg.js +86 -82
  46. package/dist/src/render/three-html.js +67 -113
  47. package/dist/src/scenes.js +1 -0
  48. package/dist/src/schema.js +218 -280
  49. package/dist/src/shapes/builtins.js +11 -47
  50. package/dist/src/shapes/common.js +12 -11
  51. package/dist/src/shapes/registry.d.ts +0 -1
  52. package/dist/src/shapes/registry.js +0 -4
  53. package/dist/src/shapes/types.d.ts +1 -3
  54. package/dist/src/types.d.ts +57 -288
  55. package/dist/src/utils.d.ts +2 -11
  56. package/dist/src/utils.js +13 -70
  57. package/dist/src/validate.js +321 -275
  58. package/dist/tests/run.js +576 -510
  59. package/examples/1730642890464.jpg +0 -0
  60. package/examples/app-screen.svg +1 -0
  61. package/examples/app-screen.visual.json +503 -0
  62. package/examples/dashboard-table.svg +1 -0
  63. package/examples/dashboard-table.visual.json +708 -0
  64. package/examples/dev-docs.svg +1 -0
  65. package/examples/dev-docs.visual.json +248 -0
  66. package/examples/explainer.mp4 +0 -0
  67. package/examples/explainer.visual.json +1713 -0
  68. package/examples/group-origin-effects-lab-check.svg +1 -0
  69. package/examples/group-origin-effects-lab.visual.json +1880 -0
  70. package/examples/image-clip-radius.visual.json +271 -0
  71. package/examples/make-app-screen.cjs +368 -0
  72. package/examples/make-dashboard-table.cjs +277 -0
  73. package/examples/make-dev-docs.cjs +233 -0
  74. package/examples/make-explainer.cjs +438 -0
  75. package/examples/make-group-origin-effects-lab.cjs +370 -0
  76. package/examples/make-image-clip-radius.cjs +169 -0
  77. package/examples/make-modal-dialog.cjs +355 -0
  78. package/examples/make-origin-effects-lab.cjs +311 -0
  79. package/examples/make-preset-character-motion.cjs +32 -0
  80. package/examples/make-presets-demo.cjs +30 -0
  81. package/examples/make-pricing.cjs +286 -0
  82. package/examples/make-product-demo.cjs +468 -0
  83. package/examples/make-product-hero.cjs +223 -0
  84. package/examples/make-release-notes.cjs +333 -0
  85. package/examples/make-settings-panel.cjs +435 -0
  86. package/examples/make-split-preview.cjs +248 -0
  87. package/examples/make-storyboard.cjs +215 -0
  88. package/examples/make-transcript.cjs +234 -0
  89. package/examples/make-typography-test.cjs +397 -0
  90. package/examples/make-ui-demo-explainer.cjs +1094 -0
  91. package/examples/make-ui-flow.cjs +762 -0
  92. package/examples/make-walkthrough.cjs +815 -0
  93. package/examples/modal-dialog.svg +1 -0
  94. package/examples/modal-dialog.visual.json +239 -0
  95. package/examples/origin-effects-lab-check.svg +1 -0
  96. package/examples/origin-effects-lab.visual.json +1412 -0
  97. package/examples/preset-character-motion.visual.json +949 -0
  98. package/examples/presets-demo.visual.json +787 -0
  99. package/examples/pricing.svg +1 -0
  100. package/examples/pricing.visual.json +652 -0
  101. package/examples/product-demo.mp4 +0 -0
  102. package/examples/product-demo.visual.json +866 -0
  103. package/examples/product-hero.svg +1 -0
  104. package/examples/product-hero.visual.json +242 -0
  105. package/examples/release-notes.svg +1 -0
  106. package/examples/release-notes.visual.json +467 -0
  107. package/examples/settings-panel.svg +1 -0
  108. package/examples/settings-panel.visual.json +501 -0
  109. package/examples/split-preview.svg +1 -0
  110. package/examples/split-preview.visual.json +124 -0
  111. package/examples/storyboard.svg +1 -0
  112. package/examples/storyboard.visual.json +312 -0
  113. package/examples/transcript.svg +1 -0
  114. package/examples/transcript.visual.json +407 -0
  115. package/examples/typography-indent-check.svg +1 -0
  116. package/examples/typography-lineheight-0.svg +1 -0
  117. package/examples/typography-lineheight-2.svg +1 -0
  118. package/examples/typography-test-check.svg +1 -0
  119. package/examples/typography-test.svg +1 -0
  120. package/examples/typography-test.visual.json +757 -0
  121. package/examples/ui-demo-explainer-billing.svg +1 -0
  122. package/examples/ui-demo-explainer-check.svg +1 -0
  123. package/examples/ui-demo-explainer-save.svg +1 -0
  124. package/examples/ui-demo-explainer-toggle.svg +1 -0
  125. package/examples/ui-demo-explainer.mp4 +0 -0
  126. package/examples/ui-demo-explainer.visual.json +2597 -0
  127. package/examples/ui-flow.mp4 +0 -0
  128. package/examples/ui-flow.visual.json +1211 -0
  129. package/examples/walkthrough.mp4 +0 -0
  130. package/examples/walkthrough.visual.json +1372 -0
  131. package/package.json +52 -52
  132. package/schema/visual.schema.json +1086 -930
@@ -0,0 +1,1372 @@
1
+ {
2
+ "version": 1,
3
+ "canvas": {
4
+ "width": 1280,
5
+ "height": 720,
6
+ "background": "#f8fafc",
7
+ "duration": 24,
8
+ "fps": 30
9
+ },
10
+ "elements": [
11
+ {
12
+ "id": "hero-title",
13
+ "type": "text",
14
+ "x": 640,
15
+ "y": 280,
16
+ "text": "Build beautiful interfaces",
17
+ "align": "center",
18
+ "valign": "middle",
19
+ "fontSize": 56,
20
+ "fontFamily": "Inter, system-ui, sans-serif",
21
+ "weight": 800,
22
+ "fill": "#0f172a",
23
+ "opacity": 0,
24
+ "timeline": {
25
+ "tracks": {
26
+ "opacity": {
27
+ "keyframes": [
28
+ {
29
+ "time": 0.2,
30
+ "value": 0,
31
+ "out": {
32
+ "type": "cubicBezier",
33
+ "x1": 0.4,
34
+ "y1": 0,
35
+ "x2": 0.2,
36
+ "y2": 1
37
+ }
38
+ },
39
+ {
40
+ "time": 0.8,
41
+ "value": 1
42
+ },
43
+ {
44
+ "time": 4,
45
+ "value": 1,
46
+ "out": {
47
+ "type": "cubicBezier",
48
+ "x1": 0.4,
49
+ "y1": 0,
50
+ "x2": 0.2,
51
+ "y2": 1
52
+ }
53
+ },
54
+ {
55
+ "time": 4.6,
56
+ "value": 0
57
+ }
58
+ ]
59
+ },
60
+ "y": {
61
+ "keyframes": [
62
+ {
63
+ "time": 0.2,
64
+ "value": 300,
65
+ "out": {
66
+ "type": "cubicBezier",
67
+ "x1": 0.4,
68
+ "y1": 0,
69
+ "x2": 0.2,
70
+ "y2": 1
71
+ }
72
+ },
73
+ {
74
+ "time": 0.8,
75
+ "value": 280
76
+ }
77
+ ]
78
+ },
79
+ "scale": {
80
+ "keyframes": [
81
+ {
82
+ "time": 0.2,
83
+ "value": 0.95,
84
+ "out": {
85
+ "type": "cubicBezier",
86
+ "x1": 0.4,
87
+ "y1": 0,
88
+ "x2": 0.2,
89
+ "y2": 1
90
+ }
91
+ },
92
+ {
93
+ "time": 0.8,
94
+ "value": 1
95
+ }
96
+ ]
97
+ }
98
+ }
99
+ }
100
+ },
101
+ {
102
+ "id": "hero-sub",
103
+ "type": "text",
104
+ "x": 640,
105
+ "y": 360,
106
+ "text": "Design, prototype, and ship — all in one place.",
107
+ "align": "center",
108
+ "valign": "middle",
109
+ "fontSize": 22,
110
+ "fontFamily": "Inter, system-ui, sans-serif",
111
+ "weight": 400,
112
+ "fill": "#64748b",
113
+ "opacity": 0,
114
+ "timeline": {
115
+ "tracks": {
116
+ "opacity": {
117
+ "keyframes": [
118
+ {
119
+ "time": 0.6,
120
+ "value": 0,
121
+ "out": {
122
+ "type": "cubicBezier",
123
+ "x1": 0.4,
124
+ "y1": 0,
125
+ "x2": 0.2,
126
+ "y2": 1
127
+ }
128
+ },
129
+ {
130
+ "time": 1.2,
131
+ "value": 1
132
+ },
133
+ {
134
+ "time": 4,
135
+ "value": 1,
136
+ "out": {
137
+ "type": "cubicBezier",
138
+ "x1": 0.4,
139
+ "y1": 0,
140
+ "x2": 0.2,
141
+ "y2": 1
142
+ }
143
+ },
144
+ {
145
+ "time": 4.6,
146
+ "value": 0
147
+ }
148
+ ]
149
+ }
150
+ }
151
+ }
152
+ },
153
+ {
154
+ "id": "dash-panel",
155
+ "type": "group",
156
+ "x": 200,
157
+ "y": 120,
158
+ "opacity": 0,
159
+ "children": [
160
+ {
161
+ "id": "dash-bg",
162
+ "type": "path",
163
+ "d": "M 12 0 L 868 0 Q 880 0 880 12 L 880 468 Q 880 480 868 480 L 12 480 Q 0 480 0 468 L 0 12 Q 0 0 12 0 Z",
164
+ "fill": "#ffffff",
165
+ "stroke": "#e2e8f0",
166
+ "strokeWidth": 1
167
+ },
168
+ {
169
+ "id": "dash-title",
170
+ "type": "text",
171
+ "x": 28,
172
+ "y": 28,
173
+ "text": "Your Projects",
174
+ "align": "left",
175
+ "valign": "top",
176
+ "fontSize": 20,
177
+ "fontFamily": "Inter, system-ui, sans-serif",
178
+ "weight": 600,
179
+ "fill": "#1e293b"
180
+ },
181
+ {
182
+ "id": "dash-subtitle",
183
+ "type": "text",
184
+ "x": 28,
185
+ "y": 56,
186
+ "text": "3 projects · Last updated 2 hours ago",
187
+ "align": "left",
188
+ "valign": "top",
189
+ "fontSize": 13,
190
+ "fontFamily": "Inter, system-ui, sans-serif",
191
+ "weight": 400,
192
+ "fill": "#94a3b8"
193
+ },
194
+ {
195
+ "id": "dash-divider",
196
+ "type": "path",
197
+ "d": "M 0 90 L 880 90",
198
+ "stroke": "#e2e8f0",
199
+ "strokeWidth": 1,
200
+ "fill": "none"
201
+ },
202
+ {
203
+ "id": "proj-0-name",
204
+ "type": "text",
205
+ "x": 28,
206
+ "y": 110,
207
+ "text": "Marketing Website",
208
+ "align": "left",
209
+ "valign": "top",
210
+ "fontSize": 15,
211
+ "fontFamily": "Inter, system-ui, sans-serif",
212
+ "weight": 500,
213
+ "fill": "#1e293b"
214
+ },
215
+ {
216
+ "id": "proj-0-meta",
217
+ "type": "text",
218
+ "x": 28,
219
+ "y": 132,
220
+ "text": "12 screens · Published",
221
+ "align": "left",
222
+ "valign": "top",
223
+ "fontSize": 12,
224
+ "fontFamily": "Inter, system-ui, sans-serif",
225
+ "weight": 400,
226
+ "fill": "#94a3b8"
227
+ },
228
+ {
229
+ "id": "proj-1-name",
230
+ "type": "text",
231
+ "x": 28,
232
+ "y": 170,
233
+ "text": "Mobile App v2",
234
+ "align": "left",
235
+ "valign": "top",
236
+ "fontSize": 15,
237
+ "fontFamily": "Inter, system-ui, sans-serif",
238
+ "weight": 500,
239
+ "fill": "#1e293b"
240
+ },
241
+ {
242
+ "id": "proj-1-meta",
243
+ "type": "text",
244
+ "x": 28,
245
+ "y": 192,
246
+ "text": "8 screens · Draft",
247
+ "align": "left",
248
+ "valign": "top",
249
+ "fontSize": 12,
250
+ "fontFamily": "Inter, system-ui, sans-serif",
251
+ "weight": 400,
252
+ "fill": "#94a3b8"
253
+ },
254
+ {
255
+ "id": "proj-2-name",
256
+ "type": "text",
257
+ "x": 28,
258
+ "y": 230,
259
+ "text": "Dashboard Redesign",
260
+ "align": "left",
261
+ "valign": "top",
262
+ "fontSize": 15,
263
+ "fontFamily": "Inter, system-ui, sans-serif",
264
+ "weight": 500,
265
+ "fill": "#1e293b"
266
+ },
267
+ {
268
+ "id": "proj-2-meta",
269
+ "type": "text",
270
+ "x": 28,
271
+ "y": 252,
272
+ "text": "24 screens · In review",
273
+ "align": "left",
274
+ "valign": "top",
275
+ "fontSize": 12,
276
+ "fontFamily": "Inter, system-ui, sans-serif",
277
+ "weight": 400,
278
+ "fill": "#94a3b8"
279
+ }
280
+ ],
281
+ "timeline": {
282
+ "tracks": {
283
+ "opacity": {
284
+ "keyframes": [
285
+ {
286
+ "time": 5,
287
+ "value": 0,
288
+ "out": {
289
+ "type": "cubicBezier",
290
+ "x1": 0.4,
291
+ "y1": 0,
292
+ "x2": 0.2,
293
+ "y2": 1
294
+ }
295
+ },
296
+ {
297
+ "time": 5.6,
298
+ "value": 1
299
+ },
300
+ {
301
+ "time": 9,
302
+ "value": 1,
303
+ "out": {
304
+ "type": "cubicBezier",
305
+ "x1": 0.4,
306
+ "y1": 0,
307
+ "x2": 0.2,
308
+ "y2": 1
309
+ }
310
+ },
311
+ {
312
+ "time": 9.6,
313
+ "value": 0
314
+ }
315
+ ]
316
+ },
317
+ "scale": {
318
+ "keyframes": [
319
+ {
320
+ "time": 5,
321
+ "value": 0.96,
322
+ "out": {
323
+ "type": "cubicBezier",
324
+ "x1": 0.4,
325
+ "y1": 0,
326
+ "x2": 0.2,
327
+ "y2": 1
328
+ }
329
+ },
330
+ {
331
+ "time": 5.6,
332
+ "value": 1
333
+ }
334
+ ]
335
+ }
336
+ }
337
+ }
338
+ },
339
+ {
340
+ "id": "create-btn",
341
+ "type": "group",
342
+ "x": 940,
343
+ "y": 144,
344
+ "opacity": 0,
345
+ "children": [
346
+ {
347
+ "id": "create-btn-bg",
348
+ "type": "path",
349
+ "d": "M 8 0 L 104 0 Q 112 0 112 8 L 112 32 Q 112 40 104 40 L 8 40 Q 0 40 0 32 L 0 8 Q 0 0 8 0 Z",
350
+ "fill": "#2563eb",
351
+ "stroke": "none"
352
+ },
353
+ {
354
+ "id": "create-btn-text",
355
+ "type": "text",
356
+ "x": 56,
357
+ "y": 20,
358
+ "text": "Create New",
359
+ "align": "center",
360
+ "valign": "middle",
361
+ "fontSize": 14,
362
+ "fontFamily": "Inter, system-ui, sans-serif",
363
+ "weight": 600,
364
+ "fill": "#ffffff"
365
+ }
366
+ ],
367
+ "timeline": {
368
+ "tracks": {
369
+ "opacity": {
370
+ "keyframes": [
371
+ {
372
+ "time": 5.3,
373
+ "value": 0,
374
+ "out": {
375
+ "type": "cubicBezier",
376
+ "x1": 0.4,
377
+ "y1": 0,
378
+ "x2": 0.2,
379
+ "y2": 1
380
+ }
381
+ },
382
+ {
383
+ "time": 5.8,
384
+ "value": 1
385
+ },
386
+ {
387
+ "time": 9,
388
+ "value": 1,
389
+ "out": {
390
+ "type": "cubicBezier",
391
+ "x1": 0.4,
392
+ "y1": 0,
393
+ "x2": 0.2,
394
+ "y2": 1
395
+ }
396
+ },
397
+ {
398
+ "time": 9.6,
399
+ "value": 0
400
+ }
401
+ ]
402
+ },
403
+ "scale": {
404
+ "keyframes": [
405
+ {
406
+ "time": 7,
407
+ "value": 1,
408
+ "out": {
409
+ "type": "cubicBezier",
410
+ "x1": 0.2,
411
+ "y1": 1,
412
+ "x2": 0.2,
413
+ "y2": 1
414
+ }
415
+ },
416
+ {
417
+ "time": 7.15,
418
+ "value": 0.95
419
+ },
420
+ {
421
+ "time": 7.3,
422
+ "value": 1
423
+ }
424
+ ]
425
+ }
426
+ }
427
+ },
428
+ "origin": [
429
+ 56,
430
+ 20
431
+ ]
432
+ },
433
+ {
434
+ "id": "modal-backdrop",
435
+ "type": "path",
436
+ "d": "M 0 0 L 1280 0 L 1280 720 L 0 720 Z",
437
+ "fill": "#0f172a",
438
+ "opacity": 0,
439
+ "timeline": {
440
+ "tracks": {
441
+ "opacity": {
442
+ "keyframes": [
443
+ {
444
+ "time": 10,
445
+ "value": 0,
446
+ "out": {
447
+ "type": "cubicBezier",
448
+ "x1": 0.4,
449
+ "y1": 0,
450
+ "x2": 0.2,
451
+ "y2": 1
452
+ }
453
+ },
454
+ {
455
+ "time": 10.4,
456
+ "value": 0.4
457
+ },
458
+ {
459
+ "time": 19,
460
+ "value": 0.4,
461
+ "out": {
462
+ "type": "cubicBezier",
463
+ "x1": 0.4,
464
+ "y1": 0,
465
+ "x2": 0.2,
466
+ "y2": 1
467
+ }
468
+ },
469
+ {
470
+ "time": 19.5,
471
+ "value": 0
472
+ }
473
+ ]
474
+ }
475
+ }
476
+ }
477
+ },
478
+ {
479
+ "id": "modal",
480
+ "type": "group",
481
+ "x": 400,
482
+ "y": 190,
483
+ "opacity": 0,
484
+ "children": [
485
+ {
486
+ "id": "modal-bg",
487
+ "type": "path",
488
+ "d": "M 12 0 L 468 0 Q 480 0 480 12 L 480 328 Q 480 340 468 340 L 12 340 Q 0 340 0 328 L 0 12 Q 0 0 12 0 Z",
489
+ "fill": "#ffffff",
490
+ "stroke": "none"
491
+ },
492
+ {
493
+ "id": "modal-title",
494
+ "type": "text",
495
+ "x": 28,
496
+ "y": 28,
497
+ "text": "Create new project",
498
+ "align": "left",
499
+ "valign": "top",
500
+ "fontSize": 18,
501
+ "fontFamily": "Inter, system-ui, sans-serif",
502
+ "weight": 600,
503
+ "fill": "#1e293b"
504
+ },
505
+ {
506
+ "id": "modal-desc",
507
+ "type": "text",
508
+ "x": 28,
509
+ "y": 56,
510
+ "text": "Give your project a name and choose a template to get started.",
511
+ "align": "left",
512
+ "valign": "top",
513
+ "fontSize": 13,
514
+ "fontFamily": "Inter, system-ui, sans-serif",
515
+ "weight": 400,
516
+ "fill": "#475569",
517
+ "maxWidth": 424
518
+ },
519
+ {
520
+ "id": "field-label",
521
+ "type": "text",
522
+ "x": 28,
523
+ "y": 100,
524
+ "text": "Project name",
525
+ "align": "left",
526
+ "valign": "top",
527
+ "fontSize": 13,
528
+ "fontFamily": "Inter, system-ui, sans-serif",
529
+ "weight": 500,
530
+ "fill": "#1e293b"
531
+ },
532
+ {
533
+ "id": "field-input-bg",
534
+ "type": "path",
535
+ "d": "M 34 124 L 446 124 Q 452 124 452 130 L 452 160 Q 452 166 446 166 L 34 166 Q 28 166 28 160 L 28 130 Q 28 124 34 124 Z",
536
+ "fill": "#f8fafc",
537
+ "stroke": "#cbd5e1",
538
+ "strokeWidth": 1
539
+ },
540
+ {
541
+ "id": "field-placeholder",
542
+ "type": "text",
543
+ "x": 40,
544
+ "y": 145,
545
+ "text": "Enter project name...",
546
+ "align": "left",
547
+ "valign": "middle",
548
+ "fontSize": 14,
549
+ "fontFamily": "Inter, system-ui, sans-serif",
550
+ "weight": 400,
551
+ "fill": "#64748b"
552
+ },
553
+ {
554
+ "id": "template-label",
555
+ "type": "text",
556
+ "x": 28,
557
+ "y": 186,
558
+ "text": "Template",
559
+ "align": "left",
560
+ "valign": "top",
561
+ "fontSize": 13,
562
+ "fontFamily": "Inter, system-ui, sans-serif",
563
+ "weight": 500,
564
+ "fill": "#1e293b"
565
+ },
566
+ {
567
+ "id": "tpl-0-bg",
568
+ "type": "path",
569
+ "d": "M 34 210 L 122 210 Q 128 210 128 216 L 128 264 Q 128 270 122 270 L 34 270 Q 28 270 28 264 L 28 216 Q 28 210 34 210 Z",
570
+ "fill": "#2563eb",
571
+ "stroke": "#2563eb",
572
+ "strokeWidth": 2,
573
+ "opacity": 0.1
574
+ },
575
+ {
576
+ "id": "tpl-0-border",
577
+ "type": "path",
578
+ "d": "M 34 210 L 122 210 Q 128 210 128 216 L 128 264 Q 128 270 122 270 L 34 270 Q 28 270 28 264 L 28 216 Q 28 210 34 210 Z",
579
+ "fill": "none",
580
+ "stroke": "#2563eb",
581
+ "strokeWidth": 2
582
+ },
583
+ {
584
+ "id": "tpl-0-label",
585
+ "type": "text",
586
+ "x": 78,
587
+ "y": 240,
588
+ "text": "Blank",
589
+ "align": "center",
590
+ "valign": "middle",
591
+ "fontSize": 13,
592
+ "fontFamily": "Inter, system-ui, sans-serif",
593
+ "weight": 600,
594
+ "fill": "#2563eb"
595
+ },
596
+ {
597
+ "id": "tpl-1-bg",
598
+ "type": "path",
599
+ "d": "M 144 210 L 232 210 Q 238 210 238 216 L 238 264 Q 238 270 232 270 L 144 270 Q 138 270 138 264 L 138 216 Q 138 210 144 210 Z",
600
+ "fill": "#f8fafc",
601
+ "stroke": "#cbd5e1",
602
+ "strokeWidth": 1,
603
+ "opacity": 1
604
+ },
605
+ {
606
+ "id": "tpl-1-border",
607
+ "type": "path",
608
+ "d": "M 144 210 L 232 210 Q 238 210 238 216 L 238 264 Q 238 270 232 270 L 144 270 Q 138 270 138 264 L 138 216 Q 138 210 144 210 Z",
609
+ "fill": "none",
610
+ "stroke": "#cbd5e1",
611
+ "strokeWidth": 1
612
+ },
613
+ {
614
+ "id": "tpl-1-label",
615
+ "type": "text",
616
+ "x": 188,
617
+ "y": 240,
618
+ "text": "Dashboard",
619
+ "align": "center",
620
+ "valign": "middle",
621
+ "fontSize": 13,
622
+ "fontFamily": "Inter, system-ui, sans-serif",
623
+ "weight": 400,
624
+ "fill": "#475569"
625
+ },
626
+ {
627
+ "id": "tpl-2-bg",
628
+ "type": "path",
629
+ "d": "M 274 210 L 362 210 Q 368 210 368 216 L 368 264 Q 368 270 362 270 L 274 270 Q 268 270 268 264 L 268 216 Q 268 210 274 210 Z",
630
+ "fill": "#f8fafc",
631
+ "stroke": "#cbd5e1",
632
+ "strokeWidth": 1,
633
+ "opacity": 1
634
+ },
635
+ {
636
+ "id": "tpl-2-border",
637
+ "type": "path",
638
+ "d": "M 274 210 L 362 210 Q 368 210 368 216 L 368 264 Q 368 270 362 270 L 274 270 Q 268 270 268 264 L 268 216 Q 268 210 274 210 Z",
639
+ "fill": "none",
640
+ "stroke": "#cbd5e1",
641
+ "strokeWidth": 1
642
+ },
643
+ {
644
+ "id": "tpl-2-label",
645
+ "type": "text",
646
+ "x": 318,
647
+ "y": 240,
648
+ "text": "Landing",
649
+ "align": "center",
650
+ "valign": "middle",
651
+ "fontSize": 13,
652
+ "fontFamily": "Inter, system-ui, sans-serif",
653
+ "weight": 400,
654
+ "fill": "#475569"
655
+ }
656
+ ],
657
+ "timeline": {
658
+ "tracks": {
659
+ "opacity": {
660
+ "keyframes": [
661
+ {
662
+ "time": 10,
663
+ "value": 0,
664
+ "out": {
665
+ "type": "cubicBezier",
666
+ "x1": 0.4,
667
+ "y1": 0,
668
+ "x2": 0.2,
669
+ "y2": 1
670
+ }
671
+ },
672
+ {
673
+ "time": 10.5,
674
+ "value": 1
675
+ },
676
+ {
677
+ "time": 19,
678
+ "value": 1,
679
+ "out": {
680
+ "type": "cubicBezier",
681
+ "x1": 0.4,
682
+ "y1": 0,
683
+ "x2": 0.2,
684
+ "y2": 1
685
+ }
686
+ },
687
+ {
688
+ "time": 19.5,
689
+ "value": 0
690
+ }
691
+ ]
692
+ },
693
+ "scale": {
694
+ "keyframes": [
695
+ {
696
+ "time": 10,
697
+ "value": 0.9,
698
+ "out": {
699
+ "type": "cubicBezier",
700
+ "x1": 0.4,
701
+ "y1": 0,
702
+ "x2": 0.2,
703
+ "y2": 1
704
+ }
705
+ },
706
+ {
707
+ "time": 10.5,
708
+ "value": 1
709
+ },
710
+ {
711
+ "time": 19,
712
+ "value": 1,
713
+ "out": {
714
+ "type": "cubicBezier",
715
+ "x1": 0.4,
716
+ "y1": 0,
717
+ "x2": 0.2,
718
+ "y2": 1
719
+ }
720
+ },
721
+ {
722
+ "time": 19.5,
723
+ "value": 0.95
724
+ }
725
+ ]
726
+ },
727
+ "y": {
728
+ "keyframes": [
729
+ {
730
+ "time": 10,
731
+ "value": 220,
732
+ "out": {
733
+ "type": "cubicBezier",
734
+ "x1": 0.4,
735
+ "y1": 0,
736
+ "x2": 0.2,
737
+ "y2": 1
738
+ }
739
+ },
740
+ {
741
+ "time": 10.5,
742
+ "value": 190
743
+ }
744
+ ]
745
+ }
746
+ }
747
+ },
748
+ "origin": [
749
+ 240,
750
+ 170
751
+ ]
752
+ },
753
+ {
754
+ "id": "typed-text",
755
+ "type": "text",
756
+ "x": 440,
757
+ "y": 335,
758
+ "text": "Product Launch 2024",
759
+ "align": "left",
760
+ "valign": "middle",
761
+ "fontSize": 14,
762
+ "fontFamily": "Inter, system-ui, sans-serif",
763
+ "weight": 400,
764
+ "fill": "#1e293b",
765
+ "opacity": 0,
766
+ "timeline": {
767
+ "tracks": {
768
+ "opacity": {
769
+ "keyframes": [
770
+ {
771
+ "time": 12,
772
+ "value": 0
773
+ },
774
+ {
775
+ "time": 12.5,
776
+ "value": 1
777
+ },
778
+ {
779
+ "time": 19,
780
+ "value": 1,
781
+ "out": {
782
+ "type": "cubicBezier",
783
+ "x1": 0.4,
784
+ "y1": 0,
785
+ "x2": 0.2,
786
+ "y2": 1
787
+ }
788
+ },
789
+ {
790
+ "time": 19.5,
791
+ "value": 0
792
+ }
793
+ ]
794
+ }
795
+ }
796
+ }
797
+ },
798
+ {
799
+ "id": "cancel-btn",
800
+ "type": "group",
801
+ "x": 428,
802
+ "y": 462,
803
+ "opacity": 0,
804
+ "children": [
805
+ {
806
+ "id": "cancel-btn-bg",
807
+ "type": "path",
808
+ "d": "M 8 0 L 82 0 Q 90 0 90 8 L 90 32 Q 90 40 82 40 L 8 40 Q 0 40 0 32 L 0 8 Q 0 0 8 0 Z",
809
+ "fill": "#ffffff",
810
+ "stroke": "#e2e8f0",
811
+ "strokeWidth": 1
812
+ },
813
+ {
814
+ "id": "cancel-btn-text",
815
+ "type": "text",
816
+ "x": 45,
817
+ "y": 20,
818
+ "text": "Cancel",
819
+ "align": "center",
820
+ "valign": "middle",
821
+ "fontSize": 14,
822
+ "fontFamily": "Inter, system-ui, sans-serif",
823
+ "weight": 500,
824
+ "fill": "#475569"
825
+ }
826
+ ],
827
+ "timeline": {
828
+ "tracks": {
829
+ "opacity": {
830
+ "keyframes": [
831
+ {
832
+ "time": 10.6,
833
+ "value": 0,
834
+ "out": {
835
+ "type": "cubicBezier",
836
+ "x1": 0.4,
837
+ "y1": 0,
838
+ "x2": 0.2,
839
+ "y2": 1
840
+ }
841
+ },
842
+ {
843
+ "time": 11,
844
+ "value": 1
845
+ },
846
+ {
847
+ "time": 19,
848
+ "value": 1,
849
+ "out": {
850
+ "type": "cubicBezier",
851
+ "x1": 0.4,
852
+ "y1": 0,
853
+ "x2": 0.2,
854
+ "y2": 1
855
+ }
856
+ },
857
+ {
858
+ "time": 19.5,
859
+ "value": 0
860
+ }
861
+ ]
862
+ }
863
+ }
864
+ }
865
+ },
866
+ {
867
+ "id": "save-btn",
868
+ "type": "group",
869
+ "x": 730,
870
+ "y": 462,
871
+ "opacity": 0,
872
+ "children": [
873
+ {
874
+ "id": "save-btn-bg",
875
+ "type": "path",
876
+ "d": "M 8 0 L 114 0 Q 122 0 122 8 L 122 32 Q 122 40 114 40 L 8 40 Q 0 40 0 32 L 0 8 Q 0 0 8 0 Z",
877
+ "fill": "#2563eb",
878
+ "stroke": "none"
879
+ },
880
+ {
881
+ "id": "save-btn-text",
882
+ "type": "text",
883
+ "x": 61,
884
+ "y": 20,
885
+ "text": "Create Project",
886
+ "align": "center",
887
+ "valign": "middle",
888
+ "fontSize": 14,
889
+ "fontFamily": "Inter, system-ui, sans-serif",
890
+ "weight": 600,
891
+ "fill": "#ffffff"
892
+ }
893
+ ],
894
+ "origin": [
895
+ 61,
896
+ 20
897
+ ],
898
+ "timeline": {
899
+ "tracks": {
900
+ "opacity": {
901
+ "keyframes": [
902
+ {
903
+ "time": 10.6,
904
+ "value": 0,
905
+ "out": {
906
+ "type": "cubicBezier",
907
+ "x1": 0.4,
908
+ "y1": 0,
909
+ "x2": 0.2,
910
+ "y2": 1
911
+ }
912
+ },
913
+ {
914
+ "time": 11,
915
+ "value": 1
916
+ },
917
+ {
918
+ "time": 19,
919
+ "value": 1,
920
+ "out": {
921
+ "type": "cubicBezier",
922
+ "x1": 0.4,
923
+ "y1": 0,
924
+ "x2": 0.2,
925
+ "y2": 1
926
+ }
927
+ },
928
+ {
929
+ "time": 19.5,
930
+ "value": 0
931
+ }
932
+ ]
933
+ },
934
+ "scale": {
935
+ "keyframes": [
936
+ {
937
+ "time": 17.5,
938
+ "value": 1,
939
+ "out": {
940
+ "type": "cubicBezier",
941
+ "x1": 0.2,
942
+ "y1": 1,
943
+ "x2": 0.2,
944
+ "y2": 1
945
+ }
946
+ },
947
+ {
948
+ "time": 17.65,
949
+ "value": 0.95
950
+ },
951
+ {
952
+ "time": 17.8,
953
+ "value": 1
954
+ }
955
+ ]
956
+ }
957
+ }
958
+ }
959
+ },
960
+ {
961
+ "id": "success-panel",
962
+ "type": "group",
963
+ "x": 440,
964
+ "y": 240,
965
+ "opacity": 0,
966
+ "children": [
967
+ {
968
+ "id": "success-bg",
969
+ "type": "path",
970
+ "d": "M 12 0 L 388 0 Q 400 0 400 12 L 400 188 Q 400 200 388 200 L 12 200 Q 0 200 0 188 L 0 12 Q 0 0 12 0 Z",
971
+ "fill": "#ffffff",
972
+ "stroke": "#e2e8f0",
973
+ "strokeWidth": 1
974
+ },
975
+ {
976
+ "id": "success-circle",
977
+ "type": "path",
978
+ "d": "M 200 50 m -30 0 a 30 30 0 1 1 60 0 a 30 30 0 1 1 -60 0",
979
+ "fill": "#d1fae5",
980
+ "stroke": "none"
981
+ },
982
+ {
983
+ "id": "success-check",
984
+ "type": "path",
985
+ "d": "M 186 50 L 196 60 L 214 42",
986
+ "fill": "none",
987
+ "stroke": "#10b981",
988
+ "strokeWidth": 3,
989
+ "strokeCap": "round",
990
+ "strokeJoin": "round"
991
+ },
992
+ {
993
+ "id": "success-title",
994
+ "type": "text",
995
+ "x": 200,
996
+ "y": 105,
997
+ "text": "Project created!",
998
+ "align": "center",
999
+ "valign": "top",
1000
+ "fontSize": 20,
1001
+ "fontFamily": "Inter, system-ui, sans-serif",
1002
+ "weight": 600,
1003
+ "fill": "#1e293b"
1004
+ },
1005
+ {
1006
+ "id": "success-desc",
1007
+ "type": "text",
1008
+ "x": 200,
1009
+ "y": 135,
1010
+ "text": "Your new project is ready. Start designing\nyour first screen now.",
1011
+ "align": "center",
1012
+ "valign": "top",
1013
+ "fontSize": 14,
1014
+ "fontFamily": "Inter, system-ui, sans-serif",
1015
+ "weight": 400,
1016
+ "lineHeight": 1.5,
1017
+ "fill": "#475569",
1018
+ "maxWidth": 340
1019
+ }
1020
+ ],
1021
+ "timeline": {
1022
+ "tracks": {
1023
+ "opacity": {
1024
+ "keyframes": [
1025
+ {
1026
+ "time": 19.5,
1027
+ "value": 0,
1028
+ "out": {
1029
+ "type": "cubicBezier",
1030
+ "x1": 0.4,
1031
+ "y1": 0,
1032
+ "x2": 0.2,
1033
+ "y2": 1
1034
+ }
1035
+ },
1036
+ {
1037
+ "time": 20.2,
1038
+ "value": 1
1039
+ },
1040
+ {
1041
+ "time": 23,
1042
+ "value": 1,
1043
+ "out": {
1044
+ "type": "cubicBezier",
1045
+ "x1": 0.4,
1046
+ "y1": 0,
1047
+ "x2": 0.2,
1048
+ "y2": 1
1049
+ }
1050
+ },
1051
+ {
1052
+ "time": 23.6,
1053
+ "value": 0
1054
+ }
1055
+ ]
1056
+ },
1057
+ "scale": {
1058
+ "keyframes": [
1059
+ {
1060
+ "time": 19.5,
1061
+ "value": 0.9,
1062
+ "out": {
1063
+ "type": "cubicBezier",
1064
+ "x1": 0.4,
1065
+ "y1": 0,
1066
+ "x2": 0.2,
1067
+ "y2": 1
1068
+ }
1069
+ },
1070
+ {
1071
+ "time": 20.2,
1072
+ "value": 1
1073
+ }
1074
+ ]
1075
+ },
1076
+ "y": {
1077
+ "keyframes": [
1078
+ {
1079
+ "time": 19.5,
1080
+ "value": 260,
1081
+ "out": {
1082
+ "type": "cubicBezier",
1083
+ "x1": 0.4,
1084
+ "y1": 0,
1085
+ "x2": 0.2,
1086
+ "y2": 1
1087
+ }
1088
+ },
1089
+ {
1090
+ "time": 20.2,
1091
+ "value": 240
1092
+ }
1093
+ ]
1094
+ }
1095
+ }
1096
+ },
1097
+ "origin": [
1098
+ 200,
1099
+ 100
1100
+ ]
1101
+ },
1102
+ {
1103
+ "id": "click-ring",
1104
+ "type": "path",
1105
+ "d": "M 0 0 m -16 0 a 16 16 0 1 1 32 0 a 16 16 0 1 1 -32 0",
1106
+ "x": 996,
1107
+ "y": 164,
1108
+ "fill": "none",
1109
+ "stroke": "#3b82f6",
1110
+ "strokeWidth": 2,
1111
+ "opacity": 0,
1112
+ "origin": [
1113
+ 0,
1114
+ 0
1115
+ ],
1116
+ "timeline": {
1117
+ "tracks": {
1118
+ "opacity": {
1119
+ "keyframes": [
1120
+ {
1121
+ "time": 7,
1122
+ "value": 0
1123
+ },
1124
+ {
1125
+ "time": 7.1,
1126
+ "value": 0.6
1127
+ },
1128
+ {
1129
+ "time": 7.5,
1130
+ "value": 0
1131
+ },
1132
+ {
1133
+ "time": 17.5,
1134
+ "value": 0
1135
+ },
1136
+ {
1137
+ "time": 17.6,
1138
+ "value": 0.6
1139
+ },
1140
+ {
1141
+ "time": 18,
1142
+ "value": 0
1143
+ }
1144
+ ]
1145
+ },
1146
+ "scale": {
1147
+ "keyframes": [
1148
+ {
1149
+ "time": 7,
1150
+ "value": 0.5,
1151
+ "out": {
1152
+ "type": "cubicBezier",
1153
+ "x1": 0,
1154
+ "y1": 0,
1155
+ "x2": 0.2,
1156
+ "y2": 1
1157
+ }
1158
+ },
1159
+ {
1160
+ "time": 7.5,
1161
+ "value": 1.5
1162
+ },
1163
+ {
1164
+ "time": 17.5,
1165
+ "value": 0.5,
1166
+ "out": {
1167
+ "type": "cubicBezier",
1168
+ "x1": 0,
1169
+ "y1": 0,
1170
+ "x2": 0.2,
1171
+ "y2": 1
1172
+ }
1173
+ },
1174
+ {
1175
+ "time": 18,
1176
+ "value": 1.5
1177
+ }
1178
+ ]
1179
+ },
1180
+ "x": {
1181
+ "keyframes": [
1182
+ {
1183
+ "time": 7,
1184
+ "value": 996
1185
+ },
1186
+ {
1187
+ "time": 17.5,
1188
+ "value": 791
1189
+ }
1190
+ ]
1191
+ },
1192
+ "y": {
1193
+ "keyframes": [
1194
+ {
1195
+ "time": 7,
1196
+ "value": 164
1197
+ },
1198
+ {
1199
+ "time": 17.5,
1200
+ "value": 482
1201
+ }
1202
+ ]
1203
+ }
1204
+ }
1205
+ }
1206
+ },
1207
+ {
1208
+ "id": "cursor",
1209
+ "type": "group",
1210
+ "x": -50,
1211
+ "y": -50,
1212
+ "children": [
1213
+ {
1214
+ "id": "cursor-arrow",
1215
+ "type": "path",
1216
+ "d": "M 0 0 L 0 20 L 5 16 L 8 24 L 12 22 L 9 14 L 15 14 Z",
1217
+ "fill": "#0f172a",
1218
+ "stroke": "#ffffff",
1219
+ "strokeWidth": 1.5
1220
+ }
1221
+ ],
1222
+ "timeline": {
1223
+ "tracks": {
1224
+ "x": {
1225
+ "keyframes": [
1226
+ {
1227
+ "time": 0,
1228
+ "value": -50
1229
+ },
1230
+ {
1231
+ "time": 5.5,
1232
+ "value": -50,
1233
+ "out": {
1234
+ "type": "cubicBezier",
1235
+ "x1": 0.4,
1236
+ "y1": 0,
1237
+ "x2": 0.2,
1238
+ "y2": 1
1239
+ }
1240
+ },
1241
+ {
1242
+ "time": 6.5,
1243
+ "value": 996
1244
+ },
1245
+ {
1246
+ "time": 8,
1247
+ "value": 996
1248
+ },
1249
+ {
1250
+ "time": 10,
1251
+ "value": 996,
1252
+ "out": {
1253
+ "type": "cubicBezier",
1254
+ "x1": 0.4,
1255
+ "y1": 0,
1256
+ "x2": 0.2,
1257
+ "y2": 1
1258
+ }
1259
+ },
1260
+ {
1261
+ "time": 11,
1262
+ "value": 640
1263
+ },
1264
+ {
1265
+ "time": 16,
1266
+ "value": 640,
1267
+ "out": {
1268
+ "type": "cubicBezier",
1269
+ "x1": 0.4,
1270
+ "y1": 0,
1271
+ "x2": 0.2,
1272
+ "y2": 1
1273
+ }
1274
+ },
1275
+ {
1276
+ "time": 17,
1277
+ "value": 791
1278
+ },
1279
+ {
1280
+ "time": 20,
1281
+ "value": 791,
1282
+ "out": {
1283
+ "type": "cubicBezier",
1284
+ "x1": 0.4,
1285
+ "y1": 0,
1286
+ "x2": 0.2,
1287
+ "y2": 1
1288
+ }
1289
+ },
1290
+ {
1291
+ "time": 21,
1292
+ "value": 1400
1293
+ }
1294
+ ]
1295
+ },
1296
+ "y": {
1297
+ "keyframes": [
1298
+ {
1299
+ "time": 0,
1300
+ "value": -50
1301
+ },
1302
+ {
1303
+ "time": 5.5,
1304
+ "value": -50,
1305
+ "out": {
1306
+ "type": "cubicBezier",
1307
+ "x1": 0.4,
1308
+ "y1": 0,
1309
+ "x2": 0.2,
1310
+ "y2": 1
1311
+ }
1312
+ },
1313
+ {
1314
+ "time": 6.5,
1315
+ "value": 164
1316
+ },
1317
+ {
1318
+ "time": 8,
1319
+ "value": 164
1320
+ },
1321
+ {
1322
+ "time": 10,
1323
+ "value": 164,
1324
+ "out": {
1325
+ "type": "cubicBezier",
1326
+ "x1": 0.4,
1327
+ "y1": 0,
1328
+ "x2": 0.2,
1329
+ "y2": 1
1330
+ }
1331
+ },
1332
+ {
1333
+ "time": 11,
1334
+ "value": 335
1335
+ },
1336
+ {
1337
+ "time": 16,
1338
+ "value": 335,
1339
+ "out": {
1340
+ "type": "cubicBezier",
1341
+ "x1": 0.4,
1342
+ "y1": 0,
1343
+ "x2": 0.2,
1344
+ "y2": 1
1345
+ }
1346
+ },
1347
+ {
1348
+ "time": 17,
1349
+ "value": 482
1350
+ },
1351
+ {
1352
+ "time": 20,
1353
+ "value": 482,
1354
+ "out": {
1355
+ "type": "cubicBezier",
1356
+ "x1": 0.4,
1357
+ "y1": 0,
1358
+ "x2": 0.2,
1359
+ "y2": 1
1360
+ }
1361
+ },
1362
+ {
1363
+ "time": 21,
1364
+ "value": 800
1365
+ }
1366
+ ]
1367
+ }
1368
+ }
1369
+ }
1370
+ }
1371
+ ]
1372
+ }