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,1211 @@
1
+ {
2
+ "version": 1,
3
+ "canvas": {
4
+ "width": 1280,
5
+ "height": 720,
6
+ "background": "#f8fafc",
7
+ "duration": 18,
8
+ "fps": 30
9
+ },
10
+ "elements": [
11
+ {
12
+ "id": "main-card-bg",
13
+ "type": "path",
14
+ "d": "M 396 160 L 884 160 Q 900 160 900 176 L 900 544 Q 900 560 884 560 L 396 560 Q 380 560 380 544 L 380 176 Q 380 160 396 160 Z",
15
+ "fill": "#ffffff",
16
+ "stroke": "#e2e8f0",
17
+ "strokeWidth": 1,
18
+ "opacity": 0,
19
+ "timeline": {
20
+ "tracks": {
21
+ "opacity": {
22
+ "keyframes": [
23
+ {
24
+ "time": 0,
25
+ "value": 0,
26
+ "out": {
27
+ "type": "cubicBezier",
28
+ "x1": 0.4,
29
+ "y1": 0,
30
+ "x2": 0.2,
31
+ "y2": 1
32
+ }
33
+ },
34
+ {
35
+ "time": 0.6,
36
+ "value": 1
37
+ },
38
+ {
39
+ "time": 17,
40
+ "value": 1,
41
+ "out": {
42
+ "type": "cubicBezier",
43
+ "x1": 0.4,
44
+ "y1": 0,
45
+ "x2": 0.2,
46
+ "y2": 1
47
+ }
48
+ },
49
+ {
50
+ "time": 17.5,
51
+ "value": 0
52
+ }
53
+ ]
54
+ }
55
+ }
56
+ }
57
+ },
58
+ {
59
+ "id": "card-title",
60
+ "type": "text",
61
+ "x": 412,
62
+ "y": 192,
63
+ "text": "Upload Document",
64
+ "align": "left",
65
+ "valign": "top",
66
+ "fontSize": 20,
67
+ "fontFamily": "Inter, system-ui, sans-serif",
68
+ "weight": 600,
69
+ "fill": "#0f172a",
70
+ "opacity": 0,
71
+ "timeline": {
72
+ "tracks": {
73
+ "opacity": {
74
+ "keyframes": [
75
+ {
76
+ "time": 0,
77
+ "value": 0,
78
+ "out": {
79
+ "type": "cubicBezier",
80
+ "x1": 0.4,
81
+ "y1": 0,
82
+ "x2": 0.2,
83
+ "y2": 1
84
+ }
85
+ },
86
+ {
87
+ "time": 0.6,
88
+ "value": 1
89
+ },
90
+ {
91
+ "time": 17,
92
+ "value": 1,
93
+ "out": {
94
+ "type": "cubicBezier",
95
+ "x1": 0.4,
96
+ "y1": 0,
97
+ "x2": 0.2,
98
+ "y2": 1
99
+ }
100
+ },
101
+ {
102
+ "time": 17.5,
103
+ "value": 0
104
+ }
105
+ ]
106
+ }
107
+ }
108
+ }
109
+ },
110
+ {
111
+ "id": "card-desc",
112
+ "type": "text",
113
+ "x": 412,
114
+ "y": 222,
115
+ "text": "Add a file to get started with your project.",
116
+ "align": "left",
117
+ "valign": "top",
118
+ "fontSize": 14,
119
+ "fontFamily": "Inter, system-ui, sans-serif",
120
+ "weight": 400,
121
+ "fill": "#64748b",
122
+ "opacity": 0,
123
+ "timeline": {
124
+ "tracks": {
125
+ "opacity": {
126
+ "keyframes": [
127
+ {
128
+ "time": 0,
129
+ "value": 0,
130
+ "out": {
131
+ "type": "cubicBezier",
132
+ "x1": 0.4,
133
+ "y1": 0,
134
+ "x2": 0.2,
135
+ "y2": 1
136
+ }
137
+ },
138
+ {
139
+ "time": 0.6,
140
+ "value": 1
141
+ },
142
+ {
143
+ "time": 13.5,
144
+ "value": 1,
145
+ "out": {
146
+ "type": "cubicBezier",
147
+ "x1": 0.4,
148
+ "y1": 0,
149
+ "x2": 0.2,
150
+ "y2": 1
151
+ }
152
+ },
153
+ {
154
+ "time": 14,
155
+ "value": 0
156
+ }
157
+ ]
158
+ }
159
+ }
160
+ }
161
+ },
162
+ {
163
+ "id": "upload-zone",
164
+ "type": "group",
165
+ "x": 412,
166
+ "y": 260,
167
+ "children": [
168
+ {
169
+ "id": "upload-zone-bg",
170
+ "type": "path",
171
+ "d": "M 12 0 L 444 0 Q 456 0 456 12 L 456 128 Q 456 140 444 140 L 12 140 Q 0 140 0 128 L 0 12 Q 0 0 12 0 Z",
172
+ "fill": "#f8fafc",
173
+ "stroke": "#cbd5e1",
174
+ "strokeWidth": 2,
175
+ "dashArray": [
176
+ 8,
177
+ 4
178
+ ]
179
+ },
180
+ {
181
+ "id": "upload-icon",
182
+ "type": "path",
183
+ "d": "M 0 12 L 0 4 A 4 4 0 0 1 4 0 L 20 0 A 4 4 0 0 1 24 4 L 24 12 M 12 20 L 12 6 M 6 12 L 12 6 L 18 12",
184
+ "x": 216,
185
+ "y": 40,
186
+ "fill": "none",
187
+ "stroke": "#64748b",
188
+ "strokeWidth": 2,
189
+ "strokeCap": "round",
190
+ "strokeJoin": "round"
191
+ },
192
+ {
193
+ "id": "upload-text",
194
+ "type": "text",
195
+ "x": 228,
196
+ "y": 90,
197
+ "text": "Drop files here or click to browse",
198
+ "align": "center",
199
+ "valign": "top",
200
+ "fontSize": 13,
201
+ "fontFamily": "Inter, system-ui, sans-serif",
202
+ "weight": 400,
203
+ "fill": "#64748b"
204
+ }
205
+ ],
206
+ "opacity": 0,
207
+ "timeline": {
208
+ "tracks": {
209
+ "opacity": {
210
+ "keyframes": [
211
+ {
212
+ "time": 0.3,
213
+ "value": 0,
214
+ "out": {
215
+ "type": "cubicBezier",
216
+ "x1": 0.4,
217
+ "y1": 0,
218
+ "x2": 0.2,
219
+ "y2": 1
220
+ }
221
+ },
222
+ {
223
+ "time": 0.8,
224
+ "value": 1
225
+ },
226
+ {
227
+ "time": 5.8,
228
+ "value": 1,
229
+ "out": {
230
+ "type": "cubicBezier",
231
+ "x1": 0.4,
232
+ "y1": 0,
233
+ "x2": 0.2,
234
+ "y2": 1
235
+ }
236
+ },
237
+ {
238
+ "time": 6.3,
239
+ "value": 0
240
+ }
241
+ ]
242
+ }
243
+ }
244
+ }
245
+ },
246
+ {
247
+ "id": "upload-btn",
248
+ "type": "group",
249
+ "x": 570,
250
+ "y": 440,
251
+ "children": [
252
+ {
253
+ "id": "upload-btn-bg",
254
+ "type": "path",
255
+ "d": "M 8 0 L 132 0 Q 140 0 140 8 L 140 32 Q 140 40 132 40 L 8 40 Q 0 40 0 32 L 0 8 Q 0 0 8 0 Z",
256
+ "fill": "#2563eb",
257
+ "stroke": "none"
258
+ },
259
+ {
260
+ "id": "upload-btn-text",
261
+ "type": "text",
262
+ "x": 70,
263
+ "y": 20,
264
+ "text": "Choose File",
265
+ "align": "center",
266
+ "valign": "middle",
267
+ "fontSize": 14,
268
+ "fontFamily": "Inter, system-ui, sans-serif",
269
+ "weight": 600,
270
+ "fill": "#ffffff"
271
+ }
272
+ ],
273
+ "opacity": 0,
274
+ "origin": [
275
+ 70,
276
+ 20
277
+ ],
278
+ "timeline": {
279
+ "tracks": {
280
+ "opacity": {
281
+ "keyframes": [
282
+ {
283
+ "time": 0.5,
284
+ "value": 0,
285
+ "out": {
286
+ "type": "cubicBezier",
287
+ "x1": 0.4,
288
+ "y1": 0,
289
+ "x2": 0.2,
290
+ "y2": 1
291
+ }
292
+ },
293
+ {
294
+ "time": 1,
295
+ "value": 1
296
+ },
297
+ {
298
+ "time": 5.8,
299
+ "value": 1,
300
+ "out": {
301
+ "type": "cubicBezier",
302
+ "x1": 0.4,
303
+ "y1": 0,
304
+ "x2": 0.2,
305
+ "y2": 1
306
+ }
307
+ },
308
+ {
309
+ "time": 6.3,
310
+ "value": 0
311
+ }
312
+ ]
313
+ },
314
+ "scale": {
315
+ "keyframes": [
316
+ {
317
+ "time": 4.8,
318
+ "value": 1,
319
+ "out": {
320
+ "type": "cubicBezier",
321
+ "x1": 0.4,
322
+ "y1": 0,
323
+ "x2": 0.2,
324
+ "y2": 1
325
+ }
326
+ },
327
+ {
328
+ "time": 4.95,
329
+ "value": 0.95
330
+ },
331
+ {
332
+ "time": 5.1,
333
+ "value": 1
334
+ }
335
+ ]
336
+ }
337
+ }
338
+ }
339
+ },
340
+ {
341
+ "id": "file-item",
342
+ "type": "group",
343
+ "x": 412,
344
+ "y": 260,
345
+ "children": [
346
+ {
347
+ "id": "file-bg",
348
+ "type": "path",
349
+ "d": "M 10 0 L 446 0 Q 456 0 456 10 L 456 54 Q 456 64 446 64 L 10 64 Q 0 64 0 54 L 0 10 Q 0 0 10 0 Z",
350
+ "fill": "#ffffff",
351
+ "stroke": "#2563eb",
352
+ "strokeWidth": 2
353
+ },
354
+ {
355
+ "id": "file-icon-bg",
356
+ "type": "path",
357
+ "d": "M 22 14 L 46 14 Q 52 14 52 20 L 52 44 Q 52 50 46 50 L 22 50 Q 16 50 16 44 L 16 20 Q 16 14 22 14 Z",
358
+ "fill": "#ecfdf5",
359
+ "stroke": "none"
360
+ },
361
+ {
362
+ "id": "file-icon",
363
+ "type": "path",
364
+ "d": "M 28 24 L 28 40 M 28 32 L 22 32 L 28 26 L 34 32 L 28 32",
365
+ "fill": "none",
366
+ "stroke": "#10b981",
367
+ "strokeWidth": 2,
368
+ "strokeCap": "round",
369
+ "strokeJoin": "round"
370
+ },
371
+ {
372
+ "id": "file-name",
373
+ "type": "text",
374
+ "x": 68,
375
+ "y": 22,
376
+ "text": "quarterly-report.pdf",
377
+ "align": "left",
378
+ "valign": "top",
379
+ "fontSize": 14,
380
+ "fontFamily": "Inter, system-ui, sans-serif",
381
+ "weight": 500,
382
+ "fill": "#0f172a"
383
+ },
384
+ {
385
+ "id": "file-size",
386
+ "type": "text",
387
+ "x": 68,
388
+ "y": 42,
389
+ "text": "2.4 MB · PDF Document",
390
+ "align": "left",
391
+ "valign": "top",
392
+ "fontSize": 12,
393
+ "fontFamily": "Inter, system-ui, sans-serif",
394
+ "weight": 400,
395
+ "fill": "#64748b"
396
+ },
397
+ {
398
+ "id": "file-check",
399
+ "type": "path",
400
+ "d": "M 0 0 m -10 0 a 10 10 0 1 1 20 0 a 10 10 0 1 1 -20 0",
401
+ "x": 424,
402
+ "y": 32,
403
+ "fill": "#10b981",
404
+ "stroke": "none"
405
+ },
406
+ {
407
+ "id": "file-check-mark",
408
+ "type": "path",
409
+ "d": "M -4 0 L -1 3 L 4 -3",
410
+ "x": 424,
411
+ "y": 32,
412
+ "fill": "none",
413
+ "stroke": "#ffffff",
414
+ "strokeWidth": 2,
415
+ "strokeCap": "round",
416
+ "strokeJoin": "round"
417
+ }
418
+ ],
419
+ "opacity": 0,
420
+ "timeline": {
421
+ "tracks": {
422
+ "opacity": {
423
+ "keyframes": [
424
+ {
425
+ "time": 6.3,
426
+ "value": 0,
427
+ "out": {
428
+ "type": "cubicBezier",
429
+ "x1": 0.4,
430
+ "y1": 0,
431
+ "x2": 0.2,
432
+ "y2": 1
433
+ }
434
+ },
435
+ {
436
+ "time": 6.8,
437
+ "value": 1
438
+ },
439
+ {
440
+ "time": 13.5,
441
+ "value": 1,
442
+ "out": {
443
+ "type": "cubicBezier",
444
+ "x1": 0.4,
445
+ "y1": 0,
446
+ "x2": 0.2,
447
+ "y2": 1
448
+ }
449
+ },
450
+ {
451
+ "time": 14,
452
+ "value": 0
453
+ }
454
+ ]
455
+ },
456
+ "y": {
457
+ "keyframes": [
458
+ {
459
+ "time": 6.3,
460
+ "value": 270,
461
+ "out": {
462
+ "type": "cubicBezier",
463
+ "x1": 0.4,
464
+ "y1": 0,
465
+ "x2": 0.2,
466
+ "y2": 1
467
+ }
468
+ },
469
+ {
470
+ "time": 6.8,
471
+ "value": 260
472
+ }
473
+ ]
474
+ }
475
+ }
476
+ }
477
+ },
478
+ {
479
+ "id": "status-text",
480
+ "type": "text",
481
+ "x": 640,
482
+ "y": 350,
483
+ "text": "File ready to upload",
484
+ "align": "center",
485
+ "valign": "top",
486
+ "fontSize": 13,
487
+ "fontFamily": "Inter, system-ui, sans-serif",
488
+ "weight": 500,
489
+ "fill": "#10b981",
490
+ "opacity": 0,
491
+ "timeline": {
492
+ "tracks": {
493
+ "opacity": {
494
+ "keyframes": [
495
+ {
496
+ "time": 7,
497
+ "value": 0,
498
+ "out": {
499
+ "type": "cubicBezier",
500
+ "x1": 0.4,
501
+ "y1": 0,
502
+ "x2": 0.2,
503
+ "y2": 1
504
+ }
505
+ },
506
+ {
507
+ "time": 7.4,
508
+ "value": 1
509
+ },
510
+ {
511
+ "time": 10.5,
512
+ "value": 1,
513
+ "out": {
514
+ "type": "cubicBezier",
515
+ "x1": 0.4,
516
+ "y1": 0,
517
+ "x2": 0.2,
518
+ "y2": 1
519
+ }
520
+ },
521
+ {
522
+ "time": 11,
523
+ "value": 0
524
+ }
525
+ ]
526
+ }
527
+ }
528
+ }
529
+ },
530
+ {
531
+ "id": "confirm-btn",
532
+ "type": "group",
533
+ "x": 728,
534
+ "y": 486,
535
+ "children": [
536
+ {
537
+ "id": "confirm-btn-bg",
538
+ "type": "path",
539
+ "d": "M 8 0 L 132 0 Q 140 0 140 8 L 140 34 Q 140 42 132 42 L 8 42 Q 0 42 0 34 L 0 8 Q 0 0 8 0 Z",
540
+ "fill": "#2563eb",
541
+ "stroke": "none"
542
+ },
543
+ {
544
+ "id": "confirm-btn-text",
545
+ "type": "text",
546
+ "x": 70,
547
+ "y": 21,
548
+ "text": "Upload Now",
549
+ "align": "center",
550
+ "valign": "middle",
551
+ "fontSize": 14,
552
+ "fontFamily": "Inter, system-ui, sans-serif",
553
+ "weight": 600,
554
+ "fill": "#ffffff"
555
+ }
556
+ ],
557
+ "opacity": 0,
558
+ "origin": [
559
+ 70,
560
+ 21
561
+ ],
562
+ "timeline": {
563
+ "tracks": {
564
+ "opacity": {
565
+ "keyframes": [
566
+ {
567
+ "time": 7.2,
568
+ "value": 0,
569
+ "out": {
570
+ "type": "cubicBezier",
571
+ "x1": 0.4,
572
+ "y1": 0,
573
+ "x2": 0.2,
574
+ "y2": 1
575
+ }
576
+ },
577
+ {
578
+ "time": 7.6,
579
+ "value": 1
580
+ },
581
+ {
582
+ "time": 10.5,
583
+ "value": 1,
584
+ "out": {
585
+ "type": "cubicBezier",
586
+ "x1": 0.4,
587
+ "y1": 0,
588
+ "x2": 0.2,
589
+ "y2": 1
590
+ }
591
+ },
592
+ {
593
+ "time": 11,
594
+ "value": 0
595
+ }
596
+ ]
597
+ },
598
+ "scale": {
599
+ "keyframes": [
600
+ {
601
+ "time": 9.8,
602
+ "value": 1,
603
+ "out": {
604
+ "type": "cubicBezier",
605
+ "x1": 0.4,
606
+ "y1": 0,
607
+ "x2": 0.2,
608
+ "y2": 1
609
+ }
610
+ },
611
+ {
612
+ "time": 9.95,
613
+ "value": 0.95
614
+ },
615
+ {
616
+ "time": 10.1,
617
+ "value": 1
618
+ }
619
+ ]
620
+ }
621
+ }
622
+ }
623
+ },
624
+ {
625
+ "id": "cancel-btn",
626
+ "type": "group",
627
+ "x": 412,
628
+ "y": 486,
629
+ "children": [
630
+ {
631
+ "id": "cancel-btn-bg",
632
+ "type": "path",
633
+ "d": "M 8 0 L 92 0 Q 100 0 100 8 L 100 34 Q 100 42 92 42 L 8 42 Q 0 42 0 34 L 0 8 Q 0 0 8 0 Z",
634
+ "fill": "#ffffff",
635
+ "stroke": "#e2e8f0",
636
+ "strokeWidth": 1
637
+ },
638
+ {
639
+ "id": "cancel-btn-text",
640
+ "type": "text",
641
+ "x": 50,
642
+ "y": 21,
643
+ "text": "Cancel",
644
+ "align": "center",
645
+ "valign": "middle",
646
+ "fontSize": 14,
647
+ "fontFamily": "Inter, system-ui, sans-serif",
648
+ "weight": 500,
649
+ "fill": "#475569"
650
+ }
651
+ ],
652
+ "opacity": 0,
653
+ "timeline": {
654
+ "tracks": {
655
+ "opacity": {
656
+ "keyframes": [
657
+ {
658
+ "time": 7.2,
659
+ "value": 0,
660
+ "out": {
661
+ "type": "cubicBezier",
662
+ "x1": 0.4,
663
+ "y1": 0,
664
+ "x2": 0.2,
665
+ "y2": 1
666
+ }
667
+ },
668
+ {
669
+ "time": 7.6,
670
+ "value": 1
671
+ },
672
+ {
673
+ "time": 10.5,
674
+ "value": 1,
675
+ "out": {
676
+ "type": "cubicBezier",
677
+ "x1": 0.4,
678
+ "y1": 0,
679
+ "x2": 0.2,
680
+ "y2": 1
681
+ }
682
+ },
683
+ {
684
+ "time": 11,
685
+ "value": 0
686
+ }
687
+ ]
688
+ }
689
+ }
690
+ }
691
+ },
692
+ {
693
+ "id": "uploading-text",
694
+ "type": "text",
695
+ "x": 640,
696
+ "y": 350,
697
+ "text": "Uploading...",
698
+ "align": "center",
699
+ "valign": "top",
700
+ "fontSize": 13,
701
+ "fontFamily": "Inter, system-ui, sans-serif",
702
+ "weight": 500,
703
+ "fill": "#2563eb",
704
+ "opacity": 0,
705
+ "timeline": {
706
+ "tracks": {
707
+ "opacity": {
708
+ "keyframes": [
709
+ {
710
+ "time": 11,
711
+ "value": 0,
712
+ "out": {
713
+ "type": "cubicBezier",
714
+ "x1": 0.4,
715
+ "y1": 0,
716
+ "x2": 0.2,
717
+ "y2": 1
718
+ }
719
+ },
720
+ {
721
+ "time": 11.4,
722
+ "value": 1
723
+ },
724
+ {
725
+ "time": 13.5,
726
+ "value": 1,
727
+ "out": {
728
+ "type": "cubicBezier",
729
+ "x1": 0.4,
730
+ "y1": 0,
731
+ "x2": 0.2,
732
+ "y2": 1
733
+ }
734
+ },
735
+ {
736
+ "time": 14,
737
+ "value": 0
738
+ }
739
+ ]
740
+ }
741
+ }
742
+ }
743
+ },
744
+ {
745
+ "id": "progress-track",
746
+ "type": "path",
747
+ "d": "M 464 380 L 816 380 Q 820 380 820 384 L 820 384 Q 820 388 816 388 L 464 388 Q 460 388 460 384 L 460 384 Q 460 380 464 380 Z",
748
+ "fill": "#f8fafc",
749
+ "stroke": "#cbd5e1",
750
+ "strokeWidth": 1,
751
+ "opacity": 0,
752
+ "timeline": {
753
+ "tracks": {
754
+ "opacity": {
755
+ "keyframes": [
756
+ {
757
+ "time": 11,
758
+ "value": 0,
759
+ "out": {
760
+ "type": "cubicBezier",
761
+ "x1": 0.4,
762
+ "y1": 0,
763
+ "x2": 0.2,
764
+ "y2": 1
765
+ }
766
+ },
767
+ {
768
+ "time": 11.4,
769
+ "value": 1
770
+ },
771
+ {
772
+ "time": 13.5,
773
+ "value": 1,
774
+ "out": {
775
+ "type": "cubicBezier",
776
+ "x1": 0.4,
777
+ "y1": 0,
778
+ "x2": 0.2,
779
+ "y2": 1
780
+ }
781
+ },
782
+ {
783
+ "time": 14,
784
+ "value": 0
785
+ }
786
+ ]
787
+ }
788
+ }
789
+ }
790
+ },
791
+ {
792
+ "id": "progress-fill",
793
+ "type": "path",
794
+ "d": "M 462 382 L 818 382 L 818 386 L 462 386 Z",
795
+ "fill": "#2563eb",
796
+ "stroke": "none",
797
+ "opacity": 0,
798
+ "drawEnd": 0,
799
+ "timeline": {
800
+ "tracks": {
801
+ "opacity": {
802
+ "keyframes": [
803
+ {
804
+ "time": 11.2,
805
+ "value": 0,
806
+ "out": {
807
+ "type": "cubicBezier",
808
+ "x1": 0.4,
809
+ "y1": 0,
810
+ "x2": 0.2,
811
+ "y2": 1
812
+ }
813
+ },
814
+ {
815
+ "time": 11.5,
816
+ "value": 1
817
+ },
818
+ {
819
+ "time": 13.5,
820
+ "value": 1,
821
+ "out": {
822
+ "type": "cubicBezier",
823
+ "x1": 0.4,
824
+ "y1": 0,
825
+ "x2": 0.2,
826
+ "y2": 1
827
+ }
828
+ },
829
+ {
830
+ "time": 14,
831
+ "value": 0
832
+ }
833
+ ]
834
+ },
835
+ "drawEnd": {
836
+ "keyframes": [
837
+ {
838
+ "time": 11.5,
839
+ "value": 0,
840
+ "out": {
841
+ "type": "cubicBezier",
842
+ "x1": 0.25,
843
+ "y1": 0.1,
844
+ "x2": 0.25,
845
+ "y2": 1
846
+ }
847
+ },
848
+ {
849
+ "time": 13.5,
850
+ "value": 1
851
+ }
852
+ ]
853
+ }
854
+ }
855
+ }
856
+ },
857
+ {
858
+ "id": "success-overlay",
859
+ "type": "group",
860
+ "x": 640,
861
+ "y": 340,
862
+ "children": [
863
+ {
864
+ "id": "success-circle",
865
+ "type": "path",
866
+ "d": "M 0 0 m -40 0 a 40 40 0 1 1 80 0 a 40 40 0 1 1 -80 0",
867
+ "fill": "#ecfdf5",
868
+ "stroke": "#10b981",
869
+ "strokeWidth": 2
870
+ },
871
+ {
872
+ "id": "success-check",
873
+ "type": "path",
874
+ "d": "M -14 0 L -4 10 L 14 -10",
875
+ "fill": "none",
876
+ "stroke": "#10b981",
877
+ "strokeWidth": 3,
878
+ "strokeCap": "round",
879
+ "strokeJoin": "round"
880
+ },
881
+ {
882
+ "id": "success-title",
883
+ "type": "text",
884
+ "x": 0,
885
+ "y": 70,
886
+ "text": "Upload Complete",
887
+ "align": "center",
888
+ "valign": "top",
889
+ "fontSize": 18,
890
+ "fontFamily": "Inter, system-ui, sans-serif",
891
+ "weight": 600,
892
+ "fill": "#0f172a"
893
+ },
894
+ {
895
+ "id": "success-desc",
896
+ "type": "text",
897
+ "x": 0,
898
+ "y": 98,
899
+ "text": "Your document has been uploaded successfully.",
900
+ "align": "center",
901
+ "valign": "top",
902
+ "fontSize": 13,
903
+ "fontFamily": "Inter, system-ui, sans-serif",
904
+ "weight": 400,
905
+ "fill": "#64748b"
906
+ }
907
+ ],
908
+ "opacity": 0,
909
+ "origin": [
910
+ 0,
911
+ 0
912
+ ],
913
+ "timeline": {
914
+ "tracks": {
915
+ "opacity": {
916
+ "keyframes": [
917
+ {
918
+ "time": 14,
919
+ "value": 0,
920
+ "out": {
921
+ "type": "cubicBezier",
922
+ "x1": 0.4,
923
+ "y1": 0,
924
+ "x2": 0.2,
925
+ "y2": 1
926
+ }
927
+ },
928
+ {
929
+ "time": 14.6,
930
+ "value": 1
931
+ },
932
+ {
933
+ "time": 17,
934
+ "value": 1,
935
+ "out": {
936
+ "type": "cubicBezier",
937
+ "x1": 0.4,
938
+ "y1": 0,
939
+ "x2": 0.2,
940
+ "y2": 1
941
+ }
942
+ },
943
+ {
944
+ "time": 17.5,
945
+ "value": 0
946
+ }
947
+ ]
948
+ },
949
+ "scale": {
950
+ "keyframes": [
951
+ {
952
+ "time": 14,
953
+ "value": 0.8,
954
+ "out": {
955
+ "type": "cubicBezier",
956
+ "x1": 0.4,
957
+ "y1": 0,
958
+ "x2": 0.2,
959
+ "y2": 1
960
+ }
961
+ },
962
+ {
963
+ "time": 14.6,
964
+ "value": 1
965
+ }
966
+ ]
967
+ }
968
+ }
969
+ }
970
+ },
971
+ {
972
+ "id": "click-ring",
973
+ "type": "path",
974
+ "d": "M 0 0 m -18 0 a 18 18 0 1 1 36 0 a 18 18 0 1 1 -36 0",
975
+ "x": 640,
976
+ "y": 460,
977
+ "fill": "none",
978
+ "stroke": "#3b82f6",
979
+ "strokeWidth": 2,
980
+ "opacity": 0,
981
+ "origin": [
982
+ 0,
983
+ 0
984
+ ],
985
+ "timeline": {
986
+ "tracks": {
987
+ "opacity": {
988
+ "keyframes": [
989
+ {
990
+ "time": 4.8,
991
+ "value": 0
992
+ },
993
+ {
994
+ "time": 4.9,
995
+ "value": 0.5
996
+ },
997
+ {
998
+ "time": 5.3,
999
+ "value": 0
1000
+ },
1001
+ {
1002
+ "time": 9.8,
1003
+ "value": 0
1004
+ },
1005
+ {
1006
+ "time": 9.9,
1007
+ "value": 0.5
1008
+ },
1009
+ {
1010
+ "time": 10.3,
1011
+ "value": 0
1012
+ }
1013
+ ]
1014
+ },
1015
+ "scale": {
1016
+ "keyframes": [
1017
+ {
1018
+ "time": 4.8,
1019
+ "value": 0.5,
1020
+ "out": {
1021
+ "type": "cubicBezier",
1022
+ "x1": 0,
1023
+ "y1": 0,
1024
+ "x2": 0.2,
1025
+ "y2": 1
1026
+ }
1027
+ },
1028
+ {
1029
+ "time": 5.3,
1030
+ "value": 1.8
1031
+ },
1032
+ {
1033
+ "time": 9.8,
1034
+ "value": 0.5,
1035
+ "out": {
1036
+ "type": "cubicBezier",
1037
+ "x1": 0,
1038
+ "y1": 0,
1039
+ "x2": 0.2,
1040
+ "y2": 1
1041
+ }
1042
+ },
1043
+ {
1044
+ "time": 10.3,
1045
+ "value": 1.8
1046
+ }
1047
+ ]
1048
+ },
1049
+ "x": {
1050
+ "keyframes": [
1051
+ {
1052
+ "time": 4.8,
1053
+ "value": 640
1054
+ },
1055
+ {
1056
+ "time": 9.8,
1057
+ "value": 798
1058
+ }
1059
+ ]
1060
+ },
1061
+ "y": {
1062
+ "keyframes": [
1063
+ {
1064
+ "time": 4.8,
1065
+ "value": 460
1066
+ },
1067
+ {
1068
+ "time": 9.8,
1069
+ "value": 507
1070
+ }
1071
+ ]
1072
+ }
1073
+ }
1074
+ }
1075
+ },
1076
+ {
1077
+ "id": "cursor",
1078
+ "type": "group",
1079
+ "x": -50,
1080
+ "y": 360,
1081
+ "children": [
1082
+ {
1083
+ "id": "cursor-arrow",
1084
+ "type": "path",
1085
+ "d": "M 0 0 L 0 18 L 4.5 14.5 L 7.5 22 L 11 20.5 L 8 13 L 13.5 13 Z",
1086
+ "fill": "#0f172a",
1087
+ "stroke": "#ffffff",
1088
+ "strokeWidth": 1.5
1089
+ }
1090
+ ],
1091
+ "timeline": {
1092
+ "tracks": {
1093
+ "x": {
1094
+ "keyframes": [
1095
+ {
1096
+ "time": 2,
1097
+ "value": -50,
1098
+ "out": {
1099
+ "type": "cubicBezier",
1100
+ "x1": 0.4,
1101
+ "y1": 0,
1102
+ "x2": 0.2,
1103
+ "y2": 1
1104
+ }
1105
+ },
1106
+ {
1107
+ "time": 3,
1108
+ "value": 640
1109
+ },
1110
+ {
1111
+ "time": 5.5,
1112
+ "value": 640
1113
+ },
1114
+ {
1115
+ "time": 7.5,
1116
+ "value": 640,
1117
+ "out": {
1118
+ "type": "cubicBezier",
1119
+ "x1": 0.4,
1120
+ "y1": 0,
1121
+ "x2": 0.2,
1122
+ "y2": 1
1123
+ }
1124
+ },
1125
+ {
1126
+ "time": 8.5,
1127
+ "value": 798
1128
+ },
1129
+ {
1130
+ "time": 10.5,
1131
+ "value": 798
1132
+ },
1133
+ {
1134
+ "time": 13,
1135
+ "value": 798,
1136
+ "out": {
1137
+ "type": "cubicBezier",
1138
+ "x1": 0.4,
1139
+ "y1": 0,
1140
+ "x2": 0.2,
1141
+ "y2": 1
1142
+ }
1143
+ },
1144
+ {
1145
+ "time": 14,
1146
+ "value": 1330
1147
+ }
1148
+ ]
1149
+ },
1150
+ "y": {
1151
+ "keyframes": [
1152
+ {
1153
+ "time": 2,
1154
+ "value": 360,
1155
+ "out": {
1156
+ "type": "cubicBezier",
1157
+ "x1": 0.4,
1158
+ "y1": 0,
1159
+ "x2": 0.2,
1160
+ "y2": 1
1161
+ }
1162
+ },
1163
+ {
1164
+ "time": 3,
1165
+ "value": 460
1166
+ },
1167
+ {
1168
+ "time": 5.5,
1169
+ "value": 460
1170
+ },
1171
+ {
1172
+ "time": 7.5,
1173
+ "value": 460,
1174
+ "out": {
1175
+ "type": "cubicBezier",
1176
+ "x1": 0.4,
1177
+ "y1": 0,
1178
+ "x2": 0.2,
1179
+ "y2": 1
1180
+ }
1181
+ },
1182
+ {
1183
+ "time": 8.5,
1184
+ "value": 507
1185
+ },
1186
+ {
1187
+ "time": 10.5,
1188
+ "value": 507
1189
+ },
1190
+ {
1191
+ "time": 13,
1192
+ "value": 507,
1193
+ "out": {
1194
+ "type": "cubicBezier",
1195
+ "x1": 0.4,
1196
+ "y1": 0,
1197
+ "x2": 0.2,
1198
+ "y2": 1
1199
+ }
1200
+ },
1201
+ {
1202
+ "time": 14,
1203
+ "value": 770
1204
+ }
1205
+ ]
1206
+ }
1207
+ }
1208
+ }
1209
+ }
1210
+ ]
1211
+ }