@almadar/patterns 2.34.1 → 2.36.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "1.0.0",
3
- "exportedAt": "2026-05-30T10:04:19.715Z",
3
+ "exportedAt": "2026-06-04T18:07:03.548Z",
4
4
  "patterns": {
5
5
  "entity-table": {
6
6
  "type": "entity-table",
@@ -19,6 +19,8 @@
19
19
  "array"
20
20
  ],
21
21
  "description": "Entity record or array of records — pre-resolved by the trait via render-ui after a fetch emit",
22
+ "kind": "entity",
23
+ "cardinality": "collection",
22
24
  "items": {
23
25
  "types": [
24
26
  "object"
@@ -269,7 +271,9 @@
269
271
  "object",
270
272
  "array"
271
273
  ],
272
- "description": "Entity record or array of records — pre-resolved by the trait via render-ui after a fetch emit"
274
+ "description": "Entity record or array of records — pre-resolved by the trait via render-ui after a fetch emit",
275
+ "kind": "entity",
276
+ "cardinality": "collection"
273
277
  },
274
278
  "className": {
275
279
  "types": [
@@ -446,7 +450,9 @@
446
450
  "object",
447
451
  "array"
448
452
  ],
449
- "description": "Entity record or array of records — pre-resolved by the trait via render-ui after a fetch emit"
453
+ "description": "Entity record or array of records — pre-resolved by the trait via render-ui after a fetch emit",
454
+ "kind": "entity",
455
+ "cardinality": "collection"
450
456
  },
451
457
  "className": {
452
458
  "types": [
@@ -691,10 +697,11 @@
691
697
  "propsSchema": {
692
698
  "entity": {
693
699
  "types": [
694
- "object",
695
- "array"
700
+ "object"
696
701
  ],
697
- "description": "Entity record or array of records — pre-resolved by the trait via render-ui after a fetch emit"
702
+ "description": "RECORD-cardinality override: renders ONE record (see body collapse below).",
703
+ "kind": "entity",
704
+ "cardinality": "record"
698
705
  },
699
706
  "className": {
700
707
  "types": [
@@ -4053,6 +4060,8 @@
4053
4060
  "array"
4054
4061
  ],
4055
4062
  "description": "Entity record or array of records — pre-resolved by the trait via render-ui after a fetch emit",
4063
+ "kind": "entity",
4064
+ "cardinality": "collection",
4056
4065
  "items": {
4057
4066
  "types": [
4058
4067
  "object"
@@ -9183,6 +9192,8 @@
9183
9192
  "array"
9184
9193
  ],
9185
9194
  "description": "Entity record or array of records — pre-resolved by the trait via render-ui after a fetch emit",
9195
+ "kind": "entity",
9196
+ "cardinality": "collection",
9186
9197
  "items": {
9187
9198
  "types": [
9188
9199
  "object"
@@ -10513,7 +10524,14 @@
10513
10524
  "object",
10514
10525
  "array"
10515
10526
  ],
10516
- "description": "Schema entity data typed against @almadar/core's EntityRow. Items from `entity` are normalised into `items` when `items` is omitted. UI-specific TimelineItem fields (`icon`, callbacks) cannot round-trip through the event bus, so decorative stories that need them pass `items` directly."
10527
+ "description": "Schema entity data typed against @almadar/core's EntityRow. Items from `entity` are normalised into `items` when `items` is omitted. UI-specific TimelineItem fields (`icon`, callbacks) cannot round-trip through the event bus, so decorative stories that need them pass `items` directly.",
10528
+ "kind": "entity",
10529
+ "cardinality": "collection",
10530
+ "items": {
10531
+ "types": [
10532
+ "object"
10533
+ ]
10534
+ }
10517
10535
  },
10518
10536
  "title": {
10519
10537
  "types": [
@@ -10672,6 +10690,8 @@
10672
10690
  "array"
10673
10691
  ],
10674
10692
  "description": "Entity record or array of records — pre-resolved by the trait via render-ui after a fetch emit",
10693
+ "kind": "entity",
10694
+ "cardinality": "collection",
10675
10695
  "items": {
10676
10696
  "types": [
10677
10697
  "object"
@@ -11959,7 +11979,9 @@
11959
11979
  "object",
11960
11980
  "array"
11961
11981
  ],
11962
- "description": "Entity record or array of records — pre-resolved by the trait via render-ui after a fetch emit"
11982
+ "description": "Entity record or array of records — pre-resolved by the trait via render-ui after a fetch emit",
11983
+ "kind": "entity",
11984
+ "cardinality": "collection"
11963
11985
  },
11964
11986
  "className": {
11965
11987
  "types": [
@@ -12384,9 +12406,12 @@
12384
12406
  },
12385
12407
  "events": {
12386
12408
  "types": [
12409
+ "object",
12387
12410
  "array"
12388
12411
  ],
12389
12412
  "description": "Events to display on the grid",
12413
+ "kind": "entity",
12414
+ "cardinality": "collection",
12390
12415
  "items": {
12391
12416
  "types": [
12392
12417
  "object"
@@ -13096,8 +13121,15 @@
13096
13121
  "object",
13097
13122
  "array"
13098
13123
  ],
13099
- "description": "Schema entity data — single record or collection, typed against `@almadar/core`'s `EntityRow` so the narrow type declared on the emitting trait's `Event { data : [X] }` flows through to the prop without widening. The generic `T` lets consumers pass a narrower entity (e.g. `CartItem`) and have the `children` render function receive cards typed to that exact shape.",
13100
- "required": true
13124
+ "description": "Schema entity data — single record or collection, typed against `@almadar/core`'s `EntityRow` so the narrow type declared on the emitting trait's `Event { data : [X] }` flows through to the prop without widening. The generic `T` lets consumers pass a narrower entity (e.g. `CartItem`) and have the `children` render function receive cards typed to that exact shape. Declared as the pattern's data INLET via `EntityCollection<T>` (the inlet half of the circuit, symmetric with the `EventKey` outlet props below): pattern-sync tags it `kind:\"entity\", cardinality:\"collection\"` so consumers bind the domain entity without name-matching the prop. Structurally still `T | readonly T[]` — see the brand's doc.",
13125
+ "required": true,
13126
+ "kind": "entity",
13127
+ "cardinality": "collection",
13128
+ "items": {
13129
+ "types": [
13130
+ "object"
13131
+ ]
13132
+ }
13101
13133
  },
13102
13134
  "fields": {
13103
13135
  "types": [
@@ -13490,7 +13522,14 @@
13490
13522
  "array"
13491
13523
  ],
13492
13524
  "description": "Schema entity data — single record or collection, typed against `@almadar/core`'s `EntityRow` so the narrow type declared on the emitting trait's `Event { data : [X] }` flows through to the prop without widening. The generic `T` lets consumers pass a narrower entity (e.g. `CartItem`) and have the `children` render function receive items of that exact shape.",
13493
- "required": true
13525
+ "required": true,
13526
+ "kind": "entity",
13527
+ "cardinality": "collection",
13528
+ "items": {
13529
+ "types": [
13530
+ "object"
13531
+ ]
13532
+ }
13494
13533
  },
13495
13534
  "fields": {
13496
13535
  "types": [
@@ -15113,10 +15152,13 @@
15113
15152
  "propsSchema": {
15114
15153
  "items": {
15115
15154
  "types": [
15155
+ "object",
15116
15156
  "array"
15117
15157
  ],
15118
15158
  "description": "items prop",
15119
15159
  "required": true,
15160
+ "kind": "entity",
15161
+ "cardinality": "collection",
15120
15162
  "items": {
15121
15163
  "types": [
15122
15164
  "object"
@@ -16759,6 +16801,8 @@
16759
16801
  "array"
16760
16802
  ],
16761
16803
  "description": "Entity record or array of records — pre-resolved by the trait via render-ui after a fetch emit",
16804
+ "kind": "entity",
16805
+ "cardinality": "collection",
16762
16806
  "items": {
16763
16807
  "types": [
16764
16808
  "object"
@@ -16908,6 +16952,8 @@
16908
16952
  "array"
16909
16953
  ],
16910
16954
  "description": "Entity record or array of records — pre-resolved by the trait via render-ui after a fetch emit",
16955
+ "kind": "entity",
16956
+ "cardinality": "collection",
16911
16957
  "items": {
16912
16958
  "types": [
16913
16959
  "object"
@@ -17052,155 +17098,151 @@
17052
17098
  "propsSchema": {
17053
17099
  "entity": {
17054
17100
  "types": [
17055
- "object",
17056
- "array"
17101
+ "object"
17057
17102
  ],
17058
- "description": "Entity record or array of records — pre-resolved by the trait via render-ui after a fetch emit",
17059
- "items": {
17060
- "types": [
17061
- "object"
17062
- ],
17063
- "properties": {
17064
- "id": {
17065
- "types": [
17066
- "string"
17067
- ]
17068
- },
17069
- "tag": {
17070
- "types": [
17071
- "string"
17072
- ]
17073
- },
17074
- "title": {
17075
- "types": [
17076
- "string"
17077
- ]
17078
- },
17079
- "titleAccent": {
17080
- "types": [
17081
- "string"
17082
- ]
17083
- },
17084
- "subtitle": {
17085
- "types": [
17086
- "string"
17087
- ]
17088
- },
17089
- "primaryAction": {
17090
- "types": [
17091
- "object"
17092
- ],
17093
- "properties": {
17094
- "label": {
17095
- "types": [
17096
- "string"
17097
- ]
17098
- },
17099
- "href": {
17100
- "types": [
17101
- "string"
17102
- ]
17103
- },
17104
- "variant": {
17105
- "types": [
17106
- "string"
17107
- ],
17108
- "enumValues": [
17109
- "primary",
17110
- "secondary",
17111
- "ghost"
17112
- ]
17113
- }
17103
+ "description": "entity prop",
17104
+ "kind": "entity",
17105
+ "cardinality": "record",
17106
+ "properties": {
17107
+ "id": {
17108
+ "types": [
17109
+ "string"
17110
+ ]
17111
+ },
17112
+ "tag": {
17113
+ "types": [
17114
+ "string"
17115
+ ]
17116
+ },
17117
+ "title": {
17118
+ "types": [
17119
+ "string"
17120
+ ]
17121
+ },
17122
+ "titleAccent": {
17123
+ "types": [
17124
+ "string"
17125
+ ]
17126
+ },
17127
+ "subtitle": {
17128
+ "types": [
17129
+ "string"
17130
+ ]
17131
+ },
17132
+ "primaryAction": {
17133
+ "types": [
17134
+ "object"
17135
+ ],
17136
+ "properties": {
17137
+ "label": {
17138
+ "types": [
17139
+ "string"
17140
+ ]
17114
17141
  },
17115
- "required": [
17116
- "label",
17117
- "href"
17118
- ]
17119
- },
17120
- "secondaryAction": {
17121
- "types": [
17122
- "object"
17123
- ],
17124
- "properties": {
17125
- "label": {
17126
- "types": [
17127
- "string"
17128
- ]
17129
- },
17130
- "href": {
17131
- "types": [
17132
- "string"
17133
- ]
17134
- },
17135
- "variant": {
17136
- "types": [
17137
- "string"
17138
- ],
17139
- "enumValues": [
17140
- "primary",
17141
- "secondary",
17142
- "ghost"
17143
- ]
17144
- }
17142
+ "href": {
17143
+ "types": [
17144
+ "string"
17145
+ ]
17145
17146
  },
17146
- "required": [
17147
- "label",
17148
- "href"
17149
- ]
17150
- },
17151
- "installCommand": {
17152
- "types": [
17153
- "string"
17154
- ]
17147
+ "variant": {
17148
+ "types": [
17149
+ "string"
17150
+ ],
17151
+ "enumValues": [
17152
+ "primary",
17153
+ "secondary",
17154
+ "ghost"
17155
+ ]
17156
+ }
17155
17157
  },
17156
- "image": {
17157
- "types": [
17158
- "object"
17159
- ],
17160
- "properties": {
17161
- "src": {
17162
- "types": [
17163
- "string"
17164
- ]
17165
- },
17166
- "alt": {
17167
- "types": [
17168
- "string"
17169
- ]
17170
- }
17158
+ "required": [
17159
+ "label",
17160
+ "href"
17161
+ ]
17162
+ },
17163
+ "secondaryAction": {
17164
+ "types": [
17165
+ "object"
17166
+ ],
17167
+ "properties": {
17168
+ "label": {
17169
+ "types": [
17170
+ "string"
17171
+ ]
17171
17172
  },
17172
- "required": [
17173
- "src",
17174
- "alt"
17175
- ]
17173
+ "href": {
17174
+ "types": [
17175
+ "string"
17176
+ ]
17177
+ },
17178
+ "variant": {
17179
+ "types": [
17180
+ "string"
17181
+ ],
17182
+ "enumValues": [
17183
+ "primary",
17184
+ "secondary",
17185
+ "ghost"
17186
+ ]
17187
+ }
17176
17188
  },
17177
- "imagePosition": {
17178
- "types": [
17179
- "string"
17180
- ],
17181
- "enumValues": [
17182
- "below",
17183
- "right",
17184
- "background"
17185
- ]
17189
+ "required": [
17190
+ "label",
17191
+ "href"
17192
+ ]
17193
+ },
17194
+ "installCommand": {
17195
+ "types": [
17196
+ "string"
17197
+ ]
17198
+ },
17199
+ "image": {
17200
+ "types": [
17201
+ "object"
17202
+ ],
17203
+ "properties": {
17204
+ "src": {
17205
+ "types": [
17206
+ "string"
17207
+ ]
17208
+ },
17209
+ "alt": {
17210
+ "types": [
17211
+ "string"
17212
+ ]
17213
+ }
17186
17214
  },
17187
- "background": {
17188
- "types": [
17189
- "string"
17190
- ],
17191
- "enumValues": [
17192
- "dark",
17193
- "gradient",
17194
- "subtle"
17195
- ]
17196
- }
17215
+ "required": [
17216
+ "src",
17217
+ "alt"
17218
+ ]
17197
17219
  },
17198
- "required": [
17199
- "id",
17200
- "title",
17201
- "subtitle"
17202
- ]
17203
- }
17220
+ "imagePosition": {
17221
+ "types": [
17222
+ "string"
17223
+ ],
17224
+ "enumValues": [
17225
+ "below",
17226
+ "right",
17227
+ "background"
17228
+ ]
17229
+ },
17230
+ "background": {
17231
+ "types": [
17232
+ "string"
17233
+ ],
17234
+ "enumValues": [
17235
+ "dark",
17236
+ "gradient",
17237
+ "subtle"
17238
+ ]
17239
+ }
17240
+ },
17241
+ "propertyRequired": [
17242
+ "id",
17243
+ "title",
17244
+ "subtitle"
17245
+ ]
17204
17246
  },
17205
17247
  "className": {
17206
17248
  "types": [
@@ -17294,6 +17336,8 @@
17294
17336
  "array"
17295
17337
  ],
17296
17338
  "description": "Entity record or array of records — pre-resolved by the trait via render-ui after a fetch emit",
17339
+ "kind": "entity",
17340
+ "cardinality": "collection",
17297
17341
  "items": {
17298
17342
  "types": [
17299
17343
  "object"
@@ -17458,6 +17502,8 @@
17458
17502
  "array"
17459
17503
  ],
17460
17504
  "description": "Entity record or array of records — pre-resolved by the trait via render-ui after a fetch emit",
17505
+ "kind": "entity",
17506
+ "cardinality": "collection",
17461
17507
  "items": {
17462
17508
  "types": [
17463
17509
  "object"
@@ -17627,6 +17673,8 @@
17627
17673
  "array"
17628
17674
  ],
17629
17675
  "description": "Entity record or array of records — pre-resolved by the trait via render-ui after a fetch emit",
17676
+ "kind": "entity",
17677
+ "cardinality": "collection",
17630
17678
  "items": {
17631
17679
  "types": [
17632
17680
  "object"
@@ -17749,6 +17797,8 @@
17749
17797
  "array"
17750
17798
  ],
17751
17799
  "description": "Entity record or array of records — pre-resolved by the trait via render-ui after a fetch emit",
17800
+ "kind": "entity",
17801
+ "cardinality": "collection",
17752
17802
  "items": {
17753
17803
  "types": [
17754
17804
  "object"
@@ -17903,6 +17953,8 @@
17903
17953
  "array"
17904
17954
  ],
17905
17955
  "description": "Entity record or array of records — pre-resolved by the trait via render-ui after a fetch emit",
17956
+ "kind": "entity",
17957
+ "cardinality": "collection",
17906
17958
  "items": {
17907
17959
  "types": [
17908
17960
  "object"
@@ -19508,10 +19560,13 @@
19508
19560
  "propsSchema": {
19509
19561
  "nodes": {
19510
19562
  "types": [
19563
+ "object",
19511
19564
  "array"
19512
19565
  ],
19513
19566
  "description": "nodes prop",
19514
19567
  "required": true,
19568
+ "kind": "entity",
19569
+ "cardinality": "collection",
19515
19570
  "items": {
19516
19571
  "types": [
19517
19572
  "object"
@@ -20088,11 +20143,84 @@
20088
20143
  "propsSchema": {
20089
20144
  "items": {
20090
20145
  "types": [
20091
- "array",
20092
- "object"
20146
+ "object",
20147
+ "array"
20093
20148
  ],
20094
20149
  "description": "Items to render. Accepts either a typed array (direct consumers) or the runtime payload shape from a render-ui binding (`@payload.data`). The molecule narrows non-array values to `[]` and validates element shape at render time via the `id` / `x` / `y` guards.",
20095
- "required": true
20150
+ "required": true,
20151
+ "kind": "entity",
20152
+ "cardinality": "collection",
20153
+ "items": {
20154
+ "types": [
20155
+ "object"
20156
+ ],
20157
+ "properties": {
20158
+ "id": {
20159
+ "types": [
20160
+ "string"
20161
+ ]
20162
+ },
20163
+ "label": {
20164
+ "types": [
20165
+ "string"
20166
+ ]
20167
+ },
20168
+ "x": {
20169
+ "types": [
20170
+ "number"
20171
+ ]
20172
+ },
20173
+ "y": {
20174
+ "types": [
20175
+ "number"
20176
+ ]
20177
+ },
20178
+ "shape": {
20179
+ "types": [
20180
+ "string"
20181
+ ],
20182
+ "enumValues": [
20183
+ "round",
20184
+ "rectangle",
20185
+ "square"
20186
+ ]
20187
+ },
20188
+ "capacity": {
20189
+ "types": [
20190
+ "number"
20191
+ ]
20192
+ },
20193
+ "status": {
20194
+ "types": [
20195
+ "string"
20196
+ ],
20197
+ "enumValues": [
20198
+ "empty",
20199
+ "seated",
20200
+ "ordered",
20201
+ "awaiting-bill",
20202
+ "cleaning"
20203
+ ]
20204
+ },
20205
+ "partySize": {
20206
+ "types": [
20207
+ "number"
20208
+ ]
20209
+ },
20210
+ "serverName": {
20211
+ "types": [
20212
+ "string"
20213
+ ]
20214
+ }
20215
+ },
20216
+ "required": [
20217
+ "id",
20218
+ "label",
20219
+ "x",
20220
+ "y",
20221
+ "capacity"
20222
+ ]
20223
+ }
20096
20224
  },
20097
20225
  "width": {
20098
20226
  "types": [
@@ -26153,10 +26281,11 @@
26153
26281
  "propsSchema": {
26154
26282
  "entity": {
26155
26283
  "types": [
26156
- "object",
26157
- "array"
26284
+ "object"
26158
26285
  ],
26159
- "description": "Entity record or array of records — pre-resolved by the trait via render-ui after a fetch emit"
26286
+ "description": "Renders ONE record (the book), not a collection",
26287
+ "kind": "entity",
26288
+ "cardinality": "record"
26160
26289
  },
26161
26290
  "className": {
26162
26291
  "types": [
@@ -31466,7 +31595,9 @@
31466
31595
  "object",
31467
31596
  "array"
31468
31597
  ],
31469
- "description": "Entity record or array of records — pre-resolved by the trait via render-ui after a fetch emit"
31598
+ "description": "Entity record or array of records — pre-resolved by the trait via render-ui after a fetch emit",
31599
+ "kind": "entity",
31600
+ "cardinality": "collection"
31470
31601
  },
31471
31602
  "className": {
31472
31603
  "types": [
@@ -32312,7 +32443,14 @@
32312
32443
  "array"
32313
32444
  ],
32314
32445
  "description": "Schema entity data — single record or collection.",
32315
- "required": true
32446
+ "required": true,
32447
+ "kind": "entity",
32448
+ "cardinality": "collection",
32449
+ "items": {
32450
+ "types": [
32451
+ "object"
32452
+ ]
32453
+ }
32316
32454
  },
32317
32455
  "columns": {
32318
32456
  "types": [