@almadar/patterns 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "1.0.0",
3
- "exportedAt": "2026-02-23T07:59:54.575Z",
3
+ "exportedAt": "2026-03-03T11:14:06.592Z",
4
4
  "patterns": {
5
5
  "entity-table": {
6
6
  "type": "entity-table",
@@ -445,7 +445,7 @@
445
445
  "types": [
446
446
  "node"
447
447
  ],
448
- "description": "Children elements (cards) - optional when using entity/data props"
448
+ "description": "Children elements (cards) - optional when using entity prop"
449
449
  },
450
450
  "fields": {
451
451
  "types": [
@@ -490,6 +490,84 @@
490
490
  ],
491
491
  "typicalSize": "medium",
492
492
  "propsSchema": {
493
+ "entity": {
494
+ "types": [
495
+ "string"
496
+ ],
497
+ "description": "Entity name for schema-driven integration"
498
+ },
499
+ "data": {
500
+ "types": [
501
+ "array"
502
+ ],
503
+ "description": "Data array provided by the trait via render-ui"
504
+ },
505
+ "className": {
506
+ "types": [
507
+ "string"
508
+ ],
509
+ "description": "Additional CSS classes"
510
+ },
511
+ "isLoading": {
512
+ "types": [
513
+ "boolean"
514
+ ],
515
+ "description": "Loading state indicator"
516
+ },
517
+ "error": {
518
+ "types": [
519
+ "object"
520
+ ],
521
+ "description": "Error state"
522
+ },
523
+ "sortBy": {
524
+ "types": [
525
+ "string"
526
+ ],
527
+ "description": "Current sort field"
528
+ },
529
+ "sortDirection": {
530
+ "types": [
531
+ "string"
532
+ ],
533
+ "description": "Current sort direction"
534
+ },
535
+ "searchValue": {
536
+ "types": [
537
+ "string"
538
+ ],
539
+ "description": "Current search query value"
540
+ },
541
+ "page": {
542
+ "types": [
543
+ "number"
544
+ ],
545
+ "description": "Current page number"
546
+ },
547
+ "pageSize": {
548
+ "types": [
549
+ "number"
550
+ ],
551
+ "description": "Number of items per page"
552
+ },
553
+ "totalCount": {
554
+ "types": [
555
+ "number"
556
+ ],
557
+ "description": "Total number of items"
558
+ },
559
+ "activeFilters": {
560
+ "types": [
561
+ "object"
562
+ ],
563
+ "description": "Active filters"
564
+ },
565
+ "selectedIds": {
566
+ "types": [
567
+ "array"
568
+ ],
569
+ "description": "Currently selected item IDs"
570
+ },
493
571
  "title": {
494
572
  "types": [
495
573
  "string"
@@ -550,13 +628,6 @@
550
628
  ],
551
629
  "description": "Alias for fields - backwards compatibility"
552
630
  },
553
- "data": {
554
- "types": [
555
- "object",
556
- "unknown"
557
- ],
558
- "description": "Data object provided by the trait via render-ui"
559
- },
560
631
  "initialData": {
561
632
  "types": [
562
633
  "object",
@@ -581,6 +652,24 @@
581
652
  "string"
582
653
  ],
583
654
  "description": "Panel width (CSS value, e.g., '400px', '50%')"
655
+ },
656
+ "entityId": {
657
+ "types": [
658
+ "string"
659
+ ],
660
+ "description": "Entity ID for fetching specific entity"
661
+ },
662
+ "displayFields": {
663
+ "types": [
664
+ "unknown"
665
+ ],
666
+ "description": "Display fields (alias for fields)"
667
+ },
668
+ "showActions": {
669
+ "types": [
670
+ "boolean"
671
+ ],
672
+ "description": "Show actions flag"
584
673
  }
585
674
  }
586
675
  },
@@ -740,7 +829,8 @@
740
829
  },
741
830
  "entity": {
742
831
  "types": [
743
- "string"
832
+ "string",
833
+ "orbitalentity"
744
834
  ],
745
835
  "description": "Schema-based props"
746
836
  },
@@ -926,7 +1016,8 @@
926
1016
  },
927
1017
  "entity": {
928
1018
  "types": [
929
- "string"
1019
+ "string",
1020
+ "orbitalentity"
930
1021
  ],
931
1022
  "description": "Schema-based props"
932
1023
  },
@@ -1898,6 +1989,84 @@
1898
1989
  ],
1899
1990
  "typicalSize": "small",
1900
1991
  "propsSchema": {
1992
+ "entity": {
1993
+ "types": [
1994
+ "string"
1995
+ ],
1996
+ "description": "Entity name for schema-driven integration"
1997
+ },
1998
+ "data": {
1999
+ "types": [
2000
+ "array"
2001
+ ],
2002
+ "description": "Data array provided by the trait via render-ui"
2003
+ },
2004
+ "className": {
2005
+ "types": [
2006
+ "string"
2007
+ ],
2008
+ "description": "Additional CSS classes"
2009
+ },
2010
+ "isLoading": {
2011
+ "types": [
2012
+ "boolean"
2013
+ ],
2014
+ "description": "Loading state indicator"
2015
+ },
2016
+ "error": {
2017
+ "types": [
2018
+ "object"
2019
+ ],
2020
+ "description": "Error state"
2021
+ },
2022
+ "sortBy": {
2023
+ "types": [
2024
+ "string"
2025
+ ],
2026
+ "description": "Current sort field"
2027
+ },
2028
+ "sortDirection": {
2029
+ "types": [
2030
+ "string"
2031
+ ],
2032
+ "description": "Current sort direction"
2033
+ },
2034
+ "searchValue": {
2035
+ "types": [
2036
+ "string"
2037
+ ],
2038
+ "description": "Current search query value"
2039
+ },
2040
+ "page": {
2041
+ "types": [
2042
+ "number"
2043
+ ],
2044
+ "description": "Current page number"
2045
+ },
2046
+ "pageSize": {
2047
+ "types": [
2048
+ "number"
2049
+ ],
2050
+ "description": "Number of items per page"
2051
+ },
2052
+ "totalCount": {
2053
+ "types": [
2054
+ "number"
2055
+ ],
2056
+ "description": "Total number of items"
2057
+ },
2058
+ "activeFilters": {
2059
+ "types": [
2060
+ "object"
2061
+ ],
2062
+ "description": "Active filters"
2063
+ },
2064
+ "selectedIds": {
2065
+ "types": [
2066
+ "array"
2067
+ ],
2068
+ "description": "Currently selected item IDs"
2069
+ },
1901
2070
  "label": {
1902
2071
  "types": [
1903
2072
  "string"
@@ -1979,41 +2148,11 @@
1979
2148
  ],
1980
2149
  "description": "Action button"
1981
2150
  },
1982
- "className": {
1983
- "types": [
1984
- "string"
1985
- ],
1986
- "description": "className prop"
1987
- },
1988
- "entity": {
1989
- "types": [
1990
- "string"
1991
- ],
1992
- "description": "Schema-based props"
1993
- },
1994
2151
  "metrics": {
1995
2152
  "types": [
1996
2153
  "unknown"
1997
2154
  ],
1998
2155
  "description": "Metrics to display (schema format) - accepts readonly for compatibility with generated const arrays"
1999
- },
2000
- "data": {
2001
- "types": [
2002
- "unknown"
2003
- ],
2004
- "description": "Data to calculate stats from - accepts readonly for compatibility with generated const arrays"
2005
- },
2006
- "isLoading": {
2007
- "types": [
2008
- "boolean"
2009
- ],
2010
- "description": "Loading state indicator"
2011
- },
2012
- "error": {
2013
- "types": [
2014
- "error"
2015
- ],
2016
- "description": "Error state"
2017
2156
  }
2018
2157
  }
2019
2158
  },
@@ -6532,108 +6671,162 @@
6532
6671
  ],
6533
6672
  "typicalSize": "large",
6534
6673
  "propsSchema": {
6535
- "logo": {
6674
+ "entity": {
6536
6675
  "types": [
6537
- "node"
6676
+ "string"
6538
6677
  ],
6539
- "description": "Logo/Brand content - can be a ReactNode or logo config"
6678
+ "description": "Entity name for schema-driven integration"
6540
6679
  },
6541
- "logoSrc": {
6680
+ "data": {
6542
6681
  "types": [
6543
- "string"
6682
+ "array"
6544
6683
  ],
6545
- "description": "Logo image source"
6684
+ "description": "Data array provided by the trait via render-ui"
6546
6685
  },
6547
- "brandName": {
6686
+ "className": {
6548
6687
  "types": [
6549
6688
  "string"
6550
6689
  ],
6551
- "description": "Brand/App name"
6690
+ "description": "Additional CSS classes"
6552
6691
  },
6553
- "items": {
6692
+ "isLoading": {
6554
6693
  "types": [
6555
- "array"
6694
+ "boolean"
6556
6695
  ],
6557
- "description": "Navigation items",
6558
- "required": true
6696
+ "description": "Loading state indicator"
6559
6697
  },
6560
- "userSection": {
6698
+ "error": {
6561
6699
  "types": [
6562
- "node"
6700
+ "object"
6563
6701
  ],
6564
- "description": "User section content"
6702
+ "description": "Error state"
6565
6703
  },
6566
- "footerContent": {
6704
+ "sortBy": {
6567
6705
  "types": [
6568
- "node"
6706
+ "string"
6569
6707
  ],
6570
- "description": "Footer content (e.g., theme toggle)"
6708
+ "description": "Current sort field"
6571
6709
  },
6572
- "collapsed": {
6710
+ "sortDirection": {
6573
6711
  "types": [
6574
- "boolean"
6712
+ "string"
6575
6713
  ],
6576
- "description": "Collapsed state (controlled)"
6714
+ "description": "Current sort direction"
6577
6715
  },
6578
- "defaultCollapsed": {
6716
+ "searchValue": {
6579
6717
  "types": [
6580
- "boolean"
6718
+ "string"
6581
6719
  ],
6582
- "description": "Default collapsed state"
6720
+ "description": "Current search query value"
6583
6721
  },
6584
- "onCollapseChange": {
6722
+ "page": {
6585
6723
  "types": [
6586
- "function"
6724
+ "number"
6587
6725
  ],
6588
- "description": "Callback when collapse state changes"
6726
+ "description": "Current page number"
6589
6727
  },
6590
- "hideCollapseButton": {
6728
+ "pageSize": {
6591
6729
  "types": [
6592
- "boolean"
6730
+ "number"
6593
6731
  ],
6594
- "description": "Hide the collapse/expand button"
6732
+ "description": "Number of items per page"
6595
6733
  },
6596
- "showCloseButton": {
6734
+ "totalCount": {
6597
6735
  "types": [
6598
- "boolean"
6736
+ "number"
6599
6737
  ],
6600
- "description": "Show a close button (for mobile)"
6738
+ "description": "Total number of items"
6601
6739
  },
6602
- "onClose": {
6740
+ "activeFilters": {
6603
6741
  "types": [
6604
- "function"
6742
+ "object"
6605
6743
  ],
6606
- "description": "Callback when close button is clicked"
6744
+ "description": "Active filters"
6607
6745
  },
6608
- "onLogoClick": {
6746
+ "selectedIds": {
6609
6747
  "types": [
6610
- "function"
6748
+ "array"
6611
6749
  ],
6612
- "description": "Callback when logo/brand is clicked"
6750
+ "description": "Currently selected item IDs"
6613
6751
  },
6614
- "className": {
6752
+ "logo": {
6753
+ "types": [
6754
+ "node"
6755
+ ],
6756
+ "description": "Logo/Brand content - can be a ReactNode or logo config"
6757
+ },
6758
+ "logoSrc": {
6615
6759
  "types": [
6616
6760
  "string"
6617
6761
  ],
6618
- "description": "Additional CSS classes"
6762
+ "description": "Logo image source"
6619
6763
  },
6620
- "isLoading": {
6764
+ "brandName": {
6765
+ "types": [
6766
+ "string"
6767
+ ],
6768
+ "description": "Brand/App name"
6769
+ },
6770
+ "items": {
6771
+ "types": [
6772
+ "array"
6773
+ ],
6774
+ "description": "Navigation items",
6775
+ "required": true
6776
+ },
6777
+ "userSection": {
6778
+ "types": [
6779
+ "node"
6780
+ ],
6781
+ "description": "User section content"
6782
+ },
6783
+ "footerContent": {
6784
+ "types": [
6785
+ "node"
6786
+ ],
6787
+ "description": "Footer content (e.g., theme toggle)"
6788
+ },
6789
+ "collapsed": {
6621
6790
  "types": [
6622
6791
  "boolean"
6623
6792
  ],
6624
- "description": "Loading state indicator"
6793
+ "description": "Collapsed state (controlled)"
6625
6794
  },
6626
- "error": {
6795
+ "defaultCollapsed": {
6627
6796
  "types": [
6628
- "error"
6797
+ "boolean"
6629
6798
  ],
6630
- "description": "Error state"
6799
+ "description": "Default collapsed state"
6631
6800
  },
6632
- "entity": {
6801
+ "collapseChangeEvent": {
6633
6802
  "types": [
6634
6803
  "string"
6635
6804
  ],
6636
- "description": "Entity name for schema-driven auto-fetch"
6805
+ "description": "Event emitted when collapse state changes, payload: { collapsed: boolean }"
6806
+ },
6807
+ "hideCollapseButton": {
6808
+ "types": [
6809
+ "boolean"
6810
+ ],
6811
+ "description": "Hide the collapse/expand button"
6812
+ },
6813
+ "showCloseButton": {
6814
+ "types": [
6815
+ "boolean"
6816
+ ],
6817
+ "description": "Show a close button (for mobile)"
6818
+ },
6819
+ "closeEvent": {
6820
+ "types": [
6821
+ "string"
6822
+ ],
6823
+ "description": "Event emitted when close button is clicked"
6824
+ },
6825
+ "logoClickEvent": {
6826
+ "types": [
6827
+ "string"
6828
+ ],
6829
+ "description": "Event emitted when logo/brand is clicked"
6637
6830
  }
6638
6831
  }
6639
6832
  },
@@ -7638,59 +7831,107 @@
7638
7831
  ],
7639
7832
  "typicalSize": "medium",
7640
7833
  "propsSchema": {
7641
- "title": {
7834
+ "entity": {
7642
7835
  "types": [
7643
7836
  "string"
7644
7837
  ],
7645
- "description": "Timeline title"
7838
+ "description": "Entity name for schema-driven integration"
7646
7839
  },
7647
- "items": {
7840
+ "data": {
7648
7841
  "types": [
7649
- "unknown"
7842
+ "array"
7650
7843
  ],
7651
- "description": "Timeline items"
7844
+ "description": "Data array provided by the trait via render-ui"
7652
7845
  },
7653
- "data": {
7846
+ "className": {
7654
7847
  "types": [
7655
- "unknown"
7848
+ "string"
7656
7849
  ],
7657
- "description": "Schema-driven data"
7850
+ "description": "Additional CSS classes"
7658
7851
  },
7659
- "fields": {
7852
+ "isLoading": {
7660
7853
  "types": [
7661
- "unknown"
7854
+ "boolean"
7662
7855
  ],
7663
- "description": "Fields to display"
7856
+ "description": "Loading state indicator"
7664
7857
  },
7665
- "itemActions": {
7858
+ "error": {
7666
7859
  "types": [
7667
- "unknown"
7860
+ "object"
7668
7861
  ],
7669
- "description": "Actions per item"
7862
+ "description": "Error state"
7670
7863
  },
7671
- "entity": {
7864
+ "sortBy": {
7672
7865
  "types": [
7673
7866
  "string"
7674
7867
  ],
7675
- "description": "Entity name for schema-driven auto-fetch"
7868
+ "description": "Current sort field"
7676
7869
  },
7677
- "isLoading": {
7870
+ "sortDirection": {
7678
7871
  "types": [
7679
- "boolean"
7872
+ "string"
7680
7873
  ],
7681
- "description": "Loading state"
7874
+ "description": "Current sort direction"
7682
7875
  },
7683
- "error": {
7876
+ "searchValue": {
7684
7877
  "types": [
7685
- "error"
7878
+ "string"
7686
7879
  ],
7687
- "description": "Error state"
7880
+ "description": "Current search query value"
7688
7881
  },
7689
- "className": {
7882
+ "page": {
7883
+ "types": [
7884
+ "number"
7885
+ ],
7886
+ "description": "Current page number"
7887
+ },
7888
+ "pageSize": {
7889
+ "types": [
7890
+ "number"
7891
+ ],
7892
+ "description": "Number of items per page"
7893
+ },
7894
+ "totalCount": {
7895
+ "types": [
7896
+ "number"
7897
+ ],
7898
+ "description": "Total number of items"
7899
+ },
7900
+ "activeFilters": {
7901
+ "types": [
7902
+ "object"
7903
+ ],
7904
+ "description": "Active filters"
7905
+ },
7906
+ "selectedIds": {
7907
+ "types": [
7908
+ "array"
7909
+ ],
7910
+ "description": "Currently selected item IDs"
7911
+ },
7912
+ "title": {
7690
7913
  "types": [
7691
7914
  "string"
7692
7915
  ],
7693
- "description": "Additional CSS classes"
7916
+ "description": "Timeline title"
7917
+ },
7918
+ "items": {
7919
+ "types": [
7920
+ "unknown"
7921
+ ],
7922
+ "description": "Timeline items"
7923
+ },
7924
+ "fields": {
7925
+ "types": [
7926
+ "unknown"
7927
+ ],
7928
+ "description": "Fields to display"
7929
+ },
7930
+ "itemActions": {
7931
+ "types": [
7932
+ "unknown"
7933
+ ],
7934
+ "description": "Actions per item"
7694
7935
  }
7695
7936
  }
7696
7937
  },
@@ -7706,89 +7947,137 @@
7706
7947
  ],
7707
7948
  "typicalSize": "medium",
7708
7949
  "propsSchema": {
7709
- "title": {
7950
+ "entity": {
7710
7951
  "types": [
7711
7952
  "string"
7712
7953
  ],
7713
- "description": "Gallery title"
7714
- },
7715
- "items": {
7716
- "types": [
7717
- "unknown"
7718
- ],
7719
- "description": "Media items"
7954
+ "description": "Entity name for schema-driven integration"
7720
7955
  },
7721
7956
  "data": {
7722
7957
  "types": [
7723
- "unknown"
7958
+ "array"
7724
7959
  ],
7725
- "description": "Schema-driven data"
7960
+ "description": "Data array provided by the trait via render-ui"
7726
7961
  },
7727
- "columns": {
7962
+ "className": {
7728
7963
  "types": [
7729
- "number"
7964
+ "string"
7730
7965
  ],
7731
- "description": "Column count"
7966
+ "description": "Additional CSS classes"
7732
7967
  },
7733
- "selectable": {
7968
+ "isLoading": {
7734
7969
  "types": [
7735
7970
  "boolean"
7736
7971
  ],
7737
- "description": "Enable item selection"
7972
+ "description": "Loading state indicator"
7738
7973
  },
7739
- "selectedItems": {
7974
+ "error": {
7740
7975
  "types": [
7741
- "unknown"
7976
+ "object"
7742
7977
  ],
7743
- "description": "Selected item IDs"
7978
+ "description": "Error state"
7744
7979
  },
7745
- "onSelectionChange": {
7980
+ "sortBy": {
7746
7981
  "types": [
7747
- "function"
7982
+ "string"
7748
7983
  ],
7749
- "description": "Selection change callback"
7984
+ "description": "Current sort field"
7750
7985
  },
7751
- "showUpload": {
7986
+ "sortDirection": {
7752
7987
  "types": [
7753
- "boolean"
7988
+ "string"
7754
7989
  ],
7755
- "description": "Show upload button"
7990
+ "description": "Current sort direction"
7756
7991
  },
7757
- "actions": {
7992
+ "searchValue": {
7758
7993
  "types": [
7759
- "unknown"
7994
+ "string"
7760
7995
  ],
7761
- "description": "Actions"
7996
+ "description": "Current search query value"
7762
7997
  },
7763
- "aspectRatio": {
7998
+ "page": {
7764
7999
  "types": [
7765
- "string"
8000
+ "number"
7766
8001
  ],
7767
- "description": "Aspect ratio for thumbnails"
8002
+ "description": "Current page number"
7768
8003
  },
7769
- "entity": {
8004
+ "pageSize": {
7770
8005
  "types": [
7771
- "string"
8006
+ "number"
7772
8007
  ],
7773
- "description": "Entity name for schema-driven auto-fetch"
8008
+ "description": "Number of items per page"
7774
8009
  },
7775
- "isLoading": {
8010
+ "totalCount": {
7776
8011
  "types": [
7777
- "boolean"
8012
+ "number"
7778
8013
  ],
7779
- "description": "Loading state"
8014
+ "description": "Total number of items"
7780
8015
  },
7781
- "error": {
8016
+ "activeFilters": {
7782
8017
  "types": [
7783
- "error"
8018
+ "object"
7784
8019
  ],
7785
- "description": "Error state"
8020
+ "description": "Active filters"
7786
8021
  },
7787
- "className": {
8022
+ "selectedIds": {
8023
+ "types": [
8024
+ "array"
8025
+ ],
8026
+ "description": "Currently selected item IDs"
8027
+ },
8028
+ "title": {
7788
8029
  "types": [
7789
8030
  "string"
7790
8031
  ],
7791
- "description": "Additional CSS classes"
8032
+ "description": "Gallery title"
8033
+ },
8034
+ "items": {
8035
+ "types": [
8036
+ "unknown"
8037
+ ],
8038
+ "description": "Media items"
8039
+ },
8040
+ "columns": {
8041
+ "types": [
8042
+ "number"
8043
+ ],
8044
+ "description": "Column count"
8045
+ },
8046
+ "selectable": {
8047
+ "types": [
8048
+ "boolean"
8049
+ ],
8050
+ "description": "Enable item selection"
8051
+ },
8052
+ "selectedItems": {
8053
+ "types": [
8054
+ "unknown"
8055
+ ],
8056
+ "description": "Selected item IDs"
8057
+ },
8058
+ "selectionEvent": {
8059
+ "types": [
8060
+ "string"
8061
+ ],
8062
+ "description": "Event name emitted when selection changes (emitted as UI:{selectionEvent})"
8063
+ },
8064
+ "showUpload": {
8065
+ "types": [
8066
+ "boolean"
8067
+ ],
8068
+ "description": "Show upload button"
8069
+ },
8070
+ "actions": {
8071
+ "types": [
8072
+ "unknown"
8073
+ ],
8074
+ "description": "Actions"
8075
+ },
8076
+ "aspectRatio": {
8077
+ "types": [
8078
+ "string"
8079
+ ],
8080
+ "description": "Aspect ratio for thumbnails"
7792
8081
  }
7793
8082
  }
7794
8083
  },
@@ -9173,18 +9462,6 @@
9173
9462
  "description": "World map entity data",
9174
9463
  "required": true
9175
9464
  },
9176
- "isLoading": {
9177
- "types": [
9178
- "boolean"
9179
- ],
9180
- "description": "Loading state indicator"
9181
- },
9182
- "error": {
9183
- "types": [
9184
- "error"
9185
- ],
9186
- "description": "Error state"
9187
- },
9188
9465
  "scale": {
9189
9466
  "types": [
9190
9467
  "number"
@@ -11835,9 +12112,10 @@
11835
12112
  },
11836
12113
  "fieldMap": {
11837
12114
  "types": [
11838
- "bookfieldmap"
12115
+ "bookfieldmap",
12116
+ "string"
11839
12117
  ],
11840
- "description": "Field name translation map for non-English entity schemas"
12118
+ "description": "Field name translation map a BookFieldMap object or locale key (\"ar\")"
11841
12119
  }
11842
12120
  }
11843
12121
  },
@@ -11867,6 +12145,999 @@
11867
12145
  }
11868
12146
  }
11869
12147
  },
12148
+ "combat-log": {
12149
+ "type": "combat-log",
12150
+ "category": "game",
12151
+ "description": "CombatLog Component Scrollable log of combat events with icons and colors. Generalized from Trait Wars — removed asset manifest coupling.",
12152
+ "suggestedFor": [
12153
+ "combat",
12154
+ "log",
12155
+ "combat log"
12156
+ ],
12157
+ "typicalSize": "large",
12158
+ "propsSchema": {
12159
+ "events": {
12160
+ "types": [
12161
+ "array"
12162
+ ],
12163
+ "description": "events prop",
12164
+ "required": true
12165
+ },
12166
+ "maxVisible": {
12167
+ "types": [
12168
+ "number"
12169
+ ],
12170
+ "description": "maxVisible prop"
12171
+ },
12172
+ "autoScroll": {
12173
+ "types": [
12174
+ "boolean"
12175
+ ],
12176
+ "description": "autoScroll prop"
12177
+ },
12178
+ "showTimestamps": {
12179
+ "types": [
12180
+ "boolean"
12181
+ ],
12182
+ "description": "showTimestamps prop"
12183
+ },
12184
+ "title": {
12185
+ "types": [
12186
+ "string"
12187
+ ],
12188
+ "description": "title prop"
12189
+ },
12190
+ "className": {
12191
+ "types": [
12192
+ "string"
12193
+ ],
12194
+ "description": "className prop"
12195
+ }
12196
+ }
12197
+ },
12198
+ "simulation-canvas": {
12199
+ "type": "simulation-canvas",
12200
+ "category": "game",
12201
+ "description": "SimulationCanvas Self-contained 2D physics canvas for educational presets. Runs its own Euler integration loop — no external physics hook needed.",
12202
+ "suggestedFor": [
12203
+ "simulation",
12204
+ "canvas",
12205
+ "simulation canvas"
12206
+ ],
12207
+ "typicalSize": "large",
12208
+ "propsSchema": {
12209
+ "preset": {
12210
+ "types": [
12211
+ "physicspreset"
12212
+ ],
12213
+ "description": "preset prop",
12214
+ "required": true
12215
+ },
12216
+ "width": {
12217
+ "types": [
12218
+ "number"
12219
+ ],
12220
+ "description": "width prop"
12221
+ },
12222
+ "height": {
12223
+ "types": [
12224
+ "number"
12225
+ ],
12226
+ "description": "height prop"
12227
+ },
12228
+ "running": {
12229
+ "types": [
12230
+ "boolean"
12231
+ ],
12232
+ "description": "running prop",
12233
+ "required": true
12234
+ },
12235
+ "speed": {
12236
+ "types": [
12237
+ "number"
12238
+ ],
12239
+ "description": "speed prop"
12240
+ },
12241
+ "className": {
12242
+ "types": [
12243
+ "string"
12244
+ ],
12245
+ "description": "className prop"
12246
+ }
12247
+ }
12248
+ },
12249
+ "simulation-controls": {
12250
+ "type": "simulation-controls",
12251
+ "category": "display",
12252
+ "description": "SimulationControls Play/pause/step/reset controls with speed and parameter sliders.",
12253
+ "suggestedFor": [
12254
+ "simulation",
12255
+ "controls",
12256
+ "simulation controls"
12257
+ ],
12258
+ "typicalSize": "large",
12259
+ "propsSchema": {
12260
+ "running": {
12261
+ "types": [
12262
+ "boolean"
12263
+ ],
12264
+ "description": "running prop",
12265
+ "required": true
12266
+ },
12267
+ "speed": {
12268
+ "types": [
12269
+ "number"
12270
+ ],
12271
+ "description": "speed prop",
12272
+ "required": true
12273
+ },
12274
+ "parameters": {
12275
+ "types": [
12276
+ "object"
12277
+ ],
12278
+ "description": "parameters prop",
12279
+ "required": true
12280
+ },
12281
+ "onPlay": {
12282
+ "types": [
12283
+ "function"
12284
+ ],
12285
+ "description": "onPlay prop",
12286
+ "required": true
12287
+ },
12288
+ "onPause": {
12289
+ "types": [
12290
+ "function"
12291
+ ],
12292
+ "description": "onPause prop",
12293
+ "required": true
12294
+ },
12295
+ "onStep": {
12296
+ "types": [
12297
+ "function"
12298
+ ],
12299
+ "description": "onStep prop",
12300
+ "required": true
12301
+ },
12302
+ "onReset": {
12303
+ "types": [
12304
+ "function"
12305
+ ],
12306
+ "description": "onReset prop",
12307
+ "required": true
12308
+ },
12309
+ "onSpeedChange": {
12310
+ "types": [
12311
+ "function"
12312
+ ],
12313
+ "description": "onSpeedChange prop",
12314
+ "required": true
12315
+ },
12316
+ "onParameterChange": {
12317
+ "types": [
12318
+ "function"
12319
+ ],
12320
+ "description": "onParameterChange prop",
12321
+ "required": true
12322
+ },
12323
+ "className": {
12324
+ "types": [
12325
+ "string"
12326
+ ],
12327
+ "description": "className prop"
12328
+ }
12329
+ }
12330
+ },
12331
+ "simulation-graph": {
12332
+ "type": "simulation-graph",
12333
+ "category": "display",
12334
+ "description": "SimulationGraph Real-time measurement graph for physics simulations. Renders measurement data as a simple line chart on canvas.",
12335
+ "suggestedFor": [
12336
+ "simulation",
12337
+ "graph",
12338
+ "simulation graph"
12339
+ ],
12340
+ "typicalSize": "large",
12341
+ "propsSchema": {
12342
+ "label": {
12343
+ "types": [
12344
+ "string"
12345
+ ],
12346
+ "description": "label prop",
12347
+ "required": true
12348
+ },
12349
+ "unit": {
12350
+ "types": [
12351
+ "string"
12352
+ ],
12353
+ "description": "unit prop",
12354
+ "required": true
12355
+ },
12356
+ "data": {
12357
+ "types": [
12358
+ "array"
12359
+ ],
12360
+ "description": "data prop",
12361
+ "required": true
12362
+ },
12363
+ "maxPoints": {
12364
+ "types": [
12365
+ "number"
12366
+ ],
12367
+ "description": "maxPoints prop"
12368
+ },
12369
+ "width": {
12370
+ "types": [
12371
+ "number"
12372
+ ],
12373
+ "description": "width prop"
12374
+ },
12375
+ "height": {
12376
+ "types": [
12377
+ "number"
12378
+ ],
12379
+ "description": "height prop"
12380
+ },
12381
+ "color": {
12382
+ "types": [
12383
+ "string"
12384
+ ],
12385
+ "description": "color prop"
12386
+ },
12387
+ "className": {
12388
+ "types": [
12389
+ "string"
12390
+ ],
12391
+ "description": "className prop"
12392
+ }
12393
+ }
12394
+ },
12395
+ "builder-board": {
12396
+ "type": "builder-board",
12397
+ "category": "game",
12398
+ "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).",
12399
+ "suggestedFor": [
12400
+ "builder",
12401
+ "board",
12402
+ "builder board"
12403
+ ],
12404
+ "typicalSize": "large",
12405
+ "propsSchema": {
12406
+ "entity": {
12407
+ "types": [
12408
+ "builderpuzzleentity"
12409
+ ],
12410
+ "description": "entity prop",
12411
+ "required": true
12412
+ },
12413
+ "completeEvent": {
12414
+ "types": [
12415
+ "string"
12416
+ ],
12417
+ "description": "completeEvent prop"
12418
+ }
12419
+ }
12420
+ },
12421
+ "classifier-board": {
12422
+ "type": "classifier-board",
12423
+ "category": "game",
12424
+ "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).",
12425
+ "suggestedFor": [
12426
+ "classifier",
12427
+ "board",
12428
+ "classifier board"
12429
+ ],
12430
+ "typicalSize": "large",
12431
+ "propsSchema": {
12432
+ "entity": {
12433
+ "types": [
12434
+ "classifierpuzzleentity"
12435
+ ],
12436
+ "description": "entity prop",
12437
+ "required": true
12438
+ },
12439
+ "completeEvent": {
12440
+ "types": [
12441
+ "string"
12442
+ ],
12443
+ "description": "completeEvent prop"
12444
+ }
12445
+ }
12446
+ },
12447
+ "debugger-board": {
12448
+ "type": "debugger-board",
12449
+ "category": "game",
12450
+ "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).",
12451
+ "suggestedFor": [
12452
+ "debugger",
12453
+ "board",
12454
+ "debugger board"
12455
+ ],
12456
+ "typicalSize": "large",
12457
+ "propsSchema": {
12458
+ "entity": {
12459
+ "types": [
12460
+ "debuggerpuzzleentity"
12461
+ ],
12462
+ "description": "entity prop",
12463
+ "required": true
12464
+ },
12465
+ "completeEvent": {
12466
+ "types": [
12467
+ "string"
12468
+ ],
12469
+ "description": "completeEvent prop"
12470
+ }
12471
+ }
12472
+ },
12473
+ "event-handler-board": {
12474
+ "type": "event-handler-board",
12475
+ "category": "game",
12476
+ "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.",
12477
+ "suggestedFor": [
12478
+ "event",
12479
+ "handler",
12480
+ "board",
12481
+ "event handler board"
12482
+ ],
12483
+ "typicalSize": "large",
12484
+ "propsSchema": {
12485
+ "entity": {
12486
+ "types": [
12487
+ "eventhandlerpuzzleentity"
12488
+ ],
12489
+ "description": "Puzzle data",
12490
+ "required": true
12491
+ },
12492
+ "stepDurationMs": {
12493
+ "types": [
12494
+ "number"
12495
+ ],
12496
+ "description": "Playback speed in ms per event"
12497
+ },
12498
+ "playEvent": {
12499
+ "types": [
12500
+ "string"
12501
+ ],
12502
+ "description": "Emits UI:{playEvent}"
12503
+ },
12504
+ "completeEvent": {
12505
+ "types": [
12506
+ "string"
12507
+ ],
12508
+ "description": "Emits UI:{completeEvent} with { success }"
12509
+ }
12510
+ }
12511
+ },
12512
+ "event-log": {
12513
+ "type": "event-log",
12514
+ "category": "display",
12515
+ "description": "EventLog Component Scrolling log of events during playback in the Event Handler tier. Shows the chain reaction as events cascade through objects.",
12516
+ "suggestedFor": [
12517
+ "event",
12518
+ "log",
12519
+ "event log"
12520
+ ],
12521
+ "typicalSize": "large",
12522
+ "propsSchema": {
12523
+ "entries": {
12524
+ "types": [
12525
+ "array"
12526
+ ],
12527
+ "description": "Log entries",
12528
+ "required": true
12529
+ },
12530
+ "maxHeight": {
12531
+ "types": [
12532
+ "number"
12533
+ ],
12534
+ "description": "Max visible height before scroll"
12535
+ },
12536
+ "label": {
12537
+ "types": [
12538
+ "string"
12539
+ ],
12540
+ "description": "Title label"
12541
+ },
12542
+ "className": {
12543
+ "types": [
12544
+ "string"
12545
+ ],
12546
+ "description": "Additional CSS classes"
12547
+ }
12548
+ }
12549
+ },
12550
+ "object-rule-panel": {
12551
+ "type": "object-rule-panel",
12552
+ "category": "display",
12553
+ "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.",
12554
+ "suggestedFor": [
12555
+ "object",
12556
+ "rule",
12557
+ "panel",
12558
+ "object rule panel"
12559
+ ],
12560
+ "typicalSize": "large",
12561
+ "propsSchema": {
12562
+ "object": {
12563
+ "types": [
12564
+ "puzzleobjectdef"
12565
+ ],
12566
+ "description": "The selected object",
12567
+ "required": true
12568
+ },
12569
+ "onRulesChange": {
12570
+ "types": [
12571
+ "function"
12572
+ ],
12573
+ "description": "Called when rules change",
12574
+ "required": true
12575
+ },
12576
+ "disabled": {
12577
+ "types": [
12578
+ "boolean"
12579
+ ],
12580
+ "description": "Whether editing is disabled"
12581
+ },
12582
+ "className": {
12583
+ "types": [
12584
+ "string"
12585
+ ],
12586
+ "description": "Additional CSS classes"
12587
+ }
12588
+ }
12589
+ },
12590
+ "rule-editor": {
12591
+ "type": "rule-editor",
12592
+ "category": "display",
12593
+ "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.",
12594
+ "suggestedFor": [
12595
+ "rule",
12596
+ "editor",
12597
+ "rule editor"
12598
+ ],
12599
+ "typicalSize": "large",
12600
+ "propsSchema": {
12601
+ "rule": {
12602
+ "types": [
12603
+ "ruledefinition"
12604
+ ],
12605
+ "description": "The current rule",
12606
+ "required": true
12607
+ },
12608
+ "availableEvents": {
12609
+ "types": [
12610
+ "array"
12611
+ ],
12612
+ "description": "Available event triggers to listen for",
12613
+ "required": true
12614
+ },
12615
+ "availableActions": {
12616
+ "types": [
12617
+ "array"
12618
+ ],
12619
+ "description": "Available actions to perform",
12620
+ "required": true
12621
+ },
12622
+ "onChange": {
12623
+ "types": [
12624
+ "function"
12625
+ ],
12626
+ "description": "Called when rule changes",
12627
+ "required": true
12628
+ },
12629
+ "onRemove": {
12630
+ "types": [
12631
+ "function"
12632
+ ],
12633
+ "description": "Called when rule is removed"
12634
+ },
12635
+ "disabled": {
12636
+ "types": [
12637
+ "boolean"
12638
+ ],
12639
+ "description": "Whether editing is disabled (during playback)"
12640
+ },
12641
+ "className": {
12642
+ "types": [
12643
+ "string"
12644
+ ],
12645
+ "description": "Additional CSS classes"
12646
+ }
12647
+ }
12648
+ },
12649
+ "negotiator-board": {
12650
+ "type": "negotiator-board",
12651
+ "category": "game",
12652
+ "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).",
12653
+ "suggestedFor": [
12654
+ "negotiator",
12655
+ "board",
12656
+ "negotiator board"
12657
+ ],
12658
+ "typicalSize": "large",
12659
+ "propsSchema": {
12660
+ "entity": {
12661
+ "types": [
12662
+ "negotiatorpuzzleentity"
12663
+ ],
12664
+ "description": "entity prop",
12665
+ "required": true
12666
+ },
12667
+ "completeEvent": {
12668
+ "types": [
12669
+ "string"
12670
+ ],
12671
+ "description": "completeEvent prop"
12672
+ }
12673
+ }
12674
+ },
12675
+ "action-palette": {
12676
+ "type": "action-palette",
12677
+ "category": "display",
12678
+ "description": "ActionPalette Component Grid of draggable ActionTile components for the Sequencer tier. Kids pick from these to build their sequence.",
12679
+ "suggestedFor": [
12680
+ "action",
12681
+ "palette",
12682
+ "action palette"
12683
+ ],
12684
+ "typicalSize": "large",
12685
+ "propsSchema": {
12686
+ "actions": {
12687
+ "types": [
12688
+ "array"
12689
+ ],
12690
+ "description": "Available actions",
12691
+ "required": true
12692
+ },
12693
+ "usedActionIds": {
12694
+ "types": [
12695
+ "array"
12696
+ ],
12697
+ "description": "IDs of actions that are already used (shown as disabled)"
12698
+ },
12699
+ "allowDuplicates": {
12700
+ "types": [
12701
+ "boolean"
12702
+ ],
12703
+ "description": "Whether each action can be used multiple times"
12704
+ },
12705
+ "categoryColors": {
12706
+ "types": [
12707
+ "object"
12708
+ ],
12709
+ "description": "Category → color mapping"
12710
+ },
12711
+ "size": {
12712
+ "types": [
12713
+ "string"
12714
+ ],
12715
+ "description": "Size variant"
12716
+ },
12717
+ "label": {
12718
+ "types": [
12719
+ "string"
12720
+ ],
12721
+ "description": "Label above the palette"
12722
+ },
12723
+ "className": {
12724
+ "types": [
12725
+ "string"
12726
+ ],
12727
+ "description": "Additional CSS classes"
12728
+ }
12729
+ }
12730
+ },
12731
+ "action-tile": {
12732
+ "type": "action-tile",
12733
+ "category": "game",
12734
+ "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.",
12735
+ "suggestedFor": [
12736
+ "action",
12737
+ "tile",
12738
+ "action tile"
12739
+ ],
12740
+ "typicalSize": "large",
12741
+ "propsSchema": {
12742
+ "action": {
12743
+ "types": [
12744
+ "slotitemdata"
12745
+ ],
12746
+ "description": "The action data",
12747
+ "required": true
12748
+ },
12749
+ "size": {
12750
+ "types": [
12751
+ "string"
12752
+ ],
12753
+ "description": "Size variant"
12754
+ },
12755
+ "disabled": {
12756
+ "types": [
12757
+ "boolean"
12758
+ ],
12759
+ "description": "Whether the tile is disabled / already used"
12760
+ },
12761
+ "categoryColors": {
12762
+ "types": [
12763
+ "object"
12764
+ ],
12765
+ "description": "Category → color mapping"
12766
+ }
12767
+ }
12768
+ },
12769
+ "sequence-bar": {
12770
+ "type": "sequence-bar",
12771
+ "category": "display",
12772
+ "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.",
12773
+ "suggestedFor": [
12774
+ "sequence",
12775
+ "bar",
12776
+ "sequence bar"
12777
+ ],
12778
+ "typicalSize": "large",
12779
+ "propsSchema": {
12780
+ "slots": {
12781
+ "types": [
12782
+ "array"
12783
+ ],
12784
+ "description": "The current sequence (sparse — undefined means empty slot)",
12785
+ "required": true
12786
+ },
12787
+ "maxSlots": {
12788
+ "types": [
12789
+ "number"
12790
+ ],
12791
+ "description": "Max number of slots",
12792
+ "required": true
12793
+ },
12794
+ "onSlotDrop": {
12795
+ "types": [
12796
+ "function"
12797
+ ],
12798
+ "description": "Called when an item is dropped into slot at index",
12799
+ "required": true
12800
+ },
12801
+ "onSlotRemove": {
12802
+ "types": [
12803
+ "function"
12804
+ ],
12805
+ "description": "Called when a slot is cleared",
12806
+ "required": true
12807
+ },
12808
+ "playing": {
12809
+ "types": [
12810
+ "boolean"
12811
+ ],
12812
+ "description": "Whether the sequence is currently playing (disable interaction)"
12813
+ },
12814
+ "currentStep": {
12815
+ "types": [
12816
+ "number"
12817
+ ],
12818
+ "description": "Current step index during playback (-1 = not playing)"
12819
+ },
12820
+ "categoryColors": {
12821
+ "types": [
12822
+ "object"
12823
+ ],
12824
+ "description": "Category → color mapping"
12825
+ },
12826
+ "slotFeedback": {
12827
+ "types": [
12828
+ "array"
12829
+ ],
12830
+ "description": "Per-slot correctness feedback shown after a failed attempt"
12831
+ },
12832
+ "size": {
12833
+ "types": [
12834
+ "string"
12835
+ ],
12836
+ "description": "Size variant"
12837
+ },
12838
+ "className": {
12839
+ "types": [
12840
+ "string"
12841
+ ],
12842
+ "description": "Additional CSS classes"
12843
+ }
12844
+ }
12845
+ },
12846
+ "sequencer-board": {
12847
+ "type": "sequencer-board",
12848
+ "category": "game",
12849
+ "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.",
12850
+ "suggestedFor": [
12851
+ "sequencer",
12852
+ "board",
12853
+ "sequencer board"
12854
+ ],
12855
+ "typicalSize": "large",
12856
+ "propsSchema": {
12857
+ "entity": {
12858
+ "types": [
12859
+ "sequencerpuzzleentity"
12860
+ ],
12861
+ "description": "Puzzle data",
12862
+ "required": true
12863
+ },
12864
+ "categoryColors": {
12865
+ "types": [
12866
+ "object"
12867
+ ],
12868
+ "description": "Category → color mapping"
12869
+ },
12870
+ "stepDurationMs": {
12871
+ "types": [
12872
+ "number"
12873
+ ],
12874
+ "description": "Playback speed in ms per step"
12875
+ },
12876
+ "playEvent": {
12877
+ "types": [
12878
+ "string"
12879
+ ],
12880
+ "description": "Emits UI:{playEvent} with { sequence: string[] }"
12881
+ },
12882
+ "completeEvent": {
12883
+ "types": [
12884
+ "string"
12885
+ ],
12886
+ "description": "Emits UI:{completeEvent} with { success: boolean }"
12887
+ }
12888
+ }
12889
+ },
12890
+ "simulator-board": {
12891
+ "type": "simulator-board",
12892
+ "category": "game",
12893
+ "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).",
12894
+ "suggestedFor": [
12895
+ "simulator",
12896
+ "board",
12897
+ "simulator board"
12898
+ ],
12899
+ "typicalSize": "large",
12900
+ "propsSchema": {
12901
+ "entity": {
12902
+ "types": [
12903
+ "simulatorpuzzleentity"
12904
+ ],
12905
+ "description": "entity prop",
12906
+ "required": true
12907
+ },
12908
+ "completeEvent": {
12909
+ "types": [
12910
+ "string"
12911
+ ],
12912
+ "description": "completeEvent prop"
12913
+ }
12914
+ }
12915
+ },
12916
+ "code-view": {
12917
+ "type": "code-view",
12918
+ "category": "display",
12919
+ "description": "CodeView Component Shows the JSON code representation of a state machine. Toggle between visual and code view in State Architect tier.",
12920
+ "suggestedFor": [
12921
+ "code",
12922
+ "view",
12923
+ "code view"
12924
+ ],
12925
+ "typicalSize": "large",
12926
+ "propsSchema": {
12927
+ "data": {
12928
+ "types": [
12929
+ "object"
12930
+ ],
12931
+ "description": "JSON data to display",
12932
+ "required": true
12933
+ },
12934
+ "label": {
12935
+ "types": [
12936
+ "string"
12937
+ ],
12938
+ "description": "Label"
12939
+ },
12940
+ "defaultExpanded": {
12941
+ "types": [
12942
+ "boolean"
12943
+ ],
12944
+ "description": "Whether the code is expanded by default"
12945
+ },
12946
+ "className": {
12947
+ "types": [
12948
+ "string"
12949
+ ],
12950
+ "description": "Additional CSS classes"
12951
+ }
12952
+ }
12953
+ },
12954
+ "state-architect-board": {
12955
+ "type": "state-architect-board",
12956
+ "category": "display",
12957
+ "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.",
12958
+ "suggestedFor": [
12959
+ "state",
12960
+ "architect",
12961
+ "board",
12962
+ "state architect board"
12963
+ ],
12964
+ "typicalSize": "large",
12965
+ "propsSchema": {
12966
+ "entity": {
12967
+ "types": [
12968
+ "statearchitectpuzzleentity"
12969
+ ],
12970
+ "description": "Puzzle data",
12971
+ "required": true
12972
+ },
12973
+ "stepDurationMs": {
12974
+ "types": [
12975
+ "number"
12976
+ ],
12977
+ "description": "Playback speed"
12978
+ },
12979
+ "testEvent": {
12980
+ "types": [
12981
+ "string"
12982
+ ],
12983
+ "description": "Emits UI:{testEvent}"
12984
+ },
12985
+ "completeEvent": {
12986
+ "types": [
12987
+ "string"
12988
+ ],
12989
+ "description": "Emits UI:{completeEvent} with { success, passedTests }"
12990
+ }
12991
+ }
12992
+ },
12993
+ "state-node": {
12994
+ "type": "state-node",
12995
+ "category": "display",
12996
+ "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.",
12997
+ "suggestedFor": [
12998
+ "state",
12999
+ "node",
13000
+ "state node"
13001
+ ],
13002
+ "typicalSize": "large",
13003
+ "propsSchema": {
13004
+ "name": {
13005
+ "types": [
13006
+ "string"
13007
+ ],
13008
+ "description": "State name",
13009
+ "required": true
13010
+ },
13011
+ "isCurrent": {
13012
+ "types": [
13013
+ "boolean"
13014
+ ],
13015
+ "description": "Whether this is the current active state"
13016
+ },
13017
+ "isSelected": {
13018
+ "types": [
13019
+ "boolean"
13020
+ ],
13021
+ "description": "Whether this node is selected for editing"
13022
+ },
13023
+ "isInitial": {
13024
+ "types": [
13025
+ "boolean"
13026
+ ],
13027
+ "description": "Whether this is the initial state"
13028
+ },
13029
+ "position": {
13030
+ "types": [
13031
+ "object"
13032
+ ],
13033
+ "description": "Position on the graph canvas",
13034
+ "required": true
13035
+ },
13036
+ "onClick": {
13037
+ "types": [
13038
+ "function"
13039
+ ],
13040
+ "description": "Click handler"
13041
+ },
13042
+ "className": {
13043
+ "types": [
13044
+ "string"
13045
+ ],
13046
+ "description": "Additional CSS classes"
13047
+ }
13048
+ }
13049
+ },
13050
+ "transition-arrow": {
13051
+ "type": "transition-arrow",
13052
+ "category": "display",
13053
+ "description": "TransitionArrow Component An SVG arrow connecting two state nodes in the graph editor. Shows the event name as a label on the arrow.",
13054
+ "suggestedFor": [
13055
+ "transition",
13056
+ "arrow",
13057
+ "transition arrow"
13058
+ ],
13059
+ "typicalSize": "large",
13060
+ "propsSchema": {
13061
+ "from": {
13062
+ "types": [
13063
+ "object"
13064
+ ],
13065
+ "description": "Start position (center of from-node)",
13066
+ "required": true
13067
+ },
13068
+ "to": {
13069
+ "types": [
13070
+ "object"
13071
+ ],
13072
+ "description": "End position (center of to-node)",
13073
+ "required": true
13074
+ },
13075
+ "eventLabel": {
13076
+ "types": [
13077
+ "string"
13078
+ ],
13079
+ "description": "Event label shown on the arrow",
13080
+ "required": true
13081
+ },
13082
+ "guardHint": {
13083
+ "types": [
13084
+ "string"
13085
+ ],
13086
+ "description": "Guard hint shown below event"
13087
+ },
13088
+ "isActive": {
13089
+ "types": [
13090
+ "boolean"
13091
+ ],
13092
+ "description": "Whether this transition is currently active"
13093
+ },
13094
+ "onClick": {
13095
+ "types": [
13096
+ "function"
13097
+ ],
13098
+ "description": "Click handler"
13099
+ },
13100
+ "className": {
13101
+ "types": [
13102
+ "string"
13103
+ ],
13104
+ "description": "Additional CSS classes for the SVG group"
13105
+ }
13106
+ }
13107
+ },
13108
+ "variable-panel": {
13109
+ "type": "variable-panel",
13110
+ "category": "display",
13111
+ "description": "VariablePanel Component Shows entity variables and their current values during State Architect playback.",
13112
+ "suggestedFor": [
13113
+ "variable",
13114
+ "panel",
13115
+ "variable panel"
13116
+ ],
13117
+ "typicalSize": "large",
13118
+ "propsSchema": {
13119
+ "entityName": {
13120
+ "types": [
13121
+ "string"
13122
+ ],
13123
+ "description": "Entity name",
13124
+ "required": true
13125
+ },
13126
+ "variables": {
13127
+ "types": [
13128
+ "array"
13129
+ ],
13130
+ "description": "Variables to display",
13131
+ "required": true
13132
+ },
13133
+ "className": {
13134
+ "types": [
13135
+ "string"
13136
+ ],
13137
+ "description": "Additional CSS classes"
13138
+ }
13139
+ }
13140
+ },
11870
13141
  "heading": {
11871
13142
  "type": "heading",
11872
13143
  "category": "component",