@almadar/std 16.181.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 (90) hide show
  1. package/behaviors/lolo/infra/atoms/std-calendar-sync.lolo +290 -0
  2. package/behaviors/lolo/infra/atoms/std-migration-job.lolo +2 -2
  3. package/behaviors/lolo/infra/atoms/std-notification-center.lolo +290 -0
  4. package/behaviors/lolo/infra/atoms/std-notify-on-event.lolo +238 -40
  5. package/behaviors/lolo/ui/core/atoms/std-esign-flow.lolo +180 -3
  6. package/behaviors/lolo/ui/core/molecules/ui-calendar-grid.lolo +6 -0
  7. package/behaviors/lolo/ui/core/organisms/ui-detail-panel.lolo +4 -4
  8. package/behaviors/lolo/ui/game/.hand-authored.json +1 -1
  9. package/behaviors/lolo/ui/game/atoms/std-fx-trail.lolo +63 -0
  10. package/behaviors/lolo/ui/game/atoms/std-gate-lock.lolo +96 -0
  11. package/behaviors/lolo/ui/game/atoms/std-lives.lolo +121 -0
  12. package/behaviors/lolo/ui/game/atoms/std-patrol-hazard.lolo +96 -0
  13. package/behaviors/lolo/ui/game/atoms/std-tutorial-overlay.lolo +164 -0
  14. package/behaviors/lolo/ui/game/atoms/ui-control-grid.lolo +5 -0
  15. package/behaviors/lolo/ui/game/atoms/ui-game-hud.lolo +5 -0
  16. package/behaviors/lolo/ui/game/templates/ui-game-shell.lolo +5 -5
  17. package/behaviors/lolo/ui/learning/atoms/std-learn-slope-probe.lolo +117 -0
  18. package/behaviors/lolo/ui/learning/atoms/ui-math-canvas.lolo +18 -0
  19. package/behaviors/registry/infra/atoms/std-calendar-sync.orb +1643 -0
  20. package/behaviors/registry/infra/atoms/std-migration-job.orb +2 -2
  21. package/behaviors/registry/infra/atoms/std-notification-center.orb +1621 -0
  22. package/behaviors/registry/infra/atoms/std-notify-on-event.orb +1734 -169
  23. package/behaviors/registry/ui/core/atoms/std-esign-flow.orb +846 -2
  24. package/behaviors/registry/ui/core/molecules/ui-calendar-grid.orb +9 -0
  25. package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +4 -2
  26. package/behaviors/registry/ui/game/atoms/std-fx-trail.orb +376 -0
  27. package/behaviors/registry/ui/game/atoms/std-gate-lock.orb +852 -0
  28. package/behaviors/registry/ui/game/atoms/std-lives.orb +739 -0
  29. package/behaviors/registry/ui/game/atoms/std-patrol-hazard.orb +768 -0
  30. package/behaviors/registry/ui/game/atoms/std-tutorial-overlay.orb +1060 -0
  31. package/behaviors/registry/ui/game/atoms/ui-control-grid.orb +13 -1
  32. package/behaviors/registry/ui/game/atoms/ui-game-hud.orb +13 -1
  33. package/behaviors/registry/ui/game/templates/ui-game-shell.orb +5 -5
  34. package/behaviors/registry/ui/learning/atoms/std-learn-slope-probe.orb +908 -0
  35. package/canonical-operators.json +21 -1
  36. package/dist/behaviors/exports-reader.js +9021 -3497
  37. package/dist/behaviors/functions/index.d.ts +1001 -10
  38. package/dist/behaviors/functions/index.js +18568 -13079
  39. package/dist/behaviors/index.d.ts +1 -1
  40. package/dist/behaviors/index.js +9022 -3498
  41. package/dist/behaviors/query.js +9021 -3497
  42. package/dist/behaviors-embeddings.hash.json +3 -3
  43. package/dist/behaviors-embeddings.json +347 -315
  44. package/dist/behaviors-registry.json +2694 -56
  45. package/dist/index.d.ts +3 -3
  46. package/dist/index.js +8502 -2941
  47. package/dist/knob-embeddings.hash.json +3 -3
  48. package/dist/knob-embeddings.json +1 -1
  49. package/dist/modules/anim.d.ts +1 -1
  50. package/dist/modules/array.d.ts +1 -1
  51. package/dist/modules/async.d.ts +1 -1
  52. package/dist/modules/behavior.d.ts +1 -1
  53. package/dist/modules/browser.d.ts +1 -1
  54. package/dist/modules/browser.js +21 -0
  55. package/dist/modules/composition.d.ts +1 -1
  56. package/dist/modules/contract.d.ts +1 -1
  57. package/dist/modules/core.d.ts +1 -1
  58. package/dist/modules/core.js +18 -2
  59. package/dist/modules/data.d.ts +1 -1
  60. package/dist/modules/ease.d.ts +1 -1
  61. package/dist/modules/format.d.ts +1 -1
  62. package/dist/modules/geo.d.ts +1 -1
  63. package/dist/modules/graph.d.ts +1 -1
  64. package/dist/modules/grid.d.ts +1 -1
  65. package/dist/modules/index.d.ts +1 -1
  66. package/dist/modules/index.js +39 -2
  67. package/dist/modules/integration.d.ts +1 -1
  68. package/dist/modules/llm.d.ts +1 -1
  69. package/dist/modules/math.d.ts +1 -1
  70. package/dist/modules/memory.d.ts +1 -1
  71. package/dist/modules/nn.d.ts +1 -1
  72. package/dist/modules/noise.d.ts +1 -1
  73. package/dist/modules/object.d.ts +1 -1
  74. package/dist/modules/os.d.ts +1 -1
  75. package/dist/modules/path.d.ts +1 -1
  76. package/dist/modules/prob.d.ts +1 -1
  77. package/dist/modules/session.d.ts +1 -1
  78. package/dist/modules/str.d.ts +1 -1
  79. package/dist/modules/tensor.d.ts +1 -1
  80. package/dist/modules/time.d.ts +1 -1
  81. package/dist/modules/trace.d.ts +1 -1
  82. package/dist/modules/train.d.ts +1 -1
  83. package/dist/modules/validate.d.ts +1 -1
  84. package/dist/modules/vector.d.ts +1 -1
  85. package/dist/modules/workspace.d.ts +1 -1
  86. package/dist/registry/factory-signatures.json +1 -1
  87. package/dist/registry.d.ts +1 -1
  88. package/dist/registry.js +39 -2
  89. package/dist/{types-DGJ6Y6nW.d.ts → types-BXWzEjFm.d.ts} +1 -1
  90. package/package.json +3 -3
@@ -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
+ }