@almadar/std 16.241.0 → 16.243.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 (109) hide show
  1. package/behaviors/behaviors-registry.json +4650 -535
  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 +136 -0
  8. package/behaviors/lolo/infra/atoms/std-page-treat.lolo +59 -0
  9. package/behaviors/lolo/infra/atoms/std-page-watch.lolo +88 -0
  10. package/behaviors/lolo/ui/core/atoms/std-book-reader.lolo +25 -1
  11. package/behaviors/lolo/ui/core/atoms/std-card-grid.lolo +9 -0
  12. package/behaviors/lolo/ui/core/atoms/std-doc-page.lolo +153 -0
  13. package/behaviors/lolo/ui/learning/atoms/std-learn-arrangement.lolo +124 -92
  14. package/behaviors/lolo/ui/learning/atoms/std-learn-classify.lolo +114 -55
  15. package/behaviors/lolo/ui/learning/atoms/std-learn-compare.lolo +40 -14
  16. package/behaviors/lolo/ui/learning/atoms/std-learn-coupled-sim.lolo +363 -123
  17. package/behaviors/lolo/ui/learning/atoms/std-learn-derivation.lolo +93 -48
  18. package/behaviors/lolo/ui/learning/atoms/std-learn-diagram.lolo +60 -28
  19. package/behaviors/lolo/ui/learning/atoms/std-learn-doser.lolo +193 -96
  20. package/behaviors/lolo/ui/learning/atoms/std-learn-estimate.lolo +75 -32
  21. package/behaviors/lolo/ui/learning/atoms/std-learn-goal-seek.lolo +142 -86
  22. package/behaviors/lolo/ui/learning/atoms/std-learn-grid-sim.lolo +266 -98
  23. package/behaviors/lolo/ui/learning/atoms/std-learn-hotspot.lolo +103 -65
  24. package/behaviors/lolo/ui/learning/atoms/std-learn-live-sim.lolo +223 -109
  25. package/behaviors/lolo/ui/learning/atoms/std-learn-measure.lolo +232 -64
  26. package/behaviors/lolo/ui/learning/atoms/std-learn-param-explorer.lolo +69 -29
  27. package/behaviors/lolo/ui/learning/atoms/std-learn-perturb.lolo +363 -123
  28. package/behaviors/lolo/ui/learning/atoms/std-learn-predict.lolo +73 -41
  29. package/behaviors/lolo/ui/learning/atoms/std-learn-sample-accumulator.lolo +96 -38
  30. package/behaviors/lolo/ui/learning/atoms/std-learn-sandbox.lolo +65 -45
  31. package/behaviors/lolo/ui/learning/atoms/std-learn-scatter-fit.lolo +243 -117
  32. package/behaviors/lolo/ui/learning/atoms/std-learn-scenario.lolo +76 -28
  33. package/behaviors/lolo/ui/learning/atoms/std-learn-sim-3d.lolo +228 -109
  34. package/behaviors/lolo/ui/learning/atoms/std-learn-speed-drill.lolo +95 -44
  35. package/behaviors/lolo/ui/learning/atoms/std-learn-stepper.lolo +199 -125
  36. package/behaviors/lolo/ui/learning/atoms/std-learn-tour-3d.lolo +92 -48
  37. package/behaviors/lolo/ui/learning/atoms/std-learn-trace-player.lolo +239 -78
  38. package/behaviors/lolo/ui/learning/atoms/std-learn-transport.lolo +147 -38
  39. package/behaviors/lolo/ui/learning/atoms/std-learn-tree.lolo +123 -58
  40. package/behaviors/lolo/ui/learning/atoms/ui-algo-graph-canvas.lolo +22 -0
  41. package/behaviors/lolo/ui/learning/atoms/ui-algorithm-canvas.lolo +26 -0
  42. package/behaviors/lolo/ui/learning/atoms/ui-biology-canvas.lolo +26 -0
  43. package/behaviors/lolo/ui/learning/atoms/ui-chemistry-canvas.lolo +27 -1
  44. package/behaviors/lolo/ui/learning/atoms/ui-learning-canvas.lolo +27 -1
  45. package/behaviors/lolo/ui/learning/atoms/ui-math-canvas.lolo +29 -9
  46. package/behaviors/lolo/ui/learning/atoms/ui-physics-canvas.lolo +26 -0
  47. package/behaviors/lolo-behavior-contracts.json +1 -1
  48. package/behaviors/registry/agent/atoms/std-agent-memory.orb +372 -2
  49. package/behaviors/registry/agent/atoms/std-agent-session.orb +4752 -348
  50. package/behaviors/registry/agent/atoms/std-agent-tool-loop.orb +54 -42
  51. package/behaviors/registry/agent/organisms/std-agent-assistant.orb +356 -122
  52. package/behaviors/registry/factory-signatures.json +1 -1
  53. package/behaviors/registry/infra/atoms/std-page-open.orb +435 -0
  54. package/behaviors/registry/infra/atoms/std-page-search.orb +885 -0
  55. package/behaviors/registry/infra/atoms/std-page-treat.orb +494 -0
  56. package/behaviors/registry/infra/atoms/std-page-watch.orb +572 -0
  57. package/behaviors/registry/ui/core/atoms/std-book-reader.orb +119 -0
  58. package/behaviors/registry/ui/core/atoms/std-card-grid.orb +61 -0
  59. package/behaviors/registry/ui/core/atoms/std-doc-page.orb +594 -0
  60. package/behaviors/registry/ui/learning/atoms/std-learn-arrangement.orb +903 -369
  61. package/behaviors/registry/ui/learning/atoms/std-learn-classify.orb +1002 -232
  62. package/behaviors/registry/ui/learning/atoms/std-learn-compare.orb +253 -74
  63. package/behaviors/registry/ui/learning/atoms/std-learn-coupled-sim.orb +3624 -921
  64. package/behaviors/registry/ui/learning/atoms/std-learn-derivation.orb +685 -144
  65. package/behaviors/registry/ui/learning/atoms/std-learn-diagram.orb +404 -52
  66. package/behaviors/registry/ui/learning/atoms/std-learn-doser.orb +1787 -210
  67. package/behaviors/registry/ui/learning/atoms/std-learn-estimate.orb +699 -71
  68. package/behaviors/registry/ui/learning/atoms/std-learn-goal-seek.orb +1102 -578
  69. package/behaviors/registry/ui/learning/atoms/std-learn-grid-sim.orb +2760 -872
  70. package/behaviors/registry/ui/learning/atoms/std-learn-hotspot.orb +689 -152
  71. package/behaviors/registry/ui/learning/atoms/std-learn-live-sim.orb +1431 -633
  72. package/behaviors/registry/ui/learning/atoms/std-learn-measure.orb +2485 -512
  73. package/behaviors/registry/ui/learning/atoms/std-learn-param-explorer.orb +501 -197
  74. package/behaviors/registry/ui/learning/atoms/std-learn-perturb.orb +3642 -928
  75. package/behaviors/registry/ui/learning/atoms/std-learn-predict.orb +705 -125
  76. package/behaviors/registry/ui/learning/atoms/std-learn-sample-accumulator.orb +624 -114
  77. package/behaviors/registry/ui/learning/atoms/std-learn-sandbox.orb +405 -153
  78. package/behaviors/registry/ui/learning/atoms/std-learn-scatter-fit.orb +1911 -611
  79. package/behaviors/registry/ui/learning/atoms/std-learn-scenario.orb +436 -128
  80. package/behaviors/registry/ui/learning/atoms/std-learn-sim-3d.orb +2482 -485
  81. package/behaviors/registry/ui/learning/atoms/std-learn-speed-drill.orb +896 -192
  82. package/behaviors/registry/ui/learning/atoms/std-learn-stepper.orb +2001 -759
  83. package/behaviors/registry/ui/learning/atoms/std-learn-tour-3d.orb +734 -228
  84. package/behaviors/registry/ui/learning/atoms/std-learn-trace-player.orb +2501 -764
  85. package/behaviors/registry/ui/learning/atoms/std-learn-transport.orb +1591 -173
  86. package/behaviors/registry/ui/learning/atoms/std-learn-tree.orb +883 -122
  87. package/behaviors/registry/ui/learning/atoms/ui-algo-graph-canvas.orb +176 -0
  88. package/behaviors/registry/ui/learning/atoms/ui-algorithm-canvas.orb +211 -0
  89. package/behaviors/registry/ui/learning/atoms/ui-biology-canvas.orb +211 -0
  90. package/behaviors/registry/ui/learning/atoms/ui-chemistry-canvas.orb +212 -1
  91. package/behaviors/registry/ui/learning/atoms/ui-learning-canvas.orb +212 -1
  92. package/behaviors/registry/ui/learning/atoms/ui-math-canvas.orb +203 -9
  93. package/behaviors/registry/ui/learning/atoms/ui-physics-canvas.orb +211 -0
  94. package/behaviors/signatures.lolo +325 -655
  95. package/dist/behaviors/exports-reader.js +16092 -9747
  96. package/dist/behaviors/functions/index.d.ts +1052 -136
  97. package/dist/behaviors/functions/index.js +16063 -9745
  98. package/dist/behaviors/index.d.ts +1 -1
  99. package/dist/behaviors/index.js +16093 -9748
  100. package/dist/behaviors/query.js +16092 -9747
  101. package/dist/behaviors-embeddings.hash.json +3 -3
  102. package/dist/behaviors-embeddings.json +45 -25
  103. package/dist/behaviors-registry.json +4650 -535
  104. package/dist/index.d.ts +1 -1
  105. package/dist/index.js +16093 -9748
  106. package/dist/knob-embeddings.hash.json +3 -3
  107. package/dist/knob-embeddings.json +607 -263
  108. package/dist/registry/factory-signatures.json +1 -1
  109. package/package.json +3 -3
@@ -516,6 +516,13 @@
516
516
  "tier": "presentation",
517
517
  "type": "string"
518
518
  },
519
+ "summary": {
520
+ "default": "",
521
+ "description": "One line under the title saying what is being derived (keep it under ~65 characters). Empty shows no line.",
522
+ "label": "Concept",
523
+ "tier": "presentation",
524
+ "type": "string"
525
+ },
519
526
  "title": {
520
527
  "default": "Derivation Lab",
521
528
  "description": "Title shown above the derivation panel.",
@@ -840,9 +847,65 @@
840
847
  "@entity.renderChildren",
841
848
  [
842
849
  {
843
- "content": "@entity.title",
844
- "type": "typography",
845
- "variant": "h4"
850
+ "align": "start",
851
+ "children": [
852
+ {
853
+ "children": [
854
+ {
855
+ "content": "@entity.title",
856
+ "type": "typography",
857
+ "variant": "h4"
858
+ },
859
+ [
860
+ "if",
861
+ [
862
+ "==",
863
+ "@config.summary",
864
+ ""
865
+ ],
866
+ null,
867
+ {
868
+ "color": "muted",
869
+ "content": "@config.summary",
870
+ "type": "typography",
871
+ "variant": "body2"
872
+ }
873
+ ]
874
+ ],
875
+ "direction": "vertical",
876
+ "gap": "xs",
877
+ "type": "stack"
878
+ },
879
+ {
880
+ "label": [
881
+ "if",
882
+ "@entity.goalReached",
883
+ "Goal reached",
884
+ [
885
+ "if",
886
+ "@entity.running",
887
+ "Auto-stepping",
888
+ "In progress"
889
+ ]
890
+ ],
891
+ "type": "badge",
892
+ "variant": [
893
+ "if",
894
+ "@entity.goalReached",
895
+ "success",
896
+ [
897
+ "if",
898
+ "@entity.running",
899
+ "primary",
900
+ "neutral"
901
+ ]
902
+ ]
903
+ }
904
+ ],
905
+ "direction": "horizontal",
906
+ "gap": "md",
907
+ "justify": "between",
908
+ "type": "stack"
846
909
  },
847
910
  {
848
911
  "content": [
@@ -861,6 +924,7 @@
861
924
  "fn",
862
925
  "line",
863
926
  {
927
+ "align": "center",
864
928
  "children": [
865
929
  {
866
930
  "label": "@line.badgeLabel",
@@ -892,6 +956,7 @@
892
956
  "type": "stack"
893
957
  },
894
958
  {
959
+ "align": "center",
895
960
  "children": [
896
961
  "array/map",
897
962
  "@config.candidates",
@@ -903,54 +968,78 @@
903
968
  "actionPayload": {
904
969
  "candidateKey": "@c.key"
905
970
  },
971
+ "disabled": "@entity.goalReached",
906
972
  "label": "@c.label",
973
+ "size": "lg",
907
974
  "type": "button",
908
- "variant": "primary"
975
+ "variant": "secondary"
909
976
  }
910
977
  ]
911
978
  ],
912
979
  "direction": "horizontal",
913
980
  "gap": "sm",
914
- "type": "stack"
981
+ "type": "stack",
982
+ "wrap": true
915
983
  },
916
984
  {
985
+ "align": "center",
917
986
  "children": [
918
- {
919
- "action": "TOGGLE_RUN",
920
- "label": [
921
- "if",
922
- "@entity.running",
923
- "Pause",
924
- "Run"
925
- ],
926
- "type": "button",
927
- "variant": "secondary"
928
- },
987
+ [
988
+ "if",
989
+ "@entity.running",
990
+ {
991
+ "action": "TOGGLE_RUN",
992
+ "aria-pressed": "true",
993
+ "icon": "pause",
994
+ "label": "Pause",
995
+ "type": "button",
996
+ "variant": "primary"
997
+ },
998
+ {
999
+ "action": "TOGGLE_RUN",
1000
+ "aria-pressed": "false",
1001
+ "disabled": "@entity.goalReached",
1002
+ "icon": "play",
1003
+ "label": "Run",
1004
+ "type": "button",
1005
+ "variant": "primary"
1006
+ }
1007
+ ],
929
1008
  {
930
1009
  "action": "RESET",
1010
+ "icon": "rotate-ccw",
931
1011
  "label": "@config.resetLabel",
932
1012
  "type": "button",
933
1013
  "variant": "ghost"
1014
+ },
1015
+ {
1016
+ "color": "muted",
1017
+ "content": [
1018
+ "str/concat",
1019
+ [
1020
+ "array/len",
1021
+ "@entity.lines"
1022
+ ],
1023
+ " lines"
1024
+ ],
1025
+ "type": "typography",
1026
+ "variant": "caption"
934
1027
  }
935
1028
  ],
936
1029
  "direction": "horizontal",
937
1030
  "gap": "sm",
938
- "type": "stack"
939
- },
940
- {
941
- "content": "@entity.narration",
942
- "type": "typography",
943
- "variant": "caption"
1031
+ "type": "stack",
1032
+ "wrap": true
944
1033
  },
945
1034
  {
946
1035
  "content": [
947
1036
  "if",
948
1037
  "@entity.goalReached",
949
1038
  "@config.goalReachedMessage",
950
- ""
1039
+ "@entity.narration"
951
1040
  ],
952
1041
  "type": "typography",
953
- "variant": "caption"
1042
+ "variant": "body"
954
1043
  }
955
1044
  ]
956
1045
  ],
@@ -986,6 +1075,48 @@
986
1075
  ],
987
1076
  "to": "idle"
988
1077
  },
1078
+ {
1079
+ "effects": [
1080
+ [
1081
+ "set",
1082
+ "@entity.active",
1083
+ false
1084
+ ],
1085
+ [
1086
+ "set",
1087
+ "@entity.running",
1088
+ false
1089
+ ],
1090
+ [
1091
+ "render-ui",
1092
+ "main",
1093
+ null
1094
+ ]
1095
+ ],
1096
+ "event": "MODE_SELECTED",
1097
+ "eventId": "evt_01M0CGJFW96K8FBC6WV4D341YQ",
1098
+ "from": "idle",
1099
+ "guard": [
1100
+ "and",
1101
+ [
1102
+ "not",
1103
+ [
1104
+ "==",
1105
+ "@config.matchMode",
1106
+ ""
1107
+ ]
1108
+ ],
1109
+ [
1110
+ "not",
1111
+ [
1112
+ "==",
1113
+ "@payload.mode",
1114
+ "@config.matchMode"
1115
+ ]
1116
+ ]
1117
+ ],
1118
+ "to": "idle"
1119
+ },
989
1120
  {
990
1121
  "effects": [
991
1122
  [
@@ -1033,9 +1164,65 @@
1033
1164
  "@entity.renderChildren",
1034
1165
  [
1035
1166
  {
1036
- "content": "@entity.title",
1037
- "type": "typography",
1038
- "variant": "h4"
1167
+ "align": "start",
1168
+ "children": [
1169
+ {
1170
+ "children": [
1171
+ {
1172
+ "content": "@entity.title",
1173
+ "type": "typography",
1174
+ "variant": "h4"
1175
+ },
1176
+ [
1177
+ "if",
1178
+ [
1179
+ "==",
1180
+ "@config.summary",
1181
+ ""
1182
+ ],
1183
+ null,
1184
+ {
1185
+ "color": "muted",
1186
+ "content": "@config.summary",
1187
+ "type": "typography",
1188
+ "variant": "body2"
1189
+ }
1190
+ ]
1191
+ ],
1192
+ "direction": "vertical",
1193
+ "gap": "xs",
1194
+ "type": "stack"
1195
+ },
1196
+ {
1197
+ "label": [
1198
+ "if",
1199
+ "@entity.goalReached",
1200
+ "Goal reached",
1201
+ [
1202
+ "if",
1203
+ "@entity.running",
1204
+ "Auto-stepping",
1205
+ "In progress"
1206
+ ]
1207
+ ],
1208
+ "type": "badge",
1209
+ "variant": [
1210
+ "if",
1211
+ "@entity.goalReached",
1212
+ "success",
1213
+ [
1214
+ "if",
1215
+ "@entity.running",
1216
+ "primary",
1217
+ "neutral"
1218
+ ]
1219
+ ]
1220
+ }
1221
+ ],
1222
+ "direction": "horizontal",
1223
+ "gap": "md",
1224
+ "justify": "between",
1225
+ "type": "stack"
1039
1226
  },
1040
1227
  {
1041
1228
  "content": [
@@ -1054,6 +1241,7 @@
1054
1241
  "fn",
1055
1242
  "line",
1056
1243
  {
1244
+ "align": "center",
1057
1245
  "children": [
1058
1246
  {
1059
1247
  "label": "@line.badgeLabel",
@@ -1085,6 +1273,7 @@
1085
1273
  "type": "stack"
1086
1274
  },
1087
1275
  {
1276
+ "align": "center",
1088
1277
  "children": [
1089
1278
  "array/map",
1090
1279
  "@config.candidates",
@@ -1096,54 +1285,78 @@
1096
1285
  "actionPayload": {
1097
1286
  "candidateKey": "@c.key"
1098
1287
  },
1288
+ "disabled": "@entity.goalReached",
1099
1289
  "label": "@c.label",
1290
+ "size": "lg",
1100
1291
  "type": "button",
1101
- "variant": "primary"
1292
+ "variant": "secondary"
1102
1293
  }
1103
1294
  ]
1104
1295
  ],
1105
1296
  "direction": "horizontal",
1106
1297
  "gap": "sm",
1107
- "type": "stack"
1298
+ "type": "stack",
1299
+ "wrap": true
1108
1300
  },
1109
1301
  {
1302
+ "align": "center",
1110
1303
  "children": [
1111
- {
1112
- "action": "TOGGLE_RUN",
1113
- "label": [
1114
- "if",
1115
- "@entity.running",
1116
- "Pause",
1117
- "Run"
1118
- ],
1119
- "type": "button",
1120
- "variant": "secondary"
1121
- },
1304
+ [
1305
+ "if",
1306
+ "@entity.running",
1307
+ {
1308
+ "action": "TOGGLE_RUN",
1309
+ "aria-pressed": "true",
1310
+ "icon": "pause",
1311
+ "label": "Pause",
1312
+ "type": "button",
1313
+ "variant": "primary"
1314
+ },
1315
+ {
1316
+ "action": "TOGGLE_RUN",
1317
+ "aria-pressed": "false",
1318
+ "disabled": "@entity.goalReached",
1319
+ "icon": "play",
1320
+ "label": "Run",
1321
+ "type": "button",
1322
+ "variant": "primary"
1323
+ }
1324
+ ],
1122
1325
  {
1123
1326
  "action": "RESET",
1327
+ "icon": "rotate-ccw",
1124
1328
  "label": "@config.resetLabel",
1125
1329
  "type": "button",
1126
1330
  "variant": "ghost"
1331
+ },
1332
+ {
1333
+ "color": "muted",
1334
+ "content": [
1335
+ "str/concat",
1336
+ [
1337
+ "array/len",
1338
+ "@entity.lines"
1339
+ ],
1340
+ " lines"
1341
+ ],
1342
+ "type": "typography",
1343
+ "variant": "caption"
1127
1344
  }
1128
1345
  ],
1129
1346
  "direction": "horizontal",
1130
1347
  "gap": "sm",
1131
- "type": "stack"
1132
- },
1133
- {
1134
- "content": "@entity.narration",
1135
- "type": "typography",
1136
- "variant": "caption"
1348
+ "type": "stack",
1349
+ "wrap": true
1137
1350
  },
1138
1351
  {
1139
1352
  "content": [
1140
1353
  "if",
1141
1354
  "@entity.goalReached",
1142
1355
  "@config.goalReachedMessage",
1143
- ""
1356
+ "@entity.narration"
1144
1357
  ],
1145
1358
  "type": "typography",
1146
- "variant": "caption"
1359
+ "variant": "body"
1147
1360
  }
1148
1361
  ]
1149
1362
  ],
@@ -1545,9 +1758,65 @@
1545
1758
  "@entity.renderChildren",
1546
1759
  [
1547
1760
  {
1548
- "content": "@entity.title",
1549
- "type": "typography",
1550
- "variant": "h4"
1761
+ "align": "start",
1762
+ "children": [
1763
+ {
1764
+ "children": [
1765
+ {
1766
+ "content": "@entity.title",
1767
+ "type": "typography",
1768
+ "variant": "h4"
1769
+ },
1770
+ [
1771
+ "if",
1772
+ [
1773
+ "==",
1774
+ "@config.summary",
1775
+ ""
1776
+ ],
1777
+ null,
1778
+ {
1779
+ "color": "muted",
1780
+ "content": "@config.summary",
1781
+ "type": "typography",
1782
+ "variant": "body2"
1783
+ }
1784
+ ]
1785
+ ],
1786
+ "direction": "vertical",
1787
+ "gap": "xs",
1788
+ "type": "stack"
1789
+ },
1790
+ {
1791
+ "label": [
1792
+ "if",
1793
+ "@entity.goalReached",
1794
+ "Goal reached",
1795
+ [
1796
+ "if",
1797
+ "@entity.running",
1798
+ "Auto-stepping",
1799
+ "In progress"
1800
+ ]
1801
+ ],
1802
+ "type": "badge",
1803
+ "variant": [
1804
+ "if",
1805
+ "@entity.goalReached",
1806
+ "success",
1807
+ [
1808
+ "if",
1809
+ "@entity.running",
1810
+ "primary",
1811
+ "neutral"
1812
+ ]
1813
+ ]
1814
+ }
1815
+ ],
1816
+ "direction": "horizontal",
1817
+ "gap": "md",
1818
+ "justify": "between",
1819
+ "type": "stack"
1551
1820
  },
1552
1821
  {
1553
1822
  "content": [
@@ -1566,6 +1835,7 @@
1566
1835
  "fn",
1567
1836
  "line",
1568
1837
  {
1838
+ "align": "center",
1569
1839
  "children": [
1570
1840
  {
1571
1841
  "label": "@line.badgeLabel",
@@ -1597,6 +1867,7 @@
1597
1867
  "type": "stack"
1598
1868
  },
1599
1869
  {
1870
+ "align": "center",
1600
1871
  "children": [
1601
1872
  "array/map",
1602
1873
  "@config.candidates",
@@ -1608,54 +1879,78 @@
1608
1879
  "actionPayload": {
1609
1880
  "candidateKey": "@c.key"
1610
1881
  },
1882
+ "disabled": "@entity.goalReached",
1611
1883
  "label": "@c.label",
1884
+ "size": "lg",
1612
1885
  "type": "button",
1613
- "variant": "primary"
1886
+ "variant": "secondary"
1614
1887
  }
1615
1888
  ]
1616
1889
  ],
1617
1890
  "direction": "horizontal",
1618
1891
  "gap": "sm",
1619
- "type": "stack"
1892
+ "type": "stack",
1893
+ "wrap": true
1620
1894
  },
1621
1895
  {
1896
+ "align": "center",
1622
1897
  "children": [
1623
- {
1624
- "action": "TOGGLE_RUN",
1625
- "label": [
1626
- "if",
1627
- "@entity.running",
1628
- "Pause",
1629
- "Run"
1630
- ],
1631
- "type": "button",
1632
- "variant": "secondary"
1633
- },
1898
+ [
1899
+ "if",
1900
+ "@entity.running",
1901
+ {
1902
+ "action": "TOGGLE_RUN",
1903
+ "aria-pressed": "true",
1904
+ "icon": "pause",
1905
+ "label": "Pause",
1906
+ "type": "button",
1907
+ "variant": "primary"
1908
+ },
1909
+ {
1910
+ "action": "TOGGLE_RUN",
1911
+ "aria-pressed": "false",
1912
+ "disabled": "@entity.goalReached",
1913
+ "icon": "play",
1914
+ "label": "Run",
1915
+ "type": "button",
1916
+ "variant": "primary"
1917
+ }
1918
+ ],
1634
1919
  {
1635
1920
  "action": "RESET",
1921
+ "icon": "rotate-ccw",
1636
1922
  "label": "@config.resetLabel",
1637
1923
  "type": "button",
1638
1924
  "variant": "ghost"
1925
+ },
1926
+ {
1927
+ "color": "muted",
1928
+ "content": [
1929
+ "str/concat",
1930
+ [
1931
+ "array/len",
1932
+ "@entity.lines"
1933
+ ],
1934
+ " lines"
1935
+ ],
1936
+ "type": "typography",
1937
+ "variant": "caption"
1639
1938
  }
1640
1939
  ],
1641
1940
  "direction": "horizontal",
1642
1941
  "gap": "sm",
1643
- "type": "stack"
1644
- },
1645
- {
1646
- "content": "@entity.narration",
1647
- "type": "typography",
1648
- "variant": "caption"
1942
+ "type": "stack",
1943
+ "wrap": true
1649
1944
  },
1650
1945
  {
1651
1946
  "content": [
1652
1947
  "if",
1653
1948
  "@entity.goalReached",
1654
1949
  "@config.goalReachedMessage",
1655
- ""
1950
+ "@entity.narration"
1656
1951
  ],
1657
1952
  "type": "typography",
1658
- "variant": "caption"
1953
+ "variant": "body"
1659
1954
  }
1660
1955
  ]
1661
1956
  ],
@@ -1734,9 +2029,65 @@
1734
2029
  "@entity.renderChildren",
1735
2030
  [
1736
2031
  {
1737
- "content": "@entity.title",
1738
- "type": "typography",
1739
- "variant": "h4"
2032
+ "align": "start",
2033
+ "children": [
2034
+ {
2035
+ "children": [
2036
+ {
2037
+ "content": "@entity.title",
2038
+ "type": "typography",
2039
+ "variant": "h4"
2040
+ },
2041
+ [
2042
+ "if",
2043
+ [
2044
+ "==",
2045
+ "@config.summary",
2046
+ ""
2047
+ ],
2048
+ null,
2049
+ {
2050
+ "color": "muted",
2051
+ "content": "@config.summary",
2052
+ "type": "typography",
2053
+ "variant": "body2"
2054
+ }
2055
+ ]
2056
+ ],
2057
+ "direction": "vertical",
2058
+ "gap": "xs",
2059
+ "type": "stack"
2060
+ },
2061
+ {
2062
+ "label": [
2063
+ "if",
2064
+ "@entity.goalReached",
2065
+ "Goal reached",
2066
+ [
2067
+ "if",
2068
+ "@entity.running",
2069
+ "Auto-stepping",
2070
+ "In progress"
2071
+ ]
2072
+ ],
2073
+ "type": "badge",
2074
+ "variant": [
2075
+ "if",
2076
+ "@entity.goalReached",
2077
+ "success",
2078
+ [
2079
+ "if",
2080
+ "@entity.running",
2081
+ "primary",
2082
+ "neutral"
2083
+ ]
2084
+ ]
2085
+ }
2086
+ ],
2087
+ "direction": "horizontal",
2088
+ "gap": "md",
2089
+ "justify": "between",
2090
+ "type": "stack"
1740
2091
  },
1741
2092
  {
1742
2093
  "content": [
@@ -1755,6 +2106,7 @@
1755
2106
  "fn",
1756
2107
  "line",
1757
2108
  {
2109
+ "align": "center",
1758
2110
  "children": [
1759
2111
  {
1760
2112
  "label": "@line.badgeLabel",
@@ -1786,6 +2138,7 @@
1786
2138
  "type": "stack"
1787
2139
  },
1788
2140
  {
2141
+ "align": "center",
1789
2142
  "children": [
1790
2143
  "array/map",
1791
2144
  "@config.candidates",
@@ -1797,54 +2150,78 @@
1797
2150
  "actionPayload": {
1798
2151
  "candidateKey": "@c.key"
1799
2152
  },
2153
+ "disabled": "@entity.goalReached",
1800
2154
  "label": "@c.label",
2155
+ "size": "lg",
1801
2156
  "type": "button",
1802
- "variant": "primary"
2157
+ "variant": "secondary"
1803
2158
  }
1804
2159
  ]
1805
2160
  ],
1806
2161
  "direction": "horizontal",
1807
2162
  "gap": "sm",
1808
- "type": "stack"
2163
+ "type": "stack",
2164
+ "wrap": true
1809
2165
  },
1810
2166
  {
2167
+ "align": "center",
1811
2168
  "children": [
1812
- {
1813
- "action": "TOGGLE_RUN",
1814
- "label": [
1815
- "if",
1816
- "@entity.running",
1817
- "Pause",
1818
- "Run"
1819
- ],
1820
- "type": "button",
1821
- "variant": "secondary"
1822
- },
2169
+ [
2170
+ "if",
2171
+ "@entity.running",
2172
+ {
2173
+ "action": "TOGGLE_RUN",
2174
+ "aria-pressed": "true",
2175
+ "icon": "pause",
2176
+ "label": "Pause",
2177
+ "type": "button",
2178
+ "variant": "primary"
2179
+ },
2180
+ {
2181
+ "action": "TOGGLE_RUN",
2182
+ "aria-pressed": "false",
2183
+ "disabled": "@entity.goalReached",
2184
+ "icon": "play",
2185
+ "label": "Run",
2186
+ "type": "button",
2187
+ "variant": "primary"
2188
+ }
2189
+ ],
1823
2190
  {
1824
2191
  "action": "RESET",
2192
+ "icon": "rotate-ccw",
1825
2193
  "label": "@config.resetLabel",
1826
2194
  "type": "button",
1827
2195
  "variant": "ghost"
2196
+ },
2197
+ {
2198
+ "color": "muted",
2199
+ "content": [
2200
+ "str/concat",
2201
+ [
2202
+ "array/len",
2203
+ "@entity.lines"
2204
+ ],
2205
+ " lines"
2206
+ ],
2207
+ "type": "typography",
2208
+ "variant": "caption"
1828
2209
  }
1829
2210
  ],
1830
2211
  "direction": "horizontal",
1831
2212
  "gap": "sm",
1832
- "type": "stack"
1833
- },
1834
- {
1835
- "content": "@entity.narration",
1836
- "type": "typography",
1837
- "variant": "caption"
2213
+ "type": "stack",
2214
+ "wrap": true
1838
2215
  },
1839
2216
  {
1840
2217
  "content": [
1841
2218
  "if",
1842
2219
  "@entity.goalReached",
1843
2220
  "@config.goalReachedMessage",
1844
- ""
2221
+ "@entity.narration"
1845
2222
  ],
1846
2223
  "type": "typography",
1847
- "variant": "caption"
2224
+ "variant": "body"
1848
2225
  }
1849
2226
  ]
1850
2227
  ],
@@ -1930,9 +2307,65 @@
1930
2307
  "@entity.renderChildren",
1931
2308
  [
1932
2309
  {
1933
- "content": "@entity.title",
1934
- "type": "typography",
1935
- "variant": "h4"
2310
+ "align": "start",
2311
+ "children": [
2312
+ {
2313
+ "children": [
2314
+ {
2315
+ "content": "@entity.title",
2316
+ "type": "typography",
2317
+ "variant": "h4"
2318
+ },
2319
+ [
2320
+ "if",
2321
+ [
2322
+ "==",
2323
+ "@config.summary",
2324
+ ""
2325
+ ],
2326
+ null,
2327
+ {
2328
+ "color": "muted",
2329
+ "content": "@config.summary",
2330
+ "type": "typography",
2331
+ "variant": "body2"
2332
+ }
2333
+ ]
2334
+ ],
2335
+ "direction": "vertical",
2336
+ "gap": "xs",
2337
+ "type": "stack"
2338
+ },
2339
+ {
2340
+ "label": [
2341
+ "if",
2342
+ "@entity.goalReached",
2343
+ "Goal reached",
2344
+ [
2345
+ "if",
2346
+ "@entity.running",
2347
+ "Auto-stepping",
2348
+ "In progress"
2349
+ ]
2350
+ ],
2351
+ "type": "badge",
2352
+ "variant": [
2353
+ "if",
2354
+ "@entity.goalReached",
2355
+ "success",
2356
+ [
2357
+ "if",
2358
+ "@entity.running",
2359
+ "primary",
2360
+ "neutral"
2361
+ ]
2362
+ ]
2363
+ }
2364
+ ],
2365
+ "direction": "horizontal",
2366
+ "gap": "md",
2367
+ "justify": "between",
2368
+ "type": "stack"
1936
2369
  },
1937
2370
  {
1938
2371
  "content": [
@@ -1951,6 +2384,7 @@
1951
2384
  "fn",
1952
2385
  "line",
1953
2386
  {
2387
+ "align": "center",
1954
2388
  "children": [
1955
2389
  {
1956
2390
  "label": "@line.badgeLabel",
@@ -1982,6 +2416,7 @@
1982
2416
  "type": "stack"
1983
2417
  },
1984
2418
  {
2419
+ "align": "center",
1985
2420
  "children": [
1986
2421
  "array/map",
1987
2422
  "@config.candidates",
@@ -1993,54 +2428,78 @@
1993
2428
  "actionPayload": {
1994
2429
  "candidateKey": "@c.key"
1995
2430
  },
2431
+ "disabled": "@entity.goalReached",
1996
2432
  "label": "@c.label",
2433
+ "size": "lg",
1997
2434
  "type": "button",
1998
- "variant": "primary"
2435
+ "variant": "secondary"
1999
2436
  }
2000
2437
  ]
2001
2438
  ],
2002
2439
  "direction": "horizontal",
2003
2440
  "gap": "sm",
2004
- "type": "stack"
2441
+ "type": "stack",
2442
+ "wrap": true
2005
2443
  },
2006
2444
  {
2445
+ "align": "center",
2007
2446
  "children": [
2008
- {
2009
- "action": "TOGGLE_RUN",
2010
- "label": [
2011
- "if",
2012
- "@entity.running",
2013
- "Pause",
2014
- "Run"
2015
- ],
2016
- "type": "button",
2017
- "variant": "secondary"
2018
- },
2447
+ [
2448
+ "if",
2449
+ "@entity.running",
2450
+ {
2451
+ "action": "TOGGLE_RUN",
2452
+ "aria-pressed": "true",
2453
+ "icon": "pause",
2454
+ "label": "Pause",
2455
+ "type": "button",
2456
+ "variant": "primary"
2457
+ },
2458
+ {
2459
+ "action": "TOGGLE_RUN",
2460
+ "aria-pressed": "false",
2461
+ "disabled": "@entity.goalReached",
2462
+ "icon": "play",
2463
+ "label": "Run",
2464
+ "type": "button",
2465
+ "variant": "primary"
2466
+ }
2467
+ ],
2019
2468
  {
2020
2469
  "action": "RESET",
2470
+ "icon": "rotate-ccw",
2021
2471
  "label": "@config.resetLabel",
2022
2472
  "type": "button",
2023
2473
  "variant": "ghost"
2474
+ },
2475
+ {
2476
+ "color": "muted",
2477
+ "content": [
2478
+ "str/concat",
2479
+ [
2480
+ "array/len",
2481
+ "@entity.lines"
2482
+ ],
2483
+ " lines"
2484
+ ],
2485
+ "type": "typography",
2486
+ "variant": "caption"
2024
2487
  }
2025
2488
  ],
2026
2489
  "direction": "horizontal",
2027
2490
  "gap": "sm",
2028
- "type": "stack"
2029
- },
2030
- {
2031
- "content": "@entity.narration",
2032
- "type": "typography",
2033
- "variant": "caption"
2491
+ "type": "stack",
2492
+ "wrap": true
2034
2493
  },
2035
2494
  {
2036
2495
  "content": [
2037
2496
  "if",
2038
2497
  "@entity.goalReached",
2039
2498
  "@config.goalReachedMessage",
2040
- ""
2499
+ "@entity.narration"
2041
2500
  ],
2042
2501
  "type": "typography",
2043
- "variant": "caption"
2502
+ "variant": "body"
2044
2503
  }
2045
2504
  ]
2046
2505
  ],
@@ -2484,9 +2943,65 @@
2484
2943
  "@entity.renderChildren",
2485
2944
  [
2486
2945
  {
2487
- "content": "@entity.title",
2488
- "type": "typography",
2489
- "variant": "h4"
2946
+ "align": "start",
2947
+ "children": [
2948
+ {
2949
+ "children": [
2950
+ {
2951
+ "content": "@entity.title",
2952
+ "type": "typography",
2953
+ "variant": "h4"
2954
+ },
2955
+ [
2956
+ "if",
2957
+ [
2958
+ "==",
2959
+ "@config.summary",
2960
+ ""
2961
+ ],
2962
+ null,
2963
+ {
2964
+ "color": "muted",
2965
+ "content": "@config.summary",
2966
+ "type": "typography",
2967
+ "variant": "body2"
2968
+ }
2969
+ ]
2970
+ ],
2971
+ "direction": "vertical",
2972
+ "gap": "xs",
2973
+ "type": "stack"
2974
+ },
2975
+ {
2976
+ "label": [
2977
+ "if",
2978
+ "@entity.goalReached",
2979
+ "Goal reached",
2980
+ [
2981
+ "if",
2982
+ "@entity.running",
2983
+ "Auto-stepping",
2984
+ "In progress"
2985
+ ]
2986
+ ],
2987
+ "type": "badge",
2988
+ "variant": [
2989
+ "if",
2990
+ "@entity.goalReached",
2991
+ "success",
2992
+ [
2993
+ "if",
2994
+ "@entity.running",
2995
+ "primary",
2996
+ "neutral"
2997
+ ]
2998
+ ]
2999
+ }
3000
+ ],
3001
+ "direction": "horizontal",
3002
+ "gap": "md",
3003
+ "justify": "between",
3004
+ "type": "stack"
2490
3005
  },
2491
3006
  {
2492
3007
  "content": [
@@ -2505,6 +3020,7 @@
2505
3020
  "fn",
2506
3021
  "line",
2507
3022
  {
3023
+ "align": "center",
2508
3024
  "children": [
2509
3025
  {
2510
3026
  "label": "@line.badgeLabel",
@@ -2536,6 +3052,7 @@
2536
3052
  "type": "stack"
2537
3053
  },
2538
3054
  {
3055
+ "align": "center",
2539
3056
  "children": [
2540
3057
  "array/map",
2541
3058
  "@config.candidates",
@@ -2547,54 +3064,78 @@
2547
3064
  "actionPayload": {
2548
3065
  "candidateKey": "@c.key"
2549
3066
  },
3067
+ "disabled": "@entity.goalReached",
2550
3068
  "label": "@c.label",
3069
+ "size": "lg",
2551
3070
  "type": "button",
2552
- "variant": "primary"
3071
+ "variant": "secondary"
2553
3072
  }
2554
3073
  ]
2555
3074
  ],
2556
3075
  "direction": "horizontal",
2557
3076
  "gap": "sm",
2558
- "type": "stack"
3077
+ "type": "stack",
3078
+ "wrap": true
2559
3079
  },
2560
3080
  {
3081
+ "align": "center",
2561
3082
  "children": [
2562
- {
2563
- "action": "TOGGLE_RUN",
2564
- "label": [
2565
- "if",
2566
- "@entity.running",
2567
- "Pause",
2568
- "Run"
2569
- ],
2570
- "type": "button",
2571
- "variant": "secondary"
2572
- },
3083
+ [
3084
+ "if",
3085
+ "@entity.running",
3086
+ {
3087
+ "action": "TOGGLE_RUN",
3088
+ "aria-pressed": "true",
3089
+ "icon": "pause",
3090
+ "label": "Pause",
3091
+ "type": "button",
3092
+ "variant": "primary"
3093
+ },
3094
+ {
3095
+ "action": "TOGGLE_RUN",
3096
+ "aria-pressed": "false",
3097
+ "disabled": "@entity.goalReached",
3098
+ "icon": "play",
3099
+ "label": "Run",
3100
+ "type": "button",
3101
+ "variant": "primary"
3102
+ }
3103
+ ],
2573
3104
  {
2574
3105
  "action": "RESET",
3106
+ "icon": "rotate-ccw",
2575
3107
  "label": "@config.resetLabel",
2576
3108
  "type": "button",
2577
3109
  "variant": "ghost"
3110
+ },
3111
+ {
3112
+ "color": "muted",
3113
+ "content": [
3114
+ "str/concat",
3115
+ [
3116
+ "array/len",
3117
+ "@entity.lines"
3118
+ ],
3119
+ " lines"
3120
+ ],
3121
+ "type": "typography",
3122
+ "variant": "caption"
2578
3123
  }
2579
3124
  ],
2580
3125
  "direction": "horizontal",
2581
3126
  "gap": "sm",
2582
- "type": "stack"
2583
- },
2584
- {
2585
- "content": "@entity.narration",
2586
- "type": "typography",
2587
- "variant": "caption"
3127
+ "type": "stack",
3128
+ "wrap": true
2588
3129
  },
2589
3130
  {
2590
3131
  "content": [
2591
3132
  "if",
2592
3133
  "@entity.goalReached",
2593
3134
  "@config.goalReachedMessage",
2594
- ""
3135
+ "@entity.narration"
2595
3136
  ],
2596
3137
  "type": "typography",
2597
- "variant": "caption"
3138
+ "variant": "body"
2598
3139
  }
2599
3140
  ]
2600
3141
  ],