@almadar/patterns 1.0.13 → 1.0.15

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-09T10:45:55.417Z",
3
+ "exportedAt": "2026-02-10T15:35:56.769Z",
4
4
  "patterns": {
5
5
  "entity-table": {
6
6
  "type": "entity-table",
@@ -229,12 +229,6 @@
229
229
  ],
230
230
  "description": "Data array - primary prop for data"
231
231
  },
232
- "type": {
233
- "types": [
234
- "string"
235
- ],
236
- "description": "Entity type name for display"
237
- },
238
232
  "isLoading": {
239
233
  "types": [
240
234
  "boolean"
@@ -337,6 +331,12 @@
337
331
  "string"
338
332
  ],
339
333
  "description": "Query singleton binding for filter/sort state. When provided, syncs with the query singleton for filtering and sorting. Example: \"@TaskQuery\""
334
+ },
335
+ "entityType": {
336
+ "types": [
337
+ "string"
338
+ ],
339
+ "description": "Entity type name for display"
340
340
  }
341
341
  }
342
342
  },
@@ -881,62 +881,188 @@
881
881
  "form-section": {
882
882
  "type": "form-section",
883
883
  "category": "form",
884
- "description": "Group of related input fields",
884
+ "description": "Alias for form Complete form with fields and actions",
885
885
  "suggestedFor": [
886
886
  "create forms",
887
887
  "edit forms",
888
- "settings"
888
+ "data entry"
889
889
  ],
890
- "typicalSize": "small",
890
+ "typicalSize": "medium",
891
891
  "propsSchema": {
892
+ "children": {
893
+ "types": [
894
+ "node"
895
+ ],
896
+ "description": "Form fields (traditional React children)"
897
+ },
898
+ "onSubmit": {
899
+ "types": [
900
+ "function",
901
+ "string"
902
+ ],
903
+ "description": "Submit handler - receives form data, or event name string for trait dispatch"
904
+ },
905
+ "onCancel": {
906
+ "types": [
907
+ "function",
908
+ "string"
909
+ ],
910
+ "description": "Cancel handler - function or event name string for trait dispatch"
911
+ },
912
+ "layout": {
913
+ "types": [
914
+ "string"
915
+ ],
916
+ "description": "Form layout"
917
+ },
918
+ "gap": {
919
+ "types": [
920
+ "string"
921
+ ],
922
+ "description": "Gap between fields"
923
+ },
924
+ "className": {
925
+ "types": [
926
+ "string"
927
+ ],
928
+ "description": "Additional CSS classes"
929
+ },
930
+ "entity": {
931
+ "types": [
932
+ "string"
933
+ ],
934
+ "description": "Schema-based props"
935
+ },
936
+ "mode": {
937
+ "types": [
938
+ "string"
939
+ ],
940
+ "description": "Form mode - 'create' for new records, 'edit' for updating existing"
941
+ },
942
+ "fields": {
943
+ "types": [
944
+ "unknown"
945
+ ],
946
+ "description": "Fields definition (schema format) - accepts readonly for generated const arrays"
947
+ },
948
+ "initialData": {
949
+ "types": [
950
+ "object",
951
+ "unknown"
952
+ ],
953
+ "description": "Initial form data"
954
+ },
955
+ "isLoading": {
956
+ "types": [
957
+ "boolean"
958
+ ],
959
+ "description": "Loading state"
960
+ },
961
+ "error": {
962
+ "types": [
963
+ "error"
964
+ ],
965
+ "description": "Error state"
966
+ },
967
+ "submitLabel": {
968
+ "types": [
969
+ "string"
970
+ ],
971
+ "description": "Submit button label"
972
+ },
973
+ "cancelLabel": {
974
+ "types": [
975
+ "string"
976
+ ],
977
+ "description": "Cancel button label (if provided, shows cancel button)"
978
+ },
979
+ "showCancel": {
980
+ "types": [
981
+ "boolean"
982
+ ],
983
+ "description": "Show cancel button (defaults to true for schema forms)"
984
+ },
892
985
  "title": {
893
986
  "types": [
894
987
  "string"
895
988
  ],
896
- "description": "Section title"
989
+ "description": "Form title (used by ModalSlot to extract title)"
897
990
  },
898
- "description": {
991
+ "submitEvent": {
992
+ "types": [
993
+ "string"
994
+ ],
995
+ "description": "Event dispatch props (for trait state machine integration)"
996
+ },
997
+ "cancelEvent": {
899
998
  "types": [
900
999
  "string"
901
1000
  ],
902
- "description": "Section description"
1001
+ "description": "Event to dispatch on cancel (defaults to 'CANCEL')"
903
1002
  },
904
- "children": {
1003
+ "relationsData": {
905
1004
  "types": [
906
- "node"
1005
+ "object"
907
1006
  ],
908
- "description": "Form fields",
909
- "required": true
1007
+ "description": "Relation data props"
1008
+ },
1009
+ "relationsLoading": {
1010
+ "types": [
1011
+ "object"
1012
+ ],
1013
+ "description": "Loading state for relation data: { fieldName: boolean }"
910
1014
  },
911
- "collapsible": {
1015
+ "conditionalFields": {
912
1016
  "types": [
1017
+ "object",
913
1018
  "boolean"
914
1019
  ],
915
- "description": "Collapsible"
1020
+ "description": "Inspection form extensions"
916
1021
  },
917
- "defaultCollapsed": {
1022
+ "hiddenCalculations": {
918
1023
  "types": [
1024
+ "array",
919
1025
  "boolean"
920
1026
  ],
921
- "description": "Default collapsed state"
1027
+ "description": "Hidden calculations that emit GLOBAL_VARIABLE_SET on field change (boolean true means enabled but config loaded separately)"
922
1028
  },
923
- "card": {
1029
+ "violationTriggers": {
924
1030
  "types": [
1031
+ "array",
925
1032
  "boolean"
926
1033
  ],
927
- "description": "Use card wrapper"
1034
+ "description": "Violation conditions that emit VIOLATION_DETECTED when met (boolean true means enabled but config loaded separately)"
928
1035
  },
929
- "columns": {
1036
+ "evaluationContext": {
930
1037
  "types": [
931
- "number"
1038
+ "formevaluationcontext",
1039
+ "object"
932
1040
  ],
933
- "description": "Grid columns for fields"
1041
+ "description": "Context for S-expression evaluation - accepts flexible types from generated code"
934
1042
  },
935
- "className": {
1043
+ "sections": {
1044
+ "types": [
1045
+ "array"
1046
+ ],
1047
+ "description": "Nested form sections with optional conditions"
1048
+ },
1049
+ "onFieldChange": {
1050
+ "types": [
1051
+ "function"
1052
+ ],
1053
+ "description": "Callback when any field value changes"
1054
+ },
1055
+ "configPath": {
936
1056
  "types": [
937
1057
  "string"
938
1058
  ],
939
- "description": "className prop"
1059
+ "description": "Config path for form configuration (schema-driven)"
1060
+ },
1061
+ "repeatable": {
1062
+ "types": [
1063
+ "boolean"
1064
+ ],
1065
+ "description": "Whether the form supports repeatable entries"
940
1066
  }
941
1067
  }
942
1068
  },
@@ -2535,110 +2661,6 @@
2535
2661
  }
2536
2662
  }
2537
2663
  },
2538
- "game-canvas": {
2539
- "type": "game-canvas",
2540
- "category": "game",
2541
- "description": "Main game rendering area (canvas)",
2542
- "suggestedFor": [
2543
- "game page",
2544
- "main gameplay"
2545
- ],
2546
- "typicalSize": "large",
2547
- "propsSchema": {
2548
- "renderEntities": {
2549
- "types": [
2550
- "array"
2551
- ],
2552
- "description": "Entity type names to render (optional filter)"
2553
- },
2554
- "renderers": {
2555
- "types": [
2556
- "object"
2557
- ],
2558
- "description": "Rendering functions per entity type"
2559
- },
2560
- "renderer": {
2561
- "types": [
2562
- "string"
2563
- ],
2564
- "description": "Renderer type hint from schema (e.g., 'phaser', 'canvas'). Currently ignored - component uses Canvas2D. Reserved for future multi-renderer support."
2565
- },
2566
- "background": {
2567
- "types": [
2568
- "string"
2569
- ],
2570
- "description": "Background color or gradient"
2571
- },
2572
- "width": {
2573
- "types": [
2574
- "number",
2575
- "string"
2576
- ],
2577
- "description": "Canvas width in pixels or 'full' for responsive"
2578
- },
2579
- "height": {
2580
- "types": [
2581
- "number",
2582
- "string"
2583
- ],
2584
- "description": "Canvas height in pixels or 'auto' for aspect ratio"
2585
- },
2586
- "aspectRatio": {
2587
- "types": [
2588
- "string"
2589
- ],
2590
- "description": "Aspect ratio (e.g., '16:9', '4:3')"
2591
- },
2592
- "cameraOffset": {
2593
- "types": [
2594
- "object"
2595
- ],
2596
- "description": "Camera offset for scrolling"
2597
- },
2598
- "debug": {
2599
- "types": [
2600
- "boolean"
2601
- ],
2602
- "description": "Debug mode shows hitboxes and entity info"
2603
- },
2604
- "className": {
2605
- "types": [
2606
- "string"
2607
- ],
2608
- "description": "Additional CSS classes"
2609
- },
2610
- "onClick": {
2611
- "types": [
2612
- "function"
2613
- ],
2614
- "description": "Click handler for canvas"
2615
- },
2616
- "enableInput": {
2617
- "types": [
2618
- "boolean"
2619
- ],
2620
- "description": "Enable keyboard input handling (updates Input entity)"
2621
- },
2622
- "inputBindings": {
2623
- "types": [
2624
- "array"
2625
- ],
2626
- "description": "Custom input key bindings"
2627
- },
2628
- "collisions": {
2629
- "types": [
2630
- "array"
2631
- ],
2632
- "description": "Collision definitions from schema"
2633
- },
2634
- "eventBus": {
2635
- "types": [
2636
- "object"
2637
- ],
2638
- "description": "Event bus for emitting collision events"
2639
- }
2640
- }
2641
- },
2642
2664
  "game-hud": {
2643
2665
  "type": "game-hud",
2644
2666
  "category": "game",
@@ -2693,77 +2715,15 @@
2693
2715
  }
2694
2716
  }
2695
2717
  },
2696
- "game-controls": {
2697
- "type": "game-controls",
2718
+ "game-menu": {
2719
+ "type": "game-menu",
2698
2720
  "category": "game",
2699
- "description": "Touch/button controls for mobile/accessibility",
2721
+ "description": "Main menu with start, options, credits",
2700
2722
  "suggestedFor": [
2701
- "mobile games",
2702
- "touch controls"
2723
+ "main menu page",
2724
+ "start screen"
2703
2725
  ],
2704
- "typicalSize": "small",
2705
- "propsSchema": {
2706
- "layout": {
2707
- "types": [
2708
- "string"
2709
- ],
2710
- "description": "Control layout type",
2711
- "required": true
2712
- },
2713
- "position": {
2714
- "types": [
2715
- "string"
2716
- ],
2717
- "description": "Position on screen",
2718
- "required": true
2719
- },
2720
- "controls": {
2721
- "types": [
2722
- "unknown"
2723
- ],
2724
- "description": "Controls to display - accepts readonly for compatibility with generated const arrays"
2725
- },
2726
- "onControl": {
2727
- "types": [
2728
- "function"
2729
- ],
2730
- "description": "Called when control is pressed/released"
2731
- },
2732
- "size": {
2733
- "types": [
2734
- "string"
2735
- ],
2736
- "description": "Size variant"
2737
- },
2738
- "className": {
2739
- "types": [
2740
- "string"
2741
- ],
2742
- "description": "Additional CSS classes"
2743
- },
2744
- "visible": {
2745
- "types": [
2746
- "boolean"
2747
- ],
2748
- "description": "Whether controls are visible"
2749
- },
2750
- "opacity": {
2751
- "types": [
2752
- "number"
2753
- ],
2754
- "description": "Opacity when visible"
2755
- }
2756
- }
2757
- },
2758
- "game-menu": {
2759
- "type": "game-menu",
2760
- "category": "game",
2761
- "description": "Main menu with start, options, credits",
2762
- "suggestedFor": [
2763
- "main menu page",
2764
- "start screen"
2765
- ],
2766
- "typicalSize": "medium",
2726
+ "typicalSize": "medium",
2767
2727
  "propsSchema": {
2768
2728
  "title": {
2769
2729
  "types": [
@@ -2822,66 +2782,6 @@
2822
2782
  }
2823
2783
  }
2824
2784
  },
2825
- "game-pause-overlay": {
2826
- "type": "game-pause-overlay",
2827
- "category": "game",
2828
- "description": "Pause menu that overlays the game",
2829
- "suggestedFor": [
2830
- "pause screen",
2831
- "game overlay"
2832
- ],
2833
- "typicalSize": "small",
2834
- "propsSchema": {
2835
- "options": {
2836
- "types": [
2837
- "array"
2838
- ],
2839
- "description": "Pause menu options"
2840
- },
2841
- "menuItems": {
2842
- "types": [
2843
- "array"
2844
- ],
2845
- "description": "Alias for options (schema compatibility)"
2846
- },
2847
- "onSelect": {
2848
- "types": [
2849
- "function"
2850
- ],
2851
- "description": "Called when an option is selected (legacy callback, prefer event bus)"
2852
- },
2853
- "eventBus": {
2854
- "types": [
2855
- "eventbuscontexttype"
2856
- ],
2857
- "description": "Event bus for emitting UI events (optional, uses hook if not provided)"
2858
- },
2859
- "title": {
2860
- "types": [
2861
- "string"
2862
- ],
2863
- "description": "Title (default: \"PAUSED\")"
2864
- },
2865
- "className": {
2866
- "types": [
2867
- "string"
2868
- ],
2869
- "description": "Additional CSS classes"
2870
- },
2871
- "visible": {
2872
- "types": [
2873
- "boolean"
2874
- ],
2875
- "description": "Whether the pause menu is visible"
2876
- },
2877
- "onDismiss": {
2878
- "types": [
2879
- "function"
2880
- ],
2881
- "description": "Called when clicking outside the menu"
2882
- }
2883
- }
2884
- },
2885
2785
  "game-over-screen": {
2886
2786
  "type": "game-over-screen",
2887
2787
  "category": "game",
@@ -2964,162 +2864,6 @@
2964
2864
  }
2965
2865
  }
2966
2866
  },
2967
- "level-select": {
2968
- "type": "level-select",
2969
- "category": "game",
2970
- "description": "Grid or list of levels to choose from",
2971
- "suggestedFor": [
2972
- "level selection",
2973
- "stage selection"
2974
- ],
2975
- "typicalSize": "large",
2976
- "propsSchema": {
2977
- "levels": {
2978
- "types": [
2979
- "array"
2980
- ],
2981
- "description": "Level data"
2982
- },
2983
- "entity": {
2984
- "types": [
2985
- "string"
2986
- ],
2987
- "description": "Entity name (schema config)"
2988
- },
2989
- "layout": {
2990
- "types": [
2991
- "string"
2992
- ],
2993
- "description": "Layout variant"
2994
- },
2995
- "fields": {
2996
- "types": [
2997
- "array"
2998
- ],
2999
- "description": "Fields to display per level"
3000
- },
3001
- "selectEvent": {
3002
- "types": [
3003
- "string"
3004
- ],
3005
- "description": "Event to emit on selection (schema config)"
3006
- },
3007
- "onSelect": {
3008
- "types": [
3009
- "function"
3010
- ],
3011
- "description": "Called when a level is selected"
3012
- },
3013
- "navigatesTo": {
3014
- "types": [
3015
- "string"
3016
- ],
3017
- "description": "Path to navigate to on selection. Supports :id, :levelId, :number placeholders"
3018
- },
3019
- "selectedId": {
3020
- "types": [
3021
- "string"
3022
- ],
3023
- "description": "Currently selected level ID"
3024
- },
3025
- "maxStars": {
3026
- "types": [
3027
- "number"
3028
- ],
3029
- "description": "Maximum stars possible per level"
3030
- },
3031
- "className": {
3032
- "types": [
3033
- "string"
3034
- ],
3035
- "description": "Additional CSS classes"
3036
- },
3037
- "title": {
3038
- "types": [
3039
- "string"
3040
- ],
3041
- "description": "Title above the level grid"
3042
- }
3043
- }
3044
- },
3045
- "tilemap-renderer": {
3046
- "type": "tilemap-renderer",
3047
- "category": "game",
3048
- "description": "Renders tile-based level data from instances with camera following",
3049
- "suggestedFor": [
3050
- "platformer levels",
3051
- "tile-based games",
3052
- "rpg maps"
3053
- ],
3054
- "typicalSize": "large",
3055
- "propsSchema": {
3056
- "layers": {
3057
- "types": [
3058
- "array"
3059
- ],
3060
- "description": "Tile layers to render",
3061
- "required": true
3062
- },
3063
- "tileset": {
3064
- "types": [
3065
- "tileset"
3066
- ],
3067
- "description": "Tileset configuration",
3068
- "required": true
3069
- },
3070
- "camera": {
3071
- "types": [
3072
- "object"
3073
- ],
3074
- "description": "Camera position",
3075
- "required": true
3076
- },
3077
- "viewportWidth": {
3078
- "types": [
3079
- "number"
3080
- ],
3081
- "description": "Viewport width in pixels",
3082
- "required": true
3083
- },
3084
- "viewportHeight": {
3085
- "types": [
3086
- "number"
3087
- ],
3088
- "description": "Viewport height in pixels",
3089
- "required": true
3090
- },
3091
- "pixelArt": {
3092
- "types": [
3093
- "boolean"
3094
- ],
3095
- "description": "Enable pixel art rendering (no smoothing)"
3096
- },
3097
- "parallaxLayers": {
3098
- "types": [
3099
- "array"
3100
- ],
3101
- "description": "Parallax configuration per layer"
3102
- },
3103
- "className": {
3104
- "types": [
3105
- "string"
3106
- ],
3107
- "description": "Optional className"
3108
- },
3109
- "scale": {
3110
- "types": [
3111
- "number"
3112
- ],
3113
- "description": "Scale factor for rendering"
3114
- },
3115
- "debug": {
3116
- "types": [
3117
- "boolean"
3118
- ],
3119
- "description": "Show debug grid"
3120
- }
3121
- }
3122
- },
3123
2867
  "inventory-panel": {
3124
2868
  "type": "inventory-panel",
3125
2869
  "category": "game",
@@ -3253,133 +2997,65 @@
3253
2997
  }
3254
2998
  }
3255
2999
  },
3256
- "input-listener": {
3257
- "type": "input-listener",
3258
- "category": "game",
3259
- "description": "Invisible component that captures keyboard/mouse input and emits events",
3000
+ "runtime-debugger": {
3001
+ "type": "runtime-debugger",
3002
+ "category": "debug",
3003
+ "description": "Debug overlay showing FPS, entity states, event logs",
3260
3004
  "suggestedFor": [
3261
- "games",
3262
- "interactive applications",
3263
- "keyboard shortcuts"
3005
+ "development",
3006
+ "debugging",
3007
+ "testing"
3264
3008
  ],
3265
- "typicalSize": "tiny",
3009
+ "typicalSize": "small",
3266
3010
  "propsSchema": {
3267
- "bindings": {
3011
+ "position": {
3268
3012
  "types": [
3269
- "unknown"
3013
+ "string"
3270
3014
  ],
3271
- "description": "Key bindings configuration"
3015
+ "description": "Initial position"
3272
3016
  },
3273
- "enabled": {
3017
+ "defaultCollapsed": {
3274
3018
  "types": [
3275
3019
  "boolean"
3276
3020
  ],
3277
- "description": "Whether input listening is enabled"
3021
+ "description": "Initial collapsed state"
3278
3022
  },
3279
- "eventBus": {
3023
+ "className": {
3280
3024
  "types": [
3281
- "eventbuscontexttype"
3025
+ "string"
3282
3026
  ],
3283
- "description": "Event bus for emitting events (optional, uses hook if not provided)"
3027
+ "description": "Additional CSS classes"
3284
3028
  }
3285
3029
  }
3286
3030
  },
3287
- "collision-detector": {
3288
- "type": "collision-detector",
3289
- "category": "game",
3290
- "description": "Invisible component that runs collision detection and emits collision events",
3031
+ "button": {
3032
+ "type": "button",
3033
+ "category": "component",
3034
+ "description": "Clickable button that emits events",
3291
3035
  "suggestedFor": [
3292
- "games",
3293
- "2D physics",
3294
- "spatial interactions"
3036
+ "actions",
3037
+ "form submission",
3038
+ "navigation triggers"
3295
3039
  ],
3296
3040
  "typicalSize": "tiny",
3297
3041
  "propsSchema": {
3298
- "algorithm": {
3042
+ "variant": {
3299
3043
  "types": [
3300
- "string"
3044
+ "buttonvariant"
3301
3045
  ],
3302
- "description": "Collision detection algorithm"
3046
+ "description": "variant prop"
3303
3047
  },
3304
- "rules": {
3048
+ "size": {
3305
3049
  "types": [
3306
- "unknown"
3050
+ "buttonsize"
3307
3051
  ],
3308
- "description": "Collision rules to check"
3052
+ "description": "size prop"
3309
3053
  },
3310
- "enabled": {
3054
+ "isLoading": {
3311
3055
  "types": [
3312
3056
  "boolean"
3313
3057
  ],
3314
- "description": "Whether collision detection is enabled"
3315
- },
3316
- "eventBus": {
3317
- "types": [
3318
- "eventbuscontexttype"
3319
- ],
3320
- "description": "Event bus for emitting events (optional, uses hook if not provided)"
3321
- }
3322
- }
3323
- },
3324
- "runtime-debugger": {
3325
- "type": "runtime-debugger",
3326
- "category": "debug",
3327
- "description": "Debug overlay showing FPS, entity states, event logs",
3328
- "suggestedFor": [
3329
- "development",
3330
- "debugging",
3331
- "testing"
3332
- ],
3333
- "typicalSize": "small",
3334
- "propsSchema": {
3335
- "position": {
3336
- "types": [
3337
- "string"
3338
- ],
3339
- "description": "Initial position"
3340
- },
3341
- "defaultCollapsed": {
3342
- "types": [
3343
- "boolean"
3344
- ],
3345
- "description": "Initial collapsed state"
3346
- },
3347
- "className": {
3348
- "types": [
3349
- "string"
3350
- ],
3351
- "description": "Additional CSS classes"
3352
- }
3353
- }
3354
- },
3355
- "button": {
3356
- "type": "button",
3357
- "category": "component",
3358
- "description": "Clickable button that emits events",
3359
- "suggestedFor": [
3360
- "actions",
3361
- "form submission",
3362
- "navigation triggers"
3363
- ],
3364
- "typicalSize": "tiny",
3365
- "propsSchema": {
3366
- "variant": {
3367
- "types": [
3368
- "buttonvariant"
3369
- ],
3370
- "description": "variant prop"
3371
- },
3372
- "size": {
3373
- "types": [
3374
- "buttonsize"
3375
- ],
3376
- "description": "size prop"
3377
- },
3378
- "isLoading": {
3379
- "types": [
3380
- "boolean"
3381
- ],
3382
- "description": "isLoading prop"
3058
+ "description": "isLoading prop"
3383
3059
  },
3384
3060
  "leftIcon": {
3385
3061
  "types": [
@@ -3646,12 +3322,6 @@
3646
3322
  ],
3647
3323
  "description": "Maximum value (for calculating percentage) @default 100"
3648
3324
  },
3649
- "type": {
3650
- "types": [
3651
- "progressbartype"
3652
- ],
3653
- "description": "Type of the progress bar (linear, circular, stepped) @default 'linear'"
3654
- },
3655
3325
  "variant": {
3656
3326
  "types": [
3657
3327
  "progressbarvariant"
@@ -3699,6 +3369,12 @@
3699
3369
  "string"
3700
3370
  ],
3701
3371
  "description": "Additional CSS classes"
3372
+ },
3373
+ "progressType": {
3374
+ "types": [
3375
+ "progressbartype"
3376
+ ],
3377
+ "description": "Type of the progress bar (linear, circular, stepped) @default 'linear'"
3702
3378
  }
3703
3379
  }
3704
3380
  },
@@ -3731,12 +3407,6 @@
3731
3407
  ],
3732
3408
  "typicalSize": "tiny",
3733
3409
  "propsSchema": {
3734
- "type": {
3735
- "types": [
3736
- "string"
3737
- ],
3738
- "description": "Input type - supports 'select' and 'textarea' in addition to standard types"
3739
- },
3740
3410
  "error": {
3741
3411
  "types": [
3742
3412
  "string"
@@ -3790,6 +3460,12 @@
3790
3460
  "react.changeeventhandler"
3791
3461
  ],
3792
3462
  "description": "onChange handler - accepts events from input, select, or textarea"
3463
+ },
3464
+ "inputType": {
3465
+ "types": [
3466
+ "string"
3467
+ ],
3468
+ "description": "Input type - supports 'select' and 'textarea' in addition to standard types"
3793
3469
  }
3794
3470
  }
3795
3471
  },
@@ -4705,13 +4381,6 @@
4705
4381
  ],
4706
4382
  "typicalSize": "small",
4707
4383
  "propsSchema": {
4708
- "type": {
4709
- "types": [
4710
- "highlighttype"
4711
- ],
4712
- "description": "Type of highlight (determines color)",
4713
- "required": true
4714
- },
4715
4384
  "isActive": {
4716
4385
  "types": [
4717
4386
  "boolean"
@@ -4754,6 +4423,13 @@
4754
4423
  ],
4755
4424
  "description": "Highlighted text content",
4756
4425
  "required": true
4426
+ },
4427
+ "highlightType": {
4428
+ "types": [
4429
+ "highlighttype"
4430
+ ],
4431
+ "description": "Type of highlight (determines color)",
4432
+ "required": true
4757
4433
  }
4758
4434
  }
4759
4435
  },
@@ -7802,6 +7478,1675 @@
7802
7478
  "description": "Whether to show the minimal top bar (default: true)"
7803
7479
  }
7804
7480
  }
7481
+ },
7482
+ "chart": {
7483
+ "type": "chart",
7484
+ "category": "visualization",
7485
+ "description": "Data visualization chart supporting bar, line, pie, area, and donut types",
7486
+ "suggestedFor": [
7487
+ "dashboards",
7488
+ "analytics",
7489
+ "data visualization",
7490
+ "reporting"
7491
+ ],
7492
+ "typicalSize": "medium",
7493
+ "propsSchema": {
7494
+ "title": {
7495
+ "types": [
7496
+ "string"
7497
+ ],
7498
+ "description": "Chart title"
7499
+ },
7500
+ "subtitle": {
7501
+ "types": [
7502
+ "string"
7503
+ ],
7504
+ "description": "Chart subtitle / description"
7505
+ },
7506
+ "chartType": {
7507
+ "types": [
7508
+ "charttype"
7509
+ ],
7510
+ "description": "Chart type"
7511
+ },
7512
+ "series": {
7513
+ "types": [
7514
+ "unknown"
7515
+ ],
7516
+ "description": "Data series"
7517
+ },
7518
+ "data": {
7519
+ "types": [
7520
+ "unknown"
7521
+ ],
7522
+ "description": "Simple data (single series shorthand)"
7523
+ },
7524
+ "height": {
7525
+ "types": [
7526
+ "number"
7527
+ ],
7528
+ "description": "Chart height in px"
7529
+ },
7530
+ "showLegend": {
7531
+ "types": [
7532
+ "boolean"
7533
+ ],
7534
+ "description": "Show legend"
7535
+ },
7536
+ "showValues": {
7537
+ "types": [
7538
+ "boolean"
7539
+ ],
7540
+ "description": "Show values on chart"
7541
+ },
7542
+ "actions": {
7543
+ "types": [
7544
+ "unknown"
7545
+ ],
7546
+ "description": "Actions for chart interactions"
7547
+ },
7548
+ "entity": {
7549
+ "types": [
7550
+ "string"
7551
+ ],
7552
+ "description": "Entity name for schema-driven auto-fetch"
7553
+ },
7554
+ "isLoading": {
7555
+ "types": [
7556
+ "boolean"
7557
+ ],
7558
+ "description": "Loading state"
7559
+ },
7560
+ "error": {
7561
+ "types": [
7562
+ "error"
7563
+ ],
7564
+ "description": "Error state"
7565
+ },
7566
+ "className": {
7567
+ "types": [
7568
+ "string"
7569
+ ],
7570
+ "description": "Additional CSS classes"
7571
+ }
7572
+ }
7573
+ },
7574
+ "meter": {
7575
+ "type": "meter",
7576
+ "category": "visualization",
7577
+ "description": "Gauge/meter component for displaying a value within a range with thresholds",
7578
+ "suggestedFor": [
7579
+ "dashboards",
7580
+ "progress tracking",
7581
+ "credit/quota displays",
7582
+ "KPI indicators"
7583
+ ],
7584
+ "typicalSize": "small",
7585
+ "propsSchema": {
7586
+ "value": {
7587
+ "types": [
7588
+ "number"
7589
+ ],
7590
+ "description": "Current value",
7591
+ "required": true
7592
+ },
7593
+ "min": {
7594
+ "types": [
7595
+ "number"
7596
+ ],
7597
+ "description": "Minimum value"
7598
+ },
7599
+ "max": {
7600
+ "types": [
7601
+ "number"
7602
+ ],
7603
+ "description": "Maximum value"
7604
+ },
7605
+ "label": {
7606
+ "types": [
7607
+ "string"
7608
+ ],
7609
+ "description": "Display label"
7610
+ },
7611
+ "unit": {
7612
+ "types": [
7613
+ "string"
7614
+ ],
7615
+ "description": "Unit suffix (e.g., '%', 'MB', 'credits')"
7616
+ },
7617
+ "variant": {
7618
+ "types": [
7619
+ "metervariant"
7620
+ ],
7621
+ "description": "Display variant"
7622
+ },
7623
+ "thresholds": {
7624
+ "types": [
7625
+ "unknown"
7626
+ ],
7627
+ "description": "Color thresholds"
7628
+ },
7629
+ "segments": {
7630
+ "types": [
7631
+ "number"
7632
+ ],
7633
+ "description": "Number of segments (for segmented variant)"
7634
+ },
7635
+ "showValue": {
7636
+ "types": [
7637
+ "boolean"
7638
+ ],
7639
+ "description": "Show value text"
7640
+ },
7641
+ "size": {
7642
+ "types": [
7643
+ "string"
7644
+ ],
7645
+ "description": "Size (for radial variant)"
7646
+ },
7647
+ "actions": {
7648
+ "types": [
7649
+ "unknown"
7650
+ ],
7651
+ "description": "Actions"
7652
+ },
7653
+ "entity": {
7654
+ "types": [
7655
+ "string"
7656
+ ],
7657
+ "description": "Entity name for schema-driven auto-fetch"
7658
+ },
7659
+ "isLoading": {
7660
+ "types": [
7661
+ "boolean"
7662
+ ],
7663
+ "description": "Loading state"
7664
+ },
7665
+ "error": {
7666
+ "types": [
7667
+ "error"
7668
+ ],
7669
+ "description": "Error state"
7670
+ },
7671
+ "className": {
7672
+ "types": [
7673
+ "string"
7674
+ ],
7675
+ "description": "Additional CSS classes"
7676
+ }
7677
+ }
7678
+ },
7679
+ "timeline": {
7680
+ "type": "timeline",
7681
+ "category": "display",
7682
+ "description": "Vertical timeline for displaying chronological events with status indicators",
7683
+ "suggestedFor": [
7684
+ "activity logs",
7685
+ "process tracking",
7686
+ "history views",
7687
+ "workflow steps"
7688
+ ],
7689
+ "typicalSize": "medium",
7690
+ "propsSchema": {
7691
+ "title": {
7692
+ "types": [
7693
+ "string"
7694
+ ],
7695
+ "description": "Timeline title"
7696
+ },
7697
+ "items": {
7698
+ "types": [
7699
+ "unknown"
7700
+ ],
7701
+ "description": "Timeline items"
7702
+ },
7703
+ "data": {
7704
+ "types": [
7705
+ "unknown"
7706
+ ],
7707
+ "description": "Schema-driven data"
7708
+ },
7709
+ "fields": {
7710
+ "types": [
7711
+ "unknown"
7712
+ ],
7713
+ "description": "Fields to display"
7714
+ },
7715
+ "itemActions": {
7716
+ "types": [
7717
+ "unknown"
7718
+ ],
7719
+ "description": "Actions per item"
7720
+ },
7721
+ "entity": {
7722
+ "types": [
7723
+ "string"
7724
+ ],
7725
+ "description": "Entity name for schema-driven auto-fetch"
7726
+ },
7727
+ "isLoading": {
7728
+ "types": [
7729
+ "boolean"
7730
+ ],
7731
+ "description": "Loading state"
7732
+ },
7733
+ "error": {
7734
+ "types": [
7735
+ "error"
7736
+ ],
7737
+ "description": "Error state"
7738
+ },
7739
+ "className": {
7740
+ "types": [
7741
+ "string"
7742
+ ],
7743
+ "description": "Additional CSS classes"
7744
+ }
7745
+ }
7746
+ },
7747
+ "media-gallery": {
7748
+ "type": "media-gallery",
7749
+ "category": "media",
7750
+ "description": "Grid gallery for images and media with lightbox, selection, and upload",
7751
+ "suggestedFor": [
7752
+ "photo galleries",
7753
+ "image management",
7754
+ "media libraries",
7755
+ "portfolio displays"
7756
+ ],
7757
+ "typicalSize": "medium",
7758
+ "propsSchema": {
7759
+ "title": {
7760
+ "types": [
7761
+ "string"
7762
+ ],
7763
+ "description": "Gallery title"
7764
+ },
7765
+ "items": {
7766
+ "types": [
7767
+ "unknown"
7768
+ ],
7769
+ "description": "Media items"
7770
+ },
7771
+ "data": {
7772
+ "types": [
7773
+ "unknown"
7774
+ ],
7775
+ "description": "Schema-driven data"
7776
+ },
7777
+ "columns": {
7778
+ "types": [
7779
+ "number"
7780
+ ],
7781
+ "description": "Column count"
7782
+ },
7783
+ "selectable": {
7784
+ "types": [
7785
+ "boolean"
7786
+ ],
7787
+ "description": "Enable item selection"
7788
+ },
7789
+ "selectedItems": {
7790
+ "types": [
7791
+ "unknown"
7792
+ ],
7793
+ "description": "Selected item IDs"
7794
+ },
7795
+ "onSelectionChange": {
7796
+ "types": [
7797
+ "function"
7798
+ ],
7799
+ "description": "Selection change callback"
7800
+ },
7801
+ "showUpload": {
7802
+ "types": [
7803
+ "boolean"
7804
+ ],
7805
+ "description": "Show upload button"
7806
+ },
7807
+ "actions": {
7808
+ "types": [
7809
+ "unknown"
7810
+ ],
7811
+ "description": "Actions"
7812
+ },
7813
+ "aspectRatio": {
7814
+ "types": [
7815
+ "string"
7816
+ ],
7817
+ "description": "Aspect ratio for thumbnails"
7818
+ },
7819
+ "entity": {
7820
+ "types": [
7821
+ "string"
7822
+ ],
7823
+ "description": "Entity name for schema-driven auto-fetch"
7824
+ },
7825
+ "isLoading": {
7826
+ "types": [
7827
+ "boolean"
7828
+ ],
7829
+ "description": "Loading state"
7830
+ },
7831
+ "error": {
7832
+ "types": [
7833
+ "error"
7834
+ ],
7835
+ "description": "Error state"
7836
+ },
7837
+ "className": {
7838
+ "types": [
7839
+ "string"
7840
+ ],
7841
+ "description": "Additional CSS classes"
7842
+ }
7843
+ }
7844
+ },
7845
+ "signature-pad": {
7846
+ "type": "signature-pad",
7847
+ "category": "form",
7848
+ "description": "Canvas-based signature capture pad with draw, clear, and confirm actions",
7849
+ "suggestedFor": [
7850
+ "form signing",
7851
+ "approval workflows",
7852
+ "document signing",
7853
+ "consent forms"
7854
+ ],
7855
+ "typicalSize": "small",
7856
+ "propsSchema": {
7857
+ "label": {
7858
+ "types": [
7859
+ "string"
7860
+ ],
7861
+ "description": "Label above the pad"
7862
+ },
7863
+ "helperText": {
7864
+ "types": [
7865
+ "string"
7866
+ ],
7867
+ "description": "Helper text"
7868
+ },
7869
+ "strokeColor": {
7870
+ "types": [
7871
+ "string"
7872
+ ],
7873
+ "description": "Stroke color"
7874
+ },
7875
+ "strokeWidth": {
7876
+ "types": [
7877
+ "number"
7878
+ ],
7879
+ "description": "Stroke width"
7880
+ },
7881
+ "height": {
7882
+ "types": [
7883
+ "number"
7884
+ ],
7885
+ "description": "Pad height"
7886
+ },
7887
+ "readOnly": {
7888
+ "types": [
7889
+ "boolean"
7890
+ ],
7891
+ "description": "Whether the pad is read-only"
7892
+ },
7893
+ "value": {
7894
+ "types": [
7895
+ "string"
7896
+ ],
7897
+ "description": "Existing signature image URL"
7898
+ },
7899
+ "onChange": {
7900
+ "types": [
7901
+ "function"
7902
+ ],
7903
+ "description": "Callback when signature changes"
7904
+ },
7905
+ "signEvent": {
7906
+ "types": [
7907
+ "string"
7908
+ ],
7909
+ "description": "Event to emit on sign"
7910
+ },
7911
+ "clearEvent": {
7912
+ "types": [
7913
+ "string"
7914
+ ],
7915
+ "description": "Event to emit on clear"
7916
+ },
7917
+ "entity": {
7918
+ "types": [
7919
+ "string"
7920
+ ],
7921
+ "description": "Entity name for schema-driven context"
7922
+ },
7923
+ "isLoading": {
7924
+ "types": [
7925
+ "boolean"
7926
+ ],
7927
+ "description": "Loading state"
7928
+ },
7929
+ "error": {
7930
+ "types": [
7931
+ "error"
7932
+ ],
7933
+ "description": "Error state"
7934
+ },
7935
+ "className": {
7936
+ "types": [
7937
+ "string"
7938
+ ],
7939
+ "description": "Additional CSS classes"
7940
+ }
7941
+ }
7942
+ },
7943
+ "document-viewer": {
7944
+ "type": "document-viewer",
7945
+ "category": "display",
7946
+ "description": "Document viewer for PDFs, text, HTML, and markdown with zoom and pagination",
7947
+ "suggestedFor": [
7948
+ "document management",
7949
+ "PDF viewing",
7950
+ "content preview",
7951
+ "report viewing"
7952
+ ],
7953
+ "typicalSize": "large",
7954
+ "propsSchema": {
7955
+ "title": {
7956
+ "types": [
7957
+ "string"
7958
+ ],
7959
+ "description": "Document title"
7960
+ },
7961
+ "src": {
7962
+ "types": [
7963
+ "string"
7964
+ ],
7965
+ "description": "Document URL (for PDF/external documents)"
7966
+ },
7967
+ "content": {
7968
+ "types": [
7969
+ "string"
7970
+ ],
7971
+ "description": "Document content (for text/html/markdown)"
7972
+ },
7973
+ "documentType": {
7974
+ "types": [
7975
+ "documenttype"
7976
+ ],
7977
+ "description": "Document type"
7978
+ },
7979
+ "currentPage": {
7980
+ "types": [
7981
+ "number"
7982
+ ],
7983
+ "description": "Current page (for multi-page documents)"
7984
+ },
7985
+ "totalPages": {
7986
+ "types": [
7987
+ "number"
7988
+ ],
7989
+ "description": "Total pages"
7990
+ },
7991
+ "height": {
7992
+ "types": [
7993
+ "number",
7994
+ "string"
7995
+ ],
7996
+ "description": "Viewer height"
7997
+ },
7998
+ "showToolbar": {
7999
+ "types": [
8000
+ "boolean"
8001
+ ],
8002
+ "description": "Show toolbar"
8003
+ },
8004
+ "showDownload": {
8005
+ "types": [
8006
+ "boolean"
8007
+ ],
8008
+ "description": "Show download button"
8009
+ },
8010
+ "showPrint": {
8011
+ "types": [
8012
+ "boolean"
8013
+ ],
8014
+ "description": "Show print button"
8015
+ },
8016
+ "actions": {
8017
+ "types": [
8018
+ "unknown"
8019
+ ],
8020
+ "description": "Actions"
8021
+ },
8022
+ "documents": {
8023
+ "types": [
8024
+ "unknown"
8025
+ ],
8026
+ "description": "Multiple documents (tabbed view)"
8027
+ },
8028
+ "entity": {
8029
+ "types": [
8030
+ "string"
8031
+ ],
8032
+ "description": "Entity name for schema-driven auto-fetch"
8033
+ },
8034
+ "isLoading": {
8035
+ "types": [
8036
+ "boolean"
8037
+ ],
8038
+ "description": "Loading state"
8039
+ },
8040
+ "error": {
8041
+ "types": [
8042
+ "error"
8043
+ ],
8044
+ "description": "Error state"
8045
+ },
8046
+ "className": {
8047
+ "types": [
8048
+ "string"
8049
+ ],
8050
+ "description": "Additional CSS classes"
8051
+ }
8052
+ }
8053
+ },
8054
+ "graph-canvas": {
8055
+ "type": "graph-canvas",
8056
+ "category": "visualization",
8057
+ "description": "Force-directed graph visualization for node-link data with interactive zoom, pan, and layout",
8058
+ "suggestedFor": [
8059
+ "knowledge graphs",
8060
+ "network visualization",
8061
+ "relationship mapping",
8062
+ "dependency graphs"
8063
+ ],
8064
+ "typicalSize": "large",
8065
+ "propsSchema": {
8066
+ "title": {
8067
+ "types": [
8068
+ "string"
8069
+ ],
8070
+ "description": "Graph title"
8071
+ },
8072
+ "nodes": {
8073
+ "types": [
8074
+ "unknown"
8075
+ ],
8076
+ "description": "Graph nodes"
8077
+ },
8078
+ "edges": {
8079
+ "types": [
8080
+ "unknown"
8081
+ ],
8082
+ "description": "Graph edges"
8083
+ },
8084
+ "height": {
8085
+ "types": [
8086
+ "number"
8087
+ ],
8088
+ "description": "Canvas height"
8089
+ },
8090
+ "showLabels": {
8091
+ "types": [
8092
+ "boolean"
8093
+ ],
8094
+ "description": "Show node labels"
8095
+ },
8096
+ "interactive": {
8097
+ "types": [
8098
+ "boolean"
8099
+ ],
8100
+ "description": "Enable zoom/pan"
8101
+ },
8102
+ "draggable": {
8103
+ "types": [
8104
+ "boolean"
8105
+ ],
8106
+ "description": "Enable node dragging"
8107
+ },
8108
+ "actions": {
8109
+ "types": [
8110
+ "unknown"
8111
+ ],
8112
+ "description": "Actions"
8113
+ },
8114
+ "onNodeClick": {
8115
+ "types": [
8116
+ "function"
8117
+ ],
8118
+ "description": "On node click"
8119
+ },
8120
+ "nodeClickEvent": {
8121
+ "types": [
8122
+ "string"
8123
+ ],
8124
+ "description": "Node click event"
8125
+ },
8126
+ "layout": {
8127
+ "types": [
8128
+ "string"
8129
+ ],
8130
+ "description": "Layout algorithm"
8131
+ },
8132
+ "entity": {
8133
+ "types": [
8134
+ "string"
8135
+ ],
8136
+ "description": "Entity name for schema-driven auto-fetch"
8137
+ },
8138
+ "isLoading": {
8139
+ "types": [
8140
+ "boolean"
8141
+ ],
8142
+ "description": "Loading state"
8143
+ },
8144
+ "error": {
8145
+ "types": [
8146
+ "error"
8147
+ ],
8148
+ "description": "Error state"
8149
+ },
8150
+ "className": {
8151
+ "types": [
8152
+ "string"
8153
+ ],
8154
+ "description": "Additional CSS classes"
8155
+ }
8156
+ }
8157
+ },
8158
+ "code-viewer": {
8159
+ "type": "code-viewer",
8160
+ "category": "display",
8161
+ "description": "Code and diff viewer with line numbers, copy, word-wrap, and multi-file tabs",
8162
+ "suggestedFor": [
8163
+ "code display",
8164
+ "diff viewing",
8165
+ "schema inspection",
8166
+ "log viewing"
8167
+ ],
8168
+ "typicalSize": "medium",
8169
+ "propsSchema": {
8170
+ "title": {
8171
+ "types": [
8172
+ "string"
8173
+ ],
8174
+ "description": "Viewer title"
8175
+ },
8176
+ "code": {
8177
+ "types": [
8178
+ "string"
8179
+ ],
8180
+ "description": "Code content"
8181
+ },
8182
+ "language": {
8183
+ "types": [
8184
+ "string"
8185
+ ],
8186
+ "description": "Language for display label"
8187
+ },
8188
+ "diff": {
8189
+ "types": [
8190
+ "unknown"
8191
+ ],
8192
+ "description": "Diff lines (for diff mode)"
8193
+ },
8194
+ "oldValue": {
8195
+ "types": [
8196
+ "string"
8197
+ ],
8198
+ "description": "Old value (for generating diff)"
8199
+ },
8200
+ "newValue": {
8201
+ "types": [
8202
+ "string"
8203
+ ],
8204
+ "description": "New value (for generating diff)"
8205
+ },
8206
+ "mode": {
8207
+ "types": [
8208
+ "codeviewermode"
8209
+ ],
8210
+ "description": "Display mode"
8211
+ },
8212
+ "showLineNumbers": {
8213
+ "types": [
8214
+ "boolean"
8215
+ ],
8216
+ "description": "Show line numbers"
8217
+ },
8218
+ "showCopy": {
8219
+ "types": [
8220
+ "boolean"
8221
+ ],
8222
+ "description": "Show copy button"
8223
+ },
8224
+ "wordWrap": {
8225
+ "types": [
8226
+ "boolean"
8227
+ ],
8228
+ "description": "Enable word wrap"
8229
+ },
8230
+ "maxHeight": {
8231
+ "types": [
8232
+ "number",
8233
+ "string"
8234
+ ],
8235
+ "description": "Max height before scrolling"
8236
+ },
8237
+ "files": {
8238
+ "types": [
8239
+ "unknown"
8240
+ ],
8241
+ "description": "Multiple files (tabbed view)"
8242
+ },
8243
+ "actions": {
8244
+ "types": [
8245
+ "unknown"
8246
+ ],
8247
+ "description": "Actions"
8248
+ },
8249
+ "entity": {
8250
+ "types": [
8251
+ "string"
8252
+ ],
8253
+ "description": "Entity name for schema-driven auto-fetch"
8254
+ },
8255
+ "isLoading": {
8256
+ "types": [
8257
+ "boolean"
8258
+ ],
8259
+ "description": "Loading state"
8260
+ },
8261
+ "error": {
8262
+ "types": [
8263
+ "error"
8264
+ ],
8265
+ "description": "Error state"
8266
+ },
8267
+ "className": {
8268
+ "types": [
8269
+ "string"
8270
+ ],
8271
+ "description": "Additional CSS classes"
8272
+ }
8273
+ }
8274
+ },
8275
+ "canvas-effect": {
8276
+ "type": "canvas-effect",
8277
+ "category": "game",
8278
+ "description": "CanvasEffect Component Renders animated visual effects as DOM overlays on the canvas. Maps combat action types to particle/flash effects that play at a specified position and auto-dismiss. Pattern: canvas-effect",
8279
+ "suggestedFor": [
8280
+ "canvas",
8281
+ "effect",
8282
+ "canvas effect"
8283
+ ],
8284
+ "typicalSize": "large",
8285
+ "propsSchema": {
8286
+ "actionType": {
8287
+ "types": [
8288
+ "combatactiontype"
8289
+ ],
8290
+ "description": "The type of combat action to visualise",
8291
+ "required": true
8292
+ },
8293
+ "x": {
8294
+ "types": [
8295
+ "number"
8296
+ ],
8297
+ "description": "Screen-space X position (center of the effect)",
8298
+ "required": true
8299
+ },
8300
+ "y": {
8301
+ "types": [
8302
+ "number"
8303
+ ],
8304
+ "description": "Screen-space Y position (center of the effect)",
8305
+ "required": true
8306
+ },
8307
+ "duration": {
8308
+ "types": [
8309
+ "number"
8310
+ ],
8311
+ "description": "Duration in ms before auto-dismiss (default 2000 for canvas, 800 for emoji)"
8312
+ },
8313
+ "intensity": {
8314
+ "types": [
8315
+ "number"
8316
+ ],
8317
+ "description": "Optional intensity multiplier (1 = normal, 2 = double size/brightness)"
8318
+ },
8319
+ "onComplete": {
8320
+ "types": [
8321
+ "function"
8322
+ ],
8323
+ "description": "Callback when the effect animation completes"
8324
+ },
8325
+ "className": {
8326
+ "types": [
8327
+ "string"
8328
+ ],
8329
+ "description": "Additional CSS classes"
8330
+ },
8331
+ "isLoading": {
8332
+ "types": [
8333
+ "boolean"
8334
+ ],
8335
+ "description": "Loading state indicator"
8336
+ },
8337
+ "error": {
8338
+ "types": [
8339
+ "error"
8340
+ ],
8341
+ "description": "Error state"
8342
+ },
8343
+ "effectSpriteUrl": {
8344
+ "types": [
8345
+ "string"
8346
+ ],
8347
+ "description": "--- Remote asset loading ---"
8348
+ },
8349
+ "assetBaseUrl": {
8350
+ "types": [
8351
+ "string"
8352
+ ],
8353
+ "description": "Base URL for remote assets. Prepended to relative effectSpriteUrl paths."
8354
+ },
8355
+ "assetManifest": {
8356
+ "types": [
8357
+ "effectassetmanifest"
8358
+ ],
8359
+ "description": "Full effect asset manifest for the sprite particle engine. When provided, enables the canvas-based particle system."
8360
+ },
8361
+ "width": {
8362
+ "types": [
8363
+ "number"
8364
+ ],
8365
+ "description": "Canvas width (default 400)"
8366
+ },
8367
+ "height": {
8368
+ "types": [
8369
+ "number"
8370
+ ],
8371
+ "description": "Canvas height (default 300)"
8372
+ }
8373
+ }
8374
+ },
8375
+ "isometric-canvas": {
8376
+ "type": "isometric-canvas",
8377
+ "category": "game",
8378
+ "description": "IsometricCanvas Core isometric game renderer. Maps to the `game-canvas` pattern. Adapted from projects/trait-wars/design-system/organisms/IsometricGameCanvas.tsx with full closed-circuit pattern compliance (className, isLoading, error, entity). Architecture: - 2:1 diamond isometric projection - Painter's algorithm (tile → feature → unit depth sort) - Camera pan/zoom with lerp - Off-screen culling - Minimap on separate canvas - Sprite sheet animation via resolveUnitFrame - Event bus–friendly handlers (onTileClick, onUnitClick, etc.)",
8379
+ "suggestedFor": [
8380
+ "isometric",
8381
+ "canvas",
8382
+ "isometric canvas"
8383
+ ],
8384
+ "typicalSize": "large",
8385
+ "propsSchema": {
8386
+ "className": {
8387
+ "types": [
8388
+ "string"
8389
+ ],
8390
+ "description": "--- Closed-circuit props (MANDATORY) ---"
8391
+ },
8392
+ "isLoading": {
8393
+ "types": [
8394
+ "boolean"
8395
+ ],
8396
+ "description": "Loading state indicator"
8397
+ },
8398
+ "error": {
8399
+ "types": [
8400
+ "error"
8401
+ ],
8402
+ "description": "Error state"
8403
+ },
8404
+ "entity": {
8405
+ "types": [
8406
+ "string"
8407
+ ],
8408
+ "description": "Entity name for schema-driven auto-fetch"
8409
+ },
8410
+ "tiles": {
8411
+ "types": [
8412
+ "array"
8413
+ ],
8414
+ "description": "--- Grid data ---"
8415
+ },
8416
+ "units": {
8417
+ "types": [
8418
+ "array"
8419
+ ],
8420
+ "description": "Array of units on the board"
8421
+ },
8422
+ "features": {
8423
+ "types": [
8424
+ "array"
8425
+ ],
8426
+ "description": "Array of features (resources, portals, buildings, etc.)"
8427
+ },
8428
+ "selectedUnitId": {
8429
+ "types": [
8430
+ "string"
8431
+ ],
8432
+ "description": "--- Interaction state ---"
8433
+ },
8434
+ "validMoves": {
8435
+ "types": [
8436
+ "array"
8437
+ ],
8438
+ "description": "Valid move positions (shown as pulsing green highlights)"
8439
+ },
8440
+ "attackTargets": {
8441
+ "types": [
8442
+ "array"
8443
+ ],
8444
+ "description": "Attack target positions (shown as pulsing red highlights)"
8445
+ },
8446
+ "hoveredTile": {
8447
+ "types": [
8448
+ "object"
8449
+ ],
8450
+ "description": "Hovered tile position"
8451
+ },
8452
+ "onTileClick": {
8453
+ "types": [
8454
+ "function"
8455
+ ],
8456
+ "description": "--- Event handlers ---"
8457
+ },
8458
+ "onUnitClick": {
8459
+ "types": [
8460
+ "function"
8461
+ ],
8462
+ "description": "Unit click handler"
8463
+ },
8464
+ "onTileHover": {
8465
+ "types": [
8466
+ "function"
8467
+ ],
8468
+ "description": "Tile hover handler"
8469
+ },
8470
+ "onTileLeave": {
8471
+ "types": [
8472
+ "function"
8473
+ ],
8474
+ "description": "Tile leave handler"
8475
+ },
8476
+ "scale": {
8477
+ "types": [
8478
+ "number"
8479
+ ],
8480
+ "description": "--- Rendering options ---"
8481
+ },
8482
+ "debug": {
8483
+ "types": [
8484
+ "boolean"
8485
+ ],
8486
+ "description": "Show debug grid lines and coordinates"
8487
+ },
8488
+ "backgroundImage": {
8489
+ "types": [
8490
+ "string"
8491
+ ],
8492
+ "description": "Background image URL tiled behind the isometric grid"
8493
+ },
8494
+ "showMinimap": {
8495
+ "types": [
8496
+ "boolean"
8497
+ ],
8498
+ "description": "Toggle minimap overlay"
8499
+ },
8500
+ "enableCamera": {
8501
+ "types": [
8502
+ "boolean"
8503
+ ],
8504
+ "description": "Enable camera pan/zoom controls"
8505
+ },
8506
+ "unitScale": {
8507
+ "types": [
8508
+ "number"
8509
+ ],
8510
+ "description": "Extra scale multiplier for unit draw size. 1 = default."
8511
+ },
8512
+ "getTerrainSprite": {
8513
+ "types": [
8514
+ "function"
8515
+ ],
8516
+ "description": "--- Asset resolution (project-agnostic) ---"
8517
+ },
8518
+ "getFeatureSprite": {
8519
+ "types": [
8520
+ "function"
8521
+ ],
8522
+ "description": "Resolve feature sprite URL from feature type key"
8523
+ },
8524
+ "getUnitSprite": {
8525
+ "types": [
8526
+ "function"
8527
+ ],
8528
+ "description": "Resolve unit static sprite URL"
8529
+ },
8530
+ "resolveUnitFrame": {
8531
+ "types": [
8532
+ "function"
8533
+ ],
8534
+ "description": "Resolve animated sprite sheet frame for a unit"
8535
+ },
8536
+ "effectSpriteUrls": {
8537
+ "types": [
8538
+ "array"
8539
+ ],
8540
+ "description": "Additional sprite URLs to preload (e.g., effect sprites)"
8541
+ },
8542
+ "onDrawEffects": {
8543
+ "types": [
8544
+ "function"
8545
+ ],
8546
+ "description": "Callback to draw canvas effects after units"
8547
+ },
8548
+ "hasActiveEffects": {
8549
+ "types": [
8550
+ "boolean"
8551
+ ],
8552
+ "description": "Whether there are active effects — keeps RAF loop alive"
8553
+ },
8554
+ "assetBaseUrl": {
8555
+ "types": [
8556
+ "string"
8557
+ ],
8558
+ "description": "--- Remote asset loading ---"
8559
+ },
8560
+ "assetManifest": {
8561
+ "types": [
8562
+ "object"
8563
+ ],
8564
+ "description": "Manifest mapping entity keys to relative sprite paths. Combined with assetBaseUrl to produce full URLs. Used as a fallback when inline URLs and callbacks don't resolve."
8565
+ }
8566
+ }
8567
+ },
8568
+ "battle-template": {
8569
+ "type": "battle-template",
8570
+ "category": "template",
8571
+ "description": "BattleTemplate Generalized tactical battle template composing IsometricCanvas from almadar-ui. Provides turn-based phase management, movement animation, valid-move/attack-target calculation, screen shake/flash, and a game-over overlay. Game-specific UI (combat log, trait viewer, damage popups, etc.) is injected via render-prop slots so this template remains project-agnostic.",
8572
+ "suggestedFor": [
8573
+ "battle",
8574
+ "template",
8575
+ "battle template"
8576
+ ],
8577
+ "typicalSize": "full",
8578
+ "propsSchema": {
8579
+ "initialUnits": {
8580
+ "types": [
8581
+ "array"
8582
+ ],
8583
+ "description": "Initial units for the battle",
8584
+ "required": true
8585
+ },
8586
+ "tiles": {
8587
+ "types": [
8588
+ "array"
8589
+ ],
8590
+ "description": "Isometric tiles (pre-resolved with terrainSprite)",
8591
+ "required": true
8592
+ },
8593
+ "scale": {
8594
+ "types": [
8595
+ "number"
8596
+ ],
8597
+ "description": "Canvas render scale"
8598
+ },
8599
+ "boardWidth": {
8600
+ "types": [
8601
+ "number"
8602
+ ],
8603
+ "description": "Board width for bounds checking"
8604
+ },
8605
+ "boardHeight": {
8606
+ "types": [
8607
+ "number"
8608
+ ],
8609
+ "description": "Board height for bounds checking"
8610
+ },
8611
+ "assetManifest": {
8612
+ "types": [
8613
+ "object"
8614
+ ],
8615
+ "description": "Asset manifest for IsometricCanvas"
8616
+ },
8617
+ "backgroundImage": {
8618
+ "types": [
8619
+ "string"
8620
+ ],
8621
+ "description": "Background image URL for canvas"
8622
+ },
8623
+ "unitScale": {
8624
+ "types": [
8625
+ "number"
8626
+ ],
8627
+ "description": "Unit draw-size multiplier"
8628
+ },
8629
+ "header": {
8630
+ "types": [
8631
+ "function"
8632
+ ],
8633
+ "description": "-- Slots --"
8634
+ },
8635
+ "sidebar": {
8636
+ "types": [
8637
+ "function"
8638
+ ],
8639
+ "description": "Sidebar content (combat log, unit roster, etc.)"
8640
+ },
8641
+ "actions": {
8642
+ "types": [
8643
+ "function"
8644
+ ],
8645
+ "description": "Floating action buttons"
8646
+ },
8647
+ "overlay": {
8648
+ "types": [
8649
+ "function"
8650
+ ],
8651
+ "description": "Floating overlays above the canvas (damage popups, tooltips)"
8652
+ },
8653
+ "gameOverOverlay": {
8654
+ "types": [
8655
+ "function"
8656
+ ],
8657
+ "description": "Game-over screen overlay"
8658
+ },
8659
+ "features": {
8660
+ "types": [
8661
+ "array"
8662
+ ],
8663
+ "description": "-- Obstacle features --"
8664
+ },
8665
+ "onAttack": {
8666
+ "types": [
8667
+ "function"
8668
+ ],
8669
+ "description": "-- Callbacks --"
8670
+ },
8671
+ "onGameEnd": {
8672
+ "types": [
8673
+ "function"
8674
+ ],
8675
+ "description": "Called when battle ends"
8676
+ },
8677
+ "onUnitMove": {
8678
+ "types": [
8679
+ "function"
8680
+ ],
8681
+ "description": "Called after a unit moves"
8682
+ },
8683
+ "calculateDamage": {
8684
+ "types": [
8685
+ "function"
8686
+ ],
8687
+ "description": "Custom combat damage calculator"
8688
+ },
8689
+ "onDrawEffects": {
8690
+ "types": [
8691
+ "function"
8692
+ ],
8693
+ "description": "-- Canvas pass-through --"
8694
+ },
8695
+ "hasActiveEffects": {
8696
+ "types": [
8697
+ "boolean"
8698
+ ],
8699
+ "description": "hasActiveEffects prop"
8700
+ },
8701
+ "effectSpriteUrls": {
8702
+ "types": [
8703
+ "array"
8704
+ ],
8705
+ "description": "effectSpriteUrls prop"
8706
+ },
8707
+ "resolveUnitFrame": {
8708
+ "types": [
8709
+ "function"
8710
+ ],
8711
+ "description": "resolveUnitFrame prop"
8712
+ },
8713
+ "className": {
8714
+ "types": [
8715
+ "string"
8716
+ ],
8717
+ "description": "className prop"
8718
+ }
8719
+ }
8720
+ },
8721
+ "castle-template": {
8722
+ "type": "castle-template",
8723
+ "category": "template",
8724
+ "description": "CastleTemplate Generalized castle / base-management template composing IsometricCanvas from almadar-ui. Renders an isometric courtyard/base view and exposes a side-panel area via slots for game-specific UI (building details, recruitment, garrison).",
8725
+ "suggestedFor": [
8726
+ "castle",
8727
+ "template",
8728
+ "castle template"
8729
+ ],
8730
+ "typicalSize": "full",
8731
+ "propsSchema": {
8732
+ "tiles": {
8733
+ "types": [
8734
+ "array"
8735
+ ],
8736
+ "description": "Isometric tiles (pre-resolved with terrainSprite)",
8737
+ "required": true
8738
+ },
8739
+ "features": {
8740
+ "types": [
8741
+ "array"
8742
+ ],
8743
+ "description": "Building features rendered on the grid"
8744
+ },
8745
+ "units": {
8746
+ "types": [
8747
+ "array"
8748
+ ],
8749
+ "description": "Garrison / stationed units on the grid"
8750
+ },
8751
+ "scale": {
8752
+ "types": [
8753
+ "number"
8754
+ ],
8755
+ "description": "Canvas render scale"
8756
+ },
8757
+ "assetManifest": {
8758
+ "types": [
8759
+ "object"
8760
+ ],
8761
+ "description": "Asset manifest for IsometricCanvas"
8762
+ },
8763
+ "backgroundImage": {
8764
+ "types": [
8765
+ "string"
8766
+ ],
8767
+ "description": "Background image URL"
8768
+ },
8769
+ "header": {
8770
+ "types": [
8771
+ "function"
8772
+ ],
8773
+ "description": "-- Slots --"
8774
+ },
8775
+ "sidePanel": {
8776
+ "types": [
8777
+ "function"
8778
+ ],
8779
+ "description": "Side panel content (buildings list, recruit tab, garrison tab)"
8780
+ },
8781
+ "overlay": {
8782
+ "types": [
8783
+ "function"
8784
+ ],
8785
+ "description": "Canvas overlay (hover tooltips, etc.)"
8786
+ },
8787
+ "footer": {
8788
+ "types": [
8789
+ "function"
8790
+ ],
8791
+ "description": "Bottom bar (income summary, etc.)"
8792
+ },
8793
+ "onFeatureClick": {
8794
+ "types": [
8795
+ "function"
8796
+ ],
8797
+ "description": "-- Callbacks --"
8798
+ },
8799
+ "onUnitClick": {
8800
+ "types": [
8801
+ "function"
8802
+ ],
8803
+ "description": "Called when a unit is clicked"
8804
+ },
8805
+ "onTileClick": {
8806
+ "types": [
8807
+ "function"
8808
+ ],
8809
+ "description": "Called when any tile is clicked"
8810
+ },
8811
+ "className": {
8812
+ "types": [
8813
+ "string"
8814
+ ],
8815
+ "description": "className prop"
8816
+ }
8817
+ }
8818
+ },
8819
+ "world-map-template": {
8820
+ "type": "world-map-template",
8821
+ "category": "template",
8822
+ "description": "WorldMapTemplate Generalized strategic world-map template composing IsometricCanvas from almadar-ui. Renders an isometric hex/iso map with hero selection, movement animation, and encounter callbacks. Game-specific panels (hero detail, hero lists, resource bars) are injected via render-prop slots.",
8823
+ "suggestedFor": [
8824
+ "world",
8825
+ "map",
8826
+ "template",
8827
+ "world map template"
8828
+ ],
8829
+ "typicalSize": "full",
8830
+ "propsSchema": {
8831
+ "hexes": {
8832
+ "types": [
8833
+ "array"
8834
+ ],
8835
+ "description": "All map hexes (with pre-resolved terrain sprites)",
8836
+ "required": true
8837
+ },
8838
+ "heroes": {
8839
+ "types": [
8840
+ "array"
8841
+ ],
8842
+ "description": "Heroes on the map",
8843
+ "required": true
8844
+ },
8845
+ "features": {
8846
+ "types": [
8847
+ "array"
8848
+ ],
8849
+ "description": "Features rendered on tiles"
8850
+ },
8851
+ "selectedHeroId": {
8852
+ "types": [
8853
+ "string"
8854
+ ],
8855
+ "description": "Currently selected hero ID"
8856
+ },
8857
+ "scale": {
8858
+ "types": [
8859
+ "number"
8860
+ ],
8861
+ "description": "Canvas render scale"
8862
+ },
8863
+ "unitScale": {
8864
+ "types": [
8865
+ "number"
8866
+ ],
8867
+ "description": "Unit draw-size multiplier"
8868
+ },
8869
+ "assetManifest": {
8870
+ "types": [
8871
+ "object"
8872
+ ],
8873
+ "description": "Asset manifest for IsometricCanvas"
8874
+ },
8875
+ "backgroundImage": {
8876
+ "types": [
8877
+ "string"
8878
+ ],
8879
+ "description": "Background image URL"
8880
+ },
8881
+ "allowMoveAllHeroes": {
8882
+ "types": [
8883
+ "boolean"
8884
+ ],
8885
+ "description": "Allow selecting / moving ALL heroes (including enemy). For testing."
8886
+ },
8887
+ "isInRange": {
8888
+ "types": [
8889
+ "function"
8890
+ ],
8891
+ "description": "Custom movement range validator"
8892
+ },
8893
+ "header": {
8894
+ "types": [
8895
+ "function"
8896
+ ],
8897
+ "description": "-- Slots --"
8898
+ },
8899
+ "sidePanel": {
8900
+ "types": [
8901
+ "function"
8902
+ ],
8903
+ "description": "Side panel (hero detail, hero lists, etc.)"
8904
+ },
8905
+ "overlay": {
8906
+ "types": [
8907
+ "function"
8908
+ ],
8909
+ "description": "Canvas overlay (tooltips, popups)"
8910
+ },
8911
+ "footer": {
8912
+ "types": [
8913
+ "function"
8914
+ ],
8915
+ "description": "Footer"
8916
+ },
8917
+ "onHeroSelect": {
8918
+ "types": [
8919
+ "function"
8920
+ ],
8921
+ "description": "-- Callbacks --"
8922
+ },
8923
+ "onHeroMove": {
8924
+ "types": [
8925
+ "function"
8926
+ ],
8927
+ "description": "onHeroMove prop"
8928
+ },
8929
+ "onBattleEncounter": {
8930
+ "types": [
8931
+ "function"
8932
+ ],
8933
+ "description": "Called when hero clicks an enemy hero tile"
8934
+ },
8935
+ "onFeatureEnter": {
8936
+ "types": [
8937
+ "function"
8938
+ ],
8939
+ "description": "Called when hero enters a feature hex (castle, resource, etc.)"
8940
+ },
8941
+ "effectSpriteUrls": {
8942
+ "types": [
8943
+ "array"
8944
+ ],
8945
+ "description": "-- Canvas pass-through --"
8946
+ },
8947
+ "resolveUnitFrame": {
8948
+ "types": [
8949
+ "function"
8950
+ ],
8951
+ "description": "resolveUnitFrame prop"
8952
+ },
8953
+ "className": {
8954
+ "types": [
8955
+ "string"
8956
+ ],
8957
+ "description": "className prop"
8958
+ }
8959
+ }
8960
+ },
8961
+ "heading": {
8962
+ "type": "heading",
8963
+ "category": "component",
8964
+ "description": "Alias for typography — Typography Atom Component Text elements following the KFlow design system with theme-aware styling.",
8965
+ "suggestedFor": [
8966
+ "typography"
8967
+ ],
8968
+ "typicalSize": "small",
8969
+ "propsSchema": {
8970
+ "variant": {
8971
+ "types": [
8972
+ "typographyvariant"
8973
+ ],
8974
+ "description": "Typography variant"
8975
+ },
8976
+ "level": {
8977
+ "types": [
8978
+ "number"
8979
+ ],
8980
+ "description": "Heading level (1-6) - alternative to variant for headings"
8981
+ },
8982
+ "color": {
8983
+ "types": [
8984
+ "string"
8985
+ ],
8986
+ "description": "Text color"
8987
+ },
8988
+ "align": {
8989
+ "types": [
8990
+ "string"
8991
+ ],
8992
+ "description": "Text alignment"
8993
+ },
8994
+ "weight": {
8995
+ "types": [
8996
+ "string"
8997
+ ],
8998
+ "description": "Font weight override"
8999
+ },
9000
+ "size": {
9001
+ "types": [
9002
+ "typographysize"
9003
+ ],
9004
+ "description": "Font size override"
9005
+ },
9006
+ "truncate": {
9007
+ "types": [
9008
+ "boolean"
9009
+ ],
9010
+ "description": "Truncate with ellipsis (single line)"
9011
+ },
9012
+ "overflow": {
9013
+ "types": [
9014
+ "string"
9015
+ ],
9016
+ "description": "Overflow handling mode"
9017
+ },
9018
+ "as": {
9019
+ "types": [
9020
+ "unknown"
9021
+ ],
9022
+ "description": "Custom HTML element"
9023
+ },
9024
+ "id": {
9025
+ "types": [
9026
+ "string"
9027
+ ],
9028
+ "description": "HTML id attribute"
9029
+ },
9030
+ "className": {
9031
+ "types": [
9032
+ "string"
9033
+ ],
9034
+ "description": "Additional class names"
9035
+ },
9036
+ "style": {
9037
+ "types": [
9038
+ "object"
9039
+ ],
9040
+ "description": "Inline style"
9041
+ },
9042
+ "content": {
9043
+ "types": [
9044
+ "node"
9045
+ ],
9046
+ "description": "Text content (alternative to children)"
9047
+ },
9048
+ "children": {
9049
+ "types": [
9050
+ "node"
9051
+ ],
9052
+ "description": "Children elements"
9053
+ }
9054
+ }
9055
+ },
9056
+ "text": {
9057
+ "type": "text",
9058
+ "category": "component",
9059
+ "description": "Alias for typography — Typography Atom Component Text elements following the KFlow design system with theme-aware styling.",
9060
+ "suggestedFor": [
9061
+ "typography"
9062
+ ],
9063
+ "typicalSize": "small",
9064
+ "propsSchema": {
9065
+ "variant": {
9066
+ "types": [
9067
+ "typographyvariant"
9068
+ ],
9069
+ "description": "Typography variant"
9070
+ },
9071
+ "level": {
9072
+ "types": [
9073
+ "number"
9074
+ ],
9075
+ "description": "Heading level (1-6) - alternative to variant for headings"
9076
+ },
9077
+ "color": {
9078
+ "types": [
9079
+ "string"
9080
+ ],
9081
+ "description": "Text color"
9082
+ },
9083
+ "align": {
9084
+ "types": [
9085
+ "string"
9086
+ ],
9087
+ "description": "Text alignment"
9088
+ },
9089
+ "weight": {
9090
+ "types": [
9091
+ "string"
9092
+ ],
9093
+ "description": "Font weight override"
9094
+ },
9095
+ "size": {
9096
+ "types": [
9097
+ "typographysize"
9098
+ ],
9099
+ "description": "Font size override"
9100
+ },
9101
+ "truncate": {
9102
+ "types": [
9103
+ "boolean"
9104
+ ],
9105
+ "description": "Truncate with ellipsis (single line)"
9106
+ },
9107
+ "overflow": {
9108
+ "types": [
9109
+ "string"
9110
+ ],
9111
+ "description": "Overflow handling mode"
9112
+ },
9113
+ "as": {
9114
+ "types": [
9115
+ "unknown"
9116
+ ],
9117
+ "description": "Custom HTML element"
9118
+ },
9119
+ "id": {
9120
+ "types": [
9121
+ "string"
9122
+ ],
9123
+ "description": "HTML id attribute"
9124
+ },
9125
+ "className": {
9126
+ "types": [
9127
+ "string"
9128
+ ],
9129
+ "description": "Additional class names"
9130
+ },
9131
+ "style": {
9132
+ "types": [
9133
+ "object"
9134
+ ],
9135
+ "description": "Inline style"
9136
+ },
9137
+ "content": {
9138
+ "types": [
9139
+ "node"
9140
+ ],
9141
+ "description": "Text content (alternative to children)"
9142
+ },
9143
+ "children": {
9144
+ "types": [
9145
+ "node"
9146
+ ],
9147
+ "description": "Children elements"
9148
+ }
9149
+ }
7805
9150
  }
7806
9151
  },
7807
9152
  "categories": [
@@ -7818,6 +9163,8 @@
7818
9163
  "debug",
7819
9164
  "meta",
7820
9165
  "component",
7821
- "template"
9166
+ "template",
9167
+ "visualization",
9168
+ "media"
7822
9169
  ]
7823
9170
  }