@almadar/std 16.182.0 → 16.183.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 (30) hide show
  1. package/behaviors/lolo/infra/atoms/std-migration-job.lolo +2 -2
  2. package/behaviors/lolo/ui/game/atoms/std-fx-trail.lolo +63 -0
  3. package/behaviors/lolo/ui/game/atoms/std-gate-lock.lolo +96 -0
  4. package/behaviors/lolo/ui/game/atoms/std-lives.lolo +121 -0
  5. package/behaviors/lolo/ui/game/atoms/std-patrol-hazard.lolo +96 -0
  6. package/behaviors/lolo/ui/game/atoms/std-tutorial-overlay.lolo +164 -0
  7. package/behaviors/lolo/ui/learning/atoms/std-learn-slope-probe.lolo +117 -0
  8. package/behaviors/lolo/ui/learning/atoms/ui-math-canvas.lolo +18 -0
  9. package/behaviors/registry/infra/atoms/std-migration-job.orb +2 -2
  10. package/behaviors/registry/ui/game/atoms/std-fx-trail.orb +376 -0
  11. package/behaviors/registry/ui/game/atoms/std-gate-lock.orb +852 -0
  12. package/behaviors/registry/ui/game/atoms/std-lives.orb +739 -0
  13. package/behaviors/registry/ui/game/atoms/std-patrol-hazard.orb +768 -0
  14. package/behaviors/registry/ui/game/atoms/std-tutorial-overlay.orb +1060 -0
  15. package/behaviors/registry/ui/learning/atoms/std-learn-slope-probe.orb +908 -0
  16. package/dist/behaviors/exports-reader.js +2674 -2410
  17. package/dist/behaviors/functions/index.d.ts +534 -1
  18. package/dist/behaviors/functions/index.js +2657 -2411
  19. package/dist/behaviors/index.d.ts +1 -1
  20. package/dist/behaviors/index.js +2675 -2411
  21. package/dist/behaviors/query.js +2674 -2410
  22. package/dist/behaviors-embeddings.hash.json +3 -3
  23. package/dist/behaviors-embeddings.json +294 -270
  24. package/dist/behaviors-registry.json +1873 -390
  25. package/dist/index.d.ts +1 -1
  26. package/dist/index.js +2675 -2411
  27. package/dist/knob-embeddings.hash.json +3 -3
  28. package/dist/knob-embeddings.json +1 -1
  29. package/dist/registry/factory-signatures.json +1 -1
  30. package/package.json +2 -2
@@ -0,0 +1,1060 @@
1
+ {
2
+ "description": "Tutorial modal with media steps for game boards and learning shells: a paged overlay — title, an animated GIF/clip showing exactly how the mechanic is done, one line of body copy, a step counter, and Back / Next / Skip — composed entirely from registered render types (stack + text + image + button) into the overlay slot, so no new UI component is needed. autoShow opens it on INIT for first-time players; a board's help button re-opens it any time via SHOW (which rewinds to step one). DISMISS (or finishing the last step) marks the run done, clears the overlay, and emits TUTORIAL_DONE so the board can unpause or log. Steps are pure config — a board teaches a new mechanic by adding one { id, title, body, media } row.",
3
+ "ledger": {
4
+ "entries": {
5
+ "ent_01M0PEDYHYWBHKSA6ZVNM086R4": {
6
+ "bakedName": "TutorialState",
7
+ "curName": "TutorialState",
8
+ "id": "ent_01M0PEDYHYWBHKSA6ZVNM086R4",
9
+ "kind": "entity",
10
+ "owner": "workspace",
11
+ "renames": []
12
+ },
13
+ "evt_01M0PEDYHY99JGP0Q297BBCN02": {
14
+ "bakedName": "INIT",
15
+ "curName": "INIT",
16
+ "id": "evt_01M0PEDYHY99JGP0Q297BBCN02",
17
+ "kind": "event",
18
+ "owner": "workspace",
19
+ "parent": "trt_01M0PEDYHY2HA8AFMMAD5883VT",
20
+ "renames": []
21
+ },
22
+ "evt_01M0PEDYJ12JJNHT06186T7N11": {
23
+ "bakedName": "TUTORIAL_DONE",
24
+ "curName": "TUTORIAL_DONE",
25
+ "id": "evt_01M0PEDYJ12JJNHT06186T7N11",
26
+ "kind": "event",
27
+ "owner": "workspace",
28
+ "parent": "trt_01M0PEDYHY2HA8AFMMAD5883VT",
29
+ "renames": []
30
+ },
31
+ "evt_01M0PEDYJ1B3KT6WAQ36ESVPBC": {
32
+ "bakedName": "TUT_DISMISS",
33
+ "curName": "TUT_DISMISS",
34
+ "id": "evt_01M0PEDYJ1B3KT6WAQ36ESVPBC",
35
+ "kind": "event",
36
+ "owner": "workspace",
37
+ "parent": "trt_01M0PEDYHY2HA8AFMMAD5883VT",
38
+ "renames": []
39
+ },
40
+ "evt_01M0PEDYJ1GA0KV2EHBHT5NGB8": {
41
+ "bakedName": "TUT_BACK",
42
+ "curName": "TUT_BACK",
43
+ "id": "evt_01M0PEDYJ1GA0KV2EHBHT5NGB8",
44
+ "kind": "event",
45
+ "owner": "workspace",
46
+ "parent": "trt_01M0PEDYHY2HA8AFMMAD5883VT",
47
+ "renames": []
48
+ },
49
+ "evt_01M0PEDYJ1H3T1HA0PQXNTRDA3": {
50
+ "bakedName": "TUT_NEXT",
51
+ "curName": "TUT_NEXT",
52
+ "id": "evt_01M0PEDYJ1H3T1HA0PQXNTRDA3",
53
+ "kind": "event",
54
+ "owner": "workspace",
55
+ "parent": "trt_01M0PEDYHY2HA8AFMMAD5883VT",
56
+ "renames": []
57
+ },
58
+ "evt_01M0PEDYJ1PTYC6E8HS6C114XZ": {
59
+ "bakedName": "TUT_AUTO",
60
+ "curName": "TUT_AUTO",
61
+ "id": "evt_01M0PEDYJ1PTYC6E8HS6C114XZ",
62
+ "kind": "event",
63
+ "owner": "workspace",
64
+ "parent": "trt_01M0PEDYHY2HA8AFMMAD5883VT",
65
+ "renames": []
66
+ },
67
+ "evt_01M0PEDYJ1ZSPPQSFWHNDRMQM7": {
68
+ "bakedName": "SHOW",
69
+ "curName": "SHOW",
70
+ "id": "evt_01M0PEDYJ1ZSPPQSFWHNDRMQM7",
71
+ "kind": "event",
72
+ "owner": "workspace",
73
+ "parent": "trt_01M0PEDYHY2HA8AFMMAD5883VT",
74
+ "renames": []
75
+ },
76
+ "orb_01M0PEDYHYEZSSAA4NT93JBSNS": {
77
+ "bakedName": "TutorialOverlayOrbital",
78
+ "curName": "TutorialOverlayOrbital",
79
+ "id": "orb_01M0PEDYHYEZSSAA4NT93JBSNS",
80
+ "kind": "orbital",
81
+ "owner": "workspace",
82
+ "renames": []
83
+ },
84
+ "pag_01M0PEDYJ1ZDR53H1VD2HMY77M": {
85
+ "bakedName": "TutorialOverlayPage",
86
+ "curName": "TutorialOverlayPage",
87
+ "id": "pag_01M0PEDYJ1ZDR53H1VD2HMY77M",
88
+ "kind": "page",
89
+ "owner": "workspace",
90
+ "renames": []
91
+ },
92
+ "trt_01M0PEDYHY2HA8AFMMAD5883VT": {
93
+ "bakedName": "TutorialOverlay",
94
+ "curName": "TutorialOverlay",
95
+ "id": "trt_01M0PEDYHY2HA8AFMMAD5883VT",
96
+ "kind": "trait",
97
+ "owner": "workspace",
98
+ "renames": []
99
+ }
100
+ },
101
+ "schemaVersion": 1
102
+ },
103
+ "name": "std-tutorial-overlay",
104
+ "orbitals": [
105
+ {
106
+ "entity": {
107
+ "fields": [
108
+ {
109
+ "name": "id",
110
+ "required": true,
111
+ "type": "string"
112
+ },
113
+ {
114
+ "default": 0.0,
115
+ "name": "step",
116
+ "type": "number"
117
+ },
118
+ {
119
+ "default": false,
120
+ "name": "done",
121
+ "type": "boolean"
122
+ }
123
+ ],
124
+ "id": "ent_01M0PEDYHYWBHKSA6ZVNM086R4",
125
+ "name": "TutorialState",
126
+ "persistence": "runtime",
127
+ "shared": true
128
+ },
129
+ "id": "orb_01M0PEDYHYEZSSAA4NT93JBSNS",
130
+ "name": "TutorialOverlayOrbital",
131
+ "pages": [
132
+ {
133
+ "id": "pag_01M0PEDYJ1ZDR53H1VD2HMY77M",
134
+ "name": "TutorialOverlayPage",
135
+ "path": "/tutorial-overlay",
136
+ "traits": [
137
+ {
138
+ "ref": "TutorialOverlay",
139
+ "refId": "trt_01M0PEDYHY2HA8AFMMAD5883VT"
140
+ }
141
+ ]
142
+ }
143
+ ],
144
+ "traits": [
145
+ {
146
+ "category": "interaction",
147
+ "config": {
148
+ "autoShow": {
149
+ "default": true,
150
+ "description": "When true the tutorial opens on INIT for this run; when false it stays hidden until SHOW.",
151
+ "label": "Auto Show",
152
+ "tier": "domain",
153
+ "type": "boolean"
154
+ },
155
+ "steps": {
156
+ "default": [],
157
+ "description": "One row per tutorial page: title, one line of body copy, and media — the URL of an animated GIF/clip showing exactly how the mechanic is performed (recorded from real gameplay).",
158
+ "items": {
159
+ "properties": {
160
+ "body": {
161
+ "name": "body",
162
+ "required": false,
163
+ "type": "string"
164
+ },
165
+ "id": {
166
+ "name": "id",
167
+ "required": true,
168
+ "type": "string"
169
+ },
170
+ "media": {
171
+ "name": "media",
172
+ "required": false,
173
+ "type": "string"
174
+ },
175
+ "mediaAlt": {
176
+ "name": "mediaAlt",
177
+ "required": false,
178
+ "type": "string"
179
+ },
180
+ "title": {
181
+ "name": "title",
182
+ "required": true,
183
+ "type": "string"
184
+ }
185
+ },
186
+ "type": "object"
187
+ },
188
+ "label": "Steps",
189
+ "tier": "presentation",
190
+ "type": "[TutorialStep]"
191
+ }
192
+ },
193
+ "emits": [
194
+ {
195
+ "description": "Self-emitted on INIT when autoShow is on — opens step one. (A config-valued INIT guard would be constant-folded at compose time and misfire; the self-event keeps the decision in an effect.)",
196
+ "event": "TUT_AUTO",
197
+ "eventId": "evt_01M0PEDYJ1PTYC6E8HS6C114XZ",
198
+ "payloadSchema": [
199
+ {
200
+ "name": "id",
201
+ "type": "string"
202
+ }
203
+ ],
204
+ "scope": "external",
205
+ "tier": "essential"
206
+ },
207
+ {
208
+ "description": "Advance one step; on the last step it finishes the tutorial (marks done, clears the overlay, emits TUTORIAL_DONE).",
209
+ "event": "TUT_NEXT",
210
+ "eventId": "evt_01M0PEDYJ1H3T1HA0PQXNTRDA3",
211
+ "payloadSchema": [
212
+ {
213
+ "name": "id",
214
+ "type": "string"
215
+ }
216
+ ],
217
+ "scope": "external",
218
+ "tier": "essential"
219
+ },
220
+ {
221
+ "description": "Return one step (inert on the first).",
222
+ "event": "TUT_BACK",
223
+ "eventId": "evt_01M0PEDYJ1GA0KV2EHBHT5NGB8",
224
+ "payloadSchema": [
225
+ {
226
+ "name": "id",
227
+ "type": "string"
228
+ }
229
+ ],
230
+ "scope": "external",
231
+ "tier": "essential"
232
+ },
233
+ {
234
+ "description": "Skip/close the tutorial; marks done and clears the overlay.",
235
+ "event": "TUT_DISMISS",
236
+ "eventId": "evt_01M0PEDYJ1B3KT6WAQ36ESVPBC",
237
+ "payloadSchema": [
238
+ {
239
+ "name": "id",
240
+ "type": "string"
241
+ }
242
+ ],
243
+ "scope": "external",
244
+ "tier": "essential"
245
+ },
246
+ {
247
+ "description": "Re-open the tutorial from step one — wire a board's help button here.",
248
+ "event": "SHOW",
249
+ "eventId": "evt_01M0PEDYJ1ZSPPQSFWHNDRMQM7",
250
+ "payloadSchema": [
251
+ {
252
+ "name": "id",
253
+ "type": "string"
254
+ }
255
+ ],
256
+ "scope": "external",
257
+ "tier": "essential"
258
+ },
259
+ {
260
+ "description": "The tutorial was finished or skipped; boards unpause or log completion.",
261
+ "event": "TUTORIAL_DONE",
262
+ "eventId": "evt_01M0PEDYJ12JJNHT06186T7N11",
263
+ "payloadSchema": [
264
+ {
265
+ "name": "id",
266
+ "required": true,
267
+ "type": "string"
268
+ }
269
+ ],
270
+ "scope": "external",
271
+ "tier": "domain"
272
+ }
273
+ ],
274
+ "entityContract": {
275
+ "provides": [
276
+ "done",
277
+ "step"
278
+ ],
279
+ "requires": []
280
+ },
281
+ "entityRebindable": true,
282
+ "entityRefIds": {
283
+ "TutorialState": "ent_01M0PEDYHYWBHKSA6ZVNM086R4"
284
+ },
285
+ "id": "trt_01M0PEDYHY2HA8AFMMAD5883VT",
286
+ "linkedEntity": "TutorialState",
287
+ "linkedEntityId": "ent_01M0PEDYHYWBHKSA6ZVNM086R4",
288
+ "name": "TutorialOverlay",
289
+ "scope": "instance",
290
+ "stateMachine": {
291
+ "events": [
292
+ {
293
+ "id": "evt_01M0PEDYHY99JGP0Q297BBCN02",
294
+ "key": "INIT",
295
+ "name": "Initialize"
296
+ },
297
+ {
298
+ "description": "Self-emitted on INIT when autoShow is on — opens step one. (A config-valued INIT guard would be constant-folded at compose time and misfire; the self-event keeps the decision in an effect.)",
299
+ "id": "evt_01M0PEDYJ1PTYC6E8HS6C114XZ",
300
+ "key": "TUT_AUTO",
301
+ "name": "Tut Auto",
302
+ "payloadSchema": [
303
+ {
304
+ "name": "id",
305
+ "type": "string"
306
+ }
307
+ ],
308
+ "tier": "essential"
309
+ },
310
+ {
311
+ "description": "Re-open the tutorial from step one — wire a board's help button here.",
312
+ "id": "evt_01M0PEDYJ1ZSPPQSFWHNDRMQM7",
313
+ "key": "SHOW",
314
+ "name": "Show",
315
+ "payloadSchema": [
316
+ {
317
+ "name": "id",
318
+ "type": "string"
319
+ }
320
+ ],
321
+ "tier": "essential"
322
+ },
323
+ {
324
+ "description": "Advance one step; on the last step it finishes the tutorial (marks done, clears the overlay, emits TUTORIAL_DONE).",
325
+ "id": "evt_01M0PEDYJ1H3T1HA0PQXNTRDA3",
326
+ "key": "TUT_NEXT",
327
+ "name": "Tut Next",
328
+ "payloadSchema": [
329
+ {
330
+ "name": "id",
331
+ "type": "string"
332
+ }
333
+ ],
334
+ "tier": "essential"
335
+ },
336
+ {
337
+ "description": "Return one step (inert on the first).",
338
+ "id": "evt_01M0PEDYJ1GA0KV2EHBHT5NGB8",
339
+ "key": "TUT_BACK",
340
+ "name": "Tut Back",
341
+ "payloadSchema": [
342
+ {
343
+ "name": "id",
344
+ "type": "string"
345
+ }
346
+ ],
347
+ "tier": "essential"
348
+ },
349
+ {
350
+ "description": "Skip/close the tutorial; marks done and clears the overlay.",
351
+ "id": "evt_01M0PEDYJ1B3KT6WAQ36ESVPBC",
352
+ "key": "TUT_DISMISS",
353
+ "name": "Tut Dismiss",
354
+ "payloadSchema": [
355
+ {
356
+ "name": "id",
357
+ "type": "string"
358
+ }
359
+ ],
360
+ "tier": "essential"
361
+ },
362
+ {
363
+ "description": "The tutorial was finished or skipped; boards unpause or log completion.",
364
+ "id": "evt_01M0PEDYJ12JJNHT06186T7N11",
365
+ "key": "TUTORIAL_DONE",
366
+ "name": "Tutorial Done",
367
+ "payloadSchema": [
368
+ {
369
+ "name": "id",
370
+ "required": true,
371
+ "type": "string"
372
+ }
373
+ ],
374
+ "tier": "domain"
375
+ }
376
+ ],
377
+ "states": [
378
+ {
379
+ "isInitial": true,
380
+ "name": "hidden"
381
+ },
382
+ {
383
+ "name": "showing"
384
+ }
385
+ ],
386
+ "transitions": [
387
+ {
388
+ "effects": [
389
+ [
390
+ "if",
391
+ "@config.autoShow",
392
+ [
393
+ "emit",
394
+ "TUT_AUTO",
395
+ {
396
+ "id": "auto"
397
+ }
398
+ ],
399
+ [
400
+ "render-ui",
401
+ "overlay",
402
+ null
403
+ ]
404
+ ]
405
+ ],
406
+ "event": "INIT",
407
+ "eventId": "evt_01M0PEDYHY99JGP0Q297BBCN02",
408
+ "from": "hidden",
409
+ "to": "hidden"
410
+ },
411
+ {
412
+ "effects": [
413
+ [
414
+ "set",
415
+ "@entity.step",
416
+ 0.0
417
+ ],
418
+ [
419
+ "render-ui",
420
+ "overlay",
421
+ {
422
+ "children": [
423
+ {
424
+ "content": [
425
+ "object/get",
426
+ [
427
+ "array/nth",
428
+ "@config.steps",
429
+ 0.0
430
+ ],
431
+ "title"
432
+ ],
433
+ "type": "typography",
434
+ "variant": "h4",
435
+ "weight": "bold"
436
+ },
437
+ {
438
+ "alt": [
439
+ "object/get",
440
+ [
441
+ "array/nth",
442
+ "@config.steps",
443
+ 0.0
444
+ ],
445
+ "mediaAlt"
446
+ ],
447
+ "asset": {
448
+ "category": "tutorial",
449
+ "name": [
450
+ "object/get",
451
+ [
452
+ "array/nth",
453
+ "@config.steps",
454
+ 0.0
455
+ ],
456
+ "id"
457
+ ],
458
+ "url": [
459
+ "object/get",
460
+ [
461
+ "array/nth",
462
+ "@config.steps",
463
+ 0.0
464
+ ],
465
+ "media"
466
+ ]
467
+ },
468
+ "className": "rounded-md",
469
+ "fit": "contain",
470
+ "type": "atlas-image"
471
+ },
472
+ {
473
+ "content": [
474
+ "object/get",
475
+ [
476
+ "array/nth",
477
+ "@config.steps",
478
+ 0.0
479
+ ],
480
+ "body"
481
+ ],
482
+ "type": "typography",
483
+ "variant": "body"
484
+ },
485
+ {
486
+ "align": "center",
487
+ "content": [
488
+ "str/concat",
489
+ "1 / ",
490
+ [
491
+ "array/len",
492
+ "@config.steps"
493
+ ]
494
+ ],
495
+ "type": "typography",
496
+ "variant": "caption"
497
+ },
498
+ {
499
+ "children": [
500
+ {
501
+ "action": "TUT_NEXT",
502
+ "label": [
503
+ "if",
504
+ [
505
+ ">",
506
+ [
507
+ "array/len",
508
+ "@config.steps"
509
+ ],
510
+ 1.0
511
+ ],
512
+ "Next ▶",
513
+ "Got it"
514
+ ],
515
+ "type": "button",
516
+ "variant": "primary"
517
+ },
518
+ {
519
+ "action": "TUT_DISMISS",
520
+ "label": "Skip",
521
+ "type": "button",
522
+ "variant": "secondary"
523
+ }
524
+ ],
525
+ "className": "pt-2",
526
+ "direction": "horizontal",
527
+ "justify": "center",
528
+ "type": "stack"
529
+ }
530
+ ],
531
+ "className": "bg-card text-card-foreground border border-border rounded-lg shadow-lg p-6 max-w-md mx-auto mt-16",
532
+ "direction": "vertical",
533
+ "type": "stack"
534
+ }
535
+ ]
536
+ ],
537
+ "event": "TUT_AUTO",
538
+ "eventId": "evt_01M0PEDYJ1PTYC6E8HS6C114XZ",
539
+ "from": "hidden",
540
+ "to": "showing"
541
+ },
542
+ {
543
+ "effects": [
544
+ [
545
+ "set",
546
+ "@entity.step",
547
+ 0.0
548
+ ],
549
+ [
550
+ "render-ui",
551
+ "overlay",
552
+ {
553
+ "children": [
554
+ {
555
+ "content": [
556
+ "object/get",
557
+ [
558
+ "array/nth",
559
+ "@config.steps",
560
+ 0.0
561
+ ],
562
+ "title"
563
+ ],
564
+ "type": "typography",
565
+ "variant": "h4",
566
+ "weight": "bold"
567
+ },
568
+ {
569
+ "alt": [
570
+ "object/get",
571
+ [
572
+ "array/nth",
573
+ "@config.steps",
574
+ 0.0
575
+ ],
576
+ "mediaAlt"
577
+ ],
578
+ "asset": {
579
+ "category": "tutorial",
580
+ "name": [
581
+ "object/get",
582
+ [
583
+ "array/nth",
584
+ "@config.steps",
585
+ 0.0
586
+ ],
587
+ "id"
588
+ ],
589
+ "url": [
590
+ "object/get",
591
+ [
592
+ "array/nth",
593
+ "@config.steps",
594
+ 0.0
595
+ ],
596
+ "media"
597
+ ]
598
+ },
599
+ "className": "rounded-md",
600
+ "fit": "contain",
601
+ "type": "atlas-image"
602
+ },
603
+ {
604
+ "content": [
605
+ "object/get",
606
+ [
607
+ "array/nth",
608
+ "@config.steps",
609
+ 0.0
610
+ ],
611
+ "body"
612
+ ],
613
+ "type": "typography",
614
+ "variant": "body"
615
+ },
616
+ {
617
+ "align": "center",
618
+ "content": [
619
+ "str/concat",
620
+ "1 / ",
621
+ [
622
+ "array/len",
623
+ "@config.steps"
624
+ ]
625
+ ],
626
+ "type": "typography",
627
+ "variant": "caption"
628
+ },
629
+ {
630
+ "children": [
631
+ {
632
+ "action": "TUT_NEXT",
633
+ "label": [
634
+ "if",
635
+ [
636
+ ">",
637
+ [
638
+ "array/len",
639
+ "@config.steps"
640
+ ],
641
+ 1.0
642
+ ],
643
+ "Next ▶",
644
+ "Got it"
645
+ ],
646
+ "type": "button",
647
+ "variant": "primary"
648
+ },
649
+ {
650
+ "action": "TUT_DISMISS",
651
+ "label": "Skip",
652
+ "type": "button",
653
+ "variant": "secondary"
654
+ }
655
+ ],
656
+ "className": "pt-2",
657
+ "direction": "horizontal",
658
+ "justify": "center",
659
+ "type": "stack"
660
+ }
661
+ ],
662
+ "className": "bg-card text-card-foreground border border-border rounded-lg shadow-lg p-6 max-w-md mx-auto mt-16",
663
+ "direction": "vertical",
664
+ "type": "stack"
665
+ }
666
+ ]
667
+ ],
668
+ "event": "SHOW",
669
+ "eventId": "evt_01M0PEDYJ1ZSPPQSFWHNDRMQM7",
670
+ "from": "hidden",
671
+ "to": "showing"
672
+ },
673
+ {
674
+ "effects": [
675
+ [
676
+ "set",
677
+ "@entity.step",
678
+ [
679
+ "+",
680
+ "@entity.step",
681
+ 1.0
682
+ ]
683
+ ],
684
+ [
685
+ "render-ui",
686
+ "overlay",
687
+ {
688
+ "children": [
689
+ {
690
+ "content": [
691
+ "object/get",
692
+ [
693
+ "array/nth",
694
+ "@config.steps",
695
+ "@entity.step"
696
+ ],
697
+ "title"
698
+ ],
699
+ "type": "typography",
700
+ "variant": "h4",
701
+ "weight": "bold"
702
+ },
703
+ {
704
+ "alt": [
705
+ "object/get",
706
+ [
707
+ "array/nth",
708
+ "@config.steps",
709
+ "@entity.step"
710
+ ],
711
+ "mediaAlt"
712
+ ],
713
+ "asset": {
714
+ "category": "tutorial",
715
+ "name": [
716
+ "object/get",
717
+ [
718
+ "array/nth",
719
+ "@config.steps",
720
+ "@entity.step"
721
+ ],
722
+ "id"
723
+ ],
724
+ "url": [
725
+ "object/get",
726
+ [
727
+ "array/nth",
728
+ "@config.steps",
729
+ "@entity.step"
730
+ ],
731
+ "media"
732
+ ]
733
+ },
734
+ "className": "rounded-md",
735
+ "fit": "contain",
736
+ "type": "atlas-image"
737
+ },
738
+ {
739
+ "content": [
740
+ "object/get",
741
+ [
742
+ "array/nth",
743
+ "@config.steps",
744
+ "@entity.step"
745
+ ],
746
+ "body"
747
+ ],
748
+ "type": "typography",
749
+ "variant": "body"
750
+ },
751
+ {
752
+ "align": "center",
753
+ "content": [
754
+ "str/concat",
755
+ [
756
+ "+",
757
+ "@entity.step",
758
+ 1.0
759
+ ],
760
+ " / ",
761
+ [
762
+ "array/len",
763
+ "@config.steps"
764
+ ]
765
+ ],
766
+ "type": "typography",
767
+ "variant": "caption"
768
+ },
769
+ {
770
+ "children": [
771
+ {
772
+ "action": "TUT_BACK",
773
+ "label": "◀ Back",
774
+ "type": "button",
775
+ "variant": "secondary"
776
+ },
777
+ {
778
+ "action": "TUT_NEXT",
779
+ "label": [
780
+ "if",
781
+ [
782
+ "<",
783
+ [
784
+ "+",
785
+ "@entity.step",
786
+ 1.0
787
+ ],
788
+ [
789
+ "array/len",
790
+ "@config.steps"
791
+ ]
792
+ ],
793
+ "Next ▶",
794
+ "Got it"
795
+ ],
796
+ "type": "button",
797
+ "variant": "primary"
798
+ },
799
+ {
800
+ "action": "TUT_DISMISS",
801
+ "label": "Skip",
802
+ "type": "button",
803
+ "variant": "secondary"
804
+ }
805
+ ],
806
+ "className": "pt-2",
807
+ "direction": "horizontal",
808
+ "justify": "center",
809
+ "type": "stack"
810
+ }
811
+ ],
812
+ "className": "bg-card text-card-foreground border border-border rounded-lg shadow-lg p-6 max-w-md mx-auto mt-16",
813
+ "direction": "vertical",
814
+ "type": "stack"
815
+ }
816
+ ]
817
+ ],
818
+ "event": "TUT_NEXT",
819
+ "eventId": "evt_01M0PEDYJ1H3T1HA0PQXNTRDA3",
820
+ "from": "showing",
821
+ "guard": [
822
+ "<",
823
+ [
824
+ "+",
825
+ "@entity.step",
826
+ 1.0
827
+ ],
828
+ [
829
+ "array/len",
830
+ "@config.steps"
831
+ ]
832
+ ],
833
+ "to": "showing"
834
+ },
835
+ {
836
+ "effects": [
837
+ [
838
+ "set",
839
+ "@entity.done",
840
+ true
841
+ ],
842
+ [
843
+ "render-ui",
844
+ "overlay",
845
+ null
846
+ ],
847
+ [
848
+ "emit",
849
+ "TUTORIAL_DONE",
850
+ {
851
+ "id": "tutorial"
852
+ }
853
+ ]
854
+ ],
855
+ "event": "TUT_NEXT",
856
+ "eventId": "evt_01M0PEDYJ1H3T1HA0PQXNTRDA3",
857
+ "from": "showing",
858
+ "guard": [
859
+ ">=",
860
+ [
861
+ "+",
862
+ "@entity.step",
863
+ 1.0
864
+ ],
865
+ [
866
+ "array/len",
867
+ "@config.steps"
868
+ ]
869
+ ],
870
+ "to": "hidden"
871
+ },
872
+ {
873
+ "effects": [
874
+ [
875
+ "set",
876
+ "@entity.step",
877
+ [
878
+ "-",
879
+ "@entity.step",
880
+ 1.0
881
+ ]
882
+ ],
883
+ [
884
+ "render-ui",
885
+ "overlay",
886
+ {
887
+ "children": [
888
+ {
889
+ "content": [
890
+ "object/get",
891
+ [
892
+ "array/nth",
893
+ "@config.steps",
894
+ "@entity.step"
895
+ ],
896
+ "title"
897
+ ],
898
+ "type": "typography",
899
+ "variant": "h4",
900
+ "weight": "bold"
901
+ },
902
+ {
903
+ "alt": [
904
+ "object/get",
905
+ [
906
+ "array/nth",
907
+ "@config.steps",
908
+ "@entity.step"
909
+ ],
910
+ "mediaAlt"
911
+ ],
912
+ "asset": {
913
+ "category": "tutorial",
914
+ "name": [
915
+ "object/get",
916
+ [
917
+ "array/nth",
918
+ "@config.steps",
919
+ "@entity.step"
920
+ ],
921
+ "id"
922
+ ],
923
+ "url": [
924
+ "object/get",
925
+ [
926
+ "array/nth",
927
+ "@config.steps",
928
+ "@entity.step"
929
+ ],
930
+ "media"
931
+ ]
932
+ },
933
+ "className": "rounded-md",
934
+ "fit": "contain",
935
+ "type": "atlas-image"
936
+ },
937
+ {
938
+ "content": [
939
+ "object/get",
940
+ [
941
+ "array/nth",
942
+ "@config.steps",
943
+ "@entity.step"
944
+ ],
945
+ "body"
946
+ ],
947
+ "type": "typography",
948
+ "variant": "body"
949
+ },
950
+ {
951
+ "align": "center",
952
+ "content": [
953
+ "str/concat",
954
+ [
955
+ "+",
956
+ "@entity.step",
957
+ 1.0
958
+ ],
959
+ " / ",
960
+ [
961
+ "array/len",
962
+ "@config.steps"
963
+ ]
964
+ ],
965
+ "type": "typography",
966
+ "variant": "caption"
967
+ },
968
+ {
969
+ "children": [
970
+ {
971
+ "action": "TUT_BACK",
972
+ "label": "◀ Back",
973
+ "type": "button",
974
+ "variant": "secondary"
975
+ },
976
+ {
977
+ "action": "TUT_NEXT",
978
+ "label": [
979
+ "if",
980
+ [
981
+ "<",
982
+ [
983
+ "+",
984
+ "@entity.step",
985
+ 1.0
986
+ ],
987
+ [
988
+ "array/len",
989
+ "@config.steps"
990
+ ]
991
+ ],
992
+ "Next ▶",
993
+ "Got it"
994
+ ],
995
+ "type": "button",
996
+ "variant": "primary"
997
+ },
998
+ {
999
+ "action": "TUT_DISMISS",
1000
+ "label": "Skip",
1001
+ "type": "button",
1002
+ "variant": "secondary"
1003
+ }
1004
+ ],
1005
+ "className": "pt-2",
1006
+ "direction": "horizontal",
1007
+ "justify": "center",
1008
+ "type": "stack"
1009
+ }
1010
+ ],
1011
+ "className": "bg-card text-card-foreground border border-border rounded-lg shadow-lg p-6 max-w-md mx-auto mt-16",
1012
+ "direction": "vertical",
1013
+ "type": "stack"
1014
+ }
1015
+ ]
1016
+ ],
1017
+ "event": "TUT_BACK",
1018
+ "eventId": "evt_01M0PEDYJ1GA0KV2EHBHT5NGB8",
1019
+ "from": "showing",
1020
+ "guard": [
1021
+ ">",
1022
+ "@entity.step",
1023
+ 0.0
1024
+ ],
1025
+ "to": "showing"
1026
+ },
1027
+ {
1028
+ "effects": [
1029
+ [
1030
+ "set",
1031
+ "@entity.done",
1032
+ true
1033
+ ],
1034
+ [
1035
+ "render-ui",
1036
+ "overlay",
1037
+ null
1038
+ ],
1039
+ [
1040
+ "emit",
1041
+ "TUTORIAL_DONE",
1042
+ {
1043
+ "id": "tutorial"
1044
+ }
1045
+ ]
1046
+ ],
1047
+ "event": "TUT_DISMISS",
1048
+ "eventId": "evt_01M0PEDYJ1B3KT6WAQ36ESVPBC",
1049
+ "from": "showing",
1050
+ "to": "hidden"
1051
+ }
1052
+ ]
1053
+ }
1054
+ }
1055
+ ]
1056
+ }
1057
+ ],
1058
+ "schemaVersion": 1,
1059
+ "version": "1.0.0"
1060
+ }