@almadar/core 10.90.0 → 10.92.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 (38) hide show
  1. package/dist/builders.d.ts +3 -3
  2. package/dist/builders.js +4 -2
  3. package/dist/builders.js.map +1 -1
  4. package/dist/{effect-7jQQxiIt.d.ts → effect-DGa2ixo7.d.ts} +13 -1
  5. package/dist/{entityAccess-CpHfCQA3.d.ts → entityAccess-CXennIKj.d.ts} +1 -1
  6. package/dist/factory/index.d.ts +4 -4
  7. package/dist/factory/index.js +437 -101
  8. package/dist/factory/index.js.map +1 -1
  9. package/dist/factory-runtime/index.d.ts +3 -3
  10. package/dist/factory-runtime/index.js +8 -3
  11. package/dist/factory-runtime/index.js.map +1 -1
  12. package/dist/i18n/index.js +6 -0
  13. package/dist/i18n/index.js.map +1 -1
  14. package/dist/{index-BresfHJy.d.ts → index-BFortVj8.d.ts} +39 -10
  15. package/dist/index.d.ts +11 -72
  16. package/dist/index.js +829 -209
  17. package/dist/index.js.map +1 -1
  18. package/dist/mock/index.d.ts +11 -5
  19. package/dist/mock/index.js +3 -2
  20. package/dist/mock/index.js.map +1 -1
  21. package/dist/patterns/component-mapping.json +1 -1
  22. package/dist/patterns/event-contracts.json +1 -1
  23. package/dist/patterns/index.d.ts +1570 -181
  24. package/dist/patterns/index.js +771 -109
  25. package/dist/patterns/index.js.map +1 -1
  26. package/dist/patterns/integrators-registry.json +333 -6
  27. package/dist/patterns/patterns-registry.json +436 -101
  28. package/dist/patterns/registry.json +436 -101
  29. package/dist/patterns/services-registry.json +400 -68
  30. package/dist/{schema-C52juBr8.d.ts → schema-DIL07Bmv.d.ts} +25 -25
  31. package/dist/state-machine/index.js +19 -4
  32. package/dist/state-machine/index.js.map +1 -1
  33. package/dist/{trait-CFiL1YUN.d.ts → trait-DHb48lyx.d.ts} +10 -1
  34. package/dist/types/index.d.ts +5 -5
  35. package/dist/types/index.js +32 -3
  36. package/dist/types/index.js.map +1 -1
  37. package/dist/{types-BgC8ETnl.d.ts → types-F5EPwMor.d.ts} +2 -2
  38. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "1.0.0",
3
- "exportedAt": "2026-09-10T08:51:20.514Z",
3
+ "exportedAt": "2026-09-12T18:14:02.248Z",
4
4
  "patterns": {
5
5
  "entity-table": {
6
6
  "type": "entity-table",
@@ -9,6 +9,7 @@
9
9
  "tier": "organisms",
10
10
  "family": "core",
11
11
  "description": "Data table with columns and sorting",
12
+ "fieldsContract": "display",
12
13
  "suggestedFor": [
13
14
  "data-dense views",
14
15
  "comparisons",
@@ -477,6 +478,48 @@
477
478
  "card-rows"
478
479
  ],
479
480
  "default": "dense"
481
+ },
482
+ "relationsData": {
483
+ "types": [
484
+ "object"
485
+ ],
486
+ "description": "Relation display data: { fieldName: [{value, label}] } — injected server-side by the runtime (relation-option injection) or bound by compiled codegen; resolves stored foreign ids to display names for a column whose field is relation-typed. Same contract DetailPanel takes.",
487
+ "mapValue": {
488
+ "types": [
489
+ "array"
490
+ ],
491
+ "items": {
492
+ "types": [
493
+ "object"
494
+ ],
495
+ "properties": {
496
+ "value": {
497
+ "types": [
498
+ "string"
499
+ ]
500
+ },
501
+ "label": {
502
+ "types": [
503
+ "string"
504
+ ]
505
+ },
506
+ "description": {
507
+ "types": [
508
+ "string"
509
+ ]
510
+ },
511
+ "disabled": {
512
+ "types": [
513
+ "boolean"
514
+ ]
515
+ }
516
+ },
517
+ "required": [
518
+ "value",
519
+ "label"
520
+ ]
521
+ }
522
+ }
480
523
  }
481
524
  }
482
525
  },
@@ -707,7 +750,6 @@
707
750
  "function"
708
751
  ],
709
752
  "description": "Render function for each item. In .lolo: renderItem: (fn item <Component …={@item.field}/>), binding per-item fields via @item.field.",
710
- "kind": "callback",
711
753
  "callbackArgs": [
712
754
  {
713
755
  "name": "item",
@@ -4301,7 +4343,10 @@
4301
4343
  "1:1",
4302
4344
  "16:9",
4303
4345
  "5:7",
4304
- "8:1"
4346
+ "8:1",
4347
+ "4:1",
4348
+ "5:3",
4349
+ "1:2"
4305
4350
  ]
4306
4351
  },
4307
4352
  "atlas": {
@@ -4461,7 +4506,10 @@
4461
4506
  "1:1",
4462
4507
  "16:9",
4463
4508
  "5:7",
4464
- "8:1"
4509
+ "8:1",
4510
+ "4:1",
4511
+ "5:3",
4512
+ "1:2"
4465
4513
  ]
4466
4514
  },
4467
4515
  "atlas": {
@@ -7495,6 +7543,7 @@
7495
7543
  "button": {
7496
7544
  "type": "button",
7497
7545
  "category": "component",
7546
+ "sourceFile": "components/core/atoms/Button.tsx",
7498
7547
  "tier": "atoms",
7499
7548
  "family": "core",
7500
7549
  "description": "Clickable button that emits events",
@@ -7639,7 +7688,10 @@
7639
7688
  "1:1",
7640
7689
  "16:9",
7641
7690
  "5:7",
7642
- "8:1"
7691
+ "8:1",
7692
+ "4:1",
7693
+ "5:3",
7694
+ "1:2"
7643
7695
  ]
7644
7696
  },
7645
7697
  "atlas": {
@@ -7681,7 +7733,8 @@
7681
7733
  "object"
7682
7734
  ],
7683
7735
  "description": "Payload to include with the action event",
7684
- "payloadFor": "action"
7736
+ "payloadFor": "action",
7737
+ "eventPayloadBrand": true
7685
7738
  },
7686
7739
  "label": {
7687
7740
  "types": [
@@ -7706,6 +7759,7 @@
7706
7759
  "badge": {
7707
7760
  "type": "badge",
7708
7761
  "category": "component",
7762
+ "sourceFile": "components/core/atoms/Badge.tsx",
7709
7763
  "tier": "atoms",
7710
7764
  "family": "core",
7711
7765
  "description": "Small label for status or count",
@@ -7837,7 +7891,10 @@
7837
7891
  "1:1",
7838
7892
  "16:9",
7839
7893
  "5:7",
7840
- "8:1"
7894
+ "8:1",
7895
+ "4:1",
7896
+ "5:3",
7897
+ "1:2"
7841
7898
  ]
7842
7899
  },
7843
7900
  "atlas": {
@@ -8337,6 +8394,7 @@
8337
8394
  "input": {
8338
8395
  "type": "input",
8339
8396
  "category": "component",
8397
+ "sourceFile": "components/core/atoms/Input.tsx",
8340
8398
  "tier": "atoms",
8341
8399
  "family": "core",
8342
8400
  "description": "Text input field",
@@ -8464,9 +8522,7 @@
8464
8522
  "function",
8465
8523
  "string"
8466
8524
  ],
8467
- "description": "Callback or declarative event key when clear button is clicked",
8468
- "kind": "event-ref",
8469
- "emitPayloadSchema": []
8525
+ "description": "Callback or declarative event key when clear button is clicked"
8470
8526
  },
8471
8527
  "options": {
8472
8528
  "types": [
@@ -8511,16 +8567,9 @@
8511
8567
  "kind": "event-ref",
8512
8568
  "emitPayloadSchema": [
8513
8569
  {
8514
- "name": "value",
8515
- "type": "string",
8516
- "required": true,
8517
- "typeWhen": [
8518
- {
8519
- "knob": "inputType",
8520
- "equals": "number",
8521
- "type": "number"
8522
- }
8523
- ]
8570
+ "name": "_payload",
8571
+ "type": "object",
8572
+ "required": false
8524
8573
  }
8525
8574
  ]
8526
8575
  }
@@ -8590,6 +8639,7 @@
8590
8639
  "select": {
8591
8640
  "type": "select",
8592
8641
  "category": "component",
8642
+ "sourceFile": "components/core/atoms/Select.tsx",
8593
8643
  "tier": "atoms",
8594
8644
  "family": "core",
8595
8645
  "description": "Dropdown select input",
@@ -8779,7 +8829,26 @@
8779
8829
  "function",
8780
8830
  "string"
8781
8831
  ],
8782
- "description": "Value-based change: a React callback (internal use) OR a declarative event key that emits `{ value }` on the bus (render-ui / lolo authoring). Mirrors the `onChange` handler|event convention so it's an event-emitting prop, not a bare callback."
8832
+ "description": "Value-based change: a React callback (internal use) OR a declarative event key that emits `{ value }` on the bus (render-ui / lolo authoring). Mirrors the `onChange` handler|event convention so it's an event-emitting prop, not a bare callback.",
8833
+ "kind": "event-ref",
8834
+ "emitPayloadSchema": [
8835
+ {
8836
+ "name": "value",
8837
+ "type": "string",
8838
+ "required": true,
8839
+ "schema": {
8840
+ "types": [
8841
+ "string",
8842
+ "array"
8843
+ ],
8844
+ "items": {
8845
+ "types": [
8846
+ "string"
8847
+ ]
8848
+ }
8849
+ }
8850
+ }
8851
+ ]
8783
8852
  }
8784
8853
  }
8785
8854
  },
@@ -9726,6 +9795,7 @@
9726
9795
  "repeatable-form-section": {
9727
9796
  "type": "repeatable-form-section",
9728
9797
  "category": "form",
9798
+ "sourceFile": "components/core/molecules/RepeatableFormSection.tsx",
9729
9799
  "tier": "molecules",
9730
9800
  "family": "core",
9731
9801
  "description": "RepeatableFormSection — a form section that repeats a fixed group of fields, letting the user add or remove entries.",
@@ -9789,7 +9859,6 @@
9789
9859
  ],
9790
9860
  "description": "Render function for each item. In .lolo: renderItem: (fn item <Component …={@item.field}/>), binding per-item fields via @item.field.",
9791
9861
  "required": true,
9792
- "kind": "callback",
9793
9862
  "callbackArgs": [
9794
9863
  {
9795
9864
  "name": "item",
@@ -11334,6 +11403,7 @@
11334
11403
  "input-group": {
11335
11404
  "type": "input-group",
11336
11405
  "category": "form",
11406
+ "sourceFile": "components/core/molecules/InputGroup.tsx",
11337
11407
  "tier": "molecules",
11338
11408
  "family": "core",
11339
11409
  "description": "InputGroup Molecule Component A component for grouping input with addons (icons, buttons, text). Uses Input, Button, Icon, and Typography atoms.",
@@ -11454,9 +11524,7 @@
11454
11524
  "function",
11455
11525
  "string"
11456
11526
  ],
11457
- "description": "Callback or declarative event key when clear button is clicked",
11458
- "kind": "event-ref",
11459
- "emitPayloadSchema": []
11527
+ "description": "Callback or declarative event key when clear button is clicked"
11460
11528
  },
11461
11529
  "options": {
11462
11530
  "types": [
@@ -11500,16 +11568,9 @@
11500
11568
  "kind": "event-ref",
11501
11569
  "emitPayloadSchema": [
11502
11570
  {
11503
- "name": "value",
11504
- "type": "string",
11505
- "required": true,
11506
- "typeWhen": [
11507
- {
11508
- "knob": "inputType",
11509
- "equals": "number",
11510
- "type": "number"
11511
- }
11512
- ]
11571
+ "name": "_payload",
11572
+ "type": "object",
11573
+ "required": false
11513
11574
  }
11514
11575
  ]
11515
11576
  },
@@ -13809,6 +13870,7 @@
13809
13870
  "game-shell": {
13810
13871
  "type": "game-shell",
13811
13872
  "category": "game",
13873
+ "sourceFile": "components/game/templates/GameShell.tsx",
13812
13874
  "tier": "templates",
13813
13875
  "family": "game",
13814
13876
  "description": "GameShell A full-screen layout wrapper for game applications. Replaces DashboardLayout for game clients — no sidebar nav, just full-viewport rendering with an optional HUD overlay bar. Used as a React Router layout route element: <Route element={<GameShell appName=\"TraitWars\" />}> <Route index element={<WorldMapPage />} /> ... </Route>",
@@ -13934,7 +13996,10 @@
13934
13996
  "1:1",
13935
13997
  "16:9",
13936
13998
  "5:7",
13937
- "8:1"
13999
+ "8:1",
14000
+ "4:1",
14001
+ "5:3",
14002
+ "1:2"
13938
14003
  ]
13939
14004
  },
13940
14005
  "atlas": {
@@ -14029,7 +14094,10 @@
14029
14094
  "1:1",
14030
14095
  "16:9",
14031
14096
  "5:7",
14032
- "8:1"
14097
+ "8:1",
14098
+ "4:1",
14099
+ "5:3",
14100
+ "1:2"
14033
14101
  ]
14034
14102
  },
14035
14103
  "atlas": {
@@ -17386,6 +17454,7 @@
17386
17454
  "state-machine-view": {
17387
17455
  "type": "state-machine-view",
17388
17456
  "category": "display",
17457
+ "sourceFile": "components/core/organisms/StateMachineView.tsx",
17389
17458
  "tier": "organisms",
17390
17459
  "family": "core",
17391
17460
  "description": "StateMachineView component",
@@ -17453,7 +17522,6 @@
17453
17522
  "function"
17454
17523
  ],
17455
17524
  "description": "Custom state node renderer — when provided, replaces the default circle nodes",
17456
- "kind": "callback",
17457
17525
  "callbackArgs": [
17458
17526
  {
17459
17527
  "name": "state",
@@ -17837,6 +17905,7 @@
17837
17905
  "calendar-grid": {
17838
17906
  "type": "calendar-grid",
17839
17907
  "category": "display",
17908
+ "sourceFile": "components/core/molecules/CalendarGrid.tsx",
17840
17909
  "tier": "molecules",
17841
17910
  "family": "core",
17842
17911
  "description": "CalendarGrid component",
@@ -17974,7 +18043,8 @@
17974
18043
  "object"
17975
18044
  ],
17976
18045
  "description": "Additional payload for long-press events",
17977
- "payloadFor": "longPressEvent"
18046
+ "payloadFor": "longPressEvent",
18047
+ "eventPayloadBrand": true
17978
18048
  },
17979
18049
  "swipeLeftEvent": {
17980
18050
  "types": [
@@ -18036,7 +18106,6 @@
18036
18106
  "function"
18037
18107
  ],
18038
18108
  "description": "Render function for one event chip's content. Receives the row and its index in the materialised events array. The grid keeps ownership of placement, colour and the click target; this replaces only what is drawn INSIDE the chip, so a host can show a time + instructor + badge stack instead of the default single label.",
18039
- "kind": "callback",
18040
18109
  "callbackArgs": [
18041
18110
  {
18042
18111
  "name": "item",
@@ -18054,7 +18123,6 @@
18054
18123
  "function"
18055
18124
  ],
18056
18125
  "description": "Per-event render function (schema-level alias for the children render prop). In `.orb`: `[\"fn\", \"item\", { pattern tree with @item.field bindings }]`. In `.lolo`: `renderItem: (fn item <Component …={@item.field}/>)` — the same contract `data-list` / `data-grid` / `carousel` already use.",
18057
- "kind": "callback",
18058
18126
  "callbackArgs": [
18059
18127
  {
18060
18128
  "name": "item",
@@ -18600,6 +18668,7 @@
18600
18668
  "progress-dots": {
18601
18669
  "type": "progress-dots",
18602
18670
  "category": "component",
18671
+ "sourceFile": "components/core/molecules/ProgressDots.tsx",
18603
18672
  "tier": "molecules",
18604
18673
  "family": "core",
18605
18674
  "description": "ProgressDots component",
@@ -18629,7 +18698,6 @@
18629
18698
  "function"
18630
18699
  ],
18631
18700
  "description": "Custom state resolver per dot index",
18632
- "kind": "callback",
18633
18701
  "callbackArgs": [
18634
18702
  {
18635
18703
  "name": "index",
@@ -18679,6 +18747,7 @@
18679
18747
  "family": "core",
18680
18748
  "description": "DataGrid — structured records grid rendering rows over configurable columns, with sort, select, and drag-reorder.",
18681
18749
  "capabilities": "admin table, records grid, user list, CRUD list, manage-records view, spreadsheet-style data grid, sortable columns",
18750
+ "fieldsContract": "display",
18682
18751
  "suggestedFor": [
18683
18752
  "data",
18684
18753
  "grid",
@@ -19085,7 +19154,6 @@
19085
19154
  "function"
19086
19155
  ],
19087
19156
  "description": "Render prop for custom per-card content. When provided, `fields` are ignored; `itemActions` render as a footer beneath the custom content.",
19088
- "kind": "callback",
19089
19157
  "callbackArgs": [
19090
19158
  {
19091
19159
  "name": "item",
@@ -19103,7 +19171,6 @@
19103
19171
  "function"
19104
19172
  ],
19105
19173
  "description": "Per-item render function (schema-level alias for children render prop). In .orb schemas: [\"fn\", \"item\", { pattern tree with @item.field bindings }] The compiler converts this to the children render prop. In .lolo, author the per-item renderer as renderItem: (fn item <Component …={@item.field}/>), binding per-item fields via @item.field.",
19106
- "kind": "callback",
19107
19174
  "callbackArgs": [
19108
19175
  {
19109
19176
  "name": "item",
@@ -19136,6 +19203,48 @@
19136
19203
  "card-rows"
19137
19204
  ],
19138
19205
  "default": "dense"
19206
+ },
19207
+ "relationsData": {
19208
+ "types": [
19209
+ "object"
19210
+ ],
19211
+ "description": "Relation display data: { fieldName: [{value, label}] } — injected server-side by the runtime (relation-option injection) or bound by compiled codegen; resolves stored foreign ids to display names for a field whose type is relation. Same contract DetailPanel takes.",
19212
+ "mapValue": {
19213
+ "types": [
19214
+ "array"
19215
+ ],
19216
+ "items": {
19217
+ "types": [
19218
+ "object"
19219
+ ],
19220
+ "properties": {
19221
+ "value": {
19222
+ "types": [
19223
+ "string"
19224
+ ]
19225
+ },
19226
+ "label": {
19227
+ "types": [
19228
+ "string"
19229
+ ]
19230
+ },
19231
+ "description": {
19232
+ "types": [
19233
+ "string"
19234
+ ]
19235
+ },
19236
+ "disabled": {
19237
+ "types": [
19238
+ "boolean"
19239
+ ]
19240
+ }
19241
+ },
19242
+ "required": [
19243
+ "value",
19244
+ "label"
19245
+ ]
19246
+ }
19247
+ }
19139
19248
  }
19140
19249
  }
19141
19250
  },
@@ -19146,6 +19255,7 @@
19146
19255
  "tier": "molecules",
19147
19256
  "family": "core",
19148
19257
  "description": "DataList component",
19258
+ "fieldsContract": "display",
19149
19259
  "suggestedFor": [
19150
19260
  "data",
19151
19261
  "list",
@@ -19629,7 +19739,6 @@
19629
19739
  "function"
19630
19740
  ],
19631
19741
  "description": "Render prop for custom per-item content. When provided, `fields` and `itemActions` are ignored.",
19632
- "kind": "callback",
19633
19742
  "callbackArgs": [
19634
19743
  {
19635
19744
  "name": "item",
@@ -19647,7 +19756,6 @@
19647
19756
  "function"
19648
19757
  ],
19649
19758
  "description": "Per-item render function (schema-level alias for children render prop). In .orb schemas: [\"fn\", \"item\", { pattern tree with @item.field bindings }] The compiler converts this to the children render prop. In .lolo, author the per-item renderer as renderItem: (fn item <Component …={@item.field}/>), binding per-item fields via @item.field.",
19650
- "kind": "callback",
19651
19759
  "callbackArgs": [
19652
19760
  {
19653
19761
  "name": "item",
@@ -19696,6 +19804,48 @@
19696
19804
  "card-rows"
19697
19805
  ],
19698
19806
  "default": "dense"
19807
+ },
19808
+ "relationsData": {
19809
+ "types": [
19810
+ "object"
19811
+ ],
19812
+ "description": "Relation display data: { fieldName: [{value, label}] } — injected server-side by the runtime (relation-option injection) or bound by compiled codegen; resolves stored foreign ids to display names for a field whose type is relation. Same contract DetailPanel takes.",
19813
+ "mapValue": {
19814
+ "types": [
19815
+ "array"
19816
+ ],
19817
+ "items": {
19818
+ "types": [
19819
+ "object"
19820
+ ],
19821
+ "properties": {
19822
+ "value": {
19823
+ "types": [
19824
+ "string"
19825
+ ]
19826
+ },
19827
+ "label": {
19828
+ "types": [
19829
+ "string"
19830
+ ]
19831
+ },
19832
+ "description": {
19833
+ "types": [
19834
+ "string"
19835
+ ]
19836
+ },
19837
+ "disabled": {
19838
+ "types": [
19839
+ "boolean"
19840
+ ]
19841
+ }
19842
+ },
19843
+ "required": [
19844
+ "value",
19845
+ "label"
19846
+ ]
19847
+ }
19848
+ }
19699
19849
  }
19700
19850
  }
19701
19851
  },
@@ -20006,6 +20156,7 @@
20006
20156
  "range-slider": {
20007
20157
  "type": "range-slider",
20008
20158
  "category": "component",
20159
+ "sourceFile": "components/core/atoms/RangeSlider.tsx",
20009
20160
  "tier": "atoms",
20010
20161
  "family": "core",
20011
20162
  "description": "RangeSlider component",
@@ -20108,7 +20259,8 @@
20108
20259
  "object"
20109
20260
  ],
20110
20261
  "description": "Payload to include with the action event",
20111
- "payloadFor": "action"
20262
+ "payloadFor": "action",
20263
+ "eventPayloadBrand": true
20112
20264
  },
20113
20265
  "onChange": {
20114
20266
  "types": [
@@ -20128,7 +20280,6 @@
20128
20280
  "function"
20129
20281
  ],
20130
20282
  "description": "Format function for tooltip display",
20131
- "kind": "callback",
20132
20283
  "callbackArgs": [
20133
20284
  {
20134
20285
  "name": "value",
@@ -20978,7 +21129,6 @@
20978
21129
  "function"
20979
21130
  ],
20980
21131
  "description": "Render function for each slide. In .lolo: renderItem: (fn item <Component …={@item.field}/>), binding per-item fields via @item.field.",
20981
- "kind": "callback",
20982
21132
  "callbackArgs": [
20983
21133
  {
20984
21134
  "name": "item",
@@ -21018,7 +21168,6 @@
21018
21168
  "function"
21019
21169
  ],
21020
21170
  "description": "Children-as-function fallback for renderItem (compiler compatibility)",
21021
- "kind": "callback",
21022
21171
  "callbackArgs": [
21023
21172
  {
21024
21173
  "name": "item",
@@ -21176,6 +21325,7 @@
21176
21325
  "sortable-list": {
21177
21326
  "type": "sortable-list",
21178
21327
  "category": "display",
21328
+ "sourceFile": "components/core/molecules/SortableList.tsx",
21179
21329
  "tier": "molecules",
21180
21330
  "family": "core",
21181
21331
  "description": "SortableList — a drag-and-drop reorderable list of items.",
@@ -21203,7 +21353,6 @@
21203
21353
  ],
21204
21354
  "description": "Render function for each item. In .lolo: renderItem: (fn item <Component …={@item.field}/>), binding per-item fields via @item.field.",
21205
21355
  "required": true,
21206
- "kind": "callback",
21207
21356
  "callbackArgs": [
21208
21357
  {
21209
21358
  "name": "item",
@@ -21247,7 +21396,8 @@
21247
21396
  "object"
21248
21397
  ],
21249
21398
  "description": "reorderPayload prop",
21250
- "payloadFor": "reorderEvent"
21399
+ "payloadFor": "reorderEvent",
21400
+ "eventPayloadBrand": true
21251
21401
  },
21252
21402
  "dragHandlePosition": {
21253
21403
  "types": [
@@ -28297,6 +28447,7 @@
28297
28447
  "choice-button": {
28298
28448
  "type": "choice-button",
28299
28449
  "category": "game",
28450
+ "sourceFile": "components/game/atoms/ChoiceButton.tsx",
28300
28451
  "tier": "atoms",
28301
28452
  "family": "game",
28302
28453
  "description": "ChoiceButton component",
@@ -28386,7 +28537,10 @@
28386
28537
  "1:1",
28387
28538
  "16:9",
28388
28539
  "5:7",
28389
- "8:1"
28540
+ "8:1",
28541
+ "4:1",
28542
+ "5:3",
28543
+ "1:2"
28390
28544
  ]
28391
28545
  },
28392
28546
  "atlas": {
@@ -28476,6 +28630,7 @@
28476
28630
  "control-button": {
28477
28631
  "type": "control-button",
28478
28632
  "category": "game",
28633
+ "sourceFile": "components/game/atoms/ControlButton.tsx",
28479
28634
  "tier": "atoms",
28480
28635
  "family": "game",
28481
28636
  "description": "ControlButton component",
@@ -28551,7 +28706,10 @@
28551
28706
  "1:1",
28552
28707
  "16:9",
28553
28708
  "5:7",
28554
- "8:1"
28709
+ "8:1",
28710
+ "4:1",
28711
+ "5:3",
28712
+ "1:2"
28555
28713
  ]
28556
28714
  },
28557
28715
  "atlas": {
@@ -28668,6 +28826,7 @@
28668
28826
  "dialogue-bubble": {
28669
28827
  "type": "dialogue-bubble",
28670
28828
  "category": "game",
28829
+ "sourceFile": "components/game/atoms/DialogueBubble.tsx",
28671
28830
  "tier": "atoms",
28672
28831
  "family": "game",
28673
28832
  "description": "DialogueBubble component",
@@ -28758,7 +28917,10 @@
28758
28917
  "1:1",
28759
28918
  "16:9",
28760
28919
  "5:7",
28761
- "8:1"
28920
+ "8:1",
28921
+ "4:1",
28922
+ "5:3",
28923
+ "1:2"
28762
28924
  ]
28763
28925
  },
28764
28926
  "atlas": {
@@ -28829,6 +28991,7 @@
28829
28991
  "health-bar": {
28830
28992
  "type": "health-bar",
28831
28993
  "category": "game",
28994
+ "sourceFile": "components/game/atoms/HealthBar.tsx",
28832
28995
  "tier": "atoms",
28833
28996
  "family": "game",
28834
28997
  "description": "HealthBar component",
@@ -28977,7 +29140,10 @@
28977
29140
  "1:1",
28978
29141
  "16:9",
28979
29142
  "5:7",
28980
- "8:1"
29143
+ "8:1",
29144
+ "4:1",
29145
+ "5:3",
29146
+ "1:2"
28981
29147
  ]
28982
29148
  },
28983
29149
  "atlas": {
@@ -29072,7 +29238,10 @@
29072
29238
  "1:1",
29073
29239
  "16:9",
29074
29240
  "5:7",
29075
- "8:1"
29241
+ "8:1",
29242
+ "4:1",
29243
+ "5:3",
29244
+ "1:2"
29076
29245
  ]
29077
29246
  },
29078
29247
  "atlas": {
@@ -29107,6 +29276,7 @@
29107
29276
  "score-display": {
29108
29277
  "type": "score-display",
29109
29278
  "category": "game",
29279
+ "sourceFile": "components/game/atoms/ScoreDisplay.tsx",
29110
29280
  "tier": "atoms",
29111
29281
  "family": "game",
29112
29282
  "description": "ScoreDisplay component",
@@ -29182,7 +29352,10 @@
29182
29352
  "1:1",
29183
29353
  "16:9",
29184
29354
  "5:7",
29185
- "8:1"
29355
+ "8:1",
29356
+ "4:1",
29357
+ "5:3",
29358
+ "1:2"
29186
29359
  ]
29187
29360
  },
29188
29361
  "atlas": {
@@ -29269,6 +29442,7 @@
29269
29442
  "timer-display": {
29270
29443
  "type": "timer-display",
29271
29444
  "category": "game",
29445
+ "sourceFile": "components/game/atoms/TimerDisplay.tsx",
29272
29446
  "tier": "atoms",
29273
29447
  "family": "game",
29274
29448
  "description": "TimerDisplay component",
@@ -29395,7 +29569,10 @@
29395
29569
  "1:1",
29396
29570
  "16:9",
29397
29571
  "5:7",
29398
- "8:1"
29572
+ "8:1",
29573
+ "4:1",
29574
+ "5:3",
29575
+ "1:2"
29399
29576
  ]
29400
29577
  },
29401
29578
  "atlas": {
@@ -30704,6 +30881,7 @@
30704
30881
  "doc-search": {
30705
30882
  "type": "doc-search",
30706
30883
  "category": "filter",
30884
+ "sourceFile": "components/core/molecules/DocSearch.tsx",
30707
30885
  "tier": "molecules",
30708
30886
  "family": "core",
30709
30887
  "description": "DocSearch component",
@@ -30725,7 +30903,6 @@
30725
30903
  "function"
30726
30904
  ],
30727
30905
  "description": "Callback invoked with the search query, returns results",
30728
- "kind": "callback",
30729
30906
  "callbackArgs": [
30730
30907
  {
30731
30908
  "name": "query",
@@ -31665,6 +31842,7 @@
31665
31842
  "game-hud": {
31666
31843
  "type": "game-hud",
31667
31844
  "category": "game",
31845
+ "sourceFile": "components/game/molecules/GameHud.tsx",
31668
31846
  "tier": "molecules",
31669
31847
  "family": "game",
31670
31848
  "description": "GameHud component",
@@ -31755,7 +31933,10 @@
31755
31933
  "1:1",
31756
31934
  "16:9",
31757
31935
  "5:7",
31758
- "8:1"
31936
+ "8:1",
31937
+ "4:1",
31938
+ "5:3",
31939
+ "1:2"
31759
31940
  ]
31760
31941
  },
31761
31942
  "atlas": {
@@ -31849,7 +32030,10 @@
31849
32030
  "1:1",
31850
32031
  "16:9",
31851
32032
  "5:7",
31852
- "8:1"
32033
+ "8:1",
32034
+ "4:1",
32035
+ "5:3",
32036
+ "1:2"
31853
32037
  ]
31854
32038
  },
31855
32039
  "atlas": {
@@ -32006,7 +32190,10 @@
32006
32190
  "1:1",
32007
32191
  "16:9",
32008
32192
  "5:7",
32009
- "8:1"
32193
+ "8:1",
32194
+ "4:1",
32195
+ "5:3",
32196
+ "1:2"
32010
32197
  ]
32011
32198
  },
32012
32199
  "atlas": {
@@ -32100,7 +32287,10 @@
32100
32287
  "1:1",
32101
32288
  "16:9",
32102
32289
  "5:7",
32103
- "8:1"
32290
+ "8:1",
32291
+ "4:1",
32292
+ "5:3",
32293
+ "1:2"
32104
32294
  ]
32105
32295
  },
32106
32296
  "atlas": {
@@ -32289,7 +32479,10 @@
32289
32479
  "1:1",
32290
32480
  "16:9",
32291
32481
  "5:7",
32292
- "8:1"
32482
+ "8:1",
32483
+ "4:1",
32484
+ "5:3",
32485
+ "1:2"
32293
32486
  ]
32294
32487
  },
32295
32488
  "atlas": {
@@ -32636,7 +32829,10 @@
32636
32829
  "1:1",
32637
32830
  "16:9",
32638
32831
  "5:7",
32639
- "8:1"
32832
+ "8:1",
32833
+ "4:1",
32834
+ "5:3",
32835
+ "1:2"
32640
32836
  ]
32641
32837
  },
32642
32838
  "atlas": {
@@ -32677,6 +32873,7 @@
32677
32873
  "stat-badge": {
32678
32874
  "type": "stat-badge",
32679
32875
  "category": "game",
32876
+ "sourceFile": "components/game/molecules/StatBadge.tsx",
32680
32877
  "tier": "molecules",
32681
32878
  "family": "game",
32682
32879
  "description": "StatBadge component",
@@ -32752,7 +32949,10 @@
32752
32949
  "1:1",
32753
32950
  "16:9",
32754
32951
  "5:7",
32755
- "8:1"
32952
+ "8:1",
32953
+ "4:1",
32954
+ "5:3",
32955
+ "1:2"
32756
32956
  ]
32757
32957
  },
32758
32958
  "atlas": {
@@ -32847,7 +33047,10 @@
32847
33047
  "1:1",
32848
33048
  "16:9",
32849
33049
  "5:7",
32850
- "8:1"
33050
+ "8:1",
33051
+ "4:1",
33052
+ "5:3",
33053
+ "1:2"
32851
33054
  ]
32852
33055
  },
32853
33056
  "atlas": {
@@ -33373,6 +33576,7 @@
33373
33576
  "game-audio-toggle": {
33374
33577
  "type": "game-audio-toggle",
33375
33578
  "category": "game",
33579
+ "sourceFile": "components/game/atoms/GameAudioToggle.tsx",
33376
33580
  "tier": "atoms",
33377
33581
  "family": "game",
33378
33582
  "description": "GameAudioToggle component",
@@ -33504,7 +33708,10 @@
33504
33708
  "1:1",
33505
33709
  "16:9",
33506
33710
  "5:7",
33507
- "8:1"
33711
+ "8:1",
33712
+ "4:1",
33713
+ "5:3",
33714
+ "1:2"
33508
33715
  ]
33509
33716
  },
33510
33717
  "atlas": {
@@ -33599,7 +33806,10 @@
33599
33806
  "1:1",
33600
33807
  "16:9",
33601
33808
  "5:7",
33602
- "8:1"
33809
+ "8:1",
33810
+ "4:1",
33811
+ "5:3",
33812
+ "1:2"
33603
33813
  ]
33604
33814
  },
33605
33815
  "atlas": {
@@ -33648,6 +33858,7 @@
33648
33858
  "trait-slot": {
33649
33859
  "type": "trait-slot",
33650
33860
  "category": "game",
33861
+ "sourceFile": "components/game/molecules/TraitSlot.tsx",
33651
33862
  "tier": "molecules",
33652
33863
  "family": "game",
33653
33864
  "description": "Event Contract: Emits: UI:CLICK Emits: UI:REMOVE",
@@ -33760,7 +33971,10 @@
33760
33971
  "1:1",
33761
33972
  "16:9",
33762
33973
  "5:7",
33763
- "8:1"
33974
+ "8:1",
33975
+ "4:1",
33976
+ "5:3",
33977
+ "1:2"
33764
33978
  ]
33765
33979
  },
33766
33980
  "atlas": {
@@ -34003,7 +34217,10 @@
34003
34217
  "1:1",
34004
34218
  "16:9",
34005
34219
  "5:7",
34006
- "8:1"
34220
+ "8:1",
34221
+ "4:1",
34222
+ "5:3",
34223
+ "1:2"
34007
34224
  ]
34008
34225
  },
34009
34226
  "atlas": {
@@ -34180,7 +34397,10 @@
34180
34397
  "1:1",
34181
34398
  "16:9",
34182
34399
  "5:7",
34183
- "8:1"
34400
+ "8:1",
34401
+ "4:1",
34402
+ "5:3",
34403
+ "1:2"
34184
34404
  ]
34185
34405
  },
34186
34406
  "atlas": {
@@ -34406,7 +34626,10 @@
34406
34626
  "1:1",
34407
34627
  "16:9",
34408
34628
  "5:7",
34409
- "8:1"
34629
+ "8:1",
34630
+ "4:1",
34631
+ "5:3",
34632
+ "1:2"
34410
34633
  ]
34411
34634
  },
34412
34635
  "atlas": {
@@ -34601,6 +34824,7 @@
34601
34824
  "action-palette": {
34602
34825
  "type": "action-palette",
34603
34826
  "category": "game",
34827
+ "sourceFile": "components/game/molecules/ActionPalette.tsx",
34604
34828
  "tier": "molecules",
34605
34829
  "family": "game",
34606
34830
  "description": "ActionPalette Component Grid of draggable ActionTile components for the Sequencer tier. Kids pick from these to build their sequence.",
@@ -34711,7 +34935,10 @@
34711
34935
  "1:1",
34712
34936
  "16:9",
34713
34937
  "5:7",
34714
- "8:1"
34938
+ "8:1",
34939
+ "4:1",
34940
+ "5:3",
34941
+ "1:2"
34715
34942
  ]
34716
34943
  },
34717
34944
  "atlas": {
@@ -34899,6 +35126,7 @@
34899
35126
  "action-tile": {
34900
35127
  "type": "action-tile",
34901
35128
  "category": "game",
35129
+ "sourceFile": "components/game/molecules/ActionTile.tsx",
34902
35130
  "tier": "molecules",
34903
35131
  "family": "game",
34904
35132
  "description": "ActionTile Component A draggable action tile for the Sequencer tier (ages 5-8). Kids drag these from the ActionPalette into SequenceBar slots. Sets SlotItemData on dataTransfer for TraitSlot compatibility.",
@@ -35111,7 +35339,10 @@
35111
35339
  "1:1",
35112
35340
  "16:9",
35113
35341
  "5:7",
35114
- "8:1"
35342
+ "8:1",
35343
+ "4:1",
35344
+ "5:3",
35345
+ "1:2"
35115
35346
  ]
35116
35347
  },
35117
35348
  "atlas": {
@@ -35274,6 +35505,7 @@
35274
35505
  "sequence-bar": {
35275
35506
  "type": "sequence-bar",
35276
35507
  "category": "game",
35508
+ "sourceFile": "components/game/molecules/SequenceBar.tsx",
35277
35509
  "tier": "molecules",
35278
35510
  "family": "game",
35279
35511
  "description": "SequenceBar Component A row of TraitSlot components forming the action sequence for the Sequencer tier (ages 5-8). Kids drag ActionTiles from the palette into these slots to build their sequence.",
@@ -35384,7 +35616,10 @@
35384
35616
  "1:1",
35385
35617
  "16:9",
35386
35618
  "5:7",
35387
- "8:1"
35619
+ "8:1",
35620
+ "4:1",
35621
+ "5:3",
35622
+ "1:2"
35388
35623
  ]
35389
35624
  },
35390
35625
  "atlas": {
@@ -35612,7 +35847,10 @@
35612
35847
  "1:1",
35613
35848
  "16:9",
35614
35849
  "5:7",
35615
- "8:1"
35850
+ "8:1",
35851
+ "4:1",
35852
+ "5:3",
35853
+ "1:2"
35616
35854
  ]
35617
35855
  },
35618
35856
  "atlas": {
@@ -36853,6 +37091,7 @@
36853
37091
  "family": "core",
36854
37092
  "description": "TableView — sortable, selectable data table rendering rows over configurable columns, with inline row actions and grouping.",
36855
37093
  "capabilities": "admin console table, records list, CRUD data table, user list, manage-users grid, sortable columns, row selection with bulk actions, grouped list view",
37094
+ "fieldsContract": "display",
36856
37095
  "suggestedFor": [
36857
37096
  "table",
36858
37097
  "view",
@@ -37309,7 +37548,6 @@
37309
37548
  "function"
37310
37549
  ],
37311
37550
  "description": "Custom per-row render. When provided, the whole row content is delegated to this function (columns are ignored for the body; the header still renders). Mirrors DataList's children render prop.",
37312
- "kind": "callback",
37313
37551
  "callbackArgs": [
37314
37552
  {
37315
37553
  "name": "item",
@@ -37327,7 +37565,6 @@
37327
37565
  "function"
37328
37566
  ],
37329
37567
  "description": "Per-row render function (schema alias). In .orb: [\"fn\",\"item\",{...}]. The compiler converts this to the children render prop. In .lolo, author the per-row renderer as renderItem: (fn item <Component …={@item.field}/>), binding per-item fields via @item.field.",
37330
- "kind": "callback",
37331
37568
  "callbackArgs": [
37332
37569
  {
37333
37570
  "name": "item",
@@ -37353,6 +37590,48 @@
37353
37590
  "bordered"
37354
37591
  ],
37355
37592
  "default": "dense"
37593
+ },
37594
+ "relationsData": {
37595
+ "types": [
37596
+ "object"
37597
+ ],
37598
+ "description": "Relation display data: { fieldName: [{value, label}] } — injected server-side by the runtime (relation-option injection) or bound by compiled codegen; resolves stored foreign ids to display names for a column whose field is relation-typed. Same contract DetailPanel takes.",
37599
+ "mapValue": {
37600
+ "types": [
37601
+ "array"
37602
+ ],
37603
+ "items": {
37604
+ "types": [
37605
+ "object"
37606
+ ],
37607
+ "properties": {
37608
+ "value": {
37609
+ "types": [
37610
+ "string"
37611
+ ]
37612
+ },
37613
+ "label": {
37614
+ "types": [
37615
+ "string"
37616
+ ]
37617
+ },
37618
+ "description": {
37619
+ "types": [
37620
+ "string"
37621
+ ]
37622
+ },
37623
+ "disabled": {
37624
+ "types": [
37625
+ "boolean"
37626
+ ]
37627
+ }
37628
+ },
37629
+ "required": [
37630
+ "value",
37631
+ "label"
37632
+ ]
37633
+ }
37634
+ }
37356
37635
  }
37357
37636
  }
37358
37637
  },
@@ -37934,6 +38213,7 @@
37934
38213
  "code-runner-panel": {
37935
38214
  "type": "code-runner-panel",
37936
38215
  "category": "display",
38216
+ "sourceFile": "components/core/organisms/CodeRunnerPanel.tsx",
37937
38217
  "tier": "organisms",
37938
38218
  "family": "core",
37939
38219
  "description": "CodeRunnerPanel component",
@@ -37971,7 +38251,6 @@
37971
38251
  "function"
37972
38252
  ],
37973
38253
  "description": "Simulate executing the code. Omit to render a read-only block. Real execution is a separate future track — this callback supplies deterministic simulated output for UI feedback.",
37974
- "kind": "callback",
37975
38254
  "callbackArgs": [
37976
38255
  {
37977
38256
  "name": "code",
@@ -37998,6 +38277,7 @@
37998
38277
  "segment-renderer": {
37999
38278
  "type": "segment-renderer",
38000
38279
  "category": "display",
38280
+ "sourceFile": "components/core/organisms/SegmentRenderer.tsx",
38001
38281
  "tier": "organisms",
38002
38282
  "family": "core",
38003
38283
  "description": "SegmentRenderer component",
@@ -38089,7 +38369,6 @@
38089
38369
  "function"
38090
38370
  ],
38091
38371
  "description": "Simulate executing runnable code blocks. Omit to render runnable blocks as read-only. Real execution is a future track.",
38092
- "kind": "callback",
38093
38372
  "callbackArgs": [
38094
38373
  {
38095
38374
  "name": "code",
@@ -38107,7 +38386,6 @@
38107
38386
  "function"
38108
38387
  ],
38109
38388
  "description": "Optional render slot for `visualization` segment types. When not provided, visualization segments are silently skipped. Callers can wire this to any custom component or orbital generator.",
38110
- "kind": "callback",
38111
38389
  "callbackArgs": [
38112
38390
  {
38113
38391
  "name": "type",
@@ -38661,6 +38939,7 @@
38661
38939
  "canvas-2d": {
38662
38940
  "type": "canvas-2d",
38663
38941
  "category": "game",
38942
+ "sourceFile": "components/game/molecules/Canvas2D.tsx",
38664
38943
  "tier": "molecules",
38665
38944
  "family": "game",
38666
38945
  "description": "Canvas2D component",
@@ -38807,7 +39086,10 @@
38807
39086
  "1:1",
38808
39087
  "16:9",
38809
39088
  "5:7",
38810
- "8:1"
39089
+ "8:1",
39090
+ "4:1",
39091
+ "5:3",
39092
+ "1:2"
38811
39093
  ]
38812
39094
  },
38813
39095
  "atlas": {
@@ -38902,10 +39184,12 @@
38902
39184
  "object"
38903
39185
  ],
38904
39186
  "description": "Maps a keydown `e.code` → the board's SEMANTIC event (device-agnostic input).",
39187
+ "kind": "event-map",
38905
39188
  "mapValue": {
38906
39189
  "types": [
38907
39190
  "string"
38908
- ]
39191
+ ],
39192
+ "kind": "event"
38909
39193
  }
38910
39194
  },
38911
39195
  "keyUpMap": {
@@ -38913,10 +39197,12 @@
38913
39197
  "object"
38914
39198
  ],
38915
39199
  "description": "Maps a keyup `e.code` → the board's SEMANTIC event.",
39200
+ "kind": "event-map",
38916
39201
  "mapValue": {
38917
39202
  "types": [
38918
39203
  "string"
38919
- ]
39204
+ ],
39205
+ "kind": "event"
38920
39206
  }
38921
39207
  },
38922
39208
  "editable": {
@@ -39119,6 +39405,7 @@
39119
39405
  "control-grid": {
39120
39406
  "type": "control-grid",
39121
39407
  "category": "game",
39408
+ "sourceFile": "components/game/molecules/ControlGrid.tsx",
39122
39409
  "tier": "molecules",
39123
39410
  "family": "game",
39124
39411
  "description": "ControlGrid component",
@@ -39230,7 +39517,10 @@
39230
39517
  "1:1",
39231
39518
  "16:9",
39232
39519
  "5:7",
39233
- "8:1"
39520
+ "8:1",
39521
+ "4:1",
39522
+ "5:3",
39523
+ "1:2"
39234
39524
  ]
39235
39525
  },
39236
39526
  "atlas": {
@@ -39373,10 +39663,12 @@
39373
39663
  "object"
39374
39664
  ],
39375
39665
  "description": "Per-direction PRESS → the board's SEMANTIC event (kind=\"dpad\"), e.g. `{ left: \"LEFT\", right: \"RIGHT\", up: \"JUMP\" }`. Lets the d-pad emit the SAME intent events as the keyboard so the FSM stays device-agnostic.",
39666
+ "kind": "event-map",
39376
39667
  "mapValue": {
39377
39668
  "types": [
39378
39669
  "string"
39379
- ]
39670
+ ],
39671
+ "kind": "event"
39380
39672
  }
39381
39673
  },
39382
39674
  "directionReleaseEvents": {
@@ -39384,10 +39676,12 @@
39384
39676
  "object"
39385
39677
  ],
39386
39678
  "description": "Per-direction RELEASE → semantic event, e.g. `{ left: \"STOP\", right: \"STOP\" }`. Omit a direction to ignore its release.",
39679
+ "kind": "event-map",
39387
39680
  "mapValue": {
39388
39681
  "types": [
39389
39682
  "string"
39390
- ]
39683
+ ],
39684
+ "kind": "event"
39391
39685
  }
39392
39686
  },
39393
39687
  "directionAssets": {
@@ -39459,7 +39753,10 @@
39459
39753
  "1:1",
39460
39754
  "16:9",
39461
39755
  "5:7",
39462
- "8:1"
39756
+ "8:1",
39757
+ "4:1",
39758
+ "5:3",
39759
+ "1:2"
39463
39760
  ]
39464
39761
  },
39465
39762
  "atlas": {
@@ -39530,6 +39827,7 @@
39530
39827
  "game-icon": {
39531
39828
  "type": "game-icon",
39532
39829
  "category": "game",
39830
+ "sourceFile": "components/core/atoms/GameIcon.tsx",
39533
39831
  "tier": "atoms",
39534
39832
  "family": "core",
39535
39833
  "description": "GameIcon component",
@@ -39605,7 +39903,10 @@
39605
39903
  "1:1",
39606
39904
  "16:9",
39607
39905
  "5:7",
39608
- "8:1"
39906
+ "8:1",
39907
+ "4:1",
39908
+ "5:3",
39909
+ "1:2"
39609
39910
  ]
39610
39911
  },
39611
39912
  "atlas": {
@@ -43329,6 +43630,7 @@
43329
43630
  "math-canvas": {
43330
43631
  "type": "math-canvas",
43331
43632
  "category": "learning",
43633
+ "sourceFile": "components/learning/molecules/MathCanvas.tsx",
43332
43634
  "tier": "molecules",
43333
43635
  "family": "learning",
43334
43636
  "description": "MathCanvas component",
@@ -44360,10 +44662,12 @@
44360
44662
  "object"
44361
44663
  ],
44362
44664
  "description": "Maps a keydown `e.code` → the board's SEMANTIC event (device-agnostic input), emitted as `UI:{event}` — same contract as the game canvas keyMap.",
44665
+ "kind": "event-map",
44363
44666
  "mapValue": {
44364
44667
  "types": [
44365
44668
  "string"
44366
- ]
44669
+ ],
44670
+ "kind": "event"
44367
44671
  }
44368
44672
  },
44369
44673
  "keyUpMap": {
@@ -44371,10 +44675,12 @@
44371
44675
  "object"
44372
44676
  ],
44373
44677
  "description": "Maps a keyup `e.code` → the board's SEMANTIC event.",
44678
+ "kind": "event-map",
44374
44679
  "mapValue": {
44375
44680
  "types": [
44376
44681
  "string"
44377
- ]
44682
+ ],
44683
+ "kind": "event"
44378
44684
  }
44379
44685
  },
44380
44686
  "isLoading": {
@@ -47903,6 +48209,7 @@
47903
48209
  "draw-sprite": {
47904
48210
  "type": "draw-sprite",
47905
48211
  "category": "game",
48212
+ "sourceFile": "components/game/atoms/DrawSprite.tsx",
47906
48213
  "tier": "atoms",
47907
48214
  "family": "game",
47908
48215
  "description": "DrawSprite component",
@@ -48024,7 +48331,10 @@
48024
48331
  "1:1",
48025
48332
  "16:9",
48026
48333
  "5:7",
48027
- "8:1"
48334
+ "8:1",
48335
+ "4:1",
48336
+ "5:3",
48337
+ "1:2"
48028
48338
  ]
48029
48339
  },
48030
48340
  "atlas": {
@@ -49008,6 +49318,7 @@
49008
49318
  "draw-sprite-layer": {
49009
49319
  "type": "draw-sprite-layer",
49010
49320
  "category": "game",
49321
+ "sourceFile": "components/game/molecules/DrawSpriteLayer.tsx",
49011
49322
  "tier": "molecules",
49012
49323
  "family": "game",
49013
49324
  "description": "DrawSpriteLayer component",
@@ -49150,7 +49461,10 @@
49150
49461
  "1:1",
49151
49462
  "16:9",
49152
49463
  "5:7",
49153
- "8:1"
49464
+ "8:1",
49465
+ "4:1",
49466
+ "5:3",
49467
+ "1:2"
49154
49468
  ]
49155
49469
  },
49156
49470
  "atlas": {
@@ -49456,6 +49770,7 @@
49456
49770
  "canvas": {
49457
49771
  "type": "canvas",
49458
49772
  "category": "game",
49773
+ "sourceFile": "components/game/molecules/Canvas.tsx",
49459
49774
  "tier": "molecules",
49460
49775
  "family": "game",
49461
49776
  "description": "Canvas component",
@@ -49695,7 +50010,10 @@
49695
50010
  "1:1",
49696
50011
  "16:9",
49697
50012
  "5:7",
49698
- "8:1"
50013
+ "8:1",
50014
+ "4:1",
50015
+ "5:3",
50016
+ "1:2"
49699
50017
  ]
49700
50018
  },
49701
50019
  "atlas": {
@@ -50112,10 +50430,12 @@
50112
50430
  "object"
50113
50431
  ],
50114
50432
  "description": "keyMap prop",
50433
+ "kind": "event-map",
50115
50434
  "mapValue": {
50116
50435
  "types": [
50117
50436
  "string"
50118
- ]
50437
+ ],
50438
+ "kind": "event"
50119
50439
  }
50120
50440
  },
50121
50441
  "keyUpMap": {
@@ -50123,10 +50443,12 @@
50123
50443
  "object"
50124
50444
  ],
50125
50445
  "description": "keyUpMap prop",
50446
+ "kind": "event-map",
50126
50447
  "mapValue": {
50127
50448
  "types": [
50128
50449
  "string"
50129
- ]
50450
+ ],
50451
+ "kind": "event"
50130
50452
  }
50131
50453
  },
50132
50454
  "editable": {
@@ -52128,6 +52450,7 @@
52128
52450
  "draw-fx-layer": {
52129
52451
  "type": "draw-fx-layer",
52130
52452
  "category": "game",
52453
+ "sourceFile": "components/game/molecules/DrawFxLayer.tsx",
52131
52454
  "tier": "molecules",
52132
52455
  "family": "game",
52133
52456
  "description": "DrawFxLayer component",
@@ -52503,7 +52826,10 @@
52503
52826
  "1:1",
52504
52827
  "16:9",
52505
52828
  "5:7",
52506
- "8:1"
52829
+ "8:1",
52830
+ "4:1",
52831
+ "5:3",
52832
+ "1:2"
52507
52833
  ]
52508
52834
  },
52509
52835
  "atlas": {
@@ -53921,7 +54247,10 @@
53921
54247
  "1:1",
53922
54248
  "16:9",
53923
54249
  "5:7",
53924
- "8:1"
54250
+ "8:1",
54251
+ "4:1",
54252
+ "5:3",
54253
+ "1:2"
53925
54254
  ]
53926
54255
  },
53927
54256
  "atlas": {
@@ -54053,7 +54382,7 @@
54053
54382
  "types": [
54054
54383
  "array"
54055
54384
  ],
54056
- "description": "The skeleton (bind pose; FK chain via `parent` names).",
54385
+ "description": "The skeleton (bind pose; FK chain via `parent` names). Falls back to the rigbundle's `bones` when empty.",
54057
54386
  "required": true,
54058
54387
  "items": {
54059
54388
  "types": [
@@ -54136,6 +54465,12 @@
54136
54465
  "frames"
54137
54466
  ]
54138
54467
  },
54468
+ "clipName": {
54469
+ "types": [
54470
+ "string"
54471
+ ],
54472
+ "description": "Named clip inside the rigbundle at `meshUrl` (`clips[clipName].frames`); used when `clip` is absent. Empty/unknown = no clip."
54473
+ },
54139
54474
  "frame": {
54140
54475
  "types": [
54141
54476
  "number"