@almadar/std 16.239.0 → 16.242.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 (167) hide show
  1. package/behaviors/behaviors-registry.json +4814 -553
  2. package/behaviors/lolo/agent/atoms/std-agent-memory.lolo +38 -1
  3. package/behaviors/lolo/agent/atoms/std-agent-session.lolo +1074 -47
  4. package/behaviors/lolo/agent/atoms/std-agent-tool-loop.lolo +8 -7
  5. package/behaviors/lolo/agent/organisms/std-agent-assistant.lolo +56 -37
  6. package/behaviors/lolo/infra/atoms/std-page-open.lolo +59 -0
  7. package/behaviors/lolo/infra/atoms/std-page-search.lolo +134 -0
  8. package/behaviors/lolo/infra/atoms/std-page-treat.lolo +59 -0
  9. package/behaviors/lolo/infra/atoms/std-page-watch.lolo +86 -0
  10. package/behaviors/lolo/ui/core/atoms/std-board.lolo +53 -6
  11. package/behaviors/lolo/ui/core/atoms/std-book-reader.lolo +25 -1
  12. package/behaviors/lolo/ui/core/atoms/std-card-grid.lolo +9 -0
  13. package/behaviors/lolo/ui/core/atoms/std-doc-page.lolo +153 -0
  14. package/behaviors/lolo/ui/core/atoms/std-site-header.lolo +15 -3
  15. package/behaviors/lolo/ui/core/atoms/std-tag-strip.lolo +2 -2
  16. package/behaviors/lolo/ui/core/atoms/std-tag-taxonomy.lolo +7 -7
  17. package/behaviors/lolo/ui/core/atoms/std-version-history.lolo +1 -1
  18. package/behaviors/lolo/ui/core/molecules/ui-header.lolo +5 -0
  19. package/behaviors/lolo/ui/learning/atoms/std-learn-arrangement.lolo +124 -92
  20. package/behaviors/lolo/ui/learning/atoms/std-learn-classify.lolo +114 -55
  21. package/behaviors/lolo/ui/learning/atoms/std-learn-compare.lolo +40 -14
  22. package/behaviors/lolo/ui/learning/atoms/std-learn-coupled-sim.lolo +363 -123
  23. package/behaviors/lolo/ui/learning/atoms/std-learn-derivation.lolo +93 -48
  24. package/behaviors/lolo/ui/learning/atoms/std-learn-diagram.lolo +60 -28
  25. package/behaviors/lolo/ui/learning/atoms/std-learn-doser.lolo +193 -96
  26. package/behaviors/lolo/ui/learning/atoms/std-learn-estimate.lolo +75 -32
  27. package/behaviors/lolo/ui/learning/atoms/std-learn-goal-seek.lolo +142 -86
  28. package/behaviors/lolo/ui/learning/atoms/std-learn-grid-sim.lolo +266 -98
  29. package/behaviors/lolo/ui/learning/atoms/std-learn-hotspot.lolo +103 -65
  30. package/behaviors/lolo/ui/learning/atoms/std-learn-live-sim.lolo +223 -109
  31. package/behaviors/lolo/ui/learning/atoms/std-learn-measure.lolo +232 -64
  32. package/behaviors/lolo/ui/learning/atoms/std-learn-param-explorer.lolo +69 -29
  33. package/behaviors/lolo/ui/learning/atoms/std-learn-perturb.lolo +363 -123
  34. package/behaviors/lolo/ui/learning/atoms/std-learn-predict.lolo +73 -41
  35. package/behaviors/lolo/ui/learning/atoms/std-learn-sample-accumulator.lolo +96 -38
  36. package/behaviors/lolo/ui/learning/atoms/std-learn-sandbox.lolo +65 -45
  37. package/behaviors/lolo/ui/learning/atoms/std-learn-scatter-fit.lolo +243 -117
  38. package/behaviors/lolo/ui/learning/atoms/std-learn-scenario.lolo +76 -28
  39. package/behaviors/lolo/ui/learning/atoms/std-learn-sim-3d.lolo +228 -109
  40. package/behaviors/lolo/ui/learning/atoms/std-learn-speed-drill.lolo +95 -44
  41. package/behaviors/lolo/ui/learning/atoms/std-learn-stepper.lolo +199 -125
  42. package/behaviors/lolo/ui/learning/atoms/std-learn-tour-3d.lolo +92 -48
  43. package/behaviors/lolo/ui/learning/atoms/std-learn-trace-player.lolo +239 -78
  44. package/behaviors/lolo/ui/learning/atoms/std-learn-transport.lolo +147 -38
  45. package/behaviors/lolo/ui/learning/atoms/std-learn-tree.lolo +123 -58
  46. package/behaviors/lolo/ui/learning/atoms/ui-algo-graph-canvas.lolo +22 -0
  47. package/behaviors/lolo/ui/learning/atoms/ui-algorithm-canvas.lolo +26 -0
  48. package/behaviors/lolo/ui/learning/atoms/ui-biology-canvas.lolo +26 -0
  49. package/behaviors/lolo/ui/learning/atoms/ui-chemistry-canvas.lolo +27 -1
  50. package/behaviors/lolo/ui/learning/atoms/ui-learning-canvas.lolo +27 -1
  51. package/behaviors/lolo/ui/learning/atoms/ui-math-canvas.lolo +29 -9
  52. package/behaviors/lolo/ui/learning/atoms/ui-physics-canvas.lolo +26 -0
  53. package/behaviors/lolo-behavior-contracts.json +1 -1
  54. package/behaviors/registry/agent/atoms/std-agent-memory.orb +372 -2
  55. package/behaviors/registry/agent/atoms/std-agent-session.orb +4752 -348
  56. package/behaviors/registry/agent/atoms/std-agent-tool-loop.orb +54 -42
  57. package/behaviors/registry/agent/organisms/std-agent-assistant.orb +356 -122
  58. package/behaviors/registry/factory-signatures.json +1 -1
  59. package/behaviors/registry/infra/atoms/std-page-open.orb +435 -0
  60. package/behaviors/registry/infra/atoms/std-page-search.orb +867 -0
  61. package/behaviors/registry/infra/atoms/std-page-treat.orb +494 -0
  62. package/behaviors/registry/infra/atoms/std-page-watch.orb +554 -0
  63. package/behaviors/registry/ui/core/atoms/std-board.orb +110 -14
  64. package/behaviors/registry/ui/core/atoms/std-book-reader.orb +119 -0
  65. package/behaviors/registry/ui/core/atoms/std-card-grid.orb +61 -0
  66. package/behaviors/registry/ui/core/atoms/std-doc-page.orb +594 -0
  67. package/behaviors/registry/ui/core/atoms/std-site-header.orb +40 -2
  68. package/behaviors/registry/ui/core/atoms/std-tag-strip.orb +2 -0
  69. package/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +24 -0
  70. package/behaviors/registry/ui/core/atoms/std-version-history.orb +8 -1
  71. package/behaviors/registry/ui/core/molecules/ui-header.orb +7 -0
  72. package/behaviors/registry/ui/learning/atoms/std-learn-arrangement.orb +903 -369
  73. package/behaviors/registry/ui/learning/atoms/std-learn-classify.orb +1002 -232
  74. package/behaviors/registry/ui/learning/atoms/std-learn-compare.orb +253 -74
  75. package/behaviors/registry/ui/learning/atoms/std-learn-coupled-sim.orb +3624 -921
  76. package/behaviors/registry/ui/learning/atoms/std-learn-derivation.orb +685 -144
  77. package/behaviors/registry/ui/learning/atoms/std-learn-diagram.orb +404 -52
  78. package/behaviors/registry/ui/learning/atoms/std-learn-doser.orb +1787 -210
  79. package/behaviors/registry/ui/learning/atoms/std-learn-estimate.orb +699 -71
  80. package/behaviors/registry/ui/learning/atoms/std-learn-goal-seek.orb +1102 -578
  81. package/behaviors/registry/ui/learning/atoms/std-learn-grid-sim.orb +2760 -872
  82. package/behaviors/registry/ui/learning/atoms/std-learn-hotspot.orb +689 -152
  83. package/behaviors/registry/ui/learning/atoms/std-learn-live-sim.orb +1431 -633
  84. package/behaviors/registry/ui/learning/atoms/std-learn-measure.orb +2485 -512
  85. package/behaviors/registry/ui/learning/atoms/std-learn-param-explorer.orb +501 -197
  86. package/behaviors/registry/ui/learning/atoms/std-learn-perturb.orb +3642 -928
  87. package/behaviors/registry/ui/learning/atoms/std-learn-predict.orb +705 -125
  88. package/behaviors/registry/ui/learning/atoms/std-learn-sample-accumulator.orb +624 -114
  89. package/behaviors/registry/ui/learning/atoms/std-learn-sandbox.orb +405 -153
  90. package/behaviors/registry/ui/learning/atoms/std-learn-scatter-fit.orb +1911 -611
  91. package/behaviors/registry/ui/learning/atoms/std-learn-scenario.orb +436 -128
  92. package/behaviors/registry/ui/learning/atoms/std-learn-sim-3d.orb +2482 -485
  93. package/behaviors/registry/ui/learning/atoms/std-learn-speed-drill.orb +896 -192
  94. package/behaviors/registry/ui/learning/atoms/std-learn-stepper.orb +2001 -759
  95. package/behaviors/registry/ui/learning/atoms/std-learn-tour-3d.orb +734 -228
  96. package/behaviors/registry/ui/learning/atoms/std-learn-trace-player.orb +2501 -764
  97. package/behaviors/registry/ui/learning/atoms/std-learn-transport.orb +1591 -173
  98. package/behaviors/registry/ui/learning/atoms/std-learn-tree.orb +883 -122
  99. package/behaviors/registry/ui/learning/atoms/ui-algo-graph-canvas.orb +176 -0
  100. package/behaviors/registry/ui/learning/atoms/ui-algorithm-canvas.orb +211 -0
  101. package/behaviors/registry/ui/learning/atoms/ui-biology-canvas.orb +211 -0
  102. package/behaviors/registry/ui/learning/atoms/ui-chemistry-canvas.orb +212 -1
  103. package/behaviors/registry/ui/learning/atoms/ui-learning-canvas.orb +212 -1
  104. package/behaviors/registry/ui/learning/atoms/ui-math-canvas.orb +203 -9
  105. package/behaviors/registry/ui/learning/atoms/ui-physics-canvas.orb +211 -0
  106. package/behaviors/signatures.lolo +325 -655
  107. package/canonical-operators.json +35 -1
  108. package/dist/behaviors/exports-reader.js +41980 -35508
  109. package/dist/behaviors/functions/index.d.ts +1063 -140
  110. package/dist/behaviors/functions/index.js +41951 -35506
  111. package/dist/behaviors/index.d.ts +1 -1
  112. package/dist/behaviors/index.js +41981 -35509
  113. package/dist/behaviors/query.js +41980 -35508
  114. package/dist/behaviors-embeddings.hash.json +3 -3
  115. package/dist/behaviors-embeddings.json +47 -27
  116. package/dist/behaviors-registry.json +4814 -553
  117. package/dist/index.d.ts +4 -4
  118. package/dist/index.js +42019 -35509
  119. package/dist/knob-embeddings.hash.json +3 -3
  120. package/dist/knob-embeddings.json +623 -263
  121. package/dist/modules/anim.d.ts +1 -1
  122. package/dist/modules/array.d.ts +1 -1
  123. package/dist/modules/async.d.ts +1 -1
  124. package/dist/modules/behavior.d.ts +1 -1
  125. package/dist/modules/browser.d.ts +1 -1
  126. package/dist/modules/composition.d.ts +1 -1
  127. package/dist/modules/contract.d.ts +1 -1
  128. package/dist/modules/core.d.ts +1 -1
  129. package/dist/modules/core.js +2 -0
  130. package/dist/modules/data.d.ts +1 -1
  131. package/dist/modules/ease.d.ts +1 -1
  132. package/dist/modules/format.d.ts +1 -1
  133. package/dist/modules/geo.d.ts +1 -1
  134. package/dist/modules/graph.d.ts +1 -1
  135. package/dist/modules/grid.d.ts +1 -1
  136. package/dist/modules/i18n.d.ts +17 -0
  137. package/dist/modules/i18n.js +22 -0
  138. package/dist/modules/index.d.ts +2 -1
  139. package/dist/modules/index.js +24 -1
  140. package/dist/modules/integration.d.ts +1 -1
  141. package/dist/modules/json.d.ts +1 -1
  142. package/dist/modules/llm.d.ts +1 -1
  143. package/dist/modules/math.d.ts +1 -1
  144. package/dist/modules/memory.d.ts +1 -1
  145. package/dist/modules/nn.d.ts +1 -1
  146. package/dist/modules/noise.d.ts +1 -1
  147. package/dist/modules/object.d.ts +1 -1
  148. package/dist/modules/os.d.ts +1 -1
  149. package/dist/modules/path.d.ts +1 -1
  150. package/dist/modules/prob.d.ts +1 -1
  151. package/dist/modules/session.d.ts +1 -1
  152. package/dist/modules/str.d.ts +1 -1
  153. package/dist/modules/tensor.d.ts +1 -1
  154. package/dist/modules/time.d.ts +1 -1
  155. package/dist/modules/trace.d.ts +1 -1
  156. package/dist/modules/train.d.ts +1 -1
  157. package/dist/modules/validate.d.ts +1 -1
  158. package/dist/modules/vector.d.ts +1 -1
  159. package/dist/modules/workspace.d.ts +1 -1
  160. package/dist/registry/factory-signatures.json +1 -1
  161. package/dist/registry.d.ts +10 -3
  162. package/dist/registry.js +31 -1
  163. package/dist/{types-DLx38UFZ.d.ts → types-Cdb321uM.d.ts} +9 -3
  164. package/i18n/ar.json +1 -0
  165. package/i18n/en.json +1 -0
  166. package/i18n/sl.json +1 -0
  167. package/package.json +3 -3
@@ -399,8 +399,8 @@
399
399
  "type": "[Learn3DStation]"
400
400
  },
401
401
  "backgroundColor": {
402
- "default": "#0f172a",
403
- "description": "Canvas background color — a dark stage makes translucent shells and station colors read in 3D.",
402
+ "default": "",
403
+ "description": "Canvas ground. Empty uses the theme drawing ground.",
404
404
  "label": "Background Color",
405
405
  "tier": "presentation",
406
406
  "type": "string"
@@ -655,7 +655,7 @@
655
655
  "default": [
656
656
  {
657
657
  "caption": "The first stop on the tour — the camera retargets here and the narration reads its caption.",
658
- "color": "#2563eb",
658
+ "color": "series-1",
659
659
  "id": "alpha",
660
660
  "name": "Station Alpha",
661
661
  "opacity": 1.0,
@@ -667,7 +667,7 @@
667
667
  },
668
668
  {
669
669
  "caption": "The second stop — press Tour again or click a shape to advance the selection.",
670
- "color": "#7c3aed",
670
+ "color": "series-2",
671
671
  "id": "beta",
672
672
  "name": "Station Beta",
673
673
  "opacity": 1.0,
@@ -679,7 +679,7 @@
679
679
  },
680
680
  {
681
681
  "caption": "The final stop — once every station has been visited the tour marks itself complete.",
682
- "color": "#0891b2",
682
+ "color": "series-3",
683
683
  "id": "gamma",
684
684
  "name": "Station Gamma",
685
685
  "opacity": 1.0,
@@ -751,6 +751,13 @@
751
751
  "tier": "domain",
752
752
  "type": "[Learn3DStation]"
753
753
  },
754
+ "summary": {
755
+ "default": "",
756
+ "description": "One line under the title saying what the learner is looking at (keep it under ~65 characters). Empty shows no line.",
757
+ "label": "Concept",
758
+ "tier": "presentation",
759
+ "type": "string"
760
+ },
754
761
  "title": {
755
762
  "default": "3D Guided Tour",
756
763
  "description": "Title shown above the canvas.",
@@ -759,7 +766,7 @@
759
766
  "type": "string"
760
767
  },
761
768
  "tourLabel": {
762
- "default": "Tour",
769
+ "default": "Next station",
763
770
  "description": "Label text for the button that advances the tour to the next station.",
764
771
  "label": "Tour Button Label",
765
772
  "tier": "presentation",
@@ -1264,28 +1271,131 @@
1264
1271
  {
1265
1272
  "children": [
1266
1273
  {
1267
- "content": "@entity.title",
1268
- "type": "typography",
1269
- "variant": "h4"
1274
+ "align": "start",
1275
+ "children": [
1276
+ {
1277
+ "children": [
1278
+ {
1279
+ "content": "@entity.title",
1280
+ "type": "typography",
1281
+ "variant": "h4"
1282
+ },
1283
+ [
1284
+ "if",
1285
+ [
1286
+ "==",
1287
+ "@config.summary",
1288
+ ""
1289
+ ],
1290
+ null,
1291
+ {
1292
+ "color": "muted",
1293
+ "content": "@config.summary",
1294
+ "type": "typography",
1295
+ "variant": "body2"
1296
+ }
1297
+ ]
1298
+ ],
1299
+ "direction": "vertical",
1300
+ "gap": "xs",
1301
+ "type": "stack"
1302
+ },
1303
+ {
1304
+ "label": [
1305
+ "if",
1306
+ "@entity.tourComplete",
1307
+ "Complete",
1308
+ [
1309
+ "str/concat",
1310
+ "Station ",
1311
+ [
1312
+ "str/concat",
1313
+ "",
1314
+ [
1315
+ "+",
1316
+ "@entity.selectedIndex",
1317
+ 1.0
1318
+ ]
1319
+ ],
1320
+ " of ",
1321
+ [
1322
+ "str/concat",
1323
+ "",
1324
+ [
1325
+ "array/len",
1326
+ "@entity.stations"
1327
+ ]
1328
+ ]
1329
+ ]
1330
+ ],
1331
+ "type": "badge",
1332
+ "variant": [
1333
+ "if",
1334
+ "@entity.tourComplete",
1335
+ "success",
1336
+ "neutral"
1337
+ ]
1338
+ }
1339
+ ],
1340
+ "direction": "horizontal",
1341
+ "gap": "md",
1342
+ "justify": "between",
1343
+ "type": "stack"
1270
1344
  },
1271
1345
  {
1346
+ "align": "center",
1272
1347
  "children": [
1273
1348
  {
1274
1349
  "action": "TOUR",
1350
+ "icon": "chevron-right",
1275
1351
  "label": "@config.tourLabel",
1276
1352
  "type": "button",
1277
1353
  "variant": "primary"
1278
1354
  },
1279
1355
  {
1280
1356
  "action": "RESET",
1357
+ "icon": "rotate-ccw",
1281
1358
  "label": "@config.resetLabel",
1282
1359
  "type": "button",
1283
1360
  "variant": "ghost"
1361
+ },
1362
+ {
1363
+ "color": "muted",
1364
+ "content": [
1365
+ "str/concat",
1366
+ "Explored ",
1367
+ [
1368
+ "str/concat",
1369
+ "",
1370
+ [
1371
+ "array/len",
1372
+ "@entity.visitedIds"
1373
+ ]
1374
+ ],
1375
+ " of ",
1376
+ [
1377
+ "str/concat",
1378
+ "",
1379
+ [
1380
+ "array/len",
1381
+ "@entity.stations"
1382
+ ]
1383
+ ],
1384
+ [
1385
+ "if",
1386
+ "@entity.tourComplete",
1387
+ " — tour complete!",
1388
+ ""
1389
+ ]
1390
+ ],
1391
+ "type": "typography",
1392
+ "variant": "caption"
1284
1393
  }
1285
1394
  ],
1286
1395
  "direction": "horizontal",
1287
1396
  "gap": "sm",
1288
- "type": "stack"
1397
+ "type": "stack",
1398
+ "wrap": true
1289
1399
  },
1290
1400
  {
1291
1401
  "backgroundColor": "@config.backgroundColor",
@@ -1327,6 +1437,11 @@
1327
1437
  "edges": "@entity.edges",
1328
1438
  "height": "@config.height",
1329
1439
  "interactive": true,
1440
+ "keyMap": {
1441
+ "ArrowRight": "TOUR",
1442
+ "KeyR": "RESET",
1443
+ "Space": "TOUR"
1444
+ },
1330
1445
  "lighting": "@config.lighting",
1331
1446
  "mode": "3d",
1332
1447
  "nodes": [
@@ -1418,37 +1533,6 @@
1418
1533
  "content": "@entity.narration",
1419
1534
  "type": "typography",
1420
1535
  "variant": "body"
1421
- },
1422
- {
1423
- "content": [
1424
- "str/concat",
1425
- "Explored ",
1426
- [
1427
- "str/concat",
1428
- "",
1429
- [
1430
- "array/len",
1431
- "@entity.visitedIds"
1432
- ]
1433
- ],
1434
- " of ",
1435
- [
1436
- "str/concat",
1437
- "",
1438
- [
1439
- "array/len",
1440
- "@entity.stations"
1441
- ]
1442
- ],
1443
- [
1444
- "if",
1445
- "@entity.tourComplete",
1446
- " — tour complete!",
1447
- ""
1448
- ]
1449
- ],
1450
- "type": "typography",
1451
- "variant": "caption"
1452
1536
  }
1453
1537
  ],
1454
1538
  "direction": "vertical",
@@ -1505,6 +1589,43 @@
1505
1589
  ],
1506
1590
  "to": "idle"
1507
1591
  },
1592
+ {
1593
+ "effects": [
1594
+ [
1595
+ "set",
1596
+ "@entity.active",
1597
+ false
1598
+ ],
1599
+ [
1600
+ "render-ui",
1601
+ "main",
1602
+ null
1603
+ ]
1604
+ ],
1605
+ "event": "MODE_SELECTED",
1606
+ "eventId": "evt_01M07RCKW2FDQK2QD7WX4GTRMJ",
1607
+ "from": "idle",
1608
+ "guard": [
1609
+ "and",
1610
+ [
1611
+ "not",
1612
+ [
1613
+ "==",
1614
+ "@config.matchMode",
1615
+ ""
1616
+ ]
1617
+ ],
1618
+ [
1619
+ "not",
1620
+ [
1621
+ "==",
1622
+ "@payload.mode",
1623
+ "@config.matchMode"
1624
+ ]
1625
+ ]
1626
+ ],
1627
+ "to": "idle"
1628
+ },
1508
1629
  {
1509
1630
  "effects": [
1510
1631
  [
@@ -1604,28 +1725,131 @@
1604
1725
  {
1605
1726
  "children": [
1606
1727
  {
1607
- "content": "@entity.title",
1608
- "type": "typography",
1609
- "variant": "h4"
1728
+ "align": "start",
1729
+ "children": [
1730
+ {
1731
+ "children": [
1732
+ {
1733
+ "content": "@entity.title",
1734
+ "type": "typography",
1735
+ "variant": "h4"
1736
+ },
1737
+ [
1738
+ "if",
1739
+ [
1740
+ "==",
1741
+ "@config.summary",
1742
+ ""
1743
+ ],
1744
+ null,
1745
+ {
1746
+ "color": "muted",
1747
+ "content": "@config.summary",
1748
+ "type": "typography",
1749
+ "variant": "body2"
1750
+ }
1751
+ ]
1752
+ ],
1753
+ "direction": "vertical",
1754
+ "gap": "xs",
1755
+ "type": "stack"
1756
+ },
1757
+ {
1758
+ "label": [
1759
+ "if",
1760
+ "@entity.tourComplete",
1761
+ "Complete",
1762
+ [
1763
+ "str/concat",
1764
+ "Station ",
1765
+ [
1766
+ "str/concat",
1767
+ "",
1768
+ [
1769
+ "+",
1770
+ "@entity.selectedIndex",
1771
+ 1.0
1772
+ ]
1773
+ ],
1774
+ " of ",
1775
+ [
1776
+ "str/concat",
1777
+ "",
1778
+ [
1779
+ "array/len",
1780
+ "@entity.stations"
1781
+ ]
1782
+ ]
1783
+ ]
1784
+ ],
1785
+ "type": "badge",
1786
+ "variant": [
1787
+ "if",
1788
+ "@entity.tourComplete",
1789
+ "success",
1790
+ "neutral"
1791
+ ]
1792
+ }
1793
+ ],
1794
+ "direction": "horizontal",
1795
+ "gap": "md",
1796
+ "justify": "between",
1797
+ "type": "stack"
1610
1798
  },
1611
1799
  {
1800
+ "align": "center",
1612
1801
  "children": [
1613
1802
  {
1614
1803
  "action": "TOUR",
1804
+ "icon": "chevron-right",
1615
1805
  "label": "@config.tourLabel",
1616
1806
  "type": "button",
1617
1807
  "variant": "primary"
1618
1808
  },
1619
1809
  {
1620
1810
  "action": "RESET",
1811
+ "icon": "rotate-ccw",
1621
1812
  "label": "@config.resetLabel",
1622
1813
  "type": "button",
1623
1814
  "variant": "ghost"
1815
+ },
1816
+ {
1817
+ "color": "muted",
1818
+ "content": [
1819
+ "str/concat",
1820
+ "Explored ",
1821
+ [
1822
+ "str/concat",
1823
+ "",
1824
+ [
1825
+ "array/len",
1826
+ "@entity.visitedIds"
1827
+ ]
1828
+ ],
1829
+ " of ",
1830
+ [
1831
+ "str/concat",
1832
+ "",
1833
+ [
1834
+ "array/len",
1835
+ "@entity.stations"
1836
+ ]
1837
+ ],
1838
+ [
1839
+ "if",
1840
+ "@entity.tourComplete",
1841
+ " — tour complete!",
1842
+ ""
1843
+ ]
1844
+ ],
1845
+ "type": "typography",
1846
+ "variant": "caption"
1624
1847
  }
1625
1848
  ],
1626
1849
  "direction": "horizontal",
1627
1850
  "gap": "sm",
1628
- "type": "stack"
1851
+ "type": "stack",
1852
+ "wrap": true
1629
1853
  },
1630
1854
  {
1631
1855
  "backgroundColor": "@config.backgroundColor",
@@ -1667,6 +1891,11 @@
1667
1891
  "edges": "@entity.edges",
1668
1892
  "height": "@config.height",
1669
1893
  "interactive": true,
1894
+ "keyMap": {
1895
+ "ArrowRight": "TOUR",
1896
+ "KeyR": "RESET",
1897
+ "Space": "TOUR"
1898
+ },
1670
1899
  "lighting": "@config.lighting",
1671
1900
  "mode": "3d",
1672
1901
  "nodes": [
@@ -1758,37 +1987,6 @@
1758
1987
  "content": "@entity.narration",
1759
1988
  "type": "typography",
1760
1989
  "variant": "body"
1761
- },
1762
- {
1763
- "content": [
1764
- "str/concat",
1765
- "Explored ",
1766
- [
1767
- "str/concat",
1768
- "",
1769
- [
1770
- "array/len",
1771
- "@entity.visitedIds"
1772
- ]
1773
- ],
1774
- " of ",
1775
- [
1776
- "str/concat",
1777
- "",
1778
- [
1779
- "array/len",
1780
- "@entity.stations"
1781
- ]
1782
- ],
1783
- [
1784
- "if",
1785
- "@entity.tourComplete",
1786
- " — tour complete!",
1787
- ""
1788
- ]
1789
- ],
1790
- "type": "typography",
1791
- "variant": "caption"
1792
1990
  }
1793
1991
  ],
1794
1992
  "direction": "vertical",
@@ -2014,36 +2212,139 @@
2014
2212
  {
2015
2213
  "children": [
2016
2214
  {
2017
- "content": "@entity.title",
2018
- "type": "typography",
2019
- "variant": "h4"
2215
+ "align": "start",
2216
+ "children": [
2217
+ {
2218
+ "children": [
2219
+ {
2220
+ "content": "@entity.title",
2221
+ "type": "typography",
2222
+ "variant": "h4"
2223
+ },
2224
+ [
2225
+ "if",
2226
+ [
2227
+ "==",
2228
+ "@config.summary",
2229
+ ""
2230
+ ],
2231
+ null,
2232
+ {
2233
+ "color": "muted",
2234
+ "content": "@config.summary",
2235
+ "type": "typography",
2236
+ "variant": "body2"
2237
+ }
2238
+ ]
2239
+ ],
2240
+ "direction": "vertical",
2241
+ "gap": "xs",
2242
+ "type": "stack"
2243
+ },
2244
+ {
2245
+ "label": [
2246
+ "if",
2247
+ "@entity.tourComplete",
2248
+ "Complete",
2249
+ [
2250
+ "str/concat",
2251
+ "Station ",
2252
+ [
2253
+ "str/concat",
2254
+ "",
2255
+ [
2256
+ "+",
2257
+ "@entity.selectedIndex",
2258
+ 1.0
2259
+ ]
2260
+ ],
2261
+ " of ",
2262
+ [
2263
+ "str/concat",
2264
+ "",
2265
+ [
2266
+ "array/len",
2267
+ "@entity.stations"
2268
+ ]
2269
+ ]
2270
+ ]
2271
+ ],
2272
+ "type": "badge",
2273
+ "variant": [
2274
+ "if",
2275
+ "@entity.tourComplete",
2276
+ "success",
2277
+ "neutral"
2278
+ ]
2279
+ }
2280
+ ],
2281
+ "direction": "horizontal",
2282
+ "gap": "md",
2283
+ "justify": "between",
2284
+ "type": "stack"
2020
2285
  },
2021
2286
  {
2287
+ "align": "center",
2022
2288
  "children": [
2023
2289
  {
2024
2290
  "action": "TOUR",
2291
+ "icon": "chevron-right",
2025
2292
  "label": "@config.tourLabel",
2026
2293
  "type": "button",
2027
2294
  "variant": "primary"
2028
2295
  },
2029
2296
  {
2030
2297
  "action": "RESET",
2298
+ "icon": "rotate-ccw",
2031
2299
  "label": "@config.resetLabel",
2032
2300
  "type": "button",
2033
2301
  "variant": "ghost"
2034
- }
2035
- ],
2036
- "direction": "horizontal",
2037
- "gap": "sm",
2038
- "type": "stack"
2039
- },
2040
- {
2041
- "backgroundColor": "@config.backgroundColor",
2042
- "camera": {
2043
- "azimuth": "@config.azimuth",
2044
- "fov": "@config.fov",
2045
- "mode": "perspective",
2046
- "target": {
2302
+ },
2303
+ {
2304
+ "color": "muted",
2305
+ "content": [
2306
+ "str/concat",
2307
+ "Explored ",
2308
+ [
2309
+ "str/concat",
2310
+ "",
2311
+ [
2312
+ "array/len",
2313
+ "@entity.visitedIds"
2314
+ ]
2315
+ ],
2316
+ " of ",
2317
+ [
2318
+ "str/concat",
2319
+ "",
2320
+ [
2321
+ "array/len",
2322
+ "@entity.stations"
2323
+ ]
2324
+ ],
2325
+ [
2326
+ "if",
2327
+ "@entity.tourComplete",
2328
+ " — tour complete!",
2329
+ ""
2330
+ ]
2331
+ ],
2332
+ "type": "typography",
2333
+ "variant": "caption"
2334
+ }
2335
+ ],
2336
+ "direction": "horizontal",
2337
+ "gap": "sm",
2338
+ "type": "stack",
2339
+ "wrap": true
2340
+ },
2341
+ {
2342
+ "backgroundColor": "@config.backgroundColor",
2343
+ "camera": {
2344
+ "azimuth": "@config.azimuth",
2345
+ "fov": "@config.fov",
2346
+ "mode": "perspective",
2347
+ "target": {
2047
2348
  "x": [
2048
2349
  "object/get",
2049
2350
  [
@@ -2077,6 +2378,11 @@
2077
2378
  "edges": "@entity.edges",
2078
2379
  "height": "@config.height",
2079
2380
  "interactive": true,
2381
+ "keyMap": {
2382
+ "ArrowRight": "TOUR",
2383
+ "KeyR": "RESET",
2384
+ "Space": "TOUR"
2385
+ },
2080
2386
  "lighting": "@config.lighting",
2081
2387
  "mode": "3d",
2082
2388
  "nodes": [
@@ -2168,37 +2474,6 @@
2168
2474
  "content": "@entity.narration",
2169
2475
  "type": "typography",
2170
2476
  "variant": "body"
2171
- },
2172
- {
2173
- "content": [
2174
- "str/concat",
2175
- "Explored ",
2176
- [
2177
- "str/concat",
2178
- "",
2179
- [
2180
- "array/len",
2181
- "@entity.visitedIds"
2182
- ]
2183
- ],
2184
- " of ",
2185
- [
2186
- "str/concat",
2187
- "",
2188
- [
2189
- "array/len",
2190
- "@entity.stations"
2191
- ]
2192
- ],
2193
- [
2194
- "if",
2195
- "@entity.tourComplete",
2196
- " — tour complete!",
2197
- ""
2198
- ]
2199
- ],
2200
- "type": "typography",
2201
- "variant": "caption"
2202
2477
  }
2203
2478
  ],
2204
2479
  "direction": "vertical",
@@ -2449,28 +2724,131 @@
2449
2724
  {
2450
2725
  "children": [
2451
2726
  {
2452
- "content": "@entity.title",
2453
- "type": "typography",
2454
- "variant": "h4"
2727
+ "align": "start",
2728
+ "children": [
2729
+ {
2730
+ "children": [
2731
+ {
2732
+ "content": "@entity.title",
2733
+ "type": "typography",
2734
+ "variant": "h4"
2735
+ },
2736
+ [
2737
+ "if",
2738
+ [
2739
+ "==",
2740
+ "@config.summary",
2741
+ ""
2742
+ ],
2743
+ null,
2744
+ {
2745
+ "color": "muted",
2746
+ "content": "@config.summary",
2747
+ "type": "typography",
2748
+ "variant": "body2"
2749
+ }
2750
+ ]
2751
+ ],
2752
+ "direction": "vertical",
2753
+ "gap": "xs",
2754
+ "type": "stack"
2755
+ },
2756
+ {
2757
+ "label": [
2758
+ "if",
2759
+ "@entity.tourComplete",
2760
+ "Complete",
2761
+ [
2762
+ "str/concat",
2763
+ "Station ",
2764
+ [
2765
+ "str/concat",
2766
+ "",
2767
+ [
2768
+ "+",
2769
+ "@entity.selectedIndex",
2770
+ 1.0
2771
+ ]
2772
+ ],
2773
+ " of ",
2774
+ [
2775
+ "str/concat",
2776
+ "",
2777
+ [
2778
+ "array/len",
2779
+ "@entity.stations"
2780
+ ]
2781
+ ]
2782
+ ]
2783
+ ],
2784
+ "type": "badge",
2785
+ "variant": [
2786
+ "if",
2787
+ "@entity.tourComplete",
2788
+ "success",
2789
+ "neutral"
2790
+ ]
2791
+ }
2792
+ ],
2793
+ "direction": "horizontal",
2794
+ "gap": "md",
2795
+ "justify": "between",
2796
+ "type": "stack"
2455
2797
  },
2456
2798
  {
2799
+ "align": "center",
2457
2800
  "children": [
2458
2801
  {
2459
2802
  "action": "TOUR",
2803
+ "icon": "chevron-right",
2460
2804
  "label": "@config.tourLabel",
2461
2805
  "type": "button",
2462
2806
  "variant": "primary"
2463
2807
  },
2464
2808
  {
2465
2809
  "action": "RESET",
2810
+ "icon": "rotate-ccw",
2466
2811
  "label": "@config.resetLabel",
2467
2812
  "type": "button",
2468
2813
  "variant": "ghost"
2814
+ },
2815
+ {
2816
+ "color": "muted",
2817
+ "content": [
2818
+ "str/concat",
2819
+ "Explored ",
2820
+ [
2821
+ "str/concat",
2822
+ "",
2823
+ [
2824
+ "array/len",
2825
+ "@entity.visitedIds"
2826
+ ]
2827
+ ],
2828
+ " of ",
2829
+ [
2830
+ "str/concat",
2831
+ "",
2832
+ [
2833
+ "array/len",
2834
+ "@entity.stations"
2835
+ ]
2836
+ ],
2837
+ [
2838
+ "if",
2839
+ "@entity.tourComplete",
2840
+ " — tour complete!",
2841
+ ""
2842
+ ]
2843
+ ],
2844
+ "type": "typography",
2845
+ "variant": "caption"
2469
2846
  }
2470
2847
  ],
2471
2848
  "direction": "horizontal",
2472
2849
  "gap": "sm",
2473
- "type": "stack"
2850
+ "type": "stack",
2851
+ "wrap": true
2474
2852
  },
2475
2853
  {
2476
2854
  "backgroundColor": "@config.backgroundColor",
@@ -2512,6 +2890,11 @@
2512
2890
  "edges": "@entity.edges",
2513
2891
  "height": "@config.height",
2514
2892
  "interactive": true,
2893
+ "keyMap": {
2894
+ "ArrowRight": "TOUR",
2895
+ "KeyR": "RESET",
2896
+ "Space": "TOUR"
2897
+ },
2515
2898
  "lighting": "@config.lighting",
2516
2899
  "mode": "3d",
2517
2900
  "nodes": [
@@ -2603,37 +2986,6 @@
2603
2986
  "content": "@entity.narration",
2604
2987
  "type": "typography",
2605
2988
  "variant": "body"
2606
- },
2607
- {
2608
- "content": [
2609
- "str/concat",
2610
- "Explored ",
2611
- [
2612
- "str/concat",
2613
- "",
2614
- [
2615
- "array/len",
2616
- "@entity.visitedIds"
2617
- ]
2618
- ],
2619
- " of ",
2620
- [
2621
- "str/concat",
2622
- "",
2623
- [
2624
- "array/len",
2625
- "@entity.stations"
2626
- ]
2627
- ],
2628
- [
2629
- "if",
2630
- "@entity.tourComplete",
2631
- " — tour complete!",
2632
- ""
2633
- ]
2634
- ],
2635
- "type": "typography",
2636
- "variant": "caption"
2637
2989
  }
2638
2990
  ],
2639
2991
  "direction": "vertical",
@@ -2766,28 +3118,131 @@
2766
3118
  {
2767
3119
  "children": [
2768
3120
  {
2769
- "content": "@entity.title",
2770
- "type": "typography",
2771
- "variant": "h4"
3121
+ "align": "start",
3122
+ "children": [
3123
+ {
3124
+ "children": [
3125
+ {
3126
+ "content": "@entity.title",
3127
+ "type": "typography",
3128
+ "variant": "h4"
3129
+ },
3130
+ [
3131
+ "if",
3132
+ [
3133
+ "==",
3134
+ "@config.summary",
3135
+ ""
3136
+ ],
3137
+ null,
3138
+ {
3139
+ "color": "muted",
3140
+ "content": "@config.summary",
3141
+ "type": "typography",
3142
+ "variant": "body2"
3143
+ }
3144
+ ]
3145
+ ],
3146
+ "direction": "vertical",
3147
+ "gap": "xs",
3148
+ "type": "stack"
3149
+ },
3150
+ {
3151
+ "label": [
3152
+ "if",
3153
+ "@entity.tourComplete",
3154
+ "Complete",
3155
+ [
3156
+ "str/concat",
3157
+ "Station ",
3158
+ [
3159
+ "str/concat",
3160
+ "",
3161
+ [
3162
+ "+",
3163
+ "@entity.selectedIndex",
3164
+ 1.0
3165
+ ]
3166
+ ],
3167
+ " of ",
3168
+ [
3169
+ "str/concat",
3170
+ "",
3171
+ [
3172
+ "array/len",
3173
+ "@entity.stations"
3174
+ ]
3175
+ ]
3176
+ ]
3177
+ ],
3178
+ "type": "badge",
3179
+ "variant": [
3180
+ "if",
3181
+ "@entity.tourComplete",
3182
+ "success",
3183
+ "neutral"
3184
+ ]
3185
+ }
3186
+ ],
3187
+ "direction": "horizontal",
3188
+ "gap": "md",
3189
+ "justify": "between",
3190
+ "type": "stack"
2772
3191
  },
2773
3192
  {
3193
+ "align": "center",
2774
3194
  "children": [
2775
3195
  {
2776
3196
  "action": "TOUR",
3197
+ "icon": "chevron-right",
2777
3198
  "label": "@config.tourLabel",
2778
3199
  "type": "button",
2779
3200
  "variant": "primary"
2780
3201
  },
2781
3202
  {
2782
3203
  "action": "RESET",
3204
+ "icon": "rotate-ccw",
2783
3205
  "label": "@config.resetLabel",
2784
3206
  "type": "button",
2785
3207
  "variant": "ghost"
3208
+ },
3209
+ {
3210
+ "color": "muted",
3211
+ "content": [
3212
+ "str/concat",
3213
+ "Explored ",
3214
+ [
3215
+ "str/concat",
3216
+ "",
3217
+ [
3218
+ "array/len",
3219
+ "@entity.visitedIds"
3220
+ ]
3221
+ ],
3222
+ " of ",
3223
+ [
3224
+ "str/concat",
3225
+ "",
3226
+ [
3227
+ "array/len",
3228
+ "@entity.stations"
3229
+ ]
3230
+ ],
3231
+ [
3232
+ "if",
3233
+ "@entity.tourComplete",
3234
+ " — tour complete!",
3235
+ ""
3236
+ ]
3237
+ ],
3238
+ "type": "typography",
3239
+ "variant": "caption"
2786
3240
  }
2787
3241
  ],
2788
3242
  "direction": "horizontal",
2789
3243
  "gap": "sm",
2790
- "type": "stack"
3244
+ "type": "stack",
3245
+ "wrap": true
2791
3246
  },
2792
3247
  {
2793
3248
  "backgroundColor": "@config.backgroundColor",
@@ -2829,6 +3284,11 @@
2829
3284
  "edges": "@entity.edges",
2830
3285
  "height": "@config.height",
2831
3286
  "interactive": true,
3287
+ "keyMap": {
3288
+ "ArrowRight": "TOUR",
3289
+ "KeyR": "RESET",
3290
+ "Space": "TOUR"
3291
+ },
2832
3292
  "lighting": "@config.lighting",
2833
3293
  "mode": "3d",
2834
3294
  "nodes": [
@@ -2920,37 +3380,6 @@
2920
3380
  "content": "@entity.narration",
2921
3381
  "type": "typography",
2922
3382
  "variant": "body"
2923
- },
2924
- {
2925
- "content": [
2926
- "str/concat",
2927
- "Explored ",
2928
- [
2929
- "str/concat",
2930
- "",
2931
- [
2932
- "array/len",
2933
- "@entity.visitedIds"
2934
- ]
2935
- ],
2936
- " of ",
2937
- [
2938
- "str/concat",
2939
- "",
2940
- [
2941
- "array/len",
2942
- "@entity.stations"
2943
- ]
2944
- ],
2945
- [
2946
- "if",
2947
- "@entity.tourComplete",
2948
- " — tour complete!",
2949
- ""
2950
- ]
2951
- ],
2952
- "type": "typography",
2953
- "variant": "caption"
2954
3383
  }
2955
3384
  ],
2956
3385
  "direction": "vertical",
@@ -3096,28 +3525,131 @@
3096
3525
  {
3097
3526
  "children": [
3098
3527
  {
3099
- "content": "@entity.title",
3100
- "type": "typography",
3101
- "variant": "h4"
3528
+ "align": "start",
3529
+ "children": [
3530
+ {
3531
+ "children": [
3532
+ {
3533
+ "content": "@entity.title",
3534
+ "type": "typography",
3535
+ "variant": "h4"
3536
+ },
3537
+ [
3538
+ "if",
3539
+ [
3540
+ "==",
3541
+ "@config.summary",
3542
+ ""
3543
+ ],
3544
+ null,
3545
+ {
3546
+ "color": "muted",
3547
+ "content": "@config.summary",
3548
+ "type": "typography",
3549
+ "variant": "body2"
3550
+ }
3551
+ ]
3552
+ ],
3553
+ "direction": "vertical",
3554
+ "gap": "xs",
3555
+ "type": "stack"
3556
+ },
3557
+ {
3558
+ "label": [
3559
+ "if",
3560
+ "@entity.tourComplete",
3561
+ "Complete",
3562
+ [
3563
+ "str/concat",
3564
+ "Station ",
3565
+ [
3566
+ "str/concat",
3567
+ "",
3568
+ [
3569
+ "+",
3570
+ "@entity.selectedIndex",
3571
+ 1.0
3572
+ ]
3573
+ ],
3574
+ " of ",
3575
+ [
3576
+ "str/concat",
3577
+ "",
3578
+ [
3579
+ "array/len",
3580
+ "@entity.stations"
3581
+ ]
3582
+ ]
3583
+ ]
3584
+ ],
3585
+ "type": "badge",
3586
+ "variant": [
3587
+ "if",
3588
+ "@entity.tourComplete",
3589
+ "success",
3590
+ "neutral"
3591
+ ]
3592
+ }
3593
+ ],
3594
+ "direction": "horizontal",
3595
+ "gap": "md",
3596
+ "justify": "between",
3597
+ "type": "stack"
3102
3598
  },
3103
3599
  {
3600
+ "align": "center",
3104
3601
  "children": [
3105
3602
  {
3106
3603
  "action": "TOUR",
3604
+ "icon": "chevron-right",
3107
3605
  "label": "@config.tourLabel",
3108
3606
  "type": "button",
3109
3607
  "variant": "primary"
3110
3608
  },
3111
3609
  {
3112
3610
  "action": "RESET",
3611
+ "icon": "rotate-ccw",
3113
3612
  "label": "@config.resetLabel",
3114
3613
  "type": "button",
3115
3614
  "variant": "ghost"
3615
+ },
3616
+ {
3617
+ "color": "muted",
3618
+ "content": [
3619
+ "str/concat",
3620
+ "Explored ",
3621
+ [
3622
+ "str/concat",
3623
+ "",
3624
+ [
3625
+ "array/len",
3626
+ "@entity.visitedIds"
3627
+ ]
3628
+ ],
3629
+ " of ",
3630
+ [
3631
+ "str/concat",
3632
+ "",
3633
+ [
3634
+ "array/len",
3635
+ "@entity.stations"
3636
+ ]
3637
+ ],
3638
+ [
3639
+ "if",
3640
+ "@entity.tourComplete",
3641
+ " — tour complete!",
3642
+ ""
3643
+ ]
3644
+ ],
3645
+ "type": "typography",
3646
+ "variant": "caption"
3116
3647
  }
3117
3648
  ],
3118
3649
  "direction": "horizontal",
3119
3650
  "gap": "sm",
3120
- "type": "stack"
3651
+ "type": "stack",
3652
+ "wrap": true
3121
3653
  },
3122
3654
  {
3123
3655
  "backgroundColor": "@config.backgroundColor",
@@ -3159,6 +3691,11 @@
3159
3691
  "edges": "@entity.edges",
3160
3692
  "height": "@config.height",
3161
3693
  "interactive": true,
3694
+ "keyMap": {
3695
+ "ArrowRight": "TOUR",
3696
+ "KeyR": "RESET",
3697
+ "Space": "TOUR"
3698
+ },
3162
3699
  "lighting": "@config.lighting",
3163
3700
  "mode": "3d",
3164
3701
  "nodes": [
@@ -3250,37 +3787,6 @@
3250
3787
  "content": "@entity.narration",
3251
3788
  "type": "typography",
3252
3789
  "variant": "body"
3253
- },
3254
- {
3255
- "content": [
3256
- "str/concat",
3257
- "Explored ",
3258
- [
3259
- "str/concat",
3260
- "",
3261
- [
3262
- "array/len",
3263
- "@entity.visitedIds"
3264
- ]
3265
- ],
3266
- " of ",
3267
- [
3268
- "str/concat",
3269
- "",
3270
- [
3271
- "array/len",
3272
- "@entity.stations"
3273
- ]
3274
- ],
3275
- [
3276
- "if",
3277
- "@entity.tourComplete",
3278
- " — tour complete!",
3279
- ""
3280
- ]
3281
- ],
3282
- "type": "typography",
3283
- "variant": "caption"
3284
3790
  }
3285
3791
  ],
3286
3792
  "direction": "vertical",