@almadar/patterns 2.0.0 → 2.0.3

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-02-23T07:59:54.575Z",
4
+ exportedAt: "2026-03-05T06:51:24.222Z",
5
5
  patterns: {
6
6
  "entity-table": {
7
7
  type: "entity-table",
@@ -446,7 +446,7 @@ var patterns_registry_default = {
446
446
  types: [
447
447
  "node"
448
448
  ],
449
- description: "Children elements (cards) - optional when using entity/data props"
449
+ description: "Children elements (cards) - optional when using entity prop"
450
450
  },
451
451
  fields: {
452
452
  types: [
@@ -477,6 +477,18 @@ var patterns_registry_default = {
477
477
  "boolean"
478
478
  ],
479
479
  description: "Show total count in pagination"
480
+ },
481
+ showAvatar: {
482
+ types: [
483
+ "boolean"
484
+ ],
485
+ description: "Show avatar/image field on cards"
486
+ },
487
+ variant: {
488
+ types: [
489
+ "string"
490
+ ],
491
+ description: "Visual variant for the card grid"
480
492
  }
481
493
  }
482
494
  },
@@ -491,6 +503,84 @@ var patterns_registry_default = {
491
503
  ],
492
504
  typicalSize: "medium",
493
505
  propsSchema: {
506
+ entity: {
507
+ types: [
508
+ "string"
509
+ ],
510
+ description: "Entity name for schema-driven integration"
511
+ },
512
+ data: {
513
+ types: [
514
+ "array"
515
+ ],
516
+ description: "Data array provided by the trait via render-ui"
517
+ },
518
+ className: {
519
+ types: [
520
+ "string"
521
+ ],
522
+ description: "Additional CSS classes"
523
+ },
524
+ isLoading: {
525
+ types: [
526
+ "boolean"
527
+ ],
528
+ description: "Loading state indicator"
529
+ },
530
+ error: {
531
+ types: [
532
+ "object"
533
+ ],
534
+ description: "Error state"
535
+ },
536
+ sortBy: {
537
+ types: [
538
+ "string"
539
+ ],
540
+ description: "Current sort field"
541
+ },
542
+ sortDirection: {
543
+ types: [
544
+ "string"
545
+ ],
546
+ description: "Current sort direction"
547
+ },
548
+ searchValue: {
549
+ types: [
550
+ "string"
551
+ ],
552
+ description: "Current search query value"
553
+ },
554
+ page: {
555
+ types: [
556
+ "number"
557
+ ],
558
+ description: "Current page number"
559
+ },
560
+ pageSize: {
561
+ types: [
562
+ "number"
563
+ ],
564
+ description: "Number of items per page"
565
+ },
566
+ totalCount: {
567
+ types: [
568
+ "number"
569
+ ],
570
+ description: "Total number of items"
571
+ },
572
+ activeFilters: {
573
+ types: [
574
+ "object"
575
+ ],
576
+ description: "Active filters"
577
+ },
578
+ selectedIds: {
579
+ types: [
580
+ "array"
581
+ ],
582
+ description: "Currently selected item IDs"
583
+ },
494
584
  title: {
495
585
  types: [
496
586
  "string"
@@ -551,13 +641,6 @@ var patterns_registry_default = {
551
641
  ],
552
642
  description: "Alias for fields - backwards compatibility"
553
643
  },
554
- data: {
555
- types: [
556
- "object",
557
- "unknown"
558
- ],
559
- description: "Data object provided by the trait via render-ui"
560
- },
561
644
  initialData: {
562
645
  types: [
563
646
  "object",
@@ -582,6 +665,24 @@ var patterns_registry_default = {
582
665
  "string"
583
666
  ],
584
667
  description: "Panel width (CSS value, e.g., '400px', '50%')"
668
+ },
669
+ entityId: {
670
+ types: [
671
+ "string"
672
+ ],
673
+ description: "Entity ID for fetching specific entity"
674
+ },
675
+ displayFields: {
676
+ types: [
677
+ "unknown"
678
+ ],
679
+ description: "Display fields (alias for fields)"
680
+ },
681
+ showActions: {
682
+ types: [
683
+ "boolean"
684
+ ],
685
+ description: "Show actions flag"
585
686
  }
586
687
  }
587
688
  },
@@ -741,7 +842,8 @@ var patterns_registry_default = {
741
842
  },
742
843
  entity: {
743
844
  types: [
744
- "string"
845
+ "string",
846
+ "orbitalentity"
745
847
  ],
746
848
  description: "Schema-based props"
747
849
  },
@@ -927,7 +1029,8 @@ var patterns_registry_default = {
927
1029
  },
928
1030
  entity: {
929
1031
  types: [
930
- "string"
1032
+ "string",
1033
+ "orbitalentity"
931
1034
  ],
932
1035
  description: "Schema-based props"
933
1036
  },
@@ -1899,6 +2002,84 @@ var patterns_registry_default = {
1899
2002
  ],
1900
2003
  typicalSize: "small",
1901
2004
  propsSchema: {
2005
+ entity: {
2006
+ types: [
2007
+ "string"
2008
+ ],
2009
+ description: "Entity name for schema-driven integration"
2010
+ },
2011
+ data: {
2012
+ types: [
2013
+ "array"
2014
+ ],
2015
+ description: "Data array provided by the trait via render-ui"
2016
+ },
2017
+ className: {
2018
+ types: [
2019
+ "string"
2020
+ ],
2021
+ description: "Additional CSS classes"
2022
+ },
2023
+ isLoading: {
2024
+ types: [
2025
+ "boolean"
2026
+ ],
2027
+ description: "Loading state indicator"
2028
+ },
2029
+ error: {
2030
+ types: [
2031
+ "object"
2032
+ ],
2033
+ description: "Error state"
2034
+ },
2035
+ sortBy: {
2036
+ types: [
2037
+ "string"
2038
+ ],
2039
+ description: "Current sort field"
2040
+ },
2041
+ sortDirection: {
2042
+ types: [
2043
+ "string"
2044
+ ],
2045
+ description: "Current sort direction"
2046
+ },
2047
+ searchValue: {
2048
+ types: [
2049
+ "string"
2050
+ ],
2051
+ description: "Current search query value"
2052
+ },
2053
+ page: {
2054
+ types: [
2055
+ "number"
2056
+ ],
2057
+ description: "Current page number"
2058
+ },
2059
+ pageSize: {
2060
+ types: [
2061
+ "number"
2062
+ ],
2063
+ description: "Number of items per page"
2064
+ },
2065
+ totalCount: {
2066
+ types: [
2067
+ "number"
2068
+ ],
2069
+ description: "Total number of items"
2070
+ },
2071
+ activeFilters: {
2072
+ types: [
2073
+ "object"
2074
+ ],
2075
+ description: "Active filters"
2076
+ },
2077
+ selectedIds: {
2078
+ types: [
2079
+ "array"
2080
+ ],
2081
+ description: "Currently selected item IDs"
2082
+ },
1902
2083
  label: {
1903
2084
  types: [
1904
2085
  "string"
@@ -1980,41 +2161,17 @@ var patterns_registry_default = {
1980
2161
  ],
1981
2162
  description: "Action button"
1982
2163
  },
1983
- className: {
1984
- types: [
1985
- "string"
1986
- ],
1987
- description: "className prop"
1988
- },
1989
- entity: {
1990
- types: [
1991
- "string"
1992
- ],
1993
- description: "Schema-based props"
1994
- },
1995
2164
  metrics: {
1996
2165
  types: [
1997
2166
  "unknown"
1998
2167
  ],
1999
2168
  description: "Metrics to display (schema format) - accepts readonly for compatibility with generated const arrays"
2000
2169
  },
2001
- data: {
2002
- types: [
2003
- "unknown"
2004
- ],
2005
- description: "Data to calculate stats from - accepts readonly for compatibility with generated const arrays"
2006
- },
2007
- isLoading: {
2170
+ compact: {
2008
2171
  types: [
2009
2172
  "boolean"
2010
2173
  ],
2011
- description: "Loading state indicator"
2012
- },
2013
- error: {
2014
- types: [
2015
- "error"
2016
- ],
2017
- description: "Error state"
2174
+ description: "Compact display mode"
2018
2175
  }
2019
2176
  }
2020
2177
  },
@@ -2029,57 +2186,129 @@ var patterns_registry_default = {
2029
2186
  ],
2030
2187
  typicalSize: "large",
2031
2188
  propsSchema: {
2032
- columns: {
2033
- types: [
2034
- "number"
2035
- ],
2036
- description: "Number of columns"
2037
- },
2038
- gap: {
2189
+ entity: {
2039
2190
  types: [
2040
2191
  "string"
2041
2192
  ],
2042
- description: "Gap between cells"
2193
+ description: "Entity name for schema-driven integration"
2043
2194
  },
2044
- cells: {
2195
+ data: {
2045
2196
  types: [
2046
2197
  "array"
2047
2198
  ],
2048
- description: "Cell definitions",
2049
- required: true
2199
+ description: "Data array provided by the trait via render-ui"
2050
2200
  },
2051
2201
  className: {
2052
2202
  types: [
2053
2203
  "string"
2054
2204
  ],
2055
2205
  description: "Additional CSS classes"
2056
- }
2057
- }
2058
- },
2059
- modal: {
2060
- type: "modal",
2061
- category: "container",
2062
- description: "Modal dialog overlay",
2063
- suggestedFor: [
2064
- "dialogs",
2065
- "confirmations",
2066
- "forms"
2067
- ],
2068
- typicalSize: "medium",
2069
- propsSchema: {
2070
- isOpen: {
2206
+ },
2207
+ isLoading: {
2071
2208
  types: [
2072
2209
  "boolean"
2073
2210
  ],
2074
- description: "Whether the modal is open (defaults to true when rendered by slot wrapper)"
2211
+ description: "Loading state indicator"
2075
2212
  },
2076
- onClose: {
2213
+ error: {
2077
2214
  types: [
2078
- "function"
2215
+ "object"
2079
2216
  ],
2080
- description: "Callback when modal should close (injected by slot wrapper)"
2217
+ description: "Error state"
2081
2218
  },
2082
- title: {
2219
+ sortBy: {
2220
+ types: [
2221
+ "string"
2222
+ ],
2223
+ description: "Current sort field"
2224
+ },
2225
+ sortDirection: {
2226
+ types: [
2227
+ "string"
2228
+ ],
2229
+ description: "Current sort direction"
2230
+ },
2231
+ searchValue: {
2232
+ types: [
2233
+ "string"
2234
+ ],
2235
+ description: "Current search query value"
2236
+ },
2237
+ page: {
2238
+ types: [
2239
+ "number"
2240
+ ],
2241
+ description: "Current page number"
2242
+ },
2243
+ pageSize: {
2244
+ types: [
2245
+ "number"
2246
+ ],
2247
+ description: "Number of items per page"
2248
+ },
2249
+ totalCount: {
2250
+ types: [
2251
+ "number"
2252
+ ],
2253
+ description: "Total number of items"
2254
+ },
2255
+ activeFilters: {
2256
+ types: [
2257
+ "object"
2258
+ ],
2259
+ description: "Active filters"
2260
+ },
2261
+ selectedIds: {
2262
+ types: [
2263
+ "array"
2264
+ ],
2265
+ description: "Currently selected item IDs"
2266
+ },
2267
+ columns: {
2268
+ types: [
2269
+ "number"
2270
+ ],
2271
+ description: "Number of columns"
2272
+ },
2273
+ gap: {
2274
+ types: [
2275
+ "string"
2276
+ ],
2277
+ description: "Gap between cells"
2278
+ },
2279
+ cells: {
2280
+ types: [
2281
+ "array"
2282
+ ],
2283
+ description: "Cell definitions",
2284
+ required: true
2285
+ }
2286
+ }
2287
+ },
2288
+ modal: {
2289
+ type: "modal",
2290
+ category: "container",
2291
+ description: "Modal dialog overlay",
2292
+ suggestedFor: [
2293
+ "dialogs",
2294
+ "confirmations",
2295
+ "forms"
2296
+ ],
2297
+ typicalSize: "medium",
2298
+ propsSchema: {
2299
+ isOpen: {
2300
+ types: [
2301
+ "boolean"
2302
+ ],
2303
+ description: "Whether the modal is open (defaults to true when rendered by slot wrapper)"
2304
+ },
2305
+ onClose: {
2306
+ types: [
2307
+ "function"
2308
+ ],
2309
+ description: "Callback when modal should close (injected by slot wrapper)"
2310
+ },
2311
+ title: {
2083
2312
  types: [
2084
2313
  "string"
2085
2314
  ],
@@ -3252,6 +3481,12 @@ var patterns_registry_default = {
3252
3481
  "badgesize"
3253
3482
  ],
3254
3483
  description: "size prop"
3484
+ },
3485
+ amount: {
3486
+ types: [
3487
+ "number"
3488
+ ],
3489
+ description: "Numeric count or amount to display in badge"
3255
3490
  }
3256
3491
  }
3257
3492
  },
@@ -3460,6 +3695,30 @@ var patterns_registry_default = {
3460
3695
  "string"
3461
3696
  ],
3462
3697
  description: "Declarative event name \u2014 emits UI:{action} via eventBus on card click"
3698
+ },
3699
+ isSelected: {
3700
+ types: [
3701
+ "boolean"
3702
+ ],
3703
+ description: "Whether the card is selected (highlighted state)"
3704
+ },
3705
+ name: {
3706
+ types: [
3707
+ "string"
3708
+ ],
3709
+ description: "Card name (alias for title)"
3710
+ },
3711
+ level: {
3712
+ types: [
3713
+ "number"
3714
+ ],
3715
+ description: "Level indicator"
3716
+ },
3717
+ maxLevel: {
3718
+ types: [
3719
+ "number"
3720
+ ],
3721
+ description: "Maximum level"
3463
3722
  }
3464
3723
  }
3465
3724
  },
@@ -6533,6 +6792,84 @@ var patterns_registry_default = {
6533
6792
  ],
6534
6793
  typicalSize: "large",
6535
6794
  propsSchema: {
6795
+ entity: {
6796
+ types: [
6797
+ "string"
6798
+ ],
6799
+ description: "Entity name for schema-driven integration"
6800
+ },
6801
+ data: {
6802
+ types: [
6803
+ "array"
6804
+ ],
6805
+ description: "Data array provided by the trait via render-ui"
6806
+ },
6807
+ className: {
6808
+ types: [
6809
+ "string"
6810
+ ],
6811
+ description: "Additional CSS classes"
6812
+ },
6813
+ isLoading: {
6814
+ types: [
6815
+ "boolean"
6816
+ ],
6817
+ description: "Loading state indicator"
6818
+ },
6819
+ error: {
6820
+ types: [
6821
+ "object"
6822
+ ],
6823
+ description: "Error state"
6824
+ },
6825
+ sortBy: {
6826
+ types: [
6827
+ "string"
6828
+ ],
6829
+ description: "Current sort field"
6830
+ },
6831
+ sortDirection: {
6832
+ types: [
6833
+ "string"
6834
+ ],
6835
+ description: "Current sort direction"
6836
+ },
6837
+ searchValue: {
6838
+ types: [
6839
+ "string"
6840
+ ],
6841
+ description: "Current search query value"
6842
+ },
6843
+ page: {
6844
+ types: [
6845
+ "number"
6846
+ ],
6847
+ description: "Current page number"
6848
+ },
6849
+ pageSize: {
6850
+ types: [
6851
+ "number"
6852
+ ],
6853
+ description: "Number of items per page"
6854
+ },
6855
+ totalCount: {
6856
+ types: [
6857
+ "number"
6858
+ ],
6859
+ description: "Total number of items"
6860
+ },
6861
+ activeFilters: {
6862
+ types: [
6863
+ "object"
6864
+ ],
6865
+ description: "Active filters"
6866
+ },
6867
+ selectedIds: {
6868
+ types: [
6869
+ "array"
6870
+ ],
6871
+ description: "Currently selected item IDs"
6872
+ },
6536
6873
  logo: {
6537
6874
  types: [
6538
6875
  "node"
@@ -6582,11 +6919,11 @@ var patterns_registry_default = {
6582
6919
  ],
6583
6920
  description: "Default collapsed state"
6584
6921
  },
6585
- onCollapseChange: {
6922
+ collapseChangeEvent: {
6586
6923
  types: [
6587
- "function"
6924
+ "string"
6588
6925
  ],
6589
- description: "Callback when collapse state changes"
6926
+ description: "Event emitted when collapse state changes, payload: { collapsed: boolean }"
6590
6927
  },
6591
6928
  hideCollapseButton: {
6592
6929
  types: [
@@ -6600,41 +6937,17 @@ var patterns_registry_default = {
6600
6937
  ],
6601
6938
  description: "Show a close button (for mobile)"
6602
6939
  },
6603
- onClose: {
6604
- types: [
6605
- "function"
6606
- ],
6607
- description: "Callback when close button is clicked"
6608
- },
6609
- onLogoClick: {
6610
- types: [
6611
- "function"
6612
- ],
6613
- description: "Callback when logo/brand is clicked"
6614
- },
6615
- className: {
6940
+ closeEvent: {
6616
6941
  types: [
6617
6942
  "string"
6618
6943
  ],
6619
- description: "Additional CSS classes"
6620
- },
6621
- isLoading: {
6622
- types: [
6623
- "boolean"
6624
- ],
6625
- description: "Loading state indicator"
6626
- },
6627
- error: {
6628
- types: [
6629
- "error"
6630
- ],
6631
- description: "Error state"
6944
+ description: "Event emitted when close button is clicked"
6632
6945
  },
6633
- entity: {
6946
+ logoClickEvent: {
6634
6947
  types: [
6635
6948
  "string"
6636
6949
  ],
6637
- description: "Entity name for schema-driven auto-fetch"
6950
+ description: "Event emitted when logo/brand is clicked"
6638
6951
  }
6639
6952
  }
6640
6953
  },
@@ -7282,6 +7595,12 @@ var patterns_registry_default = {
7282
7595
  "function"
7283
7596
  ],
7284
7597
  description: "Callback when user clicks sign out (optional - uses auth context signOut if not provided)"
7598
+ },
7599
+ children: {
7600
+ types: [
7601
+ "node"
7602
+ ],
7603
+ description: "Page content rendered inside the main area"
7285
7604
  }
7286
7605
  }
7287
7606
  },
@@ -7427,6 +7746,12 @@ var patterns_registry_default = {
7427
7746
  "boolean"
7428
7747
  ],
7429
7748
  description: "Whether to show the minimal top bar (default: true)"
7749
+ },
7750
+ children: {
7751
+ types: [
7752
+ "node"
7753
+ ],
7754
+ description: "Game content rendered inside the full-screen area"
7430
7755
  }
7431
7756
  }
7432
7757
  },
@@ -7639,59 +7964,107 @@ var patterns_registry_default = {
7639
7964
  ],
7640
7965
  typicalSize: "medium",
7641
7966
  propsSchema: {
7642
- title: {
7967
+ entity: {
7643
7968
  types: [
7644
7969
  "string"
7645
7970
  ],
7646
- description: "Timeline title"
7971
+ description: "Entity name for schema-driven integration"
7647
7972
  },
7648
- items: {
7973
+ data: {
7649
7974
  types: [
7650
- "unknown"
7975
+ "array"
7651
7976
  ],
7652
- description: "Timeline items"
7977
+ description: "Data array provided by the trait via render-ui"
7653
7978
  },
7654
- data: {
7979
+ className: {
7655
7980
  types: [
7656
- "unknown"
7981
+ "string"
7657
7982
  ],
7658
- description: "Schema-driven data"
7983
+ description: "Additional CSS classes"
7659
7984
  },
7660
- fields: {
7985
+ isLoading: {
7661
7986
  types: [
7662
- "unknown"
7987
+ "boolean"
7663
7988
  ],
7664
- description: "Fields to display"
7989
+ description: "Loading state indicator"
7665
7990
  },
7666
- itemActions: {
7991
+ error: {
7667
7992
  types: [
7668
- "unknown"
7993
+ "object"
7669
7994
  ],
7670
- description: "Actions per item"
7995
+ description: "Error state"
7671
7996
  },
7672
- entity: {
7997
+ sortBy: {
7673
7998
  types: [
7674
7999
  "string"
7675
8000
  ],
7676
- description: "Entity name for schema-driven auto-fetch"
8001
+ description: "Current sort field"
7677
8002
  },
7678
- isLoading: {
8003
+ sortDirection: {
7679
8004
  types: [
7680
- "boolean"
8005
+ "string"
7681
8006
  ],
7682
- description: "Loading state"
8007
+ description: "Current sort direction"
7683
8008
  },
7684
- error: {
8009
+ searchValue: {
7685
8010
  types: [
7686
- "error"
8011
+ "string"
7687
8012
  ],
7688
- description: "Error state"
8013
+ description: "Current search query value"
7689
8014
  },
7690
- className: {
8015
+ page: {
8016
+ types: [
8017
+ "number"
8018
+ ],
8019
+ description: "Current page number"
8020
+ },
8021
+ pageSize: {
8022
+ types: [
8023
+ "number"
8024
+ ],
8025
+ description: "Number of items per page"
8026
+ },
8027
+ totalCount: {
8028
+ types: [
8029
+ "number"
8030
+ ],
8031
+ description: "Total number of items"
8032
+ },
8033
+ activeFilters: {
8034
+ types: [
8035
+ "object"
8036
+ ],
8037
+ description: "Active filters"
8038
+ },
8039
+ selectedIds: {
8040
+ types: [
8041
+ "array"
8042
+ ],
8043
+ description: "Currently selected item IDs"
8044
+ },
8045
+ title: {
7691
8046
  types: [
7692
8047
  "string"
7693
8048
  ],
7694
- description: "Additional CSS classes"
8049
+ description: "Timeline title"
8050
+ },
8051
+ items: {
8052
+ types: [
8053
+ "unknown"
8054
+ ],
8055
+ description: "Timeline items"
8056
+ },
8057
+ fields: {
8058
+ types: [
8059
+ "unknown"
8060
+ ],
8061
+ description: "Fields to display"
8062
+ },
8063
+ itemActions: {
8064
+ types: [
8065
+ "unknown"
8066
+ ],
8067
+ description: "Actions per item"
7695
8068
  }
7696
8069
  }
7697
8070
  },
@@ -7707,6 +8080,84 @@ var patterns_registry_default = {
7707
8080
  ],
7708
8081
  typicalSize: "medium",
7709
8082
  propsSchema: {
8083
+ entity: {
8084
+ types: [
8085
+ "string"
8086
+ ],
8087
+ description: "Entity name for schema-driven integration"
8088
+ },
8089
+ data: {
8090
+ types: [
8091
+ "array"
8092
+ ],
8093
+ description: "Data array provided by the trait via render-ui"
8094
+ },
8095
+ className: {
8096
+ types: [
8097
+ "string"
8098
+ ],
8099
+ description: "Additional CSS classes"
8100
+ },
8101
+ isLoading: {
8102
+ types: [
8103
+ "boolean"
8104
+ ],
8105
+ description: "Loading state indicator"
8106
+ },
8107
+ error: {
8108
+ types: [
8109
+ "object"
8110
+ ],
8111
+ description: "Error state"
8112
+ },
8113
+ sortBy: {
8114
+ types: [
8115
+ "string"
8116
+ ],
8117
+ description: "Current sort field"
8118
+ },
8119
+ sortDirection: {
8120
+ types: [
8121
+ "string"
8122
+ ],
8123
+ description: "Current sort direction"
8124
+ },
8125
+ searchValue: {
8126
+ types: [
8127
+ "string"
8128
+ ],
8129
+ description: "Current search query value"
8130
+ },
8131
+ page: {
8132
+ types: [
8133
+ "number"
8134
+ ],
8135
+ description: "Current page number"
8136
+ },
8137
+ pageSize: {
8138
+ types: [
8139
+ "number"
8140
+ ],
8141
+ description: "Number of items per page"
8142
+ },
8143
+ totalCount: {
8144
+ types: [
8145
+ "number"
8146
+ ],
8147
+ description: "Total number of items"
8148
+ },
8149
+ activeFilters: {
8150
+ types: [
8151
+ "object"
8152
+ ],
8153
+ description: "Active filters"
8154
+ },
8155
+ selectedIds: {
8156
+ types: [
8157
+ "array"
8158
+ ],
8159
+ description: "Currently selected item IDs"
8160
+ },
7710
8161
  title: {
7711
8162
  types: [
7712
8163
  "string"
@@ -7719,12 +8170,6 @@ var patterns_registry_default = {
7719
8170
  ],
7720
8171
  description: "Media items"
7721
8172
  },
7722
- data: {
7723
- types: [
7724
- "unknown"
7725
- ],
7726
- description: "Schema-driven data"
7727
- },
7728
8173
  columns: {
7729
8174
  types: [
7730
8175
  "number"
@@ -7743,11 +8188,11 @@ var patterns_registry_default = {
7743
8188
  ],
7744
8189
  description: "Selected item IDs"
7745
8190
  },
7746
- onSelectionChange: {
8191
+ selectionEvent: {
7747
8192
  types: [
7748
- "function"
8193
+ "string"
7749
8194
  ],
7750
- description: "Selection change callback"
8195
+ description: "Event name emitted when selection changes (emitted as UI:{selectionEvent})"
7751
8196
  },
7752
8197
  showUpload: {
7753
8198
  types: [
@@ -7766,30 +8211,6 @@ var patterns_registry_default = {
7766
8211
  "string"
7767
8212
  ],
7768
8213
  description: "Aspect ratio for thumbnails"
7769
- },
7770
- entity: {
7771
- types: [
7772
- "string"
7773
- ],
7774
- description: "Entity name for schema-driven auto-fetch"
7775
- },
7776
- isLoading: {
7777
- types: [
7778
- "boolean"
7779
- ],
7780
- description: "Loading state"
7781
- },
7782
- error: {
7783
- types: [
7784
- "error"
7785
- ],
7786
- description: "Error state"
7787
- },
7788
- className: {
7789
- types: [
7790
- "string"
7791
- ],
7792
- description: "Additional CSS classes"
7793
8214
  }
7794
8215
  }
7795
8216
  },
@@ -8340,11 +8761,23 @@ var patterns_registry_default = {
8340
8761
  ],
8341
8762
  typicalSize: "large",
8342
8763
  propsSchema: {
8764
+ entity: {
8765
+ types: [
8766
+ "string"
8767
+ ],
8768
+ description: "Entity name for schema-driven integration"
8769
+ },
8770
+ data: {
8771
+ types: [
8772
+ "array"
8773
+ ],
8774
+ description: "Data array provided by the trait via render-ui"
8775
+ },
8343
8776
  className: {
8344
8777
  types: [
8345
8778
  "string"
8346
8779
  ],
8347
- description: "--- Closed-circuit props (MANDATORY) ---"
8780
+ description: "Additional CSS classes"
8348
8781
  },
8349
8782
  isLoading: {
8350
8783
  types: [
@@ -8354,21 +8787,63 @@ var patterns_registry_default = {
8354
8787
  },
8355
8788
  error: {
8356
8789
  types: [
8357
- "error"
8790
+ "object"
8358
8791
  ],
8359
8792
  description: "Error state"
8360
8793
  },
8361
- entity: {
8794
+ sortBy: {
8362
8795
  types: [
8363
8796
  "string"
8364
8797
  ],
8365
- description: "Entity name for schema-driven auto-fetch"
8798
+ description: "Current sort field"
8799
+ },
8800
+ sortDirection: {
8801
+ types: [
8802
+ "string"
8803
+ ],
8804
+ description: "Current sort direction"
8805
+ },
8806
+ searchValue: {
8807
+ types: [
8808
+ "string"
8809
+ ],
8810
+ description: "Current search query value"
8811
+ },
8812
+ page: {
8813
+ types: [
8814
+ "number"
8815
+ ],
8816
+ description: "Current page number"
8817
+ },
8818
+ pageSize: {
8819
+ types: [
8820
+ "number"
8821
+ ],
8822
+ description: "Number of items per page"
8823
+ },
8824
+ totalCount: {
8825
+ types: [
8826
+ "number"
8827
+ ],
8828
+ description: "Total number of items"
8829
+ },
8830
+ activeFilters: {
8831
+ types: [
8832
+ "object"
8833
+ ],
8834
+ description: "Active filters"
8835
+ },
8836
+ selectedIds: {
8837
+ types: [
8838
+ "array"
8839
+ ],
8840
+ description: "Currently selected item IDs"
8366
8841
  },
8367
8842
  tiles: {
8368
8843
  types: [
8369
8844
  "array"
8370
8845
  ],
8371
- description: "--- Grid data ---"
8846
+ description: "EntityDisplayProps provides: className, isLoading, error, entity,"
8372
8847
  },
8373
8848
  units: {
8374
8849
  types: [
@@ -8410,25 +8885,25 @@ var patterns_registry_default = {
8410
8885
  types: [
8411
8886
  "function"
8412
8887
  ],
8413
- description: "--- Event handlers ---"
8888
+ description: "--- Event handlers (legacy callbacks \u2014 prefer declarative event string props below) ---"
8414
8889
  },
8415
8890
  onUnitClick: {
8416
8891
  types: [
8417
8892
  "function"
8418
8893
  ],
8419
- description: "Unit click handler"
8894
+ description: "eslint-disable-next-line almadar/organism-no-callback-props"
8420
8895
  },
8421
8896
  onTileHover: {
8422
8897
  types: [
8423
8898
  "function"
8424
8899
  ],
8425
- description: "Tile hover handler"
8900
+ description: "eslint-disable-next-line almadar/organism-no-callback-props"
8426
8901
  },
8427
8902
  onTileLeave: {
8428
8903
  types: [
8429
8904
  "function"
8430
8905
  ],
8431
- description: "Tile leave handler"
8906
+ description: "eslint-disable-next-line almadar/organism-no-callback-props"
8432
8907
  },
8433
8908
  tileClickEvent: {
8434
8909
  types: [
@@ -8490,6 +8965,18 @@ var patterns_registry_default = {
8490
8965
  ],
8491
8966
  description: "Extra scale multiplier for unit draw size. 1 = default."
8492
8967
  },
8968
+ boardWidth: {
8969
+ types: [
8970
+ "number"
8971
+ ],
8972
+ description: "Board width in tiles (overrides tile-derived size)"
8973
+ },
8974
+ boardHeight: {
8975
+ types: [
8976
+ "number"
8977
+ ],
8978
+ description: "Board height in tiles (overrides tile-derived size)"
8979
+ },
8493
8980
  diamondTopY: {
8494
8981
  types: [
8495
8982
  "number"
@@ -8530,7 +9017,7 @@ var patterns_registry_default = {
8530
9017
  types: [
8531
9018
  "function"
8532
9019
  ],
8533
- description: "Callback to draw canvas effects after units"
9020
+ description: "Callback to draw canvas effects after units (canvas-specific: cannot be declarative)"
8534
9021
  },
8535
9022
  hasActiveEffects: {
8536
9023
  types: [
@@ -9169,12 +9656,23 @@ var patterns_registry_default = {
9169
9656
  propsSchema: {
9170
9657
  entity: {
9171
9658
  types: [
9172
- "worldmapentity"
9659
+ "string"
9173
9660
  ],
9174
- description: "World map entity data",
9175
- required: true
9661
+ description: "Entity name for schema-driven integration"
9176
9662
  },
9177
- isLoading: {
9663
+ data: {
9664
+ types: [
9665
+ "array"
9666
+ ],
9667
+ description: "Data array provided by the trait via render-ui"
9668
+ },
9669
+ className: {
9670
+ types: [
9671
+ "string"
9672
+ ],
9673
+ description: "className prop"
9674
+ },
9675
+ isLoading: {
9178
9676
  types: [
9179
9677
  "boolean"
9180
9678
  ],
@@ -9182,10 +9680,58 @@ var patterns_registry_default = {
9182
9680
  },
9183
9681
  error: {
9184
9682
  types: [
9185
- "error"
9683
+ "object"
9186
9684
  ],
9187
9685
  description: "Error state"
9188
9686
  },
9687
+ sortBy: {
9688
+ types: [
9689
+ "string"
9690
+ ],
9691
+ description: "Current sort field"
9692
+ },
9693
+ sortDirection: {
9694
+ types: [
9695
+ "string"
9696
+ ],
9697
+ description: "Current sort direction"
9698
+ },
9699
+ searchValue: {
9700
+ types: [
9701
+ "string"
9702
+ ],
9703
+ description: "Current search query value"
9704
+ },
9705
+ page: {
9706
+ types: [
9707
+ "number"
9708
+ ],
9709
+ description: "Current page number"
9710
+ },
9711
+ pageSize: {
9712
+ types: [
9713
+ "number"
9714
+ ],
9715
+ description: "Number of items per page"
9716
+ },
9717
+ totalCount: {
9718
+ types: [
9719
+ "number"
9720
+ ],
9721
+ description: "Total number of items"
9722
+ },
9723
+ activeFilters: {
9724
+ types: [
9725
+ "object"
9726
+ ],
9727
+ description: "Active filters"
9728
+ },
9729
+ selectedIds: {
9730
+ types: [
9731
+ "array"
9732
+ ],
9733
+ description: "Currently selected item IDs"
9734
+ },
9189
9735
  scale: {
9190
9736
  types: [
9191
9737
  "number"
@@ -9311,12 +9857,6 @@ var patterns_registry_default = {
9311
9857
  "function"
9312
9858
  ],
9313
9859
  description: "resolveUnitFrame prop"
9314
- },
9315
- className: {
9316
- types: [
9317
- "string"
9318
- ],
9319
- description: "className prop"
9320
9860
  }
9321
9861
  }
9322
9862
  },
@@ -11836,9 +12376,10 @@ var patterns_registry_default = {
11836
12376
  },
11837
12377
  fieldMap: {
11838
12378
  types: [
11839
- "bookfieldmap"
12379
+ "bookfieldmap",
12380
+ "string"
11840
12381
  ],
11841
- description: "Field name translation map for non-English entity schemas"
12382
+ description: 'Field name translation map \u2014 a BookFieldMap object or locale key ("ar")'
11842
12383
  }
11843
12384
  }
11844
12385
  },
@@ -11847,24 +12388,1017 @@ var patterns_registry_default = {
11847
12388
  category: "component",
11848
12389
  description: "ScaledDiagram Molecule Wraps a fixed-size diagram (like JazariStateMachine / StateMachineView) and CSS-scales it to fit the parent container width. The diagram renders at its natural (large) size. We observe the content element and once the diagram is measured we apply transform:scale() with a corrected container height so surrounding layout flows correctly. Event Contract: - No events emitted (layout-only wrapper) - entityAware: false",
11849
12390
  suggestedFor: [
11850
- "scaled",
11851
- "diagram",
11852
- "scaled diagram"
12391
+ "scaled",
12392
+ "diagram",
12393
+ "scaled diagram"
12394
+ ],
12395
+ typicalSize: "medium",
12396
+ propsSchema: {
12397
+ children: {
12398
+ types: [
12399
+ "node"
12400
+ ],
12401
+ description: "children prop",
12402
+ required: true
12403
+ },
12404
+ className: {
12405
+ types: [
12406
+ "string"
12407
+ ],
12408
+ description: "className prop"
12409
+ }
12410
+ }
12411
+ },
12412
+ "combat-log": {
12413
+ type: "combat-log",
12414
+ category: "game",
12415
+ description: "CombatLog Component Scrollable log of combat events with icons and colors. Generalized from Trait Wars \u2014 removed asset manifest coupling.",
12416
+ suggestedFor: [
12417
+ "combat",
12418
+ "log",
12419
+ "combat log"
12420
+ ],
12421
+ typicalSize: "large",
12422
+ propsSchema: {
12423
+ events: {
12424
+ types: [
12425
+ "array"
12426
+ ],
12427
+ description: "events prop",
12428
+ required: true
12429
+ },
12430
+ maxVisible: {
12431
+ types: [
12432
+ "number"
12433
+ ],
12434
+ description: "maxVisible prop"
12435
+ },
12436
+ autoScroll: {
12437
+ types: [
12438
+ "boolean"
12439
+ ],
12440
+ description: "autoScroll prop"
12441
+ },
12442
+ showTimestamps: {
12443
+ types: [
12444
+ "boolean"
12445
+ ],
12446
+ description: "showTimestamps prop"
12447
+ },
12448
+ title: {
12449
+ types: [
12450
+ "string"
12451
+ ],
12452
+ description: "title prop"
12453
+ },
12454
+ className: {
12455
+ types: [
12456
+ "string"
12457
+ ],
12458
+ description: "className prop"
12459
+ }
12460
+ }
12461
+ },
12462
+ "simulation-canvas": {
12463
+ type: "simulation-canvas",
12464
+ category: "game",
12465
+ description: "SimulationCanvas Self-contained 2D physics canvas for educational presets. Runs its own Euler integration loop \u2014 no external physics hook needed.",
12466
+ suggestedFor: [
12467
+ "simulation",
12468
+ "canvas",
12469
+ "simulation canvas"
12470
+ ],
12471
+ typicalSize: "large",
12472
+ propsSchema: {
12473
+ preset: {
12474
+ types: [
12475
+ "physicspreset"
12476
+ ],
12477
+ description: "preset prop",
12478
+ required: true
12479
+ },
12480
+ width: {
12481
+ types: [
12482
+ "number"
12483
+ ],
12484
+ description: "width prop"
12485
+ },
12486
+ height: {
12487
+ types: [
12488
+ "number"
12489
+ ],
12490
+ description: "height prop"
12491
+ },
12492
+ running: {
12493
+ types: [
12494
+ "boolean"
12495
+ ],
12496
+ description: "running prop",
12497
+ required: true
12498
+ },
12499
+ speed: {
12500
+ types: [
12501
+ "number"
12502
+ ],
12503
+ description: "speed prop"
12504
+ },
12505
+ className: {
12506
+ types: [
12507
+ "string"
12508
+ ],
12509
+ description: "className prop"
12510
+ }
12511
+ }
12512
+ },
12513
+ "simulation-controls": {
12514
+ type: "simulation-controls",
12515
+ category: "display",
12516
+ description: "SimulationControls Play/pause/step/reset controls with speed and parameter sliders.",
12517
+ suggestedFor: [
12518
+ "simulation",
12519
+ "controls",
12520
+ "simulation controls"
12521
+ ],
12522
+ typicalSize: "large",
12523
+ propsSchema: {
12524
+ running: {
12525
+ types: [
12526
+ "boolean"
12527
+ ],
12528
+ description: "running prop",
12529
+ required: true
12530
+ },
12531
+ speed: {
12532
+ types: [
12533
+ "number"
12534
+ ],
12535
+ description: "speed prop",
12536
+ required: true
12537
+ },
12538
+ parameters: {
12539
+ types: [
12540
+ "object"
12541
+ ],
12542
+ description: "parameters prop",
12543
+ required: true
12544
+ },
12545
+ onPlay: {
12546
+ types: [
12547
+ "function"
12548
+ ],
12549
+ description: "onPlay prop",
12550
+ required: true
12551
+ },
12552
+ onPause: {
12553
+ types: [
12554
+ "function"
12555
+ ],
12556
+ description: "onPause prop",
12557
+ required: true
12558
+ },
12559
+ onStep: {
12560
+ types: [
12561
+ "function"
12562
+ ],
12563
+ description: "onStep prop",
12564
+ required: true
12565
+ },
12566
+ onReset: {
12567
+ types: [
12568
+ "function"
12569
+ ],
12570
+ description: "onReset prop",
12571
+ required: true
12572
+ },
12573
+ onSpeedChange: {
12574
+ types: [
12575
+ "function"
12576
+ ],
12577
+ description: "onSpeedChange prop",
12578
+ required: true
12579
+ },
12580
+ onParameterChange: {
12581
+ types: [
12582
+ "function"
12583
+ ],
12584
+ description: "onParameterChange prop",
12585
+ required: true
12586
+ },
12587
+ className: {
12588
+ types: [
12589
+ "string"
12590
+ ],
12591
+ description: "className prop"
12592
+ }
12593
+ }
12594
+ },
12595
+ "simulation-graph": {
12596
+ type: "simulation-graph",
12597
+ category: "display",
12598
+ description: "SimulationGraph Real-time measurement graph for physics simulations. Renders measurement data as a simple line chart on canvas.",
12599
+ suggestedFor: [
12600
+ "simulation",
12601
+ "graph",
12602
+ "simulation graph"
12603
+ ],
12604
+ typicalSize: "large",
12605
+ propsSchema: {
12606
+ label: {
12607
+ types: [
12608
+ "string"
12609
+ ],
12610
+ description: "label prop",
12611
+ required: true
12612
+ },
12613
+ unit: {
12614
+ types: [
12615
+ "string"
12616
+ ],
12617
+ description: "unit prop",
12618
+ required: true
12619
+ },
12620
+ data: {
12621
+ types: [
12622
+ "array"
12623
+ ],
12624
+ description: "data prop",
12625
+ required: true
12626
+ },
12627
+ maxPoints: {
12628
+ types: [
12629
+ "number"
12630
+ ],
12631
+ description: "maxPoints prop"
12632
+ },
12633
+ width: {
12634
+ types: [
12635
+ "number"
12636
+ ],
12637
+ description: "width prop"
12638
+ },
12639
+ height: {
12640
+ types: [
12641
+ "number"
12642
+ ],
12643
+ description: "height prop"
12644
+ },
12645
+ color: {
12646
+ types: [
12647
+ "string"
12648
+ ],
12649
+ description: "color prop"
12650
+ },
12651
+ className: {
12652
+ types: [
12653
+ "string"
12654
+ ],
12655
+ description: "className prop"
12656
+ }
12657
+ }
12658
+ },
12659
+ "builder-board": {
12660
+ type: "builder-board",
12661
+ category: "game",
12662
+ description: "BuilderBoard Component-snapping game board. The player places components onto slots in a blueprint. Correct placement completes the build. Good for: architecture, circuits, molecules, system design stories. Events emitted via completeEvent (default UI:PUZZLE_COMPLETE).",
12663
+ suggestedFor: [
12664
+ "builder",
12665
+ "board",
12666
+ "builder board"
12667
+ ],
12668
+ typicalSize: "large",
12669
+ propsSchema: {
12670
+ entity: {
12671
+ types: [
12672
+ "builderpuzzleentity"
12673
+ ],
12674
+ description: "entity prop",
12675
+ required: true
12676
+ },
12677
+ completeEvent: {
12678
+ types: [
12679
+ "string"
12680
+ ],
12681
+ description: "completeEvent prop"
12682
+ }
12683
+ }
12684
+ },
12685
+ "classifier-board": {
12686
+ type: "classifier-board",
12687
+ category: "game",
12688
+ description: "ClassifierBoard Drag-and-drop classification game. The player sorts items into the correct category buckets. All items must be correctly classified to win. Good for: taxonomy, pattern recognition, sorting stories. Events emitted via completeEvent (default UI:PUZZLE_COMPLETE).",
12689
+ suggestedFor: [
12690
+ "classifier",
12691
+ "board",
12692
+ "classifier board"
12693
+ ],
12694
+ typicalSize: "large",
12695
+ propsSchema: {
12696
+ entity: {
12697
+ types: [
12698
+ "classifierpuzzleentity"
12699
+ ],
12700
+ description: "entity prop",
12701
+ required: true
12702
+ },
12703
+ completeEvent: {
12704
+ types: [
12705
+ "string"
12706
+ ],
12707
+ description: "completeEvent prop"
12708
+ }
12709
+ }
12710
+ },
12711
+ "debugger-board": {
12712
+ type: "debugger-board",
12713
+ category: "game",
12714
+ description: "DebuggerBoard Error-finding game board. The player reviews a code/system listing and identifies lines or elements that contain bugs. Good for: programming, logic, troubleshooting stories. Events emitted via completeEvent (default UI:PUZZLE_COMPLETE).",
12715
+ suggestedFor: [
12716
+ "debugger",
12717
+ "board",
12718
+ "debugger board"
12719
+ ],
12720
+ typicalSize: "large",
12721
+ propsSchema: {
12722
+ entity: {
12723
+ types: [
12724
+ "debuggerpuzzleentity"
12725
+ ],
12726
+ description: "entity prop",
12727
+ required: true
12728
+ },
12729
+ completeEvent: {
12730
+ types: [
12731
+ "string"
12732
+ ],
12733
+ description: "completeEvent prop"
12734
+ }
12735
+ }
12736
+ },
12737
+ "event-handler-board": {
12738
+ type: "event-handler-board",
12739
+ category: "game",
12740
+ description: "EventHandlerBoard Organism Contains ALL game logic for the Event Handler tier (ages 9-12). Kids click on world objects, set WHEN/THEN rules, and watch event chains cascade during playback. Encourages experimentation: on failure, resets to editing so the kid can try different rules. After 3 failures, shows a progressive hint.",
12741
+ suggestedFor: [
12742
+ "event",
12743
+ "handler",
12744
+ "board",
12745
+ "event handler board"
12746
+ ],
12747
+ typicalSize: "large",
12748
+ propsSchema: {
12749
+ entity: {
12750
+ types: [
12751
+ "eventhandlerpuzzleentity"
12752
+ ],
12753
+ description: "Puzzle data",
12754
+ required: true
12755
+ },
12756
+ stepDurationMs: {
12757
+ types: [
12758
+ "number"
12759
+ ],
12760
+ description: "Playback speed in ms per event"
12761
+ },
12762
+ playEvent: {
12763
+ types: [
12764
+ "string"
12765
+ ],
12766
+ description: "Emits UI:{playEvent}"
12767
+ },
12768
+ completeEvent: {
12769
+ types: [
12770
+ "string"
12771
+ ],
12772
+ description: "Emits UI:{completeEvent} with { success }"
12773
+ }
12774
+ }
12775
+ },
12776
+ "event-log": {
12777
+ type: "event-log",
12778
+ category: "display",
12779
+ description: "EventLog Component Scrolling log of events during playback in the Event Handler tier. Shows the chain reaction as events cascade through objects.",
12780
+ suggestedFor: [
12781
+ "event",
12782
+ "log",
12783
+ "event log"
12784
+ ],
12785
+ typicalSize: "large",
12786
+ propsSchema: {
12787
+ entries: {
12788
+ types: [
12789
+ "array"
12790
+ ],
12791
+ description: "Log entries",
12792
+ required: true
12793
+ },
12794
+ maxHeight: {
12795
+ types: [
12796
+ "number"
12797
+ ],
12798
+ description: "Max visible height before scroll"
12799
+ },
12800
+ label: {
12801
+ types: [
12802
+ "string"
12803
+ ],
12804
+ description: "Title label"
12805
+ },
12806
+ className: {
12807
+ types: [
12808
+ "string"
12809
+ ],
12810
+ description: "Additional CSS classes"
12811
+ }
12812
+ }
12813
+ },
12814
+ "object-rule-panel": {
12815
+ type: "object-rule-panel",
12816
+ category: "display",
12817
+ description: "ObjectRulePanel Component Shows the rules panel for a selected world object in the Event Handler tier. Displays object info, its current state (via TraitStateViewer), and a list of WHEN/THEN rules the kid has set.",
12818
+ suggestedFor: [
12819
+ "object",
12820
+ "rule",
12821
+ "panel",
12822
+ "object rule panel"
12823
+ ],
12824
+ typicalSize: "large",
12825
+ propsSchema: {
12826
+ object: {
12827
+ types: [
12828
+ "puzzleobjectdef"
12829
+ ],
12830
+ description: "The selected object",
12831
+ required: true
12832
+ },
12833
+ onRulesChange: {
12834
+ types: [
12835
+ "function"
12836
+ ],
12837
+ description: "Called when rules change",
12838
+ required: true
12839
+ },
12840
+ disabled: {
12841
+ types: [
12842
+ "boolean"
12843
+ ],
12844
+ description: "Whether editing is disabled"
12845
+ },
12846
+ className: {
12847
+ types: [
12848
+ "string"
12849
+ ],
12850
+ description: "Additional CSS classes"
12851
+ }
12852
+ }
12853
+ },
12854
+ "rule-editor": {
12855
+ type: "rule-editor",
12856
+ category: "display",
12857
+ description: "RuleEditor Component A single WHEN/THEN rule row for the Event Handler tier (ages 9-12). Kid picks an event trigger and an action from dropdowns.",
12858
+ suggestedFor: [
12859
+ "rule",
12860
+ "editor",
12861
+ "rule editor"
12862
+ ],
12863
+ typicalSize: "large",
12864
+ propsSchema: {
12865
+ rule: {
12866
+ types: [
12867
+ "ruledefinition"
12868
+ ],
12869
+ description: "The current rule",
12870
+ required: true
12871
+ },
12872
+ availableEvents: {
12873
+ types: [
12874
+ "array"
12875
+ ],
12876
+ description: "Available event triggers to listen for",
12877
+ required: true
12878
+ },
12879
+ availableActions: {
12880
+ types: [
12881
+ "array"
12882
+ ],
12883
+ description: "Available actions to perform",
12884
+ required: true
12885
+ },
12886
+ onChange: {
12887
+ types: [
12888
+ "function"
12889
+ ],
12890
+ description: "Called when rule changes",
12891
+ required: true
12892
+ },
12893
+ onRemove: {
12894
+ types: [
12895
+ "function"
12896
+ ],
12897
+ description: "Called when rule is removed"
12898
+ },
12899
+ disabled: {
12900
+ types: [
12901
+ "boolean"
12902
+ ],
12903
+ description: "Whether editing is disabled (during playback)"
12904
+ },
12905
+ className: {
12906
+ types: [
12907
+ "string"
12908
+ ],
12909
+ description: "Additional CSS classes"
12910
+ }
12911
+ }
12912
+ },
12913
+ "negotiator-board": {
12914
+ type: "negotiator-board",
12915
+ category: "game",
12916
+ description: "NegotiatorBoard Turn-based decision matrix game. The player makes choices over multiple rounds against an AI opponent. Each round both sides pick an action, and payoffs are determined by the combination. Good for: ethics, business, game theory, economics stories. Events emitted via completeEvent (default UI:PUZZLE_COMPLETE).",
12917
+ suggestedFor: [
12918
+ "negotiator",
12919
+ "board",
12920
+ "negotiator board"
12921
+ ],
12922
+ typicalSize: "large",
12923
+ propsSchema: {
12924
+ entity: {
12925
+ types: [
12926
+ "negotiatorpuzzleentity"
12927
+ ],
12928
+ description: "entity prop",
12929
+ required: true
12930
+ },
12931
+ completeEvent: {
12932
+ types: [
12933
+ "string"
12934
+ ],
12935
+ description: "completeEvent prop"
12936
+ }
12937
+ }
12938
+ },
12939
+ "action-palette": {
12940
+ type: "action-palette",
12941
+ category: "display",
12942
+ description: "ActionPalette Component Grid of draggable ActionTile components for the Sequencer tier. Kids pick from these to build their sequence.",
12943
+ suggestedFor: [
12944
+ "action",
12945
+ "palette",
12946
+ "action palette"
12947
+ ],
12948
+ typicalSize: "large",
12949
+ propsSchema: {
12950
+ actions: {
12951
+ types: [
12952
+ "array"
12953
+ ],
12954
+ description: "Available actions",
12955
+ required: true
12956
+ },
12957
+ usedActionIds: {
12958
+ types: [
12959
+ "array"
12960
+ ],
12961
+ description: "IDs of actions that are already used (shown as disabled)"
12962
+ },
12963
+ allowDuplicates: {
12964
+ types: [
12965
+ "boolean"
12966
+ ],
12967
+ description: "Whether each action can be used multiple times"
12968
+ },
12969
+ categoryColors: {
12970
+ types: [
12971
+ "object"
12972
+ ],
12973
+ description: "Category \u2192 color mapping"
12974
+ },
12975
+ size: {
12976
+ types: [
12977
+ "string"
12978
+ ],
12979
+ description: "Size variant"
12980
+ },
12981
+ label: {
12982
+ types: [
12983
+ "string"
12984
+ ],
12985
+ description: "Label above the palette"
12986
+ },
12987
+ className: {
12988
+ types: [
12989
+ "string"
12990
+ ],
12991
+ description: "Additional CSS classes"
12992
+ }
12993
+ }
12994
+ },
12995
+ "action-tile": {
12996
+ type: "action-tile",
12997
+ category: "game",
12998
+ description: "ActionTile Component A draggable action tile for the Sequencer tier (ages 5-8). Kids drag these from the ActionPalette into SequenceBar slots. Sets SlotItemData on dataTransfer for TraitSlot compatibility.",
12999
+ suggestedFor: [
13000
+ "action",
13001
+ "tile",
13002
+ "action tile"
13003
+ ],
13004
+ typicalSize: "large",
13005
+ propsSchema: {
13006
+ action: {
13007
+ types: [
13008
+ "slotitemdata"
13009
+ ],
13010
+ description: "The action data",
13011
+ required: true
13012
+ },
13013
+ size: {
13014
+ types: [
13015
+ "string"
13016
+ ],
13017
+ description: "Size variant"
13018
+ },
13019
+ disabled: {
13020
+ types: [
13021
+ "boolean"
13022
+ ],
13023
+ description: "Whether the tile is disabled / already used"
13024
+ },
13025
+ categoryColors: {
13026
+ types: [
13027
+ "object"
13028
+ ],
13029
+ description: "Category \u2192 color mapping"
13030
+ }
13031
+ }
13032
+ },
13033
+ "sequence-bar": {
13034
+ type: "sequence-bar",
13035
+ category: "display",
13036
+ description: "SequenceBar Component A row of TraitSlot components forming the action sequence for the Sequencer tier (ages 5-8). Kids drag ActionTiles from the palette into these slots to build their sequence.",
13037
+ suggestedFor: [
13038
+ "sequence",
13039
+ "bar",
13040
+ "sequence bar"
13041
+ ],
13042
+ typicalSize: "large",
13043
+ propsSchema: {
13044
+ slots: {
13045
+ types: [
13046
+ "array"
13047
+ ],
13048
+ description: "The current sequence (sparse \u2014 undefined means empty slot)",
13049
+ required: true
13050
+ },
13051
+ maxSlots: {
13052
+ types: [
13053
+ "number"
13054
+ ],
13055
+ description: "Max number of slots",
13056
+ required: true
13057
+ },
13058
+ onSlotDrop: {
13059
+ types: [
13060
+ "function"
13061
+ ],
13062
+ description: "Called when an item is dropped into slot at index",
13063
+ required: true
13064
+ },
13065
+ onSlotRemove: {
13066
+ types: [
13067
+ "function"
13068
+ ],
13069
+ description: "Called when a slot is cleared",
13070
+ required: true
13071
+ },
13072
+ playing: {
13073
+ types: [
13074
+ "boolean"
13075
+ ],
13076
+ description: "Whether the sequence is currently playing (disable interaction)"
13077
+ },
13078
+ currentStep: {
13079
+ types: [
13080
+ "number"
13081
+ ],
13082
+ description: "Current step index during playback (-1 = not playing)"
13083
+ },
13084
+ categoryColors: {
13085
+ types: [
13086
+ "object"
13087
+ ],
13088
+ description: "Category \u2192 color mapping"
13089
+ },
13090
+ slotFeedback: {
13091
+ types: [
13092
+ "array"
13093
+ ],
13094
+ description: "Per-slot correctness feedback shown after a failed attempt"
13095
+ },
13096
+ size: {
13097
+ types: [
13098
+ "string"
13099
+ ],
13100
+ description: "Size variant"
13101
+ },
13102
+ className: {
13103
+ types: [
13104
+ "string"
13105
+ ],
13106
+ description: "Additional CSS classes"
13107
+ }
13108
+ }
13109
+ },
13110
+ "sequencer-board": {
13111
+ type: "sequencer-board",
13112
+ category: "game",
13113
+ description: 'SequencerBoard Organism Contains ALL game logic for the Sequencer tier (ages 5-8). Manages the action sequence, validates it, and animates Kekec executing each step on the puzzle scene. Feedback-first UX: - On failure: slots stay in place, each slot gets a green or red ring showing exactly which steps are correct and which need to change. - Modifying a slot clears its individual feedback so the kid can re-try. - After 3 failures a persistent hint appears above the sequence bar. - "Reset" clears everything including attempts / hint. TraitStateViewer states use indexed labels ("1. Walk", "2. Jump") so that repeated actions are correctly highlighted during playback.',
13114
+ suggestedFor: [
13115
+ "sequencer",
13116
+ "board",
13117
+ "sequencer board"
13118
+ ],
13119
+ typicalSize: "large",
13120
+ propsSchema: {
13121
+ entity: {
13122
+ types: [
13123
+ "sequencerpuzzleentity"
13124
+ ],
13125
+ description: "Puzzle data",
13126
+ required: true
13127
+ },
13128
+ categoryColors: {
13129
+ types: [
13130
+ "object"
13131
+ ],
13132
+ description: "Category \u2192 color mapping"
13133
+ },
13134
+ stepDurationMs: {
13135
+ types: [
13136
+ "number"
13137
+ ],
13138
+ description: "Playback speed in ms per step"
13139
+ },
13140
+ playEvent: {
13141
+ types: [
13142
+ "string"
13143
+ ],
13144
+ description: "Emits UI:{playEvent} with { sequence: string[] }"
13145
+ },
13146
+ completeEvent: {
13147
+ types: [
13148
+ "string"
13149
+ ],
13150
+ description: "Emits UI:{completeEvent} with { success: boolean }"
13151
+ }
13152
+ }
13153
+ },
13154
+ "simulator-board": {
13155
+ type: "simulator-board",
13156
+ category: "game",
13157
+ description: "SimulatorBoard Parameter-slider game board. The player adjusts parameters and observes real-time output. Correct parameter values must bring the output within a target range to win. Good for: physics, economics, system design stories. Events emitted via completeEvent (default UI:PUZZLE_COMPLETE).",
13158
+ suggestedFor: [
13159
+ "simulator",
13160
+ "board",
13161
+ "simulator board"
13162
+ ],
13163
+ typicalSize: "large",
13164
+ propsSchema: {
13165
+ entity: {
13166
+ types: [
13167
+ "simulatorpuzzleentity"
13168
+ ],
13169
+ description: "entity prop",
13170
+ required: true
13171
+ },
13172
+ completeEvent: {
13173
+ types: [
13174
+ "string"
13175
+ ],
13176
+ description: "completeEvent prop"
13177
+ }
13178
+ }
13179
+ },
13180
+ "code-view": {
13181
+ type: "code-view",
13182
+ category: "display",
13183
+ description: "CodeView Component Shows the JSON code representation of a state machine. Toggle between visual and code view in State Architect tier.",
13184
+ suggestedFor: [
13185
+ "code",
13186
+ "view",
13187
+ "code view"
13188
+ ],
13189
+ typicalSize: "large",
13190
+ propsSchema: {
13191
+ data: {
13192
+ types: [
13193
+ "object"
13194
+ ],
13195
+ description: "JSON data to display",
13196
+ required: true
13197
+ },
13198
+ label: {
13199
+ types: [
13200
+ "string"
13201
+ ],
13202
+ description: "Label"
13203
+ },
13204
+ defaultExpanded: {
13205
+ types: [
13206
+ "boolean"
13207
+ ],
13208
+ description: "Whether the code is expanded by default"
13209
+ },
13210
+ className: {
13211
+ types: [
13212
+ "string"
13213
+ ],
13214
+ description: "Additional CSS classes"
13215
+ }
13216
+ }
13217
+ },
13218
+ "state-architect-board": {
13219
+ type: "state-architect-board",
13220
+ category: "display",
13221
+ description: "StateArchitectBoard Organism Contains ALL game logic for the State Architect tier (ages 13+). Kids design state machines via a visual graph editor, then run them to see if the behavior matches the puzzle goal.",
13222
+ suggestedFor: [
13223
+ "state",
13224
+ "architect",
13225
+ "board",
13226
+ "state architect board"
13227
+ ],
13228
+ typicalSize: "large",
13229
+ propsSchema: {
13230
+ entity: {
13231
+ types: [
13232
+ "statearchitectpuzzleentity"
13233
+ ],
13234
+ description: "Puzzle data",
13235
+ required: true
13236
+ },
13237
+ stepDurationMs: {
13238
+ types: [
13239
+ "number"
13240
+ ],
13241
+ description: "Playback speed"
13242
+ },
13243
+ testEvent: {
13244
+ types: [
13245
+ "string"
13246
+ ],
13247
+ description: "Emits UI:{testEvent}"
13248
+ },
13249
+ completeEvent: {
13250
+ types: [
13251
+ "string"
13252
+ ],
13253
+ description: "Emits UI:{completeEvent} with { success, passedTests }"
13254
+ }
13255
+ }
13256
+ },
13257
+ "state-node": {
13258
+ type: "state-node",
13259
+ category: "display",
13260
+ description: "StateNode Component A draggable state circle for the graph editor in the State Architect tier (ages 13+). Shows state name, highlights when current, and supports click to select.",
13261
+ suggestedFor: [
13262
+ "state",
13263
+ "node",
13264
+ "state node"
13265
+ ],
13266
+ typicalSize: "large",
13267
+ propsSchema: {
13268
+ name: {
13269
+ types: [
13270
+ "string"
13271
+ ],
13272
+ description: "State name",
13273
+ required: true
13274
+ },
13275
+ isCurrent: {
13276
+ types: [
13277
+ "boolean"
13278
+ ],
13279
+ description: "Whether this is the current active state"
13280
+ },
13281
+ isSelected: {
13282
+ types: [
13283
+ "boolean"
13284
+ ],
13285
+ description: "Whether this node is selected for editing"
13286
+ },
13287
+ isInitial: {
13288
+ types: [
13289
+ "boolean"
13290
+ ],
13291
+ description: "Whether this is the initial state"
13292
+ },
13293
+ position: {
13294
+ types: [
13295
+ "object"
13296
+ ],
13297
+ description: "Position on the graph canvas",
13298
+ required: true
13299
+ },
13300
+ onClick: {
13301
+ types: [
13302
+ "function"
13303
+ ],
13304
+ description: "Click handler"
13305
+ },
13306
+ className: {
13307
+ types: [
13308
+ "string"
13309
+ ],
13310
+ description: "Additional CSS classes"
13311
+ }
13312
+ }
13313
+ },
13314
+ "transition-arrow": {
13315
+ type: "transition-arrow",
13316
+ category: "display",
13317
+ description: "TransitionArrow Component An SVG arrow connecting two state nodes in the graph editor. Shows the event name as a label on the arrow.",
13318
+ suggestedFor: [
13319
+ "transition",
13320
+ "arrow",
13321
+ "transition arrow"
13322
+ ],
13323
+ typicalSize: "large",
13324
+ propsSchema: {
13325
+ from: {
13326
+ types: [
13327
+ "object"
13328
+ ],
13329
+ description: "Start position (center of from-node)",
13330
+ required: true
13331
+ },
13332
+ to: {
13333
+ types: [
13334
+ "object"
13335
+ ],
13336
+ description: "End position (center of to-node)",
13337
+ required: true
13338
+ },
13339
+ eventLabel: {
13340
+ types: [
13341
+ "string"
13342
+ ],
13343
+ description: "Event label shown on the arrow",
13344
+ required: true
13345
+ },
13346
+ guardHint: {
13347
+ types: [
13348
+ "string"
13349
+ ],
13350
+ description: "Guard hint shown below event"
13351
+ },
13352
+ isActive: {
13353
+ types: [
13354
+ "boolean"
13355
+ ],
13356
+ description: "Whether this transition is currently active"
13357
+ },
13358
+ onClick: {
13359
+ types: [
13360
+ "function"
13361
+ ],
13362
+ description: "Click handler"
13363
+ },
13364
+ className: {
13365
+ types: [
13366
+ "string"
13367
+ ],
13368
+ description: "Additional CSS classes for the SVG group"
13369
+ }
13370
+ }
13371
+ },
13372
+ "variable-panel": {
13373
+ type: "variable-panel",
13374
+ category: "display",
13375
+ description: "VariablePanel Component Shows entity variables and their current values during State Architect playback.",
13376
+ suggestedFor: [
13377
+ "variable",
13378
+ "panel",
13379
+ "variable panel"
11853
13380
  ],
11854
- typicalSize: "medium",
13381
+ typicalSize: "large",
11855
13382
  propsSchema: {
11856
- children: {
13383
+ entityName: {
11857
13384
  types: [
11858
- "node"
13385
+ "string"
11859
13386
  ],
11860
- description: "children prop",
13387
+ description: "Entity name",
13388
+ required: true
13389
+ },
13390
+ variables: {
13391
+ types: [
13392
+ "array"
13393
+ ],
13394
+ description: "Variables to display",
11861
13395
  required: true
11862
13396
  },
11863
13397
  className: {
11864
13398
  types: [
11865
13399
  "string"
11866
13400
  ],
11867
- description: "className prop"
13401
+ description: "Additional CSS classes"
11868
13402
  }
11869
13403
  }
11870
13404
  },
@@ -12684,7 +14218,7 @@ var integrators_registry_default = {
12684
14218
  // src/component-mapping.json
12685
14219
  var component_mapping_default = {
12686
14220
  version: "1.0.0",
12687
- exportedAt: "2026-02-23T07:59:54.575Z",
14221
+ exportedAt: "2026-03-05T06:51:24.222Z",
12688
14222
  mappings: {
12689
14223
  "page-header": {
12690
14224
  component: "PageHeader",
@@ -13514,6 +15048,116 @@ var component_mapping_default = {
13514
15048
  importPath: "@/components/molecules/ScaledDiagram",
13515
15049
  category: "component"
13516
15050
  },
15051
+ "combat-log": {
15052
+ component: "CombatLog",
15053
+ importPath: "@/components/organisms/CombatLog",
15054
+ category: "game"
15055
+ },
15056
+ "simulation-canvas": {
15057
+ component: "SimulationCanvas",
15058
+ importPath: "@/components/organisms/SimulationCanvas",
15059
+ category: "game"
15060
+ },
15061
+ "simulation-controls": {
15062
+ component: "SimulationControls",
15063
+ importPath: "@/components/organisms/SimulationControls",
15064
+ category: "display"
15065
+ },
15066
+ "simulation-graph": {
15067
+ component: "SimulationGraph",
15068
+ importPath: "@/components/organisms/SimulationGraph",
15069
+ category: "display"
15070
+ },
15071
+ "builder-board": {
15072
+ component: "BuilderBoard",
15073
+ importPath: "@/components/organisms/BuilderBoard",
15074
+ category: "game"
15075
+ },
15076
+ "classifier-board": {
15077
+ component: "ClassifierBoard",
15078
+ importPath: "@/components/organisms/ClassifierBoard",
15079
+ category: "game"
15080
+ },
15081
+ "debugger-board": {
15082
+ component: "DebuggerBoard",
15083
+ importPath: "@/components/organisms/DebuggerBoard",
15084
+ category: "game"
15085
+ },
15086
+ "event-handler-board": {
15087
+ component: "EventHandlerBoard",
15088
+ importPath: "@/components/organisms/EventHandlerBoard",
15089
+ category: "game"
15090
+ },
15091
+ "event-log": {
15092
+ component: "EventLog",
15093
+ importPath: "@/components/organisms/EventLog",
15094
+ category: "display"
15095
+ },
15096
+ "object-rule-panel": {
15097
+ component: "ObjectRulePanel",
15098
+ importPath: "@/components/organisms/ObjectRulePanel",
15099
+ category: "display"
15100
+ },
15101
+ "rule-editor": {
15102
+ component: "RuleEditor",
15103
+ importPath: "@/components/organisms/RuleEditor",
15104
+ category: "display"
15105
+ },
15106
+ "negotiator-board": {
15107
+ component: "NegotiatorBoard",
15108
+ importPath: "@/components/organisms/NegotiatorBoard",
15109
+ category: "game"
15110
+ },
15111
+ "action-palette": {
15112
+ component: "ActionPalette",
15113
+ importPath: "@/components/organisms/ActionPalette",
15114
+ category: "display"
15115
+ },
15116
+ "action-tile": {
15117
+ component: "ActionTile",
15118
+ importPath: "@/components/organisms/ActionTile",
15119
+ category: "game"
15120
+ },
15121
+ "sequence-bar": {
15122
+ component: "SequenceBar",
15123
+ importPath: "@/components/organisms/SequenceBar",
15124
+ category: "display"
15125
+ },
15126
+ "sequencer-board": {
15127
+ component: "SequencerBoard",
15128
+ importPath: "@/components/organisms/SequencerBoard",
15129
+ category: "game"
15130
+ },
15131
+ "simulator-board": {
15132
+ component: "SimulatorBoard",
15133
+ importPath: "@/components/organisms/SimulatorBoard",
15134
+ category: "game"
15135
+ },
15136
+ "code-view": {
15137
+ component: "CodeView",
15138
+ importPath: "@/components/organisms/CodeView",
15139
+ category: "display"
15140
+ },
15141
+ "state-architect-board": {
15142
+ component: "StateArchitectBoard",
15143
+ importPath: "@/components/organisms/StateArchitectBoard",
15144
+ category: "display"
15145
+ },
15146
+ "state-node": {
15147
+ component: "StateNode",
15148
+ importPath: "@/components/organisms/StateNode",
15149
+ category: "display"
15150
+ },
15151
+ "transition-arrow": {
15152
+ component: "TransitionArrow",
15153
+ importPath: "@/components/organisms/TransitionArrow",
15154
+ category: "display"
15155
+ },
15156
+ "variable-panel": {
15157
+ component: "VariablePanel",
15158
+ importPath: "@/components/organisms/VariablePanel",
15159
+ category: "display"
15160
+ },
13517
15161
  heading: {
13518
15162
  component: "Typography",
13519
15163
  importPath: "@/components/atoms/Typography",
@@ -13530,7 +15174,7 @@ var component_mapping_default = {
13530
15174
  // src/event-contracts.json
13531
15175
  var event_contracts_default = {
13532
15176
  version: "1.0.0",
13533
- exportedAt: "2026-02-23T07:59:54.575Z",
15177
+ exportedAt: "2026-03-05T06:51:24.222Z",
13534
15178
  contracts: {
13535
15179
  form: {
13536
15180
  emits: [
@@ -13614,6 +15258,13 @@ var event_contracts_default = {
13614
15258
  payload: {
13615
15259
  type: "object"
13616
15260
  }
15261
+ },
15262
+ {
15263
+ event: "NAVIGATE",
15264
+ trigger: "action",
15265
+ payload: {
15266
+ type: "object"
15267
+ }
13617
15268
  }
13618
15269
  ],
13619
15270
  requires: [],
@@ -13622,6 +15273,13 @@ var event_contracts_default = {
13622
15273
  },
13623
15274
  "entity-table": {
13624
15275
  emits: [
15276
+ {
15277
+ event: "NAVIGATE",
15278
+ trigger: "action",
15279
+ payload: {
15280
+ type: "object"
15281
+ }
15282
+ },
13625
15283
  {
13626
15284
  event: "VIEW",
13627
15285
  trigger: "action",
@@ -13679,7 +15337,7 @@ var event_contracts_default = {
13679
15337
  }
13680
15338
  },
13681
15339
  {
13682
- event: "VIEW",
15340
+ event: "NAVIGATE",
13683
15341
  trigger: "action",
13684
15342
  payload: {
13685
15343
  type: "object"
@@ -13693,21 +15351,21 @@ var event_contracts_default = {
13693
15351
  "entity-list": {
13694
15352
  emits: [
13695
15353
  {
13696
- event: "SELECT",
15354
+ event: "NAVIGATE",
13697
15355
  trigger: "action",
13698
15356
  payload: {
13699
15357
  type: "object"
13700
15358
  }
13701
15359
  },
13702
15360
  {
13703
- event: "DESELECT",
15361
+ event: "SELECT",
13704
15362
  trigger: "action",
13705
15363
  payload: {
13706
15364
  type: "object"
13707
15365
  }
13708
15366
  },
13709
15367
  {
13710
- event: "VIEW",
15368
+ event: "DESELECT",
13711
15369
  trigger: "action",
13712
15370
  payload: {
13713
15371
  type: "object"
@@ -13720,6 +15378,13 @@ var event_contracts_default = {
13720
15378
  },
13721
15379
  "detail-panel": {
13722
15380
  emits: [
15381
+ {
15382
+ event: "NAVIGATE",
15383
+ trigger: "action",
15384
+ payload: {
15385
+ type: "object"
15386
+ }
15387
+ },
13723
15388
  {
13724
15389
  event: "CLOSE",
13725
15390
  trigger: "action",
@@ -13729,17 +15394,16 @@ var event_contracts_default = {
13729
15394
  }
13730
15395
  ],
13731
15396
  requires: [],
13732
- entityAware: false
15397
+ entityAware: true
13733
15398
  },
13734
15399
  "page-header": {
13735
15400
  emits: [
13736
15401
  {
13737
- event: "CREATE",
13738
- trigger: "click",
15402
+ event: "NAVIGATE",
15403
+ trigger: "action",
13739
15404
  payload: {
13740
- type: "void"
13741
- },
13742
- optional: true
15405
+ type: "object"
15406
+ }
13743
15407
  }
13744
15408
  ],
13745
15409
  requires: [],
@@ -14035,7 +15699,7 @@ var event_contracts_default = {
14035
15699
  "dashboard-grid": {
14036
15700
  emits: [],
14037
15701
  requires: [],
14038
- entityAware: false
15702
+ entityAware: true
14039
15703
  },
14040
15704
  stats: {
14041
15705
  emits: [],
@@ -14064,28 +15728,11 @@ var event_contracts_default = {
14064
15728
  "game-menu": {
14065
15729
  emits: [
14066
15730
  {
14067
- event: "START",
14068
- trigger: "click",
14069
- payload: {
14070
- type: "void"
14071
- },
14072
- optional: true
14073
- },
14074
- {
14075
- event: "RESUME",
14076
- trigger: "click",
14077
- payload: {
14078
- type: "void"
14079
- },
14080
- optional: true
14081
- },
14082
- {
14083
- event: "RESTART",
14084
- trigger: "click",
15731
+ event: "NAVIGATE",
15732
+ trigger: "action",
14085
15733
  payload: {
14086
- type: "void"
14087
- },
14088
- optional: true
15734
+ type: "object"
15735
+ }
14089
15736
  }
14090
15737
  ],
14091
15738
  requires: [],
@@ -14140,19 +15787,25 @@ var event_contracts_default = {
14140
15787
  "dialogue-box": {
14141
15788
  emits: [
14142
15789
  {
14143
- event: "ADVANCE",
14144
- trigger: "click",
15790
+ event: "COMPLETE",
15791
+ trigger: "action",
14145
15792
  payload: {
14146
- type: "void"
15793
+ type: "object"
14147
15794
  }
14148
15795
  },
14149
15796
  {
14150
- event: "CHOOSE",
14151
- trigger: "click",
15797
+ event: "CHOICE",
15798
+ trigger: "action",
14152
15799
  payload: {
14153
- type: "EntityRow"
14154
- },
14155
- optional: true
15800
+ type: "object"
15801
+ }
15802
+ },
15803
+ {
15804
+ event: "ADVANCE",
15805
+ trigger: "action",
15806
+ payload: {
15807
+ type: "object"
15808
+ }
14156
15809
  }
14157
15810
  ],
14158
15811
  requires: [],
@@ -14484,13 +16137,6 @@ var event_contracts_default = {
14484
16137
  payload: {
14485
16138
  type: "object"
14486
16139
  }
14487
- },
14488
- {
14489
- event: "MEDIA_UPLOAD",
14490
- trigger: "action",
14491
- payload: {
14492
- type: "object"
14493
- }
14494
16140
  }
14495
16141
  ],
14496
16142
  requires: [],
@@ -14601,6 +16247,127 @@ var event_contracts_default = {
14601
16247
  ],
14602
16248
  requires: [],
14603
16249
  entityAware: true
16250
+ },
16251
+ "action-buttons": {
16252
+ emits: [
16253
+ {
16254
+ event: "ACTION",
16255
+ trigger: "action",
16256
+ payload: {
16257
+ type: "object"
16258
+ }
16259
+ }
16260
+ ],
16261
+ requires: [],
16262
+ entityAware: false
16263
+ },
16264
+ "d-pad": {
16265
+ emits: [
16266
+ {
16267
+ event: "DIRECTION",
16268
+ trigger: "action",
16269
+ payload: {
16270
+ type: "object"
16271
+ }
16272
+ }
16273
+ ],
16274
+ requires: [],
16275
+ entityAware: false
16276
+ },
16277
+ "isometric-canvas": {
16278
+ emits: [
16279
+ {
16280
+ event: "TILE_CLICK",
16281
+ trigger: "action",
16282
+ payload: {
16283
+ type: "object"
16284
+ }
16285
+ },
16286
+ {
16287
+ event: "UNIT_CLICK",
16288
+ trigger: "action",
16289
+ payload: {
16290
+ type: "object"
16291
+ }
16292
+ },
16293
+ {
16294
+ event: "TILE_HOVER",
16295
+ trigger: "action",
16296
+ payload: {
16297
+ type: "object"
16298
+ }
16299
+ },
16300
+ {
16301
+ event: "TILE_LEAVE",
16302
+ trigger: "action",
16303
+ payload: {
16304
+ type: "object"
16305
+ }
16306
+ }
16307
+ ],
16308
+ requires: [],
16309
+ entityAware: true
16310
+ },
16311
+ "trait-slot": {
16312
+ emits: [
16313
+ {
16314
+ event: "CLICK",
16315
+ trigger: "action",
16316
+ payload: {
16317
+ type: "object"
16318
+ }
16319
+ },
16320
+ {
16321
+ event: "REMOVE",
16322
+ trigger: "action",
16323
+ payload: {
16324
+ type: "object"
16325
+ }
16326
+ }
16327
+ ],
16328
+ requires: [],
16329
+ entityAware: true
16330
+ },
16331
+ "world-map-board": {
16332
+ emits: [
16333
+ {
16334
+ event: "HERO_SELECT",
16335
+ trigger: "action",
16336
+ payload: {
16337
+ type: "object"
16338
+ }
16339
+ },
16340
+ {
16341
+ event: "HERO_MOVE",
16342
+ trigger: "action",
16343
+ payload: {
16344
+ type: "object"
16345
+ }
16346
+ },
16347
+ {
16348
+ event: "BATTLE_ENCOUNTER",
16349
+ trigger: "action",
16350
+ payload: {
16351
+ type: "object"
16352
+ }
16353
+ },
16354
+ {
16355
+ event: "FEATURE_ENTER",
16356
+ trigger: "action",
16357
+ payload: {
16358
+ type: "object"
16359
+ }
16360
+ },
16361
+ {
16362
+ event: "TILE_CLICK",
16363
+ trigger: "action",
16364
+ payload: {
16365
+ type: "object"
16366
+ }
16367
+ }
16368
+ ],
16369
+ requires: [],
16370
+ entityAware: true
14604
16371
  }
14605
16372
  }
14606
16373
  };
@@ -14986,9 +16753,8 @@ function isEntityAwarePattern(patternType) {
14986
16753
  if (definition.entityAware === true) return true;
14987
16754
  const propsSchema = definition.propsSchema;
14988
16755
  if (!propsSchema) return false;
14989
- const hasEntityProp = "entity" in propsSchema;
14990
- const hasDataProp = "data" in propsSchema || "items" in propsSchema;
14991
- return hasEntityProp && hasDataProp;
16756
+ const entityTypes = propsSchema.entity?.types || [];
16757
+ return entityTypes.includes("array") || entityTypes.includes("object");
14992
16758
  }
14993
16759
 
14994
16760
  export { COMPONENT_MAPPING, EVENT_CONTRACTS, INTEGRATORS_REGISTRY, PATTERN_REGISTRY, PATTERN_TYPES, buildRecommendationContext, component_mapping_default as componentMapping, event_contracts_default as eventContracts, formatRecommendationsForPrompt, generatePatternDescription, getAllPatternTypes, getComponentForPattern, getPatternActionsRef, getPatternDefinition, getPatternMetadata, getPatternPropsCompact, getPatternsGroupedByCategory, integrators_registry_default as integratorsRegistry, isEntityAwarePattern, isValidPatternType, patterns_registry_default as patternsRegistry, recommendPatterns, registry };