paper-motion 0.1.0 → 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 (75) hide show
  1. package/README.md +14 -0
  2. package/bin/pamo.mjs +133 -4
  3. package/examples/halo-explainer/audio/script.txt +8 -0
  4. package/examples/halo-explainer/audio/words.json +554 -0
  5. package/examples/halo-explainer/brand/IDENTITY.md +24 -0
  6. package/examples/halo-explainer/brand/decisions/2026-11-08-type.md +5 -0
  7. package/examples/halo-explainer/brand/motion.json +9 -0
  8. package/examples/halo-explainer/brand/shader-set/set.json +104 -0
  9. package/examples/halo-explainer/brand/sound.json +33 -0
  10. package/examples/halo-explainer/brand/tokens.json +97 -0
  11. package/examples/halo-explainer/brief.md +34 -0
  12. package/examples/halo-explainer/poster.jpg +0 -0
  13. package/examples/halo-explainer/scene.html +372 -0
  14. package/examples/orbit-keynote/audio/script.txt +7 -0
  15. package/examples/orbit-keynote/audio/words.json +494 -0
  16. package/examples/orbit-keynote/brand/IDENTITY.md +25 -0
  17. package/examples/orbit-keynote/brand/decisions/2026-11-08-look.md +6 -0
  18. package/examples/orbit-keynote/brand/decisions/2026-11-08-voice.md +3 -0
  19. package/examples/orbit-keynote/brand/motion.json +9 -0
  20. package/examples/orbit-keynote/brand/shader-set/set.json +45 -0
  21. package/examples/orbit-keynote/brand/sound.json +45 -0
  22. package/examples/orbit-keynote/brand/tokens.json +106 -0
  23. package/examples/orbit-keynote/brief.md +25 -0
  24. package/examples/orbit-keynote/poster.jpg +0 -0
  25. package/examples/orbit-keynote/scene.html +323 -0
  26. package/lib/customize.mjs +162 -0
  27. package/lib/live-board.js +128 -0
  28. package/lib/registry.mjs +344 -0
  29. package/lib/render.mjs +3 -3
  30. package/lib/server.mjs +1 -0
  31. package/lib/sfx.mjs +5 -3
  32. package/package.json +1 -1
  33. package/runtime/core.js +269 -0
  34. package/runtime/index.js +3 -260
  35. package/runtime/kit.js +98 -0
  36. package/runtime/moves/bar-reveal.js +19 -0
  37. package/runtime/moves/blur-in.js +7 -0
  38. package/runtime/moves/cells.js +17 -0
  39. package/runtime/moves/crossfade.js +6 -0
  40. package/runtime/moves/cut.js +3 -0
  41. package/runtime/moves/dive-in.js +21 -0
  42. package/runtime/moves/draw-on.js +12 -0
  43. package/runtime/moves/drift.js +7 -0
  44. package/runtime/moves/flash.js +15 -0
  45. package/runtime/moves/flip-3d.js +9 -0
  46. package/runtime/moves/flip-in.js +12 -0
  47. package/runtime/moves/flip-lift.js +24 -0
  48. package/runtime/moves/glitch.js +16 -0
  49. package/runtime/moves/iris.js +12 -0
  50. package/runtime/moves/magic-move.js +49 -0
  51. package/runtime/moves/mask-reveal.js +10 -0
  52. package/runtime/moves/odometer.js +32 -0
  53. package/runtime/moves/orbit.js +8 -0
  54. package/runtime/moves/pop-in.js +12 -0
  55. package/runtime/moves/punch.js +9 -0
  56. package/runtime/moves/push.js +14 -0
  57. package/runtime/moves/rgb-split.js +7 -0
  58. package/runtime/moves/roll.js +20 -0
  59. package/runtime/moves/scan-reveal.js +10 -0
  60. package/runtime/moves/scramble.js +21 -0
  61. package/runtime/moves/shake.js +15 -0
  62. package/runtime/moves/slices.js +14 -0
  63. package/runtime/moves/snap-scroll.js +23 -0
  64. package/runtime/moves/squash-drop.js +21 -0
  65. package/runtime/moves/tile-swirl.js +29 -0
  66. package/runtime/moves/track-in.js +7 -0
  67. package/runtime/moves/type-on.js +41 -0
  68. package/runtime/moves/unfold.js +20 -0
  69. package/runtime/moves/whip-pan.js +21 -0
  70. package/runtime/moves/whip.js +14 -0
  71. package/runtime/moves/wipe.js +9 -0
  72. package/runtime/moves/word-rise.js +10 -0
  73. package/runtime/moves/zoom-through.js +13 -0
  74. package/runtime/moves.js +66 -146
  75. package/templates/move-demo/scene.html +4 -3
@@ -0,0 +1,494 @@
1
+ [
2
+ {
3
+ "w": "Finding",
4
+ "t": 1.7
5
+ },
6
+ {
7
+ "w": " ",
8
+ "t": 1.98
9
+ },
10
+ {
11
+ "w": "a",
12
+ "t": 2.02
13
+ },
14
+ {
15
+ "w": " ",
16
+ "t": 2.08
17
+ },
18
+ {
19
+ "w": "time",
20
+ "t": 2.14
21
+ },
22
+ {
23
+ "w": " ",
24
+ "t": 2.38
25
+ },
26
+ {
27
+ "w": "for",
28
+ "t": 2.4
29
+ },
30
+ {
31
+ "w": " ",
32
+ "t": 2.48
33
+ },
34
+ {
35
+ "w": "six",
36
+ "t": 2.7
37
+ },
38
+ {
39
+ "w": " ",
40
+ "t": 2.98
41
+ },
42
+ {
43
+ "w": "people",
44
+ "t": 3.02
45
+ },
46
+ {
47
+ "w": " ",
48
+ "t": 3.34
49
+ },
50
+ {
51
+ "w": "takes",
52
+ "t": 3.44
53
+ },
54
+ {
55
+ "w": " ",
56
+ "t": 3.76
57
+ },
58
+ {
59
+ "w": "eleven",
60
+ "t": 3.82
61
+ },
62
+ {
63
+ "w": " ",
64
+ "t": 4.32
65
+ },
66
+ {
67
+ "w": "emails.",
68
+ "t": 4.48
69
+ },
70
+ {
71
+ "w": "\r",
72
+ "t": 4.96
73
+ },
74
+ {
75
+ "w": "\n",
76
+ "t": 6.89
77
+ },
78
+ {
79
+ "w": "Orbit",
80
+ "t": 6.93
81
+ },
82
+ {
83
+ "w": " ",
84
+ "t": 7.29
85
+ },
86
+ {
87
+ "w": "is",
88
+ "t": 7.33
89
+ },
90
+ {
91
+ "w": " ",
92
+ "t": 7.41
93
+ },
94
+ {
95
+ "w": "a",
96
+ "t": 7.45
97
+ },
98
+ {
99
+ "w": " ",
100
+ "t": 7.51
101
+ },
102
+ {
103
+ "w": "calendar",
104
+ "t": 7.57
105
+ },
106
+ {
107
+ "w": " ",
108
+ "t": 8.01
109
+ },
110
+ {
111
+ "w": "that",
112
+ "t": 8.03
113
+ },
114
+ {
115
+ "w": " ",
116
+ "t": 8.19
117
+ },
118
+ {
119
+ "w": "schedules",
120
+ "t": 8.29
121
+ },
122
+ {
123
+ "w": " ",
124
+ "t": 8.65
125
+ },
126
+ {
127
+ "w": "meetings",
128
+ "t": 8.73
129
+ },
130
+ {
131
+ "w": " ",
132
+ "t": 9.05
133
+ },
134
+ {
135
+ "w": "for",
136
+ "t": 9.19
137
+ },
138
+ {
139
+ "w": " ",
140
+ "t": 9.35
141
+ },
142
+ {
143
+ "w": "you.",
144
+ "t": 9.45
145
+ },
146
+ {
147
+ "w": "\r",
148
+ "t": 9.57
149
+ },
150
+ {
151
+ "w": "\n",
152
+ "t": 10.41
153
+ },
154
+ {
155
+ "w": "Tell",
156
+ "t": 10.43
157
+ },
158
+ {
159
+ "w": " ",
160
+ "t": 10.57
161
+ },
162
+ {
163
+ "w": "it",
164
+ "t": 10.61
165
+ },
166
+ {
167
+ "w": " ",
168
+ "t": 10.73
169
+ },
170
+ {
171
+ "w": "who,",
172
+ "t": 10.79
173
+ },
174
+ {
175
+ "w": " ",
176
+ "t": 10.99
177
+ },
178
+ {
179
+ "w": "and",
180
+ "t": 11.27
181
+ },
182
+ {
183
+ "w": " ",
184
+ "t": 11.369
185
+ },
186
+ {
187
+ "w": "how",
188
+ "t": 11.43
189
+ },
190
+ {
191
+ "w": " ",
192
+ "t": 11.57
193
+ },
194
+ {
195
+ "w": "long.",
196
+ "t": 11.61
197
+ },
198
+ {
199
+ "w": "\r",
200
+ "t": 11.89
201
+ },
202
+ {
203
+ "w": "\n",
204
+ "t": 14.62
205
+ },
206
+ {
207
+ "w": "It",
208
+ "t": 14.64
209
+ },
210
+ {
211
+ "w": " ",
212
+ "t": 14.74
213
+ },
214
+ {
215
+ "w": "reads",
216
+ "t": 14.78
217
+ },
218
+ {
219
+ "w": " ",
220
+ "t": 15.06
221
+ },
222
+ {
223
+ "w": "everyone's",
224
+ "t": 15.12
225
+ },
226
+ {
227
+ "w": " ",
228
+ "t": 15.52
229
+ },
230
+ {
231
+ "w": "calendar,",
232
+ "t": 15.56
233
+ },
234
+ {
235
+ "w": " ",
236
+ "t": 15.94
237
+ },
238
+ {
239
+ "w": "finds",
240
+ "t": 16.28
241
+ },
242
+ {
243
+ "w": " ",
244
+ "t": 16.54
245
+ },
246
+ {
247
+ "w": "the",
248
+ "t": 16.56
249
+ },
250
+ {
251
+ "w": " ",
252
+ "t": 16.64
253
+ },
254
+ {
255
+ "w": "gap,",
256
+ "t": 16.68
257
+ },
258
+ {
259
+ "w": " ",
260
+ "t": 16.92
261
+ },
262
+ {
263
+ "w": "and",
264
+ "t": 17.16
265
+ },
266
+ {
267
+ "w": " ",
268
+ "t": 17.24
269
+ },
270
+ {
271
+ "w": "books",
272
+ "t": 17.38
273
+ },
274
+ {
275
+ "w": " ",
276
+ "t": 17.58
277
+ },
278
+ {
279
+ "w": "it.",
280
+ "t": 17.64
281
+ },
282
+ {
283
+ "w": "\r",
284
+ "t": 17.78
285
+ },
286
+ {
287
+ "w": "\n",
288
+ "t": 20.39
289
+ },
290
+ {
291
+ "w": "Someone",
292
+ "t": 20.41
293
+ },
294
+ {
295
+ "w": " ",
296
+ "t": 20.61
297
+ },
298
+ {
299
+ "w": "drops",
300
+ "t": 20.67
301
+ },
302
+ {
303
+ "w": " ",
304
+ "t": 20.91
305
+ },
306
+ {
307
+ "w": "out?",
308
+ "t": 20.99
309
+ },
310
+ {
311
+ "w": " ",
312
+ "t": 21.11
313
+ },
314
+ {
315
+ "w": "It",
316
+ "t": 21.63
317
+ },
318
+ {
319
+ "w": " ",
320
+ "t": 21.73
321
+ },
322
+ {
323
+ "w": "moves",
324
+ "t": 21.79
325
+ },
326
+ {
327
+ "w": " ",
328
+ "t": 22.01
329
+ },
330
+ {
331
+ "w": "the",
332
+ "t": 22.05
333
+ },
334
+ {
335
+ "w": " ",
336
+ "t": 22.11
337
+ },
338
+ {
339
+ "w": "meeting,",
340
+ "t": 22.15
341
+ },
342
+ {
343
+ "w": " ",
344
+ "t": 22.41
345
+ },
346
+ {
347
+ "w": "and",
348
+ "t": 22.53
349
+ },
350
+ {
351
+ "w": " ",
352
+ "t": 22.63
353
+ },
354
+ {
355
+ "w": "tells",
356
+ "t": 22.69
357
+ },
358
+ {
359
+ "w": " ",
360
+ "t": 22.91
361
+ },
362
+ {
363
+ "w": "the",
364
+ "t": 22.95
365
+ },
366
+ {
367
+ "w": " ",
368
+ "t": 23.03
369
+ },
370
+ {
371
+ "w": "rest.",
372
+ "t": 23.07
373
+ },
374
+ {
375
+ "w": "\r",
376
+ "t": 23.37
377
+ },
378
+ {
379
+ "w": "\n",
380
+ "t": 26.36
381
+ },
382
+ {
383
+ "w": "No",
384
+ "t": 26.4
385
+ },
386
+ {
387
+ "w": " ",
388
+ "t": 26.56
389
+ },
390
+ {
391
+ "w": "back",
392
+ "t": 26.6
393
+ },
394
+ {
395
+ "w": " ",
396
+ "t": 26.76
397
+ },
398
+ {
399
+ "w": "and",
400
+ "t": 26.78
401
+ },
402
+ {
403
+ "w": " ",
404
+ "t": 26.86
405
+ },
406
+ {
407
+ "w": "forth.",
408
+ "t": 26.96
409
+ },
410
+ {
411
+ "w": " ",
412
+ "t": 27.28
413
+ },
414
+ {
415
+ "w": "No",
416
+ "t": 27.62
417
+ },
418
+ {
419
+ "w": " ",
420
+ "t": 27.82
421
+ },
422
+ {
423
+ "w": "\"does",
424
+ "t": 28.08
425
+ },
426
+ {
427
+ "w": " ",
428
+ "t": 28.26
429
+ },
430
+ {
431
+ "w": "Tuesday",
432
+ "t": 28.36
433
+ },
434
+ {
435
+ "w": " ",
436
+ "t": 28.68
437
+ },
438
+ {
439
+ "w": "work?\".",
440
+ "t": 28.76
441
+ },
442
+ {
443
+ "w": "\r",
444
+ "t": 28.98
445
+ },
446
+ {
447
+ "w": "\n",
448
+ "t": 33.07
449
+ },
450
+ {
451
+ "w": "Orbit.",
452
+ "t": 33.09
453
+ },
454
+ {
455
+ "w": " ",
456
+ "t": 33.39
457
+ },
458
+ {
459
+ "w": "Meetings",
460
+ "t": 33.85
461
+ },
462
+ {
463
+ "w": " ",
464
+ "t": 34.21
465
+ },
466
+ {
467
+ "w": "find",
468
+ "t": 34.33
469
+ },
470
+ {
471
+ "w": " ",
472
+ "t": 34.51
473
+ },
474
+ {
475
+ "w": "their",
476
+ "t": 34.53
477
+ },
478
+ {
479
+ "w": " ",
480
+ "t": 34.71
481
+ },
482
+ {
483
+ "w": "own",
484
+ "t": 34.77
485
+ },
486
+ {
487
+ "w": " ",
488
+ "t": 34.95
489
+ },
490
+ {
491
+ "w": "time.",
492
+ "t": 35.01
493
+ }
494
+ ]
@@ -0,0 +1,25 @@
1
+ # Orbit
2
+
3
+ ## In one line
4
+ Orbit is a calendar for teams that schedules meetings by itself.
5
+
6
+ ## Offer
7
+ You say who and how long. Orbit reads everyone's calendar, finds the gap, books the meeting, and moves it when
8
+ someone drops out, telling the rest.
9
+
10
+ ## Audience
11
+ Teams of four to forty who lose hours a week to "does Tuesday work?".
12
+
13
+ ## Personality
14
+ Precise · calm · quietly clever · a little playful. Cool rather than warm; new rather than classic.
15
+
16
+ ## Voice
17
+ Short, direct sentences. Says what it does, with one number when it helps. Tagline: "Meetings find their own time."
18
+
19
+ ## Facts
20
+ Invented brand: the presentation (product keynote) example of the paper-motion pack.
21
+
22
+ ## References
23
+ - Motion: works/references/ae-style.md (the user's After Effects reference), leaned into: interface cards, chat
24
+ bubbles, chips and toasts flying in 3D, parallax stacks, pull-back reveals, whips.
25
+ - Sibling example: Halo (light, warm, diagrammatic). Orbit is its opposite: dark, cool, interface-driven.
@@ -0,0 +1,6 @@
1
+ # Look: black, white, blue only through two shaders
2
+
3
+ By: user. Space Grotesk (+ Space Mono for times). Colors kept to black and white; the only color is orbit blue, and it lives inside two Paper shaders taken from paper-motion's own set and recolored: `warp` (Warp, smooth bands) and `dither-warp` (Dithering, warp shape, 8×8). No glows, no soft shadows, hard 1 px lines; the first dark page read as "too AI" and was dropped.
4
+
5
+ Blue softened on request ("no tan fuerte"): #5F7CC2 with #1A2750 as the warp's second tone.
6
+ Then grayer still ("más gris, más apagado"): slate #6E7E9E, deep #1C2232.
@@ -0,0 +1,3 @@
1
+ # Voice: Eric (ElevenLabs)
2
+
3
+ By: user, from a three-voice casting (Sarah, Alice, Eric) on the first two lines. A male voice so the two gallery examples sound unlike each other (Halo is Matilda).
@@ -0,0 +1,9 @@
1
+ {
2
+ "pace": "fast",
3
+ "camera": "travel",
4
+ "text": "rise",
5
+ "color": "constant",
6
+ "ending": "wordmark",
7
+ "timing": null,
8
+ "moves": ["3D depth", "inertial camera that banks", "pop-in with blur and spring", "pull-back reveal", "whip with directional blur", "parallax stack", "morph, never appear", "kinetic words in the scene"]
9
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "format": {
3
+ "width": 1920,
4
+ "height": 1080,
5
+ "duration": 6,
6
+ "fps": 30
7
+ },
8
+ "entries": [
9
+ {
10
+ "id": "warp",
11
+ "source": "engine",
12
+ "shader": "Warp",
13
+ "props": {
14
+ "colors": [
15
+ "#000000",
16
+ "#6E7E9E",
17
+ "#000000",
18
+ "#1C2232"
19
+ ],
20
+ "proportion": 0.45,
21
+ "softness": 1,
22
+ "distortion": 0.25,
23
+ "swirl": 0.8,
24
+ "swirlIterations": 10,
25
+ "shapeScale": 0.1,
26
+ "shape": "checks",
27
+ "speed": 0.5
28
+ }
29
+ },
30
+ {
31
+ "id": "dither-warp",
32
+ "source": "engine",
33
+ "shader": "Dithering",
34
+ "props": {
35
+ "colorBack": "#000000",
36
+ "colorFront": "#6E7E9E",
37
+ "shape": "warp",
38
+ "type": "8x8",
39
+ "size": 3,
40
+ "scale": 1,
41
+ "speed": 0.6
42
+ }
43
+ }
44
+ ]
45
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "palette": "crisp",
3
+ "lowpass": 3200,
4
+ "cues": {
5
+ "transition": {
6
+ "type": "swell",
7
+ "dur": 1.0,
8
+ "freq": 98,
9
+ "gain": 0.06
10
+ },
11
+ "land": {
12
+ "type": "tick",
13
+ "freq": 1200,
14
+ "gain": 0.05
15
+ },
16
+ "text": {
17
+ "type": "tick",
18
+ "freq": 900,
19
+ "gain": 0.05
20
+ },
21
+ "whip": {
22
+ "type": "whoosh",
23
+ "dur": 0.3,
24
+ "from": 400,
25
+ "to": 1400,
26
+ "peak": 0.4,
27
+ "gain": 0.05
28
+ },
29
+ "bed": null
30
+ },
31
+ "keys": {
32
+ "bank": null,
33
+ "style": "clack",
34
+ "gain": 0.07
35
+ },
36
+ "voice": {
37
+ "provider": "elevenlabs",
38
+ "language": "en",
39
+ "voice": "Eric",
40
+ "id": "cjVigY5qzO86Huf0OWal",
41
+ "note": "cast against Sarah and Alice; Halo uses Matilda"
42
+ },
43
+ "music": null,
44
+ "loudness": -16
45
+ }