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