@almadar/patterns 2.46.0 → 2.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "1.0.0",
3
- "exportedAt": "2026-06-17T02:56:15.601Z",
3
+ "exportedAt": "2026-06-17T11:00:54.689Z",
4
4
  "patterns": {
5
5
  "entity-table": {
6
6
  "type": "entity-table",
@@ -1804,12 +1804,6 @@
1804
1804
  "message"
1805
1805
  ]
1806
1806
  },
1807
- "entity": {
1808
- "types": [
1809
- "string"
1810
- ],
1811
- "description": "Entity name for schema-driven auto-fetch"
1812
- },
1813
1807
  "tabs": {
1814
1808
  "types": [
1815
1809
  "array"
@@ -10627,12 +10621,6 @@
10627
10621
  "propertyRequired": [
10628
10622
  "message"
10629
10623
  ]
10630
- },
10631
- "entity": {
10632
- "types": [
10633
- "string"
10634
- ],
10635
- "description": "Entity name for schema-driven auto-fetch (closed circuit)"
10636
10624
  }
10637
10625
  }
10638
10626
  },
@@ -10861,12 +10849,6 @@
10861
10849
  "propertyRequired": [
10862
10850
  "message"
10863
10851
  ]
10864
- },
10865
- "entity": {
10866
- "types": [
10867
- "string"
10868
- ],
10869
- "description": "Entity name for schema-driven auto-fetch"
10870
10852
  }
10871
10853
  }
10872
10854
  },
@@ -13641,324 +13623,318 @@
13641
13623
  "label"
13642
13624
  ]
13643
13625
  }
13644
- },
13645
- "entity": {
13646
- "types": [
13647
- "string"
13648
- ],
13649
- "description": "Entity name for schema-driven auto-fetch"
13650
- },
13651
- "isLoading": {
13652
- "types": [
13653
- "boolean"
13654
- ],
13655
- "description": "Loading state",
13656
- "default": false
13657
- },
13658
- "error": {
13659
- "types": [
13660
- "object"
13661
- ],
13662
- "description": "Error state",
13663
- "properties": {
13664
- "message": {
13665
- "types": [
13666
- "string"
13667
- ]
13668
- },
13669
- "name": {
13670
- "types": [
13671
- "string"
13672
- ]
13673
- },
13674
- "code": {
13675
- "types": [
13676
- "string"
13677
- ]
13678
- },
13679
- "stack": {
13680
- "types": [
13681
- "string"
13682
- ]
13683
- }
13684
- },
13685
- "propertyRequired": [
13686
- "message"
13687
- ]
13688
- },
13689
- "className": {
13690
- "types": [
13691
- "string"
13692
- ],
13693
- "description": "Additional CSS classes"
13694
- }
13695
- }
13696
- },
13697
- "graph-canvas": {
13698
- "type": "graph-canvas",
13699
- "category": "game",
13700
- "tier": "molecules",
13701
- "family": "core",
13702
- "description": "Force-directed graph visualization for node-link data with interactive zoom, pan, and layout",
13703
- "suggestedFor": [
13704
- "knowledge graphs",
13705
- "network visualization",
13706
- "relationship mapping",
13707
- "dependency graphs"
13708
- ],
13709
- "typicalSize": "large",
13710
- "propsSchema": {
13711
- "title": {
13712
- "types": [
13713
- "string"
13714
- ],
13715
- "description": "Graph title"
13716
- },
13717
- "nodes": {
13718
- "types": [
13719
- "array"
13720
- ],
13721
- "description": "Graph nodes",
13722
- "items": {
13723
- "types": [
13724
- "object"
13725
- ],
13726
- "properties": {
13727
- "id": {
13728
- "types": [
13729
- "string"
13730
- ]
13731
- },
13732
- "label": {
13733
- "types": [
13734
- "string"
13735
- ]
13736
- },
13737
- "group": {
13738
- "types": [
13739
- "string"
13740
- ]
13741
- },
13742
- "color": {
13743
- "types": [
13744
- "string"
13745
- ]
13746
- },
13747
- "size": {
13748
- "types": [
13749
- "number"
13750
- ]
13751
- },
13752
- "x": {
13753
- "types": [
13754
- "number"
13755
- ]
13756
- },
13757
- "y": {
13758
- "types": [
13759
- "number"
13760
- ]
13761
- }
13762
- },
13763
- "required": [
13764
- "id"
13765
- ]
13766
- }
13767
- },
13768
- "edges": {
13769
- "types": [
13770
- "array"
13771
- ],
13772
- "description": "Graph edges",
13773
- "items": {
13774
- "types": [
13775
- "object"
13776
- ],
13777
- "properties": {
13778
- "source": {
13779
- "types": [
13780
- "string"
13781
- ]
13782
- },
13783
- "target": {
13784
- "types": [
13785
- "string"
13786
- ]
13787
- },
13788
- "label": {
13789
- "types": [
13790
- "string"
13791
- ]
13792
- },
13793
- "weight": {
13794
- "types": [
13795
- "number"
13796
- ]
13797
- },
13798
- "color": {
13799
- "types": [
13800
- "string"
13801
- ]
13802
- }
13803
- },
13804
- "required": [
13805
- "source",
13806
- "target"
13807
- ]
13808
- }
13809
- },
13810
- "height": {
13811
- "types": [
13812
- "number"
13813
- ],
13814
- "description": "Canvas height",
13815
- "default": 400
13816
- },
13817
- "showLabels": {
13818
- "types": [
13819
- "boolean"
13820
- ],
13821
- "description": "Show node labels",
13822
- "default": true
13823
- },
13824
- "interactive": {
13825
- "types": [
13826
- "boolean"
13827
- ],
13828
- "description": "Enable zoom/pan",
13829
- "default": true
13830
- },
13831
- "draggable": {
13832
- "types": [
13833
- "boolean"
13834
- ],
13835
- "description": "Enable node dragging",
13836
- "default": true
13837
- },
13838
- "actions": {
13839
- "types": [
13840
- "array"
13841
- ],
13842
- "description": "Actions",
13843
- "items": {
13844
- "types": [
13845
- "object"
13846
- ],
13847
- "properties": {
13848
- "label": {
13849
- "types": [
13850
- "string"
13851
- ]
13852
- },
13853
- "event": {
13854
- "types": [
13855
- "string"
13856
- ]
13857
- },
13858
- "navigatesTo": {
13859
- "types": [
13860
- "string"
13861
- ]
13862
- },
13863
- "variant": {
13864
- "types": [
13865
- "string"
13866
- ],
13867
- "enumValues": [
13868
- "primary",
13869
- "secondary",
13870
- "ghost"
13871
- ]
13872
- }
13873
- },
13874
- "required": [
13875
- "label"
13876
- ]
13877
- }
13878
- },
13879
- "onNodeClick": {
13880
- "types": [
13881
- "function"
13882
- ],
13883
- "description": "On node click",
13884
- "kind": "callback",
13885
- "callbackArgs": [
13886
- {
13887
- "name": "node",
13888
- "type": "object",
13889
- "schema": {
13890
- "types": [
13891
- "object"
13892
- ],
13893
- "properties": {
13894
- "id": {
13895
- "types": [
13896
- "string"
13897
- ]
13898
- },
13899
- "label": {
13900
- "types": [
13901
- "string"
13902
- ]
13903
- },
13904
- "group": {
13905
- "types": [
13906
- "string"
13907
- ]
13908
- },
13909
- "color": {
13910
- "types": [
13911
- "string"
13912
- ]
13913
- },
13914
- "size": {
13915
- "types": [
13916
- "number"
13917
- ]
13918
- },
13919
- "x": {
13920
- "types": [
13921
- "number"
13922
- ]
13923
- },
13924
- "y": {
13925
- "types": [
13926
- "number"
13927
- ]
13928
- }
13929
- },
13930
- "required": [
13931
- "id"
13932
- ]
13933
- }
13934
- }
13935
- ]
13936
- },
13937
- "nodeClickEvent": {
13938
- "types": [
13939
- "string"
13940
- ],
13941
- "description": "Node click event",
13942
- "kind": "event-ref",
13943
- "emitPayloadSchema": [
13944
- {
13945
- "name": "id",
13946
- "type": "string",
13947
- "required": true
13948
- }
13949
- ]
13950
- },
13951
- "layout": {
13952
- "types": [
13953
- "string"
13954
- ],
13955
- "description": "Layout algorithm",
13956
- "enumValues": [
13957
- "force",
13958
- "circular",
13959
- "grid"
13960
- ],
13961
- "default": "force"
13626
+ },
13627
+ "isLoading": {
13628
+ "types": [
13629
+ "boolean"
13630
+ ],
13631
+ "description": "Loading state",
13632
+ "default": false
13633
+ },
13634
+ "error": {
13635
+ "types": [
13636
+ "object"
13637
+ ],
13638
+ "description": "Error state",
13639
+ "properties": {
13640
+ "message": {
13641
+ "types": [
13642
+ "string"
13643
+ ]
13644
+ },
13645
+ "name": {
13646
+ "types": [
13647
+ "string"
13648
+ ]
13649
+ },
13650
+ "code": {
13651
+ "types": [
13652
+ "string"
13653
+ ]
13654
+ },
13655
+ "stack": {
13656
+ "types": [
13657
+ "string"
13658
+ ]
13659
+ }
13660
+ },
13661
+ "propertyRequired": [
13662
+ "message"
13663
+ ]
13664
+ },
13665
+ "className": {
13666
+ "types": [
13667
+ "string"
13668
+ ],
13669
+ "description": "Additional CSS classes"
13670
+ }
13671
+ }
13672
+ },
13673
+ "graph-canvas": {
13674
+ "type": "graph-canvas",
13675
+ "category": "game",
13676
+ "tier": "molecules",
13677
+ "family": "core",
13678
+ "description": "Force-directed graph visualization for node-link data with interactive zoom, pan, and layout",
13679
+ "suggestedFor": [
13680
+ "knowledge graphs",
13681
+ "network visualization",
13682
+ "relationship mapping",
13683
+ "dependency graphs"
13684
+ ],
13685
+ "typicalSize": "large",
13686
+ "propsSchema": {
13687
+ "title": {
13688
+ "types": [
13689
+ "string"
13690
+ ],
13691
+ "description": "Graph title"
13692
+ },
13693
+ "nodes": {
13694
+ "types": [
13695
+ "array"
13696
+ ],
13697
+ "description": "Graph nodes",
13698
+ "items": {
13699
+ "types": [
13700
+ "object"
13701
+ ],
13702
+ "properties": {
13703
+ "id": {
13704
+ "types": [
13705
+ "string"
13706
+ ]
13707
+ },
13708
+ "label": {
13709
+ "types": [
13710
+ "string"
13711
+ ]
13712
+ },
13713
+ "group": {
13714
+ "types": [
13715
+ "string"
13716
+ ]
13717
+ },
13718
+ "color": {
13719
+ "types": [
13720
+ "string"
13721
+ ]
13722
+ },
13723
+ "size": {
13724
+ "types": [
13725
+ "number"
13726
+ ]
13727
+ },
13728
+ "x": {
13729
+ "types": [
13730
+ "number"
13731
+ ]
13732
+ },
13733
+ "y": {
13734
+ "types": [
13735
+ "number"
13736
+ ]
13737
+ }
13738
+ },
13739
+ "required": [
13740
+ "id"
13741
+ ]
13742
+ }
13743
+ },
13744
+ "edges": {
13745
+ "types": [
13746
+ "array"
13747
+ ],
13748
+ "description": "Graph edges",
13749
+ "items": {
13750
+ "types": [
13751
+ "object"
13752
+ ],
13753
+ "properties": {
13754
+ "source": {
13755
+ "types": [
13756
+ "string"
13757
+ ]
13758
+ },
13759
+ "target": {
13760
+ "types": [
13761
+ "string"
13762
+ ]
13763
+ },
13764
+ "label": {
13765
+ "types": [
13766
+ "string"
13767
+ ]
13768
+ },
13769
+ "weight": {
13770
+ "types": [
13771
+ "number"
13772
+ ]
13773
+ },
13774
+ "color": {
13775
+ "types": [
13776
+ "string"
13777
+ ]
13778
+ }
13779
+ },
13780
+ "required": [
13781
+ "source",
13782
+ "target"
13783
+ ]
13784
+ }
13785
+ },
13786
+ "height": {
13787
+ "types": [
13788
+ "number"
13789
+ ],
13790
+ "description": "Canvas height",
13791
+ "default": 400
13792
+ },
13793
+ "showLabels": {
13794
+ "types": [
13795
+ "boolean"
13796
+ ],
13797
+ "description": "Show node labels",
13798
+ "default": true
13799
+ },
13800
+ "interactive": {
13801
+ "types": [
13802
+ "boolean"
13803
+ ],
13804
+ "description": "Enable zoom/pan",
13805
+ "default": true
13806
+ },
13807
+ "draggable": {
13808
+ "types": [
13809
+ "boolean"
13810
+ ],
13811
+ "description": "Enable node dragging",
13812
+ "default": true
13813
+ },
13814
+ "actions": {
13815
+ "types": [
13816
+ "array"
13817
+ ],
13818
+ "description": "Actions",
13819
+ "items": {
13820
+ "types": [
13821
+ "object"
13822
+ ],
13823
+ "properties": {
13824
+ "label": {
13825
+ "types": [
13826
+ "string"
13827
+ ]
13828
+ },
13829
+ "event": {
13830
+ "types": [
13831
+ "string"
13832
+ ]
13833
+ },
13834
+ "navigatesTo": {
13835
+ "types": [
13836
+ "string"
13837
+ ]
13838
+ },
13839
+ "variant": {
13840
+ "types": [
13841
+ "string"
13842
+ ],
13843
+ "enumValues": [
13844
+ "primary",
13845
+ "secondary",
13846
+ "ghost"
13847
+ ]
13848
+ }
13849
+ },
13850
+ "required": [
13851
+ "label"
13852
+ ]
13853
+ }
13854
+ },
13855
+ "onNodeClick": {
13856
+ "types": [
13857
+ "function"
13858
+ ],
13859
+ "description": "On node click",
13860
+ "kind": "callback",
13861
+ "callbackArgs": [
13862
+ {
13863
+ "name": "node",
13864
+ "type": "object",
13865
+ "schema": {
13866
+ "types": [
13867
+ "object"
13868
+ ],
13869
+ "properties": {
13870
+ "id": {
13871
+ "types": [
13872
+ "string"
13873
+ ]
13874
+ },
13875
+ "label": {
13876
+ "types": [
13877
+ "string"
13878
+ ]
13879
+ },
13880
+ "group": {
13881
+ "types": [
13882
+ "string"
13883
+ ]
13884
+ },
13885
+ "color": {
13886
+ "types": [
13887
+ "string"
13888
+ ]
13889
+ },
13890
+ "size": {
13891
+ "types": [
13892
+ "number"
13893
+ ]
13894
+ },
13895
+ "x": {
13896
+ "types": [
13897
+ "number"
13898
+ ]
13899
+ },
13900
+ "y": {
13901
+ "types": [
13902
+ "number"
13903
+ ]
13904
+ }
13905
+ },
13906
+ "required": [
13907
+ "id"
13908
+ ]
13909
+ }
13910
+ }
13911
+ ]
13912
+ },
13913
+ "nodeClickEvent": {
13914
+ "types": [
13915
+ "string"
13916
+ ],
13917
+ "description": "Node click event",
13918
+ "kind": "event-ref",
13919
+ "emitPayloadSchema": [
13920
+ {
13921
+ "name": "id",
13922
+ "type": "string",
13923
+ "required": true
13924
+ }
13925
+ ]
13926
+ },
13927
+ "layout": {
13928
+ "types": [
13929
+ "string"
13930
+ ],
13931
+ "description": "Layout algorithm",
13932
+ "enumValues": [
13933
+ "force",
13934
+ "circular",
13935
+ "grid"
13936
+ ],
13937
+ "default": "force"
13962
13938
  },
13963
13939
  "entity": {
13964
13940
  "types": [
@@ -14116,6 +14092,11 @@
14116
14092
  "types": [
14117
14093
  "number"
14118
14094
  ]
14095
+ },
14096
+ "modelUrl": {
14097
+ "types": [
14098
+ "asset"
14099
+ ]
14119
14100
  }
14120
14101
  },
14121
14102
  "required": [
@@ -14468,6 +14449,11 @@
14468
14449
  "types": [
14469
14450
  "number"
14470
14451
  ]
14452
+ },
14453
+ "modelUrl": {
14454
+ "types": [
14455
+ "asset"
14456
+ ]
14471
14457
  }
14472
14458
  },
14473
14459
  "required": [
@@ -14841,6 +14827,11 @@
14841
14827
  "types": [
14842
14828
  "number"
14843
14829
  ]
14830
+ },
14831
+ "modelUrl": {
14832
+ "types": [
14833
+ "asset"
14834
+ ]
14844
14835
  }
14845
14836
  },
14846
14837
  "required": [
@@ -30359,6 +30350,11 @@
30359
30350
  "types": [
30360
30351
  "number"
30361
30352
  ]
30353
+ },
30354
+ "modelUrl": {
30355
+ "types": [
30356
+ "asset"
30357
+ ]
30362
30358
  }
30363
30359
  },
30364
30360
  "required": [
@@ -32564,6 +32560,11 @@
32564
32560
  "types": [
32565
32561
  "number"
32566
32562
  ]
32563
+ },
32564
+ "modelUrl": {
32565
+ "types": [
32566
+ "asset"
32567
+ ]
32567
32568
  }
32568
32569
  },
32569
32570
  "required": [
@@ -34258,6 +34259,11 @@
34258
34259
  "types": [
34259
34260
  "number"
34260
34261
  ]
34262
+ },
34263
+ "modelUrl": {
34264
+ "types": [
34265
+ "asset"
34266
+ ]
34261
34267
  }
34262
34268
  },
34263
34269
  "required": [
@@ -36724,7 +36730,8 @@
36724
36730
  "types": [
36725
36731
  "asset"
36726
36732
  ],
36727
- "description": "Optional tooltip frame image URL"
36733
+ "description": "Optional tooltip frame image URL",
36734
+ "default": ""
36728
36735
  },
36729
36736
  "className": {
36730
36737
  "types": [
@@ -37399,391 +37406,401 @@
37399
37406
  "types": [
37400
37407
  "number"
37401
37408
  ]
37402
- }
37403
- },
37404
- "required": [
37405
- "x",
37406
- "y"
37407
- ]
37408
- }
37409
- },
37410
- "units": {
37411
- "types": [
37412
- "array"
37413
- ],
37414
- "description": "Direct unit data — takes priority over entity-derived units.",
37415
- "items": {
37416
- "types": [
37417
- "object"
37418
- ],
37419
- "properties": {
37420
- "id": {
37421
- "types": [
37422
- "string"
37423
- ]
37424
- },
37425
- "position": {
37426
- "types": [
37427
- "object"
37428
- ],
37429
- "properties": {
37430
- "x": {
37431
- "types": [
37432
- "number"
37433
- ]
37434
- },
37435
- "y": {
37436
- "types": [
37437
- "number"
37438
- ]
37439
- }
37440
- },
37441
- "required": [
37442
- "x",
37443
- "y"
37444
- ]
37445
- },
37446
- "x": {
37447
- "types": [
37448
- "number"
37449
- ]
37450
- },
37451
- "y": {
37452
- "types": [
37453
- "number"
37454
- ]
37455
- },
37456
- "z": {
37457
- "types": [
37458
- "number"
37459
- ]
37460
- },
37461
- "sprite": {
37462
- "types": [
37463
- "object"
37464
- ]
37465
- },
37466
- "unitType": {
37467
- "types": [
37468
- "string"
37469
- ]
37470
- },
37471
- "heroId": {
37472
- "types": [
37473
- "string"
37474
- ]
37475
- },
37476
- "name": {
37477
- "types": [
37478
- "string"
37479
- ]
37480
- },
37481
- "team": {
37482
- "types": [
37483
- "string"
37484
- ],
37485
- "enumValues": [
37486
- "player",
37487
- "enemy",
37488
- "neutral"
37489
- ]
37490
- },
37491
- "faction": {
37492
- "types": [
37493
- "string"
37494
- ],
37495
- "enumValues": [
37496
- "player",
37497
- "enemy",
37498
- "neutral"
37499
- ]
37500
- },
37501
- "health": {
37502
- "types": [
37503
- "number"
37504
- ]
37505
- },
37506
- "maxHealth": {
37507
- "types": [
37508
- "number"
37509
- ]
37510
- },
37511
- "traits": {
37512
- "types": [
37513
- "array"
37514
- ],
37515
- "items": {
37516
- "types": [
37517
- "object"
37518
- ],
37519
- "properties": {
37520
- "name": {
37521
- "types": [
37522
- "string"
37523
- ]
37524
- },
37525
- "currentState": {
37526
- "types": [
37527
- "string"
37528
- ]
37529
- },
37530
- "states": {
37531
- "types": [
37532
- "array"
37533
- ],
37534
- "items": {
37535
- "types": [
37536
- "string"
37537
- ]
37538
- }
37539
- },
37540
- "cooldown": {
37541
- "types": [
37542
- "number"
37543
- ]
37544
- }
37545
- },
37546
- "required": [
37547
- "name",
37548
- "currentState",
37549
- "states",
37550
- "cooldown"
37551
- ]
37552
- }
37553
- },
37554
- "previousPosition": {
37555
- "types": [
37556
- "object"
37557
- ],
37558
- "properties": {
37559
- "x": {
37560
- "types": [
37561
- "number"
37562
- ]
37563
- },
37564
- "y": {
37565
- "types": [
37566
- "number"
37567
- ]
37568
- }
37569
- },
37570
- "required": [
37571
- "x",
37572
- "y"
37573
- ]
37574
- },
37575
- "elevation": {
37576
- "types": [
37577
- "number"
37578
- ]
37579
- }
37580
- },
37581
- "required": [
37582
- "id"
37583
- ]
37584
- }
37585
- },
37586
- "features": {
37587
- "types": [
37588
- "array"
37589
- ],
37590
- "description": "Direct feature data — takes priority over entity-derived features.",
37591
- "items": {
37592
- "types": [
37593
- "object"
37594
- ],
37595
- "properties": {
37596
- "id": {
37597
- "types": [
37598
- "string"
37599
- ]
37600
- },
37601
- "x": {
37602
- "types": [
37603
- "number"
37604
- ]
37605
- },
37606
- "y": {
37607
- "types": [
37608
- "number"
37609
- ]
37610
- },
37611
- "z": {
37612
- "types": [
37613
- "number"
37614
- ]
37615
- },
37616
- "type": {
37617
- "types": [
37618
- "string"
37619
- ]
37620
- },
37621
- "sprite": {
37622
- "types": [
37623
- "object"
37624
- ]
37625
- },
37626
- "assetUrl": {
37627
- "types": [
37628
- "object"
37629
- ]
37630
- },
37631
- "color": {
37632
- "types": [
37633
- "string"
37634
- ]
37635
- },
37636
- "elevation": {
37637
- "types": [
37638
- "number"
37639
- ]
37640
- }
37641
- },
37642
- "required": [
37643
- "x",
37644
- "y",
37645
- "type"
37646
- ]
37647
- }
37648
- },
37649
- "assetManifest": {
37650
- "types": [
37651
- "string"
37652
- ],
37653
- "description": "Direct asset manifest — takes priority over entity-derived manifest."
37654
- }
37655
- }
37656
- },
37657
- "world-map-board": {
37658
- "type": "world-map-board",
37659
- "category": "game",
37660
- "tier": "organisms",
37661
- "family": "game",
37662
- "description": "Event Contract: Emits: UI:HERO_SELECT Emits: UI:HERO_MOVE Emits: UI:BATTLE_ENCOUNTER Emits: UI:FEATURE_ENTER Emits: UI:TILE_CLICK",
37663
- "suggestedFor": [
37664
- "world",
37665
- "map",
37666
- "board",
37667
- "world map board"
37668
- ],
37669
- "typicalSize": "large",
37670
- "propsSchema": {
37671
- "className": {
37672
- "types": [
37673
- "string"
37674
- ],
37675
- "description": "Additional CSS classes"
37676
- },
37677
- "isLoading": {
37678
- "types": [
37679
- "boolean"
37680
- ],
37681
- "description": "Loading state indicator"
37682
- },
37683
- "error": {
37684
- "types": [
37685
- "object"
37686
- ],
37687
- "description": "Error state",
37688
- "properties": {
37689
- "message": {
37690
- "types": [
37691
- "string"
37692
- ]
37693
- },
37694
- "name": {
37695
- "types": [
37696
- "string"
37697
- ]
37698
- },
37699
- "code": {
37700
- "types": [
37701
- "string"
37702
- ]
37703
- },
37704
- "stack": {
37705
- "types": [
37706
- "string"
37707
- ]
37708
- }
37709
- },
37710
- "propertyRequired": [
37711
- "message"
37712
- ]
37713
- },
37714
- "entity": {
37715
- "types": [
37716
- "object",
37717
- "array"
37718
- ],
37719
- "description": "World-map board-state entity (single row or array). The board reads `hexes` / `heroes` / `features` arrays + `selectedHeroId` off it.",
37720
- "kind": "entity",
37721
- "cardinality": "collection"
37722
- },
37723
- "tiles": {
37724
- "types": [
37725
- "array"
37726
- ],
37727
- "description": "Direct tile data — takes priority over entity-derived tiles.",
37728
- "items": {
37729
- "types": [
37730
- "object"
37731
- ],
37732
- "properties": {
37733
- "id": {
37734
- "types": [
37735
- "string"
37736
- ]
37737
37409
  },
37738
- "x": {
37739
- "types": [
37740
- "number"
37741
- ]
37742
- },
37743
- "y": {
37744
- "types": [
37745
- "number"
37746
- ]
37747
- },
37748
- "z": {
37749
- "types": [
37750
- "number"
37751
- ]
37752
- },
37753
- "terrain": {
37754
- "types": [
37755
- "string"
37756
- ]
37757
- },
37758
- "type": {
37759
- "types": [
37760
- "string"
37761
- ]
37762
- },
37763
- "terrainSprite": {
37410
+ "modelUrl": {
37411
+ "types": [
37412
+ "asset"
37413
+ ]
37414
+ }
37415
+ },
37416
+ "required": [
37417
+ "x",
37418
+ "y"
37419
+ ]
37420
+ }
37421
+ },
37422
+ "units": {
37423
+ "types": [
37424
+ "array"
37425
+ ],
37426
+ "description": "Direct unit data — takes priority over entity-derived units.",
37427
+ "items": {
37428
+ "types": [
37429
+ "object"
37430
+ ],
37431
+ "properties": {
37432
+ "id": {
37433
+ "types": [
37434
+ "string"
37435
+ ]
37436
+ },
37437
+ "position": {
37438
+ "types": [
37439
+ "object"
37440
+ ],
37441
+ "properties": {
37442
+ "x": {
37443
+ "types": [
37444
+ "number"
37445
+ ]
37446
+ },
37447
+ "y": {
37448
+ "types": [
37449
+ "number"
37450
+ ]
37451
+ }
37452
+ },
37453
+ "required": [
37454
+ "x",
37455
+ "y"
37456
+ ]
37457
+ },
37458
+ "x": {
37459
+ "types": [
37460
+ "number"
37461
+ ]
37462
+ },
37463
+ "y": {
37464
+ "types": [
37465
+ "number"
37466
+ ]
37467
+ },
37468
+ "z": {
37469
+ "types": [
37470
+ "number"
37471
+ ]
37472
+ },
37473
+ "sprite": {
37474
+ "types": [
37475
+ "object"
37476
+ ]
37477
+ },
37478
+ "unitType": {
37479
+ "types": [
37480
+ "string"
37481
+ ]
37482
+ },
37483
+ "heroId": {
37484
+ "types": [
37485
+ "string"
37486
+ ]
37487
+ },
37488
+ "name": {
37489
+ "types": [
37490
+ "string"
37491
+ ]
37492
+ },
37493
+ "team": {
37494
+ "types": [
37495
+ "string"
37496
+ ],
37497
+ "enumValues": [
37498
+ "player",
37499
+ "enemy",
37500
+ "neutral"
37501
+ ]
37502
+ },
37503
+ "faction": {
37504
+ "types": [
37505
+ "string"
37506
+ ],
37507
+ "enumValues": [
37508
+ "player",
37509
+ "enemy",
37510
+ "neutral"
37511
+ ]
37512
+ },
37513
+ "health": {
37514
+ "types": [
37515
+ "number"
37516
+ ]
37517
+ },
37518
+ "maxHealth": {
37519
+ "types": [
37520
+ "number"
37521
+ ]
37522
+ },
37523
+ "traits": {
37524
+ "types": [
37525
+ "array"
37526
+ ],
37527
+ "items": {
37528
+ "types": [
37529
+ "object"
37530
+ ],
37531
+ "properties": {
37532
+ "name": {
37533
+ "types": [
37534
+ "string"
37535
+ ]
37536
+ },
37537
+ "currentState": {
37538
+ "types": [
37539
+ "string"
37540
+ ]
37541
+ },
37542
+ "states": {
37543
+ "types": [
37544
+ "array"
37545
+ ],
37546
+ "items": {
37547
+ "types": [
37548
+ "string"
37549
+ ]
37550
+ }
37551
+ },
37552
+ "cooldown": {
37553
+ "types": [
37554
+ "number"
37555
+ ]
37556
+ }
37557
+ },
37558
+ "required": [
37559
+ "name",
37560
+ "currentState",
37561
+ "states",
37562
+ "cooldown"
37563
+ ]
37564
+ }
37565
+ },
37566
+ "previousPosition": {
37567
+ "types": [
37568
+ "object"
37569
+ ],
37570
+ "properties": {
37571
+ "x": {
37572
+ "types": [
37573
+ "number"
37574
+ ]
37575
+ },
37576
+ "y": {
37577
+ "types": [
37578
+ "number"
37579
+ ]
37580
+ }
37581
+ },
37582
+ "required": [
37583
+ "x",
37584
+ "y"
37585
+ ]
37586
+ },
37587
+ "elevation": {
37588
+ "types": [
37589
+ "number"
37590
+ ]
37591
+ }
37592
+ },
37593
+ "required": [
37594
+ "id"
37595
+ ]
37596
+ }
37597
+ },
37598
+ "features": {
37599
+ "types": [
37600
+ "array"
37601
+ ],
37602
+ "description": "Direct feature data — takes priority over entity-derived features.",
37603
+ "items": {
37604
+ "types": [
37605
+ "object"
37606
+ ],
37607
+ "properties": {
37608
+ "id": {
37609
+ "types": [
37610
+ "string"
37611
+ ]
37612
+ },
37613
+ "x": {
37614
+ "types": [
37615
+ "number"
37616
+ ]
37617
+ },
37618
+ "y": {
37619
+ "types": [
37620
+ "number"
37621
+ ]
37622
+ },
37623
+ "z": {
37624
+ "types": [
37625
+ "number"
37626
+ ]
37627
+ },
37628
+ "type": {
37629
+ "types": [
37630
+ "string"
37631
+ ]
37632
+ },
37633
+ "sprite": {
37634
+ "types": [
37635
+ "object"
37636
+ ]
37637
+ },
37638
+ "assetUrl": {
37639
+ "types": [
37640
+ "object"
37641
+ ]
37642
+ },
37643
+ "color": {
37644
+ "types": [
37645
+ "string"
37646
+ ]
37647
+ },
37648
+ "elevation": {
37649
+ "types": [
37650
+ "number"
37651
+ ]
37652
+ }
37653
+ },
37654
+ "required": [
37655
+ "x",
37656
+ "y",
37657
+ "type"
37658
+ ]
37659
+ }
37660
+ },
37661
+ "assetManifest": {
37662
+ "types": [
37663
+ "string"
37664
+ ],
37665
+ "description": "Direct asset manifest — takes priority over entity-derived manifest."
37666
+ }
37667
+ }
37668
+ },
37669
+ "world-map-board": {
37670
+ "type": "world-map-board",
37671
+ "category": "game",
37672
+ "tier": "organisms",
37673
+ "family": "game",
37674
+ "description": "Event Contract: Emits: UI:HERO_SELECT Emits: UI:HERO_MOVE Emits: UI:BATTLE_ENCOUNTER Emits: UI:FEATURE_ENTER Emits: UI:TILE_CLICK",
37675
+ "suggestedFor": [
37676
+ "world",
37677
+ "map",
37678
+ "board",
37679
+ "world map board"
37680
+ ],
37681
+ "typicalSize": "large",
37682
+ "propsSchema": {
37683
+ "className": {
37684
+ "types": [
37685
+ "string"
37686
+ ],
37687
+ "description": "Additional CSS classes"
37688
+ },
37689
+ "isLoading": {
37690
+ "types": [
37691
+ "boolean"
37692
+ ],
37693
+ "description": "Loading state indicator"
37694
+ },
37695
+ "error": {
37696
+ "types": [
37697
+ "object"
37698
+ ],
37699
+ "description": "Error state",
37700
+ "properties": {
37701
+ "message": {
37702
+ "types": [
37703
+ "string"
37704
+ ]
37705
+ },
37706
+ "name": {
37707
+ "types": [
37708
+ "string"
37709
+ ]
37710
+ },
37711
+ "code": {
37712
+ "types": [
37713
+ "string"
37714
+ ]
37715
+ },
37716
+ "stack": {
37717
+ "types": [
37718
+ "string"
37719
+ ]
37720
+ }
37721
+ },
37722
+ "propertyRequired": [
37723
+ "message"
37724
+ ]
37725
+ },
37726
+ "entity": {
37727
+ "types": [
37728
+ "object",
37729
+ "array"
37730
+ ],
37731
+ "description": "World-map board-state entity (single row or array). The board reads `hexes` / `heroes` / `features` arrays + `selectedHeroId` off it.",
37732
+ "kind": "entity",
37733
+ "cardinality": "collection"
37734
+ },
37735
+ "tiles": {
37736
+ "types": [
37737
+ "array"
37738
+ ],
37739
+ "description": "Direct tile data — takes priority over entity-derived tiles.",
37740
+ "items": {
37741
+ "types": [
37742
+ "object"
37743
+ ],
37744
+ "properties": {
37745
+ "id": {
37746
+ "types": [
37747
+ "string"
37748
+ ]
37749
+ },
37750
+ "x": {
37751
+ "types": [
37752
+ "number"
37753
+ ]
37754
+ },
37755
+ "y": {
37756
+ "types": [
37757
+ "number"
37758
+ ]
37759
+ },
37760
+ "z": {
37761
+ "types": [
37762
+ "number"
37763
+ ]
37764
+ },
37765
+ "terrain": {
37766
+ "types": [
37767
+ "string"
37768
+ ]
37769
+ },
37770
+ "type": {
37771
+ "types": [
37772
+ "string"
37773
+ ]
37774
+ },
37775
+ "terrainSprite": {
37776
+ "types": [
37777
+ "asset"
37778
+ ]
37779
+ },
37780
+ "passable": {
37781
+ "types": [
37782
+ "boolean"
37783
+ ]
37784
+ },
37785
+ "movementCost": {
37786
+ "types": [
37787
+ "number"
37788
+ ]
37789
+ },
37790
+ "tileType": {
37791
+ "types": [
37792
+ "string"
37793
+ ]
37794
+ },
37795
+ "elevation": {
37796
+ "types": [
37797
+ "number"
37798
+ ]
37799
+ },
37800
+ "modelUrl": {
37764
37801
  "types": [
37765
37802
  "asset"
37766
37803
  ]
37767
- },
37768
- "passable": {
37769
- "types": [
37770
- "boolean"
37771
- ]
37772
- },
37773
- "movementCost": {
37774
- "types": [
37775
- "number"
37776
- ]
37777
- },
37778
- "tileType": {
37779
- "types": [
37780
- "string"
37781
- ]
37782
- },
37783
- "elevation": {
37784
- "types": [
37785
- "number"
37786
- ]
37787
37804
  }
37788
37805
  },
37789
37806
  "required": [
@@ -41918,7 +41935,7 @@
41918
41935
  "feature-renderer": {
41919
41936
  "type": "feature-renderer",
41920
41937
  "category": "game",
41921
- "tier": "organisms",
41938
+ "tier": "molecules",
41922
41939
  "family": "game",
41923
41940
  "description": "FeatureRenderer component",
41924
41941
  "suggestedFor": [
@@ -43671,6 +43688,1823 @@
43671
43688
  "description": "Additional class names"
43672
43689
  }
43673
43690
  }
43691
+ },
43692
+ "game-canvas-3d": {
43693
+ "type": "game-canvas-3d",
43694
+ "category": "game",
43695
+ "tier": "molecules",
43696
+ "family": "game",
43697
+ "description": "Props for GameCanvas3D component",
43698
+ "suggestedFor": [
43699
+ "game",
43700
+ "canvas3",
43701
+ "game canvas3 d"
43702
+ ],
43703
+ "typicalSize": "medium",
43704
+ "propsSchema": {
43705
+ "className": {
43706
+ "types": [
43707
+ "string"
43708
+ ],
43709
+ "description": "--- Closed-circuit props (MANDATORY) ---"
43710
+ },
43711
+ "children": {
43712
+ "types": [
43713
+ "node"
43714
+ ],
43715
+ "description": "Children to render inside the 3D canvas (e.g., physics objects, custom meshes)"
43716
+ },
43717
+ "isLoading": {
43718
+ "types": [
43719
+ "boolean"
43720
+ ],
43721
+ "description": "Loading state indicator"
43722
+ },
43723
+ "error": {
43724
+ "types": [
43725
+ "string"
43726
+ ],
43727
+ "description": "Error state"
43728
+ },
43729
+ "entity": {
43730
+ "types": [
43731
+ "string"
43732
+ ],
43733
+ "description": "Entity name for schema-driven auto-fetch"
43734
+ },
43735
+ "tiles": {
43736
+ "types": [
43737
+ "array"
43738
+ ],
43739
+ "description": "Array of tiles to render",
43740
+ "items": {
43741
+ "types": [
43742
+ "object"
43743
+ ],
43744
+ "properties": {
43745
+ "id": {
43746
+ "types": [
43747
+ "string"
43748
+ ]
43749
+ },
43750
+ "x": {
43751
+ "types": [
43752
+ "number"
43753
+ ]
43754
+ },
43755
+ "y": {
43756
+ "types": [
43757
+ "number"
43758
+ ]
43759
+ },
43760
+ "z": {
43761
+ "types": [
43762
+ "number"
43763
+ ]
43764
+ },
43765
+ "terrain": {
43766
+ "types": [
43767
+ "string"
43768
+ ]
43769
+ },
43770
+ "type": {
43771
+ "types": [
43772
+ "string"
43773
+ ]
43774
+ },
43775
+ "terrainSprite": {
43776
+ "types": [
43777
+ "asset"
43778
+ ]
43779
+ },
43780
+ "passable": {
43781
+ "types": [
43782
+ "boolean"
43783
+ ]
43784
+ },
43785
+ "movementCost": {
43786
+ "types": [
43787
+ "number"
43788
+ ]
43789
+ },
43790
+ "tileType": {
43791
+ "types": [
43792
+ "string"
43793
+ ]
43794
+ },
43795
+ "elevation": {
43796
+ "types": [
43797
+ "number"
43798
+ ]
43799
+ },
43800
+ "modelUrl": {
43801
+ "types": [
43802
+ "asset"
43803
+ ]
43804
+ }
43805
+ },
43806
+ "required": [
43807
+ "x",
43808
+ "y"
43809
+ ]
43810
+ },
43811
+ "default": []
43812
+ },
43813
+ "units": {
43814
+ "types": [
43815
+ "array"
43816
+ ],
43817
+ "description": "Array of units to render",
43818
+ "items": {
43819
+ "types": [
43820
+ "object"
43821
+ ],
43822
+ "properties": {
43823
+ "id": {
43824
+ "types": [
43825
+ "string"
43826
+ ]
43827
+ },
43828
+ "position": {
43829
+ "types": [
43830
+ "object"
43831
+ ],
43832
+ "properties": {
43833
+ "x": {
43834
+ "types": [
43835
+ "number"
43836
+ ]
43837
+ },
43838
+ "y": {
43839
+ "types": [
43840
+ "number"
43841
+ ]
43842
+ }
43843
+ },
43844
+ "required": [
43845
+ "x",
43846
+ "y"
43847
+ ]
43848
+ },
43849
+ "x": {
43850
+ "types": [
43851
+ "number"
43852
+ ]
43853
+ },
43854
+ "y": {
43855
+ "types": [
43856
+ "number"
43857
+ ]
43858
+ },
43859
+ "z": {
43860
+ "types": [
43861
+ "number"
43862
+ ]
43863
+ },
43864
+ "sprite": {
43865
+ "types": [
43866
+ "object"
43867
+ ]
43868
+ },
43869
+ "unitType": {
43870
+ "types": [
43871
+ "string"
43872
+ ]
43873
+ },
43874
+ "heroId": {
43875
+ "types": [
43876
+ "string"
43877
+ ]
43878
+ },
43879
+ "name": {
43880
+ "types": [
43881
+ "string"
43882
+ ]
43883
+ },
43884
+ "team": {
43885
+ "types": [
43886
+ "string"
43887
+ ],
43888
+ "enumValues": [
43889
+ "player",
43890
+ "enemy",
43891
+ "neutral"
43892
+ ]
43893
+ },
43894
+ "faction": {
43895
+ "types": [
43896
+ "string"
43897
+ ],
43898
+ "enumValues": [
43899
+ "player",
43900
+ "enemy",
43901
+ "neutral"
43902
+ ]
43903
+ },
43904
+ "health": {
43905
+ "types": [
43906
+ "number"
43907
+ ]
43908
+ },
43909
+ "maxHealth": {
43910
+ "types": [
43911
+ "number"
43912
+ ]
43913
+ },
43914
+ "traits": {
43915
+ "types": [
43916
+ "array"
43917
+ ],
43918
+ "items": {
43919
+ "types": [
43920
+ "object"
43921
+ ],
43922
+ "properties": {
43923
+ "name": {
43924
+ "types": [
43925
+ "string"
43926
+ ]
43927
+ },
43928
+ "currentState": {
43929
+ "types": [
43930
+ "string"
43931
+ ]
43932
+ },
43933
+ "states": {
43934
+ "types": [
43935
+ "array"
43936
+ ],
43937
+ "items": {
43938
+ "types": [
43939
+ "string"
43940
+ ]
43941
+ }
43942
+ },
43943
+ "cooldown": {
43944
+ "types": [
43945
+ "number"
43946
+ ]
43947
+ }
43948
+ },
43949
+ "required": [
43950
+ "name",
43951
+ "currentState",
43952
+ "states",
43953
+ "cooldown"
43954
+ ]
43955
+ }
43956
+ },
43957
+ "previousPosition": {
43958
+ "types": [
43959
+ "object"
43960
+ ],
43961
+ "properties": {
43962
+ "x": {
43963
+ "types": [
43964
+ "number"
43965
+ ]
43966
+ },
43967
+ "y": {
43968
+ "types": [
43969
+ "number"
43970
+ ]
43971
+ }
43972
+ },
43973
+ "required": [
43974
+ "x",
43975
+ "y"
43976
+ ]
43977
+ },
43978
+ "elevation": {
43979
+ "types": [
43980
+ "number"
43981
+ ]
43982
+ }
43983
+ },
43984
+ "required": [
43985
+ "id"
43986
+ ]
43987
+ },
43988
+ "default": []
43989
+ },
43990
+ "features": {
43991
+ "types": [
43992
+ "array"
43993
+ ],
43994
+ "description": "Array of features to render",
43995
+ "items": {
43996
+ "types": [
43997
+ "object"
43998
+ ],
43999
+ "properties": {
44000
+ "id": {
44001
+ "types": [
44002
+ "string"
44003
+ ]
44004
+ },
44005
+ "x": {
44006
+ "types": [
44007
+ "number"
44008
+ ]
44009
+ },
44010
+ "y": {
44011
+ "types": [
44012
+ "number"
44013
+ ]
44014
+ },
44015
+ "z": {
44016
+ "types": [
44017
+ "number"
44018
+ ]
44019
+ },
44020
+ "type": {
44021
+ "types": [
44022
+ "string"
44023
+ ]
44024
+ },
44025
+ "sprite": {
44026
+ "types": [
44027
+ "object"
44028
+ ]
44029
+ },
44030
+ "assetUrl": {
44031
+ "types": [
44032
+ "object"
44033
+ ]
44034
+ },
44035
+ "color": {
44036
+ "types": [
44037
+ "string"
44038
+ ]
44039
+ },
44040
+ "elevation": {
44041
+ "types": [
44042
+ "number"
44043
+ ]
44044
+ }
44045
+ },
44046
+ "required": [
44047
+ "x",
44048
+ "y",
44049
+ "type"
44050
+ ]
44051
+ },
44052
+ "default": []
44053
+ },
44054
+ "events": {
44055
+ "types": [
44056
+ "array"
44057
+ ],
44058
+ "description": "Array of events to display",
44059
+ "items": {
44060
+ "types": [
44061
+ "object"
44062
+ ],
44063
+ "properties": {
44064
+ "id": {
44065
+ "types": [
44066
+ "string"
44067
+ ]
44068
+ },
44069
+ "type": {
44070
+ "types": [
44071
+ "string"
44072
+ ]
44073
+ },
44074
+ "x": {
44075
+ "types": [
44076
+ "number"
44077
+ ]
44078
+ },
44079
+ "z": {
44080
+ "types": [
44081
+ "number"
44082
+ ]
44083
+ },
44084
+ "y": {
44085
+ "types": [
44086
+ "number"
44087
+ ]
44088
+ },
44089
+ "message": {
44090
+ "types": [
44091
+ "string"
44092
+ ]
44093
+ }
44094
+ },
44095
+ "required": [
44096
+ "id",
44097
+ "type",
44098
+ "x"
44099
+ ]
44100
+ },
44101
+ "default": []
44102
+ },
44103
+ "fogOfWar": {
44104
+ "types": [
44105
+ "array"
44106
+ ],
44107
+ "description": "Fog of war data",
44108
+ "items": {
44109
+ "types": [
44110
+ "array"
44111
+ ],
44112
+ "items": {
44113
+ "types": [
44114
+ "boolean"
44115
+ ]
44116
+ }
44117
+ }
44118
+ },
44119
+ "orientation": {
44120
+ "types": [
44121
+ "string"
44122
+ ],
44123
+ "description": "Map orientation",
44124
+ "enumValues": [
44125
+ "standard",
44126
+ "rotated"
44127
+ ],
44128
+ "default": "standard"
44129
+ },
44130
+ "cameraMode": {
44131
+ "types": [
44132
+ "string"
44133
+ ],
44134
+ "description": "Camera mode",
44135
+ "enumValues": [
44136
+ "isometric",
44137
+ "perspective",
44138
+ "top-down"
44139
+ ],
44140
+ "default": "isometric"
44141
+ },
44142
+ "showGrid": {
44143
+ "types": [
44144
+ "boolean"
44145
+ ],
44146
+ "description": "Show grid",
44147
+ "default": true
44148
+ },
44149
+ "showCoordinates": {
44150
+ "types": [
44151
+ "boolean"
44152
+ ],
44153
+ "description": "Show coordinates overlay",
44154
+ "default": false
44155
+ },
44156
+ "showTileInfo": {
44157
+ "types": [
44158
+ "boolean"
44159
+ ],
44160
+ "description": "Show tile information",
44161
+ "default": false
44162
+ },
44163
+ "overlay": {
44164
+ "types": [
44165
+ "string"
44166
+ ],
44167
+ "description": "Overlay control mode",
44168
+ "enumValues": [
44169
+ "default",
44170
+ "hidden",
44171
+ "minimap"
44172
+ ],
44173
+ "default": "default"
44174
+ },
44175
+ "shadows": {
44176
+ "types": [
44177
+ "boolean"
44178
+ ],
44179
+ "description": "Enable shadows",
44180
+ "default": true
44181
+ },
44182
+ "backgroundColor": {
44183
+ "types": [
44184
+ "string"
44185
+ ],
44186
+ "description": "Background color",
44187
+ "default": "#1a1a2e"
44188
+ },
44189
+ "onTileClick": {
44190
+ "types": [
44191
+ "function"
44192
+ ],
44193
+ "description": "Callback when a tile is clicked",
44194
+ "kind": "callback",
44195
+ "callbackArgs": [
44196
+ {
44197
+ "name": "tile",
44198
+ "type": "object",
44199
+ "schema": {
44200
+ "types": [
44201
+ "object"
44202
+ ],
44203
+ "properties": {
44204
+ "id": {
44205
+ "types": [
44206
+ "string"
44207
+ ]
44208
+ },
44209
+ "x": {
44210
+ "types": [
44211
+ "number"
44212
+ ]
44213
+ },
44214
+ "y": {
44215
+ "types": [
44216
+ "number"
44217
+ ]
44218
+ },
44219
+ "z": {
44220
+ "types": [
44221
+ "number"
44222
+ ]
44223
+ },
44224
+ "terrain": {
44225
+ "types": [
44226
+ "string"
44227
+ ]
44228
+ },
44229
+ "type": {
44230
+ "types": [
44231
+ "string"
44232
+ ]
44233
+ },
44234
+ "terrainSprite": {
44235
+ "types": [
44236
+ "asset"
44237
+ ]
44238
+ },
44239
+ "passable": {
44240
+ "types": [
44241
+ "boolean"
44242
+ ]
44243
+ },
44244
+ "movementCost": {
44245
+ "types": [
44246
+ "number"
44247
+ ]
44248
+ },
44249
+ "tileType": {
44250
+ "types": [
44251
+ "string"
44252
+ ]
44253
+ },
44254
+ "elevation": {
44255
+ "types": [
44256
+ "number"
44257
+ ]
44258
+ },
44259
+ "modelUrl": {
44260
+ "types": [
44261
+ "asset"
44262
+ ]
44263
+ }
44264
+ },
44265
+ "required": [
44266
+ "x",
44267
+ "y"
44268
+ ]
44269
+ }
44270
+ },
44271
+ {
44272
+ "name": "event",
44273
+ "type": "object"
44274
+ }
44275
+ ],
44276
+ "nonEmittable": true
44277
+ },
44278
+ "onUnitClick": {
44279
+ "types": [
44280
+ "function"
44281
+ ],
44282
+ "description": "Callback when a unit is clicked",
44283
+ "kind": "callback",
44284
+ "callbackArgs": [
44285
+ {
44286
+ "name": "unit",
44287
+ "type": "object",
44288
+ "schema": {
44289
+ "types": [
44290
+ "object"
44291
+ ],
44292
+ "properties": {
44293
+ "id": {
44294
+ "types": [
44295
+ "string"
44296
+ ]
44297
+ },
44298
+ "position": {
44299
+ "types": [
44300
+ "object"
44301
+ ],
44302
+ "properties": {
44303
+ "x": {
44304
+ "types": [
44305
+ "number"
44306
+ ]
44307
+ },
44308
+ "y": {
44309
+ "types": [
44310
+ "number"
44311
+ ]
44312
+ }
44313
+ },
44314
+ "required": [
44315
+ "x",
44316
+ "y"
44317
+ ]
44318
+ },
44319
+ "x": {
44320
+ "types": [
44321
+ "number"
44322
+ ]
44323
+ },
44324
+ "y": {
44325
+ "types": [
44326
+ "number"
44327
+ ]
44328
+ },
44329
+ "z": {
44330
+ "types": [
44331
+ "number"
44332
+ ]
44333
+ },
44334
+ "sprite": {
44335
+ "types": [
44336
+ "object"
44337
+ ]
44338
+ },
44339
+ "unitType": {
44340
+ "types": [
44341
+ "string"
44342
+ ]
44343
+ },
44344
+ "heroId": {
44345
+ "types": [
44346
+ "string"
44347
+ ]
44348
+ },
44349
+ "name": {
44350
+ "types": [
44351
+ "string"
44352
+ ]
44353
+ },
44354
+ "team": {
44355
+ "types": [
44356
+ "string"
44357
+ ],
44358
+ "enumValues": [
44359
+ "player",
44360
+ "enemy",
44361
+ "neutral"
44362
+ ]
44363
+ },
44364
+ "faction": {
44365
+ "types": [
44366
+ "string"
44367
+ ],
44368
+ "enumValues": [
44369
+ "player",
44370
+ "enemy",
44371
+ "neutral"
44372
+ ]
44373
+ },
44374
+ "health": {
44375
+ "types": [
44376
+ "number"
44377
+ ]
44378
+ },
44379
+ "maxHealth": {
44380
+ "types": [
44381
+ "number"
44382
+ ]
44383
+ },
44384
+ "traits": {
44385
+ "types": [
44386
+ "array"
44387
+ ],
44388
+ "items": {
44389
+ "types": [
44390
+ "object"
44391
+ ],
44392
+ "properties": {
44393
+ "name": {
44394
+ "types": [
44395
+ "string"
44396
+ ]
44397
+ },
44398
+ "currentState": {
44399
+ "types": [
44400
+ "string"
44401
+ ]
44402
+ },
44403
+ "states": {
44404
+ "types": [
44405
+ "array"
44406
+ ],
44407
+ "items": {
44408
+ "types": [
44409
+ "string"
44410
+ ]
44411
+ }
44412
+ },
44413
+ "cooldown": {
44414
+ "types": [
44415
+ "number"
44416
+ ]
44417
+ }
44418
+ },
44419
+ "required": [
44420
+ "name",
44421
+ "currentState",
44422
+ "states",
44423
+ "cooldown"
44424
+ ]
44425
+ }
44426
+ },
44427
+ "previousPosition": {
44428
+ "types": [
44429
+ "object"
44430
+ ],
44431
+ "properties": {
44432
+ "x": {
44433
+ "types": [
44434
+ "number"
44435
+ ]
44436
+ },
44437
+ "y": {
44438
+ "types": [
44439
+ "number"
44440
+ ]
44441
+ }
44442
+ },
44443
+ "required": [
44444
+ "x",
44445
+ "y"
44446
+ ]
44447
+ },
44448
+ "elevation": {
44449
+ "types": [
44450
+ "number"
44451
+ ]
44452
+ }
44453
+ },
44454
+ "required": [
44455
+ "id"
44456
+ ]
44457
+ }
44458
+ },
44459
+ {
44460
+ "name": "event",
44461
+ "type": "object"
44462
+ }
44463
+ ],
44464
+ "nonEmittable": true
44465
+ },
44466
+ "onFeatureClick": {
44467
+ "types": [
44468
+ "function"
44469
+ ],
44470
+ "description": "Callback when a feature is clicked",
44471
+ "kind": "callback",
44472
+ "callbackArgs": [
44473
+ {
44474
+ "name": "feature",
44475
+ "type": "object",
44476
+ "schema": {
44477
+ "types": [
44478
+ "object"
44479
+ ],
44480
+ "properties": {
44481
+ "id": {
44482
+ "types": [
44483
+ "string"
44484
+ ]
44485
+ },
44486
+ "x": {
44487
+ "types": [
44488
+ "number"
44489
+ ]
44490
+ },
44491
+ "y": {
44492
+ "types": [
44493
+ "number"
44494
+ ]
44495
+ },
44496
+ "z": {
44497
+ "types": [
44498
+ "number"
44499
+ ]
44500
+ },
44501
+ "type": {
44502
+ "types": [
44503
+ "string"
44504
+ ]
44505
+ },
44506
+ "sprite": {
44507
+ "types": [
44508
+ "object"
44509
+ ]
44510
+ },
44511
+ "assetUrl": {
44512
+ "types": [
44513
+ "object"
44514
+ ]
44515
+ },
44516
+ "color": {
44517
+ "types": [
44518
+ "string"
44519
+ ]
44520
+ },
44521
+ "elevation": {
44522
+ "types": [
44523
+ "number"
44524
+ ]
44525
+ }
44526
+ },
44527
+ "required": [
44528
+ "x",
44529
+ "y",
44530
+ "type"
44531
+ ]
44532
+ }
44533
+ },
44534
+ {
44535
+ "name": "event",
44536
+ "type": "object"
44537
+ }
44538
+ ],
44539
+ "nonEmittable": true
44540
+ },
44541
+ "onCanvasClick": {
44542
+ "types": [
44543
+ "function"
44544
+ ],
44545
+ "description": "Callback when canvas is clicked (background)",
44546
+ "kind": "callback",
44547
+ "callbackArgs": [
44548
+ {
44549
+ "name": "event",
44550
+ "type": "object"
44551
+ }
44552
+ ],
44553
+ "nonEmittable": true
44554
+ },
44555
+ "onTileHover": {
44556
+ "types": [
44557
+ "function"
44558
+ ],
44559
+ "description": "Callback when mouse moves over a tile",
44560
+ "kind": "callback",
44561
+ "callbackArgs": [
44562
+ {
44563
+ "name": "tile",
44564
+ "type": "object",
44565
+ "schema": {
44566
+ "types": [
44567
+ "object"
44568
+ ],
44569
+ "properties": {
44570
+ "id": {
44571
+ "types": [
44572
+ "string"
44573
+ ]
44574
+ },
44575
+ "x": {
44576
+ "types": [
44577
+ "number"
44578
+ ]
44579
+ },
44580
+ "y": {
44581
+ "types": [
44582
+ "number"
44583
+ ]
44584
+ },
44585
+ "z": {
44586
+ "types": [
44587
+ "number"
44588
+ ]
44589
+ },
44590
+ "terrain": {
44591
+ "types": [
44592
+ "string"
44593
+ ]
44594
+ },
44595
+ "type": {
44596
+ "types": [
44597
+ "string"
44598
+ ]
44599
+ },
44600
+ "terrainSprite": {
44601
+ "types": [
44602
+ "asset"
44603
+ ]
44604
+ },
44605
+ "passable": {
44606
+ "types": [
44607
+ "boolean"
44608
+ ]
44609
+ },
44610
+ "movementCost": {
44611
+ "types": [
44612
+ "number"
44613
+ ]
44614
+ },
44615
+ "tileType": {
44616
+ "types": [
44617
+ "string"
44618
+ ]
44619
+ },
44620
+ "elevation": {
44621
+ "types": [
44622
+ "number"
44623
+ ]
44624
+ },
44625
+ "modelUrl": {
44626
+ "types": [
44627
+ "asset"
44628
+ ]
44629
+ }
44630
+ },
44631
+ "required": [
44632
+ "x",
44633
+ "y"
44634
+ ]
44635
+ }
44636
+ },
44637
+ {
44638
+ "name": "event",
44639
+ "type": "object"
44640
+ }
44641
+ ],
44642
+ "nonEmittable": true
44643
+ },
44644
+ "onUnitAnimation": {
44645
+ "types": [
44646
+ "function"
44647
+ ],
44648
+ "description": "Callback for unit animation state change",
44649
+ "kind": "callback",
44650
+ "callbackArgs": [
44651
+ {
44652
+ "name": "unitId",
44653
+ "type": "string"
44654
+ },
44655
+ {
44656
+ "name": "state",
44657
+ "type": "string"
44658
+ }
44659
+ ]
44660
+ },
44661
+ "assetLoader": {
44662
+ "types": [
44663
+ "object"
44664
+ ],
44665
+ "description": "Asset loader instance (uses global singleton if not provided)"
44666
+ },
44667
+ "tileRenderer": {
44668
+ "types": [
44669
+ "object"
44670
+ ],
44671
+ "description": "Custom tile renderer component"
44672
+ },
44673
+ "unitRenderer": {
44674
+ "types": [
44675
+ "object"
44676
+ ],
44677
+ "description": "Custom unit renderer component"
44678
+ },
44679
+ "featureRenderer": {
44680
+ "types": [
44681
+ "object"
44682
+ ],
44683
+ "description": "Custom feature renderer component"
44684
+ },
44685
+ "preloadAssets": {
44686
+ "types": [
44687
+ "array"
44688
+ ],
44689
+ "description": "URLs to preload",
44690
+ "items": {
44691
+ "types": [
44692
+ "string"
44693
+ ]
44694
+ },
44695
+ "default": []
44696
+ },
44697
+ "tileClickEvent": {
44698
+ "types": [
44699
+ "string"
44700
+ ],
44701
+ "description": "Declarative event: tile click",
44702
+ "kind": "event-ref",
44703
+ "emitPayloadSchema": [
44704
+ {
44705
+ "name": "tileId",
44706
+ "type": "string",
44707
+ "required": true
44708
+ },
44709
+ {
44710
+ "name": "x",
44711
+ "type": "number",
44712
+ "required": true
44713
+ },
44714
+ {
44715
+ "name": "z",
44716
+ "type": "number",
44717
+ "required": true
44718
+ },
44719
+ {
44720
+ "name": "type",
44721
+ "type": "string",
44722
+ "required": false
44723
+ },
44724
+ {
44725
+ "name": "terrain",
44726
+ "type": "string",
44727
+ "required": false
44728
+ },
44729
+ {
44730
+ "name": "elevation",
44731
+ "type": "number",
44732
+ "required": false
44733
+ }
44734
+ ]
44735
+ },
44736
+ "unitClickEvent": {
44737
+ "types": [
44738
+ "string"
44739
+ ],
44740
+ "description": "Declarative event: unit click",
44741
+ "kind": "event-ref",
44742
+ "emitPayloadSchema": [
44743
+ {
44744
+ "name": "unitId",
44745
+ "type": "string",
44746
+ "required": true
44747
+ },
44748
+ {
44749
+ "name": "x",
44750
+ "type": "number",
44751
+ "required": true
44752
+ },
44753
+ {
44754
+ "name": "z",
44755
+ "type": "number",
44756
+ "required": true
44757
+ },
44758
+ {
44759
+ "name": "unitType",
44760
+ "type": "string",
44761
+ "required": false
44762
+ },
44763
+ {
44764
+ "name": "name",
44765
+ "type": "string",
44766
+ "required": false
44767
+ },
44768
+ {
44769
+ "name": "team",
44770
+ "type": "string",
44771
+ "required": false
44772
+ },
44773
+ {
44774
+ "name": "faction",
44775
+ "type": "string",
44776
+ "required": false
44777
+ },
44778
+ {
44779
+ "name": "health",
44780
+ "type": "number",
44781
+ "required": false
44782
+ },
44783
+ {
44784
+ "name": "maxHealth",
44785
+ "type": "number",
44786
+ "required": false
44787
+ }
44788
+ ]
44789
+ },
44790
+ "featureClickEvent": {
44791
+ "types": [
44792
+ "string"
44793
+ ],
44794
+ "description": "Declarative event: feature click",
44795
+ "kind": "event-ref",
44796
+ "emitPayloadSchema": [
44797
+ {
44798
+ "name": "featureId",
44799
+ "type": "string",
44800
+ "required": true
44801
+ },
44802
+ {
44803
+ "name": "x",
44804
+ "type": "number",
44805
+ "required": true
44806
+ },
44807
+ {
44808
+ "name": "z",
44809
+ "type": "number",
44810
+ "required": true
44811
+ },
44812
+ {
44813
+ "name": "type",
44814
+ "type": "string",
44815
+ "required": false
44816
+ },
44817
+ {
44818
+ "name": "elevation",
44819
+ "type": "number",
44820
+ "required": false
44821
+ }
44822
+ ]
44823
+ },
44824
+ "canvasClickEvent": {
44825
+ "types": [
44826
+ "string"
44827
+ ],
44828
+ "description": "Declarative event: canvas click",
44829
+ "kind": "event-ref",
44830
+ "emitPayloadSchema": [
44831
+ {
44832
+ "name": "clientX",
44833
+ "type": "number",
44834
+ "required": true
44835
+ },
44836
+ {
44837
+ "name": "clientY",
44838
+ "type": "number",
44839
+ "required": true
44840
+ },
44841
+ {
44842
+ "name": "button",
44843
+ "type": "number",
44844
+ "required": true
44845
+ }
44846
+ ]
44847
+ },
44848
+ "tileHoverEvent": {
44849
+ "types": [
44850
+ "string"
44851
+ ],
44852
+ "description": "Declarative event: tile hover",
44853
+ "kind": "event-ref",
44854
+ "emitPayloadSchema": [
44855
+ {
44856
+ "name": "tileId",
44857
+ "type": "string",
44858
+ "required": true
44859
+ },
44860
+ {
44861
+ "name": "x",
44862
+ "type": "number",
44863
+ "required": true
44864
+ },
44865
+ {
44866
+ "name": "z",
44867
+ "type": "number",
44868
+ "required": true
44869
+ },
44870
+ {
44871
+ "name": "type",
44872
+ "type": "string",
44873
+ "required": false
44874
+ }
44875
+ ]
44876
+ },
44877
+ "tileLeaveEvent": {
44878
+ "types": [
44879
+ "string"
44880
+ ],
44881
+ "description": "Declarative event: tile leave",
44882
+ "kind": "event-ref",
44883
+ "emitPayloadSchema": []
44884
+ },
44885
+ "unitAnimationEvent": {
44886
+ "types": [
44887
+ "string"
44888
+ ],
44889
+ "description": "Declarative event: unit animation",
44890
+ "kind": "event-ref",
44891
+ "emitPayloadSchema": [
44892
+ {
44893
+ "name": "unitId",
44894
+ "type": "string",
44895
+ "required": true
44896
+ },
44897
+ {
44898
+ "name": "state",
44899
+ "type": "string",
44900
+ "required": true
44901
+ },
44902
+ {
44903
+ "name": "timestamp",
44904
+ "type": "number",
44905
+ "required": true
44906
+ }
44907
+ ]
44908
+ },
44909
+ "cameraChangeEvent": {
44910
+ "types": [
44911
+ "string"
44912
+ ],
44913
+ "description": "Declarative event: camera change",
44914
+ "kind": "event-ref",
44915
+ "emitPayloadSchema": [
44916
+ {
44917
+ "name": "position",
44918
+ "type": "object",
44919
+ "required": true
44920
+ },
44921
+ {
44922
+ "name": "timestamp",
44923
+ "type": "number",
44924
+ "required": true
44925
+ }
44926
+ ]
44927
+ },
44928
+ "loadingMessage": {
44929
+ "types": [
44930
+ "string"
44931
+ ],
44932
+ "description": "Loading message",
44933
+ "default": "Loading 3D Scene..."
44934
+ },
44935
+ "useInstancing": {
44936
+ "types": [
44937
+ "boolean"
44938
+ ],
44939
+ "description": "Whether to use instancing for tiles",
44940
+ "default": true
44941
+ },
44942
+ "validMoves": {
44943
+ "types": [
44944
+ "array"
44945
+ ],
44946
+ "description": "Valid move positions",
44947
+ "items": {
44948
+ "types": [
44949
+ "object"
44950
+ ],
44951
+ "properties": {
44952
+ "x": {
44953
+ "types": [
44954
+ "number"
44955
+ ]
44956
+ },
44957
+ "z": {
44958
+ "types": [
44959
+ "number"
44960
+ ]
44961
+ }
44962
+ },
44963
+ "required": [
44964
+ "x",
44965
+ "z"
44966
+ ]
44967
+ },
44968
+ "default": []
44969
+ },
44970
+ "attackTargets": {
44971
+ "types": [
44972
+ "array"
44973
+ ],
44974
+ "description": "Attack target positions",
44975
+ "items": {
44976
+ "types": [
44977
+ "object"
44978
+ ],
44979
+ "properties": {
44980
+ "x": {
44981
+ "types": [
44982
+ "number"
44983
+ ]
44984
+ },
44985
+ "z": {
44986
+ "types": [
44987
+ "number"
44988
+ ]
44989
+ }
44990
+ },
44991
+ "required": [
44992
+ "x",
44993
+ "z"
44994
+ ]
44995
+ },
44996
+ "default": []
44997
+ },
44998
+ "selectedTileIds": {
44999
+ "types": [
45000
+ "array"
45001
+ ],
45002
+ "description": "Selected tile IDs",
45003
+ "items": {
45004
+ "types": [
45005
+ "string"
45006
+ ]
45007
+ },
45008
+ "default": []
45009
+ },
45010
+ "selectedUnitId": {
45011
+ "types": [
45012
+ "string"
45013
+ ],
45014
+ "description": "Selected unit ID",
45015
+ "default": null
45016
+ }
45017
+ }
45018
+ },
45019
+ "game-canvas-3d-battle-template": {
45020
+ "type": "game-canvas-3d-battle-template",
45021
+ "category": "game",
45022
+ "tier": "templates",
45023
+ "family": "game",
45024
+ "description": "GameCanvas3DBattleTemplate Pure declarative template wrapper for 3D battle scenes. Optimized for tactical combat view with turn indicators. Page: Battle3DPage Entity: Battle3D ViewType: detail Events Emitted: - TILE_SELECTED - When a tile is clicked - UNIT_SELECTED - When a unit is clicked - UNIT_ATTACK - When attacking a unit - UNIT_MOVE - When moving a unit - END_TURN - When ending turn - EXIT_BATTLE - When exiting battle",
45025
+ "suggestedFor": [
45026
+ "game",
45027
+ "canvas3",
45028
+ "battle",
45029
+ "template",
45030
+ "game canvas3 d battle template"
45031
+ ],
45032
+ "typicalSize": "full",
45033
+ "propsSchema": {
45034
+ "entity": {
45035
+ "types": [
45036
+ "object"
45037
+ ],
45038
+ "description": "Entity data, the sole source of runtime state",
45039
+ "required": true
45040
+ },
45041
+ "className": {
45042
+ "types": [
45043
+ "string"
45044
+ ],
45045
+ "description": "External styling override"
45046
+ },
45047
+ "cameraMode": {
45048
+ "types": [
45049
+ "string"
45050
+ ],
45051
+ "description": "3D camera mode - defaults to perspective for dramatic effect",
45052
+ "enumValues": [
45053
+ "isometric",
45054
+ "perspective",
45055
+ "top-down"
45056
+ ],
45057
+ "default": "perspective"
45058
+ },
45059
+ "showGrid": {
45060
+ "types": [
45061
+ "boolean"
45062
+ ],
45063
+ "description": "Show grid helper",
45064
+ "default": true
45065
+ },
45066
+ "shadows": {
45067
+ "types": [
45068
+ "boolean"
45069
+ ],
45070
+ "description": "Enable shadows",
45071
+ "default": true
45072
+ },
45073
+ "backgroundColor": {
45074
+ "types": [
45075
+ "string"
45076
+ ],
45077
+ "description": "Background color - darker for battle atmosphere",
45078
+ "default": "#2a1a1a"
45079
+ },
45080
+ "tileClickEvent": {
45081
+ "types": [
45082
+ "string"
45083
+ ],
45084
+ "description": "Event name for tile clicks"
45085
+ },
45086
+ "unitClickEvent": {
45087
+ "types": [
45088
+ "string"
45089
+ ],
45090
+ "description": "Event name for unit clicks"
45091
+ },
45092
+ "unitAttackEvent": {
45093
+ "types": [
45094
+ "string"
45095
+ ],
45096
+ "description": "Event name for unit attack"
45097
+ },
45098
+ "unitMoveEvent": {
45099
+ "types": [
45100
+ "string"
45101
+ ],
45102
+ "description": "Event name for unit move"
45103
+ },
45104
+ "endTurnEvent": {
45105
+ "types": [
45106
+ "string"
45107
+ ],
45108
+ "description": "Event name for ending turn"
45109
+ },
45110
+ "exitEvent": {
45111
+ "types": [
45112
+ "string"
45113
+ ],
45114
+ "description": "Event name for exiting battle"
45115
+ },
45116
+ "selectedUnitId": {
45117
+ "types": [
45118
+ "string"
45119
+ ],
45120
+ "description": "Currently selected unit ID"
45121
+ },
45122
+ "validMoves": {
45123
+ "types": [
45124
+ "array"
45125
+ ],
45126
+ "description": "Valid move positions",
45127
+ "items": {
45128
+ "types": [
45129
+ "object"
45130
+ ],
45131
+ "properties": {
45132
+ "x": {
45133
+ "types": [
45134
+ "number"
45135
+ ]
45136
+ },
45137
+ "z": {
45138
+ "types": [
45139
+ "number"
45140
+ ]
45141
+ }
45142
+ },
45143
+ "required": [
45144
+ "x",
45145
+ "z"
45146
+ ]
45147
+ }
45148
+ },
45149
+ "attackTargets": {
45150
+ "types": [
45151
+ "array"
45152
+ ],
45153
+ "description": "Valid attack targets",
45154
+ "items": {
45155
+ "types": [
45156
+ "object"
45157
+ ],
45158
+ "properties": {
45159
+ "x": {
45160
+ "types": [
45161
+ "number"
45162
+ ]
45163
+ },
45164
+ "z": {
45165
+ "types": [
45166
+ "number"
45167
+ ]
45168
+ }
45169
+ },
45170
+ "required": [
45171
+ "x",
45172
+ "z"
45173
+ ]
45174
+ }
45175
+ },
45176
+ "showTurnIndicator": {
45177
+ "types": [
45178
+ "boolean"
45179
+ ],
45180
+ "description": "Show turn indicator overlay"
45181
+ }
45182
+ }
45183
+ },
45184
+ "game-canvas-3d-castle-template": {
45185
+ "type": "game-canvas-3d-castle-template",
45186
+ "category": "game",
45187
+ "tier": "templates",
45188
+ "family": "game",
45189
+ "description": "GameCanvas3DCastleTemplate Pure declarative template wrapper for 3D castle/settlement view. Shows castle layout with buildings and garrisoned units. Page: Castle3DPage, Settlement3DPage Entity: Castle3D, Settlement3D ViewType: detail Events Emitted: - BUILDING_SELECTED - When a building is clicked - UNIT_SELECTED - When a garrison unit is clicked - BUILD - When building/upgrading - RECRUIT - When recruiting units - EXIT - When exiting castle view",
45190
+ "suggestedFor": [
45191
+ "game",
45192
+ "canvas3",
45193
+ "castle",
45194
+ "template",
45195
+ "game canvas3 d castle template"
45196
+ ],
45197
+ "typicalSize": "full",
45198
+ "propsSchema": {
45199
+ "entity": {
45200
+ "types": [
45201
+ "object"
45202
+ ],
45203
+ "description": "Entity data, the sole source of runtime state",
45204
+ "required": true
45205
+ },
45206
+ "className": {
45207
+ "types": [
45208
+ "string"
45209
+ ],
45210
+ "description": "External styling override"
45211
+ },
45212
+ "cameraMode": {
45213
+ "types": [
45214
+ "string"
45215
+ ],
45216
+ "description": "3D camera mode",
45217
+ "enumValues": [
45218
+ "isometric",
45219
+ "perspective",
45220
+ "top-down"
45221
+ ],
45222
+ "default": "isometric"
45223
+ },
45224
+ "showGrid": {
45225
+ "types": [
45226
+ "boolean"
45227
+ ],
45228
+ "description": "Show grid helper",
45229
+ "default": true
45230
+ },
45231
+ "shadows": {
45232
+ "types": [
45233
+ "boolean"
45234
+ ],
45235
+ "description": "Enable shadows",
45236
+ "default": true
45237
+ },
45238
+ "backgroundColor": {
45239
+ "types": [
45240
+ "string"
45241
+ ],
45242
+ "description": "Background color",
45243
+ "default": "#1e1e2e"
45244
+ },
45245
+ "buildingClickEvent": {
45246
+ "types": [
45247
+ "string"
45248
+ ],
45249
+ "description": "Event name for building clicks"
45250
+ },
45251
+ "unitClickEvent": {
45252
+ "types": [
45253
+ "string"
45254
+ ],
45255
+ "description": "Event name for unit clicks"
45256
+ },
45257
+ "buildEvent": {
45258
+ "types": [
45259
+ "string"
45260
+ ],
45261
+ "description": "Event name for build action"
45262
+ },
45263
+ "recruitEvent": {
45264
+ "types": [
45265
+ "string"
45266
+ ],
45267
+ "description": "Event name for recruit action"
45268
+ },
45269
+ "exitEvent": {
45270
+ "types": [
45271
+ "string"
45272
+ ],
45273
+ "description": "Event name for exit"
45274
+ },
45275
+ "selectedBuildingId": {
45276
+ "types": [
45277
+ "string"
45278
+ ],
45279
+ "description": "Currently selected building ID"
45280
+ },
45281
+ "availableBuildSites": {
45282
+ "types": [
45283
+ "array"
45284
+ ],
45285
+ "description": "Available build positions",
45286
+ "items": {
45287
+ "types": [
45288
+ "object"
45289
+ ],
45290
+ "properties": {
45291
+ "x": {
45292
+ "types": [
45293
+ "number"
45294
+ ]
45295
+ },
45296
+ "z": {
45297
+ "types": [
45298
+ "number"
45299
+ ]
45300
+ }
45301
+ },
45302
+ "required": [
45303
+ "x",
45304
+ "z"
45305
+ ]
45306
+ }
45307
+ },
45308
+ "showHeader": {
45309
+ "types": [
45310
+ "boolean"
45311
+ ],
45312
+ "description": "Show castle name header",
45313
+ "default": true
45314
+ },
45315
+ "selectedTileIds": {
45316
+ "types": [
45317
+ "array"
45318
+ ],
45319
+ "description": "Pre-computed selected tile IDs array",
45320
+ "items": {
45321
+ "types": [
45322
+ "string"
45323
+ ]
45324
+ },
45325
+ "default": []
45326
+ }
45327
+ }
45328
+ },
45329
+ "game-canvas-3d-world-map-template": {
45330
+ "type": "game-canvas-3d-world-map-template",
45331
+ "category": "game",
45332
+ "tier": "templates",
45333
+ "family": "game",
45334
+ "description": "GameCanvas3DWorldMapTemplate Pure declarative template wrapper for 3D world map. No hooks, no callbacks, no local state -- just entity data and config props. Page: WorldMap3DPage Entity: WorldMap3D ViewType: detail Events Emitted: - TILE_SELECTED - When a tile is clicked ({ tileId, x, z, type }) - UNIT_SELECTED - When a unit is clicked ({ unitId, x, z, name }) - FEATURE_SELECTED - When a feature is clicked ({ featureId, x, z, type }) - TILE_HOVERED - When hovering over a tile ({ tileId, x, z }) - TILE_LEAVE - When leaving a tile ({}) - CAMERA_CHANGED - When camera position changes ({ position })",
45335
+ "suggestedFor": [
45336
+ "game",
45337
+ "canvas3",
45338
+ "world",
45339
+ "map",
45340
+ "template",
45341
+ "game canvas3 d world map template"
45342
+ ],
45343
+ "typicalSize": "full",
45344
+ "propsSchema": {
45345
+ "entity": {
45346
+ "types": [
45347
+ "object"
45348
+ ],
45349
+ "description": "Entity data, the sole source of runtime state",
45350
+ "required": true
45351
+ },
45352
+ "className": {
45353
+ "types": [
45354
+ "string"
45355
+ ],
45356
+ "description": "External styling override"
45357
+ },
45358
+ "cameraMode": {
45359
+ "types": [
45360
+ "string"
45361
+ ],
45362
+ "description": "3D camera mode",
45363
+ "enumValues": [
45364
+ "isometric",
45365
+ "perspective",
45366
+ "top-down"
45367
+ ],
45368
+ "default": "isometric"
45369
+ },
45370
+ "showGrid": {
45371
+ "types": [
45372
+ "boolean"
45373
+ ],
45374
+ "description": "Show grid helper",
45375
+ "default": true
45376
+ },
45377
+ "showCoordinates": {
45378
+ "types": [
45379
+ "boolean"
45380
+ ],
45381
+ "description": "Show coordinate overlay",
45382
+ "default": true
45383
+ },
45384
+ "showTileInfo": {
45385
+ "types": [
45386
+ "boolean"
45387
+ ],
45388
+ "description": "Show tile info on hover",
45389
+ "default": true
45390
+ },
45391
+ "shadows": {
45392
+ "types": [
45393
+ "boolean"
45394
+ ],
45395
+ "description": "Enable shadows",
45396
+ "default": true
45397
+ },
45398
+ "backgroundColor": {
45399
+ "types": [
45400
+ "string"
45401
+ ],
45402
+ "description": "Background color",
45403
+ "default": "#1a1a2e"
45404
+ },
45405
+ "tileClickEvent": {
45406
+ "types": [
45407
+ "string"
45408
+ ],
45409
+ "description": "Event name for tile clicks"
45410
+ },
45411
+ "unitClickEvent": {
45412
+ "types": [
45413
+ "string"
45414
+ ],
45415
+ "description": "Event name for unit clicks"
45416
+ },
45417
+ "featureClickEvent": {
45418
+ "types": [
45419
+ "string"
45420
+ ],
45421
+ "description": "Event name for feature clicks"
45422
+ },
45423
+ "tileHoverEvent": {
45424
+ "types": [
45425
+ "string"
45426
+ ],
45427
+ "description": "Event name for tile hover"
45428
+ },
45429
+ "tileLeaveEvent": {
45430
+ "types": [
45431
+ "string"
45432
+ ],
45433
+ "description": "Event name for tile leave"
45434
+ },
45435
+ "cameraChangeEvent": {
45436
+ "types": [
45437
+ "string"
45438
+ ],
45439
+ "description": "Event name for camera changes"
45440
+ },
45441
+ "exitEvent": {
45442
+ "types": [
45443
+ "string"
45444
+ ],
45445
+ "description": "Exit/back event name"
45446
+ },
45447
+ "selectedUnitId": {
45448
+ "types": [
45449
+ "string"
45450
+ ],
45451
+ "description": "Currently selected unit ID"
45452
+ },
45453
+ "validMoves": {
45454
+ "types": [
45455
+ "array"
45456
+ ],
45457
+ "description": "Valid move positions for selected unit",
45458
+ "items": {
45459
+ "types": [
45460
+ "object"
45461
+ ],
45462
+ "properties": {
45463
+ "x": {
45464
+ "types": [
45465
+ "number"
45466
+ ]
45467
+ },
45468
+ "z": {
45469
+ "types": [
45470
+ "number"
45471
+ ]
45472
+ }
45473
+ },
45474
+ "required": [
45475
+ "x",
45476
+ "z"
45477
+ ]
45478
+ }
45479
+ },
45480
+ "attackTargets": {
45481
+ "types": [
45482
+ "array"
45483
+ ],
45484
+ "description": "Attack target positions",
45485
+ "items": {
45486
+ "types": [
45487
+ "object"
45488
+ ],
45489
+ "properties": {
45490
+ "x": {
45491
+ "types": [
45492
+ "number"
45493
+ ]
45494
+ },
45495
+ "z": {
45496
+ "types": [
45497
+ "number"
45498
+ ]
45499
+ }
45500
+ },
45501
+ "required": [
45502
+ "x",
45503
+ "z"
45504
+ ]
45505
+ }
45506
+ }
45507
+ }
43674
45508
  }
43675
45509
  },
43676
45510
  "categories": [