@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.
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // src/patterns-registry.json
2
2
  var patterns_registry_default = {
3
3
  version: "1.0.0",
4
- exportedAt: "2026-02-09T10:45:55.417Z",
4
+ exportedAt: "2026-02-10T15:35:56.769Z",
5
5
  patterns: {
6
6
  "entity-table": {
7
7
  type: "entity-table",
@@ -230,12 +230,6 @@ var patterns_registry_default = {
230
230
  ],
231
231
  description: "Data array - primary prop for data"
232
232
  },
233
- type: {
234
- types: [
235
- "string"
236
- ],
237
- description: "Entity type name for display"
238
- },
239
233
  isLoading: {
240
234
  types: [
241
235
  "boolean"
@@ -338,6 +332,12 @@ var patterns_registry_default = {
338
332
  "string"
339
333
  ],
340
334
  description: 'Query singleton binding for filter/sort state. When provided, syncs with the query singleton for filtering and sorting. Example: "@TaskQuery"'
335
+ },
336
+ entityType: {
337
+ types: [
338
+ "string"
339
+ ],
340
+ description: "Entity type name for display"
341
341
  }
342
342
  }
343
343
  },
@@ -882,62 +882,188 @@ var patterns_registry_default = {
882
882
  "form-section": {
883
883
  type: "form-section",
884
884
  category: "form",
885
- description: "Group of related input fields",
885
+ description: "Alias for form \u2014 Complete form with fields and actions",
886
886
  suggestedFor: [
887
887
  "create forms",
888
888
  "edit forms",
889
- "settings"
889
+ "data entry"
890
890
  ],
891
- typicalSize: "small",
891
+ typicalSize: "medium",
892
892
  propsSchema: {
893
+ children: {
894
+ types: [
895
+ "node"
896
+ ],
897
+ description: "Form fields (traditional React children)"
898
+ },
899
+ onSubmit: {
900
+ types: [
901
+ "function",
902
+ "string"
903
+ ],
904
+ description: "Submit handler - receives form data, or event name string for trait dispatch"
905
+ },
906
+ onCancel: {
907
+ types: [
908
+ "function",
909
+ "string"
910
+ ],
911
+ description: "Cancel handler - function or event name string for trait dispatch"
912
+ },
913
+ layout: {
914
+ types: [
915
+ "string"
916
+ ],
917
+ description: "Form layout"
918
+ },
919
+ gap: {
920
+ types: [
921
+ "string"
922
+ ],
923
+ description: "Gap between fields"
924
+ },
925
+ className: {
926
+ types: [
927
+ "string"
928
+ ],
929
+ description: "Additional CSS classes"
930
+ },
931
+ entity: {
932
+ types: [
933
+ "string"
934
+ ],
935
+ description: "Schema-based props"
936
+ },
937
+ mode: {
938
+ types: [
939
+ "string"
940
+ ],
941
+ description: "Form mode - 'create' for new records, 'edit' for updating existing"
942
+ },
943
+ fields: {
944
+ types: [
945
+ "unknown"
946
+ ],
947
+ description: "Fields definition (schema format) - accepts readonly for generated const arrays"
948
+ },
949
+ initialData: {
950
+ types: [
951
+ "object",
952
+ "unknown"
953
+ ],
954
+ description: "Initial form data"
955
+ },
956
+ isLoading: {
957
+ types: [
958
+ "boolean"
959
+ ],
960
+ description: "Loading state"
961
+ },
962
+ error: {
963
+ types: [
964
+ "error"
965
+ ],
966
+ description: "Error state"
967
+ },
968
+ submitLabel: {
969
+ types: [
970
+ "string"
971
+ ],
972
+ description: "Submit button label"
973
+ },
974
+ cancelLabel: {
975
+ types: [
976
+ "string"
977
+ ],
978
+ description: "Cancel button label (if provided, shows cancel button)"
979
+ },
980
+ showCancel: {
981
+ types: [
982
+ "boolean"
983
+ ],
984
+ description: "Show cancel button (defaults to true for schema forms)"
985
+ },
893
986
  title: {
894
987
  types: [
895
988
  "string"
896
989
  ],
897
- description: "Section title"
990
+ description: "Form title (used by ModalSlot to extract title)"
898
991
  },
899
- description: {
992
+ submitEvent: {
993
+ types: [
994
+ "string"
995
+ ],
996
+ description: "Event dispatch props (for trait state machine integration)"
997
+ },
998
+ cancelEvent: {
900
999
  types: [
901
1000
  "string"
902
1001
  ],
903
- description: "Section description"
1002
+ description: "Event to dispatch on cancel (defaults to 'CANCEL')"
904
1003
  },
905
- children: {
1004
+ relationsData: {
906
1005
  types: [
907
- "node"
1006
+ "object"
908
1007
  ],
909
- description: "Form fields",
910
- required: true
1008
+ description: "Relation data props"
1009
+ },
1010
+ relationsLoading: {
1011
+ types: [
1012
+ "object"
1013
+ ],
1014
+ description: "Loading state for relation data: { fieldName: boolean }"
911
1015
  },
912
- collapsible: {
1016
+ conditionalFields: {
913
1017
  types: [
1018
+ "object",
914
1019
  "boolean"
915
1020
  ],
916
- description: "Collapsible"
1021
+ description: "Inspection form extensions"
917
1022
  },
918
- defaultCollapsed: {
1023
+ hiddenCalculations: {
919
1024
  types: [
1025
+ "array",
920
1026
  "boolean"
921
1027
  ],
922
- description: "Default collapsed state"
1028
+ description: "Hidden calculations that emit GLOBAL_VARIABLE_SET on field change (boolean true means enabled but config loaded separately)"
923
1029
  },
924
- card: {
1030
+ violationTriggers: {
925
1031
  types: [
1032
+ "array",
926
1033
  "boolean"
927
1034
  ],
928
- description: "Use card wrapper"
1035
+ description: "Violation conditions that emit VIOLATION_DETECTED when met (boolean true means enabled but config loaded separately)"
929
1036
  },
930
- columns: {
1037
+ evaluationContext: {
931
1038
  types: [
932
- "number"
1039
+ "formevaluationcontext",
1040
+ "object"
933
1041
  ],
934
- description: "Grid columns for fields"
1042
+ description: "Context for S-expression evaluation - accepts flexible types from generated code"
935
1043
  },
936
- className: {
1044
+ sections: {
1045
+ types: [
1046
+ "array"
1047
+ ],
1048
+ description: "Nested form sections with optional conditions"
1049
+ },
1050
+ onFieldChange: {
1051
+ types: [
1052
+ "function"
1053
+ ],
1054
+ description: "Callback when any field value changes"
1055
+ },
1056
+ configPath: {
937
1057
  types: [
938
1058
  "string"
939
1059
  ],
940
- description: "className prop"
1060
+ description: "Config path for form configuration (schema-driven)"
1061
+ },
1062
+ repeatable: {
1063
+ types: [
1064
+ "boolean"
1065
+ ],
1066
+ description: "Whether the form supports repeatable entries"
941
1067
  }
942
1068
  }
943
1069
  },
@@ -2536,110 +2662,6 @@ var patterns_registry_default = {
2536
2662
  }
2537
2663
  }
2538
2664
  },
2539
- "game-canvas": {
2540
- type: "game-canvas",
2541
- category: "game",
2542
- description: "Main game rendering area (canvas)",
2543
- suggestedFor: [
2544
- "game page",
2545
- "main gameplay"
2546
- ],
2547
- typicalSize: "large",
2548
- propsSchema: {
2549
- renderEntities: {
2550
- types: [
2551
- "array"
2552
- ],
2553
- description: "Entity type names to render (optional filter)"
2554
- },
2555
- renderers: {
2556
- types: [
2557
- "object"
2558
- ],
2559
- description: "Rendering functions per entity type"
2560
- },
2561
- renderer: {
2562
- types: [
2563
- "string"
2564
- ],
2565
- description: "Renderer type hint from schema (e.g., 'phaser', 'canvas'). Currently ignored - component uses Canvas2D. Reserved for future multi-renderer support."
2566
- },
2567
- background: {
2568
- types: [
2569
- "string"
2570
- ],
2571
- description: "Background color or gradient"
2572
- },
2573
- width: {
2574
- types: [
2575
- "number",
2576
- "string"
2577
- ],
2578
- description: "Canvas width in pixels or 'full' for responsive"
2579
- },
2580
- height: {
2581
- types: [
2582
- "number",
2583
- "string"
2584
- ],
2585
- description: "Canvas height in pixels or 'auto' for aspect ratio"
2586
- },
2587
- aspectRatio: {
2588
- types: [
2589
- "string"
2590
- ],
2591
- description: "Aspect ratio (e.g., '16:9', '4:3')"
2592
- },
2593
- cameraOffset: {
2594
- types: [
2595
- "object"
2596
- ],
2597
- description: "Camera offset for scrolling"
2598
- },
2599
- debug: {
2600
- types: [
2601
- "boolean"
2602
- ],
2603
- description: "Debug mode shows hitboxes and entity info"
2604
- },
2605
- className: {
2606
- types: [
2607
- "string"
2608
- ],
2609
- description: "Additional CSS classes"
2610
- },
2611
- onClick: {
2612
- types: [
2613
- "function"
2614
- ],
2615
- description: "Click handler for canvas"
2616
- },
2617
- enableInput: {
2618
- types: [
2619
- "boolean"
2620
- ],
2621
- description: "Enable keyboard input handling (updates Input entity)"
2622
- },
2623
- inputBindings: {
2624
- types: [
2625
- "array"
2626
- ],
2627
- description: "Custom input key bindings"
2628
- },
2629
- collisions: {
2630
- types: [
2631
- "array"
2632
- ],
2633
- description: "Collision definitions from schema"
2634
- },
2635
- eventBus: {
2636
- types: [
2637
- "object"
2638
- ],
2639
- description: "Event bus for emitting collision events"
2640
- }
2641
- }
2642
- },
2643
2665
  "game-hud": {
2644
2666
  type: "game-hud",
2645
2667
  category: "game",
@@ -2694,77 +2716,15 @@ var patterns_registry_default = {
2694
2716
  }
2695
2717
  }
2696
2718
  },
2697
- "game-controls": {
2698
- type: "game-controls",
2719
+ "game-menu": {
2720
+ type: "game-menu",
2699
2721
  category: "game",
2700
- description: "Touch/button controls for mobile/accessibility",
2722
+ description: "Main menu with start, options, credits",
2701
2723
  suggestedFor: [
2702
- "mobile games",
2703
- "touch controls"
2724
+ "main menu page",
2725
+ "start screen"
2704
2726
  ],
2705
- typicalSize: "small",
2706
- propsSchema: {
2707
- layout: {
2708
- types: [
2709
- "string"
2710
- ],
2711
- description: "Control layout type",
2712
- required: true
2713
- },
2714
- position: {
2715
- types: [
2716
- "string"
2717
- ],
2718
- description: "Position on screen",
2719
- required: true
2720
- },
2721
- controls: {
2722
- types: [
2723
- "unknown"
2724
- ],
2725
- description: "Controls to display - accepts readonly for compatibility with generated const arrays"
2726
- },
2727
- onControl: {
2728
- types: [
2729
- "function"
2730
- ],
2731
- description: "Called when control is pressed/released"
2732
- },
2733
- size: {
2734
- types: [
2735
- "string"
2736
- ],
2737
- description: "Size variant"
2738
- },
2739
- className: {
2740
- types: [
2741
- "string"
2742
- ],
2743
- description: "Additional CSS classes"
2744
- },
2745
- visible: {
2746
- types: [
2747
- "boolean"
2748
- ],
2749
- description: "Whether controls are visible"
2750
- },
2751
- opacity: {
2752
- types: [
2753
- "number"
2754
- ],
2755
- description: "Opacity when visible"
2756
- }
2757
- }
2758
- },
2759
- "game-menu": {
2760
- type: "game-menu",
2761
- category: "game",
2762
- description: "Main menu with start, options, credits",
2763
- suggestedFor: [
2764
- "main menu page",
2765
- "start screen"
2766
- ],
2767
- typicalSize: "medium",
2727
+ typicalSize: "medium",
2768
2728
  propsSchema: {
2769
2729
  title: {
2770
2730
  types: [
@@ -2823,66 +2783,6 @@ var patterns_registry_default = {
2823
2783
  }
2824
2784
  }
2825
2785
  },
2826
- "game-pause-overlay": {
2827
- type: "game-pause-overlay",
2828
- category: "game",
2829
- description: "Pause menu that overlays the game",
2830
- suggestedFor: [
2831
- "pause screen",
2832
- "game overlay"
2833
- ],
2834
- typicalSize: "small",
2835
- propsSchema: {
2836
- options: {
2837
- types: [
2838
- "array"
2839
- ],
2840
- description: "Pause menu options"
2841
- },
2842
- menuItems: {
2843
- types: [
2844
- "array"
2845
- ],
2846
- description: "Alias for options (schema compatibility)"
2847
- },
2848
- onSelect: {
2849
- types: [
2850
- "function"
2851
- ],
2852
- description: "Called when an option is selected (legacy callback, prefer event bus)"
2853
- },
2854
- eventBus: {
2855
- types: [
2856
- "eventbuscontexttype"
2857
- ],
2858
- description: "Event bus for emitting UI events (optional, uses hook if not provided)"
2859
- },
2860
- title: {
2861
- types: [
2862
- "string"
2863
- ],
2864
- description: 'Title (default: "PAUSED")'
2865
- },
2866
- className: {
2867
- types: [
2868
- "string"
2869
- ],
2870
- description: "Additional CSS classes"
2871
- },
2872
- visible: {
2873
- types: [
2874
- "boolean"
2875
- ],
2876
- description: "Whether the pause menu is visible"
2877
- },
2878
- onDismiss: {
2879
- types: [
2880
- "function"
2881
- ],
2882
- description: "Called when clicking outside the menu"
2883
- }
2884
- }
2885
- },
2886
2786
  "game-over-screen": {
2887
2787
  type: "game-over-screen",
2888
2788
  category: "game",
@@ -2965,162 +2865,6 @@ var patterns_registry_default = {
2965
2865
  }
2966
2866
  }
2967
2867
  },
2968
- "level-select": {
2969
- type: "level-select",
2970
- category: "game",
2971
- description: "Grid or list of levels to choose from",
2972
- suggestedFor: [
2973
- "level selection",
2974
- "stage selection"
2975
- ],
2976
- typicalSize: "large",
2977
- propsSchema: {
2978
- levels: {
2979
- types: [
2980
- "array"
2981
- ],
2982
- description: "Level data"
2983
- },
2984
- entity: {
2985
- types: [
2986
- "string"
2987
- ],
2988
- description: "Entity name (schema config)"
2989
- },
2990
- layout: {
2991
- types: [
2992
- "string"
2993
- ],
2994
- description: "Layout variant"
2995
- },
2996
- fields: {
2997
- types: [
2998
- "array"
2999
- ],
3000
- description: "Fields to display per level"
3001
- },
3002
- selectEvent: {
3003
- types: [
3004
- "string"
3005
- ],
3006
- description: "Event to emit on selection (schema config)"
3007
- },
3008
- onSelect: {
3009
- types: [
3010
- "function"
3011
- ],
3012
- description: "Called when a level is selected"
3013
- },
3014
- navigatesTo: {
3015
- types: [
3016
- "string"
3017
- ],
3018
- description: "Path to navigate to on selection. Supports :id, :levelId, :number placeholders"
3019
- },
3020
- selectedId: {
3021
- types: [
3022
- "string"
3023
- ],
3024
- description: "Currently selected level ID"
3025
- },
3026
- maxStars: {
3027
- types: [
3028
- "number"
3029
- ],
3030
- description: "Maximum stars possible per level"
3031
- },
3032
- className: {
3033
- types: [
3034
- "string"
3035
- ],
3036
- description: "Additional CSS classes"
3037
- },
3038
- title: {
3039
- types: [
3040
- "string"
3041
- ],
3042
- description: "Title above the level grid"
3043
- }
3044
- }
3045
- },
3046
- "tilemap-renderer": {
3047
- type: "tilemap-renderer",
3048
- category: "game",
3049
- description: "Renders tile-based level data from instances with camera following",
3050
- suggestedFor: [
3051
- "platformer levels",
3052
- "tile-based games",
3053
- "rpg maps"
3054
- ],
3055
- typicalSize: "large",
3056
- propsSchema: {
3057
- layers: {
3058
- types: [
3059
- "array"
3060
- ],
3061
- description: "Tile layers to render",
3062
- required: true
3063
- },
3064
- tileset: {
3065
- types: [
3066
- "tileset"
3067
- ],
3068
- description: "Tileset configuration",
3069
- required: true
3070
- },
3071
- camera: {
3072
- types: [
3073
- "object"
3074
- ],
3075
- description: "Camera position",
3076
- required: true
3077
- },
3078
- viewportWidth: {
3079
- types: [
3080
- "number"
3081
- ],
3082
- description: "Viewport width in pixels",
3083
- required: true
3084
- },
3085
- viewportHeight: {
3086
- types: [
3087
- "number"
3088
- ],
3089
- description: "Viewport height in pixels",
3090
- required: true
3091
- },
3092
- pixelArt: {
3093
- types: [
3094
- "boolean"
3095
- ],
3096
- description: "Enable pixel art rendering (no smoothing)"
3097
- },
3098
- parallaxLayers: {
3099
- types: [
3100
- "array"
3101
- ],
3102
- description: "Parallax configuration per layer"
3103
- },
3104
- className: {
3105
- types: [
3106
- "string"
3107
- ],
3108
- description: "Optional className"
3109
- },
3110
- scale: {
3111
- types: [
3112
- "number"
3113
- ],
3114
- description: "Scale factor for rendering"
3115
- },
3116
- debug: {
3117
- types: [
3118
- "boolean"
3119
- ],
3120
- description: "Show debug grid"
3121
- }
3122
- }
3123
- },
3124
2868
  "inventory-panel": {
3125
2869
  type: "inventory-panel",
3126
2870
  category: "game",
@@ -3254,133 +2998,65 @@ var patterns_registry_default = {
3254
2998
  }
3255
2999
  }
3256
3000
  },
3257
- "input-listener": {
3258
- type: "input-listener",
3259
- category: "game",
3260
- description: "Invisible component that captures keyboard/mouse input and emits events",
3001
+ "runtime-debugger": {
3002
+ type: "runtime-debugger",
3003
+ category: "debug",
3004
+ description: "Debug overlay showing FPS, entity states, event logs",
3261
3005
  suggestedFor: [
3262
- "games",
3263
- "interactive applications",
3264
- "keyboard shortcuts"
3006
+ "development",
3007
+ "debugging",
3008
+ "testing"
3265
3009
  ],
3266
- typicalSize: "tiny",
3010
+ typicalSize: "small",
3267
3011
  propsSchema: {
3268
- bindings: {
3012
+ position: {
3269
3013
  types: [
3270
- "unknown"
3014
+ "string"
3271
3015
  ],
3272
- description: "Key bindings configuration"
3016
+ description: "Initial position"
3273
3017
  },
3274
- enabled: {
3018
+ defaultCollapsed: {
3275
3019
  types: [
3276
3020
  "boolean"
3277
3021
  ],
3278
- description: "Whether input listening is enabled"
3022
+ description: "Initial collapsed state"
3279
3023
  },
3280
- eventBus: {
3024
+ className: {
3281
3025
  types: [
3282
- "eventbuscontexttype"
3026
+ "string"
3283
3027
  ],
3284
- description: "Event bus for emitting events (optional, uses hook if not provided)"
3028
+ description: "Additional CSS classes"
3285
3029
  }
3286
3030
  }
3287
3031
  },
3288
- "collision-detector": {
3289
- type: "collision-detector",
3290
- category: "game",
3291
- description: "Invisible component that runs collision detection and emits collision events",
3032
+ button: {
3033
+ type: "button",
3034
+ category: "component",
3035
+ description: "Clickable button that emits events",
3292
3036
  suggestedFor: [
3293
- "games",
3294
- "2D physics",
3295
- "spatial interactions"
3037
+ "actions",
3038
+ "form submission",
3039
+ "navigation triggers"
3296
3040
  ],
3297
3041
  typicalSize: "tiny",
3298
3042
  propsSchema: {
3299
- algorithm: {
3043
+ variant: {
3300
3044
  types: [
3301
- "string"
3045
+ "buttonvariant"
3302
3046
  ],
3303
- description: "Collision detection algorithm"
3047
+ description: "variant prop"
3304
3048
  },
3305
- rules: {
3049
+ size: {
3306
3050
  types: [
3307
- "unknown"
3051
+ "buttonsize"
3308
3052
  ],
3309
- description: "Collision rules to check"
3053
+ description: "size prop"
3310
3054
  },
3311
- enabled: {
3055
+ isLoading: {
3312
3056
  types: [
3313
3057
  "boolean"
3314
3058
  ],
3315
- description: "Whether collision detection is enabled"
3316
- },
3317
- eventBus: {
3318
- types: [
3319
- "eventbuscontexttype"
3320
- ],
3321
- description: "Event bus for emitting events (optional, uses hook if not provided)"
3322
- }
3323
- }
3324
- },
3325
- "runtime-debugger": {
3326
- type: "runtime-debugger",
3327
- category: "debug",
3328
- description: "Debug overlay showing FPS, entity states, event logs",
3329
- suggestedFor: [
3330
- "development",
3331
- "debugging",
3332
- "testing"
3333
- ],
3334
- typicalSize: "small",
3335
- propsSchema: {
3336
- position: {
3337
- types: [
3338
- "string"
3339
- ],
3340
- description: "Initial position"
3341
- },
3342
- defaultCollapsed: {
3343
- types: [
3344
- "boolean"
3345
- ],
3346
- description: "Initial collapsed state"
3347
- },
3348
- className: {
3349
- types: [
3350
- "string"
3351
- ],
3352
- description: "Additional CSS classes"
3353
- }
3354
- }
3355
- },
3356
- button: {
3357
- type: "button",
3358
- category: "component",
3359
- description: "Clickable button that emits events",
3360
- suggestedFor: [
3361
- "actions",
3362
- "form submission",
3363
- "navigation triggers"
3364
- ],
3365
- typicalSize: "tiny",
3366
- propsSchema: {
3367
- variant: {
3368
- types: [
3369
- "buttonvariant"
3370
- ],
3371
- description: "variant prop"
3372
- },
3373
- size: {
3374
- types: [
3375
- "buttonsize"
3376
- ],
3377
- description: "size prop"
3378
- },
3379
- isLoading: {
3380
- types: [
3381
- "boolean"
3382
- ],
3383
- description: "isLoading prop"
3059
+ description: "isLoading prop"
3384
3060
  },
3385
3061
  leftIcon: {
3386
3062
  types: [
@@ -3647,12 +3323,6 @@ var patterns_registry_default = {
3647
3323
  ],
3648
3324
  description: "Maximum value (for calculating percentage) @default 100"
3649
3325
  },
3650
- type: {
3651
- types: [
3652
- "progressbartype"
3653
- ],
3654
- description: "Type of the progress bar (linear, circular, stepped) @default 'linear'"
3655
- },
3656
3326
  variant: {
3657
3327
  types: [
3658
3328
  "progressbarvariant"
@@ -3700,6 +3370,12 @@ var patterns_registry_default = {
3700
3370
  "string"
3701
3371
  ],
3702
3372
  description: "Additional CSS classes"
3373
+ },
3374
+ progressType: {
3375
+ types: [
3376
+ "progressbartype"
3377
+ ],
3378
+ description: "Type of the progress bar (linear, circular, stepped) @default 'linear'"
3703
3379
  }
3704
3380
  }
3705
3381
  },
@@ -3732,12 +3408,6 @@ var patterns_registry_default = {
3732
3408
  ],
3733
3409
  typicalSize: "tiny",
3734
3410
  propsSchema: {
3735
- type: {
3736
- types: [
3737
- "string"
3738
- ],
3739
- description: "Input type - supports 'select' and 'textarea' in addition to standard types"
3740
- },
3741
3411
  error: {
3742
3412
  types: [
3743
3413
  "string"
@@ -3791,6 +3461,12 @@ var patterns_registry_default = {
3791
3461
  "react.changeeventhandler"
3792
3462
  ],
3793
3463
  description: "onChange handler - accepts events from input, select, or textarea"
3464
+ },
3465
+ inputType: {
3466
+ types: [
3467
+ "string"
3468
+ ],
3469
+ description: "Input type - supports 'select' and 'textarea' in addition to standard types"
3794
3470
  }
3795
3471
  }
3796
3472
  },
@@ -4706,13 +4382,6 @@ var patterns_registry_default = {
4706
4382
  ],
4707
4383
  typicalSize: "small",
4708
4384
  propsSchema: {
4709
- type: {
4710
- types: [
4711
- "highlighttype"
4712
- ],
4713
- description: "Type of highlight (determines color)",
4714
- required: true
4715
- },
4716
4385
  isActive: {
4717
4386
  types: [
4718
4387
  "boolean"
@@ -4755,6 +4424,13 @@ var patterns_registry_default = {
4755
4424
  ],
4756
4425
  description: "Highlighted text content",
4757
4426
  required: true
4427
+ },
4428
+ highlightType: {
4429
+ types: [
4430
+ "highlighttype"
4431
+ ],
4432
+ description: "Type of highlight (determines color)",
4433
+ required: true
4758
4434
  }
4759
4435
  }
4760
4436
  },
@@ -7782,25 +7458,1694 @@ var patterns_registry_default = {
7782
7458
  types: [
7783
7459
  "string"
7784
7460
  ],
7785
- description: "Application / game title shown in the HUD bar"
7461
+ description: "Application / game title shown in the HUD bar"
7462
+ },
7463
+ hud: {
7464
+ types: [
7465
+ "node"
7466
+ ],
7467
+ description: "Optional HUD content rendered above the main area"
7468
+ },
7469
+ className: {
7470
+ types: [
7471
+ "string"
7472
+ ],
7473
+ description: "Extra class name on the root container"
7474
+ },
7475
+ showTopBar: {
7476
+ types: [
7477
+ "boolean"
7478
+ ],
7479
+ description: "Whether to show the minimal top bar (default: true)"
7480
+ }
7481
+ }
7482
+ },
7483
+ chart: {
7484
+ type: "chart",
7485
+ category: "visualization",
7486
+ description: "Data visualization chart supporting bar, line, pie, area, and donut types",
7487
+ suggestedFor: [
7488
+ "dashboards",
7489
+ "analytics",
7490
+ "data visualization",
7491
+ "reporting"
7492
+ ],
7493
+ typicalSize: "medium",
7494
+ propsSchema: {
7495
+ title: {
7496
+ types: [
7497
+ "string"
7498
+ ],
7499
+ description: "Chart title"
7500
+ },
7501
+ subtitle: {
7502
+ types: [
7503
+ "string"
7504
+ ],
7505
+ description: "Chart subtitle / description"
7506
+ },
7507
+ chartType: {
7508
+ types: [
7509
+ "charttype"
7510
+ ],
7511
+ description: "Chart type"
7512
+ },
7513
+ series: {
7514
+ types: [
7515
+ "unknown"
7516
+ ],
7517
+ description: "Data series"
7518
+ },
7519
+ data: {
7520
+ types: [
7521
+ "unknown"
7522
+ ],
7523
+ description: "Simple data (single series shorthand)"
7524
+ },
7525
+ height: {
7526
+ types: [
7527
+ "number"
7528
+ ],
7529
+ description: "Chart height in px"
7530
+ },
7531
+ showLegend: {
7532
+ types: [
7533
+ "boolean"
7534
+ ],
7535
+ description: "Show legend"
7536
+ },
7537
+ showValues: {
7538
+ types: [
7539
+ "boolean"
7540
+ ],
7541
+ description: "Show values on chart"
7542
+ },
7543
+ actions: {
7544
+ types: [
7545
+ "unknown"
7546
+ ],
7547
+ description: "Actions for chart interactions"
7548
+ },
7549
+ entity: {
7550
+ types: [
7551
+ "string"
7552
+ ],
7553
+ description: "Entity name for schema-driven auto-fetch"
7554
+ },
7555
+ isLoading: {
7556
+ types: [
7557
+ "boolean"
7558
+ ],
7559
+ description: "Loading state"
7560
+ },
7561
+ error: {
7562
+ types: [
7563
+ "error"
7564
+ ],
7565
+ description: "Error state"
7566
+ },
7567
+ className: {
7568
+ types: [
7569
+ "string"
7570
+ ],
7571
+ description: "Additional CSS classes"
7572
+ }
7573
+ }
7574
+ },
7575
+ meter: {
7576
+ type: "meter",
7577
+ category: "visualization",
7578
+ description: "Gauge/meter component for displaying a value within a range with thresholds",
7579
+ suggestedFor: [
7580
+ "dashboards",
7581
+ "progress tracking",
7582
+ "credit/quota displays",
7583
+ "KPI indicators"
7584
+ ],
7585
+ typicalSize: "small",
7586
+ propsSchema: {
7587
+ value: {
7588
+ types: [
7589
+ "number"
7590
+ ],
7591
+ description: "Current value",
7592
+ required: true
7593
+ },
7594
+ min: {
7595
+ types: [
7596
+ "number"
7597
+ ],
7598
+ description: "Minimum value"
7599
+ },
7600
+ max: {
7601
+ types: [
7602
+ "number"
7603
+ ],
7604
+ description: "Maximum value"
7605
+ },
7606
+ label: {
7607
+ types: [
7608
+ "string"
7609
+ ],
7610
+ description: "Display label"
7611
+ },
7612
+ unit: {
7613
+ types: [
7614
+ "string"
7615
+ ],
7616
+ description: "Unit suffix (e.g., '%', 'MB', 'credits')"
7617
+ },
7618
+ variant: {
7619
+ types: [
7620
+ "metervariant"
7621
+ ],
7622
+ description: "Display variant"
7623
+ },
7624
+ thresholds: {
7625
+ types: [
7626
+ "unknown"
7627
+ ],
7628
+ description: "Color thresholds"
7629
+ },
7630
+ segments: {
7631
+ types: [
7632
+ "number"
7633
+ ],
7634
+ description: "Number of segments (for segmented variant)"
7635
+ },
7636
+ showValue: {
7637
+ types: [
7638
+ "boolean"
7639
+ ],
7640
+ description: "Show value text"
7641
+ },
7642
+ size: {
7643
+ types: [
7644
+ "string"
7645
+ ],
7646
+ description: "Size (for radial variant)"
7647
+ },
7648
+ actions: {
7649
+ types: [
7650
+ "unknown"
7651
+ ],
7652
+ description: "Actions"
7653
+ },
7654
+ entity: {
7655
+ types: [
7656
+ "string"
7657
+ ],
7658
+ description: "Entity name for schema-driven auto-fetch"
7659
+ },
7660
+ isLoading: {
7661
+ types: [
7662
+ "boolean"
7663
+ ],
7664
+ description: "Loading state"
7665
+ },
7666
+ error: {
7667
+ types: [
7668
+ "error"
7669
+ ],
7670
+ description: "Error state"
7671
+ },
7672
+ className: {
7673
+ types: [
7674
+ "string"
7675
+ ],
7676
+ description: "Additional CSS classes"
7677
+ }
7678
+ }
7679
+ },
7680
+ timeline: {
7681
+ type: "timeline",
7682
+ category: "display",
7683
+ description: "Vertical timeline for displaying chronological events with status indicators",
7684
+ suggestedFor: [
7685
+ "activity logs",
7686
+ "process tracking",
7687
+ "history views",
7688
+ "workflow steps"
7689
+ ],
7690
+ typicalSize: "medium",
7691
+ propsSchema: {
7692
+ title: {
7693
+ types: [
7694
+ "string"
7695
+ ],
7696
+ description: "Timeline title"
7697
+ },
7698
+ items: {
7699
+ types: [
7700
+ "unknown"
7701
+ ],
7702
+ description: "Timeline items"
7703
+ },
7704
+ data: {
7705
+ types: [
7706
+ "unknown"
7707
+ ],
7708
+ description: "Schema-driven data"
7709
+ },
7710
+ fields: {
7711
+ types: [
7712
+ "unknown"
7713
+ ],
7714
+ description: "Fields to display"
7715
+ },
7716
+ itemActions: {
7717
+ types: [
7718
+ "unknown"
7719
+ ],
7720
+ description: "Actions per item"
7721
+ },
7722
+ entity: {
7723
+ types: [
7724
+ "string"
7725
+ ],
7726
+ description: "Entity name for schema-driven auto-fetch"
7727
+ },
7728
+ isLoading: {
7729
+ types: [
7730
+ "boolean"
7731
+ ],
7732
+ description: "Loading state"
7733
+ },
7734
+ error: {
7735
+ types: [
7736
+ "error"
7737
+ ],
7738
+ description: "Error state"
7739
+ },
7740
+ className: {
7741
+ types: [
7742
+ "string"
7743
+ ],
7744
+ description: "Additional CSS classes"
7745
+ }
7746
+ }
7747
+ },
7748
+ "media-gallery": {
7749
+ type: "media-gallery",
7750
+ category: "media",
7751
+ description: "Grid gallery for images and media with lightbox, selection, and upload",
7752
+ suggestedFor: [
7753
+ "photo galleries",
7754
+ "image management",
7755
+ "media libraries",
7756
+ "portfolio displays"
7757
+ ],
7758
+ typicalSize: "medium",
7759
+ propsSchema: {
7760
+ title: {
7761
+ types: [
7762
+ "string"
7763
+ ],
7764
+ description: "Gallery title"
7765
+ },
7766
+ items: {
7767
+ types: [
7768
+ "unknown"
7769
+ ],
7770
+ description: "Media items"
7771
+ },
7772
+ data: {
7773
+ types: [
7774
+ "unknown"
7775
+ ],
7776
+ description: "Schema-driven data"
7777
+ },
7778
+ columns: {
7779
+ types: [
7780
+ "number"
7781
+ ],
7782
+ description: "Column count"
7783
+ },
7784
+ selectable: {
7785
+ types: [
7786
+ "boolean"
7787
+ ],
7788
+ description: "Enable item selection"
7789
+ },
7790
+ selectedItems: {
7791
+ types: [
7792
+ "unknown"
7793
+ ],
7794
+ description: "Selected item IDs"
7795
+ },
7796
+ onSelectionChange: {
7797
+ types: [
7798
+ "function"
7799
+ ],
7800
+ description: "Selection change callback"
7801
+ },
7802
+ showUpload: {
7803
+ types: [
7804
+ "boolean"
7805
+ ],
7806
+ description: "Show upload button"
7807
+ },
7808
+ actions: {
7809
+ types: [
7810
+ "unknown"
7811
+ ],
7812
+ description: "Actions"
7813
+ },
7814
+ aspectRatio: {
7815
+ types: [
7816
+ "string"
7817
+ ],
7818
+ description: "Aspect ratio for thumbnails"
7819
+ },
7820
+ entity: {
7821
+ types: [
7822
+ "string"
7823
+ ],
7824
+ description: "Entity name for schema-driven auto-fetch"
7825
+ },
7826
+ isLoading: {
7827
+ types: [
7828
+ "boolean"
7829
+ ],
7830
+ description: "Loading state"
7831
+ },
7832
+ error: {
7833
+ types: [
7834
+ "error"
7835
+ ],
7836
+ description: "Error state"
7837
+ },
7838
+ className: {
7839
+ types: [
7840
+ "string"
7841
+ ],
7842
+ description: "Additional CSS classes"
7843
+ }
7844
+ }
7845
+ },
7846
+ "signature-pad": {
7847
+ type: "signature-pad",
7848
+ category: "form",
7849
+ description: "Canvas-based signature capture pad with draw, clear, and confirm actions",
7850
+ suggestedFor: [
7851
+ "form signing",
7852
+ "approval workflows",
7853
+ "document signing",
7854
+ "consent forms"
7855
+ ],
7856
+ typicalSize: "small",
7857
+ propsSchema: {
7858
+ label: {
7859
+ types: [
7860
+ "string"
7861
+ ],
7862
+ description: "Label above the pad"
7863
+ },
7864
+ helperText: {
7865
+ types: [
7866
+ "string"
7867
+ ],
7868
+ description: "Helper text"
7869
+ },
7870
+ strokeColor: {
7871
+ types: [
7872
+ "string"
7873
+ ],
7874
+ description: "Stroke color"
7875
+ },
7876
+ strokeWidth: {
7877
+ types: [
7878
+ "number"
7879
+ ],
7880
+ description: "Stroke width"
7881
+ },
7882
+ height: {
7883
+ types: [
7884
+ "number"
7885
+ ],
7886
+ description: "Pad height"
7887
+ },
7888
+ readOnly: {
7889
+ types: [
7890
+ "boolean"
7891
+ ],
7892
+ description: "Whether the pad is read-only"
7893
+ },
7894
+ value: {
7895
+ types: [
7896
+ "string"
7897
+ ],
7898
+ description: "Existing signature image URL"
7899
+ },
7900
+ onChange: {
7901
+ types: [
7902
+ "function"
7903
+ ],
7904
+ description: "Callback when signature changes"
7905
+ },
7906
+ signEvent: {
7907
+ types: [
7908
+ "string"
7909
+ ],
7910
+ description: "Event to emit on sign"
7911
+ },
7912
+ clearEvent: {
7913
+ types: [
7914
+ "string"
7915
+ ],
7916
+ description: "Event to emit on clear"
7917
+ },
7918
+ entity: {
7919
+ types: [
7920
+ "string"
7921
+ ],
7922
+ description: "Entity name for schema-driven context"
7923
+ },
7924
+ isLoading: {
7925
+ types: [
7926
+ "boolean"
7927
+ ],
7928
+ description: "Loading state"
7929
+ },
7930
+ error: {
7931
+ types: [
7932
+ "error"
7933
+ ],
7934
+ description: "Error state"
7935
+ },
7936
+ className: {
7937
+ types: [
7938
+ "string"
7939
+ ],
7940
+ description: "Additional CSS classes"
7941
+ }
7942
+ }
7943
+ },
7944
+ "document-viewer": {
7945
+ type: "document-viewer",
7946
+ category: "display",
7947
+ description: "Document viewer for PDFs, text, HTML, and markdown with zoom and pagination",
7948
+ suggestedFor: [
7949
+ "document management",
7950
+ "PDF viewing",
7951
+ "content preview",
7952
+ "report viewing"
7953
+ ],
7954
+ typicalSize: "large",
7955
+ propsSchema: {
7956
+ title: {
7957
+ types: [
7958
+ "string"
7959
+ ],
7960
+ description: "Document title"
7961
+ },
7962
+ src: {
7963
+ types: [
7964
+ "string"
7965
+ ],
7966
+ description: "Document URL (for PDF/external documents)"
7967
+ },
7968
+ content: {
7969
+ types: [
7970
+ "string"
7971
+ ],
7972
+ description: "Document content (for text/html/markdown)"
7973
+ },
7974
+ documentType: {
7975
+ types: [
7976
+ "documenttype"
7977
+ ],
7978
+ description: "Document type"
7979
+ },
7980
+ currentPage: {
7981
+ types: [
7982
+ "number"
7983
+ ],
7984
+ description: "Current page (for multi-page documents)"
7985
+ },
7986
+ totalPages: {
7987
+ types: [
7988
+ "number"
7989
+ ],
7990
+ description: "Total pages"
7991
+ },
7992
+ height: {
7993
+ types: [
7994
+ "number",
7995
+ "string"
7996
+ ],
7997
+ description: "Viewer height"
7998
+ },
7999
+ showToolbar: {
8000
+ types: [
8001
+ "boolean"
8002
+ ],
8003
+ description: "Show toolbar"
8004
+ },
8005
+ showDownload: {
8006
+ types: [
8007
+ "boolean"
8008
+ ],
8009
+ description: "Show download button"
8010
+ },
8011
+ showPrint: {
8012
+ types: [
8013
+ "boolean"
8014
+ ],
8015
+ description: "Show print button"
8016
+ },
8017
+ actions: {
8018
+ types: [
8019
+ "unknown"
8020
+ ],
8021
+ description: "Actions"
8022
+ },
8023
+ documents: {
8024
+ types: [
8025
+ "unknown"
8026
+ ],
8027
+ description: "Multiple documents (tabbed view)"
8028
+ },
8029
+ entity: {
8030
+ types: [
8031
+ "string"
8032
+ ],
8033
+ description: "Entity name for schema-driven auto-fetch"
8034
+ },
8035
+ isLoading: {
8036
+ types: [
8037
+ "boolean"
8038
+ ],
8039
+ description: "Loading state"
8040
+ },
8041
+ error: {
8042
+ types: [
8043
+ "error"
8044
+ ],
8045
+ description: "Error state"
8046
+ },
8047
+ className: {
8048
+ types: [
8049
+ "string"
8050
+ ],
8051
+ description: "Additional CSS classes"
8052
+ }
8053
+ }
8054
+ },
8055
+ "graph-canvas": {
8056
+ type: "graph-canvas",
8057
+ category: "visualization",
8058
+ description: "Force-directed graph visualization for node-link data with interactive zoom, pan, and layout",
8059
+ suggestedFor: [
8060
+ "knowledge graphs",
8061
+ "network visualization",
8062
+ "relationship mapping",
8063
+ "dependency graphs"
8064
+ ],
8065
+ typicalSize: "large",
8066
+ propsSchema: {
8067
+ title: {
8068
+ types: [
8069
+ "string"
8070
+ ],
8071
+ description: "Graph title"
8072
+ },
8073
+ nodes: {
8074
+ types: [
8075
+ "unknown"
8076
+ ],
8077
+ description: "Graph nodes"
8078
+ },
8079
+ edges: {
8080
+ types: [
8081
+ "unknown"
8082
+ ],
8083
+ description: "Graph edges"
8084
+ },
8085
+ height: {
8086
+ types: [
8087
+ "number"
8088
+ ],
8089
+ description: "Canvas height"
8090
+ },
8091
+ showLabels: {
8092
+ types: [
8093
+ "boolean"
8094
+ ],
8095
+ description: "Show node labels"
8096
+ },
8097
+ interactive: {
8098
+ types: [
8099
+ "boolean"
8100
+ ],
8101
+ description: "Enable zoom/pan"
8102
+ },
8103
+ draggable: {
8104
+ types: [
8105
+ "boolean"
8106
+ ],
8107
+ description: "Enable node dragging"
8108
+ },
8109
+ actions: {
8110
+ types: [
8111
+ "unknown"
8112
+ ],
8113
+ description: "Actions"
8114
+ },
8115
+ onNodeClick: {
8116
+ types: [
8117
+ "function"
8118
+ ],
8119
+ description: "On node click"
8120
+ },
8121
+ nodeClickEvent: {
8122
+ types: [
8123
+ "string"
8124
+ ],
8125
+ description: "Node click event"
8126
+ },
8127
+ layout: {
8128
+ types: [
8129
+ "string"
8130
+ ],
8131
+ description: "Layout algorithm"
8132
+ },
8133
+ entity: {
8134
+ types: [
8135
+ "string"
8136
+ ],
8137
+ description: "Entity name for schema-driven auto-fetch"
8138
+ },
8139
+ isLoading: {
8140
+ types: [
8141
+ "boolean"
8142
+ ],
8143
+ description: "Loading state"
8144
+ },
8145
+ error: {
8146
+ types: [
8147
+ "error"
8148
+ ],
8149
+ description: "Error state"
8150
+ },
8151
+ className: {
8152
+ types: [
8153
+ "string"
8154
+ ],
8155
+ description: "Additional CSS classes"
8156
+ }
8157
+ }
8158
+ },
8159
+ "code-viewer": {
8160
+ type: "code-viewer",
8161
+ category: "display",
8162
+ description: "Code and diff viewer with line numbers, copy, word-wrap, and multi-file tabs",
8163
+ suggestedFor: [
8164
+ "code display",
8165
+ "diff viewing",
8166
+ "schema inspection",
8167
+ "log viewing"
8168
+ ],
8169
+ typicalSize: "medium",
8170
+ propsSchema: {
8171
+ title: {
8172
+ types: [
8173
+ "string"
8174
+ ],
8175
+ description: "Viewer title"
8176
+ },
8177
+ code: {
8178
+ types: [
8179
+ "string"
8180
+ ],
8181
+ description: "Code content"
8182
+ },
8183
+ language: {
8184
+ types: [
8185
+ "string"
8186
+ ],
8187
+ description: "Language for display label"
8188
+ },
8189
+ diff: {
8190
+ types: [
8191
+ "unknown"
8192
+ ],
8193
+ description: "Diff lines (for diff mode)"
8194
+ },
8195
+ oldValue: {
8196
+ types: [
8197
+ "string"
8198
+ ],
8199
+ description: "Old value (for generating diff)"
8200
+ },
8201
+ newValue: {
8202
+ types: [
8203
+ "string"
8204
+ ],
8205
+ description: "New value (for generating diff)"
8206
+ },
8207
+ mode: {
8208
+ types: [
8209
+ "codeviewermode"
8210
+ ],
8211
+ description: "Display mode"
8212
+ },
8213
+ showLineNumbers: {
8214
+ types: [
8215
+ "boolean"
8216
+ ],
8217
+ description: "Show line numbers"
8218
+ },
8219
+ showCopy: {
8220
+ types: [
8221
+ "boolean"
8222
+ ],
8223
+ description: "Show copy button"
8224
+ },
8225
+ wordWrap: {
8226
+ types: [
8227
+ "boolean"
8228
+ ],
8229
+ description: "Enable word wrap"
8230
+ },
8231
+ maxHeight: {
8232
+ types: [
8233
+ "number",
8234
+ "string"
8235
+ ],
8236
+ description: "Max height before scrolling"
8237
+ },
8238
+ files: {
8239
+ types: [
8240
+ "unknown"
8241
+ ],
8242
+ description: "Multiple files (tabbed view)"
8243
+ },
8244
+ actions: {
8245
+ types: [
8246
+ "unknown"
8247
+ ],
8248
+ description: "Actions"
8249
+ },
8250
+ entity: {
8251
+ types: [
8252
+ "string"
8253
+ ],
8254
+ description: "Entity name for schema-driven auto-fetch"
8255
+ },
8256
+ isLoading: {
8257
+ types: [
8258
+ "boolean"
8259
+ ],
8260
+ description: "Loading state"
8261
+ },
8262
+ error: {
8263
+ types: [
8264
+ "error"
8265
+ ],
8266
+ description: "Error state"
8267
+ },
8268
+ className: {
8269
+ types: [
8270
+ "string"
8271
+ ],
8272
+ description: "Additional CSS classes"
8273
+ }
8274
+ }
8275
+ },
8276
+ "canvas-effect": {
8277
+ type: "canvas-effect",
8278
+ category: "game",
8279
+ 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",
8280
+ suggestedFor: [
8281
+ "canvas",
8282
+ "effect",
8283
+ "canvas effect"
8284
+ ],
8285
+ typicalSize: "large",
8286
+ propsSchema: {
8287
+ actionType: {
8288
+ types: [
8289
+ "combatactiontype"
8290
+ ],
8291
+ description: "The type of combat action to visualise",
8292
+ required: true
8293
+ },
8294
+ x: {
8295
+ types: [
8296
+ "number"
8297
+ ],
8298
+ description: "Screen-space X position (center of the effect)",
8299
+ required: true
8300
+ },
8301
+ y: {
8302
+ types: [
8303
+ "number"
8304
+ ],
8305
+ description: "Screen-space Y position (center of the effect)",
8306
+ required: true
8307
+ },
8308
+ duration: {
8309
+ types: [
8310
+ "number"
8311
+ ],
8312
+ description: "Duration in ms before auto-dismiss (default 2000 for canvas, 800 for emoji)"
8313
+ },
8314
+ intensity: {
8315
+ types: [
8316
+ "number"
8317
+ ],
8318
+ description: "Optional intensity multiplier (1 = normal, 2 = double size/brightness)"
8319
+ },
8320
+ onComplete: {
8321
+ types: [
8322
+ "function"
8323
+ ],
8324
+ description: "Callback when the effect animation completes"
8325
+ },
8326
+ className: {
8327
+ types: [
8328
+ "string"
8329
+ ],
8330
+ description: "Additional CSS classes"
8331
+ },
8332
+ isLoading: {
8333
+ types: [
8334
+ "boolean"
8335
+ ],
8336
+ description: "Loading state indicator"
8337
+ },
8338
+ error: {
8339
+ types: [
8340
+ "error"
8341
+ ],
8342
+ description: "Error state"
8343
+ },
8344
+ effectSpriteUrl: {
8345
+ types: [
8346
+ "string"
8347
+ ],
8348
+ description: "--- Remote asset loading ---"
8349
+ },
8350
+ assetBaseUrl: {
8351
+ types: [
8352
+ "string"
8353
+ ],
8354
+ description: "Base URL for remote assets. Prepended to relative effectSpriteUrl paths."
8355
+ },
8356
+ assetManifest: {
8357
+ types: [
8358
+ "effectassetmanifest"
8359
+ ],
8360
+ description: "Full effect asset manifest for the sprite particle engine. When provided, enables the canvas-based particle system."
8361
+ },
8362
+ width: {
8363
+ types: [
8364
+ "number"
8365
+ ],
8366
+ description: "Canvas width (default 400)"
8367
+ },
8368
+ height: {
8369
+ types: [
8370
+ "number"
8371
+ ],
8372
+ description: "Canvas height (default 300)"
8373
+ }
8374
+ }
8375
+ },
8376
+ "isometric-canvas": {
8377
+ type: "isometric-canvas",
8378
+ category: "game",
8379
+ 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 \u2192 feature \u2192 unit depth sort) - Camera pan/zoom with lerp - Off-screen culling - Minimap on separate canvas - Sprite sheet animation via resolveUnitFrame - Event bus\u2013friendly handlers (onTileClick, onUnitClick, etc.)",
8380
+ suggestedFor: [
8381
+ "isometric",
8382
+ "canvas",
8383
+ "isometric canvas"
8384
+ ],
8385
+ typicalSize: "large",
8386
+ propsSchema: {
8387
+ className: {
8388
+ types: [
8389
+ "string"
8390
+ ],
8391
+ description: "--- Closed-circuit props (MANDATORY) ---"
8392
+ },
8393
+ isLoading: {
8394
+ types: [
8395
+ "boolean"
8396
+ ],
8397
+ description: "Loading state indicator"
8398
+ },
8399
+ error: {
8400
+ types: [
8401
+ "error"
8402
+ ],
8403
+ description: "Error state"
8404
+ },
8405
+ entity: {
8406
+ types: [
8407
+ "string"
8408
+ ],
8409
+ description: "Entity name for schema-driven auto-fetch"
8410
+ },
8411
+ tiles: {
8412
+ types: [
8413
+ "array"
8414
+ ],
8415
+ description: "--- Grid data ---"
8416
+ },
8417
+ units: {
8418
+ types: [
8419
+ "array"
8420
+ ],
8421
+ description: "Array of units on the board"
8422
+ },
8423
+ features: {
8424
+ types: [
8425
+ "array"
8426
+ ],
8427
+ description: "Array of features (resources, portals, buildings, etc.)"
8428
+ },
8429
+ selectedUnitId: {
8430
+ types: [
8431
+ "string"
8432
+ ],
8433
+ description: "--- Interaction state ---"
8434
+ },
8435
+ validMoves: {
8436
+ types: [
8437
+ "array"
8438
+ ],
8439
+ description: "Valid move positions (shown as pulsing green highlights)"
8440
+ },
8441
+ attackTargets: {
8442
+ types: [
8443
+ "array"
8444
+ ],
8445
+ description: "Attack target positions (shown as pulsing red highlights)"
8446
+ },
8447
+ hoveredTile: {
8448
+ types: [
8449
+ "object"
8450
+ ],
8451
+ description: "Hovered tile position"
8452
+ },
8453
+ onTileClick: {
8454
+ types: [
8455
+ "function"
8456
+ ],
8457
+ description: "--- Event handlers ---"
8458
+ },
8459
+ onUnitClick: {
8460
+ types: [
8461
+ "function"
8462
+ ],
8463
+ description: "Unit click handler"
8464
+ },
8465
+ onTileHover: {
8466
+ types: [
8467
+ "function"
8468
+ ],
8469
+ description: "Tile hover handler"
8470
+ },
8471
+ onTileLeave: {
8472
+ types: [
8473
+ "function"
8474
+ ],
8475
+ description: "Tile leave handler"
8476
+ },
8477
+ scale: {
8478
+ types: [
8479
+ "number"
8480
+ ],
8481
+ description: "--- Rendering options ---"
8482
+ },
8483
+ debug: {
8484
+ types: [
8485
+ "boolean"
8486
+ ],
8487
+ description: "Show debug grid lines and coordinates"
8488
+ },
8489
+ backgroundImage: {
8490
+ types: [
8491
+ "string"
8492
+ ],
8493
+ description: "Background image URL tiled behind the isometric grid"
8494
+ },
8495
+ showMinimap: {
8496
+ types: [
8497
+ "boolean"
8498
+ ],
8499
+ description: "Toggle minimap overlay"
8500
+ },
8501
+ enableCamera: {
8502
+ types: [
8503
+ "boolean"
8504
+ ],
8505
+ description: "Enable camera pan/zoom controls"
8506
+ },
8507
+ unitScale: {
8508
+ types: [
8509
+ "number"
8510
+ ],
8511
+ description: "Extra scale multiplier for unit draw size. 1 = default."
8512
+ },
8513
+ getTerrainSprite: {
8514
+ types: [
8515
+ "function"
8516
+ ],
8517
+ description: "--- Asset resolution (project-agnostic) ---"
8518
+ },
8519
+ getFeatureSprite: {
8520
+ types: [
8521
+ "function"
8522
+ ],
8523
+ description: "Resolve feature sprite URL from feature type key"
8524
+ },
8525
+ getUnitSprite: {
8526
+ types: [
8527
+ "function"
8528
+ ],
8529
+ description: "Resolve unit static sprite URL"
8530
+ },
8531
+ resolveUnitFrame: {
8532
+ types: [
8533
+ "function"
8534
+ ],
8535
+ description: "Resolve animated sprite sheet frame for a unit"
8536
+ },
8537
+ effectSpriteUrls: {
8538
+ types: [
8539
+ "array"
8540
+ ],
8541
+ description: "Additional sprite URLs to preload (e.g., effect sprites)"
8542
+ },
8543
+ onDrawEffects: {
8544
+ types: [
8545
+ "function"
8546
+ ],
8547
+ description: "Callback to draw canvas effects after units"
8548
+ },
8549
+ hasActiveEffects: {
8550
+ types: [
8551
+ "boolean"
8552
+ ],
8553
+ description: "Whether there are active effects \u2014 keeps RAF loop alive"
8554
+ },
8555
+ assetBaseUrl: {
8556
+ types: [
8557
+ "string"
8558
+ ],
8559
+ description: "--- Remote asset loading ---"
8560
+ },
8561
+ assetManifest: {
8562
+ types: [
8563
+ "object"
8564
+ ],
8565
+ 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."
8566
+ }
8567
+ }
8568
+ },
8569
+ "battle-template": {
8570
+ type: "battle-template",
8571
+ category: "template",
8572
+ 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.",
8573
+ suggestedFor: [
8574
+ "battle",
8575
+ "template",
8576
+ "battle template"
8577
+ ],
8578
+ typicalSize: "full",
8579
+ propsSchema: {
8580
+ initialUnits: {
8581
+ types: [
8582
+ "array"
8583
+ ],
8584
+ description: "Initial units for the battle",
8585
+ required: true
8586
+ },
8587
+ tiles: {
8588
+ types: [
8589
+ "array"
8590
+ ],
8591
+ description: "Isometric tiles (pre-resolved with terrainSprite)",
8592
+ required: true
8593
+ },
8594
+ scale: {
8595
+ types: [
8596
+ "number"
8597
+ ],
8598
+ description: "Canvas render scale"
8599
+ },
8600
+ boardWidth: {
8601
+ types: [
8602
+ "number"
8603
+ ],
8604
+ description: "Board width for bounds checking"
8605
+ },
8606
+ boardHeight: {
8607
+ types: [
8608
+ "number"
8609
+ ],
8610
+ description: "Board height for bounds checking"
8611
+ },
8612
+ assetManifest: {
8613
+ types: [
8614
+ "object"
8615
+ ],
8616
+ description: "Asset manifest for IsometricCanvas"
8617
+ },
8618
+ backgroundImage: {
8619
+ types: [
8620
+ "string"
8621
+ ],
8622
+ description: "Background image URL for canvas"
8623
+ },
8624
+ unitScale: {
8625
+ types: [
8626
+ "number"
8627
+ ],
8628
+ description: "Unit draw-size multiplier"
8629
+ },
8630
+ header: {
8631
+ types: [
8632
+ "function"
8633
+ ],
8634
+ description: "-- Slots --"
8635
+ },
8636
+ sidebar: {
8637
+ types: [
8638
+ "function"
8639
+ ],
8640
+ description: "Sidebar content (combat log, unit roster, etc.)"
8641
+ },
8642
+ actions: {
8643
+ types: [
8644
+ "function"
8645
+ ],
8646
+ description: "Floating action buttons"
8647
+ },
8648
+ overlay: {
8649
+ types: [
8650
+ "function"
8651
+ ],
8652
+ description: "Floating overlays above the canvas (damage popups, tooltips)"
8653
+ },
8654
+ gameOverOverlay: {
8655
+ types: [
8656
+ "function"
8657
+ ],
8658
+ description: "Game-over screen overlay"
8659
+ },
8660
+ features: {
8661
+ types: [
8662
+ "array"
8663
+ ],
8664
+ description: "-- Obstacle features --"
8665
+ },
8666
+ onAttack: {
8667
+ types: [
8668
+ "function"
8669
+ ],
8670
+ description: "-- Callbacks --"
8671
+ },
8672
+ onGameEnd: {
8673
+ types: [
8674
+ "function"
8675
+ ],
8676
+ description: "Called when battle ends"
8677
+ },
8678
+ onUnitMove: {
8679
+ types: [
8680
+ "function"
8681
+ ],
8682
+ description: "Called after a unit moves"
8683
+ },
8684
+ calculateDamage: {
8685
+ types: [
8686
+ "function"
8687
+ ],
8688
+ description: "Custom combat damage calculator"
8689
+ },
8690
+ onDrawEffects: {
8691
+ types: [
8692
+ "function"
8693
+ ],
8694
+ description: "-- Canvas pass-through --"
8695
+ },
8696
+ hasActiveEffects: {
8697
+ types: [
8698
+ "boolean"
8699
+ ],
8700
+ description: "hasActiveEffects prop"
8701
+ },
8702
+ effectSpriteUrls: {
8703
+ types: [
8704
+ "array"
8705
+ ],
8706
+ description: "effectSpriteUrls prop"
8707
+ },
8708
+ resolveUnitFrame: {
8709
+ types: [
8710
+ "function"
8711
+ ],
8712
+ description: "resolveUnitFrame prop"
8713
+ },
8714
+ className: {
8715
+ types: [
8716
+ "string"
8717
+ ],
8718
+ description: "className prop"
8719
+ }
8720
+ }
8721
+ },
8722
+ "castle-template": {
8723
+ type: "castle-template",
8724
+ category: "template",
8725
+ 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).",
8726
+ suggestedFor: [
8727
+ "castle",
8728
+ "template",
8729
+ "castle template"
8730
+ ],
8731
+ typicalSize: "full",
8732
+ propsSchema: {
8733
+ tiles: {
8734
+ types: [
8735
+ "array"
8736
+ ],
8737
+ description: "Isometric tiles (pre-resolved with terrainSprite)",
8738
+ required: true
8739
+ },
8740
+ features: {
8741
+ types: [
8742
+ "array"
8743
+ ],
8744
+ description: "Building features rendered on the grid"
8745
+ },
8746
+ units: {
8747
+ types: [
8748
+ "array"
8749
+ ],
8750
+ description: "Garrison / stationed units on the grid"
8751
+ },
8752
+ scale: {
8753
+ types: [
8754
+ "number"
8755
+ ],
8756
+ description: "Canvas render scale"
8757
+ },
8758
+ assetManifest: {
8759
+ types: [
8760
+ "object"
8761
+ ],
8762
+ description: "Asset manifest for IsometricCanvas"
8763
+ },
8764
+ backgroundImage: {
8765
+ types: [
8766
+ "string"
8767
+ ],
8768
+ description: "Background image URL"
8769
+ },
8770
+ header: {
8771
+ types: [
8772
+ "function"
8773
+ ],
8774
+ description: "-- Slots --"
8775
+ },
8776
+ sidePanel: {
8777
+ types: [
8778
+ "function"
8779
+ ],
8780
+ description: "Side panel content (buildings list, recruit tab, garrison tab)"
8781
+ },
8782
+ overlay: {
8783
+ types: [
8784
+ "function"
8785
+ ],
8786
+ description: "Canvas overlay (hover tooltips, etc.)"
8787
+ },
8788
+ footer: {
8789
+ types: [
8790
+ "function"
8791
+ ],
8792
+ description: "Bottom bar (income summary, etc.)"
8793
+ },
8794
+ onFeatureClick: {
8795
+ types: [
8796
+ "function"
8797
+ ],
8798
+ description: "-- Callbacks --"
8799
+ },
8800
+ onUnitClick: {
8801
+ types: [
8802
+ "function"
8803
+ ],
8804
+ description: "Called when a unit is clicked"
8805
+ },
8806
+ onTileClick: {
8807
+ types: [
8808
+ "function"
8809
+ ],
8810
+ description: "Called when any tile is clicked"
8811
+ },
8812
+ className: {
8813
+ types: [
8814
+ "string"
8815
+ ],
8816
+ description: "className prop"
8817
+ }
8818
+ }
8819
+ },
8820
+ "world-map-template": {
8821
+ type: "world-map-template",
8822
+ category: "template",
8823
+ 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.",
8824
+ suggestedFor: [
8825
+ "world",
8826
+ "map",
8827
+ "template",
8828
+ "world map template"
8829
+ ],
8830
+ typicalSize: "full",
8831
+ propsSchema: {
8832
+ hexes: {
8833
+ types: [
8834
+ "array"
8835
+ ],
8836
+ description: "All map hexes (with pre-resolved terrain sprites)",
8837
+ required: true
8838
+ },
8839
+ heroes: {
8840
+ types: [
8841
+ "array"
8842
+ ],
8843
+ description: "Heroes on the map",
8844
+ required: true
8845
+ },
8846
+ features: {
8847
+ types: [
8848
+ "array"
8849
+ ],
8850
+ description: "Features rendered on tiles"
8851
+ },
8852
+ selectedHeroId: {
8853
+ types: [
8854
+ "string"
8855
+ ],
8856
+ description: "Currently selected hero ID"
8857
+ },
8858
+ scale: {
8859
+ types: [
8860
+ "number"
8861
+ ],
8862
+ description: "Canvas render scale"
8863
+ },
8864
+ unitScale: {
8865
+ types: [
8866
+ "number"
8867
+ ],
8868
+ description: "Unit draw-size multiplier"
8869
+ },
8870
+ assetManifest: {
8871
+ types: [
8872
+ "object"
8873
+ ],
8874
+ description: "Asset manifest for IsometricCanvas"
8875
+ },
8876
+ backgroundImage: {
8877
+ types: [
8878
+ "string"
8879
+ ],
8880
+ description: "Background image URL"
8881
+ },
8882
+ allowMoveAllHeroes: {
8883
+ types: [
8884
+ "boolean"
8885
+ ],
8886
+ description: "Allow selecting / moving ALL heroes (including enemy). For testing."
8887
+ },
8888
+ isInRange: {
8889
+ types: [
8890
+ "function"
8891
+ ],
8892
+ description: "Custom movement range validator"
8893
+ },
8894
+ header: {
8895
+ types: [
8896
+ "function"
8897
+ ],
8898
+ description: "-- Slots --"
8899
+ },
8900
+ sidePanel: {
8901
+ types: [
8902
+ "function"
8903
+ ],
8904
+ description: "Side panel (hero detail, hero lists, etc.)"
8905
+ },
8906
+ overlay: {
8907
+ types: [
8908
+ "function"
8909
+ ],
8910
+ description: "Canvas overlay (tooltips, popups)"
8911
+ },
8912
+ footer: {
8913
+ types: [
8914
+ "function"
8915
+ ],
8916
+ description: "Footer"
8917
+ },
8918
+ onHeroSelect: {
8919
+ types: [
8920
+ "function"
8921
+ ],
8922
+ description: "-- Callbacks --"
8923
+ },
8924
+ onHeroMove: {
8925
+ types: [
8926
+ "function"
8927
+ ],
8928
+ description: "onHeroMove prop"
8929
+ },
8930
+ onBattleEncounter: {
8931
+ types: [
8932
+ "function"
8933
+ ],
8934
+ description: "Called when hero clicks an enemy hero tile"
8935
+ },
8936
+ onFeatureEnter: {
8937
+ types: [
8938
+ "function"
8939
+ ],
8940
+ description: "Called when hero enters a feature hex (castle, resource, etc.)"
8941
+ },
8942
+ effectSpriteUrls: {
8943
+ types: [
8944
+ "array"
8945
+ ],
8946
+ description: "-- Canvas pass-through --"
8947
+ },
8948
+ resolveUnitFrame: {
8949
+ types: [
8950
+ "function"
8951
+ ],
8952
+ description: "resolveUnitFrame prop"
8953
+ },
8954
+ className: {
8955
+ types: [
8956
+ "string"
8957
+ ],
8958
+ description: "className prop"
8959
+ }
8960
+ }
8961
+ },
8962
+ heading: {
8963
+ type: "heading",
8964
+ category: "component",
8965
+ description: "Alias for typography \u2014 Typography Atom Component Text elements following the KFlow design system with theme-aware styling.",
8966
+ suggestedFor: [
8967
+ "typography"
8968
+ ],
8969
+ typicalSize: "small",
8970
+ propsSchema: {
8971
+ variant: {
8972
+ types: [
8973
+ "typographyvariant"
8974
+ ],
8975
+ description: "Typography variant"
8976
+ },
8977
+ level: {
8978
+ types: [
8979
+ "number"
8980
+ ],
8981
+ description: "Heading level (1-6) - alternative to variant for headings"
8982
+ },
8983
+ color: {
8984
+ types: [
8985
+ "string"
8986
+ ],
8987
+ description: "Text color"
8988
+ },
8989
+ align: {
8990
+ types: [
8991
+ "string"
8992
+ ],
8993
+ description: "Text alignment"
8994
+ },
8995
+ weight: {
8996
+ types: [
8997
+ "string"
8998
+ ],
8999
+ description: "Font weight override"
9000
+ },
9001
+ size: {
9002
+ types: [
9003
+ "typographysize"
9004
+ ],
9005
+ description: "Font size override"
9006
+ },
9007
+ truncate: {
9008
+ types: [
9009
+ "boolean"
9010
+ ],
9011
+ description: "Truncate with ellipsis (single line)"
9012
+ },
9013
+ overflow: {
9014
+ types: [
9015
+ "string"
9016
+ ],
9017
+ description: "Overflow handling mode"
9018
+ },
9019
+ as: {
9020
+ types: [
9021
+ "unknown"
9022
+ ],
9023
+ description: "Custom HTML element"
9024
+ },
9025
+ id: {
9026
+ types: [
9027
+ "string"
9028
+ ],
9029
+ description: "HTML id attribute"
9030
+ },
9031
+ className: {
9032
+ types: [
9033
+ "string"
9034
+ ],
9035
+ description: "Additional class names"
9036
+ },
9037
+ style: {
9038
+ types: [
9039
+ "object"
9040
+ ],
9041
+ description: "Inline style"
9042
+ },
9043
+ content: {
9044
+ types: [
9045
+ "node"
9046
+ ],
9047
+ description: "Text content (alternative to children)"
9048
+ },
9049
+ children: {
9050
+ types: [
9051
+ "node"
9052
+ ],
9053
+ description: "Children elements"
9054
+ }
9055
+ }
9056
+ },
9057
+ text: {
9058
+ type: "text",
9059
+ category: "component",
9060
+ description: "Alias for typography \u2014 Typography Atom Component Text elements following the KFlow design system with theme-aware styling.",
9061
+ suggestedFor: [
9062
+ "typography"
9063
+ ],
9064
+ typicalSize: "small",
9065
+ propsSchema: {
9066
+ variant: {
9067
+ types: [
9068
+ "typographyvariant"
9069
+ ],
9070
+ description: "Typography variant"
9071
+ },
9072
+ level: {
9073
+ types: [
9074
+ "number"
9075
+ ],
9076
+ description: "Heading level (1-6) - alternative to variant for headings"
9077
+ },
9078
+ color: {
9079
+ types: [
9080
+ "string"
9081
+ ],
9082
+ description: "Text color"
9083
+ },
9084
+ align: {
9085
+ types: [
9086
+ "string"
9087
+ ],
9088
+ description: "Text alignment"
9089
+ },
9090
+ weight: {
9091
+ types: [
9092
+ "string"
9093
+ ],
9094
+ description: "Font weight override"
9095
+ },
9096
+ size: {
9097
+ types: [
9098
+ "typographysize"
9099
+ ],
9100
+ description: "Font size override"
9101
+ },
9102
+ truncate: {
9103
+ types: [
9104
+ "boolean"
9105
+ ],
9106
+ description: "Truncate with ellipsis (single line)"
9107
+ },
9108
+ overflow: {
9109
+ types: [
9110
+ "string"
9111
+ ],
9112
+ description: "Overflow handling mode"
9113
+ },
9114
+ as: {
9115
+ types: [
9116
+ "unknown"
9117
+ ],
9118
+ description: "Custom HTML element"
9119
+ },
9120
+ id: {
9121
+ types: [
9122
+ "string"
9123
+ ],
9124
+ description: "HTML id attribute"
9125
+ },
9126
+ className: {
9127
+ types: [
9128
+ "string"
9129
+ ],
9130
+ description: "Additional class names"
7786
9131
  },
7787
- hud: {
9132
+ style: {
7788
9133
  types: [
7789
- "node"
9134
+ "object"
7790
9135
  ],
7791
- description: "Optional HUD content rendered above the main area"
9136
+ description: "Inline style"
7792
9137
  },
7793
- className: {
9138
+ content: {
7794
9139
  types: [
7795
- "string"
9140
+ "node"
7796
9141
  ],
7797
- description: "Extra class name on the root container"
9142
+ description: "Text content (alternative to children)"
7798
9143
  },
7799
- showTopBar: {
9144
+ children: {
7800
9145
  types: [
7801
- "boolean"
9146
+ "node"
7802
9147
  ],
7803
- description: "Whether to show the minimal top bar (default: true)"
9148
+ description: "Children elements"
7804
9149
  }
7805
9150
  }
7806
9151
  }
@@ -7819,7 +9164,9 @@ var patterns_registry_default = {
7819
9164
  "debug",
7820
9165
  "meta",
7821
9166
  "component",
7822
- "template"
9167
+ "template",
9168
+ "visualization",
9169
+ "media"
7823
9170
  ]
7824
9171
  };
7825
9172
 
@@ -8328,7 +9675,7 @@ var integrators_registry_default = {
8328
9675
  // src/component-mapping.json
8329
9676
  var component_mapping_default = {
8330
9677
  version: "1.0.0",
8331
- exportedAt: "2026-02-09T10:45:55.417Z",
9678
+ exportedAt: "2026-02-10T15:35:56.769Z",
8332
9679
  mappings: {
8333
9680
  "page-header": {
8334
9681
  component: "PageHeader",
@@ -8366,7 +9713,7 @@ var component_mapping_default = {
8366
9713
  category: "form"
8367
9714
  },
8368
9715
  "form-section": {
8369
- component: "FormSection",
9716
+ component: "Form",
8370
9717
  importPath: "@/components/organisms/Form",
8371
9718
  category: "form"
8372
9719
  },
@@ -8465,46 +9812,21 @@ var component_mapping_default = {
8465
9812
  importPath: "@/components/organisms/layout/DashboardGrid",
8466
9813
  category: "layout"
8467
9814
  },
8468
- "game-canvas": {
8469
- component: "GameCanvas",
8470
- importPath: "@/components/organisms/game/GameCanvas",
8471
- category: "game"
8472
- },
8473
9815
  "game-hud": {
8474
9816
  component: "GameHud",
8475
9817
  importPath: "@/components/organisms/game/GameHud",
8476
9818
  category: "game"
8477
9819
  },
8478
- "game-controls": {
8479
- component: "GameControls",
8480
- importPath: "@/components/organisms/game/GameControls",
8481
- category: "game"
8482
- },
8483
9820
  "game-menu": {
8484
9821
  component: "GameMenu",
8485
9822
  importPath: "@/components/organisms/game/GameMenu",
8486
9823
  category: "game"
8487
9824
  },
8488
- "game-pause-overlay": {
8489
- component: "GamePauseOverlay",
8490
- importPath: "@/components/organisms/game/GamePauseOverlay",
8491
- category: "game"
8492
- },
8493
9825
  "game-over-screen": {
8494
9826
  component: "GameOverScreen",
8495
9827
  importPath: "@/components/organisms/game/GameOverScreen",
8496
9828
  category: "game"
8497
9829
  },
8498
- "level-select": {
8499
- component: "LevelSelect",
8500
- importPath: "@/components/organisms/game/LevelSelect",
8501
- category: "game"
8502
- },
8503
- "tilemap-renderer": {
8504
- component: "TilemapRenderer",
8505
- importPath: "@/components/organisms/game/TilemapRenderer",
8506
- category: "game"
8507
- },
8508
9830
  "inventory-panel": {
8509
9831
  component: "InventoryPanel",
8510
9832
  importPath: "@/components/organisms/game/InventoryPanel",
@@ -8515,16 +9837,6 @@ var component_mapping_default = {
8515
9837
  importPath: "@/components/organisms/game/DialogueBox",
8516
9838
  category: "game"
8517
9839
  },
8518
- "input-listener": {
8519
- component: "InputListener",
8520
- importPath: "@/components/organisms/game/InputListener",
8521
- category: "game"
8522
- },
8523
- "collision-detector": {
8524
- component: "CollisionDetector",
8525
- importPath: "@/components/organisms/game/CollisionDetector",
8526
- category: "game"
8527
- },
8528
9840
  "runtime-debugger": {
8529
9841
  component: "RuntimeDebugger",
8530
9842
  importPath: "@/components/organisms/debug/RuntimeDebugger",
@@ -8723,6 +10035,16 @@ var component_mapping_default = {
8723
10035
  importPath: "@/components/atoms/Stack",
8724
10036
  category: "component"
8725
10037
  },
10038
+ vstack: {
10039
+ component: "VStack",
10040
+ importPath: "@/components/atoms/Stack",
10041
+ category: "component"
10042
+ },
10043
+ hstack: {
10044
+ component: "HStack",
10045
+ importPath: "@/components/atoms/Stack",
10046
+ category: "component"
10047
+ },
8726
10048
  "text-highlight": {
8727
10049
  component: "TextHighlight",
8728
10050
  importPath: "@/components/atoms/TextHighlight",
@@ -8942,6 +10264,81 @@ var component_mapping_default = {
8942
10264
  component: "GameShell",
8943
10265
  importPath: "@/components/templates/GameShell",
8944
10266
  category: "template"
10267
+ },
10268
+ chart: {
10269
+ component: "Chart",
10270
+ importPath: "@almadar/ui",
10271
+ category: "visualization"
10272
+ },
10273
+ meter: {
10274
+ component: "Meter",
10275
+ importPath: "@almadar/ui",
10276
+ category: "visualization"
10277
+ },
10278
+ timeline: {
10279
+ component: "Timeline",
10280
+ importPath: "@almadar/ui",
10281
+ category: "display"
10282
+ },
10283
+ "media-gallery": {
10284
+ component: "MediaGallery",
10285
+ importPath: "@almadar/ui",
10286
+ category: "media"
10287
+ },
10288
+ "signature-pad": {
10289
+ component: "SignaturePad",
10290
+ importPath: "@almadar/ui",
10291
+ category: "form"
10292
+ },
10293
+ "document-viewer": {
10294
+ component: "DocumentViewer",
10295
+ importPath: "@almadar/ui",
10296
+ category: "display"
10297
+ },
10298
+ "graph-canvas": {
10299
+ component: "GraphCanvas",
10300
+ importPath: "@almadar/ui",
10301
+ category: "visualization"
10302
+ },
10303
+ "code-viewer": {
10304
+ component: "CodeViewer",
10305
+ importPath: "@almadar/ui",
10306
+ category: "display"
10307
+ },
10308
+ "canvas-effect": {
10309
+ component: "CanvasEffect",
10310
+ importPath: "@/components/organisms/CanvasEffect",
10311
+ category: "game"
10312
+ },
10313
+ "isometric-canvas": {
10314
+ component: "IsometricCanvas",
10315
+ importPath: "@/components/organisms/IsometricCanvas",
10316
+ category: "game"
10317
+ },
10318
+ "battle-template": {
10319
+ component: "BattleTemplate",
10320
+ importPath: "@/components/templates/BattleTemplate",
10321
+ category: "template"
10322
+ },
10323
+ "castle-template": {
10324
+ component: "CastleTemplate",
10325
+ importPath: "@/components/templates/CastleTemplate",
10326
+ category: "template"
10327
+ },
10328
+ "world-map-template": {
10329
+ component: "WorldMapTemplate",
10330
+ importPath: "@/components/templates/WorldMapTemplate",
10331
+ category: "template"
10332
+ },
10333
+ heading: {
10334
+ component: "Typography",
10335
+ importPath: "@/components/atoms/Typography",
10336
+ category: "component"
10337
+ },
10338
+ text: {
10339
+ component: "Typography",
10340
+ importPath: "@/components/atoms/Typography",
10341
+ category: "component"
8945
10342
  }
8946
10343
  }
8947
10344
  };
@@ -8949,7 +10346,7 @@ var component_mapping_default = {
8949
10346
  // src/event-contracts.json
8950
10347
  var event_contracts_default = {
8951
10348
  version: "1.0.0",
8952
- exportedAt: "2026-02-09T10:45:55.417Z",
10349
+ exportedAt: "2026-02-10T15:35:56.769Z",
8953
10350
  contracts: {
8954
10351
  form: {
8955
10352
  emits: [
@@ -8991,17 +10388,31 @@ var event_contracts_default = {
8991
10388
  "form-section": {
8992
10389
  emits: [
8993
10390
  {
8994
- event: "SAVE",
8995
- trigger: "submit",
10391
+ event: "GLOBAL_VARIABLE_SET",
10392
+ trigger: "action",
10393
+ payload: {
10394
+ type: "object"
10395
+ }
10396
+ },
10397
+ {
10398
+ event: "VIOLATION_DETECTED",
10399
+ trigger: "action",
8996
10400
  payload: {
8997
- type: "FormData"
10401
+ type: "object"
8998
10402
  }
8999
10403
  },
9000
10404
  {
9001
- event: "CANCEL",
9002
- trigger: "click",
10405
+ event: "FIELD_CHANGED",
10406
+ trigger: "action",
9003
10407
  payload: {
9004
- type: "void"
10408
+ type: "object"
10409
+ }
10410
+ },
10411
+ {
10412
+ event: "CLOSE",
10413
+ trigger: "action",
10414
+ payload: {
10415
+ type: "object"
9005
10416
  }
9006
10417
  }
9007
10418
  ],
@@ -9009,7 +10420,7 @@ var event_contracts_default = {
9009
10420
  "SAVE",
9010
10421
  "CANCEL"
9011
10422
  ],
9012
- entityAware: false
10423
+ entityAware: true
9013
10424
  },
9014
10425
  "form-actions": {
9015
10426
  emits: [
@@ -9422,56 +10833,11 @@ var event_contracts_default = {
9422
10833
  requires: [],
9423
10834
  entityAware: false
9424
10835
  },
9425
- "game-canvas": {
9426
- emits: [
9427
- {
9428
- event: "MOVE_LEFT",
9429
- trigger: "keydown",
9430
- payload: {
9431
- type: "void"
9432
- },
9433
- optional: true
9434
- },
9435
- {
9436
- event: "MOVE_RIGHT",
9437
- trigger: "keydown",
9438
- payload: {
9439
- type: "void"
9440
- },
9441
- optional: true
9442
- },
9443
- {
9444
- event: "JUMP",
9445
- trigger: "keydown",
9446
- payload: {
9447
- type: "void"
9448
- },
9449
- optional: true
9450
- },
9451
- {
9452
- event: "PAUSE",
9453
- trigger: "keydown",
9454
- payload: {
9455
- type: "void"
9456
- },
9457
- optional: true
9458
- }
9459
- ],
9460
- requires: [],
9461
- entityAware: false,
9462
- configDriven: true
9463
- },
9464
10836
  "game-hud": {
9465
10837
  emits: [],
9466
10838
  requires: [],
9467
10839
  entityAware: false
9468
10840
  },
9469
- "game-controls": {
9470
- emits: [],
9471
- requires: [],
9472
- entityAware: false,
9473
- configDriven: true
9474
- },
9475
10841
  "game-menu": {
9476
10842
  emits: [
9477
10843
  {
@@ -9503,21 +10869,6 @@ var event_contracts_default = {
9503
10869
  entityAware: false,
9504
10870
  configDriven: true
9505
10871
  },
9506
- "game-pause-overlay": {
9507
- emits: [
9508
- {
9509
- event: "RESUME",
9510
- trigger: "action",
9511
- payload: {
9512
- type: "object"
9513
- }
9514
- }
9515
- ],
9516
- requires: [
9517
- "RESUME"
9518
- ],
9519
- entityAware: false
9520
- },
9521
10872
  "game-over-screen": {
9522
10873
  emits: [
9523
10874
  {
@@ -9541,24 +10892,6 @@ var event_contracts_default = {
9541
10892
  ],
9542
10893
  entityAware: false
9543
10894
  },
9544
- "level-select": {
9545
- emits: [
9546
- {
9547
- event: "SELECT_LEVEL",
9548
- trigger: "click",
9549
- payload: {
9550
- type: "EntityRow"
9551
- }
9552
- }
9553
- ],
9554
- requires: [],
9555
- entityAware: true
9556
- },
9557
- "tilemap-renderer": {
9558
- emits: [],
9559
- requires: [],
9560
- entityAware: false
9561
- },
9562
10895
  "inventory-panel": {
9563
10896
  emits: [
9564
10897
  {
@@ -9602,55 +10935,6 @@ var event_contracts_default = {
9602
10935
  requires: [],
9603
10936
  entityAware: false
9604
10937
  },
9605
- "input-listener": {
9606
- emits: [
9607
- {
9608
- event: "KEY_DOWN",
9609
- trigger: "keydown",
9610
- payload: {
9611
- type: "void"
9612
- }
9613
- },
9614
- {
9615
- event: "KEY_UP",
9616
- trigger: "keydown",
9617
- payload: {
9618
- type: "void"
9619
- }
9620
- }
9621
- ],
9622
- requires: [],
9623
- entityAware: false,
9624
- configDriven: true
9625
- },
9626
- "collision-detector": {
9627
- emits: [
9628
- {
9629
- event: "COLLISION_ENTER",
9630
- trigger: "action",
9631
- payload: {
9632
- type: "EntityRow"
9633
- }
9634
- },
9635
- {
9636
- event: "COLLISION_EXIT",
9637
- trigger: "action",
9638
- payload: {
9639
- type: "EntityRow"
9640
- }
9641
- },
9642
- {
9643
- event: "TRIGGER_ENTER",
9644
- trigger: "action",
9645
- payload: {
9646
- type: "EntityRow"
9647
- }
9648
- }
9649
- ],
9650
- requires: [],
9651
- entityAware: false,
9652
- configDriven: true
9653
- },
9654
10938
  "runtime-debugger": {
9655
10939
  emits: [],
9656
10940
  requires: [],
@@ -9928,6 +11212,66 @@ var event_contracts_default = {
9928
11212
  ],
9929
11213
  requires: [],
9930
11214
  entityAware: false
11215
+ },
11216
+ "code-viewer": {
11217
+ emits: [
11218
+ {
11219
+ event: "CODE_COPY",
11220
+ trigger: "action",
11221
+ payload: {
11222
+ type: "object"
11223
+ }
11224
+ }
11225
+ ],
11226
+ requires: [],
11227
+ entityAware: true
11228
+ },
11229
+ "document-viewer": {
11230
+ emits: [
11231
+ {
11232
+ event: "DOCUMENT_DOWNLOAD",
11233
+ trigger: "action",
11234
+ payload: {
11235
+ type: "object"
11236
+ }
11237
+ },
11238
+ {
11239
+ event: "DOCUMENT_PRINT",
11240
+ trigger: "action",
11241
+ payload: {
11242
+ type: "object"
11243
+ }
11244
+ },
11245
+ {
11246
+ event: "DOCUMENT_PAGE_CHANGE",
11247
+ trigger: "action",
11248
+ payload: {
11249
+ type: "object"
11250
+ }
11251
+ }
11252
+ ],
11253
+ requires: [],
11254
+ entityAware: true
11255
+ },
11256
+ "media-gallery": {
11257
+ emits: [
11258
+ {
11259
+ event: "MEDIA_SELECT",
11260
+ trigger: "action",
11261
+ payload: {
11262
+ type: "object"
11263
+ }
11264
+ },
11265
+ {
11266
+ event: "MEDIA_UPLOAD",
11267
+ trigger: "action",
11268
+ payload: {
11269
+ type: "object"
11270
+ }
11271
+ }
11272
+ ],
11273
+ requires: [],
11274
+ entityAware: true
9931
11275
  }
9932
11276
  }
9933
11277
  };
@@ -9935,220 +11279,125 @@ var event_contracts_default = {
9935
11279
  // src/pattern-types.ts
9936
11280
  var PATTERN_TYPES = [
9937
11281
  "accordion",
9938
- "activation-block",
9939
- "admin-dashboard",
9940
- "agent-chat-panel",
9941
- "ai-analysis-panel",
11282
+ "action-buttons",
9942
11283
  "alert",
9943
- "assessment-form",
11284
+ "auth-layout",
9944
11285
  "avatar",
9945
11286
  "badge",
9946
- "bloom-quiz-block",
9947
- "board-grid",
9948
- "body-measurement-input",
11287
+ "battle-template",
9949
11288
  "box",
9950
11289
  "breadcrumb",
9951
11290
  "button",
9952
- "button-group",
11291
+ "button-pattern",
11292
+ "canvas-effect",
9953
11293
  "card",
9954
- "card-deck",
9955
- "card-hand",
9956
- "card-selector",
9957
- "care-indicator",
11294
+ "castle-template",
9958
11295
  "center",
11296
+ "chart",
9959
11297
  "checkbox",
9960
- "checklist",
9961
- "checklist-item",
9962
- "code-block",
9963
- "collision-detector",
9964
- "companies-list",
9965
- "company-card",
9966
- "company-info-card",
9967
- "compliance-summary",
9968
- "concept-card",
9969
- "concept-meta-tags",
9970
- "conditional-field",
11298
+ "code-viewer",
11299
+ "conditional-wrapper",
9971
11300
  "confirm-dialog",
9972
- "connection-block",
9973
- "connections-view",
9974
11301
  "container",
9975
- "credit-expiration-alert",
9976
- "credit-meter",
9977
- "custom",
9978
- "daily-progress-input",
11302
+ "control-button",
11303
+ "counter-template",
11304
+ "crud-template",
11305
+ "custom-pattern",
11306
+ "d-pad",
9979
11307
  "dashboard-grid",
11308
+ "dashboard-layout",
9980
11309
  "detail-panel",
9981
11310
  "dialogue-box",
9982
11311
  "divider",
9983
- "document-preview",
11312
+ "document-viewer",
9984
11313
  "drawer",
9985
- "drawer-container",
11314
+ "drawer-slot",
9986
11315
  "empty-state",
9987
11316
  "entity-cards",
9988
- "entity-detail",
9989
11317
  "entity-list",
9990
- "entity-search",
9991
11318
  "entity-table",
9992
11319
  "error-state",
9993
- "evidence-gallery",
9994
- "evidence-thumbnail",
9995
- "exercise-video-link",
9996
11320
  "filter-group",
9997
- "flash-card",
9998
- "flash-card-stack",
9999
- "flash-cards-display",
10000
- "float-button",
10001
- "floating-action-menu",
10002
- "force-directed-graph",
11321
+ "flex",
11322
+ "floating-action-button",
10003
11323
  "form",
10004
- "form-fields",
11324
+ "form-actions",
11325
+ "form-field",
10005
11326
  "form-section",
10006
- "game-battle",
10007
- "game-building-slot",
10008
- "game-canvas",
10009
- "game-castle",
10010
- "game-combat-log",
10011
- "game-controls",
10012
- "game-damage-popup",
10013
- "game-debug-panel",
10014
- "game-hero-profile",
11327
+ "form-section-header",
11328
+ "form-template",
10015
11329
  "game-hud",
10016
- "game-isometric-canvas",
10017
11330
  "game-menu",
10018
11331
  "game-over-screen",
10019
- "game-pause-overlay",
10020
- "game-recruit-card",
10021
- "game-resource-bar",
10022
- "game-trait-slot",
10023
- "game-trait-viewer",
10024
- "game-world-map",
10025
- "garden-view",
10026
- "graph-intelligence",
10027
- "graph-legend",
11332
+ "game-shell",
11333
+ "game-template",
11334
+ "generic-app-template",
11335
+ "graph-canvas",
10028
11336
  "grid",
10029
- "group-session-card",
10030
- "growth-meter",
10031
- "harvest-card",
10032
- "heading",
10033
- "hstack",
11337
+ "header",
11338
+ "health-bar",
10034
11339
  "icon",
10035
- "icon-button",
10036
- "image",
10037
- "info-display",
10038
11340
  "input",
10039
- "input-listener",
10040
- "inspection-card",
10041
- "inspection-checklist",
10042
- "inspection-form-demo",
10043
- "inspection-process",
10044
- "inspection-summary",
10045
- "inspection-timeline",
10046
- "inspection-wizard",
10047
- "inspection-wizard-step",
10048
- "inspections-list",
10049
- "inspector-card",
10050
- "inspectors-list",
11341
+ "input-group",
10051
11342
  "inventory-panel",
10052
- "invites-list",
10053
- "kinesiology-exam-form",
11343
+ "isometric-canvas",
10054
11344
  "label",
10055
- "law-reference-badge",
10056
- "layer-navigator",
10057
- "learning-goal-display",
10058
- "level-select",
10059
- "lift-tracker",
10060
- "link",
11345
+ "law-reference-tooltip",
11346
+ "layout-pattern",
11347
+ "list-template",
10061
11348
  "loading-state",
10062
- "markdown-content",
10063
11349
  "master-detail",
10064
- "match3-grid",
10065
- "meal-plan-card",
11350
+ "media-gallery",
10066
11351
  "menu",
10067
- "mind-map-canvas",
10068
- "mind-map-connections",
10069
- "mind-map-header",
10070
- "mind-map-node",
11352
+ "meter",
10071
11353
  "modal",
10072
- "modal-container",
10073
- "multi-select",
10074
- "note-content",
10075
- "note-list",
10076
- "note-list-item",
11354
+ "modal-slot",
11355
+ "navigation",
10077
11356
  "notification",
10078
- "nutrition-summary",
10079
- "objection-recorder",
11357
+ "orbital-visualization",
11358
+ "overlay",
10080
11359
  "page-header",
10081
11360
  "pagination",
10082
- "participant-list",
10083
- "pattern-proposal",
10084
- "phase-indicator",
10085
- "photo-attachment",
10086
- "plant-card",
10087
11361
  "popover",
10088
11362
  "progress-bar",
10089
- "progress-chart",
10090
- "progress-header",
10091
- "project-detail",
10092
- "projects-list",
10093
- "puzzle-board",
10094
- "quiz-block",
10095
11363
  "radio",
10096
- "reflection-block",
10097
- "relationship-garden",
11364
+ "relation-select",
10098
11365
  "repeatable-form-section",
10099
- "rule-check-item",
10100
11366
  "runtime-debugger",
10101
- "schema-diff-viewer",
10102
- "search-bar",
11367
+ "score-display",
10103
11368
  "search-input",
10104
- "season-indicator",
10105
- "seed-network",
10106
- "segment-renderer",
11369
+ "section",
10107
11370
  "select",
10108
- "session-scheduler",
10109
- "shareable-link-generator",
10110
- "signature",
10111
- "signature-capture",
11371
+ "settings-template",
11372
+ "side-panel",
11373
+ "sidebar",
11374
+ "signature-pad",
10112
11375
  "simple-grid",
10113
11376
  "spacer",
10114
- "special-exercise-card",
10115
11377
  "spinner",
10116
- "split-layout",
11378
+ "split",
11379
+ "split-pane",
11380
+ "sprite",
11381
+ "stack",
11382
+ "stat-badge",
10117
11383
  "stats",
10118
- "stats-grid",
10119
- "streaming-display",
10120
- "studio-home-web-template",
10121
- "studio-project-template",
10122
- "suggestions-list",
10123
11384
  "switch",
10124
- "tab-bar",
10125
- "tabbed-layout",
11385
+ "tabbed-container",
11386
+ "table",
10126
11387
  "tabs",
10127
- "team-detail",
10128
- "team-members-list",
10129
- "teams-list",
10130
- "text",
11388
+ "text-highlight",
10131
11389
  "textarea",
10132
- "tilemap-renderer",
10133
- "title-only",
10134
- "todo-list",
11390
+ "theme-toggle",
11391
+ "timeline",
11392
+ "toast-slot",
10135
11393
  "tooltip",
10136
- "trainee-card",
10137
- "trainee-comparison",
10138
- "trust-intelligence",
10139
- "trust-meter",
10140
- "turn-indicator",
10141
- "user-profile",
10142
- "users-list",
10143
- "violation-form",
10144
- "violation-list-item",
10145
- "vstack",
10146
- "weather-widget",
10147
- "weekly-calendar",
11394
+ "typography",
11395
+ "u-i-slot-renderer",
11396
+ "violation-alert",
10148
11397
  "wizard-container",
10149
11398
  "wizard-navigation",
10150
11399
  "wizard-progress",
10151
- "workout-plan-card"
11400
+ "world-map-template"
10152
11401
  ];
10153
11402
  function isValidPatternType(type) {
10154
11403
  return PATTERN_TYPES.includes(type);