@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
@@ -226,19 +226,19 @@
226
226
  "type": "boolean"
227
227
  },
228
228
  "backgroundColor": {
229
- "default": "#f8fafc",
229
+ "default": "",
230
230
  "label": "Background Color",
231
231
  "tier": "presentation",
232
232
  "type": "string"
233
233
  },
234
234
  "disabledColor": {
235
- "default": "#cbd5e1",
235
+ "default": "muted",
236
236
  "label": "Disabled Node Color",
237
237
  "tier": "presentation",
238
238
  "type": "string"
239
239
  },
240
240
  "disabledEdgeColor": {
241
- "default": "#e2e8f0",
241
+ "default": "guide",
242
242
  "label": "Disabled Edge Color",
243
243
  "tier": "presentation",
244
244
  "type": "string"
@@ -328,13 +328,13 @@
328
328
  "type": "[LearnSandboxElement]"
329
329
  },
330
330
  "enabledColor": {
331
- "default": "#2563eb",
331
+ "default": "series-2",
332
332
  "label": "Enabled Node Color",
333
333
  "tier": "presentation",
334
334
  "type": "string"
335
335
  },
336
336
  "enabledEdgeColor": {
337
- "default": "#1e3a8a",
337
+ "default": "ink",
338
338
  "label": "Enabled Edge Color",
339
339
  "tier": "presentation",
340
340
  "type": "string"
@@ -419,6 +419,13 @@
419
419
  "tier": "presentation",
420
420
  "type": "string"
421
421
  },
422
+ "summary": {
423
+ "default": "",
424
+ "description": "One line under the title saying what the system models (keep it under ~65 characters). Empty shows no line.",
425
+ "label": "Concept",
426
+ "tier": "presentation",
427
+ "type": "string"
428
+ },
422
429
  "threshold": {
423
430
  "default": 60.0,
424
431
  "description": "The summed weight of enabled elements must reach this value for the system to hold.",
@@ -861,14 +868,55 @@
861
868
  {
862
869
  "children": [
863
870
  {
864
- "content": "@entity.title",
865
- "type": "typography",
866
- "variant": "h4"
867
- },
868
- {
869
- "content": "Toggle elements to see how the system's total responds.",
870
- "type": "typography",
871
- "variant": "body"
871
+ "align": "start",
872
+ "children": [
873
+ {
874
+ "children": [
875
+ {
876
+ "content": "@entity.title",
877
+ "type": "typography",
878
+ "variant": "h4"
879
+ },
880
+ [
881
+ "if",
882
+ [
883
+ "==",
884
+ "@config.summary",
885
+ ""
886
+ ],
887
+ null,
888
+ {
889
+ "color": "muted",
890
+ "content": "@config.summary",
891
+ "type": "typography",
892
+ "variant": "body2"
893
+ }
894
+ ]
895
+ ],
896
+ "direction": "vertical",
897
+ "gap": "xs",
898
+ "type": "stack"
899
+ },
900
+ {
901
+ "label": [
902
+ "if",
903
+ "@entity.holds",
904
+ "Holds",
905
+ "Does not hold"
906
+ ],
907
+ "type": "badge",
908
+ "variant": [
909
+ "if",
910
+ "@entity.holds",
911
+ "primary",
912
+ "warning"
913
+ ]
914
+ }
915
+ ],
916
+ "direction": "horizontal",
917
+ "gap": "md",
918
+ "justify": "between",
919
+ "type": "stack"
872
920
  },
873
921
  {
874
922
  "animate": "@config.animate",
@@ -876,12 +924,16 @@
876
924
  "edges": "@entity.edges",
877
925
  "height": "@config.height",
878
926
  "interactive": "@config.interactive",
927
+ "keyMap": {
928
+ "KeyR": "RESET"
929
+ },
879
930
  "nodes": "@entity.nodes",
880
931
  "shapes": [],
881
932
  "type": "biology-canvas",
882
933
  "width": "@config.width"
883
934
  },
884
935
  {
936
+ "align": "center",
885
937
  "children": [
886
938
  "array/map",
887
939
  "@config.elements",
@@ -897,6 +949,20 @@
897
949
  "id"
898
950
  ]
899
951
  },
952
+ "aria-pressed": [
953
+ "if",
954
+ [
955
+ "array/includes",
956
+ "@entity.enabledIds",
957
+ [
958
+ "object/get",
959
+ "@e",
960
+ "id"
961
+ ]
962
+ ],
963
+ "true",
964
+ "false"
965
+ ],
900
966
  "label": [
901
967
  "if",
902
968
  [
@@ -923,7 +989,6 @@
923
989
  " — off"
924
990
  ]
925
991
  ],
926
- "size": "sm",
927
992
  "type": "button",
928
993
  "variant": [
929
994
  "if",
@@ -936,55 +1001,49 @@
936
1001
  "id"
937
1002
  ]
938
1003
  ],
939
- "primary",
1004
+ "secondary",
940
1005
  "ghost"
941
1006
  ]
942
1007
  }
943
1008
  ]
944
1009
  ],
945
1010
  "direction": "horizontal",
946
- "gap": "xs",
947
- "type": "stack"
1011
+ "gap": "sm",
1012
+ "type": "stack",
1013
+ "wrap": true
948
1014
  },
949
1015
  {
1016
+ "align": "center",
950
1017
  "children": [
951
1018
  {
952
1019
  "action": "RESET",
1020
+ "icon": "rotate-ccw",
953
1021
  "label": "@config.resetLabel",
954
1022
  "type": "button",
955
1023
  "variant": "ghost"
956
- }
957
- ],
958
- "direction": "horizontal",
959
- "gap": "sm",
960
- "type": "stack"
961
- },
962
- {
963
- "children": [
964
- {
965
- "label": [
966
- "if",
967
- "@entity.holds",
968
- "Holds",
969
- "Does Not Hold"
970
- ],
971
- "type": "badge",
972
- "variant": [
973
- "if",
974
- "@entity.holds",
975
- "success",
976
- "danger"
977
- ]
978
1024
  },
979
1025
  {
980
- "content": "@entity.readout",
1026
+ "color": "muted",
1027
+ "content": [
1028
+ "str/concat",
1029
+ "Total ",
1030
+ "@entity.total",
1031
+ " of ",
1032
+ "@config.threshold"
1033
+ ],
981
1034
  "type": "typography",
982
- "variant": "body"
1035
+ "variant": "caption"
983
1036
  }
984
1037
  ],
985
1038
  "direction": "horizontal",
986
1039
  "gap": "sm",
987
- "type": "stack"
1040
+ "type": "stack",
1041
+ "wrap": true
1042
+ },
1043
+ {
1044
+ "content": "@entity.readout",
1045
+ "type": "typography",
1046
+ "variant": "body"
988
1047
  }
989
1048
  ],
990
1049
  "direction": "vertical",
@@ -1007,6 +1066,43 @@
1007
1066
  ],
1008
1067
  "to": "idle"
1009
1068
  },
1069
+ {
1070
+ "effects": [
1071
+ [
1072
+ "set",
1073
+ "@entity.active",
1074
+ false
1075
+ ],
1076
+ [
1077
+ "render-ui",
1078
+ "main",
1079
+ null
1080
+ ]
1081
+ ],
1082
+ "event": "MODE_SELECTED",
1083
+ "eventId": "evt_01M055GQ5616ZKF3AC9G2WQX88",
1084
+ "from": "idle",
1085
+ "guard": [
1086
+ "and",
1087
+ [
1088
+ "not",
1089
+ [
1090
+ "==",
1091
+ "@config.matchMode",
1092
+ ""
1093
+ ]
1094
+ ],
1095
+ [
1096
+ "not",
1097
+ [
1098
+ "==",
1099
+ "@payload.mode",
1100
+ "@config.matchMode"
1101
+ ]
1102
+ ]
1103
+ ],
1104
+ "to": "idle"
1105
+ },
1010
1106
  {
1011
1107
  "effects": [
1012
1108
  [
@@ -1256,14 +1352,55 @@
1256
1352
  {
1257
1353
  "children": [
1258
1354
  {
1259
- "content": "@entity.title",
1260
- "type": "typography",
1261
- "variant": "h4"
1262
- },
1263
- {
1264
- "content": "Toggle elements to see how the system's total responds.",
1265
- "type": "typography",
1266
- "variant": "body"
1355
+ "align": "start",
1356
+ "children": [
1357
+ {
1358
+ "children": [
1359
+ {
1360
+ "content": "@entity.title",
1361
+ "type": "typography",
1362
+ "variant": "h4"
1363
+ },
1364
+ [
1365
+ "if",
1366
+ [
1367
+ "==",
1368
+ "@config.summary",
1369
+ ""
1370
+ ],
1371
+ null,
1372
+ {
1373
+ "color": "muted",
1374
+ "content": "@config.summary",
1375
+ "type": "typography",
1376
+ "variant": "body2"
1377
+ }
1378
+ ]
1379
+ ],
1380
+ "direction": "vertical",
1381
+ "gap": "xs",
1382
+ "type": "stack"
1383
+ },
1384
+ {
1385
+ "label": [
1386
+ "if",
1387
+ "@entity.holds",
1388
+ "Holds",
1389
+ "Does not hold"
1390
+ ],
1391
+ "type": "badge",
1392
+ "variant": [
1393
+ "if",
1394
+ "@entity.holds",
1395
+ "primary",
1396
+ "warning"
1397
+ ]
1398
+ }
1399
+ ],
1400
+ "direction": "horizontal",
1401
+ "gap": "md",
1402
+ "justify": "between",
1403
+ "type": "stack"
1267
1404
  },
1268
1405
  {
1269
1406
  "animate": "@config.animate",
@@ -1271,12 +1408,16 @@
1271
1408
  "edges": "@entity.edges",
1272
1409
  "height": "@config.height",
1273
1410
  "interactive": "@config.interactive",
1411
+ "keyMap": {
1412
+ "KeyR": "RESET"
1413
+ },
1274
1414
  "nodes": "@entity.nodes",
1275
1415
  "shapes": [],
1276
1416
  "type": "biology-canvas",
1277
1417
  "width": "@config.width"
1278
1418
  },
1279
1419
  {
1420
+ "align": "center",
1280
1421
  "children": [
1281
1422
  "array/map",
1282
1423
  "@config.elements",
@@ -1292,6 +1433,20 @@
1292
1433
  "id"
1293
1434
  ]
1294
1435
  },
1436
+ "aria-pressed": [
1437
+ "if",
1438
+ [
1439
+ "array/includes",
1440
+ "@entity.enabledIds",
1441
+ [
1442
+ "object/get",
1443
+ "@e",
1444
+ "id"
1445
+ ]
1446
+ ],
1447
+ "true",
1448
+ "false"
1449
+ ],
1295
1450
  "label": [
1296
1451
  "if",
1297
1452
  [
@@ -1318,7 +1473,6 @@
1318
1473
  " — off"
1319
1474
  ]
1320
1475
  ],
1321
- "size": "sm",
1322
1476
  "type": "button",
1323
1477
  "variant": [
1324
1478
  "if",
@@ -1331,55 +1485,49 @@
1331
1485
  "id"
1332
1486
  ]
1333
1487
  ],
1334
- "primary",
1488
+ "secondary",
1335
1489
  "ghost"
1336
1490
  ]
1337
1491
  }
1338
1492
  ]
1339
1493
  ],
1340
1494
  "direction": "horizontal",
1341
- "gap": "xs",
1342
- "type": "stack"
1495
+ "gap": "sm",
1496
+ "type": "stack",
1497
+ "wrap": true
1343
1498
  },
1344
1499
  {
1500
+ "align": "center",
1345
1501
  "children": [
1346
1502
  {
1347
1503
  "action": "RESET",
1504
+ "icon": "rotate-ccw",
1348
1505
  "label": "@config.resetLabel",
1349
1506
  "type": "button",
1350
1507
  "variant": "ghost"
1351
- }
1352
- ],
1353
- "direction": "horizontal",
1354
- "gap": "sm",
1355
- "type": "stack"
1356
- },
1357
- {
1358
- "children": [
1359
- {
1360
- "label": [
1361
- "if",
1362
- "@entity.holds",
1363
- "Holds",
1364
- "Does Not Hold"
1365
- ],
1366
- "type": "badge",
1367
- "variant": [
1368
- "if",
1369
- "@entity.holds",
1370
- "success",
1371
- "danger"
1372
- ]
1373
1508
  },
1374
1509
  {
1375
- "content": "@entity.readout",
1510
+ "color": "muted",
1511
+ "content": [
1512
+ "str/concat",
1513
+ "Total ",
1514
+ "@entity.total",
1515
+ " of ",
1516
+ "@config.threshold"
1517
+ ],
1376
1518
  "type": "typography",
1377
- "variant": "body"
1519
+ "variant": "caption"
1378
1520
  }
1379
1521
  ],
1380
1522
  "direction": "horizontal",
1381
1523
  "gap": "sm",
1382
- "type": "stack"
1524
+ "type": "stack",
1525
+ "wrap": true
1526
+ },
1527
+ {
1528
+ "content": "@entity.readout",
1529
+ "type": "typography",
1530
+ "variant": "body"
1383
1531
  }
1384
1532
  ],
1385
1533
  "direction": "vertical",
@@ -1639,14 +1787,55 @@
1639
1787
  {
1640
1788
  "children": [
1641
1789
  {
1642
- "content": "@entity.title",
1643
- "type": "typography",
1644
- "variant": "h4"
1645
- },
1646
- {
1647
- "content": "Toggle elements to see how the system's total responds.",
1648
- "type": "typography",
1649
- "variant": "body"
1790
+ "align": "start",
1791
+ "children": [
1792
+ {
1793
+ "children": [
1794
+ {
1795
+ "content": "@entity.title",
1796
+ "type": "typography",
1797
+ "variant": "h4"
1798
+ },
1799
+ [
1800
+ "if",
1801
+ [
1802
+ "==",
1803
+ "@config.summary",
1804
+ ""
1805
+ ],
1806
+ null,
1807
+ {
1808
+ "color": "muted",
1809
+ "content": "@config.summary",
1810
+ "type": "typography",
1811
+ "variant": "body2"
1812
+ }
1813
+ ]
1814
+ ],
1815
+ "direction": "vertical",
1816
+ "gap": "xs",
1817
+ "type": "stack"
1818
+ },
1819
+ {
1820
+ "label": [
1821
+ "if",
1822
+ "@entity.holds",
1823
+ "Holds",
1824
+ "Does not hold"
1825
+ ],
1826
+ "type": "badge",
1827
+ "variant": [
1828
+ "if",
1829
+ "@entity.holds",
1830
+ "primary",
1831
+ "warning"
1832
+ ]
1833
+ }
1834
+ ],
1835
+ "direction": "horizontal",
1836
+ "gap": "md",
1837
+ "justify": "between",
1838
+ "type": "stack"
1650
1839
  },
1651
1840
  {
1652
1841
  "animate": "@config.animate",
@@ -1654,12 +1843,16 @@
1654
1843
  "edges": "@entity.edges",
1655
1844
  "height": "@config.height",
1656
1845
  "interactive": "@config.interactive",
1846
+ "keyMap": {
1847
+ "KeyR": "RESET"
1848
+ },
1657
1849
  "nodes": "@entity.nodes",
1658
1850
  "shapes": [],
1659
1851
  "type": "biology-canvas",
1660
1852
  "width": "@config.width"
1661
1853
  },
1662
1854
  {
1855
+ "align": "center",
1663
1856
  "children": [
1664
1857
  "array/map",
1665
1858
  "@config.elements",
@@ -1675,6 +1868,20 @@
1675
1868
  "id"
1676
1869
  ]
1677
1870
  },
1871
+ "aria-pressed": [
1872
+ "if",
1873
+ [
1874
+ "array/includes",
1875
+ "@entity.enabledIds",
1876
+ [
1877
+ "object/get",
1878
+ "@e",
1879
+ "id"
1880
+ ]
1881
+ ],
1882
+ "true",
1883
+ "false"
1884
+ ],
1678
1885
  "label": [
1679
1886
  "if",
1680
1887
  [
@@ -1701,7 +1908,6 @@
1701
1908
  " — off"
1702
1909
  ]
1703
1910
  ],
1704
- "size": "sm",
1705
1911
  "type": "button",
1706
1912
  "variant": [
1707
1913
  "if",
@@ -1714,55 +1920,49 @@
1714
1920
  "id"
1715
1921
  ]
1716
1922
  ],
1717
- "primary",
1923
+ "secondary",
1718
1924
  "ghost"
1719
1925
  ]
1720
1926
  }
1721
1927
  ]
1722
1928
  ],
1723
1929
  "direction": "horizontal",
1724
- "gap": "xs",
1725
- "type": "stack"
1930
+ "gap": "sm",
1931
+ "type": "stack",
1932
+ "wrap": true
1726
1933
  },
1727
1934
  {
1935
+ "align": "center",
1728
1936
  "children": [
1729
1937
  {
1730
1938
  "action": "RESET",
1939
+ "icon": "rotate-ccw",
1731
1940
  "label": "@config.resetLabel",
1732
1941
  "type": "button",
1733
1942
  "variant": "ghost"
1734
- }
1735
- ],
1736
- "direction": "horizontal",
1737
- "gap": "sm",
1738
- "type": "stack"
1739
- },
1740
- {
1741
- "children": [
1742
- {
1743
- "label": [
1744
- "if",
1745
- "@entity.holds",
1746
- "Holds",
1747
- "Does Not Hold"
1748
- ],
1749
- "type": "badge",
1750
- "variant": [
1751
- "if",
1752
- "@entity.holds",
1753
- "success",
1754
- "danger"
1755
- ]
1756
1943
  },
1757
1944
  {
1758
- "content": "@entity.readout",
1945
+ "color": "muted",
1946
+ "content": [
1947
+ "str/concat",
1948
+ "Total ",
1949
+ "@entity.total",
1950
+ " of ",
1951
+ "@config.threshold"
1952
+ ],
1759
1953
  "type": "typography",
1760
- "variant": "body"
1954
+ "variant": "caption"
1761
1955
  }
1762
1956
  ],
1763
1957
  "direction": "horizontal",
1764
1958
  "gap": "sm",
1765
- "type": "stack"
1959
+ "type": "stack",
1960
+ "wrap": true
1961
+ },
1962
+ {
1963
+ "content": "@entity.readout",
1964
+ "type": "typography",
1965
+ "variant": "body"
1766
1966
  }
1767
1967
  ],
1768
1968
  "direction": "vertical",
@@ -2032,14 +2232,55 @@
2032
2232
  {
2033
2233
  "children": [
2034
2234
  {
2035
- "content": "@entity.title",
2036
- "type": "typography",
2037
- "variant": "h4"
2038
- },
2039
- {
2040
- "content": "Toggle elements to see how the system's total responds.",
2041
- "type": "typography",
2042
- "variant": "body"
2235
+ "align": "start",
2236
+ "children": [
2237
+ {
2238
+ "children": [
2239
+ {
2240
+ "content": "@entity.title",
2241
+ "type": "typography",
2242
+ "variant": "h4"
2243
+ },
2244
+ [
2245
+ "if",
2246
+ [
2247
+ "==",
2248
+ "@config.summary",
2249
+ ""
2250
+ ],
2251
+ null,
2252
+ {
2253
+ "color": "muted",
2254
+ "content": "@config.summary",
2255
+ "type": "typography",
2256
+ "variant": "body2"
2257
+ }
2258
+ ]
2259
+ ],
2260
+ "direction": "vertical",
2261
+ "gap": "xs",
2262
+ "type": "stack"
2263
+ },
2264
+ {
2265
+ "label": [
2266
+ "if",
2267
+ "@entity.holds",
2268
+ "Holds",
2269
+ "Does not hold"
2270
+ ],
2271
+ "type": "badge",
2272
+ "variant": [
2273
+ "if",
2274
+ "@entity.holds",
2275
+ "primary",
2276
+ "warning"
2277
+ ]
2278
+ }
2279
+ ],
2280
+ "direction": "horizontal",
2281
+ "gap": "md",
2282
+ "justify": "between",
2283
+ "type": "stack"
2043
2284
  },
2044
2285
  {
2045
2286
  "animate": "@config.animate",
@@ -2047,12 +2288,16 @@
2047
2288
  "edges": "@entity.edges",
2048
2289
  "height": "@config.height",
2049
2290
  "interactive": "@config.interactive",
2291
+ "keyMap": {
2292
+ "KeyR": "RESET"
2293
+ },
2050
2294
  "nodes": "@entity.nodes",
2051
2295
  "shapes": [],
2052
2296
  "type": "biology-canvas",
2053
2297
  "width": "@config.width"
2054
2298
  },
2055
2299
  {
2300
+ "align": "center",
2056
2301
  "children": [
2057
2302
  "array/map",
2058
2303
  "@config.elements",
@@ -2068,6 +2313,20 @@
2068
2313
  "id"
2069
2314
  ]
2070
2315
  },
2316
+ "aria-pressed": [
2317
+ "if",
2318
+ [
2319
+ "array/includes",
2320
+ "@entity.enabledIds",
2321
+ [
2322
+ "object/get",
2323
+ "@e",
2324
+ "id"
2325
+ ]
2326
+ ],
2327
+ "true",
2328
+ "false"
2329
+ ],
2071
2330
  "label": [
2072
2331
  "if",
2073
2332
  [
@@ -2094,7 +2353,6 @@
2094
2353
  " — off"
2095
2354
  ]
2096
2355
  ],
2097
- "size": "sm",
2098
2356
  "type": "button",
2099
2357
  "variant": [
2100
2358
  "if",
@@ -2107,55 +2365,49 @@
2107
2365
  "id"
2108
2366
  ]
2109
2367
  ],
2110
- "primary",
2368
+ "secondary",
2111
2369
  "ghost"
2112
2370
  ]
2113
2371
  }
2114
2372
  ]
2115
2373
  ],
2116
2374
  "direction": "horizontal",
2117
- "gap": "xs",
2118
- "type": "stack"
2375
+ "gap": "sm",
2376
+ "type": "stack",
2377
+ "wrap": true
2119
2378
  },
2120
2379
  {
2380
+ "align": "center",
2121
2381
  "children": [
2122
2382
  {
2123
2383
  "action": "RESET",
2384
+ "icon": "rotate-ccw",
2124
2385
  "label": "@config.resetLabel",
2125
2386
  "type": "button",
2126
2387
  "variant": "ghost"
2127
- }
2128
- ],
2129
- "direction": "horizontal",
2130
- "gap": "sm",
2131
- "type": "stack"
2132
- },
2133
- {
2134
- "children": [
2135
- {
2136
- "label": [
2137
- "if",
2138
- "@entity.holds",
2139
- "Holds",
2140
- "Does Not Hold"
2141
- ],
2142
- "type": "badge",
2143
- "variant": [
2144
- "if",
2145
- "@entity.holds",
2146
- "success",
2147
- "danger"
2148
- ]
2149
2388
  },
2150
2389
  {
2151
- "content": "@entity.readout",
2390
+ "color": "muted",
2391
+ "content": [
2392
+ "str/concat",
2393
+ "Total ",
2394
+ "@entity.total",
2395
+ " of ",
2396
+ "@config.threshold"
2397
+ ],
2152
2398
  "type": "typography",
2153
- "variant": "body"
2399
+ "variant": "caption"
2154
2400
  }
2155
2401
  ],
2156
2402
  "direction": "horizontal",
2157
2403
  "gap": "sm",
2158
- "type": "stack"
2404
+ "type": "stack",
2405
+ "wrap": true
2406
+ },
2407
+ {
2408
+ "content": "@entity.readout",
2409
+ "type": "typography",
2410
+ "variant": "body"
2159
2411
  }
2160
2412
  ],
2161
2413
  "direction": "vertical",