@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
@@ -3,7 +3,7 @@ import { z } from 'zod';
3
3
  // src/patterns/patterns-registry.json
4
4
  var patterns_registry_default = {
5
5
  version: "1.0.0",
6
- exportedAt: "2026-09-10T08:51:20.514Z",
6
+ exportedAt: "2026-09-12T18:14:02.248Z",
7
7
  patterns: {
8
8
  "entity-table": {
9
9
  type: "entity-table",
@@ -12,6 +12,7 @@ var patterns_registry_default = {
12
12
  tier: "organisms",
13
13
  family: "core",
14
14
  description: "Data table with columns and sorting",
15
+ fieldsContract: "display",
15
16
  suggestedFor: [
16
17
  "data-dense views",
17
18
  "comparisons",
@@ -480,6 +481,48 @@ var patterns_registry_default = {
480
481
  "card-rows"
481
482
  ],
482
483
  default: "dense"
484
+ },
485
+ relationsData: {
486
+ types: [
487
+ "object"
488
+ ],
489
+ description: "Relation display data: { fieldName: [{value, label}] } \u2014 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.",
490
+ mapValue: {
491
+ types: [
492
+ "array"
493
+ ],
494
+ items: {
495
+ types: [
496
+ "object"
497
+ ],
498
+ properties: {
499
+ value: {
500
+ types: [
501
+ "string"
502
+ ]
503
+ },
504
+ label: {
505
+ types: [
506
+ "string"
507
+ ]
508
+ },
509
+ description: {
510
+ types: [
511
+ "string"
512
+ ]
513
+ },
514
+ disabled: {
515
+ types: [
516
+ "boolean"
517
+ ]
518
+ }
519
+ },
520
+ required: [
521
+ "value",
522
+ "label"
523
+ ]
524
+ }
525
+ }
483
526
  }
484
527
  }
485
528
  },
@@ -710,7 +753,6 @@ var patterns_registry_default = {
710
753
  "function"
711
754
  ],
712
755
  description: "Render function for each item. In .lolo: renderItem: (fn item <Component \u2026={@item.field}/>), binding per-item fields via @item.field.",
713
- kind: "callback",
714
756
  callbackArgs: [
715
757
  {
716
758
  name: "item",
@@ -4304,7 +4346,10 @@ var patterns_registry_default = {
4304
4346
  "1:1",
4305
4347
  "16:9",
4306
4348
  "5:7",
4307
- "8:1"
4349
+ "8:1",
4350
+ "4:1",
4351
+ "5:3",
4352
+ "1:2"
4308
4353
  ]
4309
4354
  },
4310
4355
  atlas: {
@@ -4464,7 +4509,10 @@ var patterns_registry_default = {
4464
4509
  "1:1",
4465
4510
  "16:9",
4466
4511
  "5:7",
4467
- "8:1"
4512
+ "8:1",
4513
+ "4:1",
4514
+ "5:3",
4515
+ "1:2"
4468
4516
  ]
4469
4517
  },
4470
4518
  atlas: {
@@ -7498,6 +7546,7 @@ var patterns_registry_default = {
7498
7546
  button: {
7499
7547
  type: "button",
7500
7548
  category: "component",
7549
+ sourceFile: "components/core/atoms/Button.tsx",
7501
7550
  tier: "atoms",
7502
7551
  family: "core",
7503
7552
  description: "Clickable button that emits events",
@@ -7642,7 +7691,10 @@ var patterns_registry_default = {
7642
7691
  "1:1",
7643
7692
  "16:9",
7644
7693
  "5:7",
7645
- "8:1"
7694
+ "8:1",
7695
+ "4:1",
7696
+ "5:3",
7697
+ "1:2"
7646
7698
  ]
7647
7699
  },
7648
7700
  atlas: {
@@ -7684,7 +7736,8 @@ var patterns_registry_default = {
7684
7736
  "object"
7685
7737
  ],
7686
7738
  description: "Payload to include with the action event",
7687
- payloadFor: "action"
7739
+ payloadFor: "action",
7740
+ eventPayloadBrand: true
7688
7741
  },
7689
7742
  label: {
7690
7743
  types: [
@@ -7709,6 +7762,7 @@ var patterns_registry_default = {
7709
7762
  badge: {
7710
7763
  type: "badge",
7711
7764
  category: "component",
7765
+ sourceFile: "components/core/atoms/Badge.tsx",
7712
7766
  tier: "atoms",
7713
7767
  family: "core",
7714
7768
  description: "Small label for status or count",
@@ -7840,7 +7894,10 @@ var patterns_registry_default = {
7840
7894
  "1:1",
7841
7895
  "16:9",
7842
7896
  "5:7",
7843
- "8:1"
7897
+ "8:1",
7898
+ "4:1",
7899
+ "5:3",
7900
+ "1:2"
7844
7901
  ]
7845
7902
  },
7846
7903
  atlas: {
@@ -8340,6 +8397,7 @@ var patterns_registry_default = {
8340
8397
  input: {
8341
8398
  type: "input",
8342
8399
  category: "component",
8400
+ sourceFile: "components/core/atoms/Input.tsx",
8343
8401
  tier: "atoms",
8344
8402
  family: "core",
8345
8403
  description: "Text input field",
@@ -8467,9 +8525,7 @@ var patterns_registry_default = {
8467
8525
  "function",
8468
8526
  "string"
8469
8527
  ],
8470
- description: "Callback or declarative event key when clear button is clicked",
8471
- kind: "event-ref",
8472
- emitPayloadSchema: []
8528
+ description: "Callback or declarative event key when clear button is clicked"
8473
8529
  },
8474
8530
  options: {
8475
8531
  types: [
@@ -8514,16 +8570,9 @@ var patterns_registry_default = {
8514
8570
  kind: "event-ref",
8515
8571
  emitPayloadSchema: [
8516
8572
  {
8517
- name: "value",
8518
- type: "string",
8519
- required: true,
8520
- typeWhen: [
8521
- {
8522
- knob: "inputType",
8523
- equals: "number",
8524
- type: "number"
8525
- }
8526
- ]
8573
+ name: "_payload",
8574
+ type: "object",
8575
+ required: false
8527
8576
  }
8528
8577
  ]
8529
8578
  }
@@ -8593,6 +8642,7 @@ var patterns_registry_default = {
8593
8642
  select: {
8594
8643
  type: "select",
8595
8644
  category: "component",
8645
+ sourceFile: "components/core/atoms/Select.tsx",
8596
8646
  tier: "atoms",
8597
8647
  family: "core",
8598
8648
  description: "Dropdown select input",
@@ -8782,7 +8832,26 @@ var patterns_registry_default = {
8782
8832
  "function",
8783
8833
  "string"
8784
8834
  ],
8785
- 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."
8835
+ 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.",
8836
+ kind: "event-ref",
8837
+ emitPayloadSchema: [
8838
+ {
8839
+ name: "value",
8840
+ type: "string",
8841
+ required: true,
8842
+ schema: {
8843
+ types: [
8844
+ "string",
8845
+ "array"
8846
+ ],
8847
+ items: {
8848
+ types: [
8849
+ "string"
8850
+ ]
8851
+ }
8852
+ }
8853
+ }
8854
+ ]
8786
8855
  }
8787
8856
  }
8788
8857
  },
@@ -9729,6 +9798,7 @@ var patterns_registry_default = {
9729
9798
  "repeatable-form-section": {
9730
9799
  type: "repeatable-form-section",
9731
9800
  category: "form",
9801
+ sourceFile: "components/core/molecules/RepeatableFormSection.tsx",
9732
9802
  tier: "molecules",
9733
9803
  family: "core",
9734
9804
  description: "RepeatableFormSection \u2014 a form section that repeats a fixed group of fields, letting the user add or remove entries.",
@@ -9792,7 +9862,6 @@ var patterns_registry_default = {
9792
9862
  ],
9793
9863
  description: "Render function for each item. In .lolo: renderItem: (fn item <Component \u2026={@item.field}/>), binding per-item fields via @item.field.",
9794
9864
  required: true,
9795
- kind: "callback",
9796
9865
  callbackArgs: [
9797
9866
  {
9798
9867
  name: "item",
@@ -11337,6 +11406,7 @@ var patterns_registry_default = {
11337
11406
  "input-group": {
11338
11407
  type: "input-group",
11339
11408
  category: "form",
11409
+ sourceFile: "components/core/molecules/InputGroup.tsx",
11340
11410
  tier: "molecules",
11341
11411
  family: "core",
11342
11412
  description: "InputGroup Molecule Component A component for grouping input with addons (icons, buttons, text). Uses Input, Button, Icon, and Typography atoms.",
@@ -11457,9 +11527,7 @@ var patterns_registry_default = {
11457
11527
  "function",
11458
11528
  "string"
11459
11529
  ],
11460
- description: "Callback or declarative event key when clear button is clicked",
11461
- kind: "event-ref",
11462
- emitPayloadSchema: []
11530
+ description: "Callback or declarative event key when clear button is clicked"
11463
11531
  },
11464
11532
  options: {
11465
11533
  types: [
@@ -11503,16 +11571,9 @@ var patterns_registry_default = {
11503
11571
  kind: "event-ref",
11504
11572
  emitPayloadSchema: [
11505
11573
  {
11506
- name: "value",
11507
- type: "string",
11508
- required: true,
11509
- typeWhen: [
11510
- {
11511
- knob: "inputType",
11512
- equals: "number",
11513
- type: "number"
11514
- }
11515
- ]
11574
+ name: "_payload",
11575
+ type: "object",
11576
+ required: false
11516
11577
  }
11517
11578
  ]
11518
11579
  },
@@ -13812,6 +13873,7 @@ var patterns_registry_default = {
13812
13873
  "game-shell": {
13813
13874
  type: "game-shell",
13814
13875
  category: "game",
13876
+ sourceFile: "components/game/templates/GameShell.tsx",
13815
13877
  tier: "templates",
13816
13878
  family: "game",
13817
13879
  description: 'GameShell A full-screen layout wrapper for game applications. Replaces DashboardLayout for game clients \u2014 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>',
@@ -13937,7 +13999,10 @@ var patterns_registry_default = {
13937
13999
  "1:1",
13938
14000
  "16:9",
13939
14001
  "5:7",
13940
- "8:1"
14002
+ "8:1",
14003
+ "4:1",
14004
+ "5:3",
14005
+ "1:2"
13941
14006
  ]
13942
14007
  },
13943
14008
  atlas: {
@@ -14032,7 +14097,10 @@ var patterns_registry_default = {
14032
14097
  "1:1",
14033
14098
  "16:9",
14034
14099
  "5:7",
14035
- "8:1"
14100
+ "8:1",
14101
+ "4:1",
14102
+ "5:3",
14103
+ "1:2"
14036
14104
  ]
14037
14105
  },
14038
14106
  atlas: {
@@ -17389,6 +17457,7 @@ var patterns_registry_default = {
17389
17457
  "state-machine-view": {
17390
17458
  type: "state-machine-view",
17391
17459
  category: "display",
17460
+ sourceFile: "components/core/organisms/StateMachineView.tsx",
17392
17461
  tier: "organisms",
17393
17462
  family: "core",
17394
17463
  description: "StateMachineView component",
@@ -17456,7 +17525,6 @@ var patterns_registry_default = {
17456
17525
  "function"
17457
17526
  ],
17458
17527
  description: "Custom state node renderer \u2014 when provided, replaces the default circle nodes",
17459
- kind: "callback",
17460
17528
  callbackArgs: [
17461
17529
  {
17462
17530
  name: "state",
@@ -17840,6 +17908,7 @@ var patterns_registry_default = {
17840
17908
  "calendar-grid": {
17841
17909
  type: "calendar-grid",
17842
17910
  category: "display",
17911
+ sourceFile: "components/core/molecules/CalendarGrid.tsx",
17843
17912
  tier: "molecules",
17844
17913
  family: "core",
17845
17914
  description: "CalendarGrid component",
@@ -17977,7 +18046,8 @@ var patterns_registry_default = {
17977
18046
  "object"
17978
18047
  ],
17979
18048
  description: "Additional payload for long-press events",
17980
- payloadFor: "longPressEvent"
18049
+ payloadFor: "longPressEvent",
18050
+ eventPayloadBrand: true
17981
18051
  },
17982
18052
  swipeLeftEvent: {
17983
18053
  types: [
@@ -18039,7 +18109,6 @@ var patterns_registry_default = {
18039
18109
  "function"
18040
18110
  ],
18041
18111
  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.",
18042
- kind: "callback",
18043
18112
  callbackArgs: [
18044
18113
  {
18045
18114
  name: "item",
@@ -18057,7 +18126,6 @@ var patterns_registry_default = {
18057
18126
  "function"
18058
18127
  ],
18059
18128
  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 \u2026={@item.field}/>)` \u2014 the same contract `data-list` / `data-grid` / `carousel` already use.',
18060
- kind: "callback",
18061
18129
  callbackArgs: [
18062
18130
  {
18063
18131
  name: "item",
@@ -18603,6 +18671,7 @@ var patterns_registry_default = {
18603
18671
  "progress-dots": {
18604
18672
  type: "progress-dots",
18605
18673
  category: "component",
18674
+ sourceFile: "components/core/molecules/ProgressDots.tsx",
18606
18675
  tier: "molecules",
18607
18676
  family: "core",
18608
18677
  description: "ProgressDots component",
@@ -18632,7 +18701,6 @@ var patterns_registry_default = {
18632
18701
  "function"
18633
18702
  ],
18634
18703
  description: "Custom state resolver per dot index",
18635
- kind: "callback",
18636
18704
  callbackArgs: [
18637
18705
  {
18638
18706
  name: "index",
@@ -18682,6 +18750,7 @@ var patterns_registry_default = {
18682
18750
  family: "core",
18683
18751
  description: "DataGrid \u2014 structured records grid rendering rows over configurable columns, with sort, select, and drag-reorder.",
18684
18752
  capabilities: "admin table, records grid, user list, CRUD list, manage-records view, spreadsheet-style data grid, sortable columns",
18753
+ fieldsContract: "display",
18685
18754
  suggestedFor: [
18686
18755
  "data",
18687
18756
  "grid",
@@ -19088,7 +19157,6 @@ var patterns_registry_default = {
19088
19157
  "function"
19089
19158
  ],
19090
19159
  description: "Render prop for custom per-card content. When provided, `fields` are ignored; `itemActions` render as a footer beneath the custom content.",
19091
- kind: "callback",
19092
19160
  callbackArgs: [
19093
19161
  {
19094
19162
  name: "item",
@@ -19106,7 +19174,6 @@ var patterns_registry_default = {
19106
19174
  "function"
19107
19175
  ],
19108
19176
  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 \u2026={@item.field}/>), binding per-item fields via @item.field.',
19109
- kind: "callback",
19110
19177
  callbackArgs: [
19111
19178
  {
19112
19179
  name: "item",
@@ -19139,6 +19206,48 @@ var patterns_registry_default = {
19139
19206
  "card-rows"
19140
19207
  ],
19141
19208
  default: "dense"
19209
+ },
19210
+ relationsData: {
19211
+ types: [
19212
+ "object"
19213
+ ],
19214
+ description: "Relation display data: { fieldName: [{value, label}] } \u2014 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.",
19215
+ mapValue: {
19216
+ types: [
19217
+ "array"
19218
+ ],
19219
+ items: {
19220
+ types: [
19221
+ "object"
19222
+ ],
19223
+ properties: {
19224
+ value: {
19225
+ types: [
19226
+ "string"
19227
+ ]
19228
+ },
19229
+ label: {
19230
+ types: [
19231
+ "string"
19232
+ ]
19233
+ },
19234
+ description: {
19235
+ types: [
19236
+ "string"
19237
+ ]
19238
+ },
19239
+ disabled: {
19240
+ types: [
19241
+ "boolean"
19242
+ ]
19243
+ }
19244
+ },
19245
+ required: [
19246
+ "value",
19247
+ "label"
19248
+ ]
19249
+ }
19250
+ }
19142
19251
  }
19143
19252
  }
19144
19253
  },
@@ -19149,6 +19258,7 @@ var patterns_registry_default = {
19149
19258
  tier: "molecules",
19150
19259
  family: "core",
19151
19260
  description: "DataList component",
19261
+ fieldsContract: "display",
19152
19262
  suggestedFor: [
19153
19263
  "data",
19154
19264
  "list",
@@ -19632,7 +19742,6 @@ var patterns_registry_default = {
19632
19742
  "function"
19633
19743
  ],
19634
19744
  description: "Render prop for custom per-item content. When provided, `fields` and `itemActions` are ignored.",
19635
- kind: "callback",
19636
19745
  callbackArgs: [
19637
19746
  {
19638
19747
  name: "item",
@@ -19650,7 +19759,6 @@ var patterns_registry_default = {
19650
19759
  "function"
19651
19760
  ],
19652
19761
  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 \u2026={@item.field}/>), binding per-item fields via @item.field.',
19653
- kind: "callback",
19654
19762
  callbackArgs: [
19655
19763
  {
19656
19764
  name: "item",
@@ -19699,6 +19807,48 @@ var patterns_registry_default = {
19699
19807
  "card-rows"
19700
19808
  ],
19701
19809
  default: "dense"
19810
+ },
19811
+ relationsData: {
19812
+ types: [
19813
+ "object"
19814
+ ],
19815
+ description: "Relation display data: { fieldName: [{value, label}] } \u2014 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.",
19816
+ mapValue: {
19817
+ types: [
19818
+ "array"
19819
+ ],
19820
+ items: {
19821
+ types: [
19822
+ "object"
19823
+ ],
19824
+ properties: {
19825
+ value: {
19826
+ types: [
19827
+ "string"
19828
+ ]
19829
+ },
19830
+ label: {
19831
+ types: [
19832
+ "string"
19833
+ ]
19834
+ },
19835
+ description: {
19836
+ types: [
19837
+ "string"
19838
+ ]
19839
+ },
19840
+ disabled: {
19841
+ types: [
19842
+ "boolean"
19843
+ ]
19844
+ }
19845
+ },
19846
+ required: [
19847
+ "value",
19848
+ "label"
19849
+ ]
19850
+ }
19851
+ }
19702
19852
  }
19703
19853
  }
19704
19854
  },
@@ -20009,6 +20159,7 @@ var patterns_registry_default = {
20009
20159
  "range-slider": {
20010
20160
  type: "range-slider",
20011
20161
  category: "component",
20162
+ sourceFile: "components/core/atoms/RangeSlider.tsx",
20012
20163
  tier: "atoms",
20013
20164
  family: "core",
20014
20165
  description: "RangeSlider component",
@@ -20111,7 +20262,8 @@ var patterns_registry_default = {
20111
20262
  "object"
20112
20263
  ],
20113
20264
  description: "Payload to include with the action event",
20114
- payloadFor: "action"
20265
+ payloadFor: "action",
20266
+ eventPayloadBrand: true
20115
20267
  },
20116
20268
  onChange: {
20117
20269
  types: [
@@ -20131,7 +20283,6 @@ var patterns_registry_default = {
20131
20283
  "function"
20132
20284
  ],
20133
20285
  description: "Format function for tooltip display",
20134
- kind: "callback",
20135
20286
  callbackArgs: [
20136
20287
  {
20137
20288
  name: "value",
@@ -20981,7 +21132,6 @@ var patterns_registry_default = {
20981
21132
  "function"
20982
21133
  ],
20983
21134
  description: "Render function for each slide. In .lolo: renderItem: (fn item <Component \u2026={@item.field}/>), binding per-item fields via @item.field.",
20984
- kind: "callback",
20985
21135
  callbackArgs: [
20986
21136
  {
20987
21137
  name: "item",
@@ -21021,7 +21171,6 @@ var patterns_registry_default = {
21021
21171
  "function"
21022
21172
  ],
21023
21173
  description: "Children-as-function fallback for renderItem (compiler compatibility)",
21024
- kind: "callback",
21025
21174
  callbackArgs: [
21026
21175
  {
21027
21176
  name: "item",
@@ -21179,6 +21328,7 @@ var patterns_registry_default = {
21179
21328
  "sortable-list": {
21180
21329
  type: "sortable-list",
21181
21330
  category: "display",
21331
+ sourceFile: "components/core/molecules/SortableList.tsx",
21182
21332
  tier: "molecules",
21183
21333
  family: "core",
21184
21334
  description: "SortableList \u2014 a drag-and-drop reorderable list of items.",
@@ -21206,7 +21356,6 @@ var patterns_registry_default = {
21206
21356
  ],
21207
21357
  description: "Render function for each item. In .lolo: renderItem: (fn item <Component \u2026={@item.field}/>), binding per-item fields via @item.field.",
21208
21358
  required: true,
21209
- kind: "callback",
21210
21359
  callbackArgs: [
21211
21360
  {
21212
21361
  name: "item",
@@ -21250,7 +21399,8 @@ var patterns_registry_default = {
21250
21399
  "object"
21251
21400
  ],
21252
21401
  description: "reorderPayload prop",
21253
- payloadFor: "reorderEvent"
21402
+ payloadFor: "reorderEvent",
21403
+ eventPayloadBrand: true
21254
21404
  },
21255
21405
  dragHandlePosition: {
21256
21406
  types: [
@@ -28300,6 +28450,7 @@ var patterns_registry_default = {
28300
28450
  "choice-button": {
28301
28451
  type: "choice-button",
28302
28452
  category: "game",
28453
+ sourceFile: "components/game/atoms/ChoiceButton.tsx",
28303
28454
  tier: "atoms",
28304
28455
  family: "game",
28305
28456
  description: "ChoiceButton component",
@@ -28389,7 +28540,10 @@ var patterns_registry_default = {
28389
28540
  "1:1",
28390
28541
  "16:9",
28391
28542
  "5:7",
28392
- "8:1"
28543
+ "8:1",
28544
+ "4:1",
28545
+ "5:3",
28546
+ "1:2"
28393
28547
  ]
28394
28548
  },
28395
28549
  atlas: {
@@ -28479,6 +28633,7 @@ var patterns_registry_default = {
28479
28633
  "control-button": {
28480
28634
  type: "control-button",
28481
28635
  category: "game",
28636
+ sourceFile: "components/game/atoms/ControlButton.tsx",
28482
28637
  tier: "atoms",
28483
28638
  family: "game",
28484
28639
  description: "ControlButton component",
@@ -28554,7 +28709,10 @@ var patterns_registry_default = {
28554
28709
  "1:1",
28555
28710
  "16:9",
28556
28711
  "5:7",
28557
- "8:1"
28712
+ "8:1",
28713
+ "4:1",
28714
+ "5:3",
28715
+ "1:2"
28558
28716
  ]
28559
28717
  },
28560
28718
  atlas: {
@@ -28671,6 +28829,7 @@ var patterns_registry_default = {
28671
28829
  "dialogue-bubble": {
28672
28830
  type: "dialogue-bubble",
28673
28831
  category: "game",
28832
+ sourceFile: "components/game/atoms/DialogueBubble.tsx",
28674
28833
  tier: "atoms",
28675
28834
  family: "game",
28676
28835
  description: "DialogueBubble component",
@@ -28761,7 +28920,10 @@ var patterns_registry_default = {
28761
28920
  "1:1",
28762
28921
  "16:9",
28763
28922
  "5:7",
28764
- "8:1"
28923
+ "8:1",
28924
+ "4:1",
28925
+ "5:3",
28926
+ "1:2"
28765
28927
  ]
28766
28928
  },
28767
28929
  atlas: {
@@ -28832,6 +28994,7 @@ var patterns_registry_default = {
28832
28994
  "health-bar": {
28833
28995
  type: "health-bar",
28834
28996
  category: "game",
28997
+ sourceFile: "components/game/atoms/HealthBar.tsx",
28835
28998
  tier: "atoms",
28836
28999
  family: "game",
28837
29000
  description: "HealthBar component",
@@ -28980,7 +29143,10 @@ var patterns_registry_default = {
28980
29143
  "1:1",
28981
29144
  "16:9",
28982
29145
  "5:7",
28983
- "8:1"
29146
+ "8:1",
29147
+ "4:1",
29148
+ "5:3",
29149
+ "1:2"
28984
29150
  ]
28985
29151
  },
28986
29152
  atlas: {
@@ -29075,7 +29241,10 @@ var patterns_registry_default = {
29075
29241
  "1:1",
29076
29242
  "16:9",
29077
29243
  "5:7",
29078
- "8:1"
29244
+ "8:1",
29245
+ "4:1",
29246
+ "5:3",
29247
+ "1:2"
29079
29248
  ]
29080
29249
  },
29081
29250
  atlas: {
@@ -29110,6 +29279,7 @@ var patterns_registry_default = {
29110
29279
  "score-display": {
29111
29280
  type: "score-display",
29112
29281
  category: "game",
29282
+ sourceFile: "components/game/atoms/ScoreDisplay.tsx",
29113
29283
  tier: "atoms",
29114
29284
  family: "game",
29115
29285
  description: "ScoreDisplay component",
@@ -29185,7 +29355,10 @@ var patterns_registry_default = {
29185
29355
  "1:1",
29186
29356
  "16:9",
29187
29357
  "5:7",
29188
- "8:1"
29358
+ "8:1",
29359
+ "4:1",
29360
+ "5:3",
29361
+ "1:2"
29189
29362
  ]
29190
29363
  },
29191
29364
  atlas: {
@@ -29272,6 +29445,7 @@ var patterns_registry_default = {
29272
29445
  "timer-display": {
29273
29446
  type: "timer-display",
29274
29447
  category: "game",
29448
+ sourceFile: "components/game/atoms/TimerDisplay.tsx",
29275
29449
  tier: "atoms",
29276
29450
  family: "game",
29277
29451
  description: "TimerDisplay component",
@@ -29398,7 +29572,10 @@ var patterns_registry_default = {
29398
29572
  "1:1",
29399
29573
  "16:9",
29400
29574
  "5:7",
29401
- "8:1"
29575
+ "8:1",
29576
+ "4:1",
29577
+ "5:3",
29578
+ "1:2"
29402
29579
  ]
29403
29580
  },
29404
29581
  atlas: {
@@ -30707,6 +30884,7 @@ var patterns_registry_default = {
30707
30884
  "doc-search": {
30708
30885
  type: "doc-search",
30709
30886
  category: "filter",
30887
+ sourceFile: "components/core/molecules/DocSearch.tsx",
30710
30888
  tier: "molecules",
30711
30889
  family: "core",
30712
30890
  description: "DocSearch component",
@@ -30728,7 +30906,6 @@ var patterns_registry_default = {
30728
30906
  "function"
30729
30907
  ],
30730
30908
  description: "Callback invoked with the search query, returns results",
30731
- kind: "callback",
30732
30909
  callbackArgs: [
30733
30910
  {
30734
30911
  name: "query",
@@ -31668,6 +31845,7 @@ var patterns_registry_default = {
31668
31845
  "game-hud": {
31669
31846
  type: "game-hud",
31670
31847
  category: "game",
31848
+ sourceFile: "components/game/molecules/GameHud.tsx",
31671
31849
  tier: "molecules",
31672
31850
  family: "game",
31673
31851
  description: "GameHud component",
@@ -31758,7 +31936,10 @@ var patterns_registry_default = {
31758
31936
  "1:1",
31759
31937
  "16:9",
31760
31938
  "5:7",
31761
- "8:1"
31939
+ "8:1",
31940
+ "4:1",
31941
+ "5:3",
31942
+ "1:2"
31762
31943
  ]
31763
31944
  },
31764
31945
  atlas: {
@@ -31852,7 +32033,10 @@ var patterns_registry_default = {
31852
32033
  "1:1",
31853
32034
  "16:9",
31854
32035
  "5:7",
31855
- "8:1"
32036
+ "8:1",
32037
+ "4:1",
32038
+ "5:3",
32039
+ "1:2"
31856
32040
  ]
31857
32041
  },
31858
32042
  atlas: {
@@ -32009,7 +32193,10 @@ var patterns_registry_default = {
32009
32193
  "1:1",
32010
32194
  "16:9",
32011
32195
  "5:7",
32012
- "8:1"
32196
+ "8:1",
32197
+ "4:1",
32198
+ "5:3",
32199
+ "1:2"
32013
32200
  ]
32014
32201
  },
32015
32202
  atlas: {
@@ -32103,7 +32290,10 @@ var patterns_registry_default = {
32103
32290
  "1:1",
32104
32291
  "16:9",
32105
32292
  "5:7",
32106
- "8:1"
32293
+ "8:1",
32294
+ "4:1",
32295
+ "5:3",
32296
+ "1:2"
32107
32297
  ]
32108
32298
  },
32109
32299
  atlas: {
@@ -32292,7 +32482,10 @@ var patterns_registry_default = {
32292
32482
  "1:1",
32293
32483
  "16:9",
32294
32484
  "5:7",
32295
- "8:1"
32485
+ "8:1",
32486
+ "4:1",
32487
+ "5:3",
32488
+ "1:2"
32296
32489
  ]
32297
32490
  },
32298
32491
  atlas: {
@@ -32639,7 +32832,10 @@ var patterns_registry_default = {
32639
32832
  "1:1",
32640
32833
  "16:9",
32641
32834
  "5:7",
32642
- "8:1"
32835
+ "8:1",
32836
+ "4:1",
32837
+ "5:3",
32838
+ "1:2"
32643
32839
  ]
32644
32840
  },
32645
32841
  atlas: {
@@ -32680,6 +32876,7 @@ var patterns_registry_default = {
32680
32876
  "stat-badge": {
32681
32877
  type: "stat-badge",
32682
32878
  category: "game",
32879
+ sourceFile: "components/game/molecules/StatBadge.tsx",
32683
32880
  tier: "molecules",
32684
32881
  family: "game",
32685
32882
  description: "StatBadge component",
@@ -32755,7 +32952,10 @@ var patterns_registry_default = {
32755
32952
  "1:1",
32756
32953
  "16:9",
32757
32954
  "5:7",
32758
- "8:1"
32955
+ "8:1",
32956
+ "4:1",
32957
+ "5:3",
32958
+ "1:2"
32759
32959
  ]
32760
32960
  },
32761
32961
  atlas: {
@@ -32850,7 +33050,10 @@ var patterns_registry_default = {
32850
33050
  "1:1",
32851
33051
  "16:9",
32852
33052
  "5:7",
32853
- "8:1"
33053
+ "8:1",
33054
+ "4:1",
33055
+ "5:3",
33056
+ "1:2"
32854
33057
  ]
32855
33058
  },
32856
33059
  atlas: {
@@ -33376,6 +33579,7 @@ var patterns_registry_default = {
33376
33579
  "game-audio-toggle": {
33377
33580
  type: "game-audio-toggle",
33378
33581
  category: "game",
33582
+ sourceFile: "components/game/atoms/GameAudioToggle.tsx",
33379
33583
  tier: "atoms",
33380
33584
  family: "game",
33381
33585
  description: "GameAudioToggle component",
@@ -33507,7 +33711,10 @@ var patterns_registry_default = {
33507
33711
  "1:1",
33508
33712
  "16:9",
33509
33713
  "5:7",
33510
- "8:1"
33714
+ "8:1",
33715
+ "4:1",
33716
+ "5:3",
33717
+ "1:2"
33511
33718
  ]
33512
33719
  },
33513
33720
  atlas: {
@@ -33602,7 +33809,10 @@ var patterns_registry_default = {
33602
33809
  "1:1",
33603
33810
  "16:9",
33604
33811
  "5:7",
33605
- "8:1"
33812
+ "8:1",
33813
+ "4:1",
33814
+ "5:3",
33815
+ "1:2"
33606
33816
  ]
33607
33817
  },
33608
33818
  atlas: {
@@ -33651,6 +33861,7 @@ var patterns_registry_default = {
33651
33861
  "trait-slot": {
33652
33862
  type: "trait-slot",
33653
33863
  category: "game",
33864
+ sourceFile: "components/game/molecules/TraitSlot.tsx",
33654
33865
  tier: "molecules",
33655
33866
  family: "game",
33656
33867
  description: "Event Contract: Emits: UI:CLICK Emits: UI:REMOVE",
@@ -33763,7 +33974,10 @@ var patterns_registry_default = {
33763
33974
  "1:1",
33764
33975
  "16:9",
33765
33976
  "5:7",
33766
- "8:1"
33977
+ "8:1",
33978
+ "4:1",
33979
+ "5:3",
33980
+ "1:2"
33767
33981
  ]
33768
33982
  },
33769
33983
  atlas: {
@@ -34006,7 +34220,10 @@ var patterns_registry_default = {
34006
34220
  "1:1",
34007
34221
  "16:9",
34008
34222
  "5:7",
34009
- "8:1"
34223
+ "8:1",
34224
+ "4:1",
34225
+ "5:3",
34226
+ "1:2"
34010
34227
  ]
34011
34228
  },
34012
34229
  atlas: {
@@ -34183,7 +34400,10 @@ var patterns_registry_default = {
34183
34400
  "1:1",
34184
34401
  "16:9",
34185
34402
  "5:7",
34186
- "8:1"
34403
+ "8:1",
34404
+ "4:1",
34405
+ "5:3",
34406
+ "1:2"
34187
34407
  ]
34188
34408
  },
34189
34409
  atlas: {
@@ -34409,7 +34629,10 @@ var patterns_registry_default = {
34409
34629
  "1:1",
34410
34630
  "16:9",
34411
34631
  "5:7",
34412
- "8:1"
34632
+ "8:1",
34633
+ "4:1",
34634
+ "5:3",
34635
+ "1:2"
34413
34636
  ]
34414
34637
  },
34415
34638
  atlas: {
@@ -34604,6 +34827,7 @@ var patterns_registry_default = {
34604
34827
  "action-palette": {
34605
34828
  type: "action-palette",
34606
34829
  category: "game",
34830
+ sourceFile: "components/game/molecules/ActionPalette.tsx",
34607
34831
  tier: "molecules",
34608
34832
  family: "game",
34609
34833
  description: "ActionPalette Component Grid of draggable ActionTile components for the Sequencer tier. Kids pick from these to build their sequence.",
@@ -34714,7 +34938,10 @@ var patterns_registry_default = {
34714
34938
  "1:1",
34715
34939
  "16:9",
34716
34940
  "5:7",
34717
- "8:1"
34941
+ "8:1",
34942
+ "4:1",
34943
+ "5:3",
34944
+ "1:2"
34718
34945
  ]
34719
34946
  },
34720
34947
  atlas: {
@@ -34902,6 +35129,7 @@ var patterns_registry_default = {
34902
35129
  "action-tile": {
34903
35130
  type: "action-tile",
34904
35131
  category: "game",
35132
+ sourceFile: "components/game/molecules/ActionTile.tsx",
34905
35133
  tier: "molecules",
34906
35134
  family: "game",
34907
35135
  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.",
@@ -35114,7 +35342,10 @@ var patterns_registry_default = {
35114
35342
  "1:1",
35115
35343
  "16:9",
35116
35344
  "5:7",
35117
- "8:1"
35345
+ "8:1",
35346
+ "4:1",
35347
+ "5:3",
35348
+ "1:2"
35118
35349
  ]
35119
35350
  },
35120
35351
  atlas: {
@@ -35277,6 +35508,7 @@ var patterns_registry_default = {
35277
35508
  "sequence-bar": {
35278
35509
  type: "sequence-bar",
35279
35510
  category: "game",
35511
+ sourceFile: "components/game/molecules/SequenceBar.tsx",
35280
35512
  tier: "molecules",
35281
35513
  family: "game",
35282
35514
  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.",
@@ -35387,7 +35619,10 @@ var patterns_registry_default = {
35387
35619
  "1:1",
35388
35620
  "16:9",
35389
35621
  "5:7",
35390
- "8:1"
35622
+ "8:1",
35623
+ "4:1",
35624
+ "5:3",
35625
+ "1:2"
35391
35626
  ]
35392
35627
  },
35393
35628
  atlas: {
@@ -35615,7 +35850,10 @@ var patterns_registry_default = {
35615
35850
  "1:1",
35616
35851
  "16:9",
35617
35852
  "5:7",
35618
- "8:1"
35853
+ "8:1",
35854
+ "4:1",
35855
+ "5:3",
35856
+ "1:2"
35619
35857
  ]
35620
35858
  },
35621
35859
  atlas: {
@@ -36856,6 +37094,7 @@ var patterns_registry_default = {
36856
37094
  family: "core",
36857
37095
  description: "TableView \u2014 sortable, selectable data table rendering rows over configurable columns, with inline row actions and grouping.",
36858
37096
  capabilities: "admin console table, records list, CRUD data table, user list, manage-users grid, sortable columns, row selection with bulk actions, grouped list view",
37097
+ fieldsContract: "display",
36859
37098
  suggestedFor: [
36860
37099
  "table",
36861
37100
  "view",
@@ -37312,7 +37551,6 @@ var patterns_registry_default = {
37312
37551
  "function"
37313
37552
  ],
37314
37553
  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.",
37315
- kind: "callback",
37316
37554
  callbackArgs: [
37317
37555
  {
37318
37556
  name: "item",
@@ -37330,7 +37568,6 @@ var patterns_registry_default = {
37330
37568
  "function"
37331
37569
  ],
37332
37570
  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 \u2026={@item.field}/>), binding per-item fields via @item.field.',
37333
- kind: "callback",
37334
37571
  callbackArgs: [
37335
37572
  {
37336
37573
  name: "item",
@@ -37356,6 +37593,48 @@ var patterns_registry_default = {
37356
37593
  "bordered"
37357
37594
  ],
37358
37595
  default: "dense"
37596
+ },
37597
+ relationsData: {
37598
+ types: [
37599
+ "object"
37600
+ ],
37601
+ description: "Relation display data: { fieldName: [{value, label}] } \u2014 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.",
37602
+ mapValue: {
37603
+ types: [
37604
+ "array"
37605
+ ],
37606
+ items: {
37607
+ types: [
37608
+ "object"
37609
+ ],
37610
+ properties: {
37611
+ value: {
37612
+ types: [
37613
+ "string"
37614
+ ]
37615
+ },
37616
+ label: {
37617
+ types: [
37618
+ "string"
37619
+ ]
37620
+ },
37621
+ description: {
37622
+ types: [
37623
+ "string"
37624
+ ]
37625
+ },
37626
+ disabled: {
37627
+ types: [
37628
+ "boolean"
37629
+ ]
37630
+ }
37631
+ },
37632
+ required: [
37633
+ "value",
37634
+ "label"
37635
+ ]
37636
+ }
37637
+ }
37359
37638
  }
37360
37639
  }
37361
37640
  },
@@ -37937,6 +38216,7 @@ var patterns_registry_default = {
37937
38216
  "code-runner-panel": {
37938
38217
  type: "code-runner-panel",
37939
38218
  category: "display",
38219
+ sourceFile: "components/core/organisms/CodeRunnerPanel.tsx",
37940
38220
  tier: "organisms",
37941
38221
  family: "core",
37942
38222
  description: "CodeRunnerPanel component",
@@ -37974,7 +38254,6 @@ var patterns_registry_default = {
37974
38254
  "function"
37975
38255
  ],
37976
38256
  description: "Simulate executing the code. Omit to render a read-only block. Real execution is a separate future track \u2014 this callback supplies deterministic simulated output for UI feedback.",
37977
- kind: "callback",
37978
38257
  callbackArgs: [
37979
38258
  {
37980
38259
  name: "code",
@@ -38001,6 +38280,7 @@ var patterns_registry_default = {
38001
38280
  "segment-renderer": {
38002
38281
  type: "segment-renderer",
38003
38282
  category: "display",
38283
+ sourceFile: "components/core/organisms/SegmentRenderer.tsx",
38004
38284
  tier: "organisms",
38005
38285
  family: "core",
38006
38286
  description: "SegmentRenderer component",
@@ -38092,7 +38372,6 @@ var patterns_registry_default = {
38092
38372
  "function"
38093
38373
  ],
38094
38374
  description: "Simulate executing runnable code blocks. Omit to render runnable blocks as read-only. Real execution is a future track.",
38095
- kind: "callback",
38096
38375
  callbackArgs: [
38097
38376
  {
38098
38377
  name: "code",
@@ -38110,7 +38389,6 @@ var patterns_registry_default = {
38110
38389
  "function"
38111
38390
  ],
38112
38391
  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.",
38113
- kind: "callback",
38114
38392
  callbackArgs: [
38115
38393
  {
38116
38394
  name: "type",
@@ -38664,6 +38942,7 @@ var patterns_registry_default = {
38664
38942
  "canvas-2d": {
38665
38943
  type: "canvas-2d",
38666
38944
  category: "game",
38945
+ sourceFile: "components/game/molecules/Canvas2D.tsx",
38667
38946
  tier: "molecules",
38668
38947
  family: "game",
38669
38948
  description: "Canvas2D component",
@@ -38810,7 +39089,10 @@ var patterns_registry_default = {
38810
39089
  "1:1",
38811
39090
  "16:9",
38812
39091
  "5:7",
38813
- "8:1"
39092
+ "8:1",
39093
+ "4:1",
39094
+ "5:3",
39095
+ "1:2"
38814
39096
  ]
38815
39097
  },
38816
39098
  atlas: {
@@ -38905,10 +39187,12 @@ var patterns_registry_default = {
38905
39187
  "object"
38906
39188
  ],
38907
39189
  description: "Maps a keydown `e.code` \u2192 the board's SEMANTIC event (device-agnostic input).",
39190
+ kind: "event-map",
38908
39191
  mapValue: {
38909
39192
  types: [
38910
39193
  "string"
38911
- ]
39194
+ ],
39195
+ kind: "event"
38912
39196
  }
38913
39197
  },
38914
39198
  keyUpMap: {
@@ -38916,10 +39200,12 @@ var patterns_registry_default = {
38916
39200
  "object"
38917
39201
  ],
38918
39202
  description: "Maps a keyup `e.code` \u2192 the board's SEMANTIC event.",
39203
+ kind: "event-map",
38919
39204
  mapValue: {
38920
39205
  types: [
38921
39206
  "string"
38922
- ]
39207
+ ],
39208
+ kind: "event"
38923
39209
  }
38924
39210
  },
38925
39211
  editable: {
@@ -39122,6 +39408,7 @@ var patterns_registry_default = {
39122
39408
  "control-grid": {
39123
39409
  type: "control-grid",
39124
39410
  category: "game",
39411
+ sourceFile: "components/game/molecules/ControlGrid.tsx",
39125
39412
  tier: "molecules",
39126
39413
  family: "game",
39127
39414
  description: "ControlGrid component",
@@ -39233,7 +39520,10 @@ var patterns_registry_default = {
39233
39520
  "1:1",
39234
39521
  "16:9",
39235
39522
  "5:7",
39236
- "8:1"
39523
+ "8:1",
39524
+ "4:1",
39525
+ "5:3",
39526
+ "1:2"
39237
39527
  ]
39238
39528
  },
39239
39529
  atlas: {
@@ -39376,10 +39666,12 @@ var patterns_registry_default = {
39376
39666
  "object"
39377
39667
  ],
39378
39668
  description: 'Per-direction PRESS \u2192 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.',
39669
+ kind: "event-map",
39379
39670
  mapValue: {
39380
39671
  types: [
39381
39672
  "string"
39382
- ]
39673
+ ],
39674
+ kind: "event"
39383
39675
  }
39384
39676
  },
39385
39677
  directionReleaseEvents: {
@@ -39387,10 +39679,12 @@ var patterns_registry_default = {
39387
39679
  "object"
39388
39680
  ],
39389
39681
  description: 'Per-direction RELEASE \u2192 semantic event, e.g. `{ left: "STOP", right: "STOP" }`. Omit a direction to ignore its release.',
39682
+ kind: "event-map",
39390
39683
  mapValue: {
39391
39684
  types: [
39392
39685
  "string"
39393
- ]
39686
+ ],
39687
+ kind: "event"
39394
39688
  }
39395
39689
  },
39396
39690
  directionAssets: {
@@ -39462,7 +39756,10 @@ var patterns_registry_default = {
39462
39756
  "1:1",
39463
39757
  "16:9",
39464
39758
  "5:7",
39465
- "8:1"
39759
+ "8:1",
39760
+ "4:1",
39761
+ "5:3",
39762
+ "1:2"
39466
39763
  ]
39467
39764
  },
39468
39765
  atlas: {
@@ -39533,6 +39830,7 @@ var patterns_registry_default = {
39533
39830
  "game-icon": {
39534
39831
  type: "game-icon",
39535
39832
  category: "game",
39833
+ sourceFile: "components/core/atoms/GameIcon.tsx",
39536
39834
  tier: "atoms",
39537
39835
  family: "core",
39538
39836
  description: "GameIcon component",
@@ -39608,7 +39906,10 @@ var patterns_registry_default = {
39608
39906
  "1:1",
39609
39907
  "16:9",
39610
39908
  "5:7",
39611
- "8:1"
39909
+ "8:1",
39910
+ "4:1",
39911
+ "5:3",
39912
+ "1:2"
39612
39913
  ]
39613
39914
  },
39614
39915
  atlas: {
@@ -43332,6 +43633,7 @@ var patterns_registry_default = {
43332
43633
  "math-canvas": {
43333
43634
  type: "math-canvas",
43334
43635
  category: "learning",
43636
+ sourceFile: "components/learning/molecules/MathCanvas.tsx",
43335
43637
  tier: "molecules",
43336
43638
  family: "learning",
43337
43639
  description: "MathCanvas component",
@@ -44363,10 +44665,12 @@ var patterns_registry_default = {
44363
44665
  "object"
44364
44666
  ],
44365
44667
  description: "Maps a keydown `e.code` \u2192 the board's SEMANTIC event (device-agnostic input), emitted as `UI:{event}` \u2014 same contract as the game canvas keyMap.",
44668
+ kind: "event-map",
44366
44669
  mapValue: {
44367
44670
  types: [
44368
44671
  "string"
44369
- ]
44672
+ ],
44673
+ kind: "event"
44370
44674
  }
44371
44675
  },
44372
44676
  keyUpMap: {
@@ -44374,10 +44678,12 @@ var patterns_registry_default = {
44374
44678
  "object"
44375
44679
  ],
44376
44680
  description: "Maps a keyup `e.code` \u2192 the board's SEMANTIC event.",
44681
+ kind: "event-map",
44377
44682
  mapValue: {
44378
44683
  types: [
44379
44684
  "string"
44380
- ]
44685
+ ],
44686
+ kind: "event"
44381
44687
  }
44382
44688
  },
44383
44689
  isLoading: {
@@ -47906,6 +48212,7 @@ var patterns_registry_default = {
47906
48212
  "draw-sprite": {
47907
48213
  type: "draw-sprite",
47908
48214
  category: "game",
48215
+ sourceFile: "components/game/atoms/DrawSprite.tsx",
47909
48216
  tier: "atoms",
47910
48217
  family: "game",
47911
48218
  description: "DrawSprite component",
@@ -48027,7 +48334,10 @@ var patterns_registry_default = {
48027
48334
  "1:1",
48028
48335
  "16:9",
48029
48336
  "5:7",
48030
- "8:1"
48337
+ "8:1",
48338
+ "4:1",
48339
+ "5:3",
48340
+ "1:2"
48031
48341
  ]
48032
48342
  },
48033
48343
  atlas: {
@@ -49011,6 +49321,7 @@ var patterns_registry_default = {
49011
49321
  "draw-sprite-layer": {
49012
49322
  type: "draw-sprite-layer",
49013
49323
  category: "game",
49324
+ sourceFile: "components/game/molecules/DrawSpriteLayer.tsx",
49014
49325
  tier: "molecules",
49015
49326
  family: "game",
49016
49327
  description: "DrawSpriteLayer component",
@@ -49153,7 +49464,10 @@ var patterns_registry_default = {
49153
49464
  "1:1",
49154
49465
  "16:9",
49155
49466
  "5:7",
49156
- "8:1"
49467
+ "8:1",
49468
+ "4:1",
49469
+ "5:3",
49470
+ "1:2"
49157
49471
  ]
49158
49472
  },
49159
49473
  atlas: {
@@ -49459,6 +49773,7 @@ var patterns_registry_default = {
49459
49773
  canvas: {
49460
49774
  type: "canvas",
49461
49775
  category: "game",
49776
+ sourceFile: "components/game/molecules/Canvas.tsx",
49462
49777
  tier: "molecules",
49463
49778
  family: "game",
49464
49779
  description: "Canvas component",
@@ -49698,7 +50013,10 @@ var patterns_registry_default = {
49698
50013
  "1:1",
49699
50014
  "16:9",
49700
50015
  "5:7",
49701
- "8:1"
50016
+ "8:1",
50017
+ "4:1",
50018
+ "5:3",
50019
+ "1:2"
49702
50020
  ]
49703
50021
  },
49704
50022
  atlas: {
@@ -50115,10 +50433,12 @@ var patterns_registry_default = {
50115
50433
  "object"
50116
50434
  ],
50117
50435
  description: "keyMap prop",
50436
+ kind: "event-map",
50118
50437
  mapValue: {
50119
50438
  types: [
50120
50439
  "string"
50121
- ]
50440
+ ],
50441
+ kind: "event"
50122
50442
  }
50123
50443
  },
50124
50444
  keyUpMap: {
@@ -50126,10 +50446,12 @@ var patterns_registry_default = {
50126
50446
  "object"
50127
50447
  ],
50128
50448
  description: "keyUpMap prop",
50449
+ kind: "event-map",
50129
50450
  mapValue: {
50130
50451
  types: [
50131
50452
  "string"
50132
- ]
50453
+ ],
50454
+ kind: "event"
50133
50455
  }
50134
50456
  },
50135
50457
  editable: {
@@ -52131,6 +52453,7 @@ var patterns_registry_default = {
52131
52453
  "draw-fx-layer": {
52132
52454
  type: "draw-fx-layer",
52133
52455
  category: "game",
52456
+ sourceFile: "components/game/molecules/DrawFxLayer.tsx",
52134
52457
  tier: "molecules",
52135
52458
  family: "game",
52136
52459
  description: "DrawFxLayer component",
@@ -52506,7 +52829,10 @@ var patterns_registry_default = {
52506
52829
  "1:1",
52507
52830
  "16:9",
52508
52831
  "5:7",
52509
- "8:1"
52832
+ "8:1",
52833
+ "4:1",
52834
+ "5:3",
52835
+ "1:2"
52510
52836
  ]
52511
52837
  },
52512
52838
  atlas: {
@@ -53924,7 +54250,10 @@ var patterns_registry_default = {
53924
54250
  "1:1",
53925
54251
  "16:9",
53926
54252
  "5:7",
53927
- "8:1"
54253
+ "8:1",
54254
+ "4:1",
54255
+ "5:3",
54256
+ "1:2"
53928
54257
  ]
53929
54258
  },
53930
54259
  atlas: {
@@ -54056,7 +54385,7 @@ var patterns_registry_default = {
54056
54385
  types: [
54057
54386
  "array"
54058
54387
  ],
54059
- description: "The skeleton (bind pose; FK chain via `parent` names).",
54388
+ description: "The skeleton (bind pose; FK chain via `parent` names). Falls back to the rigbundle's `bones` when empty.",
54060
54389
  required: true,
54061
54390
  items: {
54062
54391
  types: [
@@ -54139,6 +54468,12 @@ var patterns_registry_default = {
54139
54468
  "frames"
54140
54469
  ]
54141
54470
  },
54471
+ clipName: {
54472
+ types: [
54473
+ "string"
54474
+ ],
54475
+ description: "Named clip inside the rigbundle at `meshUrl` (`clips[clipName].frames`); used when `clip` is absent. Empty/unknown = no clip."
54476
+ },
54142
54477
  frame: {
54143
54478
  types: [
54144
54479
  "number"
@@ -54206,7 +54541,7 @@ var patterns_registry_default = {
54206
54541
  // src/patterns/integrators-registry.json
54207
54542
  var integrators_registry_default = {
54208
54543
  version: "1.0.0",
54209
- exportedAt: "2026-09-10T08:46:50.227Z",
54544
+ exportedAt: "2026-09-12T17:27:32.966Z",
54210
54545
  integrators: {
54211
54546
  github: {
54212
54547
  name: "github",
@@ -57815,9 +58150,9 @@ var integrators_registry_default = {
57815
58150
  },
57816
58151
  {
57817
58152
  name: "rig",
57818
- type: "string",
58153
+ type: "object",
57819
58154
  required: true,
57820
- description: "Rig type to build (e.g. 'humanoid', 'quadruped')."
58155
+ description: "The rig definition (parts, boxes, pivots, \u2026) as JSON."
57821
58156
  }
57822
58157
  ],
57823
58158
  responseShape: {
@@ -57840,9 +58175,9 @@ var integrators_registry_default = {
57840
58175
  },
57841
58176
  {
57842
58177
  name: "rig",
57843
- type: "string",
58178
+ type: "object",
57844
58179
  required: true,
57845
- description: "Rig type."
58180
+ description: "The rig definition (parts, boxes, pivots, \u2026) as JSON."
57846
58181
  },
57847
58182
  {
57848
58183
  name: "preset",
@@ -57855,9 +58190,336 @@ var integrators_registry_default = {
57855
58190
  type: "string",
57856
58191
  required: true,
57857
58192
  description: "Output directory for rendered files."
58193
+ },
58194
+ {
58195
+ name: "mode",
58196
+ type: "string",
58197
+ required: false,
58198
+ description: "Render path: 'mesh' (skinned, deforming) or 'cutout' (rigid per-part layers). Defaults to 'mesh'."
58199
+ },
58200
+ {
58201
+ name: "supersample",
58202
+ type: "number",
58203
+ required: false,
58204
+ description: "Supersampling factor for the cutout path. Defaults to 1."
57858
58205
  }
57859
58206
  ],
57860
- responseShape: {}
58207
+ responseShape: {
58208
+ outdir: "string",
58209
+ frames: "number",
58210
+ framePaths: "string[]",
58211
+ sheet: "string",
58212
+ gif: "string",
58213
+ atlas: "string"
58214
+ }
58215
+ },
58216
+ {
58217
+ name: "listPresets",
58218
+ description: "List the available animation presets (name, fps, frame count, bone roles) from the local rigger service.",
58219
+ params: [],
58220
+ responseShape: {
58221
+ presets: {
58222
+ type: "array",
58223
+ items: {
58224
+ type: "object",
58225
+ properties: {
58226
+ name: {
58227
+ type: "string",
58228
+ required: true
58229
+ },
58230
+ path: {
58231
+ type: "string",
58232
+ required: true
58233
+ },
58234
+ fps: {
58235
+ type: "number",
58236
+ required: true
58237
+ },
58238
+ frames: {
58239
+ type: "number",
58240
+ required: true
58241
+ },
58242
+ bones: {
58243
+ type: "object[]",
58244
+ required: true
58245
+ }
58246
+ }
58247
+ }
58248
+ }
58249
+ }
58250
+ },
58251
+ {
58252
+ name: "loadRig",
58253
+ description: "Load a rig file, resolving `cloneOf` parts to concrete box/pivot geometry.",
58254
+ params: [
58255
+ {
58256
+ name: "rigPath",
58257
+ type: "string",
58258
+ required: true,
58259
+ description: "Path to the rig JSON file."
58260
+ }
58261
+ ],
58262
+ responseShape: {
58263
+ rig: "object",
58264
+ resolved: "object"
58265
+ }
58266
+ },
58267
+ {
58268
+ name: "saveRig",
58269
+ description: "Save a rig file; the server validates it and rejects a malformed part.",
58270
+ params: [
58271
+ {
58272
+ name: "rigPath",
58273
+ type: "string",
58274
+ required: true,
58275
+ description: "Path to write the rig JSON file."
58276
+ },
58277
+ {
58278
+ name: "rig",
58279
+ type: "object",
58280
+ required: true,
58281
+ description: "The rig definition (parts, boxes, pivots, \u2026) as JSON."
58282
+ }
58283
+ ],
58284
+ responseShape: {
58285
+ rigPath: "string",
58286
+ parts: "number"
58287
+ }
58288
+ },
58289
+ {
58290
+ name: "ownership",
58291
+ description: "Render the per-part pixel ownership map for a rig over a source image.",
58292
+ params: [
58293
+ {
58294
+ name: "imagePath",
58295
+ type: "string",
58296
+ required: true,
58297
+ description: "Path to the source image."
58298
+ },
58299
+ {
58300
+ name: "rig",
58301
+ type: "object",
58302
+ required: true,
58303
+ description: "The rig definition (parts, boxes, pivots, \u2026) as JSON."
58304
+ },
58305
+ {
58306
+ name: "outPath",
58307
+ type: "string",
58308
+ required: true,
58309
+ description: "Path to write the ownership-map PNG."
58310
+ }
58311
+ ],
58312
+ responseShape: {
58313
+ outPath: "string",
58314
+ legend: {
58315
+ type: "array",
58316
+ items: {
58317
+ type: "object",
58318
+ properties: {
58319
+ name: {
58320
+ type: "string",
58321
+ required: true
58322
+ },
58323
+ color: {
58324
+ type: "string",
58325
+ required: true
58326
+ }
58327
+ }
58328
+ }
58329
+ }
58330
+ }
58331
+ },
58332
+ {
58333
+ name: "buildLayers",
58334
+ description: "Build per-part cutout layer images (name, box, z-order, pivot) from a source image and rig.",
58335
+ params: [
58336
+ {
58337
+ name: "imagePath",
58338
+ type: "string",
58339
+ required: true,
58340
+ description: "Path to the source image."
58341
+ },
58342
+ {
58343
+ name: "rig",
58344
+ type: "object",
58345
+ required: true,
58346
+ description: "The rig definition (parts, boxes, pivots, \u2026) as JSON."
58347
+ },
58348
+ {
58349
+ name: "outDir",
58350
+ type: "string",
58351
+ required: true,
58352
+ description: "Output directory for the layer images."
58353
+ }
58354
+ ],
58355
+ responseShape: {
58356
+ layers: {
58357
+ type: "array",
58358
+ items: {
58359
+ type: "object",
58360
+ properties: {
58361
+ name: {
58362
+ type: "string",
58363
+ required: true
58364
+ },
58365
+ path: {
58366
+ type: "string",
58367
+ required: true
58368
+ },
58369
+ x: {
58370
+ type: "number",
58371
+ required: true
58372
+ },
58373
+ y: {
58374
+ type: "number",
58375
+ required: true
58376
+ },
58377
+ w: {
58378
+ type: "number",
58379
+ required: true
58380
+ },
58381
+ h: {
58382
+ type: "number",
58383
+ required: true
58384
+ },
58385
+ z: {
58386
+ type: "number",
58387
+ required: true
58388
+ },
58389
+ pivot: {
58390
+ type: "[number, number]",
58391
+ required: true
58392
+ },
58393
+ isRest: {
58394
+ type: "boolean",
58395
+ required: true
58396
+ }
58397
+ }
58398
+ }
58399
+ }
58400
+ }
58401
+ },
58402
+ {
58403
+ name: "pose",
58404
+ description: "Sample a pose/animation preset into per-frame, per-part transforms for a rig.",
58405
+ params: [
58406
+ {
58407
+ name: "imagePath",
58408
+ type: "string",
58409
+ required: true,
58410
+ description: "Path to the source image."
58411
+ },
58412
+ {
58413
+ name: "rig",
58414
+ type: "object",
58415
+ required: true,
58416
+ description: "The rig definition (parts, boxes, pivots, \u2026) as JSON."
58417
+ },
58418
+ {
58419
+ name: "roles",
58420
+ type: "object",
58421
+ required: true,
58422
+ description: "Map of part name to preset bone role.",
58423
+ mapValue: {
58424
+ type: "string"
58425
+ }
58426
+ },
58427
+ {
58428
+ name: "preset",
58429
+ type: "string",
58430
+ required: false,
58431
+ description: "Animation preset name."
58432
+ },
58433
+ {
58434
+ name: "overrides",
58435
+ type: "object",
58436
+ required: false,
58437
+ description: "Per-part motion overrides applied over the preset."
58438
+ }
58439
+ ],
58440
+ responseShape: {
58441
+ fps: "number",
58442
+ frames: {
58443
+ type: "array",
58444
+ items: {
58445
+ type: "object",
58446
+ mapValue: {
58447
+ type: "object",
58448
+ properties: {
58449
+ angle: {
58450
+ type: "number",
58451
+ required: true
58452
+ },
58453
+ bx: {
58454
+ type: "number",
58455
+ required: true
58456
+ },
58457
+ by: {
58458
+ type: "number",
58459
+ required: true
58460
+ }
58461
+ }
58462
+ }
58463
+ }
58464
+ }
58465
+ }
58466
+ },
58467
+ {
58468
+ name: "generate",
58469
+ description: "Generate one image on the local image server (text-to-image, or a Kontext edit conditioned on `sourcePath`).",
58470
+ params: [
58471
+ {
58472
+ name: "model",
58473
+ type: "'z-image-turbo' | 'kontext'",
58474
+ required: true,
58475
+ description: "Generation model: 'z-image-turbo' (text-to-image) or 'kontext' (edit; requires sourcePath)."
58476
+ },
58477
+ {
58478
+ name: "prompt",
58479
+ type: "string",
58480
+ required: true,
58481
+ description: "The generation/edit prompt."
58482
+ },
58483
+ {
58484
+ name: "seed",
58485
+ type: "number",
58486
+ required: false,
58487
+ description: "Random seed; omit for a fresh one each call."
58488
+ },
58489
+ {
58490
+ name: "size",
58491
+ type: "string",
58492
+ required: false,
58493
+ description: "Output image size, e.g. '1024x1024'. Defaults to '1024x1024'."
58494
+ },
58495
+ {
58496
+ name: "steps",
58497
+ type: "number",
58498
+ required: false,
58499
+ description: "Diffusion step count."
58500
+ },
58501
+ {
58502
+ name: "sourcePath",
58503
+ type: "string",
58504
+ required: false,
58505
+ description: "Path to the source image to edit; REQUIRED for 'kontext'."
58506
+ },
58507
+ {
58508
+ name: "outDir",
58509
+ type: "string",
58510
+ required: true,
58511
+ description: "Output directory the generated PNG is written under."
58512
+ }
58513
+ ],
58514
+ responseShape: {
58515
+ outPath: "string",
58516
+ model: "string",
58517
+ prompt: "string",
58518
+ seed: "number | null",
58519
+ size: "string",
58520
+ sourcePath: "string | null",
58521
+ elapsedMs: "number"
58522
+ }
57861
58523
  }
57862
58524
  ]
57863
58525
  }
@@ -57879,7 +58541,7 @@ var integrators_registry_default = {
57879
58541
  // src/patterns/component-mapping.json
57880
58542
  var component_mapping_default = {
57881
58543
  version: "1.0.0",
57882
- exportedAt: "2026-09-10T08:51:20.514Z",
58544
+ exportedAt: "2026-09-12T18:14:02.248Z",
57883
58545
  mappings: {
57884
58546
  "page-header": {
57885
58547
  component: "PageHeader",
@@ -59329,7 +59991,7 @@ var component_mapping_default = {
59329
59991
  // src/patterns/event-contracts.json
59330
59992
  var event_contracts_default = {
59331
59993
  version: "1.0.0",
59332
- exportedAt: "2026-09-10T08:51:20.514Z",
59994
+ exportedAt: "2026-09-12T18:14:02.248Z",
59333
59995
  contracts: {
59334
59996
  form: {
59335
59997
  emits: [