@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
@@ -194,6 +194,16 @@
194
194
  "required": false,
195
195
  "type": "string"
196
196
  },
197
+ "fillStyle": {
198
+ "name": "fillStyle",
199
+ "required": false,
200
+ "type": "string"
201
+ },
202
+ "fillTone": {
203
+ "name": "fillTone",
204
+ "required": false,
205
+ "type": "string"
206
+ },
197
207
  "fontSize": {
198
208
  "name": "fontSize",
199
209
  "required": false,
@@ -269,11 +279,26 @@
269
279
  "required": false,
270
280
  "type": "number"
271
281
  },
282
+ "stroke": {
283
+ "name": "stroke",
284
+ "required": false,
285
+ "type": "string"
286
+ },
272
287
  "text": {
273
288
  "name": "text",
274
289
  "required": false,
275
290
  "type": "string"
276
291
  },
292
+ "textSize": {
293
+ "name": "textSize",
294
+ "required": false,
295
+ "type": "string"
296
+ },
297
+ "tone": {
298
+ "name": "tone",
299
+ "required": false,
300
+ "type": "string"
301
+ },
277
302
  "type": {
278
303
  "name": "type",
279
304
  "required": true,
@@ -369,14 +394,14 @@
369
394
  "type": "string"
370
395
  },
371
396
  "correctColor": {
372
- "default": "#16a34a",
397
+ "default": "success",
373
398
  "description": "Fill color for a filled slot whose item matches its correct position, once graded.",
374
399
  "label": "Correct Slot Color",
375
400
  "tier": "presentation",
376
401
  "type": "string"
377
402
  },
378
403
  "emptySlotColor": {
379
- "default": "#e2e8f0",
404
+ "default": "fill",
380
405
  "description": "Fill color for a slot with no item placed yet.",
381
406
  "label": "Empty Slot Color",
382
407
  "tier": "presentation",
@@ -390,7 +415,7 @@
390
415
  "type": "number"
391
416
  },
392
417
  "incorrectColor": {
393
- "default": "#dc2626",
418
+ "default": "error",
394
419
  "description": "Fill color for a filled slot whose item does not match its correct position, once graded.",
395
420
  "label": "Incorrect Slot Color",
396
421
  "tier": "presentation",
@@ -475,7 +500,7 @@
475
500
  "type": "string"
476
501
  },
477
502
  "pendingColor": {
478
- "default": "#94a3b8",
503
+ "default": "series-2",
479
504
  "description": "Fill color for a filled slot before grading.",
480
505
  "label": "Pending Slot Color",
481
506
  "tier": "presentation",
@@ -488,16 +513,17 @@
488
513
  "type": "string"
489
514
  },
490
515
  "slotBorderColor": {
491
- "default": "#334155",
516
+ "default": "ink",
492
517
  "label": "Slot Border Color",
493
518
  "tier": "presentation",
494
519
  "type": "string"
495
520
  },
496
521
  "slotFontSize": {
497
- "default": 13.0,
498
- "label": "Slot Font Size",
522
+ "default": "sm",
523
+ "description": "Slot label size role: xs, sm, base or lg.",
524
+ "label": "Slot Text Size",
499
525
  "tier": "presentation",
500
- "type": "number"
526
+ "type": "string"
501
527
  },
502
528
  "slotHeight": {
503
529
  "default": 60.0,
@@ -518,7 +544,7 @@
518
544
  "type": "number"
519
545
  },
520
546
  "slotTextColor": {
521
- "default": "#0f172a",
547
+ "default": "label",
522
548
  "label": "Slot Text Color",
523
549
  "tier": "presentation",
524
550
  "type": "string"
@@ -535,6 +561,13 @@
535
561
  "tier": "presentation",
536
562
  "type": "number"
537
563
  },
564
+ "summary": {
565
+ "default": "",
566
+ "description": "One line under the title saying what is being ordered (keep it under ~65 characters). Empty shows no line.",
567
+ "label": "Concept",
568
+ "tier": "presentation",
569
+ "type": "string"
570
+ },
538
571
  "title": {
539
572
  "default": "Build the Order",
540
573
  "description": "Title shown above the instrument.",
@@ -963,14 +996,15 @@
963
996
  ],
964
997
  [
965
998
  {
966
- "color": "@config.slotBorderColor",
967
- "fill": "@fillColor",
999
+ "fillStyle": "tint",
1000
+ "fillTone": "@fillColor",
968
1001
  "height": "@config.slotHeight",
969
1002
  "id": [
970
1003
  "str/concat",
971
1004
  "slot-",
972
1005
  "@i"
973
1006
  ],
1007
+ "tone": "@config.slotBorderColor",
974
1008
  "type": "rect",
975
1009
  "width": "@config.slotWidth",
976
1010
  "x": "@bx",
@@ -978,8 +1012,6 @@
978
1012
  },
979
1013
  {
980
1014
  "align": "center",
981
- "color": "@config.slotTextColor",
982
- "fontSize": "@config.slotFontSize",
983
1015
  "id": [
984
1016
  "str/concat",
985
1017
  "slot-label-",
@@ -999,6 +1031,8 @@
999
1031
  ]
1000
1032
  ]
1001
1033
  ],
1034
+ "textSize": "@config.slotFontSize",
1035
+ "tone": "@config.slotTextColor",
1002
1036
  "type": "text",
1003
1037
  "x": [
1004
1038
  "+",
@@ -1041,14 +1075,88 @@
1041
1075
  {
1042
1076
  "children": [
1043
1077
  {
1044
- "content": "@entity.title",
1045
- "type": "typography",
1046
- "variant": "h4"
1047
- },
1048
- {
1049
- "content": "Tap items below to build the sequence in order, then press Check.",
1050
- "type": "typography",
1051
- "variant": "body"
1078
+ "align": "start",
1079
+ "children": [
1080
+ {
1081
+ "children": [
1082
+ {
1083
+ "content": "@entity.title",
1084
+ "type": "typography",
1085
+ "variant": "h4"
1086
+ },
1087
+ [
1088
+ "if",
1089
+ [
1090
+ "==",
1091
+ "@config.summary",
1092
+ ""
1093
+ ],
1094
+ null,
1095
+ {
1096
+ "color": "muted",
1097
+ "content": "@config.summary",
1098
+ "type": "typography",
1099
+ "variant": "body2"
1100
+ }
1101
+ ]
1102
+ ],
1103
+ "direction": "vertical",
1104
+ "gap": "xs",
1105
+ "type": "stack"
1106
+ },
1107
+ {
1108
+ "label": [
1109
+ "if",
1110
+ "@entity.checked",
1111
+ [
1112
+ "if",
1113
+ [
1114
+ "==",
1115
+ "@entity.correctCount",
1116
+ "@entity.totalItems"
1117
+ ],
1118
+ "Correct",
1119
+ [
1120
+ "str/concat",
1121
+ "@entity.correctCount",
1122
+ " / ",
1123
+ "@entity.totalItems",
1124
+ " correct"
1125
+ ]
1126
+ ],
1127
+ [
1128
+ "str/concat",
1129
+ [
1130
+ "array/len",
1131
+ "@entity.placedIds"
1132
+ ],
1133
+ " / ",
1134
+ "@entity.totalItems",
1135
+ " placed"
1136
+ ]
1137
+ ],
1138
+ "type": "badge",
1139
+ "variant": [
1140
+ "if",
1141
+ "@entity.checked",
1142
+ [
1143
+ "if",
1144
+ [
1145
+ "==",
1146
+ "@entity.correctCount",
1147
+ "@entity.totalItems"
1148
+ ],
1149
+ "success",
1150
+ "error"
1151
+ ],
1152
+ "neutral"
1153
+ ]
1154
+ }
1155
+ ],
1156
+ "direction": "horizontal",
1157
+ "gap": "md",
1158
+ "justify": "between",
1159
+ "type": "stack"
1052
1160
  },
1053
1161
  {
1054
1162
  "animate": "@config.animate",
@@ -1056,6 +1164,11 @@
1056
1164
  "gridStep": 1.0,
1057
1165
  "height": "@config.height",
1058
1166
  "interactive": "@config.interactive",
1167
+ "keyMap": {
1168
+ "Backspace": "UNDO",
1169
+ "KeyR": "RETRY",
1170
+ "Space": "CHECK"
1171
+ },
1059
1172
  "points": [],
1060
1173
  "shapes": "@entity.slotShapes",
1061
1174
  "showAxes": false,
@@ -1103,6 +1216,7 @@
1103
1216
  "id"
1104
1217
  ]
1105
1218
  },
1219
+ "disabled": "@entity.checked",
1106
1220
  "label": [
1107
1221
  "if",
1108
1222
  [
@@ -1136,103 +1250,96 @@
1136
1250
  "label"
1137
1251
  ]
1138
1252
  ],
1139
- "size": "sm",
1253
+ "size": "lg",
1140
1254
  "type": "button",
1141
1255
  "variant": "secondary"
1142
1256
  }
1143
1257
  ]
1144
1258
  ],
1145
- "direction": "horizontal",
1146
- "gap": "xs",
1259
+ "direction": "vertical",
1260
+ "gap": "sm",
1147
1261
  "type": "stack"
1148
1262
  },
1149
1263
  {
1264
+ "align": "center",
1150
1265
  "children": [
1151
1266
  {
1152
- "action": "UNDO",
1267
+ "action": "CHECK",
1153
1268
  "disabled": [
1154
1269
  "if",
1155
1270
  [
1156
- ">",
1271
+ ">=",
1157
1272
  [
1158
1273
  "array/len",
1159
1274
  "@entity.placedIds"
1160
1275
  ],
1161
- 0.0
1276
+ "@entity.totalItems"
1162
1277
  ],
1163
1278
  false,
1164
1279
  true
1165
1280
  ],
1166
- "label": "@config.undoLabel",
1281
+ "icon": "check",
1282
+ "label": "@config.checkLabel",
1167
1283
  "type": "button",
1168
- "variant": "ghost"
1284
+ "variant": "primary"
1169
1285
  },
1170
1286
  {
1171
- "action": "CHECK",
1287
+ "action": "UNDO",
1172
1288
  "disabled": [
1173
1289
  "if",
1174
1290
  [
1175
- ">=",
1291
+ ">",
1176
1292
  [
1177
1293
  "array/len",
1178
1294
  "@entity.placedIds"
1179
1295
  ],
1180
- "@entity.totalItems"
1296
+ 0.0
1181
1297
  ],
1182
1298
  false,
1183
1299
  true
1184
1300
  ],
1185
- "label": "@config.checkLabel",
1301
+ "icon": "chevron-left",
1302
+ "label": "@config.undoLabel",
1186
1303
  "type": "button",
1187
- "variant": "primary"
1304
+ "variant": "secondary"
1188
1305
  },
1189
1306
  {
1190
1307
  "action": "RETRY",
1308
+ "icon": "rotate-ccw",
1191
1309
  "label": "@config.retryLabel",
1192
1310
  "type": "button",
1193
1311
  "variant": "ghost"
1194
- }
1195
- ],
1196
- "direction": "horizontal",
1197
- "gap": "sm",
1198
- "type": "stack"
1199
- },
1200
- {
1201
- "children": [
1312
+ },
1202
1313
  {
1203
- "label": [
1204
- "if",
1205
- "@entity.checked",
1206
- "@entity.verdict",
1207
- "Not checked yet"
1208
- ],
1209
- "type": "badge",
1210
- "variant": [
1211
- "if",
1212
- "@entity.checked",
1314
+ "color": "muted",
1315
+ "content": [
1316
+ "str/concat",
1317
+ "Placed ",
1213
1318
  [
1214
- "if",
1215
- [
1216
- "==",
1217
- "@entity.correctCount",
1218
- "@entity.totalItems"
1219
- ],
1220
- "success",
1221
- "danger"
1319
+ "array/len",
1320
+ "@entity.placedIds"
1222
1321
  ],
1223
- "neutral"
1224
- ]
1225
- },
1226
- {
1227
- "label": "Score",
1228
- "max": "@entity.totalItems",
1229
- "type": "stat-display",
1230
- "value": "@entity.correctCount"
1322
+ " of ",
1323
+ "@entity.totalItems"
1324
+ ],
1325
+ "type": "typography",
1326
+ "variant": "caption"
1231
1327
  }
1232
1328
  ],
1233
1329
  "direction": "horizontal",
1234
1330
  "gap": "sm",
1235
- "type": "stack"
1331
+ "type": "stack",
1332
+ "wrap": true
1333
+ },
1334
+ {
1335
+ "content": [
1336
+ "if",
1337
+ "@entity.checked",
1338
+ "@entity.verdict",
1339
+ "Tap items to build the sequence in order, then press Check."
1340
+ ],
1341
+ "type": "typography",
1342
+ "variant": "body"
1236
1343
  }
1237
1344
  ],
1238
1345
  "direction": "vertical",
@@ -1255,6 +1362,43 @@
1255
1362
  ],
1256
1363
  "to": "idle"
1257
1364
  },
1365
+ {
1366
+ "effects": [
1367
+ [
1368
+ "set",
1369
+ "@entity.active",
1370
+ false
1371
+ ],
1372
+ [
1373
+ "render-ui",
1374
+ "main",
1375
+ null
1376
+ ]
1377
+ ],
1378
+ "event": "MODE_SELECTED",
1379
+ "eventId": "evt_01M055GQ1FV25EAX7AXNEYCY1E",
1380
+ "from": "idle",
1381
+ "guard": [
1382
+ "and",
1383
+ [
1384
+ "not",
1385
+ [
1386
+ "==",
1387
+ "@config.matchMode",
1388
+ ""
1389
+ ]
1390
+ ],
1391
+ [
1392
+ "not",
1393
+ [
1394
+ "==",
1395
+ "@payload.mode",
1396
+ "@config.matchMode"
1397
+ ]
1398
+ ]
1399
+ ],
1400
+ "to": "idle"
1401
+ },
1258
1402
  {
1259
1403
  "effects": [
1260
1404
  [
@@ -1438,14 +1582,15 @@
1438
1582
  ],
1439
1583
  [
1440
1584
  {
1441
- "color": "@config.slotBorderColor",
1442
- "fill": "@fillColor",
1585
+ "fillStyle": "tint",
1586
+ "fillTone": "@fillColor",
1443
1587
  "height": "@config.slotHeight",
1444
1588
  "id": [
1445
1589
  "str/concat",
1446
1590
  "slot-",
1447
1591
  "@i"
1448
1592
  ],
1593
+ "tone": "@config.slotBorderColor",
1449
1594
  "type": "rect",
1450
1595
  "width": "@config.slotWidth",
1451
1596
  "x": "@bx",
@@ -1453,8 +1598,6 @@
1453
1598
  },
1454
1599
  {
1455
1600
  "align": "center",
1456
- "color": "@config.slotTextColor",
1457
- "fontSize": "@config.slotFontSize",
1458
1601
  "id": [
1459
1602
  "str/concat",
1460
1603
  "slot-label-",
@@ -1474,6 +1617,8 @@
1474
1617
  ]
1475
1618
  ]
1476
1619
  ],
1620
+ "textSize": "@config.slotFontSize",
1621
+ "tone": "@config.slotTextColor",
1477
1622
  "type": "text",
1478
1623
  "x": [
1479
1624
  "+",
@@ -1516,14 +1661,88 @@
1516
1661
  {
1517
1662
  "children": [
1518
1663
  {
1519
- "content": "@entity.title",
1520
- "type": "typography",
1521
- "variant": "h4"
1522
- },
1523
- {
1524
- "content": "Tap items below to build the sequence in order, then press Check.",
1525
- "type": "typography",
1526
- "variant": "body"
1664
+ "align": "start",
1665
+ "children": [
1666
+ {
1667
+ "children": [
1668
+ {
1669
+ "content": "@entity.title",
1670
+ "type": "typography",
1671
+ "variant": "h4"
1672
+ },
1673
+ [
1674
+ "if",
1675
+ [
1676
+ "==",
1677
+ "@config.summary",
1678
+ ""
1679
+ ],
1680
+ null,
1681
+ {
1682
+ "color": "muted",
1683
+ "content": "@config.summary",
1684
+ "type": "typography",
1685
+ "variant": "body2"
1686
+ }
1687
+ ]
1688
+ ],
1689
+ "direction": "vertical",
1690
+ "gap": "xs",
1691
+ "type": "stack"
1692
+ },
1693
+ {
1694
+ "label": [
1695
+ "if",
1696
+ "@entity.checked",
1697
+ [
1698
+ "if",
1699
+ [
1700
+ "==",
1701
+ "@entity.correctCount",
1702
+ "@entity.totalItems"
1703
+ ],
1704
+ "Correct",
1705
+ [
1706
+ "str/concat",
1707
+ "@entity.correctCount",
1708
+ " / ",
1709
+ "@entity.totalItems",
1710
+ " correct"
1711
+ ]
1712
+ ],
1713
+ [
1714
+ "str/concat",
1715
+ [
1716
+ "array/len",
1717
+ "@entity.placedIds"
1718
+ ],
1719
+ " / ",
1720
+ "@entity.totalItems",
1721
+ " placed"
1722
+ ]
1723
+ ],
1724
+ "type": "badge",
1725
+ "variant": [
1726
+ "if",
1727
+ "@entity.checked",
1728
+ [
1729
+ "if",
1730
+ [
1731
+ "==",
1732
+ "@entity.correctCount",
1733
+ "@entity.totalItems"
1734
+ ],
1735
+ "success",
1736
+ "error"
1737
+ ],
1738
+ "neutral"
1739
+ ]
1740
+ }
1741
+ ],
1742
+ "direction": "horizontal",
1743
+ "gap": "md",
1744
+ "justify": "between",
1745
+ "type": "stack"
1527
1746
  },
1528
1747
  {
1529
1748
  "animate": "@config.animate",
@@ -1531,6 +1750,11 @@
1531
1750
  "gridStep": 1.0,
1532
1751
  "height": "@config.height",
1533
1752
  "interactive": "@config.interactive",
1753
+ "keyMap": {
1754
+ "Backspace": "UNDO",
1755
+ "KeyR": "RETRY",
1756
+ "Space": "CHECK"
1757
+ },
1534
1758
  "points": [],
1535
1759
  "shapes": "@entity.slotShapes",
1536
1760
  "showAxes": false,
@@ -1578,6 +1802,7 @@
1578
1802
  "id"
1579
1803
  ]
1580
1804
  },
1805
+ "disabled": "@entity.checked",
1581
1806
  "label": [
1582
1807
  "if",
1583
1808
  [
@@ -1611,103 +1836,96 @@
1611
1836
  "label"
1612
1837
  ]
1613
1838
  ],
1614
- "size": "sm",
1839
+ "size": "lg",
1615
1840
  "type": "button",
1616
1841
  "variant": "secondary"
1617
1842
  }
1618
1843
  ]
1619
1844
  ],
1620
- "direction": "horizontal",
1621
- "gap": "xs",
1845
+ "direction": "vertical",
1846
+ "gap": "sm",
1622
1847
  "type": "stack"
1623
1848
  },
1624
1849
  {
1850
+ "align": "center",
1625
1851
  "children": [
1626
1852
  {
1627
- "action": "UNDO",
1853
+ "action": "CHECK",
1628
1854
  "disabled": [
1629
1855
  "if",
1630
1856
  [
1631
- ">",
1857
+ ">=",
1632
1858
  [
1633
1859
  "array/len",
1634
1860
  "@entity.placedIds"
1635
1861
  ],
1636
- 0.0
1862
+ "@entity.totalItems"
1637
1863
  ],
1638
1864
  false,
1639
1865
  true
1640
1866
  ],
1641
- "label": "@config.undoLabel",
1867
+ "icon": "check",
1868
+ "label": "@config.checkLabel",
1642
1869
  "type": "button",
1643
- "variant": "ghost"
1870
+ "variant": "primary"
1644
1871
  },
1645
1872
  {
1646
- "action": "CHECK",
1873
+ "action": "UNDO",
1647
1874
  "disabled": [
1648
1875
  "if",
1649
1876
  [
1650
- ">=",
1877
+ ">",
1651
1878
  [
1652
1879
  "array/len",
1653
1880
  "@entity.placedIds"
1654
1881
  ],
1655
- "@entity.totalItems"
1882
+ 0.0
1656
1883
  ],
1657
1884
  false,
1658
1885
  true
1659
1886
  ],
1660
- "label": "@config.checkLabel",
1887
+ "icon": "chevron-left",
1888
+ "label": "@config.undoLabel",
1661
1889
  "type": "button",
1662
- "variant": "primary"
1890
+ "variant": "secondary"
1663
1891
  },
1664
1892
  {
1665
1893
  "action": "RETRY",
1894
+ "icon": "rotate-ccw",
1666
1895
  "label": "@config.retryLabel",
1667
1896
  "type": "button",
1668
1897
  "variant": "ghost"
1898
+ },
1899
+ {
1900
+ "color": "muted",
1901
+ "content": [
1902
+ "str/concat",
1903
+ "Placed ",
1904
+ [
1905
+ "array/len",
1906
+ "@entity.placedIds"
1907
+ ],
1908
+ " of ",
1909
+ "@entity.totalItems"
1910
+ ],
1911
+ "type": "typography",
1912
+ "variant": "caption"
1669
1913
  }
1670
1914
  ],
1671
1915
  "direction": "horizontal",
1672
1916
  "gap": "sm",
1673
- "type": "stack"
1917
+ "type": "stack",
1918
+ "wrap": true
1674
1919
  },
1675
1920
  {
1676
- "children": [
1677
- {
1678
- "label": [
1679
- "if",
1680
- "@entity.checked",
1681
- "@entity.verdict",
1682
- "Not checked yet"
1683
- ],
1684
- "type": "badge",
1685
- "variant": [
1686
- "if",
1687
- "@entity.checked",
1688
- [
1689
- "if",
1690
- [
1691
- "==",
1692
- "@entity.correctCount",
1693
- "@entity.totalItems"
1694
- ],
1695
- "success",
1696
- "danger"
1697
- ],
1698
- "neutral"
1699
- ]
1700
- },
1701
- {
1702
- "label": "Score",
1703
- "max": "@entity.totalItems",
1704
- "type": "stat-display",
1705
- "value": "@entity.correctCount"
1706
- }
1921
+ "content": [
1922
+ "if",
1923
+ "@entity.checked",
1924
+ "@entity.verdict",
1925
+ "Tap items to build the sequence in order, then press Check."
1707
1926
  ],
1708
- "direction": "horizontal",
1709
- "gap": "sm",
1710
- "type": "stack"
1927
+ "type": "typography",
1928
+ "variant": "body"
1711
1929
  }
1712
1930
  ],
1713
1931
  "direction": "vertical",
@@ -1899,14 +2117,15 @@
1899
2117
  ],
1900
2118
  [
1901
2119
  {
1902
- "color": "@config.slotBorderColor",
1903
- "fill": "@fillColor",
2120
+ "fillStyle": "tint",
2121
+ "fillTone": "@fillColor",
1904
2122
  "height": "@config.slotHeight",
1905
2123
  "id": [
1906
2124
  "str/concat",
1907
2125
  "slot-",
1908
2126
  "@i"
1909
2127
  ],
2128
+ "tone": "@config.slotBorderColor",
1910
2129
  "type": "rect",
1911
2130
  "width": "@config.slotWidth",
1912
2131
  "x": "@bx",
@@ -1914,8 +2133,6 @@
1914
2133
  },
1915
2134
  {
1916
2135
  "align": "center",
1917
- "color": "@config.slotTextColor",
1918
- "fontSize": "@config.slotFontSize",
1919
2136
  "id": [
1920
2137
  "str/concat",
1921
2138
  "slot-label-",
@@ -1935,6 +2152,8 @@
1935
2152
  ]
1936
2153
  ]
1937
2154
  ],
2155
+ "textSize": "@config.slotFontSize",
2156
+ "tone": "@config.slotTextColor",
1938
2157
  "type": "text",
1939
2158
  "x": [
1940
2159
  "+",
@@ -1977,14 +2196,88 @@
1977
2196
  {
1978
2197
  "children": [
1979
2198
  {
1980
- "content": "@entity.title",
1981
- "type": "typography",
1982
- "variant": "h4"
1983
- },
1984
- {
1985
- "content": "Tap items below to build the sequence in order, then press Check.",
1986
- "type": "typography",
1987
- "variant": "body"
2199
+ "align": "start",
2200
+ "children": [
2201
+ {
2202
+ "children": [
2203
+ {
2204
+ "content": "@entity.title",
2205
+ "type": "typography",
2206
+ "variant": "h4"
2207
+ },
2208
+ [
2209
+ "if",
2210
+ [
2211
+ "==",
2212
+ "@config.summary",
2213
+ ""
2214
+ ],
2215
+ null,
2216
+ {
2217
+ "color": "muted",
2218
+ "content": "@config.summary",
2219
+ "type": "typography",
2220
+ "variant": "body2"
2221
+ }
2222
+ ]
2223
+ ],
2224
+ "direction": "vertical",
2225
+ "gap": "xs",
2226
+ "type": "stack"
2227
+ },
2228
+ {
2229
+ "label": [
2230
+ "if",
2231
+ "@entity.checked",
2232
+ [
2233
+ "if",
2234
+ [
2235
+ "==",
2236
+ "@entity.correctCount",
2237
+ "@entity.totalItems"
2238
+ ],
2239
+ "Correct",
2240
+ [
2241
+ "str/concat",
2242
+ "@entity.correctCount",
2243
+ " / ",
2244
+ "@entity.totalItems",
2245
+ " correct"
2246
+ ]
2247
+ ],
2248
+ [
2249
+ "str/concat",
2250
+ [
2251
+ "array/len",
2252
+ "@entity.placedIds"
2253
+ ],
2254
+ " / ",
2255
+ "@entity.totalItems",
2256
+ " placed"
2257
+ ]
2258
+ ],
2259
+ "type": "badge",
2260
+ "variant": [
2261
+ "if",
2262
+ "@entity.checked",
2263
+ [
2264
+ "if",
2265
+ [
2266
+ "==",
2267
+ "@entity.correctCount",
2268
+ "@entity.totalItems"
2269
+ ],
2270
+ "success",
2271
+ "error"
2272
+ ],
2273
+ "neutral"
2274
+ ]
2275
+ }
2276
+ ],
2277
+ "direction": "horizontal",
2278
+ "gap": "md",
2279
+ "justify": "between",
2280
+ "type": "stack"
1988
2281
  },
1989
2282
  {
1990
2283
  "animate": "@config.animate",
@@ -1992,6 +2285,11 @@
1992
2285
  "gridStep": 1.0,
1993
2286
  "height": "@config.height",
1994
2287
  "interactive": "@config.interactive",
2288
+ "keyMap": {
2289
+ "Backspace": "UNDO",
2290
+ "KeyR": "RETRY",
2291
+ "Space": "CHECK"
2292
+ },
1995
2293
  "points": [],
1996
2294
  "shapes": "@entity.slotShapes",
1997
2295
  "showAxes": false,
@@ -2039,6 +2337,7 @@
2039
2337
  "id"
2040
2338
  ]
2041
2339
  },
2340
+ "disabled": "@entity.checked",
2042
2341
  "label": [
2043
2342
  "if",
2044
2343
  [
@@ -2072,103 +2371,96 @@
2072
2371
  "label"
2073
2372
  ]
2074
2373
  ],
2075
- "size": "sm",
2374
+ "size": "lg",
2076
2375
  "type": "button",
2077
2376
  "variant": "secondary"
2078
2377
  }
2079
2378
  ]
2080
2379
  ],
2081
- "direction": "horizontal",
2082
- "gap": "xs",
2380
+ "direction": "vertical",
2381
+ "gap": "sm",
2083
2382
  "type": "stack"
2084
2383
  },
2085
2384
  {
2385
+ "align": "center",
2086
2386
  "children": [
2087
2387
  {
2088
- "action": "UNDO",
2388
+ "action": "CHECK",
2089
2389
  "disabled": [
2090
2390
  "if",
2091
2391
  [
2092
- ">",
2392
+ ">=",
2093
2393
  [
2094
2394
  "array/len",
2095
2395
  "@entity.placedIds"
2096
2396
  ],
2097
- 0.0
2397
+ "@entity.totalItems"
2098
2398
  ],
2099
2399
  false,
2100
2400
  true
2101
2401
  ],
2102
- "label": "@config.undoLabel",
2402
+ "icon": "check",
2403
+ "label": "@config.checkLabel",
2103
2404
  "type": "button",
2104
- "variant": "ghost"
2405
+ "variant": "primary"
2105
2406
  },
2106
2407
  {
2107
- "action": "CHECK",
2408
+ "action": "UNDO",
2108
2409
  "disabled": [
2109
2410
  "if",
2110
2411
  [
2111
- ">=",
2412
+ ">",
2112
2413
  [
2113
2414
  "array/len",
2114
2415
  "@entity.placedIds"
2115
2416
  ],
2116
- "@entity.totalItems"
2417
+ 0.0
2117
2418
  ],
2118
2419
  false,
2119
2420
  true
2120
2421
  ],
2121
- "label": "@config.checkLabel",
2422
+ "icon": "chevron-left",
2423
+ "label": "@config.undoLabel",
2122
2424
  "type": "button",
2123
- "variant": "primary"
2425
+ "variant": "secondary"
2124
2426
  },
2125
2427
  {
2126
2428
  "action": "RETRY",
2429
+ "icon": "rotate-ccw",
2127
2430
  "label": "@config.retryLabel",
2128
2431
  "type": "button",
2129
2432
  "variant": "ghost"
2130
- }
2131
- ],
2132
- "direction": "horizontal",
2133
- "gap": "sm",
2134
- "type": "stack"
2135
- },
2136
- {
2137
- "children": [
2433
+ },
2138
2434
  {
2139
- "label": [
2140
- "if",
2141
- "@entity.checked",
2142
- "@entity.verdict",
2143
- "Not checked yet"
2144
- ],
2145
- "type": "badge",
2146
- "variant": [
2147
- "if",
2148
- "@entity.checked",
2435
+ "color": "muted",
2436
+ "content": [
2437
+ "str/concat",
2438
+ "Placed ",
2149
2439
  [
2150
- "if",
2151
- [
2152
- "==",
2153
- "@entity.correctCount",
2154
- "@entity.totalItems"
2155
- ],
2156
- "success",
2157
- "danger"
2440
+ "array/len",
2441
+ "@entity.placedIds"
2158
2442
  ],
2159
- "neutral"
2160
- ]
2161
- },
2162
- {
2163
- "label": "Score",
2164
- "max": "@entity.totalItems",
2165
- "type": "stat-display",
2166
- "value": "@entity.correctCount"
2443
+ " of ",
2444
+ "@entity.totalItems"
2445
+ ],
2446
+ "type": "typography",
2447
+ "variant": "caption"
2167
2448
  }
2168
2449
  ],
2169
2450
  "direction": "horizontal",
2170
2451
  "gap": "sm",
2171
- "type": "stack"
2452
+ "type": "stack",
2453
+ "wrap": true
2454
+ },
2455
+ {
2456
+ "content": [
2457
+ "if",
2458
+ "@entity.checked",
2459
+ "@entity.verdict",
2460
+ "Tap items to build the sequence in order, then press Check."
2461
+ ],
2462
+ "type": "typography",
2463
+ "variant": "body"
2172
2464
  }
2173
2465
  ],
2174
2466
  "direction": "vertical",
@@ -2378,14 +2670,15 @@
2378
2670
  ],
2379
2671
  [
2380
2672
  {
2381
- "color": "@config.slotBorderColor",
2382
- "fill": "@fillColor",
2673
+ "fillStyle": "tint",
2674
+ "fillTone": "@fillColor",
2383
2675
  "height": "@config.slotHeight",
2384
2676
  "id": [
2385
2677
  "str/concat",
2386
2678
  "slot-",
2387
2679
  "@i"
2388
2680
  ],
2681
+ "tone": "@config.slotBorderColor",
2389
2682
  "type": "rect",
2390
2683
  "width": "@config.slotWidth",
2391
2684
  "x": "@bx",
@@ -2393,8 +2686,6 @@
2393
2686
  },
2394
2687
  {
2395
2688
  "align": "center",
2396
- "color": "@config.slotTextColor",
2397
- "fontSize": "@config.slotFontSize",
2398
2689
  "id": [
2399
2690
  "str/concat",
2400
2691
  "slot-label-",
@@ -2414,6 +2705,8 @@
2414
2705
  ]
2415
2706
  ]
2416
2707
  ],
2708
+ "textSize": "@config.slotFontSize",
2709
+ "tone": "@config.slotTextColor",
2417
2710
  "type": "text",
2418
2711
  "x": [
2419
2712
  "+",
@@ -2456,14 +2749,88 @@
2456
2749
  {
2457
2750
  "children": [
2458
2751
  {
2459
- "content": "@entity.title",
2460
- "type": "typography",
2461
- "variant": "h4"
2462
- },
2463
- {
2464
- "content": "Tap items below to build the sequence in order, then press Check.",
2465
- "type": "typography",
2466
- "variant": "body"
2752
+ "align": "start",
2753
+ "children": [
2754
+ {
2755
+ "children": [
2756
+ {
2757
+ "content": "@entity.title",
2758
+ "type": "typography",
2759
+ "variant": "h4"
2760
+ },
2761
+ [
2762
+ "if",
2763
+ [
2764
+ "==",
2765
+ "@config.summary",
2766
+ ""
2767
+ ],
2768
+ null,
2769
+ {
2770
+ "color": "muted",
2771
+ "content": "@config.summary",
2772
+ "type": "typography",
2773
+ "variant": "body2"
2774
+ }
2775
+ ]
2776
+ ],
2777
+ "direction": "vertical",
2778
+ "gap": "xs",
2779
+ "type": "stack"
2780
+ },
2781
+ {
2782
+ "label": [
2783
+ "if",
2784
+ "@entity.checked",
2785
+ [
2786
+ "if",
2787
+ [
2788
+ "==",
2789
+ "@entity.correctCount",
2790
+ "@entity.totalItems"
2791
+ ],
2792
+ "Correct",
2793
+ [
2794
+ "str/concat",
2795
+ "@entity.correctCount",
2796
+ " / ",
2797
+ "@entity.totalItems",
2798
+ " correct"
2799
+ ]
2800
+ ],
2801
+ [
2802
+ "str/concat",
2803
+ [
2804
+ "array/len",
2805
+ "@entity.placedIds"
2806
+ ],
2807
+ " / ",
2808
+ "@entity.totalItems",
2809
+ " placed"
2810
+ ]
2811
+ ],
2812
+ "type": "badge",
2813
+ "variant": [
2814
+ "if",
2815
+ "@entity.checked",
2816
+ [
2817
+ "if",
2818
+ [
2819
+ "==",
2820
+ "@entity.correctCount",
2821
+ "@entity.totalItems"
2822
+ ],
2823
+ "success",
2824
+ "error"
2825
+ ],
2826
+ "neutral"
2827
+ ]
2828
+ }
2829
+ ],
2830
+ "direction": "horizontal",
2831
+ "gap": "md",
2832
+ "justify": "between",
2833
+ "type": "stack"
2467
2834
  },
2468
2835
  {
2469
2836
  "animate": "@config.animate",
@@ -2471,6 +2838,11 @@
2471
2838
  "gridStep": 1.0,
2472
2839
  "height": "@config.height",
2473
2840
  "interactive": "@config.interactive",
2841
+ "keyMap": {
2842
+ "Backspace": "UNDO",
2843
+ "KeyR": "RETRY",
2844
+ "Space": "CHECK"
2845
+ },
2474
2846
  "points": [],
2475
2847
  "shapes": "@entity.slotShapes",
2476
2848
  "showAxes": false,
@@ -2518,6 +2890,7 @@
2518
2890
  "id"
2519
2891
  ]
2520
2892
  },
2893
+ "disabled": "@entity.checked",
2521
2894
  "label": [
2522
2895
  "if",
2523
2896
  [
@@ -2551,103 +2924,96 @@
2551
2924
  "label"
2552
2925
  ]
2553
2926
  ],
2554
- "size": "sm",
2927
+ "size": "lg",
2555
2928
  "type": "button",
2556
2929
  "variant": "secondary"
2557
2930
  }
2558
2931
  ]
2559
2932
  ],
2560
- "direction": "horizontal",
2561
- "gap": "xs",
2933
+ "direction": "vertical",
2934
+ "gap": "sm",
2562
2935
  "type": "stack"
2563
2936
  },
2564
2937
  {
2938
+ "align": "center",
2565
2939
  "children": [
2566
2940
  {
2567
- "action": "UNDO",
2941
+ "action": "CHECK",
2568
2942
  "disabled": [
2569
2943
  "if",
2570
2944
  [
2571
- ">",
2945
+ ">=",
2572
2946
  [
2573
2947
  "array/len",
2574
2948
  "@entity.placedIds"
2575
2949
  ],
2576
- 0.0
2950
+ "@entity.totalItems"
2577
2951
  ],
2578
2952
  false,
2579
2953
  true
2580
2954
  ],
2581
- "label": "@config.undoLabel",
2955
+ "icon": "check",
2956
+ "label": "@config.checkLabel",
2582
2957
  "type": "button",
2583
- "variant": "ghost"
2958
+ "variant": "primary"
2584
2959
  },
2585
2960
  {
2586
- "action": "CHECK",
2961
+ "action": "UNDO",
2587
2962
  "disabled": [
2588
2963
  "if",
2589
2964
  [
2590
- ">=",
2965
+ ">",
2591
2966
  [
2592
2967
  "array/len",
2593
2968
  "@entity.placedIds"
2594
2969
  ],
2595
- "@entity.totalItems"
2970
+ 0.0
2596
2971
  ],
2597
2972
  false,
2598
2973
  true
2599
2974
  ],
2600
- "label": "@config.checkLabel",
2975
+ "icon": "chevron-left",
2976
+ "label": "@config.undoLabel",
2601
2977
  "type": "button",
2602
- "variant": "primary"
2978
+ "variant": "secondary"
2603
2979
  },
2604
2980
  {
2605
2981
  "action": "RETRY",
2982
+ "icon": "rotate-ccw",
2606
2983
  "label": "@config.retryLabel",
2607
2984
  "type": "button",
2608
2985
  "variant": "ghost"
2609
- }
2610
- ],
2611
- "direction": "horizontal",
2612
- "gap": "sm",
2613
- "type": "stack"
2614
- },
2615
- {
2616
- "children": [
2986
+ },
2617
2987
  {
2618
- "label": [
2619
- "if",
2620
- "@entity.checked",
2621
- "@entity.verdict",
2622
- "Not checked yet"
2623
- ],
2624
- "type": "badge",
2625
- "variant": [
2626
- "if",
2627
- "@entity.checked",
2988
+ "color": "muted",
2989
+ "content": [
2990
+ "str/concat",
2991
+ "Placed ",
2628
2992
  [
2629
- "if",
2630
- [
2631
- "==",
2632
- "@entity.correctCount",
2633
- "@entity.totalItems"
2634
- ],
2635
- "success",
2636
- "danger"
2993
+ "array/len",
2994
+ "@entity.placedIds"
2637
2995
  ],
2638
- "neutral"
2639
- ]
2640
- },
2641
- {
2642
- "label": "Score",
2643
- "max": "@entity.totalItems",
2644
- "type": "stat-display",
2645
- "value": "@entity.correctCount"
2996
+ " of ",
2997
+ "@entity.totalItems"
2998
+ ],
2999
+ "type": "typography",
3000
+ "variant": "caption"
2646
3001
  }
2647
3002
  ],
2648
3003
  "direction": "horizontal",
2649
3004
  "gap": "sm",
2650
- "type": "stack"
3005
+ "type": "stack",
3006
+ "wrap": true
3007
+ },
3008
+ {
3009
+ "content": [
3010
+ "if",
3011
+ "@entity.checked",
3012
+ "@entity.verdict",
3013
+ "Tap items to build the sequence in order, then press Check."
3014
+ ],
3015
+ "type": "typography",
3016
+ "variant": "body"
2651
3017
  }
2652
3018
  ],
2653
3019
  "direction": "vertical",
@@ -2937,14 +3303,15 @@
2937
3303
  ],
2938
3304
  [
2939
3305
  {
2940
- "color": "@config.slotBorderColor",
2941
- "fill": "@fillColor",
3306
+ "fillStyle": "tint",
3307
+ "fillTone": "@fillColor",
2942
3308
  "height": "@config.slotHeight",
2943
3309
  "id": [
2944
3310
  "str/concat",
2945
3311
  "slot-",
2946
3312
  "@i"
2947
3313
  ],
3314
+ "tone": "@config.slotBorderColor",
2948
3315
  "type": "rect",
2949
3316
  "width": "@config.slotWidth",
2950
3317
  "x": "@bx",
@@ -2952,8 +3319,6 @@
2952
3319
  },
2953
3320
  {
2954
3321
  "align": "center",
2955
- "color": "@config.slotTextColor",
2956
- "fontSize": "@config.slotFontSize",
2957
3322
  "id": [
2958
3323
  "str/concat",
2959
3324
  "slot-label-",
@@ -2973,6 +3338,8 @@
2973
3338
  ]
2974
3339
  ]
2975
3340
  ],
3341
+ "textSize": "@config.slotFontSize",
3342
+ "tone": "@config.slotTextColor",
2976
3343
  "type": "text",
2977
3344
  "x": [
2978
3345
  "+",
@@ -3015,14 +3382,88 @@
3015
3382
  {
3016
3383
  "children": [
3017
3384
  {
3018
- "content": "@entity.title",
3019
- "type": "typography",
3020
- "variant": "h4"
3021
- },
3022
- {
3023
- "content": "Tap items below to build the sequence in order, then press Check.",
3024
- "type": "typography",
3025
- "variant": "body"
3385
+ "align": "start",
3386
+ "children": [
3387
+ {
3388
+ "children": [
3389
+ {
3390
+ "content": "@entity.title",
3391
+ "type": "typography",
3392
+ "variant": "h4"
3393
+ },
3394
+ [
3395
+ "if",
3396
+ [
3397
+ "==",
3398
+ "@config.summary",
3399
+ ""
3400
+ ],
3401
+ null,
3402
+ {
3403
+ "color": "muted",
3404
+ "content": "@config.summary",
3405
+ "type": "typography",
3406
+ "variant": "body2"
3407
+ }
3408
+ ]
3409
+ ],
3410
+ "direction": "vertical",
3411
+ "gap": "xs",
3412
+ "type": "stack"
3413
+ },
3414
+ {
3415
+ "label": [
3416
+ "if",
3417
+ "@entity.checked",
3418
+ [
3419
+ "if",
3420
+ [
3421
+ "==",
3422
+ "@entity.correctCount",
3423
+ "@entity.totalItems"
3424
+ ],
3425
+ "Correct",
3426
+ [
3427
+ "str/concat",
3428
+ "@entity.correctCount",
3429
+ " / ",
3430
+ "@entity.totalItems",
3431
+ " correct"
3432
+ ]
3433
+ ],
3434
+ [
3435
+ "str/concat",
3436
+ [
3437
+ "array/len",
3438
+ "@entity.placedIds"
3439
+ ],
3440
+ " / ",
3441
+ "@entity.totalItems",
3442
+ " placed"
3443
+ ]
3444
+ ],
3445
+ "type": "badge",
3446
+ "variant": [
3447
+ "if",
3448
+ "@entity.checked",
3449
+ [
3450
+ "if",
3451
+ [
3452
+ "==",
3453
+ "@entity.correctCount",
3454
+ "@entity.totalItems"
3455
+ ],
3456
+ "success",
3457
+ "error"
3458
+ ],
3459
+ "neutral"
3460
+ ]
3461
+ }
3462
+ ],
3463
+ "direction": "horizontal",
3464
+ "gap": "md",
3465
+ "justify": "between",
3466
+ "type": "stack"
3026
3467
  },
3027
3468
  {
3028
3469
  "animate": "@config.animate",
@@ -3030,6 +3471,11 @@
3030
3471
  "gridStep": 1.0,
3031
3472
  "height": "@config.height",
3032
3473
  "interactive": "@config.interactive",
3474
+ "keyMap": {
3475
+ "Backspace": "UNDO",
3476
+ "KeyR": "RETRY",
3477
+ "Space": "CHECK"
3478
+ },
3033
3479
  "points": [],
3034
3480
  "shapes": "@entity.slotShapes",
3035
3481
  "showAxes": false,
@@ -3077,6 +3523,7 @@
3077
3523
  "id"
3078
3524
  ]
3079
3525
  },
3526
+ "disabled": "@entity.checked",
3080
3527
  "label": [
3081
3528
  "if",
3082
3529
  [
@@ -3110,103 +3557,96 @@
3110
3557
  "label"
3111
3558
  ]
3112
3559
  ],
3113
- "size": "sm",
3560
+ "size": "lg",
3114
3561
  "type": "button",
3115
3562
  "variant": "secondary"
3116
3563
  }
3117
3564
  ]
3118
3565
  ],
3119
- "direction": "horizontal",
3120
- "gap": "xs",
3566
+ "direction": "vertical",
3567
+ "gap": "sm",
3121
3568
  "type": "stack"
3122
3569
  },
3123
3570
  {
3571
+ "align": "center",
3124
3572
  "children": [
3125
3573
  {
3126
- "action": "UNDO",
3574
+ "action": "CHECK",
3127
3575
  "disabled": [
3128
3576
  "if",
3129
3577
  [
3130
- ">",
3578
+ ">=",
3131
3579
  [
3132
3580
  "array/len",
3133
3581
  "@entity.placedIds"
3134
3582
  ],
3135
- 0.0
3583
+ "@entity.totalItems"
3136
3584
  ],
3137
3585
  false,
3138
3586
  true
3139
3587
  ],
3140
- "label": "@config.undoLabel",
3588
+ "icon": "check",
3589
+ "label": "@config.checkLabel",
3141
3590
  "type": "button",
3142
- "variant": "ghost"
3591
+ "variant": "primary"
3143
3592
  },
3144
3593
  {
3145
- "action": "CHECK",
3594
+ "action": "UNDO",
3146
3595
  "disabled": [
3147
3596
  "if",
3148
3597
  [
3149
- ">=",
3598
+ ">",
3150
3599
  [
3151
3600
  "array/len",
3152
3601
  "@entity.placedIds"
3153
3602
  ],
3154
- "@entity.totalItems"
3603
+ 0.0
3155
3604
  ],
3156
3605
  false,
3157
3606
  true
3158
3607
  ],
3159
- "label": "@config.checkLabel",
3608
+ "icon": "chevron-left",
3609
+ "label": "@config.undoLabel",
3160
3610
  "type": "button",
3161
- "variant": "primary"
3611
+ "variant": "secondary"
3162
3612
  },
3163
3613
  {
3164
3614
  "action": "RETRY",
3615
+ "icon": "rotate-ccw",
3165
3616
  "label": "@config.retryLabel",
3166
3617
  "type": "button",
3167
3618
  "variant": "ghost"
3168
- }
3169
- ],
3170
- "direction": "horizontal",
3171
- "gap": "sm",
3172
- "type": "stack"
3173
- },
3174
- {
3175
- "children": [
3619
+ },
3176
3620
  {
3177
- "label": [
3178
- "if",
3179
- "@entity.checked",
3180
- "@entity.verdict",
3181
- "Not checked yet"
3182
- ],
3183
- "type": "badge",
3184
- "variant": [
3185
- "if",
3186
- "@entity.checked",
3621
+ "color": "muted",
3622
+ "content": [
3623
+ "str/concat",
3624
+ "Placed ",
3187
3625
  [
3188
- "if",
3189
- [
3190
- "==",
3191
- "@entity.correctCount",
3192
- "@entity.totalItems"
3193
- ],
3194
- "success",
3195
- "danger"
3626
+ "array/len",
3627
+ "@entity.placedIds"
3196
3628
  ],
3197
- "neutral"
3198
- ]
3199
- },
3200
- {
3201
- "label": "Score",
3202
- "max": "@entity.totalItems",
3203
- "type": "stat-display",
3204
- "value": "@entity.correctCount"
3629
+ " of ",
3630
+ "@entity.totalItems"
3631
+ ],
3632
+ "type": "typography",
3633
+ "variant": "caption"
3205
3634
  }
3206
3635
  ],
3207
3636
  "direction": "horizontal",
3208
3637
  "gap": "sm",
3209
- "type": "stack"
3638
+ "type": "stack",
3639
+ "wrap": true
3640
+ },
3641
+ {
3642
+ "content": [
3643
+ "if",
3644
+ "@entity.checked",
3645
+ "@entity.verdict",
3646
+ "Tap items to build the sequence in order, then press Check."
3647
+ ],
3648
+ "type": "typography",
3649
+ "variant": "body"
3210
3650
  }
3211
3651
  ],
3212
3652
  "direction": "vertical",
@@ -3430,14 +3870,15 @@
3430
3870
  ],
3431
3871
  [
3432
3872
  {
3433
- "color": "@config.slotBorderColor",
3434
- "fill": "@fillColor",
3873
+ "fillStyle": "tint",
3874
+ "fillTone": "@fillColor",
3435
3875
  "height": "@config.slotHeight",
3436
3876
  "id": [
3437
3877
  "str/concat",
3438
3878
  "slot-",
3439
3879
  "@i"
3440
3880
  ],
3881
+ "tone": "@config.slotBorderColor",
3441
3882
  "type": "rect",
3442
3883
  "width": "@config.slotWidth",
3443
3884
  "x": "@bx",
@@ -3445,8 +3886,6 @@
3445
3886
  },
3446
3887
  {
3447
3888
  "align": "center",
3448
- "color": "@config.slotTextColor",
3449
- "fontSize": "@config.slotFontSize",
3450
3889
  "id": [
3451
3890
  "str/concat",
3452
3891
  "slot-label-",
@@ -3466,6 +3905,8 @@
3466
3905
  ]
3467
3906
  ]
3468
3907
  ],
3908
+ "textSize": "@config.slotFontSize",
3909
+ "tone": "@config.slotTextColor",
3469
3910
  "type": "text",
3470
3911
  "x": [
3471
3912
  "+",
@@ -3508,14 +3949,88 @@
3508
3949
  {
3509
3950
  "children": [
3510
3951
  {
3511
- "content": "@entity.title",
3512
- "type": "typography",
3513
- "variant": "h4"
3514
- },
3515
- {
3516
- "content": "Tap items below to build the sequence in order, then press Check.",
3517
- "type": "typography",
3518
- "variant": "body"
3952
+ "align": "start",
3953
+ "children": [
3954
+ {
3955
+ "children": [
3956
+ {
3957
+ "content": "@entity.title",
3958
+ "type": "typography",
3959
+ "variant": "h4"
3960
+ },
3961
+ [
3962
+ "if",
3963
+ [
3964
+ "==",
3965
+ "@config.summary",
3966
+ ""
3967
+ ],
3968
+ null,
3969
+ {
3970
+ "color": "muted",
3971
+ "content": "@config.summary",
3972
+ "type": "typography",
3973
+ "variant": "body2"
3974
+ }
3975
+ ]
3976
+ ],
3977
+ "direction": "vertical",
3978
+ "gap": "xs",
3979
+ "type": "stack"
3980
+ },
3981
+ {
3982
+ "label": [
3983
+ "if",
3984
+ "@entity.checked",
3985
+ [
3986
+ "if",
3987
+ [
3988
+ "==",
3989
+ "@entity.correctCount",
3990
+ "@entity.totalItems"
3991
+ ],
3992
+ "Correct",
3993
+ [
3994
+ "str/concat",
3995
+ "@entity.correctCount",
3996
+ " / ",
3997
+ "@entity.totalItems",
3998
+ " correct"
3999
+ ]
4000
+ ],
4001
+ [
4002
+ "str/concat",
4003
+ [
4004
+ "array/len",
4005
+ "@entity.placedIds"
4006
+ ],
4007
+ " / ",
4008
+ "@entity.totalItems",
4009
+ " placed"
4010
+ ]
4011
+ ],
4012
+ "type": "badge",
4013
+ "variant": [
4014
+ "if",
4015
+ "@entity.checked",
4016
+ [
4017
+ "if",
4018
+ [
4019
+ "==",
4020
+ "@entity.correctCount",
4021
+ "@entity.totalItems"
4022
+ ],
4023
+ "success",
4024
+ "error"
4025
+ ],
4026
+ "neutral"
4027
+ ]
4028
+ }
4029
+ ],
4030
+ "direction": "horizontal",
4031
+ "gap": "md",
4032
+ "justify": "between",
4033
+ "type": "stack"
3519
4034
  },
3520
4035
  {
3521
4036
  "animate": "@config.animate",
@@ -3523,6 +4038,11 @@
3523
4038
  "gridStep": 1.0,
3524
4039
  "height": "@config.height",
3525
4040
  "interactive": "@config.interactive",
4041
+ "keyMap": {
4042
+ "Backspace": "UNDO",
4043
+ "KeyR": "RETRY",
4044
+ "Space": "CHECK"
4045
+ },
3526
4046
  "points": [],
3527
4047
  "shapes": "@entity.slotShapes",
3528
4048
  "showAxes": false,
@@ -3570,6 +4090,7 @@
3570
4090
  "id"
3571
4091
  ]
3572
4092
  },
4093
+ "disabled": "@entity.checked",
3573
4094
  "label": [
3574
4095
  "if",
3575
4096
  [
@@ -3603,103 +4124,96 @@
3603
4124
  "label"
3604
4125
  ]
3605
4126
  ],
3606
- "size": "sm",
4127
+ "size": "lg",
3607
4128
  "type": "button",
3608
4129
  "variant": "secondary"
3609
4130
  }
3610
4131
  ]
3611
4132
  ],
3612
- "direction": "horizontal",
3613
- "gap": "xs",
4133
+ "direction": "vertical",
4134
+ "gap": "sm",
3614
4135
  "type": "stack"
3615
4136
  },
3616
4137
  {
4138
+ "align": "center",
3617
4139
  "children": [
3618
4140
  {
3619
- "action": "UNDO",
4141
+ "action": "CHECK",
3620
4142
  "disabled": [
3621
4143
  "if",
3622
4144
  [
3623
- ">",
4145
+ ">=",
3624
4146
  [
3625
4147
  "array/len",
3626
4148
  "@entity.placedIds"
3627
4149
  ],
3628
- 0.0
4150
+ "@entity.totalItems"
3629
4151
  ],
3630
4152
  false,
3631
4153
  true
3632
4154
  ],
3633
- "label": "@config.undoLabel",
4155
+ "icon": "check",
4156
+ "label": "@config.checkLabel",
3634
4157
  "type": "button",
3635
- "variant": "ghost"
4158
+ "variant": "primary"
3636
4159
  },
3637
4160
  {
3638
- "action": "CHECK",
4161
+ "action": "UNDO",
3639
4162
  "disabled": [
3640
4163
  "if",
3641
4164
  [
3642
- ">=",
4165
+ ">",
3643
4166
  [
3644
4167
  "array/len",
3645
4168
  "@entity.placedIds"
3646
4169
  ],
3647
- "@entity.totalItems"
4170
+ 0.0
3648
4171
  ],
3649
4172
  false,
3650
4173
  true
3651
4174
  ],
3652
- "label": "@config.checkLabel",
4175
+ "icon": "chevron-left",
4176
+ "label": "@config.undoLabel",
3653
4177
  "type": "button",
3654
- "variant": "primary"
4178
+ "variant": "secondary"
3655
4179
  },
3656
4180
  {
3657
4181
  "action": "RETRY",
4182
+ "icon": "rotate-ccw",
3658
4183
  "label": "@config.retryLabel",
3659
4184
  "type": "button",
3660
4185
  "variant": "ghost"
3661
- }
3662
- ],
3663
- "direction": "horizontal",
3664
- "gap": "sm",
3665
- "type": "stack"
3666
- },
3667
- {
3668
- "children": [
4186
+ },
3669
4187
  {
3670
- "label": [
3671
- "if",
3672
- "@entity.checked",
3673
- "@entity.verdict",
3674
- "Not checked yet"
3675
- ],
3676
- "type": "badge",
3677
- "variant": [
3678
- "if",
3679
- "@entity.checked",
4188
+ "color": "muted",
4189
+ "content": [
4190
+ "str/concat",
4191
+ "Placed ",
3680
4192
  [
3681
- "if",
3682
- [
3683
- "==",
3684
- "@entity.correctCount",
3685
- "@entity.totalItems"
3686
- ],
3687
- "success",
3688
- "danger"
4193
+ "array/len",
4194
+ "@entity.placedIds"
3689
4195
  ],
3690
- "neutral"
3691
- ]
3692
- },
3693
- {
3694
- "label": "Score",
3695
- "max": "@entity.totalItems",
3696
- "type": "stat-display",
3697
- "value": "@entity.correctCount"
4196
+ " of ",
4197
+ "@entity.totalItems"
4198
+ ],
4199
+ "type": "typography",
4200
+ "variant": "caption"
3698
4201
  }
3699
4202
  ],
3700
4203
  "direction": "horizontal",
3701
4204
  "gap": "sm",
3702
- "type": "stack"
4205
+ "type": "stack",
4206
+ "wrap": true
4207
+ },
4208
+ {
4209
+ "content": [
4210
+ "if",
4211
+ "@entity.checked",
4212
+ "@entity.verdict",
4213
+ "Tap items to build the sequence in order, then press Check."
4214
+ ],
4215
+ "type": "typography",
4216
+ "variant": "body"
3703
4217
  }
3704
4218
  ],
3705
4219
  "direction": "vertical",
@@ -3866,6 +4380,26 @@
3866
4380
  {
3867
4381
  "name": "opacity",
3868
4382
  "type": "number"
4383
+ },
4384
+ {
4385
+ "name": "tone",
4386
+ "type": "string"
4387
+ },
4388
+ {
4389
+ "name": "fillTone",
4390
+ "type": "string"
4391
+ },
4392
+ {
4393
+ "name": "stroke",
4394
+ "type": "string"
4395
+ },
4396
+ {
4397
+ "name": "textSize",
4398
+ "type": "string"
4399
+ },
4400
+ {
4401
+ "name": "fillStyle",
4402
+ "type": "string"
3869
4403
  }
3870
4404
  ],
3871
4405
  "LearnArrangementShapePoint": [