@almadar/core 10.28.0 → 10.30.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,7 +1,7 @@
1
1
  // src/patterns/patterns-registry.json
2
2
  var patterns_registry_default = {
3
3
  version: "1.0.0",
4
- exportedAt: "2026-07-09T14:00:32.936Z",
4
+ exportedAt: "2026-07-16T19:33:37.203Z",
5
5
  patterns: {
6
6
  "entity-table": {
7
7
  type: "entity-table",
@@ -706,7 +706,7 @@ var patterns_registry_default = {
706
706
  types: [
707
707
  "function"
708
708
  ],
709
- description: "renderItem prop",
709
+ description: "Render function for each item. In .lolo: renderItem: (fn item <Component \u2026={@item.field}/>), binding per-item fields via @item.field.",
710
710
  kind: "callback",
711
711
  callbackArgs: [
712
712
  {
@@ -876,15 +876,6 @@ var patterns_registry_default = {
876
876
  ],
877
877
  typicalSize: "medium",
878
878
  propsSchema: {
879
- entity: {
880
- types: [
881
- "object",
882
- "array"
883
- ],
884
- description: "Entity record or array of records \u2014 pre-resolved by the trait via render-ui after a fetch emit",
885
- kind: "entity",
886
- cardinality: "collection"
887
- },
888
879
  className: {
889
880
  types: [
890
881
  "string"
@@ -988,6 +979,15 @@ var patterns_registry_default = {
988
979
  ]
989
980
  }
990
981
  },
982
+ entity: {
983
+ types: [
984
+ "object",
985
+ "array"
986
+ ],
987
+ description: "Entity data (single record or collection).",
988
+ kind: "entity",
989
+ cardinality: "collection"
990
+ },
991
991
  minCardWidth: {
992
992
  types: [
993
993
  "number"
@@ -4223,7 +4223,7 @@ var patterns_registry_default = {
4223
4223
  types: [
4224
4224
  "string"
4225
4225
  ],
4226
- description: "Declarative step click event \u2014 emits UI:{stepClickEvent} with { stepIndex }",
4226
+ description: "Declarative step click event \u2014 emits UI:{stepClickEvent} with { stepIndex }. Setting it requires declaring that event (with a `{ stepIndex }` payload) and a transition handling it in the same trait; omit this prop for non-clickable progress indicators.",
4227
4227
  kind: "event-ref",
4228
4228
  emitPayloadSchema: [
4229
4229
  {
@@ -7672,7 +7672,7 @@ var patterns_registry_default = {
7672
7672
  types: [
7673
7673
  "string"
7674
7674
  ],
7675
- description: "Input type - supports 'select' and 'textarea' in addition to standard types",
7675
+ description: "Input type \u2014 selects the field's data mode. Use 'password' for masked credentials / secret / passphrase entry (there is no separate password pattern); 'email', 'tel', 'url', 'number', 'search', 'date', and 'time' for their respective values; and 'select' / 'textarea' for choice and multi-line entry in addition to the standard single-line types.",
7676
7676
  enumValues: [
7677
7677
  "text",
7678
7678
  "email",
@@ -8950,7 +8950,7 @@ var patterns_registry_default = {
8950
8950
  types: [
8951
8951
  "function"
8952
8952
  ],
8953
- description: "Render function for each item",
8953
+ description: "Render function for each item. In .lolo: renderItem: (fn item <Component \u2026={@item.field}/>), binding per-item fields via @item.field.",
8954
8954
  required: true,
8955
8955
  kind: "callback",
8956
8956
  callbackArgs: [
@@ -10350,6 +10350,144 @@ var patterns_registry_default = {
10350
10350
  ],
10351
10351
  typicalSize: "medium",
10352
10352
  propsSchema: {
10353
+ className: {
10354
+ types: [
10355
+ "string"
10356
+ ],
10357
+ description: "Additional CSS classes"
10358
+ },
10359
+ placeholder: {
10360
+ types: [
10361
+ "string"
10362
+ ],
10363
+ description: "Placeholder text"
10364
+ },
10365
+ value: {
10366
+ types: [
10367
+ "string",
10368
+ "number"
10369
+ ],
10370
+ description: "Current value"
10371
+ },
10372
+ disabled: {
10373
+ types: [
10374
+ "boolean"
10375
+ ],
10376
+ description: "Whether input is disabled"
10377
+ },
10378
+ action: {
10379
+ types: [
10380
+ "string"
10381
+ ],
10382
+ description: "Declarative event name for trait dispatch",
10383
+ kind: "event"
10384
+ },
10385
+ inputType: {
10386
+ types: [
10387
+ "string"
10388
+ ],
10389
+ description: "Input type \u2014 selects the field's data mode. Use 'password' for masked credentials / secret / passphrase entry (there is no separate password pattern); 'email', 'tel', 'url', 'number', 'search', 'date', and 'time' for their respective values; and 'select' / 'textarea' for choice and multi-line entry in addition to the standard single-line types.",
10390
+ enumValues: [
10391
+ "text",
10392
+ "email",
10393
+ "password",
10394
+ "number",
10395
+ "tel",
10396
+ "url",
10397
+ "search",
10398
+ "date",
10399
+ "datetime-local",
10400
+ "time",
10401
+ "checkbox",
10402
+ "select",
10403
+ "textarea"
10404
+ ]
10405
+ },
10406
+ label: {
10407
+ types: [
10408
+ "string"
10409
+ ],
10410
+ description: "label prop"
10411
+ },
10412
+ helperText: {
10413
+ types: [
10414
+ "string"
10415
+ ],
10416
+ description: "helperText prop"
10417
+ },
10418
+ error: {
10419
+ types: [
10420
+ "string"
10421
+ ],
10422
+ description: "error prop"
10423
+ },
10424
+ leftIcon: {
10425
+ types: [
10426
+ "icon",
10427
+ "string"
10428
+ ],
10429
+ description: "leftIcon prop"
10430
+ },
10431
+ rightIcon: {
10432
+ types: [
10433
+ "icon",
10434
+ "string"
10435
+ ],
10436
+ description: "rightIcon prop"
10437
+ },
10438
+ clearable: {
10439
+ types: [
10440
+ "boolean"
10441
+ ],
10442
+ description: "Show clear button when input has value"
10443
+ },
10444
+ onClear: {
10445
+ types: [
10446
+ "function",
10447
+ "string"
10448
+ ],
10449
+ description: "Callback or declarative event key when clear button is clicked"
10450
+ },
10451
+ options: {
10452
+ types: [
10453
+ "array"
10454
+ ],
10455
+ description: "Options for select type",
10456
+ items: {
10457
+ types: [
10458
+ "object"
10459
+ ],
10460
+ properties: {
10461
+ value: {
10462
+ types: [
10463
+ "string"
10464
+ ]
10465
+ },
10466
+ label: {
10467
+ types: [
10468
+ "string"
10469
+ ]
10470
+ }
10471
+ },
10472
+ required: [
10473
+ "value",
10474
+ "label"
10475
+ ]
10476
+ }
10477
+ },
10478
+ rows: {
10479
+ types: [
10480
+ "number"
10481
+ ],
10482
+ description: "Rows for textarea type"
10483
+ },
10484
+ onChange: {
10485
+ types: [
10486
+ "function",
10487
+ "string"
10488
+ ],
10489
+ description: "onChange handler or declarative event key for trait dispatch"
10490
+ },
10353
10491
  leftAddon: {
10354
10492
  types: [
10355
10493
  "node",
@@ -10363,12 +10501,6 @@ var patterns_registry_default = {
10363
10501
  "icon"
10364
10502
  ],
10365
10503
  description: "Right addon (icon, button, or text)"
10366
- },
10367
- className: {
10368
- types: [
10369
- "string"
10370
- ],
10371
- description: "Additional CSS classes"
10372
10504
  }
10373
10505
  }
10374
10506
  },
@@ -14357,6 +14489,11 @@ var patterns_registry_default = {
14357
14489
  "number"
14358
14490
  ]
14359
14491
  },
14492
+ badge: {
14493
+ types: [
14494
+ "number"
14495
+ ]
14496
+ },
14360
14497
  x: {
14361
14498
  types: [
14362
14499
  "number"
@@ -14377,7 +14514,7 @@ var patterns_registry_default = {
14377
14514
  types: [
14378
14515
  "array"
14379
14516
  ],
14380
- description: "Graph edges",
14517
+ description: "Graph edges (the only rendered links)",
14381
14518
  items: {
14382
14519
  types: [
14383
14520
  "object"
@@ -14415,6 +14552,39 @@ var patterns_registry_default = {
14415
14552
  ]
14416
14553
  }
14417
14554
  },
14555
+ similarity: {
14556
+ types: [
14557
+ "array"
14558
+ ],
14559
+ description: "All-pairs similarity (cosine 0\u20131) used ONLY for layout, never drawn. It is the secondary macro-layout: non-connected pairs get a weak spring (higher cosine \u21D2 closer) so clusters arrange relative to each other; drawn `edges` stay the primary tight structure. When omitted, edges alone drive the layout.",
14560
+ items: {
14561
+ types: [
14562
+ "object"
14563
+ ],
14564
+ properties: {
14565
+ source: {
14566
+ types: [
14567
+ "string"
14568
+ ]
14569
+ },
14570
+ target: {
14571
+ types: [
14572
+ "string"
14573
+ ]
14574
+ },
14575
+ weight: {
14576
+ types: [
14577
+ "number"
14578
+ ]
14579
+ }
14580
+ },
14581
+ required: [
14582
+ "source",
14583
+ "target",
14584
+ "weight"
14585
+ ]
14586
+ }
14587
+ },
14418
14588
  height: {
14419
14589
  types: [
14420
14590
  "number"
@@ -14524,6 +14694,11 @@ var patterns_registry_default = {
14524
14694
  "number"
14525
14695
  ]
14526
14696
  },
14697
+ badge: {
14698
+ types: [
14699
+ "number"
14700
+ ]
14701
+ },
14527
14702
  x: {
14528
14703
  types: [
14529
14704
  "number"
@@ -14582,6 +14757,74 @@ var patterns_registry_default = {
14582
14757
  "number"
14583
14758
  ]
14584
14759
  },
14760
+ badge: {
14761
+ types: [
14762
+ "number"
14763
+ ]
14764
+ },
14765
+ x: {
14766
+ types: [
14767
+ "number"
14768
+ ]
14769
+ },
14770
+ y: {
14771
+ types: [
14772
+ "number"
14773
+ ]
14774
+ }
14775
+ },
14776
+ required: [
14777
+ "id"
14778
+ ]
14779
+ }
14780
+ }
14781
+ ]
14782
+ },
14783
+ onBadgeClick: {
14784
+ types: [
14785
+ "function"
14786
+ ],
14787
+ description: "On node badge click (e.g. to expand a merged cluster).",
14788
+ kind: "callback",
14789
+ callbackArgs: [
14790
+ {
14791
+ name: "node",
14792
+ type: "object",
14793
+ schema: {
14794
+ types: [
14795
+ "object"
14796
+ ],
14797
+ properties: {
14798
+ id: {
14799
+ types: [
14800
+ "string"
14801
+ ]
14802
+ },
14803
+ label: {
14804
+ types: [
14805
+ "string"
14806
+ ]
14807
+ },
14808
+ group: {
14809
+ types: [
14810
+ "string"
14811
+ ]
14812
+ },
14813
+ color: {
14814
+ types: [
14815
+ "string"
14816
+ ]
14817
+ },
14818
+ size: {
14819
+ types: [
14820
+ "number"
14821
+ ]
14822
+ },
14823
+ badge: {
14824
+ types: [
14825
+ "number"
14826
+ ]
14827
+ },
14585
14828
  x: {
14586
14829
  types: [
14587
14830
  "number"
@@ -16597,7 +16840,7 @@ var patterns_registry_default = {
16597
16840
  types: [
16598
16841
  "array"
16599
16842
  ],
16600
- description: "Field definitions for rendering each card. The pattern contract in `@almadar/patterns` documents `columns` as the wire-format alias the compiler emits \u2014 both names resolve to the same shape here. Pass either.",
16843
+ description: "Field definitions for rendering each card. The pattern contract in `@almadar/core/patterns` documents `columns` as the wire-format alias the compiler emits \u2014 both names resolve to the same shape here. Pass either.",
16601
16844
  items: {
16602
16845
  types: [
16603
16846
  "object"
@@ -16929,7 +17172,7 @@ var patterns_registry_default = {
16929
17172
  types: [
16930
17173
  "function"
16931
17174
  ],
16932
- 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.',
17175
+ 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.',
16933
17176
  kind: "callback",
16934
17177
  callbackArgs: [
16935
17178
  {
@@ -17042,7 +17285,7 @@ var patterns_registry_default = {
17042
17285
  types: [
17043
17286
  "array"
17044
17287
  ],
17045
- description: "Field definitions for rendering each row. The pattern contract in `@almadar/patterns` documents `columns` as the wire-format alias the compiler emits \u2014 both names resolve to the same shape here. Pass either.",
17288
+ description: "Field definitions for rendering each row. The pattern contract in `@almadar/core/patterns` documents `columns` as the wire-format alias the compiler emits \u2014 both names resolve to the same shape here. Pass either.",
17046
17289
  items: {
17047
17290
  types: [
17048
17291
  "object"
@@ -17446,7 +17689,7 @@ var patterns_registry_default = {
17446
17689
  types: [
17447
17690
  "function"
17448
17691
  ],
17449
- 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.',
17692
+ 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.',
17450
17693
  kind: "callback",
17451
17694
  callbackArgs: [
17452
17695
  {
@@ -18476,6 +18719,12 @@ var patterns_registry_default = {
18476
18719
  ],
18477
18720
  description: "Text to display after the number"
18478
18721
  },
18722
+ format: {
18723
+ types: [
18724
+ "string"
18725
+ ],
18726
+ description: `Display format: "number" (locale grouping), "currency" ($x.xx), "percent" (rounded %). Unset preserves the value's own decimals.`
18727
+ },
18479
18728
  className: {
18480
18729
  types: [
18481
18730
  "string"
@@ -18662,7 +18911,7 @@ var patterns_registry_default = {
18662
18911
  types: [
18663
18912
  "function"
18664
18913
  ],
18665
- description: "Render function for each slide",
18914
+ description: "Render function for each slide. In .lolo: renderItem: (fn item <Component \u2026={@item.field}/>), binding per-item fields via @item.field.",
18666
18915
  kind: "callback",
18667
18916
  callbackArgs: [
18668
18917
  {
@@ -18835,7 +19084,7 @@ var patterns_registry_default = {
18835
19084
  types: [
18836
19085
  "function"
18837
19086
  ],
18838
- description: "renderItem prop",
19087
+ description: "Render function for each item. In .lolo: renderItem: (fn item <Component \u2026={@item.field}/>), binding per-item fields via @item.field.",
18839
19088
  required: true,
18840
19089
  kind: "callback",
18841
19090
  callbackArgs: [
@@ -32857,7 +33106,7 @@ var patterns_registry_default = {
32857
33106
  types: [
32858
33107
  "function"
32859
33108
  ],
32860
- description: 'Per-row render function (schema alias). In .orb: ["fn","item",{...}]. The compiler converts this to the children render prop.',
33109
+ 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.',
32861
33110
  kind: "callback",
32862
33111
  callbackArgs: [
32863
33112
  {
@@ -34893,7 +35142,159 @@ var patterns_registry_default = {
34893
35142
  "v stack"
34894
35143
  ],
34895
35144
  typicalSize: "small",
34896
- propsSchema: {}
35145
+ propsSchema: {
35146
+ gap: {
35147
+ types: [
35148
+ "string"
35149
+ ],
35150
+ description: "Gap between children",
35151
+ enumValues: [
35152
+ "none",
35153
+ "xs",
35154
+ "sm",
35155
+ "md",
35156
+ "lg",
35157
+ "xl",
35158
+ "2xl"
35159
+ ],
35160
+ default: "md"
35161
+ },
35162
+ align: {
35163
+ types: [
35164
+ "string"
35165
+ ],
35166
+ description: "Align items on the cross axis",
35167
+ enumValues: [
35168
+ "start",
35169
+ "center",
35170
+ "end",
35171
+ "stretch",
35172
+ "baseline"
35173
+ ],
35174
+ default: "stretch"
35175
+ },
35176
+ justify: {
35177
+ types: [
35178
+ "string"
35179
+ ],
35180
+ description: "Justify items on the main axis",
35181
+ enumValues: [
35182
+ "start",
35183
+ "center",
35184
+ "end",
35185
+ "between",
35186
+ "around",
35187
+ "evenly"
35188
+ ],
35189
+ default: "start"
35190
+ },
35191
+ wrap: {
35192
+ types: [
35193
+ "boolean"
35194
+ ],
35195
+ description: "Allow items to wrap",
35196
+ default: false
35197
+ },
35198
+ reverse: {
35199
+ types: [
35200
+ "boolean"
35201
+ ],
35202
+ description: "Reverse the order of children",
35203
+ default: false
35204
+ },
35205
+ flex: {
35206
+ types: [
35207
+ "boolean"
35208
+ ],
35209
+ description: "Fill available space (flex: 1)",
35210
+ default: false
35211
+ },
35212
+ className: {
35213
+ types: [
35214
+ "string"
35215
+ ],
35216
+ description: "Custom class name"
35217
+ },
35218
+ style: {
35219
+ types: [
35220
+ "object"
35221
+ ],
35222
+ description: "Inline styles"
35223
+ },
35224
+ children: {
35225
+ types: [
35226
+ "node"
35227
+ ],
35228
+ description: "Children elements"
35229
+ },
35230
+ as: {
35231
+ types: [
35232
+ "component"
35233
+ ],
35234
+ description: "HTML element to render as"
35235
+ },
35236
+ onClick: {
35237
+ types: [
35238
+ "function"
35239
+ ],
35240
+ description: "Click handler",
35241
+ kind: "callback",
35242
+ callbackArgs: [
35243
+ {
35244
+ name: "e",
35245
+ type: "object"
35246
+ }
35247
+ ],
35248
+ nonEmittable: true
35249
+ },
35250
+ onKeyDown: {
35251
+ types: [
35252
+ "function"
35253
+ ],
35254
+ description: "Keyboard handler",
35255
+ kind: "callback",
35256
+ callbackArgs: [
35257
+ {
35258
+ name: "e",
35259
+ type: "object"
35260
+ }
35261
+ ],
35262
+ nonEmittable: true
35263
+ },
35264
+ role: {
35265
+ types: [
35266
+ "string"
35267
+ ],
35268
+ description: "Role for accessibility"
35269
+ },
35270
+ tabIndex: {
35271
+ types: [
35272
+ "number"
35273
+ ],
35274
+ description: "Tab index for focus management"
35275
+ },
35276
+ action: {
35277
+ types: [
35278
+ "string"
35279
+ ],
35280
+ description: "Declarative event name \u2014 emits UI:{action} via eventBus on click",
35281
+ kind: "event"
35282
+ },
35283
+ actionPayload: {
35284
+ types: [
35285
+ "object"
35286
+ ],
35287
+ description: "Payload to include with the action event",
35288
+ freeform: true
35289
+ },
35290
+ responsive: {
35291
+ types: [
35292
+ "boolean"
35293
+ ],
35294
+ description: "When true, horizontal stacks flip to vertical below the md breakpoint (768px)",
35295
+ default: false
35296
+ }
35297
+ }
34897
35298
  },
34898
35299
  hstack: {
34899
35300
  type: "hstack",
@@ -34906,7 +35307,159 @@ var patterns_registry_default = {
34906
35307
  "h stack"
34907
35308
  ],
34908
35309
  typicalSize: "small",
34909
- propsSchema: {}
35310
+ propsSchema: {
35311
+ gap: {
35312
+ types: [
35313
+ "string"
35314
+ ],
35315
+ description: "Gap between children",
35316
+ enumValues: [
35317
+ "none",
35318
+ "xs",
35319
+ "sm",
35320
+ "md",
35321
+ "lg",
35322
+ "xl",
35323
+ "2xl"
35324
+ ],
35325
+ default: "md"
35326
+ },
35327
+ align: {
35328
+ types: [
35329
+ "string"
35330
+ ],
35331
+ description: "Align items on the cross axis",
35332
+ enumValues: [
35333
+ "start",
35334
+ "center",
35335
+ "end",
35336
+ "stretch",
35337
+ "baseline"
35338
+ ],
35339
+ default: "stretch"
35340
+ },
35341
+ justify: {
35342
+ types: [
35343
+ "string"
35344
+ ],
35345
+ description: "Justify items on the main axis",
35346
+ enumValues: [
35347
+ "start",
35348
+ "center",
35349
+ "end",
35350
+ "between",
35351
+ "around",
35352
+ "evenly"
35353
+ ],
35354
+ default: "start"
35355
+ },
35356
+ wrap: {
35357
+ types: [
35358
+ "boolean"
35359
+ ],
35360
+ description: "Allow items to wrap",
35361
+ default: false
35362
+ },
35363
+ reverse: {
35364
+ types: [
35365
+ "boolean"
35366
+ ],
35367
+ description: "Reverse the order of children",
35368
+ default: false
35369
+ },
35370
+ flex: {
35371
+ types: [
35372
+ "boolean"
35373
+ ],
35374
+ description: "Fill available space (flex: 1)",
35375
+ default: false
35376
+ },
35377
+ className: {
35378
+ types: [
35379
+ "string"
35380
+ ],
35381
+ description: "Custom class name"
35382
+ },
35383
+ style: {
35384
+ types: [
35385
+ "object"
35386
+ ],
35387
+ description: "Inline styles"
35388
+ },
35389
+ children: {
35390
+ types: [
35391
+ "node"
35392
+ ],
35393
+ description: "Children elements"
35394
+ },
35395
+ as: {
35396
+ types: [
35397
+ "component"
35398
+ ],
35399
+ description: "HTML element to render as"
35400
+ },
35401
+ onClick: {
35402
+ types: [
35403
+ "function"
35404
+ ],
35405
+ description: "Click handler",
35406
+ kind: "callback",
35407
+ callbackArgs: [
35408
+ {
35409
+ name: "e",
35410
+ type: "object"
35411
+ }
35412
+ ],
35413
+ nonEmittable: true
35414
+ },
35415
+ onKeyDown: {
35416
+ types: [
35417
+ "function"
35418
+ ],
35419
+ description: "Keyboard handler",
35420
+ kind: "callback",
35421
+ callbackArgs: [
35422
+ {
35423
+ name: "e",
35424
+ type: "object"
35425
+ }
35426
+ ],
35427
+ nonEmittable: true
35428
+ },
35429
+ role: {
35430
+ types: [
35431
+ "string"
35432
+ ],
35433
+ description: "Role for accessibility"
35434
+ },
35435
+ tabIndex: {
35436
+ types: [
35437
+ "number"
35438
+ ],
35439
+ description: "Tab index for focus management"
35440
+ },
35441
+ action: {
35442
+ types: [
35443
+ "string"
35444
+ ],
35445
+ description: "Declarative event name \u2014 emits UI:{action} via eventBus on click",
35446
+ kind: "event"
35447
+ },
35448
+ actionPayload: {
35449
+ types: [
35450
+ "object"
35451
+ ],
35452
+ description: "Payload to include with the action event",
35453
+ freeform: true
35454
+ },
35455
+ responsive: {
35456
+ types: [
35457
+ "boolean"
35458
+ ],
35459
+ description: "When true, horizontal stacks flip to vertical below the md breakpoint (768px)",
35460
+ default: false
35461
+ }
35462
+ }
34910
35463
  },
34911
35464
  "form-layout": {
34912
35465
  type: "form-layout",
@@ -38159,31 +38712,31 @@ var patterns_registry_default = {
38159
38712
  types: [
38160
38713
  "number"
38161
38714
  ],
38162
- description: "Rect width in px."
38715
+ description: "Rect width in world units (fractions of `projector.tileWidth`)."
38163
38716
  },
38164
38717
  height: {
38165
38718
  types: [
38166
38719
  "number"
38167
38720
  ],
38168
- description: "Rect height in px."
38721
+ description: "Rect height in world units (fractions of `projector.tileWidth`)."
38169
38722
  },
38170
38723
  radiusX: {
38171
38724
  types: [
38172
38725
  "number"
38173
38726
  ],
38174
- description: "Ellipse horizontal radius in px."
38727
+ description: "Ellipse horizontal radius in world units (fractions of `projector.tileWidth`)."
38175
38728
  },
38176
38729
  radiusY: {
38177
38730
  types: [
38178
38731
  "number"
38179
38732
  ],
38180
- description: "Ellipse vertical radius in px; omitted \u2192 `radiusX` (a circle)."
38733
+ description: "Ellipse vertical radius in world units; omitted \u2192 `radiusX` (a circle)."
38181
38734
  },
38182
38735
  offsetX: {
38183
38736
  types: [
38184
38737
  "number"
38185
38738
  ],
38186
- description: "Fine px nudge from the anchor point (e.g. a disc drawn at `groundY - 8*scale`)."
38739
+ description: "Fine nudge from the anchor point in world units."
38187
38740
  },
38188
38741
  offsetY: {
38189
38742
  types: [
@@ -38195,7 +38748,7 @@ var patterns_registry_default = {
38195
38748
  types: [
38196
38749
  "array"
38197
38750
  ],
38198
- description: "Poly vertices as px offsets relative to the cell's projected top-left.",
38751
+ description: "Poly vertices as world-unit offsets relative to the cell's projected top-left.",
38199
38752
  items: {
38200
38753
  types: [
38201
38754
  "object"
@@ -38385,13 +38938,13 @@ var patterns_registry_default = {
38385
38938
  types: [
38386
38939
  "number"
38387
38940
  ],
38388
- description: "Draw width in px (2D) / world units (3D); omitted \u2192 resolved source width."
38941
+ description: "Draw width in world units (fractions of `projector.tileWidth`); omitted \u2192 resolved source width in px."
38389
38942
  },
38390
38943
  height: {
38391
38944
  types: [
38392
38945
  "number"
38393
38946
  ],
38394
- description: "Draw height in px (2D) / world units (3D); omitted \u2192 resolved source height."
38947
+ description: "Draw height in world units (fractions of `projector.tileWidth`); omitted \u2192 resolved source height in px."
38395
38948
  },
38396
38949
  frame: {
38397
38950
  types: [
@@ -38399,6 +38952,12 @@ var patterns_registry_default = {
38399
38952
  ],
38400
38953
  description: "Explicit atlas sub-rect override (px); omitted \u2192 resolved from `asset.atlas`/`asset.sprite`."
38401
38954
  },
38955
+ animation: {
38956
+ types: [
38957
+ "string"
38958
+ ],
38959
+ description: "Named GLB animation clip to play (3D backend only; the 2D painter animates via `frame`). Matched case-insensitively against the model's clips."
38960
+ },
38402
38961
  flipX: {
38403
38962
  types: [
38404
38963
  "boolean"
@@ -38876,6 +39435,11 @@ var patterns_registry_default = {
38876
39435
  "object"
38877
39436
  ]
38878
39437
  },
39438
+ animation: {
39439
+ types: [
39440
+ "string"
39441
+ ]
39442
+ },
38879
39443
  flipX: {
38880
39444
  types: [
38881
39445
  "boolean"
@@ -40002,7 +40566,7 @@ var integrators_registry_default = {
40002
40566
  // src/patterns/component-mapping.json
40003
40567
  var component_mapping_default = {
40004
40568
  version: "1.0.0",
40005
- exportedAt: "2026-07-09T14:00:32.936Z",
40569
+ exportedAt: "2026-07-16T19:33:37.203Z",
40006
40570
  mappings: {
40007
40571
  "page-header": {
40008
40572
  component: "PageHeader",
@@ -41357,7 +41921,7 @@ var component_mapping_default = {
41357
41921
  // src/patterns/event-contracts.json
41358
41922
  var event_contracts_default = {
41359
41923
  version: "1.0.0",
41360
- exportedAt: "2026-07-09T14:00:32.936Z",
41924
+ exportedAt: "2026-07-16T19:33:37.203Z",
41361
41925
  contracts: {
41362
41926
  form: {
41363
41927
  emits: [
@@ -42844,10 +43408,13 @@ var ORB_ALLOWED_ENTITY_PATTERNS = /* @__PURE__ */ new Set([
42844
43408
  "data-grid",
42845
43409
  "search-input",
42846
43410
  "form-section",
42847
- "meter"
43411
+ "meter",
43412
+ "table-view",
43413
+ "filter-group",
43414
+ "timeline",
43415
+ "media-gallery"
42848
43416
  ]);
42849
43417
  var ORB_EXCLUDED_CATEGORIES = /* @__PURE__ */ new Set([
42850
- "game",
42851
43418
  "debug",
42852
43419
  "template"
42853
43420
  ]);
@@ -42928,6 +43495,40 @@ function getOrbAllowedPatternsFiltered(patternNames) {
42928
43495
  return lines.join("\n");
42929
43496
  }
42930
43497
 
43498
+ // src/types/json.ts
43499
+ function isJsonObject(value) {
43500
+ return value !== null && typeof value === "object" && !Array.isArray(value);
43501
+ }
43502
+ function isJsonArray(value) {
43503
+ return Array.isArray(value);
43504
+ }
43505
+
43506
+ // src/patterns/helpers/render-ui-pattern-types.ts
43507
+ function collectPatternTypeTokens(node, out) {
43508
+ if (!isJsonObject(node)) return;
43509
+ const type = node["type"];
43510
+ if (typeof type === "string" && !type.startsWith("@")) out.add(type);
43511
+ const children = node["children"];
43512
+ if (isJsonArray(children)) {
43513
+ for (const child of children) collectPatternTypeTokens(child, out);
43514
+ }
43515
+ }
43516
+ function collectRenderUiPatternTypes(ir, out) {
43517
+ if (isJsonArray(ir)) {
43518
+ if (ir.length >= 3 && ir[0] === "render-ui" && typeof ir[1] === "string") {
43519
+ collectPatternTypeTokens(ir[2], out);
43520
+ }
43521
+ for (const item of ir) collectRenderUiPatternTypes(item, out);
43522
+ } else if (isJsonObject(ir)) {
43523
+ for (const value of Object.values(ir)) collectRenderUiPatternTypes(value, out);
43524
+ }
43525
+ }
43526
+ function renderUiPatternTypesOf(ir) {
43527
+ const out = /* @__PURE__ */ new Set();
43528
+ collectRenderUiPatternTypes(ir, out);
43529
+ return out;
43530
+ }
43531
+
42931
43532
  // src/patterns/helpers/pattern-recommender.ts
42932
43533
  var DOMAIN_KEYWORDS = {
42933
43534
  business: ["admin panels", "data-dense views", "list pages", "data entry", "comparisons"],
@@ -43181,6 +43782,6 @@ function propHostsDrawables(schema) {
43181
43782
  return false;
43182
43783
  }
43183
43784
 
43184
- export { COMPONENT_MAPPING, EVENT_CONTRACTS, INTEGRATORS_REGISTRY, PATTERN_REGISTRY, PATTERN_TYPES, buildRecommendationContext, component_mapping_default as componentMapping, event_contracts_default as eventContracts, findCompatiblePatterns, formatRecommendationsForPrompt, generatePatternDescription, getAllPatternTypes, getComponentForPattern, getEmittedEvents, getEntityCardinality, getOrbAllowedPatterns, getOrbAllowedPatternsCompact, getOrbAllowedPatternsFiltered, getOrbAllowedPatternsSlim, getPatternActionsRef, getPatternDefinition, getPatternMetadata, getPatternPropsCompact, getPatternsGroupedByCategory, integrators_registry_default as integratorsRegistry, isDrawHostPattern, isDrawablePattern, isEntityAwarePattern, isValidPatternType, patterns_registry_default as patternsRegistry, recommendPatterns, registry };
43785
+ export { COMPONENT_MAPPING, EVENT_CONTRACTS, INTEGRATORS_REGISTRY, PATTERN_REGISTRY, PATTERN_TYPES, buildRecommendationContext, collectRenderUiPatternTypes, component_mapping_default as componentMapping, event_contracts_default as eventContracts, findCompatiblePatterns, formatRecommendationsForPrompt, generatePatternDescription, getAllPatternTypes, getComponentForPattern, getEmittedEvents, getEntityCardinality, getOrbAllowedPatterns, getOrbAllowedPatternsCompact, getOrbAllowedPatternsFiltered, getOrbAllowedPatternsSlim, getPatternActionsRef, getPatternDefinition, getPatternMetadata, getPatternPropsCompact, getPatternsGroupedByCategory, integrators_registry_default as integratorsRegistry, isDrawHostPattern, isDrawablePattern, isEntityAwarePattern, isValidPatternType, patterns_registry_default as patternsRegistry, recommendPatterns, registry, renderUiPatternTypesOf };
43185
43786
  //# sourceMappingURL=index.js.map
43186
43787
  //# sourceMappingURL=index.js.map