@almadar/patterns 2.43.1 → 2.45.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.
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // src/patterns-registry.json
2
2
  var patterns_registry_default = {
3
3
  version: "1.0.0",
4
- exportedAt: "2026-06-16T13:55:25.201Z",
4
+ exportedAt: "2026-06-17T02:07:52.301Z",
5
5
  patterns: {
6
6
  "entity-table": {
7
7
  type: "entity-table",
@@ -276,7 +276,8 @@ var patterns_registry_default = {
276
276
  },
277
277
  icon: {
278
278
  types: [
279
- "icon"
279
+ "icon",
280
+ "string"
280
281
  ]
281
282
  },
282
283
  variant: {
@@ -379,7 +380,8 @@ var patterns_registry_default = {
379
380
  },
380
381
  icon: {
381
382
  types: [
382
- "icon"
383
+ "icon",
384
+ "string"
383
385
  ]
384
386
  },
385
387
  onClick: {
@@ -430,7 +432,8 @@ var patterns_registry_default = {
430
432
  },
431
433
  icon: {
432
434
  types: [
433
- "icon"
435
+ "icon",
436
+ "string"
434
437
  ]
435
438
  },
436
439
  onClick: {
@@ -495,15 +498,6 @@ var patterns_registry_default = {
495
498
  ],
496
499
  typicalSize: "medium",
497
500
  propsSchema: {
498
- entity: {
499
- types: [
500
- "object",
501
- "array"
502
- ],
503
- description: "Entity record or array of records \u2014 pre-resolved by the trait via render-ui after a fetch emit",
504
- kind: "entity",
505
- cardinality: "collection"
506
- },
507
501
  className: {
508
502
  types: [
509
503
  "string"
@@ -607,6 +601,15 @@ var patterns_registry_default = {
607
601
  },
608
602
  default: []
609
603
  },
604
+ entity: {
605
+ types: [
606
+ "object",
607
+ "array"
608
+ ],
609
+ description: "Entity data (single record or collection).",
610
+ kind: "entity",
611
+ cardinality: "collection"
612
+ },
610
613
  entityType: {
611
614
  types: [
612
615
  "string"
@@ -739,7 +742,8 @@ var patterns_registry_default = {
739
742
  },
740
743
  icon: {
741
744
  types: [
742
- "icon"
745
+ "icon",
746
+ "string"
743
747
  ]
744
748
  },
745
749
  avatar: {
@@ -749,7 +753,7 @@ var patterns_registry_default = {
749
753
  properties: {
750
754
  src: {
751
755
  types: [
752
- "string"
756
+ "asset"
753
757
  ]
754
758
  },
755
759
  alt: {
@@ -1226,14 +1230,6 @@ var patterns_registry_default = {
1226
1230
  ],
1227
1231
  typicalSize: "medium",
1228
1232
  propsSchema: {
1229
- entity: {
1230
- types: [
1231
- "object"
1232
- ],
1233
- description: "RECORD-cardinality override: renders ONE record (see body collapse below).",
1234
- kind: "entity",
1235
- cardinality: "record"
1236
- },
1237
1233
  className: {
1238
1234
  types: [
1239
1235
  "string"
@@ -1336,6 +1332,14 @@ var patterns_registry_default = {
1336
1332
  ]
1337
1333
  }
1338
1334
  },
1335
+ entity: {
1336
+ types: [
1337
+ "object"
1338
+ ],
1339
+ description: "RECORD-cardinality: renders ONE record (see body collapse below).",
1340
+ kind: "entity",
1341
+ cardinality: "record"
1342
+ },
1339
1343
  title: {
1340
1344
  types: [
1341
1345
  "string"
@@ -1419,7 +1423,8 @@ var patterns_registry_default = {
1419
1423
  },
1420
1424
  icon: {
1421
1425
  types: [
1422
- "icon"
1426
+ "icon",
1427
+ "string"
1423
1428
  ]
1424
1429
  },
1425
1430
  copyable: {
@@ -1458,7 +1463,8 @@ var patterns_registry_default = {
1458
1463
  },
1459
1464
  icon: {
1460
1465
  types: [
1461
- "icon"
1466
+ "icon",
1467
+ "string"
1462
1468
  ]
1463
1469
  },
1464
1470
  onClick: {
@@ -1742,7 +1748,8 @@ var patterns_registry_default = {
1742
1748
  },
1743
1749
  icon: {
1744
1750
  types: [
1745
- "icon"
1751
+ "icon",
1752
+ "string"
1746
1753
  ]
1747
1754
  },
1748
1755
  loading: {
@@ -6638,23 +6645,20 @@ var patterns_registry_default = {
6638
6645
  },
6639
6646
  leftIcon: {
6640
6647
  types: [
6641
- "node",
6642
6648
  "icon",
6643
6649
  "string"
6644
6650
  ],
6645
- description: 'Left icon as ReactNode, Lucide component, or string name (e.g. "plus", "trash")'
6651
+ description: 'Left icon: a Lucide component or a canonical icon name string (e.g. "plus", "trash").'
6646
6652
  },
6647
6653
  rightIcon: {
6648
6654
  types: [
6649
- "node",
6650
6655
  "icon",
6651
6656
  "string"
6652
6657
  ],
6653
- description: "Right icon as ReactNode, Lucide component, or string name"
6658
+ description: "Right icon: a Lucide component or a canonical icon name string."
6654
6659
  },
6655
6660
  icon: {
6656
6661
  types: [
6657
- "node",
6658
6662
  "icon",
6659
6663
  "string"
6660
6664
  ],
@@ -6662,7 +6666,6 @@ var patterns_registry_default = {
6662
6666
  },
6663
6667
  iconRight: {
6664
6668
  types: [
6665
- "node",
6666
6669
  "icon",
6667
6670
  "string"
6668
6671
  ],
@@ -6760,9 +6763,10 @@ var patterns_registry_default = {
6760
6763
  },
6761
6764
  icon: {
6762
6765
  types: [
6763
- "node"
6766
+ "icon",
6767
+ "string"
6764
6768
  ],
6765
- description: "Icon name (Lucide icon string) or React node"
6769
+ description: "Lucide icon component or canonical kebab-case icon name string"
6766
6770
  },
6767
6771
  onRemove: {
6768
6772
  types: [
@@ -6795,7 +6799,7 @@ var patterns_registry_default = {
6795
6799
  propsSchema: {
6796
6800
  src: {
6797
6801
  types: [
6798
- "string"
6802
+ "asset"
6799
6803
  ],
6800
6804
  description: "Image source URL"
6801
6805
  },
@@ -7063,6 +7067,13 @@ var patterns_registry_default = {
7063
7067
  "node"
7064
7068
  ],
7065
7069
  description: "Card content"
7070
+ },
7071
+ action: {
7072
+ types: [
7073
+ "string"
7074
+ ],
7075
+ description: "Declarative event key emitted on click for trait dispatch",
7076
+ kind: "event"
7066
7077
  }
7067
7078
  }
7068
7079
  },
@@ -7288,13 +7299,15 @@ var patterns_registry_default = {
7288
7299
  },
7289
7300
  leftIcon: {
7290
7301
  types: [
7291
- "node"
7302
+ "icon",
7303
+ "string"
7292
7304
  ],
7293
7305
  description: "leftIcon prop"
7294
7306
  },
7295
7307
  rightIcon: {
7296
7308
  types: [
7297
- "node"
7309
+ "icon",
7310
+ "string"
7298
7311
  ],
7299
7312
  description: "rightIcon prop"
7300
7313
  },
@@ -7303,7 +7316,7 @@ var patterns_registry_default = {
7303
7316
  "icon",
7304
7317
  "string"
7305
7318
  ],
7306
- description: "Lucide icon component for left side (convenience prop), or a canonical kebab-case icon name string (resolved via `resolveIcon`)."
7319
+ description: "Lucide icon component or canonical kebab-case icon name string for left side"
7307
7320
  },
7308
7321
  clearable: {
7309
7322
  types: [
@@ -7313,11 +7326,10 @@ var patterns_registry_default = {
7313
7326
  },
7314
7327
  onClear: {
7315
7328
  types: [
7316
- "function"
7329
+ "function",
7330
+ "string"
7317
7331
  ],
7318
- description: "Callback when clear button is clicked",
7319
- kind: "callback",
7320
- callbackArgs: []
7332
+ description: "Callback or declarative event key when clear button is clicked"
7321
7333
  },
7322
7334
  options: {
7323
7335
  types: [
@@ -7355,11 +7367,10 @@ var patterns_registry_default = {
7355
7367
  },
7356
7368
  onChange: {
7357
7369
  types: [
7358
- "function"
7370
+ "function",
7371
+ "string"
7359
7372
  ],
7360
- description: "onChange handler - accepts events from input, select, or textarea",
7361
- kind: "callback",
7362
- callbackArgs: []
7373
+ description: "onChange handler or declarative event key for trait dispatch"
7363
7374
  }
7364
7375
  }
7365
7376
  },
@@ -7406,6 +7417,13 @@ var patterns_registry_default = {
7406
7417
  "string"
7407
7418
  ],
7408
7419
  description: "Error message"
7420
+ },
7421
+ onChange: {
7422
+ types: [
7423
+ "function",
7424
+ "string"
7425
+ ],
7426
+ description: "onChange handler or declarative event key for trait dispatch"
7409
7427
  }
7410
7428
  }
7411
7429
  },
@@ -7480,6 +7498,13 @@ var patterns_registry_default = {
7480
7498
  "string"
7481
7499
  ],
7482
7500
  description: "Error message"
7501
+ },
7502
+ onChange: {
7503
+ types: [
7504
+ "function",
7505
+ "string"
7506
+ ],
7507
+ description: "onChange handler or declarative event key for trait dispatch"
7483
7508
  }
7484
7509
  }
7485
7510
  },
@@ -7519,6 +7544,13 @@ var patterns_registry_default = {
7519
7544
  "string"
7520
7545
  ],
7521
7546
  description: "label prop"
7547
+ },
7548
+ onChange: {
7549
+ types: [
7550
+ "function",
7551
+ "string"
7552
+ ],
7553
+ description: "onChange handler or declarative event key for trait dispatch"
7522
7554
  }
7523
7555
  }
7524
7556
  },
@@ -9621,7 +9653,8 @@ var patterns_registry_default = {
9621
9653
  },
9622
9654
  icon: {
9623
9655
  types: [
9624
- "icon"
9656
+ "icon",
9657
+ "string"
9625
9658
  ]
9626
9659
  },
9627
9660
  onClick: {
@@ -9656,9 +9689,10 @@ var patterns_registry_default = {
9656
9689
  },
9657
9690
  icon: {
9658
9691
  types: [
9692
+ "icon",
9659
9693
  "string"
9660
9694
  ],
9661
- description: "Icon name (resolves to a Lucide icon by PascalCase / kebab-case lookup)."
9695
+ description: "Icon: a canonical icon name string (resolved by Button) or a Lucide component."
9662
9696
  },
9663
9697
  onClick: {
9664
9698
  types: [
@@ -9827,9 +9861,10 @@ var patterns_registry_default = {
9827
9861
  },
9828
9862
  icon: {
9829
9863
  types: [
9864
+ "icon",
9830
9865
  "string"
9831
9866
  ],
9832
- description: "Icon name to show before title"
9867
+ description: "Lucide icon name or component to show before title"
9833
9868
  },
9834
9869
  hasErrors: {
9835
9870
  types: [
@@ -10361,7 +10396,7 @@ var patterns_registry_default = {
10361
10396
  },
10362
10397
  logoSrc: {
10363
10398
  types: [
10364
- "string"
10399
+ "asset"
10365
10400
  ],
10366
10401
  description: "Logo image source"
10367
10402
  },
@@ -10399,7 +10434,8 @@ var patterns_registry_default = {
10399
10434
  },
10400
10435
  icon: {
10401
10436
  types: [
10402
- "icon"
10437
+ "icon",
10438
+ "string"
10403
10439
  ]
10404
10440
  },
10405
10441
  badge: {
@@ -10475,7 +10511,7 @@ var patterns_registry_default = {
10475
10511
  properties: {
10476
10512
  src: {
10477
10513
  types: [
10478
- "string"
10514
+ "asset"
10479
10515
  ]
10480
10516
  },
10481
10517
  alt: {
@@ -10725,7 +10761,8 @@ var patterns_registry_default = {
10725
10761
  },
10726
10762
  icon: {
10727
10763
  types: [
10728
- "icon"
10764
+ "icon",
10765
+ "string"
10729
10766
  ]
10730
10767
  },
10731
10768
  badge: {
@@ -11198,7 +11235,7 @@ var patterns_registry_default = {
11198
11235
  },
11199
11236
  logoSrc: {
11200
11237
  types: [
11201
- "string"
11238
+ "asset"
11202
11239
  ],
11203
11240
  description: "Logo image source"
11204
11241
  },
@@ -11232,7 +11269,8 @@ var patterns_registry_default = {
11232
11269
  },
11233
11270
  icon: {
11234
11271
  types: [
11235
- "icon"
11272
+ "icon",
11273
+ "string"
11236
11274
  ]
11237
11275
  },
11238
11276
  badge: {
@@ -11632,7 +11670,7 @@ var patterns_registry_default = {
11632
11670
  },
11633
11671
  backgroundImage: {
11634
11672
  types: [
11635
- "string"
11673
+ "asset"
11636
11674
  ],
11637
11675
  description: "Background image URL"
11638
11676
  },
@@ -11835,7 +11873,7 @@ var patterns_registry_default = {
11835
11873
  },
11836
11874
  avatar: {
11837
11875
  types: [
11838
- "string"
11876
+ "asset"
11839
11877
  ]
11840
11878
  }
11841
11879
  },
@@ -11898,6 +11936,7 @@ var patterns_registry_default = {
11898
11936
  properties: {
11899
11937
  icon: {
11900
11938
  types: [
11939
+ "icon",
11901
11940
  "string"
11902
11941
  ]
11903
11942
  },
@@ -12905,7 +12944,8 @@ var patterns_registry_default = {
12905
12944
  },
12906
12945
  icon: {
12907
12946
  types: [
12908
- "icon"
12947
+ "icon",
12948
+ "string"
12909
12949
  ]
12910
12950
  },
12911
12951
  tags: {
@@ -13143,7 +13183,7 @@ var patterns_registry_default = {
13143
13183
  },
13144
13184
  src: {
13145
13185
  types: [
13146
- "string"
13186
+ "asset"
13147
13187
  ]
13148
13188
  },
13149
13189
  alt: {
@@ -13153,7 +13193,7 @@ var patterns_registry_default = {
13153
13193
  },
13154
13194
  thumbnail: {
13155
13195
  types: [
13156
- "string"
13196
+ "asset"
13157
13197
  ]
13158
13198
  },
13159
13199
  mediaType: {
@@ -13456,7 +13496,7 @@ var patterns_registry_default = {
13456
13496
  },
13457
13497
  src: {
13458
13498
  types: [
13459
- "string"
13499
+ "asset"
13460
13500
  ],
13461
13501
  description: "Document URL (for PDF/external documents)"
13462
13502
  },
@@ -13578,7 +13618,7 @@ var patterns_registry_default = {
13578
13618
  },
13579
13619
  src: {
13580
13620
  types: [
13581
- "string"
13621
+ "asset"
13582
13622
  ]
13583
13623
  },
13584
13624
  content: {
@@ -14047,6 +14087,323 @@ var patterns_registry_default = {
14047
14087
  ],
14048
14088
  description: "Canvas render scale",
14049
14089
  default: 0.45
14090
+ },
14091
+ tiles: {
14092
+ types: [
14093
+ "array"
14094
+ ],
14095
+ description: "Direct tile data \u2014 forwarded to CastleBoard; takes priority over entity.",
14096
+ items: {
14097
+ types: [
14098
+ "object"
14099
+ ],
14100
+ properties: {
14101
+ id: {
14102
+ types: [
14103
+ "string"
14104
+ ]
14105
+ },
14106
+ x: {
14107
+ types: [
14108
+ "number"
14109
+ ]
14110
+ },
14111
+ y: {
14112
+ types: [
14113
+ "number"
14114
+ ]
14115
+ },
14116
+ z: {
14117
+ types: [
14118
+ "number"
14119
+ ]
14120
+ },
14121
+ terrain: {
14122
+ types: [
14123
+ "string"
14124
+ ]
14125
+ },
14126
+ type: {
14127
+ types: [
14128
+ "string"
14129
+ ]
14130
+ },
14131
+ terrainSprite: {
14132
+ types: [
14133
+ "asset"
14134
+ ]
14135
+ },
14136
+ passable: {
14137
+ types: [
14138
+ "boolean"
14139
+ ]
14140
+ },
14141
+ movementCost: {
14142
+ types: [
14143
+ "number"
14144
+ ]
14145
+ },
14146
+ tileType: {
14147
+ types: [
14148
+ "string"
14149
+ ]
14150
+ },
14151
+ elevation: {
14152
+ types: [
14153
+ "number"
14154
+ ]
14155
+ }
14156
+ },
14157
+ required: [
14158
+ "x",
14159
+ "y"
14160
+ ]
14161
+ }
14162
+ },
14163
+ units: {
14164
+ types: [
14165
+ "array"
14166
+ ],
14167
+ description: "Direct unit data \u2014 forwarded to CastleBoard; takes priority over entity.",
14168
+ items: {
14169
+ types: [
14170
+ "object"
14171
+ ],
14172
+ properties: {
14173
+ id: {
14174
+ types: [
14175
+ "string"
14176
+ ]
14177
+ },
14178
+ position: {
14179
+ types: [
14180
+ "object"
14181
+ ],
14182
+ properties: {
14183
+ x: {
14184
+ types: [
14185
+ "number"
14186
+ ]
14187
+ },
14188
+ y: {
14189
+ types: [
14190
+ "number"
14191
+ ]
14192
+ }
14193
+ },
14194
+ required: [
14195
+ "x",
14196
+ "y"
14197
+ ]
14198
+ },
14199
+ x: {
14200
+ types: [
14201
+ "number"
14202
+ ]
14203
+ },
14204
+ y: {
14205
+ types: [
14206
+ "number"
14207
+ ]
14208
+ },
14209
+ z: {
14210
+ types: [
14211
+ "number"
14212
+ ]
14213
+ },
14214
+ sprite: {
14215
+ types: [
14216
+ "object"
14217
+ ]
14218
+ },
14219
+ unitType: {
14220
+ types: [
14221
+ "string"
14222
+ ]
14223
+ },
14224
+ heroId: {
14225
+ types: [
14226
+ "string"
14227
+ ]
14228
+ },
14229
+ name: {
14230
+ types: [
14231
+ "string"
14232
+ ]
14233
+ },
14234
+ team: {
14235
+ types: [
14236
+ "string"
14237
+ ],
14238
+ enumValues: [
14239
+ "player",
14240
+ "enemy",
14241
+ "neutral"
14242
+ ]
14243
+ },
14244
+ faction: {
14245
+ types: [
14246
+ "string"
14247
+ ],
14248
+ enumValues: [
14249
+ "player",
14250
+ "enemy",
14251
+ "neutral"
14252
+ ]
14253
+ },
14254
+ health: {
14255
+ types: [
14256
+ "number"
14257
+ ]
14258
+ },
14259
+ maxHealth: {
14260
+ types: [
14261
+ "number"
14262
+ ]
14263
+ },
14264
+ traits: {
14265
+ types: [
14266
+ "array"
14267
+ ],
14268
+ items: {
14269
+ types: [
14270
+ "object"
14271
+ ],
14272
+ properties: {
14273
+ name: {
14274
+ types: [
14275
+ "string"
14276
+ ]
14277
+ },
14278
+ currentState: {
14279
+ types: [
14280
+ "string"
14281
+ ]
14282
+ },
14283
+ states: {
14284
+ types: [
14285
+ "array"
14286
+ ],
14287
+ items: {
14288
+ types: [
14289
+ "string"
14290
+ ]
14291
+ }
14292
+ },
14293
+ cooldown: {
14294
+ types: [
14295
+ "number"
14296
+ ]
14297
+ }
14298
+ },
14299
+ required: [
14300
+ "name",
14301
+ "currentState",
14302
+ "states",
14303
+ "cooldown"
14304
+ ]
14305
+ }
14306
+ },
14307
+ previousPosition: {
14308
+ types: [
14309
+ "object"
14310
+ ],
14311
+ properties: {
14312
+ x: {
14313
+ types: [
14314
+ "number"
14315
+ ]
14316
+ },
14317
+ y: {
14318
+ types: [
14319
+ "number"
14320
+ ]
14321
+ }
14322
+ },
14323
+ required: [
14324
+ "x",
14325
+ "y"
14326
+ ]
14327
+ },
14328
+ elevation: {
14329
+ types: [
14330
+ "number"
14331
+ ]
14332
+ }
14333
+ },
14334
+ required: [
14335
+ "id"
14336
+ ]
14337
+ }
14338
+ },
14339
+ features: {
14340
+ types: [
14341
+ "array"
14342
+ ],
14343
+ description: "Direct feature data \u2014 forwarded to CastleBoard; takes priority over entity.",
14344
+ items: {
14345
+ types: [
14346
+ "object"
14347
+ ],
14348
+ properties: {
14349
+ id: {
14350
+ types: [
14351
+ "string"
14352
+ ]
14353
+ },
14354
+ x: {
14355
+ types: [
14356
+ "number"
14357
+ ]
14358
+ },
14359
+ y: {
14360
+ types: [
14361
+ "number"
14362
+ ]
14363
+ },
14364
+ z: {
14365
+ types: [
14366
+ "number"
14367
+ ]
14368
+ },
14369
+ type: {
14370
+ types: [
14371
+ "string"
14372
+ ]
14373
+ },
14374
+ sprite: {
14375
+ types: [
14376
+ "object"
14377
+ ]
14378
+ },
14379
+ assetUrl: {
14380
+ types: [
14381
+ "object"
14382
+ ]
14383
+ },
14384
+ color: {
14385
+ types: [
14386
+ "string"
14387
+ ]
14388
+ },
14389
+ elevation: {
14390
+ types: [
14391
+ "number"
14392
+ ]
14393
+ }
14394
+ },
14395
+ required: [
14396
+ "x",
14397
+ "y",
14398
+ "type"
14399
+ ]
14400
+ }
14401
+ },
14402
+ assetManifest: {
14403
+ types: [
14404
+ "string"
14405
+ ],
14406
+ description: "Direct asset manifest \u2014 forwarded to CastleBoard; takes priority over entity."
14050
14407
  }
14051
14408
  }
14052
14409
  },
@@ -14103,6 +14460,323 @@ var patterns_registry_default = {
14103
14460
  ],
14104
14461
  description: "Allow selecting / moving ALL heroes (including enemy). For testing.",
14105
14462
  default: false
14463
+ },
14464
+ tiles: {
14465
+ types: [
14466
+ "array"
14467
+ ],
14468
+ description: "Direct tile data \u2014 forwarded to WorldMapBoard; takes priority over entity.",
14469
+ items: {
14470
+ types: [
14471
+ "object"
14472
+ ],
14473
+ properties: {
14474
+ id: {
14475
+ types: [
14476
+ "string"
14477
+ ]
14478
+ },
14479
+ x: {
14480
+ types: [
14481
+ "number"
14482
+ ]
14483
+ },
14484
+ y: {
14485
+ types: [
14486
+ "number"
14487
+ ]
14488
+ },
14489
+ z: {
14490
+ types: [
14491
+ "number"
14492
+ ]
14493
+ },
14494
+ terrain: {
14495
+ types: [
14496
+ "string"
14497
+ ]
14498
+ },
14499
+ type: {
14500
+ types: [
14501
+ "string"
14502
+ ]
14503
+ },
14504
+ terrainSprite: {
14505
+ types: [
14506
+ "asset"
14507
+ ]
14508
+ },
14509
+ passable: {
14510
+ types: [
14511
+ "boolean"
14512
+ ]
14513
+ },
14514
+ movementCost: {
14515
+ types: [
14516
+ "number"
14517
+ ]
14518
+ },
14519
+ tileType: {
14520
+ types: [
14521
+ "string"
14522
+ ]
14523
+ },
14524
+ elevation: {
14525
+ types: [
14526
+ "number"
14527
+ ]
14528
+ }
14529
+ },
14530
+ required: [
14531
+ "x",
14532
+ "y"
14533
+ ]
14534
+ }
14535
+ },
14536
+ units: {
14537
+ types: [
14538
+ "array"
14539
+ ],
14540
+ description: "Direct unit data \u2014 forwarded to WorldMapBoard; takes priority over entity.",
14541
+ items: {
14542
+ types: [
14543
+ "object"
14544
+ ],
14545
+ properties: {
14546
+ id: {
14547
+ types: [
14548
+ "string"
14549
+ ]
14550
+ },
14551
+ position: {
14552
+ types: [
14553
+ "object"
14554
+ ],
14555
+ properties: {
14556
+ x: {
14557
+ types: [
14558
+ "number"
14559
+ ]
14560
+ },
14561
+ y: {
14562
+ types: [
14563
+ "number"
14564
+ ]
14565
+ }
14566
+ },
14567
+ required: [
14568
+ "x",
14569
+ "y"
14570
+ ]
14571
+ },
14572
+ x: {
14573
+ types: [
14574
+ "number"
14575
+ ]
14576
+ },
14577
+ y: {
14578
+ types: [
14579
+ "number"
14580
+ ]
14581
+ },
14582
+ z: {
14583
+ types: [
14584
+ "number"
14585
+ ]
14586
+ },
14587
+ sprite: {
14588
+ types: [
14589
+ "object"
14590
+ ]
14591
+ },
14592
+ unitType: {
14593
+ types: [
14594
+ "string"
14595
+ ]
14596
+ },
14597
+ heroId: {
14598
+ types: [
14599
+ "string"
14600
+ ]
14601
+ },
14602
+ name: {
14603
+ types: [
14604
+ "string"
14605
+ ]
14606
+ },
14607
+ team: {
14608
+ types: [
14609
+ "string"
14610
+ ],
14611
+ enumValues: [
14612
+ "player",
14613
+ "enemy",
14614
+ "neutral"
14615
+ ]
14616
+ },
14617
+ faction: {
14618
+ types: [
14619
+ "string"
14620
+ ],
14621
+ enumValues: [
14622
+ "player",
14623
+ "enemy",
14624
+ "neutral"
14625
+ ]
14626
+ },
14627
+ health: {
14628
+ types: [
14629
+ "number"
14630
+ ]
14631
+ },
14632
+ maxHealth: {
14633
+ types: [
14634
+ "number"
14635
+ ]
14636
+ },
14637
+ traits: {
14638
+ types: [
14639
+ "array"
14640
+ ],
14641
+ items: {
14642
+ types: [
14643
+ "object"
14644
+ ],
14645
+ properties: {
14646
+ name: {
14647
+ types: [
14648
+ "string"
14649
+ ]
14650
+ },
14651
+ currentState: {
14652
+ types: [
14653
+ "string"
14654
+ ]
14655
+ },
14656
+ states: {
14657
+ types: [
14658
+ "array"
14659
+ ],
14660
+ items: {
14661
+ types: [
14662
+ "string"
14663
+ ]
14664
+ }
14665
+ },
14666
+ cooldown: {
14667
+ types: [
14668
+ "number"
14669
+ ]
14670
+ }
14671
+ },
14672
+ required: [
14673
+ "name",
14674
+ "currentState",
14675
+ "states",
14676
+ "cooldown"
14677
+ ]
14678
+ }
14679
+ },
14680
+ previousPosition: {
14681
+ types: [
14682
+ "object"
14683
+ ],
14684
+ properties: {
14685
+ x: {
14686
+ types: [
14687
+ "number"
14688
+ ]
14689
+ },
14690
+ y: {
14691
+ types: [
14692
+ "number"
14693
+ ]
14694
+ }
14695
+ },
14696
+ required: [
14697
+ "x",
14698
+ "y"
14699
+ ]
14700
+ },
14701
+ elevation: {
14702
+ types: [
14703
+ "number"
14704
+ ]
14705
+ }
14706
+ },
14707
+ required: [
14708
+ "id"
14709
+ ]
14710
+ }
14711
+ },
14712
+ features: {
14713
+ types: [
14714
+ "array"
14715
+ ],
14716
+ description: "Direct feature data \u2014 forwarded to WorldMapBoard; takes priority over entity.",
14717
+ items: {
14718
+ types: [
14719
+ "object"
14720
+ ],
14721
+ properties: {
14722
+ id: {
14723
+ types: [
14724
+ "string"
14725
+ ]
14726
+ },
14727
+ x: {
14728
+ types: [
14729
+ "number"
14730
+ ]
14731
+ },
14732
+ y: {
14733
+ types: [
14734
+ "number"
14735
+ ]
14736
+ },
14737
+ z: {
14738
+ types: [
14739
+ "number"
14740
+ ]
14741
+ },
14742
+ type: {
14743
+ types: [
14744
+ "string"
14745
+ ]
14746
+ },
14747
+ sprite: {
14748
+ types: [
14749
+ "object"
14750
+ ]
14751
+ },
14752
+ assetUrl: {
14753
+ types: [
14754
+ "object"
14755
+ ]
14756
+ },
14757
+ color: {
14758
+ types: [
14759
+ "string"
14760
+ ]
14761
+ },
14762
+ elevation: {
14763
+ types: [
14764
+ "number"
14765
+ ]
14766
+ }
14767
+ },
14768
+ required: [
14769
+ "x",
14770
+ "y",
14771
+ "type"
14772
+ ]
14773
+ }
14774
+ },
14775
+ assetManifest: {
14776
+ types: [
14777
+ "string"
14778
+ ],
14779
+ description: "Direct asset manifest \u2014 forwarded to WorldMapBoard; takes priority over entity."
14106
14780
  }
14107
14781
  }
14108
14782
  },
@@ -15994,6 +16668,7 @@ var patterns_registry_default = {
15994
16668
  },
15995
16669
  icon: {
15996
16670
  types: [
16671
+ "icon",
15997
16672
  "string"
15998
16673
  ]
15999
16674
  },
@@ -16061,6 +16736,7 @@ var patterns_registry_default = {
16061
16736
  },
16062
16737
  icon: {
16063
16738
  types: [
16739
+ "icon",
16064
16740
  "string"
16065
16741
  ]
16066
16742
  },
@@ -16130,6 +16806,7 @@ var patterns_registry_default = {
16130
16806
  },
16131
16807
  icon: {
16132
16808
  types: [
16809
+ "icon",
16133
16810
  "string"
16134
16811
  ]
16135
16812
  },
@@ -16436,6 +17113,7 @@ var patterns_registry_default = {
16436
17113
  },
16437
17114
  icon: {
16438
17115
  types: [
17116
+ "icon",
16439
17117
  "string"
16440
17118
  ]
16441
17119
  },
@@ -16493,6 +17171,7 @@ var patterns_registry_default = {
16493
17171
  },
16494
17172
  icon: {
16495
17173
  types: [
17174
+ "icon",
16496
17175
  "string"
16497
17176
  ]
16498
17177
  },
@@ -16552,6 +17231,7 @@ var patterns_registry_default = {
16552
17231
  },
16553
17232
  icon: {
16554
17233
  types: [
17234
+ "icon",
16555
17235
  "string"
16556
17236
  ]
16557
17237
  },
@@ -16705,6 +17385,7 @@ var patterns_registry_default = {
16705
17385
  },
16706
17386
  icon: {
16707
17387
  types: [
17388
+ "icon",
16708
17389
  "string"
16709
17390
  ]
16710
17391
  },
@@ -16749,6 +17430,7 @@ var patterns_registry_default = {
16749
17430
  },
16750
17431
  icon: {
16751
17432
  types: [
17433
+ "icon",
16752
17434
  "string"
16753
17435
  ]
16754
17436
  },
@@ -17442,7 +18124,7 @@ var patterns_registry_default = {
17442
18124
  properties: {
17443
18125
  src: {
17444
18126
  types: [
17445
- "string"
18127
+ "asset"
17446
18128
  ]
17447
18129
  },
17448
18130
  alt: {
@@ -17759,9 +18441,10 @@ var patterns_registry_default = {
17759
18441
  },
17760
18442
  icon: {
17761
18443
  types: [
18444
+ "icon",
17762
18445
  "string"
17763
18446
  ],
17764
- description: "Icon name (Lucide string)"
18447
+ description: "Icon name or component"
17765
18448
  },
17766
18449
  disabled: {
17767
18450
  types: [
@@ -18286,6 +18969,7 @@ var patterns_registry_default = {
18286
18969
  },
18287
18970
  icon: {
18288
18971
  types: [
18972
+ "icon",
18289
18973
  "string"
18290
18974
  ]
18291
18975
  },
@@ -18338,6 +19022,7 @@ var patterns_registry_default = {
18338
19022
  },
18339
19023
  icon: {
18340
19024
  types: [
19025
+ "icon",
18341
19026
  "string"
18342
19027
  ]
18343
19028
  },
@@ -18499,9 +19184,10 @@ var patterns_registry_default = {
18499
19184
  },
18500
19185
  icon: {
18501
19186
  types: [
18502
- "node"
19187
+ "icon",
19188
+ "string"
18503
19189
  ],
18504
- description: "Lucide icon name or React node"
19190
+ description: "Lucide icon name or component"
18505
19191
  },
18506
19192
  iconBg: {
18507
19193
  types: [
@@ -18956,10 +19642,10 @@ var patterns_registry_default = {
18956
19642
  propsSchema: {
18957
19643
  icon: {
18958
19644
  types: [
18959
- "string",
18960
- "node"
19645
+ "icon",
19646
+ "string"
18961
19647
  ],
18962
- description: "Icon name (Lucide string) or ReactNode"
19648
+ description: "icon prop"
18963
19649
  },
18964
19650
  title: {
18965
19651
  types: [
@@ -19047,8 +19733,8 @@ var patterns_registry_default = {
19047
19733
  properties: {
19048
19734
  icon: {
19049
19735
  types: [
19050
- "string",
19051
- "node"
19736
+ "icon",
19737
+ "string"
19052
19738
  ]
19053
19739
  },
19054
19740
  title: {
@@ -19246,7 +19932,7 @@ var patterns_registry_default = {
19246
19932
  properties: {
19247
19933
  src: {
19248
19934
  types: [
19249
- "string"
19935
+ "object"
19250
19936
  ]
19251
19937
  },
19252
19938
  alt: {
@@ -19629,7 +20315,7 @@ var patterns_registry_default = {
19629
20315
  properties: {
19630
20316
  src: {
19631
20317
  types: [
19632
- "string"
20318
+ "object"
19633
20319
  ]
19634
20320
  },
19635
20321
  alt: {
@@ -19781,7 +20467,7 @@ var patterns_registry_default = {
19781
20467
  properties: {
19782
20468
  src: {
19783
20469
  types: [
19784
- "string"
20470
+ "object"
19785
20471
  ]
19786
20472
  },
19787
20473
  alt: {
@@ -20000,7 +20686,7 @@ var patterns_registry_default = {
20000
20686
  },
20001
20687
  avatar: {
20002
20688
  types: [
20003
- "string",
20689
+ "asset",
20004
20690
  "object"
20005
20691
  ],
20006
20692
  description: "avatar prop",
@@ -21355,7 +22041,7 @@ var patterns_registry_default = {
21355
22041
  },
21356
22042
  src: {
21357
22043
  types: [
21358
- "string"
22044
+ "asset"
21359
22045
  ],
21360
22046
  description: "URL to an SVG file. Fetched and inlined to enable stroke/fill animations."
21361
22047
  },
@@ -22188,9 +22874,10 @@ var patterns_registry_default = {
22188
22874
  },
22189
22875
  icon: {
22190
22876
  types: [
22191
- "node"
22877
+ "icon",
22878
+ "string"
22192
22879
  ],
22193
- description: "Optional icon name (Lucide icon string) or React node"
22880
+ description: "Lucide icon component or canonical kebab-case icon name string"
22194
22881
  },
22195
22882
  onRemove: {
22196
22883
  types: [
@@ -23650,7 +24337,8 @@ var patterns_registry_default = {
23650
24337
  },
23651
24338
  icon: {
23652
24339
  types: [
23653
- "node"
24340
+ "icon",
24341
+ "string"
23654
24342
  ],
23655
24343
  description: "Icon displayed before the label"
23656
24344
  },
@@ -23843,7 +24531,8 @@ var patterns_registry_default = {
23843
24531
  },
23844
24532
  icon: {
23845
24533
  types: [
23846
- "node"
24534
+ "icon",
24535
+ "string"
23847
24536
  ],
23848
24537
  description: "Icon component or emoji"
23849
24538
  },
@@ -24018,7 +24707,7 @@ var patterns_registry_default = {
24018
24707
  "asset"
24019
24708
  ],
24020
24709
  description: "URL for the speaker portrait image",
24021
- default: "https://almadar-kflow-assets.web.app/shared/characters/archetypes/00_base_model.png"
24710
+ default: "https://almadar-kflow-assets.web.app/shared/characters/archetypes/04_hero.png"
24022
24711
  },
24023
24712
  position: {
24024
24713
  types: [
@@ -24120,7 +24809,8 @@ var patterns_registry_default = {
24120
24809
  propsSchema: {
24121
24810
  icon: {
24122
24811
  types: [
24123
- "node"
24812
+ "icon",
24813
+ "string"
24124
24814
  ],
24125
24815
  description: "Icon component or emoji"
24126
24816
  },
@@ -24361,7 +25051,8 @@ var patterns_registry_default = {
24361
25051
  propsSchema: {
24362
25052
  icon: {
24363
25053
  types: [
24364
- "node"
25054
+ "icon",
25055
+ "string"
24365
25056
  ],
24366
25057
  description: "Icon component or emoji"
24367
25058
  },
@@ -24447,7 +25138,8 @@ var patterns_registry_default = {
24447
25138
  },
24448
25139
  icon: {
24449
25140
  types: [
24450
- "node"
25141
+ "icon",
25142
+ "string"
24451
25143
  ],
24452
25144
  description: "Icon component or emoji"
24453
25145
  },
@@ -24669,6 +25361,7 @@ var patterns_registry_default = {
24669
25361
  properties: {
24670
25362
  icon: {
24671
25363
  types: [
25364
+ "icon",
24672
25365
  "string"
24673
25366
  ]
24674
25367
  },
@@ -24707,9 +25400,10 @@ var patterns_registry_default = {
24707
25400
  propsSchema: {
24708
25401
  icon: {
24709
25402
  types: [
25403
+ "icon",
24710
25404
  "string"
24711
25405
  ],
24712
- description: "Lucide kebab-case icon name",
25406
+ description: "Lucide icon name or component",
24713
25407
  required: true
24714
25408
  },
24715
25409
  label: {
@@ -24905,7 +25599,8 @@ var patterns_registry_default = {
24905
25599
  },
24906
25600
  icon: {
24907
25601
  types: [
24908
- "node"
25602
+ "icon",
25603
+ "string"
24909
25604
  ],
24910
25605
  description: "Custom icon to render inside the marker"
24911
25606
  },
@@ -27287,7 +27982,8 @@ var patterns_registry_default = {
27287
27982
  },
27288
27983
  icon: {
27289
27984
  types: [
27290
- "node"
27985
+ "icon",
27986
+ "string"
27291
27987
  ]
27292
27988
  },
27293
27989
  variant: {
@@ -27524,7 +28220,8 @@ var patterns_registry_default = {
27524
28220
  properties: {
27525
28221
  icon: {
27526
28222
  types: [
27527
- "node"
28223
+ "icon",
28224
+ "string"
27528
28225
  ]
27529
28226
  },
27530
28227
  label: {
@@ -27559,7 +28256,8 @@ var patterns_registry_default = {
27559
28256
  properties: {
27560
28257
  icon: {
27561
28258
  types: [
27562
- "node"
28259
+ "icon",
28260
+ "string"
27563
28261
  ]
27564
28262
  },
27565
28263
  label: {
@@ -27948,7 +28646,8 @@ var patterns_registry_default = {
27948
28646
  properties: {
27949
28647
  icon: {
27950
28648
  types: [
27951
- "node"
28649
+ "icon",
28650
+ "string"
27952
28651
  ]
27953
28652
  },
27954
28653
  label: {
@@ -28059,16 +28758,17 @@ var patterns_registry_default = {
28059
28758
  },
28060
28759
  backgroundImage: {
28061
28760
  types: [
28062
- "string"
28761
+ "asset"
28063
28762
  ],
28064
- description: "Background image URL"
28763
+ description: "Background image URL",
28764
+ default: "https://almadar-kflow-assets.web.app/shared/scenes/resonators.jpeg"
28065
28765
  },
28066
28766
  assetBaseUrl: {
28067
28767
  types: [
28068
- "string"
28768
+ "asset"
28069
28769
  ],
28070
28770
  description: "Base URL prefix for asset URLs",
28071
- default: ""
28771
+ default: "https://almadar-kflow-assets.web.app/shared/"
28072
28772
  },
28073
28773
  className: {
28074
28774
  types: [
@@ -28186,6 +28886,7 @@ var patterns_registry_default = {
28186
28886
  },
28187
28887
  icon: {
28188
28888
  types: [
28889
+ "icon",
28189
28890
  "string"
28190
28891
  ]
28191
28892
  },
@@ -28537,7 +29238,8 @@ var patterns_registry_default = {
28537
29238
  },
28538
29239
  icon: {
28539
29240
  types: [
28540
- "node"
29241
+ "icon",
29242
+ "string"
28541
29243
  ]
28542
29244
  }
28543
29245
  },
@@ -28769,7 +29471,8 @@ var patterns_registry_default = {
28769
29471
  properties: {
28770
29472
  icon: {
28771
29473
  types: [
28772
- "node"
29474
+ "icon",
29475
+ "string"
28773
29476
  ]
28774
29477
  },
28775
29478
  label: {
@@ -28851,7 +29554,8 @@ var patterns_registry_default = {
28851
29554
  },
28852
29555
  icon: {
28853
29556
  types: [
28854
- "node"
29557
+ "icon",
29558
+ "string"
28855
29559
  ]
28856
29560
  },
28857
29561
  label: {
@@ -29305,269 +30009,269 @@ var patterns_registry_default = {
29305
30009
  "number"
29306
30010
  ]
29307
30011
  },
29308
- terrain: {
29309
- types: [
29310
- "string"
29311
- ]
29312
- },
29313
- type: {
29314
- types: [
29315
- "string"
29316
- ]
29317
- },
29318
- terrainSprite: {
29319
- types: [
29320
- "string"
29321
- ]
29322
- },
29323
- passable: {
29324
- types: [
29325
- "boolean"
29326
- ]
29327
- },
29328
- movementCost: {
29329
- types: [
29330
- "number"
29331
- ]
29332
- },
29333
- tileType: {
29334
- types: [
29335
- "string"
29336
- ]
29337
- },
29338
- elevation: {
29339
- types: [
29340
- "number"
29341
- ]
29342
- }
29343
- },
29344
- required: [
29345
- "x",
29346
- "y"
29347
- ]
29348
- }
29349
- },
29350
- units: {
29351
- types: [
29352
- "array"
29353
- ],
29354
- description: "Array of units on the board",
29355
- items: {
29356
- types: [
29357
- "object"
29358
- ],
29359
- properties: {
29360
- id: {
29361
- types: [
29362
- "string"
29363
- ]
29364
- },
29365
- position: {
29366
- types: [
29367
- "object"
29368
- ],
29369
- properties: {
29370
- x: {
29371
- types: [
29372
- "number"
29373
- ]
29374
- },
29375
- y: {
29376
- types: [
29377
- "number"
29378
- ]
29379
- }
29380
- },
29381
- required: [
29382
- "x",
29383
- "y"
29384
- ]
29385
- },
29386
- x: {
29387
- types: [
29388
- "number"
29389
- ]
29390
- },
29391
- y: {
29392
- types: [
29393
- "number"
29394
- ]
29395
- },
29396
- z: {
29397
- types: [
29398
- "number"
29399
- ]
29400
- },
29401
- sprite: {
29402
- types: [
29403
- "string"
29404
- ]
29405
- },
29406
- unitType: {
29407
- types: [
29408
- "string"
29409
- ]
29410
- },
29411
- heroId: {
29412
- types: [
29413
- "string"
29414
- ]
29415
- },
29416
- name: {
29417
- types: [
29418
- "string"
29419
- ]
29420
- },
29421
- team: {
29422
- types: [
29423
- "string"
29424
- ],
29425
- enumValues: [
29426
- "player",
29427
- "enemy",
29428
- "neutral"
29429
- ]
29430
- },
29431
- faction: {
29432
- types: [
29433
- "string"
29434
- ],
29435
- enumValues: [
29436
- "player",
29437
- "enemy",
29438
- "neutral"
29439
- ]
29440
- },
29441
- health: {
29442
- types: [
29443
- "number"
29444
- ]
29445
- },
29446
- maxHealth: {
29447
- types: [
29448
- "number"
29449
- ]
29450
- },
29451
- traits: {
29452
- types: [
29453
- "array"
29454
- ],
29455
- items: {
29456
- types: [
29457
- "object"
29458
- ],
29459
- properties: {
29460
- name: {
29461
- types: [
29462
- "string"
29463
- ]
29464
- },
29465
- currentState: {
29466
- types: [
29467
- "string"
29468
- ]
29469
- },
29470
- states: {
29471
- types: [
29472
- "array"
29473
- ],
29474
- items: {
29475
- types: [
29476
- "string"
29477
- ]
29478
- }
29479
- },
29480
- cooldown: {
29481
- types: [
29482
- "number"
29483
- ]
29484
- }
29485
- },
29486
- required: [
29487
- "name",
29488
- "currentState",
29489
- "states",
29490
- "cooldown"
29491
- ]
29492
- }
29493
- },
29494
- previousPosition: {
29495
- types: [
29496
- "object"
29497
- ],
29498
- properties: {
29499
- x: {
29500
- types: [
29501
- "number"
29502
- ]
29503
- },
29504
- y: {
29505
- types: [
29506
- "number"
29507
- ]
29508
- }
29509
- },
29510
- required: [
29511
- "x",
29512
- "y"
29513
- ]
29514
- },
29515
- elevation: {
29516
- types: [
29517
- "number"
29518
- ]
29519
- }
29520
- },
29521
- required: [
29522
- "id"
29523
- ]
29524
- }
29525
- },
29526
- features: {
29527
- types: [
29528
- "array"
29529
- ],
29530
- description: "Array of features (resources, portals, buildings, etc.)",
29531
- items: {
29532
- types: [
29533
- "object"
29534
- ],
29535
- properties: {
29536
- id: {
29537
- types: [
29538
- "string"
29539
- ]
29540
- },
29541
- x: {
29542
- types: [
29543
- "number"
29544
- ]
29545
- },
29546
- y: {
29547
- types: [
29548
- "number"
29549
- ]
29550
- },
29551
- z: {
29552
- types: [
29553
- "number"
29554
- ]
29555
- },
30012
+ terrain: {
30013
+ types: [
30014
+ "string"
30015
+ ]
30016
+ },
29556
30017
  type: {
29557
30018
  types: [
29558
30019
  "string"
29559
30020
  ]
29560
30021
  },
30022
+ terrainSprite: {
30023
+ types: [
30024
+ "asset"
30025
+ ]
30026
+ },
30027
+ passable: {
30028
+ types: [
30029
+ "boolean"
30030
+ ]
30031
+ },
30032
+ movementCost: {
30033
+ types: [
30034
+ "number"
30035
+ ]
30036
+ },
30037
+ tileType: {
30038
+ types: [
30039
+ "string"
30040
+ ]
30041
+ },
30042
+ elevation: {
30043
+ types: [
30044
+ "number"
30045
+ ]
30046
+ }
30047
+ },
30048
+ required: [
30049
+ "x",
30050
+ "y"
30051
+ ]
30052
+ }
30053
+ },
30054
+ units: {
30055
+ types: [
30056
+ "array"
30057
+ ],
30058
+ description: "Array of units on the board",
30059
+ items: {
30060
+ types: [
30061
+ "object"
30062
+ ],
30063
+ properties: {
30064
+ id: {
30065
+ types: [
30066
+ "string"
30067
+ ]
30068
+ },
30069
+ position: {
30070
+ types: [
30071
+ "object"
30072
+ ],
30073
+ properties: {
30074
+ x: {
30075
+ types: [
30076
+ "number"
30077
+ ]
30078
+ },
30079
+ y: {
30080
+ types: [
30081
+ "number"
30082
+ ]
30083
+ }
30084
+ },
30085
+ required: [
30086
+ "x",
30087
+ "y"
30088
+ ]
30089
+ },
30090
+ x: {
30091
+ types: [
30092
+ "number"
30093
+ ]
30094
+ },
30095
+ y: {
30096
+ types: [
30097
+ "number"
30098
+ ]
30099
+ },
30100
+ z: {
30101
+ types: [
30102
+ "number"
30103
+ ]
30104
+ },
29561
30105
  sprite: {
30106
+ types: [
30107
+ "asset"
30108
+ ]
30109
+ },
30110
+ unitType: {
29562
30111
  types: [
29563
30112
  "string"
29564
30113
  ]
29565
30114
  },
29566
- assetUrl: {
30115
+ heroId: {
30116
+ types: [
30117
+ "string"
30118
+ ]
30119
+ },
30120
+ name: {
30121
+ types: [
30122
+ "string"
30123
+ ]
30124
+ },
30125
+ team: {
30126
+ types: [
30127
+ "string"
30128
+ ],
30129
+ enumValues: [
30130
+ "player",
30131
+ "enemy",
30132
+ "neutral"
30133
+ ]
30134
+ },
30135
+ faction: {
30136
+ types: [
30137
+ "string"
30138
+ ],
30139
+ enumValues: [
30140
+ "player",
30141
+ "enemy",
30142
+ "neutral"
30143
+ ]
30144
+ },
30145
+ health: {
30146
+ types: [
30147
+ "number"
30148
+ ]
30149
+ },
30150
+ maxHealth: {
30151
+ types: [
30152
+ "number"
30153
+ ]
30154
+ },
30155
+ traits: {
30156
+ types: [
30157
+ "array"
30158
+ ],
30159
+ items: {
30160
+ types: [
30161
+ "object"
30162
+ ],
30163
+ properties: {
30164
+ name: {
30165
+ types: [
30166
+ "string"
30167
+ ]
30168
+ },
30169
+ currentState: {
30170
+ types: [
30171
+ "string"
30172
+ ]
30173
+ },
30174
+ states: {
30175
+ types: [
30176
+ "array"
30177
+ ],
30178
+ items: {
30179
+ types: [
30180
+ "string"
30181
+ ]
30182
+ }
30183
+ },
30184
+ cooldown: {
30185
+ types: [
30186
+ "number"
30187
+ ]
30188
+ }
30189
+ },
30190
+ required: [
30191
+ "name",
30192
+ "currentState",
30193
+ "states",
30194
+ "cooldown"
30195
+ ]
30196
+ }
30197
+ },
30198
+ previousPosition: {
30199
+ types: [
30200
+ "object"
30201
+ ],
30202
+ properties: {
30203
+ x: {
30204
+ types: [
30205
+ "number"
30206
+ ]
30207
+ },
30208
+ y: {
30209
+ types: [
30210
+ "number"
30211
+ ]
30212
+ }
30213
+ },
30214
+ required: [
30215
+ "x",
30216
+ "y"
30217
+ ]
30218
+ },
30219
+ elevation: {
30220
+ types: [
30221
+ "number"
30222
+ ]
30223
+ }
30224
+ },
30225
+ required: [
30226
+ "id"
30227
+ ]
30228
+ }
30229
+ },
30230
+ features: {
30231
+ types: [
30232
+ "array"
30233
+ ],
30234
+ description: "Array of features (resources, portals, buildings, etc.)",
30235
+ items: {
30236
+ types: [
30237
+ "object"
30238
+ ],
30239
+ properties: {
30240
+ id: {
29567
30241
  types: [
29568
30242
  "string"
29569
30243
  ]
29570
30244
  },
30245
+ x: {
30246
+ types: [
30247
+ "number"
30248
+ ]
30249
+ },
30250
+ y: {
30251
+ types: [
30252
+ "number"
30253
+ ]
30254
+ },
30255
+ z: {
30256
+ types: [
30257
+ "number"
30258
+ ]
30259
+ },
30260
+ type: {
30261
+ types: [
30262
+ "string"
30263
+ ]
30264
+ },
30265
+ sprite: {
30266
+ types: [
30267
+ "asset"
30268
+ ]
30269
+ },
30270
+ assetUrl: {
30271
+ types: [
30272
+ "asset"
30273
+ ]
30274
+ },
29571
30275
  color: {
29572
30276
  types: [
29573
30277
  "string"
@@ -29803,9 +30507,10 @@ var patterns_registry_default = {
29803
30507
  },
29804
30508
  backgroundImage: {
29805
30509
  types: [
29806
- "string"
30510
+ "asset"
29807
30511
  ],
29808
- description: "Background image URL tiled behind the isometric grid"
30512
+ description: "Background image URL tiled behind the isometric grid",
30513
+ default: "https://almadar-kflow-assets.web.app/shared/scenes/court.png"
29809
30514
  },
29810
30515
  showMinimap: {
29811
30516
  types: [
@@ -29932,7 +30637,7 @@ var patterns_registry_default = {
29932
30637
  },
29933
30638
  sprite: {
29934
30639
  types: [
29935
- "string"
30640
+ "asset"
29936
30641
  ]
29937
30642
  },
29938
30643
  unitType: {
@@ -30079,7 +30784,7 @@ var patterns_registry_default = {
30079
30784
  description: "Additional sprite URLs to preload (e.g., effect sprites)",
30080
30785
  items: {
30081
30786
  types: [
30082
- "string"
30787
+ "asset"
30083
30788
  ]
30084
30789
  },
30085
30790
  default: []
@@ -30115,9 +30820,10 @@ var patterns_registry_default = {
30115
30820
  },
30116
30821
  assetBaseUrl: {
30117
30822
  types: [
30118
- "string"
30823
+ "asset"
30119
30824
  ],
30120
- description: "--- Remote asset loading ---"
30825
+ description: "--- Remote asset loading ---",
30826
+ default: "https://almadar-kflow-assets.web.app/shared/"
30121
30827
  },
30122
30828
  assetManifest: {
30123
30829
  types: [
@@ -30328,9 +31034,10 @@ var patterns_registry_default = {
30328
31034
  },
30329
31035
  playerSprite: {
30330
31036
  types: [
30331
- "string"
31037
+ "asset"
30332
31038
  ],
30333
- description: "Player sprite image URL"
31039
+ description: "Player sprite image URL",
31040
+ default: "https://almadar-kflow-assets.web.app/shared/platformer/characters/platformChar_idle.png"
30334
31041
  },
30335
31042
  tileSprites: {
30336
31043
  types: [
@@ -30339,22 +31046,23 @@ var patterns_registry_default = {
30339
31046
  description: "Map of platform type to tile sprite URL",
30340
31047
  mapValue: {
30341
31048
  types: [
30342
- "string"
31049
+ "asset"
30343
31050
  ]
30344
31051
  }
30345
31052
  },
30346
31053
  backgroundImage: {
30347
31054
  types: [
30348
- "string"
31055
+ "asset"
30349
31056
  ],
30350
- description: "Background image URL"
31057
+ description: "Background image URL",
31058
+ default: "https://almadar-kflow-assets.web.app/shared/scenes/court.png"
30351
31059
  },
30352
31060
  assetBaseUrl: {
30353
31061
  types: [
30354
- "string"
31062
+ "asset"
30355
31063
  ],
30356
31064
  description: "Base URL prefix for asset URLs",
30357
- default: ""
31065
+ default: "https://almadar-kflow-assets.web.app/shared/platformer/"
30358
31066
  },
30359
31067
  leftEvent: {
30360
31068
  types: [
@@ -30443,7 +31151,8 @@ var patterns_registry_default = {
30443
31151
  },
30444
31152
  icon: {
30445
31153
  types: [
30446
- "node"
31154
+ "icon",
31155
+ "string"
30447
31156
  ]
30448
31157
  },
30449
31158
  label: {
@@ -30581,7 +31290,8 @@ var patterns_registry_default = {
30581
31290
  properties: {
30582
31291
  icon: {
30583
31292
  types: [
30584
- "node"
31293
+ "icon",
31294
+ "string"
30585
31295
  ]
30586
31296
  },
30587
31297
  label: {
@@ -30738,7 +31448,8 @@ var patterns_registry_default = {
30738
31448
  },
30739
31449
  icon: {
30740
31450
  types: [
30741
- "node"
31451
+ "icon",
31452
+ "string"
30742
31453
  ],
30743
31454
  description: "Icon component or emoji"
30744
31455
  },
@@ -30831,7 +31542,8 @@ var patterns_registry_default = {
30831
31542
  },
30832
31543
  icon: {
30833
31544
  types: [
30834
- "node"
31545
+ "icon",
31546
+ "string"
30835
31547
  ]
30836
31548
  },
30837
31549
  event: {
@@ -30890,7 +31602,8 @@ var patterns_registry_default = {
30890
31602
  },
30891
31603
  icon: {
30892
31604
  types: [
30893
- "node"
31605
+ "icon",
31606
+ "string"
30894
31607
  ]
30895
31608
  },
30896
31609
  event: {
@@ -31017,7 +31730,7 @@ var patterns_registry_default = {
31017
31730
  },
31018
31731
  coverImageUrl: {
31019
31732
  types: [
31020
- "string"
31733
+ "asset"
31021
31734
  ],
31022
31735
  description: "coverImageUrl prop"
31023
31736
  },
@@ -31471,6 +32184,370 @@ var patterns_registry_default = {
31471
32184
  kind: "entity",
31472
32185
  cardinality: "collection"
31473
32186
  },
32187
+ tiles: {
32188
+ types: [
32189
+ "array"
32190
+ ],
32191
+ description: "Direct tile data \u2014 takes priority over entity-derived tiles.",
32192
+ items: {
32193
+ types: [
32194
+ "object"
32195
+ ],
32196
+ properties: {
32197
+ id: {
32198
+ types: [
32199
+ "string"
32200
+ ]
32201
+ },
32202
+ x: {
32203
+ types: [
32204
+ "number"
32205
+ ]
32206
+ },
32207
+ y: {
32208
+ types: [
32209
+ "number"
32210
+ ]
32211
+ },
32212
+ z: {
32213
+ types: [
32214
+ "number"
32215
+ ]
32216
+ },
32217
+ terrain: {
32218
+ types: [
32219
+ "string"
32220
+ ]
32221
+ },
32222
+ type: {
32223
+ types: [
32224
+ "string"
32225
+ ]
32226
+ },
32227
+ terrainSprite: {
32228
+ types: [
32229
+ "asset"
32230
+ ]
32231
+ },
32232
+ passable: {
32233
+ types: [
32234
+ "boolean"
32235
+ ]
32236
+ },
32237
+ movementCost: {
32238
+ types: [
32239
+ "number"
32240
+ ]
32241
+ },
32242
+ tileType: {
32243
+ types: [
32244
+ "string"
32245
+ ]
32246
+ },
32247
+ elevation: {
32248
+ types: [
32249
+ "number"
32250
+ ]
32251
+ }
32252
+ },
32253
+ required: [
32254
+ "x",
32255
+ "y"
32256
+ ]
32257
+ }
32258
+ },
32259
+ units: {
32260
+ types: [
32261
+ "array"
32262
+ ],
32263
+ description: "Direct unit data \u2014 takes priority over entity-derived units.",
32264
+ items: {
32265
+ types: [
32266
+ "object"
32267
+ ],
32268
+ properties: {
32269
+ id: {
32270
+ types: [
32271
+ "string"
32272
+ ]
32273
+ },
32274
+ position: {
32275
+ types: [
32276
+ "object"
32277
+ ],
32278
+ properties: {
32279
+ x: {
32280
+ types: [
32281
+ "number"
32282
+ ]
32283
+ },
32284
+ y: {
32285
+ types: [
32286
+ "number"
32287
+ ]
32288
+ }
32289
+ },
32290
+ required: [
32291
+ "x",
32292
+ "y"
32293
+ ]
32294
+ },
32295
+ x: {
32296
+ types: [
32297
+ "number"
32298
+ ]
32299
+ },
32300
+ y: {
32301
+ types: [
32302
+ "number"
32303
+ ]
32304
+ },
32305
+ z: {
32306
+ types: [
32307
+ "number"
32308
+ ]
32309
+ },
32310
+ sprite: {
32311
+ types: [
32312
+ "asset"
32313
+ ]
32314
+ },
32315
+ unitType: {
32316
+ types: [
32317
+ "string"
32318
+ ]
32319
+ },
32320
+ heroId: {
32321
+ types: [
32322
+ "string"
32323
+ ]
32324
+ },
32325
+ name: {
32326
+ types: [
32327
+ "string"
32328
+ ]
32329
+ },
32330
+ team: {
32331
+ types: [
32332
+ "string"
32333
+ ],
32334
+ enumValues: [
32335
+ "player",
32336
+ "enemy",
32337
+ "neutral"
32338
+ ]
32339
+ },
32340
+ faction: {
32341
+ types: [
32342
+ "string"
32343
+ ],
32344
+ enumValues: [
32345
+ "player",
32346
+ "enemy",
32347
+ "neutral"
32348
+ ]
32349
+ },
32350
+ health: {
32351
+ types: [
32352
+ "number"
32353
+ ]
32354
+ },
32355
+ maxHealth: {
32356
+ types: [
32357
+ "number"
32358
+ ]
32359
+ },
32360
+ traits: {
32361
+ types: [
32362
+ "array"
32363
+ ],
32364
+ items: {
32365
+ types: [
32366
+ "object"
32367
+ ],
32368
+ properties: {
32369
+ name: {
32370
+ types: [
32371
+ "string"
32372
+ ]
32373
+ },
32374
+ currentState: {
32375
+ types: [
32376
+ "string"
32377
+ ]
32378
+ },
32379
+ states: {
32380
+ types: [
32381
+ "array"
32382
+ ],
32383
+ items: {
32384
+ types: [
32385
+ "string"
32386
+ ]
32387
+ }
32388
+ },
32389
+ cooldown: {
32390
+ types: [
32391
+ "number"
32392
+ ]
32393
+ }
32394
+ },
32395
+ required: [
32396
+ "name",
32397
+ "currentState",
32398
+ "states",
32399
+ "cooldown"
32400
+ ]
32401
+ }
32402
+ },
32403
+ previousPosition: {
32404
+ types: [
32405
+ "object"
32406
+ ],
32407
+ properties: {
32408
+ x: {
32409
+ types: [
32410
+ "number"
32411
+ ]
32412
+ },
32413
+ y: {
32414
+ types: [
32415
+ "number"
32416
+ ]
32417
+ }
32418
+ },
32419
+ required: [
32420
+ "x",
32421
+ "y"
32422
+ ]
32423
+ },
32424
+ elevation: {
32425
+ types: [
32426
+ "number"
32427
+ ]
32428
+ }
32429
+ },
32430
+ required: [
32431
+ "id"
32432
+ ]
32433
+ }
32434
+ },
32435
+ features: {
32436
+ types: [
32437
+ "array"
32438
+ ],
32439
+ description: "Direct feature data \u2014 takes priority over entity-derived features.",
32440
+ items: {
32441
+ types: [
32442
+ "object"
32443
+ ],
32444
+ properties: {
32445
+ id: {
32446
+ types: [
32447
+ "string"
32448
+ ]
32449
+ },
32450
+ x: {
32451
+ types: [
32452
+ "number"
32453
+ ]
32454
+ },
32455
+ y: {
32456
+ types: [
32457
+ "number"
32458
+ ]
32459
+ },
32460
+ z: {
32461
+ types: [
32462
+ "number"
32463
+ ]
32464
+ },
32465
+ type: {
32466
+ types: [
32467
+ "string"
32468
+ ]
32469
+ },
32470
+ sprite: {
32471
+ types: [
32472
+ "asset"
32473
+ ]
32474
+ },
32475
+ assetUrl: {
32476
+ types: [
32477
+ "asset"
32478
+ ]
32479
+ },
32480
+ color: {
32481
+ types: [
32482
+ "string"
32483
+ ]
32484
+ },
32485
+ elevation: {
32486
+ types: [
32487
+ "number"
32488
+ ]
32489
+ }
32490
+ },
32491
+ required: [
32492
+ "x",
32493
+ "y",
32494
+ "type"
32495
+ ]
32496
+ }
32497
+ },
32498
+ assetManifest: {
32499
+ types: [
32500
+ "object"
32501
+ ],
32502
+ description: "Direct asset manifest \u2014 takes priority over entity-derived manifest.",
32503
+ properties: {
32504
+ baseUrl: {
32505
+ types: [
32506
+ "asset"
32507
+ ]
32508
+ },
32509
+ terrains: {
32510
+ types: [
32511
+ "object"
32512
+ ],
32513
+ mapValue: {
32514
+ types: [
32515
+ "asset"
32516
+ ]
32517
+ }
32518
+ },
32519
+ units: {
32520
+ types: [
32521
+ "object"
32522
+ ],
32523
+ mapValue: {
32524
+ types: [
32525
+ "asset"
32526
+ ]
32527
+ }
32528
+ },
32529
+ features: {
32530
+ types: [
32531
+ "object"
32532
+ ],
32533
+ mapValue: {
32534
+ types: [
32535
+ "asset"
32536
+ ]
32537
+ }
32538
+ },
32539
+ effects: {
32540
+ types: [
32541
+ "object"
32542
+ ],
32543
+ mapValue: {
32544
+ types: [
32545
+ "asset"
32546
+ ]
32547
+ }
32548
+ }
32549
+ }
32550
+ },
31474
32551
  scale: {
31475
32552
  types: [
31476
32553
  "number"
@@ -32257,7 +33334,7 @@ var patterns_registry_default = {
32257
33334
  description: "effectSpriteUrls prop",
32258
33335
  items: {
32259
33336
  types: [
32260
- "string"
33337
+ "asset"
32261
33338
  ]
32262
33339
  },
32263
33340
  default: []
@@ -32496,15 +33573,17 @@ var patterns_registry_default = {
32496
33573
  },
32497
33574
  effectSpriteUrl: {
32498
33575
  types: [
32499
- "string"
33576
+ "asset"
32500
33577
  ],
32501
- description: "--- Remote asset loading ---"
33578
+ description: "--- Remote asset loading ---",
33579
+ default: "https://almadar-kflow-assets.web.app/shared/effects/gas/gas00.png"
32502
33580
  },
32503
33581
  assetBaseUrl: {
32504
33582
  types: [
32505
- "string"
33583
+ "asset"
32506
33584
  ],
32507
- description: "Base URL for remote assets. Prepended to relative effectSpriteUrl paths."
33585
+ description: "Base URL for remote assets. Prepended to relative effectSpriteUrl paths.",
33586
+ default: "https://almadar-kflow-assets.web.app/shared/effects/"
32508
33587
  },
32509
33588
  assetManifest: {
32510
33589
  types: [
@@ -32514,7 +33593,7 @@ var patterns_registry_default = {
32514
33593
  properties: {
32515
33594
  baseUrl: {
32516
33595
  types: [
32517
- "string"
33596
+ "asset"
32518
33597
  ]
32519
33598
  },
32520
33599
  particles: {
@@ -32799,6 +33878,360 @@ var patterns_registry_default = {
32799
33878
  kind: "entity",
32800
33879
  cardinality: "collection"
32801
33880
  },
33881
+ tiles: {
33882
+ types: [
33883
+ "array"
33884
+ ],
33885
+ description: "Direct tile data \u2014 takes priority over entity-derived tiles.",
33886
+ items: {
33887
+ types: [
33888
+ "object"
33889
+ ],
33890
+ properties: {
33891
+ id: {
33892
+ types: [
33893
+ "string"
33894
+ ]
33895
+ },
33896
+ x: {
33897
+ types: [
33898
+ "number"
33899
+ ]
33900
+ },
33901
+ y: {
33902
+ types: [
33903
+ "number"
33904
+ ]
33905
+ },
33906
+ z: {
33907
+ types: [
33908
+ "number"
33909
+ ]
33910
+ },
33911
+ terrain: {
33912
+ types: [
33913
+ "string"
33914
+ ]
33915
+ },
33916
+ type: {
33917
+ types: [
33918
+ "string"
33919
+ ]
33920
+ },
33921
+ terrainSprite: {
33922
+ types: [
33923
+ "asset"
33924
+ ]
33925
+ },
33926
+ passable: {
33927
+ types: [
33928
+ "boolean"
33929
+ ]
33930
+ },
33931
+ movementCost: {
33932
+ types: [
33933
+ "number"
33934
+ ]
33935
+ },
33936
+ tileType: {
33937
+ types: [
33938
+ "string"
33939
+ ]
33940
+ },
33941
+ elevation: {
33942
+ types: [
33943
+ "number"
33944
+ ]
33945
+ }
33946
+ },
33947
+ required: [
33948
+ "x",
33949
+ "y"
33950
+ ]
33951
+ }
33952
+ },
33953
+ units: {
33954
+ types: [
33955
+ "array"
33956
+ ],
33957
+ description: "Direct unit data \u2014 takes priority over entity-derived units.",
33958
+ items: {
33959
+ types: [
33960
+ "object"
33961
+ ],
33962
+ properties: {
33963
+ id: {
33964
+ types: [
33965
+ "string"
33966
+ ]
33967
+ },
33968
+ position: {
33969
+ types: [
33970
+ "object"
33971
+ ],
33972
+ properties: {
33973
+ x: {
33974
+ types: [
33975
+ "number"
33976
+ ]
33977
+ },
33978
+ y: {
33979
+ types: [
33980
+ "number"
33981
+ ]
33982
+ }
33983
+ },
33984
+ required: [
33985
+ "x",
33986
+ "y"
33987
+ ]
33988
+ },
33989
+ x: {
33990
+ types: [
33991
+ "number"
33992
+ ]
33993
+ },
33994
+ y: {
33995
+ types: [
33996
+ "number"
33997
+ ]
33998
+ },
33999
+ z: {
34000
+ types: [
34001
+ "number"
34002
+ ]
34003
+ },
34004
+ sprite: {
34005
+ types: [
34006
+ "asset"
34007
+ ]
34008
+ },
34009
+ unitType: {
34010
+ types: [
34011
+ "string"
34012
+ ]
34013
+ },
34014
+ heroId: {
34015
+ types: [
34016
+ "string"
34017
+ ]
34018
+ },
34019
+ name: {
34020
+ types: [
34021
+ "string"
34022
+ ]
34023
+ },
34024
+ team: {
34025
+ types: [
34026
+ "string"
34027
+ ],
34028
+ enumValues: [
34029
+ "player",
34030
+ "enemy",
34031
+ "neutral"
34032
+ ]
34033
+ },
34034
+ faction: {
34035
+ types: [
34036
+ "string"
34037
+ ],
34038
+ enumValues: [
34039
+ "player",
34040
+ "enemy",
34041
+ "neutral"
34042
+ ]
34043
+ },
34044
+ health: {
34045
+ types: [
34046
+ "number"
34047
+ ]
34048
+ },
34049
+ maxHealth: {
34050
+ types: [
34051
+ "number"
34052
+ ]
34053
+ },
34054
+ traits: {
34055
+ types: [
34056
+ "array"
34057
+ ],
34058
+ items: {
34059
+ types: [
34060
+ "object"
34061
+ ],
34062
+ properties: {
34063
+ name: {
34064
+ types: [
34065
+ "string"
34066
+ ]
34067
+ },
34068
+ currentState: {
34069
+ types: [
34070
+ "string"
34071
+ ]
34072
+ },
34073
+ states: {
34074
+ types: [
34075
+ "array"
34076
+ ],
34077
+ items: {
34078
+ types: [
34079
+ "string"
34080
+ ]
34081
+ }
34082
+ },
34083
+ cooldown: {
34084
+ types: [
34085
+ "number"
34086
+ ]
34087
+ }
34088
+ },
34089
+ required: [
34090
+ "name",
34091
+ "currentState",
34092
+ "states",
34093
+ "cooldown"
34094
+ ]
34095
+ }
34096
+ },
34097
+ previousPosition: {
34098
+ types: [
34099
+ "object"
34100
+ ],
34101
+ properties: {
34102
+ x: {
34103
+ types: [
34104
+ "number"
34105
+ ]
34106
+ },
34107
+ y: {
34108
+ types: [
34109
+ "number"
34110
+ ]
34111
+ }
34112
+ },
34113
+ required: [
34114
+ "x",
34115
+ "y"
34116
+ ]
34117
+ },
34118
+ elevation: {
34119
+ types: [
34120
+ "number"
34121
+ ]
34122
+ }
34123
+ },
34124
+ required: [
34125
+ "id"
34126
+ ]
34127
+ }
34128
+ },
34129
+ features: {
34130
+ types: [
34131
+ "array"
34132
+ ],
34133
+ description: "Direct feature data \u2014 takes priority over entity-derived features.",
34134
+ items: {
34135
+ types: [
34136
+ "object"
34137
+ ],
34138
+ properties: {
34139
+ id: {
34140
+ types: [
34141
+ "string"
34142
+ ]
34143
+ },
34144
+ x: {
34145
+ types: [
34146
+ "number"
34147
+ ]
34148
+ },
34149
+ y: {
34150
+ types: [
34151
+ "number"
34152
+ ]
34153
+ },
34154
+ z: {
34155
+ types: [
34156
+ "number"
34157
+ ]
34158
+ },
34159
+ type: {
34160
+ types: [
34161
+ "string"
34162
+ ]
34163
+ },
34164
+ sprite: {
34165
+ types: [
34166
+ "asset"
34167
+ ]
34168
+ },
34169
+ assetUrl: {
34170
+ types: [
34171
+ "asset"
34172
+ ]
34173
+ },
34174
+ color: {
34175
+ types: [
34176
+ "string"
34177
+ ]
34178
+ },
34179
+ elevation: {
34180
+ types: [
34181
+ "number"
34182
+ ]
34183
+ }
34184
+ },
34185
+ required: [
34186
+ "x",
34187
+ "y",
34188
+ "type"
34189
+ ]
34190
+ }
34191
+ },
34192
+ assetManifest: {
34193
+ types: [
34194
+ "object"
34195
+ ],
34196
+ description: "Direct asset manifest \u2014 takes priority over entity-derived manifest.",
34197
+ properties: {
34198
+ baseUrl: {
34199
+ types: [
34200
+ "asset"
34201
+ ]
34202
+ },
34203
+ terrains: {
34204
+ types: [
34205
+ "object"
34206
+ ],
34207
+ mapValue: {
34208
+ types: [
34209
+ "asset"
34210
+ ]
34211
+ }
34212
+ },
34213
+ units: {
34214
+ types: [
34215
+ "object"
34216
+ ],
34217
+ mapValue: {
34218
+ types: [
34219
+ "asset"
34220
+ ]
34221
+ }
34222
+ },
34223
+ features: {
34224
+ types: [
34225
+ "object"
34226
+ ],
34227
+ mapValue: {
34228
+ types: [
34229
+ "asset"
34230
+ ]
34231
+ }
34232
+ }
34233
+ }
34234
+ },
32802
34235
  scale: {
32803
34236
  types: [
32804
34237
  "number"
@@ -32874,12 +34307,12 @@ var patterns_registry_default = {
32874
34307
  },
32875
34308
  sprite: {
32876
34309
  types: [
32877
- "string"
34310
+ "asset"
32878
34311
  ]
32879
34312
  },
32880
34313
  assetUrl: {
32881
34314
  types: [
32882
- "string"
34315
+ "asset"
32883
34316
  ]
32884
34317
  },
32885
34318
  color: {
@@ -32947,7 +34380,7 @@ var patterns_registry_default = {
32947
34380
  },
32948
34381
  sprite: {
32949
34382
  types: [
32950
- "string"
34383
+ "asset"
32951
34384
  ]
32952
34385
  },
32953
34386
  unitType: {
@@ -33101,12 +34534,12 @@ var patterns_registry_default = {
33101
34534
  },
33102
34535
  sprite: {
33103
34536
  types: [
33104
- "string"
34537
+ "asset"
33105
34538
  ]
33106
34539
  },
33107
34540
  assetUrl: {
33108
34541
  types: [
33109
- "string"
34542
+ "asset"
33110
34543
  ]
33111
34544
  },
33112
34545
  color: {
@@ -33224,12 +34657,12 @@ var patterns_registry_default = {
33224
34657
  },
33225
34658
  sprite: {
33226
34659
  types: [
33227
- "string"
34660
+ "asset"
33228
34661
  ]
33229
34662
  },
33230
34663
  assetUrl: {
33231
34664
  types: [
33232
- "string"
34665
+ "asset"
33233
34666
  ]
33234
34667
  },
33235
34668
  color: {
@@ -33297,7 +34730,7 @@ var patterns_registry_default = {
33297
34730
  },
33298
34731
  sprite: {
33299
34732
  types: [
33300
- "string"
34733
+ "asset"
33301
34734
  ]
33302
34735
  },
33303
34736
  unitType: {
@@ -33451,12 +34884,12 @@ var patterns_registry_default = {
33451
34884
  },
33452
34885
  sprite: {
33453
34886
  types: [
33454
- "string"
34887
+ "asset"
33455
34888
  ]
33456
34889
  },
33457
34890
  assetUrl: {
33458
34891
  types: [
33459
- "string"
34892
+ "asset"
33460
34893
  ]
33461
34894
  },
33462
34895
  color: {
@@ -33574,12 +35007,12 @@ var patterns_registry_default = {
33574
35007
  },
33575
35008
  sprite: {
33576
35009
  types: [
33577
- "string"
35010
+ "asset"
33578
35011
  ]
33579
35012
  },
33580
35013
  assetUrl: {
33581
35014
  types: [
33582
- "string"
35015
+ "asset"
33583
35016
  ]
33584
35017
  },
33585
35018
  color: {
@@ -33647,357 +35080,7 @@ var patterns_registry_default = {
33647
35080
  },
33648
35081
  sprite: {
33649
35082
  types: [
33650
- "string"
33651
- ]
33652
- },
33653
- unitType: {
33654
- types: [
33655
- "string"
33656
- ]
33657
- },
33658
- heroId: {
33659
- types: [
33660
- "string"
33661
- ]
33662
- },
33663
- name: {
33664
- types: [
33665
- "string"
33666
- ]
33667
- },
33668
- team: {
33669
- types: [
33670
- "string"
33671
- ],
33672
- enumValues: [
33673
- "player",
33674
- "enemy",
33675
- "neutral"
33676
- ]
33677
- },
33678
- faction: {
33679
- types: [
33680
- "string"
33681
- ],
33682
- enumValues: [
33683
- "player",
33684
- "enemy",
33685
- "neutral"
33686
- ]
33687
- },
33688
- health: {
33689
- types: [
33690
- "number"
33691
- ]
33692
- },
33693
- maxHealth: {
33694
- types: [
33695
- "number"
33696
- ]
33697
- },
33698
- traits: {
33699
- types: [
33700
- "array"
33701
- ],
33702
- items: {
33703
- types: [
33704
- "object"
33705
- ],
33706
- properties: {
33707
- name: {
33708
- types: [
33709
- "string"
33710
- ]
33711
- },
33712
- currentState: {
33713
- types: [
33714
- "string"
33715
- ]
33716
- },
33717
- states: {
33718
- types: [
33719
- "array"
33720
- ],
33721
- items: {
33722
- types: [
33723
- "string"
33724
- ]
33725
- }
33726
- },
33727
- cooldown: {
33728
- types: [
33729
- "number"
33730
- ]
33731
- }
33732
- },
33733
- required: [
33734
- "name",
33735
- "currentState",
33736
- "states",
33737
- "cooldown"
33738
- ]
33739
- }
33740
- },
33741
- previousPosition: {
33742
- types: [
33743
- "object"
33744
- ],
33745
- properties: {
33746
- x: {
33747
- types: [
33748
- "number"
33749
- ]
33750
- },
33751
- y: {
33752
- types: [
33753
- "number"
33754
- ]
33755
- }
33756
- },
33757
- required: [
33758
- "x",
33759
- "y"
33760
- ]
33761
- },
33762
- elevation: {
33763
- types: [
33764
- "number"
33765
- ]
33766
- }
33767
- },
33768
- required: [
33769
- "id"
33770
- ]
33771
- },
33772
- selectedFeature: {
33773
- types: [
33774
- "object"
33775
- ],
33776
- properties: {
33777
- id: {
33778
- types: [
33779
- "string"
33780
- ]
33781
- },
33782
- x: {
33783
- types: [
33784
- "number"
33785
- ]
33786
- },
33787
- y: {
33788
- types: [
33789
- "number"
33790
- ]
33791
- },
33792
- z: {
33793
- types: [
33794
- "number"
33795
- ]
33796
- },
33797
- type: {
33798
- types: [
33799
- "string"
33800
- ]
33801
- },
33802
- sprite: {
33803
- types: [
33804
- "string"
33805
- ]
33806
- },
33807
- assetUrl: {
33808
- types: [
33809
- "string"
33810
- ]
33811
- },
33812
- color: {
33813
- types: [
33814
- "string"
33815
- ]
33816
- },
33817
- elevation: {
33818
- types: [
33819
- "number"
33820
- ]
33821
- }
33822
- },
33823
- required: [
33824
- "x",
33825
- "y",
33826
- "type"
33827
- ]
33828
- },
33829
- clearSelection: {
33830
- types: [
33831
- "function"
33832
- ]
33833
- },
33834
- tileToScreen: {
33835
- types: [
33836
- "function"
33837
- ]
33838
- },
33839
- scale: {
33840
- types: [
33841
- "number"
33842
- ]
33843
- }
33844
- },
33845
- required: [
33846
- "hoveredTile",
33847
- "hoveredFeature",
33848
- "hoveredUnit",
33849
- "selectedFeature",
33850
- "clearSelection",
33851
- "tileToScreen",
33852
- "scale"
33853
- ]
33854
- }
33855
- }
33856
- ],
33857
- renderCallback: true
33858
- },
33859
- footer: {
33860
- types: [
33861
- "function"
33862
- ],
33863
- description: "Bottom bar (income summary, etc.)",
33864
- kind: "callback",
33865
- callbackArgs: [
33866
- {
33867
- name: "ctx",
33868
- type: "object",
33869
- schema: {
33870
- types: [
33871
- "object"
33872
- ],
33873
- properties: {
33874
- hoveredTile: {
33875
- types: [
33876
- "object"
33877
- ],
33878
- properties: {
33879
- x: {
33880
- types: [
33881
- "number"
33882
- ]
33883
- },
33884
- y: {
33885
- types: [
33886
- "number"
33887
- ]
33888
- }
33889
- },
33890
- required: [
33891
- "x",
33892
- "y"
33893
- ]
33894
- },
33895
- hoveredFeature: {
33896
- types: [
33897
- "object"
33898
- ],
33899
- properties: {
33900
- id: {
33901
- types: [
33902
- "string"
33903
- ]
33904
- },
33905
- x: {
33906
- types: [
33907
- "number"
33908
- ]
33909
- },
33910
- y: {
33911
- types: [
33912
- "number"
33913
- ]
33914
- },
33915
- z: {
33916
- types: [
33917
- "number"
33918
- ]
33919
- },
33920
- type: {
33921
- types: [
33922
- "string"
33923
- ]
33924
- },
33925
- sprite: {
33926
- types: [
33927
- "string"
33928
- ]
33929
- },
33930
- assetUrl: {
33931
- types: [
33932
- "string"
33933
- ]
33934
- },
33935
- color: {
33936
- types: [
33937
- "string"
33938
- ]
33939
- },
33940
- elevation: {
33941
- types: [
33942
- "number"
33943
- ]
33944
- }
33945
- },
33946
- required: [
33947
- "x",
33948
- "y",
33949
- "type"
33950
- ]
33951
- },
33952
- hoveredUnit: {
33953
- types: [
33954
- "object"
33955
- ],
33956
- properties: {
33957
- id: {
33958
- types: [
33959
- "string"
33960
- ]
33961
- },
33962
- position: {
33963
- types: [
33964
- "object"
33965
- ],
33966
- properties: {
33967
- x: {
33968
- types: [
33969
- "number"
33970
- ]
33971
- },
33972
- y: {
33973
- types: [
33974
- "number"
33975
- ]
33976
- }
33977
- },
33978
- required: [
33979
- "x",
33980
- "y"
33981
- ]
33982
- },
33983
- x: {
33984
- types: [
33985
- "number"
33986
- ]
33987
- },
33988
- y: {
33989
- types: [
33990
- "number"
33991
- ]
33992
- },
33993
- z: {
33994
- types: [
33995
- "number"
33996
- ]
33997
- },
33998
- sprite: {
33999
- types: [
34000
- "string"
35083
+ "asset"
34001
35084
  ]
34002
35085
  },
34003
35086
  unitType: {
@@ -34150,15 +35233,365 @@ var patterns_registry_default = {
34150
35233
  ]
34151
35234
  },
34152
35235
  sprite: {
35236
+ types: [
35237
+ "asset"
35238
+ ]
35239
+ },
35240
+ assetUrl: {
35241
+ types: [
35242
+ "asset"
35243
+ ]
35244
+ },
35245
+ color: {
35246
+ types: [
35247
+ "string"
35248
+ ]
35249
+ },
35250
+ elevation: {
35251
+ types: [
35252
+ "number"
35253
+ ]
35254
+ }
35255
+ },
35256
+ required: [
35257
+ "x",
35258
+ "y",
35259
+ "type"
35260
+ ]
35261
+ },
35262
+ clearSelection: {
35263
+ types: [
35264
+ "function"
35265
+ ]
35266
+ },
35267
+ tileToScreen: {
35268
+ types: [
35269
+ "function"
35270
+ ]
35271
+ },
35272
+ scale: {
35273
+ types: [
35274
+ "number"
35275
+ ]
35276
+ }
35277
+ },
35278
+ required: [
35279
+ "hoveredTile",
35280
+ "hoveredFeature",
35281
+ "hoveredUnit",
35282
+ "selectedFeature",
35283
+ "clearSelection",
35284
+ "tileToScreen",
35285
+ "scale"
35286
+ ]
35287
+ }
35288
+ }
35289
+ ],
35290
+ renderCallback: true
35291
+ },
35292
+ footer: {
35293
+ types: [
35294
+ "function"
35295
+ ],
35296
+ description: "Bottom bar (income summary, etc.)",
35297
+ kind: "callback",
35298
+ callbackArgs: [
35299
+ {
35300
+ name: "ctx",
35301
+ type: "object",
35302
+ schema: {
35303
+ types: [
35304
+ "object"
35305
+ ],
35306
+ properties: {
35307
+ hoveredTile: {
35308
+ types: [
35309
+ "object"
35310
+ ],
35311
+ properties: {
35312
+ x: {
35313
+ types: [
35314
+ "number"
35315
+ ]
35316
+ },
35317
+ y: {
35318
+ types: [
35319
+ "number"
35320
+ ]
35321
+ }
35322
+ },
35323
+ required: [
35324
+ "x",
35325
+ "y"
35326
+ ]
35327
+ },
35328
+ hoveredFeature: {
35329
+ types: [
35330
+ "object"
35331
+ ],
35332
+ properties: {
35333
+ id: {
35334
+ types: [
35335
+ "string"
35336
+ ]
35337
+ },
35338
+ x: {
35339
+ types: [
35340
+ "number"
35341
+ ]
35342
+ },
35343
+ y: {
35344
+ types: [
35345
+ "number"
35346
+ ]
35347
+ },
35348
+ z: {
35349
+ types: [
35350
+ "number"
35351
+ ]
35352
+ },
35353
+ type: {
34153
35354
  types: [
34154
35355
  "string"
34155
35356
  ]
34156
35357
  },
35358
+ sprite: {
35359
+ types: [
35360
+ "asset"
35361
+ ]
35362
+ },
34157
35363
  assetUrl: {
35364
+ types: [
35365
+ "asset"
35366
+ ]
35367
+ },
35368
+ color: {
35369
+ types: [
35370
+ "string"
35371
+ ]
35372
+ },
35373
+ elevation: {
35374
+ types: [
35375
+ "number"
35376
+ ]
35377
+ }
35378
+ },
35379
+ required: [
35380
+ "x",
35381
+ "y",
35382
+ "type"
35383
+ ]
35384
+ },
35385
+ hoveredUnit: {
35386
+ types: [
35387
+ "object"
35388
+ ],
35389
+ properties: {
35390
+ id: {
35391
+ types: [
35392
+ "string"
35393
+ ]
35394
+ },
35395
+ position: {
35396
+ types: [
35397
+ "object"
35398
+ ],
35399
+ properties: {
35400
+ x: {
35401
+ types: [
35402
+ "number"
35403
+ ]
35404
+ },
35405
+ y: {
35406
+ types: [
35407
+ "number"
35408
+ ]
35409
+ }
35410
+ },
35411
+ required: [
35412
+ "x",
35413
+ "y"
35414
+ ]
35415
+ },
35416
+ x: {
35417
+ types: [
35418
+ "number"
35419
+ ]
35420
+ },
35421
+ y: {
35422
+ types: [
35423
+ "number"
35424
+ ]
35425
+ },
35426
+ z: {
35427
+ types: [
35428
+ "number"
35429
+ ]
35430
+ },
35431
+ sprite: {
35432
+ types: [
35433
+ "asset"
35434
+ ]
35435
+ },
35436
+ unitType: {
35437
+ types: [
35438
+ "string"
35439
+ ]
35440
+ },
35441
+ heroId: {
35442
+ types: [
35443
+ "string"
35444
+ ]
35445
+ },
35446
+ name: {
35447
+ types: [
35448
+ "string"
35449
+ ]
35450
+ },
35451
+ team: {
35452
+ types: [
35453
+ "string"
35454
+ ],
35455
+ enumValues: [
35456
+ "player",
35457
+ "enemy",
35458
+ "neutral"
35459
+ ]
35460
+ },
35461
+ faction: {
35462
+ types: [
35463
+ "string"
35464
+ ],
35465
+ enumValues: [
35466
+ "player",
35467
+ "enemy",
35468
+ "neutral"
35469
+ ]
35470
+ },
35471
+ health: {
35472
+ types: [
35473
+ "number"
35474
+ ]
35475
+ },
35476
+ maxHealth: {
35477
+ types: [
35478
+ "number"
35479
+ ]
35480
+ },
35481
+ traits: {
35482
+ types: [
35483
+ "array"
35484
+ ],
35485
+ items: {
35486
+ types: [
35487
+ "object"
35488
+ ],
35489
+ properties: {
35490
+ name: {
35491
+ types: [
35492
+ "string"
35493
+ ]
35494
+ },
35495
+ currentState: {
35496
+ types: [
35497
+ "string"
35498
+ ]
35499
+ },
35500
+ states: {
35501
+ types: [
35502
+ "array"
35503
+ ],
35504
+ items: {
35505
+ types: [
35506
+ "string"
35507
+ ]
35508
+ }
35509
+ },
35510
+ cooldown: {
35511
+ types: [
35512
+ "number"
35513
+ ]
35514
+ }
35515
+ },
35516
+ required: [
35517
+ "name",
35518
+ "currentState",
35519
+ "states",
35520
+ "cooldown"
35521
+ ]
35522
+ }
35523
+ },
35524
+ previousPosition: {
35525
+ types: [
35526
+ "object"
35527
+ ],
35528
+ properties: {
35529
+ x: {
35530
+ types: [
35531
+ "number"
35532
+ ]
35533
+ },
35534
+ y: {
35535
+ types: [
35536
+ "number"
35537
+ ]
35538
+ }
35539
+ },
35540
+ required: [
35541
+ "x",
35542
+ "y"
35543
+ ]
35544
+ },
35545
+ elevation: {
35546
+ types: [
35547
+ "number"
35548
+ ]
35549
+ }
35550
+ },
35551
+ required: [
35552
+ "id"
35553
+ ]
35554
+ },
35555
+ selectedFeature: {
35556
+ types: [
35557
+ "object"
35558
+ ],
35559
+ properties: {
35560
+ id: {
35561
+ types: [
35562
+ "string"
35563
+ ]
35564
+ },
35565
+ x: {
35566
+ types: [
35567
+ "number"
35568
+ ]
35569
+ },
35570
+ y: {
35571
+ types: [
35572
+ "number"
35573
+ ]
35574
+ },
35575
+ z: {
35576
+ types: [
35577
+ "number"
35578
+ ]
35579
+ },
35580
+ type: {
34158
35581
  types: [
34159
35582
  "string"
34160
35583
  ]
34161
35584
  },
35585
+ sprite: {
35586
+ types: [
35587
+ "asset"
35588
+ ]
35589
+ },
35590
+ assetUrl: {
35591
+ types: [
35592
+ "asset"
35593
+ ]
35594
+ },
34162
35595
  color: {
34163
35596
  types: [
34164
35597
  "string"
@@ -34248,12 +35681,12 @@ var patterns_registry_default = {
34248
35681
  },
34249
35682
  sprite: {
34250
35683
  types: [
34251
- "string"
35684
+ "asset"
34252
35685
  ]
34253
35686
  },
34254
35687
  assetUrl: {
34255
35688
  types: [
34256
- "string"
35689
+ "asset"
34257
35690
  ]
34258
35691
  },
34259
35692
  color: {
@@ -34334,7 +35767,7 @@ var patterns_registry_default = {
34334
35767
  },
34335
35768
  sprite: {
34336
35769
  types: [
34337
- "string"
35770
+ "asset"
34338
35771
  ]
34339
35772
  },
34340
35773
  unitType: {
@@ -34820,7 +36253,7 @@ var patterns_registry_default = {
34820
36253
  },
34821
36254
  iconUrl: {
34822
36255
  types: [
34823
- "string"
36256
+ "asset"
34824
36257
  ]
34825
36258
  },
34826
36259
  stateMachine: {
@@ -34973,7 +36406,7 @@ var patterns_registry_default = {
34973
36406
  },
34974
36407
  tooltipFrameUrl: {
34975
36408
  types: [
34976
- "string"
36409
+ "asset"
34977
36410
  ],
34978
36411
  description: "Optional tooltip frame image URL"
34979
36412
  },
@@ -35068,7 +36501,7 @@ var patterns_registry_default = {
35068
36501
  },
35069
36502
  iconUrl: {
35070
36503
  types: [
35071
- "string"
36504
+ "asset"
35072
36505
  ]
35073
36506
  },
35074
36507
  stateMachine: {
@@ -35205,7 +36638,7 @@ var patterns_registry_default = {
35205
36638
  },
35206
36639
  iconUrl: {
35207
36640
  types: [
35208
- "string"
36641
+ "asset"
35209
36642
  ]
35210
36643
  },
35211
36644
  stateMachine: {
@@ -35496,6 +36929,7 @@ var patterns_registry_default = {
35496
36929
  properties: {
35497
36930
  icon: {
35498
36931
  types: [
36932
+ "icon",
35499
36933
  "string"
35500
36934
  ]
35501
36935
  },
@@ -35653,6 +37087,360 @@ var patterns_registry_default = {
35653
37087
  kind: "entity",
35654
37088
  cardinality: "collection"
35655
37089
  },
37090
+ tiles: {
37091
+ types: [
37092
+ "array"
37093
+ ],
37094
+ description: "Direct tile data \u2014 takes priority over entity-derived tiles.",
37095
+ items: {
37096
+ types: [
37097
+ "object"
37098
+ ],
37099
+ properties: {
37100
+ id: {
37101
+ types: [
37102
+ "string"
37103
+ ]
37104
+ },
37105
+ x: {
37106
+ types: [
37107
+ "number"
37108
+ ]
37109
+ },
37110
+ y: {
37111
+ types: [
37112
+ "number"
37113
+ ]
37114
+ },
37115
+ z: {
37116
+ types: [
37117
+ "number"
37118
+ ]
37119
+ },
37120
+ terrain: {
37121
+ types: [
37122
+ "string"
37123
+ ]
37124
+ },
37125
+ type: {
37126
+ types: [
37127
+ "string"
37128
+ ]
37129
+ },
37130
+ terrainSprite: {
37131
+ types: [
37132
+ "asset"
37133
+ ]
37134
+ },
37135
+ passable: {
37136
+ types: [
37137
+ "boolean"
37138
+ ]
37139
+ },
37140
+ movementCost: {
37141
+ types: [
37142
+ "number"
37143
+ ]
37144
+ },
37145
+ tileType: {
37146
+ types: [
37147
+ "string"
37148
+ ]
37149
+ },
37150
+ elevation: {
37151
+ types: [
37152
+ "number"
37153
+ ]
37154
+ }
37155
+ },
37156
+ required: [
37157
+ "x",
37158
+ "y"
37159
+ ]
37160
+ }
37161
+ },
37162
+ units: {
37163
+ types: [
37164
+ "array"
37165
+ ],
37166
+ description: "Direct unit data \u2014 takes priority over entity-derived units.",
37167
+ items: {
37168
+ types: [
37169
+ "object"
37170
+ ],
37171
+ properties: {
37172
+ id: {
37173
+ types: [
37174
+ "string"
37175
+ ]
37176
+ },
37177
+ position: {
37178
+ types: [
37179
+ "object"
37180
+ ],
37181
+ properties: {
37182
+ x: {
37183
+ types: [
37184
+ "number"
37185
+ ]
37186
+ },
37187
+ y: {
37188
+ types: [
37189
+ "number"
37190
+ ]
37191
+ }
37192
+ },
37193
+ required: [
37194
+ "x",
37195
+ "y"
37196
+ ]
37197
+ },
37198
+ x: {
37199
+ types: [
37200
+ "number"
37201
+ ]
37202
+ },
37203
+ y: {
37204
+ types: [
37205
+ "number"
37206
+ ]
37207
+ },
37208
+ z: {
37209
+ types: [
37210
+ "number"
37211
+ ]
37212
+ },
37213
+ sprite: {
37214
+ types: [
37215
+ "asset"
37216
+ ]
37217
+ },
37218
+ unitType: {
37219
+ types: [
37220
+ "string"
37221
+ ]
37222
+ },
37223
+ heroId: {
37224
+ types: [
37225
+ "string"
37226
+ ]
37227
+ },
37228
+ name: {
37229
+ types: [
37230
+ "string"
37231
+ ]
37232
+ },
37233
+ team: {
37234
+ types: [
37235
+ "string"
37236
+ ],
37237
+ enumValues: [
37238
+ "player",
37239
+ "enemy",
37240
+ "neutral"
37241
+ ]
37242
+ },
37243
+ faction: {
37244
+ types: [
37245
+ "string"
37246
+ ],
37247
+ enumValues: [
37248
+ "player",
37249
+ "enemy",
37250
+ "neutral"
37251
+ ]
37252
+ },
37253
+ health: {
37254
+ types: [
37255
+ "number"
37256
+ ]
37257
+ },
37258
+ maxHealth: {
37259
+ types: [
37260
+ "number"
37261
+ ]
37262
+ },
37263
+ traits: {
37264
+ types: [
37265
+ "array"
37266
+ ],
37267
+ items: {
37268
+ types: [
37269
+ "object"
37270
+ ],
37271
+ properties: {
37272
+ name: {
37273
+ types: [
37274
+ "string"
37275
+ ]
37276
+ },
37277
+ currentState: {
37278
+ types: [
37279
+ "string"
37280
+ ]
37281
+ },
37282
+ states: {
37283
+ types: [
37284
+ "array"
37285
+ ],
37286
+ items: {
37287
+ types: [
37288
+ "string"
37289
+ ]
37290
+ }
37291
+ },
37292
+ cooldown: {
37293
+ types: [
37294
+ "number"
37295
+ ]
37296
+ }
37297
+ },
37298
+ required: [
37299
+ "name",
37300
+ "currentState",
37301
+ "states",
37302
+ "cooldown"
37303
+ ]
37304
+ }
37305
+ },
37306
+ previousPosition: {
37307
+ types: [
37308
+ "object"
37309
+ ],
37310
+ properties: {
37311
+ x: {
37312
+ types: [
37313
+ "number"
37314
+ ]
37315
+ },
37316
+ y: {
37317
+ types: [
37318
+ "number"
37319
+ ]
37320
+ }
37321
+ },
37322
+ required: [
37323
+ "x",
37324
+ "y"
37325
+ ]
37326
+ },
37327
+ elevation: {
37328
+ types: [
37329
+ "number"
37330
+ ]
37331
+ }
37332
+ },
37333
+ required: [
37334
+ "id"
37335
+ ]
37336
+ }
37337
+ },
37338
+ features: {
37339
+ types: [
37340
+ "array"
37341
+ ],
37342
+ description: "Direct feature data \u2014 takes priority over entity-derived features.",
37343
+ items: {
37344
+ types: [
37345
+ "object"
37346
+ ],
37347
+ properties: {
37348
+ id: {
37349
+ types: [
37350
+ "string"
37351
+ ]
37352
+ },
37353
+ x: {
37354
+ types: [
37355
+ "number"
37356
+ ]
37357
+ },
37358
+ y: {
37359
+ types: [
37360
+ "number"
37361
+ ]
37362
+ },
37363
+ z: {
37364
+ types: [
37365
+ "number"
37366
+ ]
37367
+ },
37368
+ type: {
37369
+ types: [
37370
+ "string"
37371
+ ]
37372
+ },
37373
+ sprite: {
37374
+ types: [
37375
+ "asset"
37376
+ ]
37377
+ },
37378
+ assetUrl: {
37379
+ types: [
37380
+ "asset"
37381
+ ]
37382
+ },
37383
+ color: {
37384
+ types: [
37385
+ "string"
37386
+ ]
37387
+ },
37388
+ elevation: {
37389
+ types: [
37390
+ "number"
37391
+ ]
37392
+ }
37393
+ },
37394
+ required: [
37395
+ "x",
37396
+ "y",
37397
+ "type"
37398
+ ]
37399
+ }
37400
+ },
37401
+ assetManifest: {
37402
+ types: [
37403
+ "object"
37404
+ ],
37405
+ description: "Direct asset manifest \u2014 takes priority over entity-derived manifest.",
37406
+ properties: {
37407
+ baseUrl: {
37408
+ types: [
37409
+ "asset"
37410
+ ]
37411
+ },
37412
+ terrains: {
37413
+ types: [
37414
+ "object"
37415
+ ],
37416
+ mapValue: {
37417
+ types: [
37418
+ "asset"
37419
+ ]
37420
+ }
37421
+ },
37422
+ units: {
37423
+ types: [
37424
+ "object"
37425
+ ],
37426
+ mapValue: {
37427
+ types: [
37428
+ "asset"
37429
+ ]
37430
+ }
37431
+ },
37432
+ features: {
37433
+ types: [
37434
+ "object"
37435
+ ],
37436
+ mapValue: {
37437
+ types: [
37438
+ "asset"
37439
+ ]
37440
+ }
37441
+ }
37442
+ }
37443
+ },
35656
37444
  scale: {
35657
37445
  types: [
35658
37446
  "number"
@@ -36357,7 +38145,7 @@ var patterns_registry_default = {
36357
38145
  description: "effectSpriteUrls prop",
36358
38146
  items: {
36359
38147
  types: [
36360
- "string"
38148
+ "asset"
36361
38149
  ]
36362
38150
  },
36363
38151
  default: []
@@ -37976,7 +39764,7 @@ var patterns_registry_default = {
37976
39764
  },
37977
39765
  iconUrl: {
37978
39766
  types: [
37979
- "string"
39767
+ "object"
37980
39768
  ]
37981
39769
  },
37982
39770
  stateMachine: {
@@ -38282,7 +40070,7 @@ var patterns_registry_default = {
38282
40070
  },
38283
40071
  iconUrl: {
38284
40072
  types: [
38285
- "string"
40073
+ "object"
38286
40074
  ]
38287
40075
  },
38288
40076
  stateMachine: {
@@ -38466,7 +40254,7 @@ var patterns_registry_default = {
38466
40254
  },
38467
40255
  iconUrl: {
38468
40256
  types: [
38469
- "string"
40257
+ "object"
38470
40258
  ]
38471
40259
  },
38472
40260
  stateMachine: {
@@ -38606,7 +40394,7 @@ var patterns_registry_default = {
38606
40394
  },
38607
40395
  iconUrl: {
38608
40396
  types: [
38609
- "string"
40397
+ "object"
38610
40398
  ]
38611
40399
  },
38612
40400
  stateMachine: {
@@ -39545,12 +41333,12 @@ var patterns_registry_default = {
39545
41333
  },
39546
41334
  sprite: {
39547
41335
  types: [
39548
- "string"
41336
+ "object"
39549
41337
  ]
39550
41338
  },
39551
41339
  assetUrl: {
39552
41340
  types: [
39553
- "string"
41341
+ "object"
39554
41342
  ]
39555
41343
  },
39556
41344
  color: {
@@ -39634,12 +41422,12 @@ var patterns_registry_default = {
39634
41422
  },
39635
41423
  sprite: {
39636
41424
  types: [
39637
- "string"
41425
+ "object"
39638
41426
  ]
39639
41427
  },
39640
41428
  assetUrl: {
39641
41429
  types: [
39642
- "string"
41430
+ "object"
39643
41431
  ]
39644
41432
  },
39645
41433
  color: {
@@ -39704,12 +41492,12 @@ var patterns_registry_default = {
39704
41492
  },
39705
41493
  sprite: {
39706
41494
  types: [
39707
- "string"
41495
+ "object"
39708
41496
  ]
39709
41497
  },
39710
41498
  assetUrl: {
39711
41499
  types: [
39712
- "string"
41500
+ "object"
39713
41501
  ]
39714
41502
  },
39715
41503
  color: {
@@ -40632,7 +42420,7 @@ var patterns_registry_default = {
40632
42420
  properties: {
40633
42421
  src: {
40634
42422
  types: [
40635
- "string"
42423
+ "asset"
40636
42424
  ]
40637
42425
  },
40638
42426
  alt: {
@@ -40805,6 +42593,7 @@ var patterns_registry_default = {
40805
42593
  },
40806
42594
  icon: {
40807
42595
  types: [
42596
+ "icon",
40808
42597
  "string"
40809
42598
  ]
40810
42599
  },
@@ -40894,6 +42683,7 @@ var patterns_registry_default = {
40894
42683
  },
40895
42684
  icon: {
40896
42685
  types: [
42686
+ "icon",
40897
42687
  "string"
40898
42688
  ]
40899
42689
  },
@@ -40932,6 +42722,7 @@ var patterns_registry_default = {
40932
42722
  },
40933
42723
  icon: {
40934
42724
  types: [
42725
+ "icon",
40935
42726
  "string"
40936
42727
  ]
40937
42728
  },
@@ -41164,6 +42955,7 @@ var patterns_registry_default = {
41164
42955
  },
41165
42956
  icon: {
41166
42957
  types: [
42958
+ "icon",
41167
42959
  "string"
41168
42960
  ]
41169
42961
  }
@@ -41873,7 +43665,7 @@ var integrators_registry_default = {
41873
43665
  // src/component-mapping.json
41874
43666
  var component_mapping_default = {
41875
43667
  version: "1.0.0",
41876
- exportedAt: "2026-06-16T13:55:25.201Z",
43668
+ exportedAt: "2026-06-17T02:07:52.301Z",
41877
43669
  mappings: {
41878
43670
  "page-header": {
41879
43671
  component: "PageHeader",
@@ -43378,7 +45170,7 @@ var component_mapping_default = {
43378
45170
  // src/event-contracts.json
43379
45171
  var event_contracts_default = {
43380
45172
  version: "1.0.0",
43381
- exportedAt: "2026-06-16T13:55:25.201Z",
45173
+ exportedAt: "2026-06-17T02:07:52.301Z",
43382
45174
  contracts: {
43383
45175
  form: {
43384
45176
  emits: [