@almadar/patterns 2.46.0 → 2.47.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-17T02:56:15.601Z",
4
+ exportedAt: "2026-06-17T08:23:54.917Z",
5
5
  patterns: {
6
6
  "entity-table": {
7
7
  type: "entity-table",
@@ -41919,7 +41919,7 @@ var patterns_registry_default = {
41919
41919
  "feature-renderer": {
41920
41920
  type: "feature-renderer",
41921
41921
  category: "game",
41922
- tier: "organisms",
41922
+ tier: "molecules",
41923
41923
  family: "game",
41924
41924
  description: "FeatureRenderer component",
41925
41925
  suggestedFor: [
@@ -43242,434 +43242,2236 @@ var patterns_registry_default = {
43242
43242
  ]
43243
43243
  }
43244
43244
  },
43245
- fields: {
43245
+ fields: {
43246
+ types: [
43247
+ "array"
43248
+ ],
43249
+ description: "Alias for `columns`.",
43250
+ items: {
43251
+ types: [
43252
+ "object"
43253
+ ],
43254
+ properties: {
43255
+ key: {
43256
+ types: [
43257
+ "string"
43258
+ ]
43259
+ },
43260
+ field: {
43261
+ types: [
43262
+ "string"
43263
+ ]
43264
+ },
43265
+ header: {
43266
+ types: [
43267
+ "string"
43268
+ ]
43269
+ },
43270
+ label: {
43271
+ types: [
43272
+ "string"
43273
+ ]
43274
+ },
43275
+ width: {
43276
+ types: [
43277
+ "string"
43278
+ ]
43279
+ },
43280
+ align: {
43281
+ types: [
43282
+ "string"
43283
+ ],
43284
+ enumValues: [
43285
+ "left",
43286
+ "center",
43287
+ "right"
43288
+ ]
43289
+ },
43290
+ className: {
43291
+ types: [
43292
+ "string"
43293
+ ]
43294
+ },
43295
+ weight: {
43296
+ types: [
43297
+ "string"
43298
+ ],
43299
+ enumValues: [
43300
+ "normal",
43301
+ "medium",
43302
+ "semibold"
43303
+ ]
43304
+ },
43305
+ format: {
43306
+ types: [
43307
+ "string"
43308
+ ],
43309
+ enumValues: [
43310
+ "badge",
43311
+ "date",
43312
+ "currency",
43313
+ "number",
43314
+ "percent",
43315
+ "boolean"
43316
+ ]
43317
+ },
43318
+ icon: {
43319
+ types: [
43320
+ "icon",
43321
+ "string"
43322
+ ]
43323
+ },
43324
+ sortable: {
43325
+ types: [
43326
+ "boolean"
43327
+ ]
43328
+ }
43329
+ },
43330
+ required: [
43331
+ "key"
43332
+ ]
43333
+ }
43334
+ },
43335
+ itemActions: {
43336
+ types: [
43337
+ "array"
43338
+ ],
43339
+ description: "Per-row action buttons (trailing column).",
43340
+ kind: "event-list",
43341
+ eventField: "event",
43342
+ items: {
43343
+ types: [
43344
+ "object"
43345
+ ],
43346
+ properties: {
43347
+ label: {
43348
+ types: [
43349
+ "string"
43350
+ ]
43351
+ },
43352
+ event: {
43353
+ types: [
43354
+ "string"
43355
+ ]
43356
+ },
43357
+ icon: {
43358
+ types: [
43359
+ "icon",
43360
+ "string"
43361
+ ]
43362
+ },
43363
+ variant: {
43364
+ types: [
43365
+ "string"
43366
+ ],
43367
+ enumValues: [
43368
+ "primary",
43369
+ "secondary",
43370
+ "ghost",
43371
+ "danger"
43372
+ ]
43373
+ }
43374
+ },
43375
+ required: [
43376
+ "label",
43377
+ "event"
43378
+ ]
43379
+ }
43380
+ },
43381
+ maxInlineActions: {
43382
+ types: [
43383
+ "number"
43384
+ ],
43385
+ description: 'Max inline action buttons before the rest collapse into a "\u22EF" overflow menu. Omit = all inline.'
43386
+ },
43387
+ selectable: {
43388
+ types: [
43389
+ "boolean"
43390
+ ],
43391
+ description: "Render a leading checkbox column. Selection changes emit `selectEvent`.",
43392
+ default: false
43393
+ },
43394
+ selectEvent: {
43395
+ types: [
43396
+ "string"
43397
+ ],
43398
+ description: "Event emitted on selection change: UI:{selectEvent} with { ids, rows }.",
43399
+ kind: "event"
43400
+ },
43401
+ selectedIds: {
43402
+ types: [
43403
+ "array"
43404
+ ],
43405
+ description: "Currently-selected ids (controlled). Falls back to local state when omitted.",
43406
+ items: {
43407
+ types: [
43408
+ "string"
43409
+ ]
43410
+ }
43411
+ },
43412
+ sortEvent: {
43413
+ types: [
43414
+ "string"
43415
+ ],
43416
+ description: "Event emitted on sortable-header click: UI:{sortEvent} with { column, direction }.",
43417
+ kind: "event"
43418
+ },
43419
+ sortColumn: {
43420
+ types: [
43421
+ "string"
43422
+ ],
43423
+ description: "Current sort column (display hint for the active header arrow)."
43424
+ },
43425
+ sortDirection: {
43426
+ types: [
43427
+ "string"
43428
+ ],
43429
+ description: "Current sort direction (display hint).",
43430
+ enumValues: [
43431
+ "asc",
43432
+ "desc"
43433
+ ]
43434
+ },
43435
+ className: {
43436
+ types: [
43437
+ "string"
43438
+ ],
43439
+ description: "Additional CSS classes applied to the table root."
43440
+ },
43441
+ emptyMessage: {
43442
+ types: [
43443
+ "string"
43444
+ ],
43445
+ description: "Message shown when there are no rows."
43446
+ },
43447
+ isLoading: {
43448
+ types: [
43449
+ "boolean"
43450
+ ],
43451
+ description: "Loading state.",
43452
+ default: false
43453
+ },
43454
+ error: {
43455
+ types: [
43456
+ "object"
43457
+ ],
43458
+ description: "Error state.",
43459
+ properties: {
43460
+ message: {
43461
+ types: [
43462
+ "string"
43463
+ ]
43464
+ },
43465
+ name: {
43466
+ types: [
43467
+ "string"
43468
+ ]
43469
+ },
43470
+ code: {
43471
+ types: [
43472
+ "string"
43473
+ ]
43474
+ },
43475
+ stack: {
43476
+ types: [
43477
+ "string"
43478
+ ]
43479
+ }
43480
+ },
43481
+ propertyRequired: [
43482
+ "message"
43483
+ ],
43484
+ default: null
43485
+ },
43486
+ groupBy: {
43487
+ types: [
43488
+ "string"
43489
+ ],
43490
+ description: "Group rows under section headers by a field value."
43491
+ },
43492
+ pageSize: {
43493
+ types: [
43494
+ "number"
43495
+ ],
43496
+ description: 'Max rows before a "Show More" button. Defaults to 0 (show all).',
43497
+ default: 0
43498
+ },
43499
+ children: {
43500
+ types: [
43501
+ "function"
43502
+ ],
43503
+ description: "Custom per-row render. When provided, the whole row content is delegated to this function (columns are ignored for the body; the header still renders). Mirrors DataList's children render prop.",
43504
+ kind: "callback",
43505
+ callbackArgs: [
43506
+ {
43507
+ name: "item",
43508
+ type: "object"
43509
+ },
43510
+ {
43511
+ name: "index",
43512
+ type: "number"
43513
+ }
43514
+ ],
43515
+ renderCallback: true
43516
+ },
43517
+ renderItem: {
43518
+ types: [
43519
+ "function"
43520
+ ],
43521
+ description: 'Per-row render function (schema alias). In .orb: ["fn","item",{...}]. The compiler converts this to the children render prop.',
43522
+ kind: "callback",
43523
+ callbackArgs: [
43524
+ {
43525
+ name: "item",
43526
+ type: "object"
43527
+ },
43528
+ {
43529
+ name: "index",
43530
+ type: "number"
43531
+ }
43532
+ ],
43533
+ renderCallback: true
43534
+ },
43535
+ look: {
43536
+ types: [
43537
+ "string"
43538
+ ],
43539
+ description: "Layer 2 visual treatment \u2014 mirrors the data-list / entity-table look enum so authors share one knob name across row renderers.",
43540
+ enumValues: [
43541
+ "dense",
43542
+ "spacious",
43543
+ "striped",
43544
+ "borderless",
43545
+ "bordered"
43546
+ ],
43547
+ default: "dense"
43548
+ }
43549
+ }
43550
+ },
43551
+ "step-flow": {
43552
+ type: "step-flow",
43553
+ category: "component",
43554
+ tier: "molecules",
43555
+ family: "marketing",
43556
+ description: "StepFlow component",
43557
+ suggestedFor: [
43558
+ "step",
43559
+ "flow",
43560
+ "step flow"
43561
+ ],
43562
+ typicalSize: "medium",
43563
+ propsSchema: {
43564
+ steps: {
43565
+ types: [
43566
+ "array"
43567
+ ],
43568
+ description: "steps prop",
43569
+ required: true,
43570
+ items: {
43571
+ types: [
43572
+ "object"
43573
+ ],
43574
+ properties: {
43575
+ number: {
43576
+ types: [
43577
+ "number"
43578
+ ]
43579
+ },
43580
+ title: {
43581
+ types: [
43582
+ "string"
43583
+ ]
43584
+ },
43585
+ description: {
43586
+ types: [
43587
+ "string"
43588
+ ]
43589
+ },
43590
+ icon: {
43591
+ types: [
43592
+ "icon",
43593
+ "string"
43594
+ ]
43595
+ }
43596
+ },
43597
+ required: [
43598
+ "title",
43599
+ "description"
43600
+ ]
43601
+ }
43602
+ },
43603
+ orientation: {
43604
+ types: [
43605
+ "string"
43606
+ ],
43607
+ description: "orientation prop",
43608
+ enumValues: [
43609
+ "horizontal",
43610
+ "vertical"
43611
+ ],
43612
+ default: "horizontal"
43613
+ },
43614
+ showConnectors: {
43615
+ types: [
43616
+ "boolean"
43617
+ ],
43618
+ description: "showConnectors prop",
43619
+ default: true
43620
+ },
43621
+ className: {
43622
+ types: [
43623
+ "string"
43624
+ ],
43625
+ description: "className prop"
43626
+ }
43627
+ }
43628
+ },
43629
+ "stat-card": {
43630
+ type: "stat-card",
43631
+ category: "display",
43632
+ tier: "atoms",
43633
+ family: "marketing",
43634
+ description: "StatCard component",
43635
+ suggestedFor: [
43636
+ "stat",
43637
+ "card",
43638
+ "stat card"
43639
+ ],
43640
+ typicalSize: "small",
43641
+ propsSchema: {
43642
+ value: {
43643
+ types: [
43644
+ "string"
43645
+ ],
43646
+ description: "The stat value to display prominently",
43647
+ required: true
43648
+ },
43649
+ label: {
43650
+ types: [
43651
+ "string"
43652
+ ],
43653
+ description: "Label describing the value",
43654
+ required: true
43655
+ },
43656
+ size: {
43657
+ types: [
43658
+ "string"
43659
+ ],
43660
+ description: "Size of the value text",
43661
+ enumValues: [
43662
+ "sm",
43663
+ "md",
43664
+ "lg"
43665
+ ],
43666
+ default: "md"
43667
+ },
43668
+ className: {
43669
+ types: [
43670
+ "string"
43671
+ ],
43672
+ description: "Additional class names"
43673
+ }
43674
+ }
43675
+ },
43676
+ "game-canvas-3d": {
43677
+ type: "game-canvas-3d",
43678
+ category: "game",
43679
+ tier: "molecules",
43680
+ family: "game",
43681
+ description: "Props for GameCanvas3D component",
43682
+ suggestedFor: [
43683
+ "game",
43684
+ "canvas3",
43685
+ "game canvas3 d"
43686
+ ],
43687
+ typicalSize: "medium",
43688
+ propsSchema: {
43689
+ className: {
43690
+ types: [
43691
+ "string"
43692
+ ],
43693
+ description: "--- Closed-circuit props (MANDATORY) ---"
43694
+ },
43695
+ children: {
43696
+ types: [
43697
+ "node"
43698
+ ],
43699
+ description: "Children to render inside the 3D canvas (e.g., physics objects, custom meshes)"
43700
+ },
43701
+ isLoading: {
43702
+ types: [
43703
+ "boolean"
43704
+ ],
43705
+ description: "Loading state indicator"
43706
+ },
43707
+ error: {
43708
+ types: [
43709
+ "string"
43710
+ ],
43711
+ description: "Error state"
43712
+ },
43713
+ entity: {
43714
+ types: [
43715
+ "string"
43716
+ ],
43717
+ description: "Entity name for schema-driven auto-fetch"
43718
+ },
43719
+ tiles: {
43720
+ types: [
43721
+ "array"
43722
+ ],
43723
+ description: "Array of tiles to render",
43724
+ items: {
43725
+ types: [
43726
+ "object"
43727
+ ],
43728
+ properties: {
43729
+ id: {
43730
+ types: [
43731
+ "string"
43732
+ ]
43733
+ },
43734
+ x: {
43735
+ types: [
43736
+ "number"
43737
+ ]
43738
+ },
43739
+ y: {
43740
+ types: [
43741
+ "number"
43742
+ ]
43743
+ },
43744
+ z: {
43745
+ types: [
43746
+ "number"
43747
+ ]
43748
+ },
43749
+ terrain: {
43750
+ types: [
43751
+ "string"
43752
+ ]
43753
+ },
43754
+ type: {
43755
+ types: [
43756
+ "string"
43757
+ ]
43758
+ },
43759
+ terrainSprite: {
43760
+ types: [
43761
+ "asset"
43762
+ ]
43763
+ },
43764
+ passable: {
43765
+ types: [
43766
+ "boolean"
43767
+ ]
43768
+ },
43769
+ movementCost: {
43770
+ types: [
43771
+ "number"
43772
+ ]
43773
+ },
43774
+ tileType: {
43775
+ types: [
43776
+ "string"
43777
+ ]
43778
+ },
43779
+ elevation: {
43780
+ types: [
43781
+ "number"
43782
+ ]
43783
+ }
43784
+ },
43785
+ required: [
43786
+ "x",
43787
+ "y"
43788
+ ]
43789
+ },
43790
+ default: []
43791
+ },
43792
+ units: {
43793
+ types: [
43794
+ "array"
43795
+ ],
43796
+ description: "Array of units to render",
43797
+ items: {
43798
+ types: [
43799
+ "object"
43800
+ ],
43801
+ properties: {
43802
+ id: {
43803
+ types: [
43804
+ "string"
43805
+ ]
43806
+ },
43807
+ position: {
43808
+ types: [
43809
+ "object"
43810
+ ],
43811
+ properties: {
43812
+ x: {
43813
+ types: [
43814
+ "number"
43815
+ ]
43816
+ },
43817
+ y: {
43818
+ types: [
43819
+ "number"
43820
+ ]
43821
+ }
43822
+ },
43823
+ required: [
43824
+ "x",
43825
+ "y"
43826
+ ]
43827
+ },
43828
+ x: {
43829
+ types: [
43830
+ "number"
43831
+ ]
43832
+ },
43833
+ y: {
43834
+ types: [
43835
+ "number"
43836
+ ]
43837
+ },
43838
+ z: {
43839
+ types: [
43840
+ "number"
43841
+ ]
43842
+ },
43843
+ sprite: {
43844
+ types: [
43845
+ "object"
43846
+ ]
43847
+ },
43848
+ unitType: {
43849
+ types: [
43850
+ "string"
43851
+ ]
43852
+ },
43853
+ heroId: {
43854
+ types: [
43855
+ "string"
43856
+ ]
43857
+ },
43858
+ name: {
43859
+ types: [
43860
+ "string"
43861
+ ]
43862
+ },
43863
+ team: {
43864
+ types: [
43865
+ "string"
43866
+ ],
43867
+ enumValues: [
43868
+ "player",
43869
+ "enemy",
43870
+ "neutral"
43871
+ ]
43872
+ },
43873
+ faction: {
43874
+ types: [
43875
+ "string"
43876
+ ],
43877
+ enumValues: [
43878
+ "player",
43879
+ "enemy",
43880
+ "neutral"
43881
+ ]
43882
+ },
43883
+ health: {
43884
+ types: [
43885
+ "number"
43886
+ ]
43887
+ },
43888
+ maxHealth: {
43889
+ types: [
43890
+ "number"
43891
+ ]
43892
+ },
43893
+ traits: {
43894
+ types: [
43895
+ "array"
43896
+ ],
43897
+ items: {
43898
+ types: [
43899
+ "object"
43900
+ ],
43901
+ properties: {
43902
+ name: {
43903
+ types: [
43904
+ "string"
43905
+ ]
43906
+ },
43907
+ currentState: {
43908
+ types: [
43909
+ "string"
43910
+ ]
43911
+ },
43912
+ states: {
43913
+ types: [
43914
+ "array"
43915
+ ],
43916
+ items: {
43917
+ types: [
43918
+ "string"
43919
+ ]
43920
+ }
43921
+ },
43922
+ cooldown: {
43923
+ types: [
43924
+ "number"
43925
+ ]
43926
+ }
43927
+ },
43928
+ required: [
43929
+ "name",
43930
+ "currentState",
43931
+ "states",
43932
+ "cooldown"
43933
+ ]
43934
+ }
43935
+ },
43936
+ previousPosition: {
43937
+ types: [
43938
+ "object"
43939
+ ],
43940
+ properties: {
43941
+ x: {
43942
+ types: [
43943
+ "number"
43944
+ ]
43945
+ },
43946
+ y: {
43947
+ types: [
43948
+ "number"
43949
+ ]
43950
+ }
43951
+ },
43952
+ required: [
43953
+ "x",
43954
+ "y"
43955
+ ]
43956
+ },
43957
+ elevation: {
43958
+ types: [
43959
+ "number"
43960
+ ]
43961
+ }
43962
+ },
43963
+ required: [
43964
+ "id"
43965
+ ]
43966
+ },
43967
+ default: []
43968
+ },
43969
+ features: {
43970
+ types: [
43971
+ "array"
43972
+ ],
43973
+ description: "Array of features to render",
43974
+ items: {
43975
+ types: [
43976
+ "object"
43977
+ ],
43978
+ properties: {
43979
+ id: {
43980
+ types: [
43981
+ "string"
43982
+ ]
43983
+ },
43984
+ x: {
43985
+ types: [
43986
+ "number"
43987
+ ]
43988
+ },
43989
+ y: {
43990
+ types: [
43991
+ "number"
43992
+ ]
43993
+ },
43994
+ z: {
43995
+ types: [
43996
+ "number"
43997
+ ]
43998
+ },
43999
+ type: {
44000
+ types: [
44001
+ "string"
44002
+ ]
44003
+ },
44004
+ sprite: {
44005
+ types: [
44006
+ "object"
44007
+ ]
44008
+ },
44009
+ assetUrl: {
44010
+ types: [
44011
+ "object"
44012
+ ]
44013
+ },
44014
+ color: {
44015
+ types: [
44016
+ "string"
44017
+ ]
44018
+ },
44019
+ elevation: {
44020
+ types: [
44021
+ "number"
44022
+ ]
44023
+ }
44024
+ },
44025
+ required: [
44026
+ "x",
44027
+ "y",
44028
+ "type"
44029
+ ]
44030
+ },
44031
+ default: []
44032
+ },
44033
+ events: {
44034
+ types: [
44035
+ "array"
44036
+ ],
44037
+ description: "Array of events to display",
44038
+ items: {
44039
+ types: [
44040
+ "object"
44041
+ ],
44042
+ properties: {
44043
+ id: {
44044
+ types: [
44045
+ "string"
44046
+ ]
44047
+ },
44048
+ type: {
44049
+ types: [
44050
+ "string"
44051
+ ]
44052
+ },
44053
+ x: {
44054
+ types: [
44055
+ "number"
44056
+ ]
44057
+ },
44058
+ z: {
44059
+ types: [
44060
+ "number"
44061
+ ]
44062
+ },
44063
+ y: {
44064
+ types: [
44065
+ "number"
44066
+ ]
44067
+ },
44068
+ message: {
44069
+ types: [
44070
+ "string"
44071
+ ]
44072
+ }
44073
+ },
44074
+ required: [
44075
+ "id",
44076
+ "type",
44077
+ "x"
44078
+ ]
44079
+ },
44080
+ default: []
44081
+ },
44082
+ fogOfWar: {
44083
+ types: [
44084
+ "array"
44085
+ ],
44086
+ description: "Fog of war data",
44087
+ items: {
44088
+ types: [
44089
+ "array"
44090
+ ],
44091
+ items: {
44092
+ types: [
44093
+ "boolean"
44094
+ ]
44095
+ }
44096
+ }
44097
+ },
44098
+ orientation: {
44099
+ types: [
44100
+ "string"
44101
+ ],
44102
+ description: "Map orientation",
44103
+ enumValues: [
44104
+ "standard",
44105
+ "rotated"
44106
+ ],
44107
+ default: "standard"
44108
+ },
44109
+ cameraMode: {
44110
+ types: [
44111
+ "string"
44112
+ ],
44113
+ description: "Camera mode",
44114
+ enumValues: [
44115
+ "isometric",
44116
+ "perspective",
44117
+ "top-down"
44118
+ ],
44119
+ default: "isometric"
44120
+ },
44121
+ showGrid: {
44122
+ types: [
44123
+ "boolean"
44124
+ ],
44125
+ description: "Show grid",
44126
+ default: true
44127
+ },
44128
+ showCoordinates: {
44129
+ types: [
44130
+ "boolean"
44131
+ ],
44132
+ description: "Show coordinates overlay",
44133
+ default: false
44134
+ },
44135
+ showTileInfo: {
44136
+ types: [
44137
+ "boolean"
44138
+ ],
44139
+ description: "Show tile information",
44140
+ default: false
44141
+ },
44142
+ overlay: {
44143
+ types: [
44144
+ "string"
44145
+ ],
44146
+ description: "Overlay control mode",
44147
+ enumValues: [
44148
+ "default",
44149
+ "hidden",
44150
+ "minimap"
44151
+ ],
44152
+ default: "default"
44153
+ },
44154
+ shadows: {
44155
+ types: [
44156
+ "boolean"
44157
+ ],
44158
+ description: "Enable shadows",
44159
+ default: true
44160
+ },
44161
+ backgroundColor: {
44162
+ types: [
44163
+ "string"
44164
+ ],
44165
+ description: "Background color",
44166
+ default: "#1a1a2e"
44167
+ },
44168
+ onTileClick: {
44169
+ types: [
44170
+ "function"
44171
+ ],
44172
+ description: "Callback when a tile is clicked",
44173
+ kind: "callback",
44174
+ callbackArgs: [
44175
+ {
44176
+ name: "tile",
44177
+ type: "object",
44178
+ schema: {
44179
+ types: [
44180
+ "object"
44181
+ ],
44182
+ properties: {
44183
+ id: {
44184
+ types: [
44185
+ "string"
44186
+ ]
44187
+ },
44188
+ x: {
44189
+ types: [
44190
+ "number"
44191
+ ]
44192
+ },
44193
+ y: {
44194
+ types: [
44195
+ "number"
44196
+ ]
44197
+ },
44198
+ z: {
44199
+ types: [
44200
+ "number"
44201
+ ]
44202
+ },
44203
+ terrain: {
44204
+ types: [
44205
+ "string"
44206
+ ]
44207
+ },
44208
+ type: {
44209
+ types: [
44210
+ "string"
44211
+ ]
44212
+ },
44213
+ terrainSprite: {
44214
+ types: [
44215
+ "asset"
44216
+ ]
44217
+ },
44218
+ passable: {
44219
+ types: [
44220
+ "boolean"
44221
+ ]
44222
+ },
44223
+ movementCost: {
44224
+ types: [
44225
+ "number"
44226
+ ]
44227
+ },
44228
+ tileType: {
44229
+ types: [
44230
+ "string"
44231
+ ]
44232
+ },
44233
+ elevation: {
44234
+ types: [
44235
+ "number"
44236
+ ]
44237
+ }
44238
+ },
44239
+ required: [
44240
+ "x",
44241
+ "y"
44242
+ ]
44243
+ }
44244
+ },
44245
+ {
44246
+ name: "event",
44247
+ type: "object"
44248
+ }
44249
+ ],
44250
+ nonEmittable: true
44251
+ },
44252
+ onUnitClick: {
44253
+ types: [
44254
+ "function"
44255
+ ],
44256
+ description: "Callback when a unit is clicked",
44257
+ kind: "callback",
44258
+ callbackArgs: [
44259
+ {
44260
+ name: "unit",
44261
+ type: "object",
44262
+ schema: {
44263
+ types: [
44264
+ "object"
44265
+ ],
44266
+ properties: {
44267
+ id: {
44268
+ types: [
44269
+ "string"
44270
+ ]
44271
+ },
44272
+ position: {
44273
+ types: [
44274
+ "object"
44275
+ ],
44276
+ properties: {
44277
+ x: {
44278
+ types: [
44279
+ "number"
44280
+ ]
44281
+ },
44282
+ y: {
44283
+ types: [
44284
+ "number"
44285
+ ]
44286
+ }
44287
+ },
44288
+ required: [
44289
+ "x",
44290
+ "y"
44291
+ ]
44292
+ },
44293
+ x: {
44294
+ types: [
44295
+ "number"
44296
+ ]
44297
+ },
44298
+ y: {
44299
+ types: [
44300
+ "number"
44301
+ ]
44302
+ },
44303
+ z: {
44304
+ types: [
44305
+ "number"
44306
+ ]
44307
+ },
44308
+ sprite: {
44309
+ types: [
44310
+ "object"
44311
+ ]
44312
+ },
44313
+ unitType: {
44314
+ types: [
44315
+ "string"
44316
+ ]
44317
+ },
44318
+ heroId: {
44319
+ types: [
44320
+ "string"
44321
+ ]
44322
+ },
44323
+ name: {
44324
+ types: [
44325
+ "string"
44326
+ ]
44327
+ },
44328
+ team: {
44329
+ types: [
44330
+ "string"
44331
+ ],
44332
+ enumValues: [
44333
+ "player",
44334
+ "enemy",
44335
+ "neutral"
44336
+ ]
44337
+ },
44338
+ faction: {
44339
+ types: [
44340
+ "string"
44341
+ ],
44342
+ enumValues: [
44343
+ "player",
44344
+ "enemy",
44345
+ "neutral"
44346
+ ]
44347
+ },
44348
+ health: {
44349
+ types: [
44350
+ "number"
44351
+ ]
44352
+ },
44353
+ maxHealth: {
44354
+ types: [
44355
+ "number"
44356
+ ]
44357
+ },
44358
+ traits: {
44359
+ types: [
44360
+ "array"
44361
+ ],
44362
+ items: {
44363
+ types: [
44364
+ "object"
44365
+ ],
44366
+ properties: {
44367
+ name: {
44368
+ types: [
44369
+ "string"
44370
+ ]
44371
+ },
44372
+ currentState: {
44373
+ types: [
44374
+ "string"
44375
+ ]
44376
+ },
44377
+ states: {
44378
+ types: [
44379
+ "array"
44380
+ ],
44381
+ items: {
44382
+ types: [
44383
+ "string"
44384
+ ]
44385
+ }
44386
+ },
44387
+ cooldown: {
44388
+ types: [
44389
+ "number"
44390
+ ]
44391
+ }
44392
+ },
44393
+ required: [
44394
+ "name",
44395
+ "currentState",
44396
+ "states",
44397
+ "cooldown"
44398
+ ]
44399
+ }
44400
+ },
44401
+ previousPosition: {
44402
+ types: [
44403
+ "object"
44404
+ ],
44405
+ properties: {
44406
+ x: {
44407
+ types: [
44408
+ "number"
44409
+ ]
44410
+ },
44411
+ y: {
44412
+ types: [
44413
+ "number"
44414
+ ]
44415
+ }
44416
+ },
44417
+ required: [
44418
+ "x",
44419
+ "y"
44420
+ ]
44421
+ },
44422
+ elevation: {
44423
+ types: [
44424
+ "number"
44425
+ ]
44426
+ }
44427
+ },
44428
+ required: [
44429
+ "id"
44430
+ ]
44431
+ }
44432
+ },
44433
+ {
44434
+ name: "event",
44435
+ type: "object"
44436
+ }
44437
+ ],
44438
+ nonEmittable: true
44439
+ },
44440
+ onFeatureClick: {
44441
+ types: [
44442
+ "function"
44443
+ ],
44444
+ description: "Callback when a feature is clicked",
44445
+ kind: "callback",
44446
+ callbackArgs: [
44447
+ {
44448
+ name: "feature",
44449
+ type: "object",
44450
+ schema: {
44451
+ types: [
44452
+ "object"
44453
+ ],
44454
+ properties: {
44455
+ id: {
44456
+ types: [
44457
+ "string"
44458
+ ]
44459
+ },
44460
+ x: {
44461
+ types: [
44462
+ "number"
44463
+ ]
44464
+ },
44465
+ y: {
44466
+ types: [
44467
+ "number"
44468
+ ]
44469
+ },
44470
+ z: {
44471
+ types: [
44472
+ "number"
44473
+ ]
44474
+ },
44475
+ type: {
44476
+ types: [
44477
+ "string"
44478
+ ]
44479
+ },
44480
+ sprite: {
44481
+ types: [
44482
+ "object"
44483
+ ]
44484
+ },
44485
+ assetUrl: {
44486
+ types: [
44487
+ "object"
44488
+ ]
44489
+ },
44490
+ color: {
44491
+ types: [
44492
+ "string"
44493
+ ]
44494
+ },
44495
+ elevation: {
44496
+ types: [
44497
+ "number"
44498
+ ]
44499
+ }
44500
+ },
44501
+ required: [
44502
+ "x",
44503
+ "y",
44504
+ "type"
44505
+ ]
44506
+ }
44507
+ },
44508
+ {
44509
+ name: "event",
44510
+ type: "object"
44511
+ }
44512
+ ],
44513
+ nonEmittable: true
44514
+ },
44515
+ onCanvasClick: {
44516
+ types: [
44517
+ "function"
44518
+ ],
44519
+ description: "Callback when canvas is clicked (background)",
44520
+ kind: "callback",
44521
+ callbackArgs: [
44522
+ {
44523
+ name: "event",
44524
+ type: "object"
44525
+ }
44526
+ ],
44527
+ nonEmittable: true
44528
+ },
44529
+ onTileHover: {
44530
+ types: [
44531
+ "function"
44532
+ ],
44533
+ description: "Callback when mouse moves over a tile",
44534
+ kind: "callback",
44535
+ callbackArgs: [
44536
+ {
44537
+ name: "tile",
44538
+ type: "object",
44539
+ schema: {
44540
+ types: [
44541
+ "object"
44542
+ ],
44543
+ properties: {
44544
+ id: {
44545
+ types: [
44546
+ "string"
44547
+ ]
44548
+ },
44549
+ x: {
44550
+ types: [
44551
+ "number"
44552
+ ]
44553
+ },
44554
+ y: {
44555
+ types: [
44556
+ "number"
44557
+ ]
44558
+ },
44559
+ z: {
44560
+ types: [
44561
+ "number"
44562
+ ]
44563
+ },
44564
+ terrain: {
44565
+ types: [
44566
+ "string"
44567
+ ]
44568
+ },
44569
+ type: {
44570
+ types: [
44571
+ "string"
44572
+ ]
44573
+ },
44574
+ terrainSprite: {
44575
+ types: [
44576
+ "asset"
44577
+ ]
44578
+ },
44579
+ passable: {
44580
+ types: [
44581
+ "boolean"
44582
+ ]
44583
+ },
44584
+ movementCost: {
44585
+ types: [
44586
+ "number"
44587
+ ]
44588
+ },
44589
+ tileType: {
44590
+ types: [
44591
+ "string"
44592
+ ]
44593
+ },
44594
+ elevation: {
44595
+ types: [
44596
+ "number"
44597
+ ]
44598
+ }
44599
+ },
44600
+ required: [
44601
+ "x",
44602
+ "y"
44603
+ ]
44604
+ }
44605
+ },
44606
+ {
44607
+ name: "event",
44608
+ type: "object"
44609
+ }
44610
+ ],
44611
+ nonEmittable: true
44612
+ },
44613
+ onUnitAnimation: {
44614
+ types: [
44615
+ "function"
44616
+ ],
44617
+ description: "Callback for unit animation state change",
44618
+ kind: "callback",
44619
+ callbackArgs: [
44620
+ {
44621
+ name: "unitId",
44622
+ type: "string"
44623
+ },
44624
+ {
44625
+ name: "state",
44626
+ type: "string"
44627
+ }
44628
+ ]
44629
+ },
44630
+ assetLoader: {
44631
+ types: [
44632
+ "object"
44633
+ ],
44634
+ description: "Asset loader instance (uses global singleton if not provided)"
44635
+ },
44636
+ tileRenderer: {
44637
+ types: [
44638
+ "object"
44639
+ ],
44640
+ description: "Custom tile renderer component"
44641
+ },
44642
+ unitRenderer: {
44643
+ types: [
44644
+ "object"
44645
+ ],
44646
+ description: "Custom unit renderer component"
44647
+ },
44648
+ featureRenderer: {
44649
+ types: [
44650
+ "object"
44651
+ ],
44652
+ description: "Custom feature renderer component"
44653
+ },
44654
+ preloadAssets: {
44655
+ types: [
44656
+ "array"
44657
+ ],
44658
+ description: "URLs to preload",
44659
+ items: {
44660
+ types: [
44661
+ "string"
44662
+ ]
44663
+ },
44664
+ default: []
44665
+ },
44666
+ tileClickEvent: {
44667
+ types: [
44668
+ "string"
44669
+ ],
44670
+ description: "Declarative event: tile click",
44671
+ kind: "event-ref",
44672
+ emitPayloadSchema: [
44673
+ {
44674
+ name: "tileId",
44675
+ type: "string",
44676
+ required: true
44677
+ },
44678
+ {
44679
+ name: "x",
44680
+ type: "number",
44681
+ required: true
44682
+ },
44683
+ {
44684
+ name: "z",
44685
+ type: "number",
44686
+ required: true
44687
+ },
44688
+ {
44689
+ name: "type",
44690
+ type: "string",
44691
+ required: false
44692
+ },
44693
+ {
44694
+ name: "terrain",
44695
+ type: "string",
44696
+ required: false
44697
+ },
44698
+ {
44699
+ name: "elevation",
44700
+ type: "number",
44701
+ required: false
44702
+ }
44703
+ ]
44704
+ },
44705
+ unitClickEvent: {
44706
+ types: [
44707
+ "string"
44708
+ ],
44709
+ description: "Declarative event: unit click",
44710
+ kind: "event-ref",
44711
+ emitPayloadSchema: [
44712
+ {
44713
+ name: "unitId",
44714
+ type: "string",
44715
+ required: true
44716
+ },
44717
+ {
44718
+ name: "x",
44719
+ type: "number",
44720
+ required: true
44721
+ },
44722
+ {
44723
+ name: "z",
44724
+ type: "number",
44725
+ required: true
44726
+ },
44727
+ {
44728
+ name: "unitType",
44729
+ type: "string",
44730
+ required: false
44731
+ },
44732
+ {
44733
+ name: "name",
44734
+ type: "string",
44735
+ required: false
44736
+ },
44737
+ {
44738
+ name: "team",
44739
+ type: "string",
44740
+ required: false
44741
+ },
44742
+ {
44743
+ name: "faction",
44744
+ type: "string",
44745
+ required: false
44746
+ },
44747
+ {
44748
+ name: "health",
44749
+ type: "number",
44750
+ required: false
44751
+ },
44752
+ {
44753
+ name: "maxHealth",
44754
+ type: "number",
44755
+ required: false
44756
+ }
44757
+ ]
44758
+ },
44759
+ featureClickEvent: {
44760
+ types: [
44761
+ "string"
44762
+ ],
44763
+ description: "Declarative event: feature click",
44764
+ kind: "event-ref",
44765
+ emitPayloadSchema: [
44766
+ {
44767
+ name: "featureId",
44768
+ type: "string",
44769
+ required: true
44770
+ },
44771
+ {
44772
+ name: "x",
44773
+ type: "number",
44774
+ required: true
44775
+ },
44776
+ {
44777
+ name: "z",
44778
+ type: "number",
44779
+ required: true
44780
+ },
44781
+ {
44782
+ name: "type",
44783
+ type: "string",
44784
+ required: false
44785
+ },
44786
+ {
44787
+ name: "elevation",
44788
+ type: "number",
44789
+ required: false
44790
+ }
44791
+ ]
44792
+ },
44793
+ canvasClickEvent: {
44794
+ types: [
44795
+ "string"
44796
+ ],
44797
+ description: "Declarative event: canvas click",
44798
+ kind: "event-ref",
44799
+ emitPayloadSchema: [
44800
+ {
44801
+ name: "clientX",
44802
+ type: "number",
44803
+ required: true
44804
+ },
44805
+ {
44806
+ name: "clientY",
44807
+ type: "number",
44808
+ required: true
44809
+ },
44810
+ {
44811
+ name: "button",
44812
+ type: "number",
44813
+ required: true
44814
+ }
44815
+ ]
44816
+ },
44817
+ tileHoverEvent: {
44818
+ types: [
44819
+ "string"
44820
+ ],
44821
+ description: "Declarative event: tile hover",
44822
+ kind: "event-ref",
44823
+ emitPayloadSchema: [
44824
+ {
44825
+ name: "tileId",
44826
+ type: "string",
44827
+ required: true
44828
+ },
44829
+ {
44830
+ name: "x",
44831
+ type: "number",
44832
+ required: true
44833
+ },
44834
+ {
44835
+ name: "z",
44836
+ type: "number",
44837
+ required: true
44838
+ },
44839
+ {
44840
+ name: "type",
44841
+ type: "string",
44842
+ required: false
44843
+ }
44844
+ ]
44845
+ },
44846
+ tileLeaveEvent: {
44847
+ types: [
44848
+ "string"
44849
+ ],
44850
+ description: "Declarative event: tile leave",
44851
+ kind: "event-ref",
44852
+ emitPayloadSchema: []
44853
+ },
44854
+ unitAnimationEvent: {
44855
+ types: [
44856
+ "string"
44857
+ ],
44858
+ description: "Declarative event: unit animation",
44859
+ kind: "event-ref",
44860
+ emitPayloadSchema: [
44861
+ {
44862
+ name: "unitId",
44863
+ type: "string",
44864
+ required: true
44865
+ },
44866
+ {
44867
+ name: "state",
44868
+ type: "string",
44869
+ required: true
44870
+ },
44871
+ {
44872
+ name: "timestamp",
44873
+ type: "number",
44874
+ required: true
44875
+ }
44876
+ ]
44877
+ },
44878
+ cameraChangeEvent: {
44879
+ types: [
44880
+ "string"
44881
+ ],
44882
+ description: "Declarative event: camera change",
44883
+ kind: "event-ref",
44884
+ emitPayloadSchema: [
44885
+ {
44886
+ name: "position",
44887
+ type: "object",
44888
+ required: true
44889
+ },
44890
+ {
44891
+ name: "timestamp",
44892
+ type: "number",
44893
+ required: true
44894
+ }
44895
+ ]
44896
+ },
44897
+ loadingMessage: {
44898
+ types: [
44899
+ "string"
44900
+ ],
44901
+ description: "Loading message",
44902
+ default: "Loading 3D Scene..."
44903
+ },
44904
+ useInstancing: {
44905
+ types: [
44906
+ "boolean"
44907
+ ],
44908
+ description: "Whether to use instancing for tiles",
44909
+ default: true
44910
+ },
44911
+ validMoves: {
44912
+ types: [
44913
+ "array"
44914
+ ],
44915
+ description: "Valid move positions",
44916
+ items: {
44917
+ types: [
44918
+ "object"
44919
+ ],
44920
+ properties: {
44921
+ x: {
44922
+ types: [
44923
+ "number"
44924
+ ]
44925
+ },
44926
+ z: {
44927
+ types: [
44928
+ "number"
44929
+ ]
44930
+ }
44931
+ },
44932
+ required: [
44933
+ "x",
44934
+ "z"
44935
+ ]
44936
+ },
44937
+ default: []
44938
+ },
44939
+ attackTargets: {
44940
+ types: [
44941
+ "array"
44942
+ ],
44943
+ description: "Attack target positions",
44944
+ items: {
44945
+ types: [
44946
+ "object"
44947
+ ],
44948
+ properties: {
44949
+ x: {
44950
+ types: [
44951
+ "number"
44952
+ ]
44953
+ },
44954
+ z: {
44955
+ types: [
44956
+ "number"
44957
+ ]
44958
+ }
44959
+ },
44960
+ required: [
44961
+ "x",
44962
+ "z"
44963
+ ]
44964
+ },
44965
+ default: []
44966
+ },
44967
+ selectedTileIds: {
44968
+ types: [
44969
+ "array"
44970
+ ],
44971
+ description: "Selected tile IDs",
44972
+ items: {
44973
+ types: [
44974
+ "string"
44975
+ ]
44976
+ },
44977
+ default: []
44978
+ },
44979
+ selectedUnitId: {
44980
+ types: [
44981
+ "string"
44982
+ ],
44983
+ description: "Selected unit ID",
44984
+ default: null
44985
+ }
44986
+ }
44987
+ },
44988
+ "game-canvas-3d-battle-template": {
44989
+ type: "game-canvas-3d-battle-template",
44990
+ category: "game",
44991
+ tier: "templates",
44992
+ family: "game",
44993
+ 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",
44994
+ suggestedFor: [
44995
+ "game",
44996
+ "canvas3",
44997
+ "battle",
44998
+ "template",
44999
+ "game canvas3 d battle template"
45000
+ ],
45001
+ typicalSize: "full",
45002
+ propsSchema: {
45003
+ entity: {
45004
+ types: [
45005
+ "object"
45006
+ ],
45007
+ description: "Entity data, the sole source of runtime state",
45008
+ required: true
45009
+ },
45010
+ className: {
45011
+ types: [
45012
+ "string"
45013
+ ],
45014
+ description: "External styling override"
45015
+ },
45016
+ cameraMode: {
45017
+ types: [
45018
+ "string"
45019
+ ],
45020
+ description: "3D camera mode - defaults to perspective for dramatic effect",
45021
+ enumValues: [
45022
+ "isometric",
45023
+ "perspective",
45024
+ "top-down"
45025
+ ],
45026
+ default: "perspective"
45027
+ },
45028
+ showGrid: {
45029
+ types: [
45030
+ "boolean"
45031
+ ],
45032
+ description: "Show grid helper",
45033
+ default: true
45034
+ },
45035
+ shadows: {
45036
+ types: [
45037
+ "boolean"
45038
+ ],
45039
+ description: "Enable shadows",
45040
+ default: true
45041
+ },
45042
+ backgroundColor: {
45043
+ types: [
45044
+ "string"
45045
+ ],
45046
+ description: "Background color - darker for battle atmosphere",
45047
+ default: "#2a1a1a"
45048
+ },
45049
+ tileClickEvent: {
45050
+ types: [
45051
+ "string"
45052
+ ],
45053
+ description: "Event name for tile clicks"
45054
+ },
45055
+ unitClickEvent: {
45056
+ types: [
45057
+ "string"
45058
+ ],
45059
+ description: "Event name for unit clicks"
45060
+ },
45061
+ unitAttackEvent: {
45062
+ types: [
45063
+ "string"
45064
+ ],
45065
+ description: "Event name for unit attack"
45066
+ },
45067
+ unitMoveEvent: {
45068
+ types: [
45069
+ "string"
45070
+ ],
45071
+ description: "Event name for unit move"
45072
+ },
45073
+ endTurnEvent: {
45074
+ types: [
45075
+ "string"
45076
+ ],
45077
+ description: "Event name for ending turn"
45078
+ },
45079
+ exitEvent: {
45080
+ types: [
45081
+ "string"
45082
+ ],
45083
+ description: "Event name for exiting battle"
45084
+ },
45085
+ selectedUnitId: {
45086
+ types: [
45087
+ "string"
45088
+ ],
45089
+ description: "Currently selected unit ID"
45090
+ },
45091
+ validMoves: {
43246
45092
  types: [
43247
45093
  "array"
43248
45094
  ],
43249
- description: "Alias for `columns`.",
45095
+ description: "Valid move positions",
43250
45096
  items: {
43251
45097
  types: [
43252
45098
  "object"
43253
45099
  ],
43254
45100
  properties: {
43255
- key: {
43256
- types: [
43257
- "string"
43258
- ]
43259
- },
43260
- field: {
43261
- types: [
43262
- "string"
43263
- ]
43264
- },
43265
- header: {
43266
- types: [
43267
- "string"
43268
- ]
43269
- },
43270
- label: {
43271
- types: [
43272
- "string"
43273
- ]
43274
- },
43275
- width: {
43276
- types: [
43277
- "string"
43278
- ]
43279
- },
43280
- align: {
43281
- types: [
43282
- "string"
43283
- ],
43284
- enumValues: [
43285
- "left",
43286
- "center",
43287
- "right"
43288
- ]
43289
- },
43290
- className: {
43291
- types: [
43292
- "string"
43293
- ]
43294
- },
43295
- weight: {
43296
- types: [
43297
- "string"
43298
- ],
43299
- enumValues: [
43300
- "normal",
43301
- "medium",
43302
- "semibold"
43303
- ]
43304
- },
43305
- format: {
43306
- types: [
43307
- "string"
43308
- ],
43309
- enumValues: [
43310
- "badge",
43311
- "date",
43312
- "currency",
43313
- "number",
43314
- "percent",
43315
- "boolean"
43316
- ]
43317
- },
43318
- icon: {
45101
+ x: {
43319
45102
  types: [
43320
- "icon",
43321
- "string"
45103
+ "number"
43322
45104
  ]
43323
45105
  },
43324
- sortable: {
45106
+ z: {
43325
45107
  types: [
43326
- "boolean"
45108
+ "number"
43327
45109
  ]
43328
45110
  }
43329
45111
  },
43330
45112
  required: [
43331
- "key"
45113
+ "x",
45114
+ "z"
43332
45115
  ]
43333
45116
  }
43334
45117
  },
43335
- itemActions: {
45118
+ attackTargets: {
43336
45119
  types: [
43337
45120
  "array"
43338
45121
  ],
43339
- description: "Per-row action buttons (trailing column).",
43340
- kind: "event-list",
43341
- eventField: "event",
45122
+ description: "Valid attack targets",
43342
45123
  items: {
43343
45124
  types: [
43344
45125
  "object"
43345
45126
  ],
43346
45127
  properties: {
43347
- label: {
43348
- types: [
43349
- "string"
43350
- ]
43351
- },
43352
- event: {
43353
- types: [
43354
- "string"
43355
- ]
43356
- },
43357
- icon: {
45128
+ x: {
43358
45129
  types: [
43359
- "icon",
43360
- "string"
45130
+ "number"
43361
45131
  ]
43362
45132
  },
43363
- variant: {
45133
+ z: {
43364
45134
  types: [
43365
- "string"
43366
- ],
43367
- enumValues: [
43368
- "primary",
43369
- "secondary",
43370
- "ghost",
43371
- "danger"
45135
+ "number"
43372
45136
  ]
43373
45137
  }
43374
45138
  },
43375
45139
  required: [
43376
- "label",
43377
- "event"
45140
+ "x",
45141
+ "z"
43378
45142
  ]
43379
45143
  }
43380
45144
  },
43381
- maxInlineActions: {
43382
- types: [
43383
- "number"
43384
- ],
43385
- description: 'Max inline action buttons before the rest collapse into a "\u22EF" overflow menu. Omit = all inline.'
43386
- },
43387
- selectable: {
45145
+ showTurnIndicator: {
43388
45146
  types: [
43389
45147
  "boolean"
43390
45148
  ],
43391
- description: "Render a leading checkbox column. Selection changes emit `selectEvent`.",
43392
- default: false
43393
- },
43394
- selectEvent: {
43395
- types: [
43396
- "string"
43397
- ],
43398
- description: "Event emitted on selection change: UI:{selectEvent} with { ids, rows }.",
43399
- kind: "event"
43400
- },
43401
- selectedIds: {
43402
- types: [
43403
- "array"
43404
- ],
43405
- description: "Currently-selected ids (controlled). Falls back to local state when omitted.",
43406
- items: {
43407
- types: [
43408
- "string"
43409
- ]
43410
- }
43411
- },
43412
- sortEvent: {
45149
+ description: "Show turn indicator overlay"
45150
+ }
45151
+ }
45152
+ },
45153
+ "game-canvas-3d-castle-template": {
45154
+ type: "game-canvas-3d-castle-template",
45155
+ category: "game",
45156
+ tier: "templates",
45157
+ family: "game",
45158
+ 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",
45159
+ suggestedFor: [
45160
+ "game",
45161
+ "canvas3",
45162
+ "castle",
45163
+ "template",
45164
+ "game canvas3 d castle template"
45165
+ ],
45166
+ typicalSize: "full",
45167
+ propsSchema: {
45168
+ entity: {
43413
45169
  types: [
43414
- "string"
45170
+ "object"
43415
45171
  ],
43416
- description: "Event emitted on sortable-header click: UI:{sortEvent} with { column, direction }.",
43417
- kind: "event"
45172
+ description: "Entity data, the sole source of runtime state",
45173
+ required: true
43418
45174
  },
43419
- sortColumn: {
45175
+ className: {
43420
45176
  types: [
43421
45177
  "string"
43422
45178
  ],
43423
- description: "Current sort column (display hint for the active header arrow)."
45179
+ description: "External styling override"
43424
45180
  },
43425
- sortDirection: {
45181
+ cameraMode: {
43426
45182
  types: [
43427
45183
  "string"
43428
45184
  ],
43429
- description: "Current sort direction (display hint).",
45185
+ description: "3D camera mode",
43430
45186
  enumValues: [
43431
- "asc",
43432
- "desc"
43433
- ]
43434
- },
43435
- className: {
43436
- types: [
43437
- "string"
45187
+ "isometric",
45188
+ "perspective",
45189
+ "top-down"
43438
45190
  ],
43439
- description: "Additional CSS classes applied to the table root."
45191
+ default: "isometric"
43440
45192
  },
43441
- emptyMessage: {
45193
+ showGrid: {
43442
45194
  types: [
43443
- "string"
45195
+ "boolean"
43444
45196
  ],
43445
- description: "Message shown when there are no rows."
45197
+ description: "Show grid helper",
45198
+ default: true
43446
45199
  },
43447
- isLoading: {
45200
+ shadows: {
43448
45201
  types: [
43449
45202
  "boolean"
43450
45203
  ],
43451
- description: "Loading state.",
43452
- default: false
45204
+ description: "Enable shadows",
45205
+ default: true
43453
45206
  },
43454
- error: {
45207
+ backgroundColor: {
43455
45208
  types: [
43456
- "object"
43457
- ],
43458
- description: "Error state.",
43459
- properties: {
43460
- message: {
43461
- types: [
43462
- "string"
43463
- ]
43464
- },
43465
- name: {
43466
- types: [
43467
- "string"
43468
- ]
43469
- },
43470
- code: {
43471
- types: [
43472
- "string"
43473
- ]
43474
- },
43475
- stack: {
43476
- types: [
43477
- "string"
43478
- ]
43479
- }
43480
- },
43481
- propertyRequired: [
43482
- "message"
45209
+ "string"
43483
45210
  ],
43484
- default: null
45211
+ description: "Background color",
45212
+ default: "#1e1e2e"
43485
45213
  },
43486
- groupBy: {
45214
+ buildingClickEvent: {
43487
45215
  types: [
43488
45216
  "string"
43489
45217
  ],
43490
- description: "Group rows under section headers by a field value."
45218
+ description: "Event name for building clicks"
43491
45219
  },
43492
- pageSize: {
45220
+ unitClickEvent: {
43493
45221
  types: [
43494
- "number"
45222
+ "string"
43495
45223
  ],
43496
- description: 'Max rows before a "Show More" button. Defaults to 0 (show all).',
43497
- default: 0
45224
+ description: "Event name for unit clicks"
43498
45225
  },
43499
- children: {
45226
+ buildEvent: {
43500
45227
  types: [
43501
- "function"
43502
- ],
43503
- description: "Custom per-row render. When provided, the whole row content is delegated to this function (columns are ignored for the body; the header still renders). Mirrors DataList's children render prop.",
43504
- kind: "callback",
43505
- callbackArgs: [
43506
- {
43507
- name: "item",
43508
- type: "object"
43509
- },
43510
- {
43511
- name: "index",
43512
- type: "number"
43513
- }
45228
+ "string"
43514
45229
  ],
43515
- renderCallback: true
45230
+ description: "Event name for build action"
43516
45231
  },
43517
- renderItem: {
45232
+ recruitEvent: {
43518
45233
  types: [
43519
- "function"
43520
- ],
43521
- description: 'Per-row render function (schema alias). In .orb: ["fn","item",{...}]. The compiler converts this to the children render prop.',
43522
- kind: "callback",
43523
- callbackArgs: [
43524
- {
43525
- name: "item",
43526
- type: "object"
43527
- },
43528
- {
43529
- name: "index",
43530
- type: "number"
43531
- }
45234
+ "string"
43532
45235
  ],
43533
- renderCallback: true
45236
+ description: "Event name for recruit action"
43534
45237
  },
43535
- look: {
45238
+ exitEvent: {
43536
45239
  types: [
43537
45240
  "string"
43538
45241
  ],
43539
- description: "Layer 2 visual treatment \u2014 mirrors the data-list / entity-table look enum so authors share one knob name across row renderers.",
43540
- enumValues: [
43541
- "dense",
43542
- "spacious",
43543
- "striped",
43544
- "borderless",
43545
- "bordered"
45242
+ description: "Event name for exit"
45243
+ },
45244
+ selectedBuildingId: {
45245
+ types: [
45246
+ "string"
43546
45247
  ],
43547
- default: "dense"
43548
- }
43549
- }
43550
- },
43551
- "step-flow": {
43552
- type: "step-flow",
43553
- category: "component",
43554
- tier: "molecules",
43555
- family: "marketing",
43556
- description: "StepFlow component",
43557
- suggestedFor: [
43558
- "step",
43559
- "flow",
43560
- "step flow"
43561
- ],
43562
- typicalSize: "medium",
43563
- propsSchema: {
43564
- steps: {
45248
+ description: "Currently selected building ID"
45249
+ },
45250
+ availableBuildSites: {
43565
45251
  types: [
43566
45252
  "array"
43567
45253
  ],
43568
- description: "steps prop",
43569
- required: true,
45254
+ description: "Available build positions",
43570
45255
  items: {
43571
45256
  types: [
43572
45257
  "object"
43573
45258
  ],
43574
45259
  properties: {
43575
- number: {
45260
+ x: {
43576
45261
  types: [
43577
45262
  "number"
43578
45263
  ]
43579
45264
  },
43580
- title: {
43581
- types: [
43582
- "string"
43583
- ]
43584
- },
43585
- description: {
43586
- types: [
43587
- "string"
43588
- ]
43589
- },
43590
- icon: {
45265
+ z: {
43591
45266
  types: [
43592
- "icon",
43593
- "string"
45267
+ "number"
43594
45268
  ]
43595
45269
  }
43596
45270
  },
43597
45271
  required: [
43598
- "title",
43599
- "description"
45272
+ "x",
45273
+ "z"
43600
45274
  ]
43601
45275
  }
43602
45276
  },
43603
- orientation: {
43604
- types: [
43605
- "string"
43606
- ],
43607
- description: "orientation prop",
43608
- enumValues: [
43609
- "horizontal",
43610
- "vertical"
43611
- ],
43612
- default: "horizontal"
43613
- },
43614
- showConnectors: {
45277
+ showHeader: {
43615
45278
  types: [
43616
45279
  "boolean"
43617
45280
  ],
43618
- description: "showConnectors prop",
45281
+ description: "Show castle name header",
43619
45282
  default: true
43620
45283
  },
43621
- className: {
45284
+ selectedTileIds: {
43622
45285
  types: [
43623
- "string"
45286
+ "array"
43624
45287
  ],
43625
- description: "className prop"
45288
+ description: "Pre-computed selected tile IDs array",
45289
+ items: {
45290
+ types: [
45291
+ "string"
45292
+ ]
45293
+ },
45294
+ default: []
43626
45295
  }
43627
45296
  }
43628
45297
  },
43629
- "stat-card": {
43630
- type: "stat-card",
43631
- category: "display",
43632
- tier: "atoms",
43633
- family: "marketing",
43634
- description: "StatCard component",
45298
+ "game-canvas-3d-world-map-template": {
45299
+ type: "game-canvas-3d-world-map-template",
45300
+ category: "game",
45301
+ tier: "templates",
45302
+ family: "game",
45303
+ 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 })",
43635
45304
  suggestedFor: [
43636
- "stat",
43637
- "card",
43638
- "stat card"
45305
+ "game",
45306
+ "canvas3",
45307
+ "world",
45308
+ "map",
45309
+ "template",
45310
+ "game canvas3 d world map template"
43639
45311
  ],
43640
- typicalSize: "small",
45312
+ typicalSize: "full",
43641
45313
  propsSchema: {
43642
- value: {
45314
+ entity: {
43643
45315
  types: [
43644
- "string"
45316
+ "object"
43645
45317
  ],
43646
- description: "The stat value to display prominently",
45318
+ description: "Entity data, the sole source of runtime state",
43647
45319
  required: true
43648
45320
  },
43649
- label: {
45321
+ className: {
43650
45322
  types: [
43651
45323
  "string"
43652
45324
  ],
43653
- description: "Label describing the value",
43654
- required: true
45325
+ description: "External styling override"
43655
45326
  },
43656
- size: {
45327
+ cameraMode: {
43657
45328
  types: [
43658
45329
  "string"
43659
45330
  ],
43660
- description: "Size of the value text",
45331
+ description: "3D camera mode",
43661
45332
  enumValues: [
43662
- "sm",
43663
- "md",
43664
- "lg"
45333
+ "isometric",
45334
+ "perspective",
45335
+ "top-down"
43665
45336
  ],
43666
- default: "md"
45337
+ default: "isometric"
43667
45338
  },
43668
- className: {
45339
+ showGrid: {
45340
+ types: [
45341
+ "boolean"
45342
+ ],
45343
+ description: "Show grid helper",
45344
+ default: true
45345
+ },
45346
+ showCoordinates: {
45347
+ types: [
45348
+ "boolean"
45349
+ ],
45350
+ description: "Show coordinate overlay",
45351
+ default: true
45352
+ },
45353
+ showTileInfo: {
45354
+ types: [
45355
+ "boolean"
45356
+ ],
45357
+ description: "Show tile info on hover",
45358
+ default: true
45359
+ },
45360
+ shadows: {
45361
+ types: [
45362
+ "boolean"
45363
+ ],
45364
+ description: "Enable shadows",
45365
+ default: true
45366
+ },
45367
+ backgroundColor: {
43669
45368
  types: [
43670
45369
  "string"
43671
45370
  ],
43672
- description: "Additional class names"
45371
+ description: "Background color",
45372
+ default: "#1a1a2e"
45373
+ },
45374
+ tileClickEvent: {
45375
+ types: [
45376
+ "string"
45377
+ ],
45378
+ description: "Event name for tile clicks"
45379
+ },
45380
+ unitClickEvent: {
45381
+ types: [
45382
+ "string"
45383
+ ],
45384
+ description: "Event name for unit clicks"
45385
+ },
45386
+ featureClickEvent: {
45387
+ types: [
45388
+ "string"
45389
+ ],
45390
+ description: "Event name for feature clicks"
45391
+ },
45392
+ tileHoverEvent: {
45393
+ types: [
45394
+ "string"
45395
+ ],
45396
+ description: "Event name for tile hover"
45397
+ },
45398
+ tileLeaveEvent: {
45399
+ types: [
45400
+ "string"
45401
+ ],
45402
+ description: "Event name for tile leave"
45403
+ },
45404
+ cameraChangeEvent: {
45405
+ types: [
45406
+ "string"
45407
+ ],
45408
+ description: "Event name for camera changes"
45409
+ },
45410
+ exitEvent: {
45411
+ types: [
45412
+ "string"
45413
+ ],
45414
+ description: "Exit/back event name"
45415
+ },
45416
+ selectedUnitId: {
45417
+ types: [
45418
+ "string"
45419
+ ],
45420
+ description: "Currently selected unit ID"
45421
+ },
45422
+ validMoves: {
45423
+ types: [
45424
+ "array"
45425
+ ],
45426
+ description: "Valid move positions for selected unit",
45427
+ items: {
45428
+ types: [
45429
+ "object"
45430
+ ],
45431
+ properties: {
45432
+ x: {
45433
+ types: [
45434
+ "number"
45435
+ ]
45436
+ },
45437
+ z: {
45438
+ types: [
45439
+ "number"
45440
+ ]
45441
+ }
45442
+ },
45443
+ required: [
45444
+ "x",
45445
+ "z"
45446
+ ]
45447
+ }
45448
+ },
45449
+ attackTargets: {
45450
+ types: [
45451
+ "array"
45452
+ ],
45453
+ description: "Attack target positions",
45454
+ items: {
45455
+ types: [
45456
+ "object"
45457
+ ],
45458
+ properties: {
45459
+ x: {
45460
+ types: [
45461
+ "number"
45462
+ ]
45463
+ },
45464
+ z: {
45465
+ types: [
45466
+ "number"
45467
+ ]
45468
+ }
45469
+ },
45470
+ required: [
45471
+ "x",
45472
+ "z"
45473
+ ]
45474
+ }
43673
45475
  }
43674
45476
  }
43675
45477
  }
@@ -44299,7 +46101,7 @@ var integrators_registry_default = {
44299
46101
  // src/component-mapping.json
44300
46102
  var component_mapping_default = {
44301
46103
  version: "1.0.0",
44302
- exportedAt: "2026-06-17T02:56:15.601Z",
46104
+ exportedAt: "2026-06-17T08:23:54.917Z",
44303
46105
  mappings: {
44304
46106
  "page-header": {
44305
46107
  component: "PageHeader",
@@ -45730,7 +47532,7 @@ var component_mapping_default = {
45730
47532
  },
45731
47533
  "feature-renderer": {
45732
47534
  component: "FeatureRenderer",
45733
- importPath: "@/components/organisms/FeatureRenderer",
47535
+ importPath: "@/components/molecules/FeatureRenderer",
45734
47536
  category: "game"
45735
47537
  },
45736
47538
  "dashboard-grid": {
@@ -45797,6 +47599,26 @@ var component_mapping_default = {
45797
47599
  component: "StatCard",
45798
47600
  importPath: "@/components/atoms/StatCard",
45799
47601
  category: "display"
47602
+ },
47603
+ "game-canvas-3d": {
47604
+ component: "GameCanvas3D",
47605
+ importPath: "@almadar/ui/components/organisms/game/three",
47606
+ category: "game"
47607
+ },
47608
+ "game-canvas-3d-battle-template": {
47609
+ component: "GameCanvas3DBattleTemplate",
47610
+ importPath: "@/components/templates/GameCanvas3DBattleTemplate",
47611
+ category: "game"
47612
+ },
47613
+ "game-canvas-3d-castle-template": {
47614
+ component: "GameCanvas3DCastleTemplate",
47615
+ importPath: "@/components/templates/GameCanvas3DCastleTemplate",
47616
+ category: "game"
47617
+ },
47618
+ "game-canvas-3d-world-map-template": {
47619
+ component: "GameCanvas3DWorldMapTemplate",
47620
+ importPath: "@/components/templates/GameCanvas3DWorldMapTemplate",
47621
+ category: "game"
45800
47622
  }
45801
47623
  }
45802
47624
  };
@@ -45804,7 +47626,7 @@ var component_mapping_default = {
45804
47626
  // src/event-contracts.json
45805
47627
  var event_contracts_default = {
45806
47628
  version: "1.0.0",
45807
- exportedAt: "2026-06-17T02:56:15.601Z",
47629
+ exportedAt: "2026-06-17T08:23:54.917Z",
45808
47630
  contracts: {
45809
47631
  form: {
45810
47632
  emits: [