@almadar/patterns 1.0.13 → 1.0.14

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-10T05:45:36.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
  },
@@ -2536,110 +2536,6 @@ var patterns_registry_default = {
2536
2536
  }
2537
2537
  }
2538
2538
  },
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
2539
  "game-hud": {
2644
2540
  type: "game-hud",
2645
2541
  category: "game",
@@ -2694,68 +2590,6 @@ var patterns_registry_default = {
2694
2590
  }
2695
2591
  }
2696
2592
  },
2697
- "game-controls": {
2698
- type: "game-controls",
2699
- category: "game",
2700
- description: "Touch/button controls for mobile/accessibility",
2701
- suggestedFor: [
2702
- "mobile games",
2703
- "touch controls"
2704
- ],
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
2593
  "game-menu": {
2760
2594
  type: "game-menu",
2761
2595
  category: "game",
@@ -2823,66 +2657,6 @@ var patterns_registry_default = {
2823
2657
  }
2824
2658
  }
2825
2659
  },
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
2660
  "game-over-screen": {
2887
2661
  type: "game-over-screen",
2888
2662
  category: "game",
@@ -2965,255 +2739,99 @@ var patterns_registry_default = {
2965
2739
  }
2966
2740
  }
2967
2741
  },
2968
- "level-select": {
2969
- type: "level-select",
2742
+ "inventory-panel": {
2743
+ type: "inventory-panel",
2970
2744
  category: "game",
2971
- description: "Grid or list of levels to choose from",
2745
+ description: "Grid-based inventory UI for items, equipment, or resources",
2972
2746
  suggestedFor: [
2973
- "level selection",
2974
- "stage selection"
2747
+ "rpg inventory",
2748
+ "item management",
2749
+ "crafting"
2975
2750
  ],
2976
- typicalSize: "large",
2751
+ typicalSize: "medium",
2977
2752
  propsSchema: {
2978
- levels: {
2753
+ items: {
2979
2754
  types: [
2980
2755
  "array"
2981
2756
  ],
2982
- description: "Level data"
2983
- },
2984
- entity: {
2985
- types: [
2986
- "string"
2987
- ],
2988
- description: "Entity name (schema config)"
2757
+ description: "Array of items in inventory",
2758
+ required: true
2989
2759
  },
2990
- layout: {
2760
+ slots: {
2991
2761
  types: [
2992
- "string"
2762
+ "number"
2993
2763
  ],
2994
- description: "Layout variant"
2764
+ description: "Total number of slots",
2765
+ required: true
2995
2766
  },
2996
- fields: {
2767
+ columns: {
2997
2768
  types: [
2998
- "array"
2769
+ "number"
2999
2770
  ],
3000
- description: "Fields to display per level"
2771
+ description: "Number of columns in grid",
2772
+ required: true
3001
2773
  },
3002
- selectEvent: {
2774
+ selectedSlot: {
3003
2775
  types: [
3004
- "string"
2776
+ "number"
3005
2777
  ],
3006
- description: "Event to emit on selection (schema config)"
2778
+ description: "Currently selected slot index"
3007
2779
  },
3008
- onSelect: {
2780
+ onSelectSlot: {
3009
2781
  types: [
3010
2782
  "function"
3011
2783
  ],
3012
- description: "Called when a level is selected"
2784
+ description: "Called when a slot is selected",
2785
+ required: true
3013
2786
  },
3014
- navigatesTo: {
2787
+ onUseItem: {
3015
2788
  types: [
3016
- "string"
2789
+ "function"
3017
2790
  ],
3018
- description: "Path to navigate to on selection. Supports :id, :levelId, :number placeholders"
2791
+ description: "Called when an item is used (double-click or Enter)"
3019
2792
  },
3020
- selectedId: {
2793
+ onDropItem: {
3021
2794
  types: [
3022
- "string"
2795
+ "function"
3023
2796
  ],
3024
- description: "Currently selected level ID"
2797
+ description: "Called when an item is dropped"
3025
2798
  },
3026
- maxStars: {
2799
+ showTooltips: {
3027
2800
  types: [
3028
- "number"
2801
+ "boolean"
3029
2802
  ],
3030
- description: "Maximum stars possible per level"
2803
+ description: "Show item tooltips on hover"
3031
2804
  },
3032
2805
  className: {
3033
2806
  types: [
3034
2807
  "string"
3035
2808
  ],
3036
- description: "Additional CSS classes"
2809
+ description: "Optional className"
3037
2810
  },
3038
- title: {
2811
+ slotSize: {
3039
2812
  types: [
3040
- "string"
2813
+ "number"
3041
2814
  ],
3042
- description: "Title above the level grid"
2815
+ description: "Slot size in pixels"
3043
2816
  }
3044
2817
  }
3045
2818
  },
3046
- "tilemap-renderer": {
3047
- type: "tilemap-renderer",
2819
+ "dialogue-box": {
2820
+ type: "dialogue-box",
3048
2821
  category: "game",
3049
- description: "Renders tile-based level data from instances with camera following",
2822
+ description: "RPG-style dialogue box with speaker, portrait, and choices",
3050
2823
  suggestedFor: [
3051
- "platformer levels",
3052
- "tile-based games",
3053
- "rpg maps"
2824
+ "npc dialogue",
2825
+ "story sequences",
2826
+ "tutorials"
3054
2827
  ],
3055
- typicalSize: "large",
2828
+ typicalSize: "small",
3056
2829
  propsSchema: {
3057
- layers: {
2830
+ dialogue: {
3058
2831
  types: [
3059
- "array"
2832
+ "dialoguenode"
3060
2833
  ],
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
- "inventory-panel": {
3125
- type: "inventory-panel",
3126
- category: "game",
3127
- description: "Grid-based inventory UI for items, equipment, or resources",
3128
- suggestedFor: [
3129
- "rpg inventory",
3130
- "item management",
3131
- "crafting"
3132
- ],
3133
- typicalSize: "medium",
3134
- propsSchema: {
3135
- items: {
3136
- types: [
3137
- "array"
3138
- ],
3139
- description: "Array of items in inventory",
3140
- required: true
3141
- },
3142
- slots: {
3143
- types: [
3144
- "number"
3145
- ],
3146
- description: "Total number of slots",
3147
- required: true
3148
- },
3149
- columns: {
3150
- types: [
3151
- "number"
3152
- ],
3153
- description: "Number of columns in grid",
3154
- required: true
3155
- },
3156
- selectedSlot: {
3157
- types: [
3158
- "number"
3159
- ],
3160
- description: "Currently selected slot index"
3161
- },
3162
- onSelectSlot: {
3163
- types: [
3164
- "function"
3165
- ],
3166
- description: "Called when a slot is selected",
3167
- required: true
3168
- },
3169
- onUseItem: {
3170
- types: [
3171
- "function"
3172
- ],
3173
- description: "Called when an item is used (double-click or Enter)"
3174
- },
3175
- onDropItem: {
3176
- types: [
3177
- "function"
3178
- ],
3179
- description: "Called when an item is dropped"
3180
- },
3181
- showTooltips: {
3182
- types: [
3183
- "boolean"
3184
- ],
3185
- description: "Show item tooltips on hover"
3186
- },
3187
- className: {
3188
- types: [
3189
- "string"
3190
- ],
3191
- description: "Optional className"
3192
- },
3193
- slotSize: {
3194
- types: [
3195
- "number"
3196
- ],
3197
- description: "Slot size in pixels"
3198
- }
3199
- }
3200
- },
3201
- "dialogue-box": {
3202
- type: "dialogue-box",
3203
- category: "game",
3204
- description: "RPG-style dialogue box with speaker, portrait, and choices",
3205
- suggestedFor: [
3206
- "npc dialogue",
3207
- "story sequences",
3208
- "tutorials"
3209
- ],
3210
- typicalSize: "small",
3211
- propsSchema: {
3212
- dialogue: {
3213
- types: [
3214
- "dialoguenode"
3215
- ],
3216
- description: "Current dialogue node to display",
2834
+ description: "Current dialogue node to display",
3217
2835
  required: true
3218
2836
  },
3219
2837
  typewriterSpeed: {
@@ -3254,74 +2872,6 @@ var patterns_registry_default = {
3254
2872
  }
3255
2873
  }
3256
2874
  },
3257
- "input-listener": {
3258
- type: "input-listener",
3259
- category: "game",
3260
- description: "Invisible component that captures keyboard/mouse input and emits events",
3261
- suggestedFor: [
3262
- "games",
3263
- "interactive applications",
3264
- "keyboard shortcuts"
3265
- ],
3266
- typicalSize: "tiny",
3267
- propsSchema: {
3268
- bindings: {
3269
- types: [
3270
- "unknown"
3271
- ],
3272
- description: "Key bindings configuration"
3273
- },
3274
- enabled: {
3275
- types: [
3276
- "boolean"
3277
- ],
3278
- description: "Whether input listening is enabled"
3279
- },
3280
- eventBus: {
3281
- types: [
3282
- "eventbuscontexttype"
3283
- ],
3284
- description: "Event bus for emitting events (optional, uses hook if not provided)"
3285
- }
3286
- }
3287
- },
3288
- "collision-detector": {
3289
- type: "collision-detector",
3290
- category: "game",
3291
- description: "Invisible component that runs collision detection and emits collision events",
3292
- suggestedFor: [
3293
- "games",
3294
- "2D physics",
3295
- "spatial interactions"
3296
- ],
3297
- typicalSize: "tiny",
3298
- propsSchema: {
3299
- algorithm: {
3300
- types: [
3301
- "string"
3302
- ],
3303
- description: "Collision detection algorithm"
3304
- },
3305
- rules: {
3306
- types: [
3307
- "unknown"
3308
- ],
3309
- description: "Collision rules to check"
3310
- },
3311
- enabled: {
3312
- types: [
3313
- "boolean"
3314
- ],
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
2875
  "runtime-debugger": {
3326
2876
  type: "runtime-debugger",
3327
2877
  category: "debug",
@@ -3647,12 +3197,6 @@ var patterns_registry_default = {
3647
3197
  ],
3648
3198
  description: "Maximum value (for calculating percentage) @default 100"
3649
3199
  },
3650
- type: {
3651
- types: [
3652
- "progressbartype"
3653
- ],
3654
- description: "Type of the progress bar (linear, circular, stepped) @default 'linear'"
3655
- },
3656
3200
  variant: {
3657
3201
  types: [
3658
3202
  "progressbarvariant"
@@ -3700,6 +3244,12 @@ var patterns_registry_default = {
3700
3244
  "string"
3701
3245
  ],
3702
3246
  description: "Additional CSS classes"
3247
+ },
3248
+ progressType: {
3249
+ types: [
3250
+ "progressbartype"
3251
+ ],
3252
+ description: "Type of the progress bar (linear, circular, stepped) @default 'linear'"
3703
3253
  }
3704
3254
  }
3705
3255
  },
@@ -3732,12 +3282,6 @@ var patterns_registry_default = {
3732
3282
  ],
3733
3283
  typicalSize: "tiny",
3734
3284
  propsSchema: {
3735
- type: {
3736
- types: [
3737
- "string"
3738
- ],
3739
- description: "Input type - supports 'select' and 'textarea' in addition to standard types"
3740
- },
3741
3285
  error: {
3742
3286
  types: [
3743
3287
  "string"
@@ -3791,6 +3335,12 @@ var patterns_registry_default = {
3791
3335
  "react.changeeventhandler"
3792
3336
  ],
3793
3337
  description: "onChange handler - accepts events from input, select, or textarea"
3338
+ },
3339
+ inputType: {
3340
+ types: [
3341
+ "string"
3342
+ ],
3343
+ description: "Input type - supports 'select' and 'textarea' in addition to standard types"
3794
3344
  }
3795
3345
  }
3796
3346
  },
@@ -4706,13 +4256,6 @@ var patterns_registry_default = {
4706
4256
  ],
4707
4257
  typicalSize: "small",
4708
4258
  propsSchema: {
4709
- type: {
4710
- types: [
4711
- "highlighttype"
4712
- ],
4713
- description: "Type of highlight (determines color)",
4714
- required: true
4715
- },
4716
4259
  isActive: {
4717
4260
  types: [
4718
4261
  "boolean"
@@ -4755,6 +4298,13 @@ var patterns_registry_default = {
4755
4298
  ],
4756
4299
  description: "Highlighted text content",
4757
4300
  required: true
4301
+ },
4302
+ highlightType: {
4303
+ types: [
4304
+ "highlighttype"
4305
+ ],
4306
+ description: "Type of highlight (determines color)",
4307
+ required: true
4758
4308
  }
4759
4309
  }
4760
4310
  },
@@ -7803,47 +7353,1117 @@ var patterns_registry_default = {
7803
7353
  description: "Whether to show the minimal top bar (default: true)"
7804
7354
  }
7805
7355
  }
7806
- }
7807
- },
7808
- categories: [
7809
- "display",
7810
- "header",
7811
- "form",
7812
- "filter",
7813
- "navigation",
7814
- "state",
7815
- "dashboard",
7816
- "container",
7817
- "layout",
7818
- "game",
7819
- "debug",
7820
- "meta",
7821
- "component",
7822
- "template"
7823
- ]
7824
- };
7825
-
7826
- // src/integrators-registry.json
7827
- var integrators_registry_default = {
7828
- version: "1.0.0",
7829
- exportedAt: "2026-01-25T00:58:14.172Z",
7830
- integrators: {
7831
- youtube: {
7832
- name: "youtube",
7833
- description: "YouTube Data API - search videos, get video/channel details",
7834
- category: "media",
7835
- actions: [
7836
- {
7837
- name: "search",
7838
- description: "Search for videos",
7839
- params: [
7840
- {
7841
- name: "query",
7842
- type: "string",
7843
- required: true,
7844
- description: "Search query"
7845
- },
7846
- {
7356
+ },
7357
+ chart: {
7358
+ type: "chart",
7359
+ category: "visualization",
7360
+ description: "Data visualization chart supporting bar, line, pie, area, and donut types",
7361
+ suggestedFor: [
7362
+ "dashboards",
7363
+ "analytics",
7364
+ "data visualization",
7365
+ "reporting"
7366
+ ],
7367
+ typicalSize: "medium",
7368
+ propsSchema: {
7369
+ title: {
7370
+ types: [
7371
+ "string"
7372
+ ],
7373
+ description: "Chart title"
7374
+ },
7375
+ subtitle: {
7376
+ types: [
7377
+ "string"
7378
+ ],
7379
+ description: "Chart subtitle / description"
7380
+ },
7381
+ chartType: {
7382
+ types: [
7383
+ "charttype"
7384
+ ],
7385
+ description: "Chart type"
7386
+ },
7387
+ series: {
7388
+ types: [
7389
+ "unknown"
7390
+ ],
7391
+ description: "Data series"
7392
+ },
7393
+ data: {
7394
+ types: [
7395
+ "unknown"
7396
+ ],
7397
+ description: "Simple data (single series shorthand)"
7398
+ },
7399
+ height: {
7400
+ types: [
7401
+ "number"
7402
+ ],
7403
+ description: "Chart height in px"
7404
+ },
7405
+ showLegend: {
7406
+ types: [
7407
+ "boolean"
7408
+ ],
7409
+ description: "Show legend"
7410
+ },
7411
+ showValues: {
7412
+ types: [
7413
+ "boolean"
7414
+ ],
7415
+ description: "Show values on chart"
7416
+ },
7417
+ actions: {
7418
+ types: [
7419
+ "unknown"
7420
+ ],
7421
+ description: "Actions for chart interactions"
7422
+ },
7423
+ entity: {
7424
+ types: [
7425
+ "string"
7426
+ ],
7427
+ description: "Entity name for schema-driven auto-fetch"
7428
+ },
7429
+ isLoading: {
7430
+ types: [
7431
+ "boolean"
7432
+ ],
7433
+ description: "Loading state"
7434
+ },
7435
+ error: {
7436
+ types: [
7437
+ "error"
7438
+ ],
7439
+ description: "Error state"
7440
+ },
7441
+ className: {
7442
+ types: [
7443
+ "string"
7444
+ ],
7445
+ description: "Additional CSS classes"
7446
+ }
7447
+ }
7448
+ },
7449
+ meter: {
7450
+ type: "meter",
7451
+ category: "visualization",
7452
+ description: "Gauge/meter component for displaying a value within a range with thresholds",
7453
+ suggestedFor: [
7454
+ "dashboards",
7455
+ "progress tracking",
7456
+ "credit/quota displays",
7457
+ "KPI indicators"
7458
+ ],
7459
+ typicalSize: "small",
7460
+ propsSchema: {
7461
+ value: {
7462
+ types: [
7463
+ "number"
7464
+ ],
7465
+ description: "Current value",
7466
+ required: true
7467
+ },
7468
+ min: {
7469
+ types: [
7470
+ "number"
7471
+ ],
7472
+ description: "Minimum value"
7473
+ },
7474
+ max: {
7475
+ types: [
7476
+ "number"
7477
+ ],
7478
+ description: "Maximum value"
7479
+ },
7480
+ label: {
7481
+ types: [
7482
+ "string"
7483
+ ],
7484
+ description: "Display label"
7485
+ },
7486
+ unit: {
7487
+ types: [
7488
+ "string"
7489
+ ],
7490
+ description: "Unit suffix (e.g., '%', 'MB', 'credits')"
7491
+ },
7492
+ variant: {
7493
+ types: [
7494
+ "metervariant"
7495
+ ],
7496
+ description: "Display variant"
7497
+ },
7498
+ thresholds: {
7499
+ types: [
7500
+ "unknown"
7501
+ ],
7502
+ description: "Color thresholds"
7503
+ },
7504
+ segments: {
7505
+ types: [
7506
+ "number"
7507
+ ],
7508
+ description: "Number of segments (for segmented variant)"
7509
+ },
7510
+ showValue: {
7511
+ types: [
7512
+ "boolean"
7513
+ ],
7514
+ description: "Show value text"
7515
+ },
7516
+ size: {
7517
+ types: [
7518
+ "string"
7519
+ ],
7520
+ description: "Size (for radial variant)"
7521
+ },
7522
+ actions: {
7523
+ types: [
7524
+ "unknown"
7525
+ ],
7526
+ description: "Actions"
7527
+ },
7528
+ entity: {
7529
+ types: [
7530
+ "string"
7531
+ ],
7532
+ description: "Entity name for schema-driven auto-fetch"
7533
+ },
7534
+ isLoading: {
7535
+ types: [
7536
+ "boolean"
7537
+ ],
7538
+ description: "Loading state"
7539
+ },
7540
+ error: {
7541
+ types: [
7542
+ "error"
7543
+ ],
7544
+ description: "Error state"
7545
+ },
7546
+ className: {
7547
+ types: [
7548
+ "string"
7549
+ ],
7550
+ description: "Additional CSS classes"
7551
+ }
7552
+ }
7553
+ },
7554
+ timeline: {
7555
+ type: "timeline",
7556
+ category: "display",
7557
+ description: "Vertical timeline for displaying chronological events with status indicators",
7558
+ suggestedFor: [
7559
+ "activity logs",
7560
+ "process tracking",
7561
+ "history views",
7562
+ "workflow steps"
7563
+ ],
7564
+ typicalSize: "medium",
7565
+ propsSchema: {
7566
+ title: {
7567
+ types: [
7568
+ "string"
7569
+ ],
7570
+ description: "Timeline title"
7571
+ },
7572
+ items: {
7573
+ types: [
7574
+ "unknown"
7575
+ ],
7576
+ description: "Timeline items"
7577
+ },
7578
+ data: {
7579
+ types: [
7580
+ "unknown"
7581
+ ],
7582
+ description: "Schema-driven data"
7583
+ },
7584
+ fields: {
7585
+ types: [
7586
+ "unknown"
7587
+ ],
7588
+ description: "Fields to display"
7589
+ },
7590
+ itemActions: {
7591
+ types: [
7592
+ "unknown"
7593
+ ],
7594
+ description: "Actions per item"
7595
+ },
7596
+ entity: {
7597
+ types: [
7598
+ "string"
7599
+ ],
7600
+ description: "Entity name for schema-driven auto-fetch"
7601
+ },
7602
+ isLoading: {
7603
+ types: [
7604
+ "boolean"
7605
+ ],
7606
+ description: "Loading state"
7607
+ },
7608
+ error: {
7609
+ types: [
7610
+ "error"
7611
+ ],
7612
+ description: "Error state"
7613
+ },
7614
+ className: {
7615
+ types: [
7616
+ "string"
7617
+ ],
7618
+ description: "Additional CSS classes"
7619
+ }
7620
+ }
7621
+ },
7622
+ "media-gallery": {
7623
+ type: "media-gallery",
7624
+ category: "media",
7625
+ description: "Grid gallery for images and media with lightbox, selection, and upload",
7626
+ suggestedFor: [
7627
+ "photo galleries",
7628
+ "image management",
7629
+ "media libraries",
7630
+ "portfolio displays"
7631
+ ],
7632
+ typicalSize: "medium",
7633
+ propsSchema: {
7634
+ title: {
7635
+ types: [
7636
+ "string"
7637
+ ],
7638
+ description: "Gallery title"
7639
+ },
7640
+ items: {
7641
+ types: [
7642
+ "unknown"
7643
+ ],
7644
+ description: "Media items"
7645
+ },
7646
+ data: {
7647
+ types: [
7648
+ "unknown"
7649
+ ],
7650
+ description: "Schema-driven data"
7651
+ },
7652
+ columns: {
7653
+ types: [
7654
+ "number"
7655
+ ],
7656
+ description: "Column count"
7657
+ },
7658
+ selectable: {
7659
+ types: [
7660
+ "boolean"
7661
+ ],
7662
+ description: "Enable item selection"
7663
+ },
7664
+ selectedItems: {
7665
+ types: [
7666
+ "unknown"
7667
+ ],
7668
+ description: "Selected item IDs"
7669
+ },
7670
+ onSelectionChange: {
7671
+ types: [
7672
+ "function"
7673
+ ],
7674
+ description: "Selection change callback"
7675
+ },
7676
+ showUpload: {
7677
+ types: [
7678
+ "boolean"
7679
+ ],
7680
+ description: "Show upload button"
7681
+ },
7682
+ actions: {
7683
+ types: [
7684
+ "unknown"
7685
+ ],
7686
+ description: "Actions"
7687
+ },
7688
+ aspectRatio: {
7689
+ types: [
7690
+ "string"
7691
+ ],
7692
+ description: "Aspect ratio for thumbnails"
7693
+ },
7694
+ entity: {
7695
+ types: [
7696
+ "string"
7697
+ ],
7698
+ description: "Entity name for schema-driven auto-fetch"
7699
+ },
7700
+ isLoading: {
7701
+ types: [
7702
+ "boolean"
7703
+ ],
7704
+ description: "Loading state"
7705
+ },
7706
+ error: {
7707
+ types: [
7708
+ "error"
7709
+ ],
7710
+ description: "Error state"
7711
+ },
7712
+ className: {
7713
+ types: [
7714
+ "string"
7715
+ ],
7716
+ description: "Additional CSS classes"
7717
+ }
7718
+ }
7719
+ },
7720
+ "signature-pad": {
7721
+ type: "signature-pad",
7722
+ category: "form",
7723
+ description: "Canvas-based signature capture pad with draw, clear, and confirm actions",
7724
+ suggestedFor: [
7725
+ "form signing",
7726
+ "approval workflows",
7727
+ "document signing",
7728
+ "consent forms"
7729
+ ],
7730
+ typicalSize: "small",
7731
+ propsSchema: {
7732
+ label: {
7733
+ types: [
7734
+ "string"
7735
+ ],
7736
+ description: "Label above the pad"
7737
+ },
7738
+ helperText: {
7739
+ types: [
7740
+ "string"
7741
+ ],
7742
+ description: "Helper text"
7743
+ },
7744
+ strokeColor: {
7745
+ types: [
7746
+ "string"
7747
+ ],
7748
+ description: "Stroke color"
7749
+ },
7750
+ strokeWidth: {
7751
+ types: [
7752
+ "number"
7753
+ ],
7754
+ description: "Stroke width"
7755
+ },
7756
+ height: {
7757
+ types: [
7758
+ "number"
7759
+ ],
7760
+ description: "Pad height"
7761
+ },
7762
+ readOnly: {
7763
+ types: [
7764
+ "boolean"
7765
+ ],
7766
+ description: "Whether the pad is read-only"
7767
+ },
7768
+ value: {
7769
+ types: [
7770
+ "string"
7771
+ ],
7772
+ description: "Existing signature image URL"
7773
+ },
7774
+ onChange: {
7775
+ types: [
7776
+ "function"
7777
+ ],
7778
+ description: "Callback when signature changes"
7779
+ },
7780
+ signEvent: {
7781
+ types: [
7782
+ "string"
7783
+ ],
7784
+ description: "Event to emit on sign"
7785
+ },
7786
+ clearEvent: {
7787
+ types: [
7788
+ "string"
7789
+ ],
7790
+ description: "Event to emit on clear"
7791
+ },
7792
+ entity: {
7793
+ types: [
7794
+ "string"
7795
+ ],
7796
+ description: "Entity name for schema-driven context"
7797
+ },
7798
+ isLoading: {
7799
+ types: [
7800
+ "boolean"
7801
+ ],
7802
+ description: "Loading state"
7803
+ },
7804
+ error: {
7805
+ types: [
7806
+ "error"
7807
+ ],
7808
+ description: "Error state"
7809
+ },
7810
+ className: {
7811
+ types: [
7812
+ "string"
7813
+ ],
7814
+ description: "Additional CSS classes"
7815
+ }
7816
+ }
7817
+ },
7818
+ "document-viewer": {
7819
+ type: "document-viewer",
7820
+ category: "display",
7821
+ description: "Document viewer for PDFs, text, HTML, and markdown with zoom and pagination",
7822
+ suggestedFor: [
7823
+ "document management",
7824
+ "PDF viewing",
7825
+ "content preview",
7826
+ "report viewing"
7827
+ ],
7828
+ typicalSize: "large",
7829
+ propsSchema: {
7830
+ title: {
7831
+ types: [
7832
+ "string"
7833
+ ],
7834
+ description: "Document title"
7835
+ },
7836
+ src: {
7837
+ types: [
7838
+ "string"
7839
+ ],
7840
+ description: "Document URL (for PDF/external documents)"
7841
+ },
7842
+ content: {
7843
+ types: [
7844
+ "string"
7845
+ ],
7846
+ description: "Document content (for text/html/markdown)"
7847
+ },
7848
+ documentType: {
7849
+ types: [
7850
+ "documenttype"
7851
+ ],
7852
+ description: "Document type"
7853
+ },
7854
+ currentPage: {
7855
+ types: [
7856
+ "number"
7857
+ ],
7858
+ description: "Current page (for multi-page documents)"
7859
+ },
7860
+ totalPages: {
7861
+ types: [
7862
+ "number"
7863
+ ],
7864
+ description: "Total pages"
7865
+ },
7866
+ height: {
7867
+ types: [
7868
+ "number",
7869
+ "string"
7870
+ ],
7871
+ description: "Viewer height"
7872
+ },
7873
+ showToolbar: {
7874
+ types: [
7875
+ "boolean"
7876
+ ],
7877
+ description: "Show toolbar"
7878
+ },
7879
+ showDownload: {
7880
+ types: [
7881
+ "boolean"
7882
+ ],
7883
+ description: "Show download button"
7884
+ },
7885
+ showPrint: {
7886
+ types: [
7887
+ "boolean"
7888
+ ],
7889
+ description: "Show print button"
7890
+ },
7891
+ actions: {
7892
+ types: [
7893
+ "unknown"
7894
+ ],
7895
+ description: "Actions"
7896
+ },
7897
+ documents: {
7898
+ types: [
7899
+ "unknown"
7900
+ ],
7901
+ description: "Multiple documents (tabbed view)"
7902
+ },
7903
+ entity: {
7904
+ types: [
7905
+ "string"
7906
+ ],
7907
+ description: "Entity name for schema-driven auto-fetch"
7908
+ },
7909
+ isLoading: {
7910
+ types: [
7911
+ "boolean"
7912
+ ],
7913
+ description: "Loading state"
7914
+ },
7915
+ error: {
7916
+ types: [
7917
+ "error"
7918
+ ],
7919
+ description: "Error state"
7920
+ },
7921
+ className: {
7922
+ types: [
7923
+ "string"
7924
+ ],
7925
+ description: "Additional CSS classes"
7926
+ }
7927
+ }
7928
+ },
7929
+ "graph-canvas": {
7930
+ type: "graph-canvas",
7931
+ category: "visualization",
7932
+ description: "Force-directed graph visualization for node-link data with interactive zoom, pan, and layout",
7933
+ suggestedFor: [
7934
+ "knowledge graphs",
7935
+ "network visualization",
7936
+ "relationship mapping",
7937
+ "dependency graphs"
7938
+ ],
7939
+ typicalSize: "large",
7940
+ propsSchema: {
7941
+ title: {
7942
+ types: [
7943
+ "string"
7944
+ ],
7945
+ description: "Graph title"
7946
+ },
7947
+ nodes: {
7948
+ types: [
7949
+ "unknown"
7950
+ ],
7951
+ description: "Graph nodes"
7952
+ },
7953
+ edges: {
7954
+ types: [
7955
+ "unknown"
7956
+ ],
7957
+ description: "Graph edges"
7958
+ },
7959
+ height: {
7960
+ types: [
7961
+ "number"
7962
+ ],
7963
+ description: "Canvas height"
7964
+ },
7965
+ showLabels: {
7966
+ types: [
7967
+ "boolean"
7968
+ ],
7969
+ description: "Show node labels"
7970
+ },
7971
+ interactive: {
7972
+ types: [
7973
+ "boolean"
7974
+ ],
7975
+ description: "Enable zoom/pan"
7976
+ },
7977
+ draggable: {
7978
+ types: [
7979
+ "boolean"
7980
+ ],
7981
+ description: "Enable node dragging"
7982
+ },
7983
+ actions: {
7984
+ types: [
7985
+ "unknown"
7986
+ ],
7987
+ description: "Actions"
7988
+ },
7989
+ onNodeClick: {
7990
+ types: [
7991
+ "function"
7992
+ ],
7993
+ description: "On node click"
7994
+ },
7995
+ nodeClickEvent: {
7996
+ types: [
7997
+ "string"
7998
+ ],
7999
+ description: "Node click event"
8000
+ },
8001
+ layout: {
8002
+ types: [
8003
+ "string"
8004
+ ],
8005
+ description: "Layout algorithm"
8006
+ },
8007
+ entity: {
8008
+ types: [
8009
+ "string"
8010
+ ],
8011
+ description: "Entity name for schema-driven auto-fetch"
8012
+ },
8013
+ isLoading: {
8014
+ types: [
8015
+ "boolean"
8016
+ ],
8017
+ description: "Loading state"
8018
+ },
8019
+ error: {
8020
+ types: [
8021
+ "error"
8022
+ ],
8023
+ description: "Error state"
8024
+ },
8025
+ className: {
8026
+ types: [
8027
+ "string"
8028
+ ],
8029
+ description: "Additional CSS classes"
8030
+ }
8031
+ }
8032
+ },
8033
+ "code-viewer": {
8034
+ type: "code-viewer",
8035
+ category: "display",
8036
+ description: "Code and diff viewer with line numbers, copy, word-wrap, and multi-file tabs",
8037
+ suggestedFor: [
8038
+ "code display",
8039
+ "diff viewing",
8040
+ "schema inspection",
8041
+ "log viewing"
8042
+ ],
8043
+ typicalSize: "medium",
8044
+ propsSchema: {
8045
+ title: {
8046
+ types: [
8047
+ "string"
8048
+ ],
8049
+ description: "Viewer title"
8050
+ },
8051
+ code: {
8052
+ types: [
8053
+ "string"
8054
+ ],
8055
+ description: "Code content"
8056
+ },
8057
+ language: {
8058
+ types: [
8059
+ "string"
8060
+ ],
8061
+ description: "Language for display label"
8062
+ },
8063
+ diff: {
8064
+ types: [
8065
+ "unknown"
8066
+ ],
8067
+ description: "Diff lines (for diff mode)"
8068
+ },
8069
+ oldValue: {
8070
+ types: [
8071
+ "string"
8072
+ ],
8073
+ description: "Old value (for generating diff)"
8074
+ },
8075
+ newValue: {
8076
+ types: [
8077
+ "string"
8078
+ ],
8079
+ description: "New value (for generating diff)"
8080
+ },
8081
+ mode: {
8082
+ types: [
8083
+ "codeviewermode"
8084
+ ],
8085
+ description: "Display mode"
8086
+ },
8087
+ showLineNumbers: {
8088
+ types: [
8089
+ "boolean"
8090
+ ],
8091
+ description: "Show line numbers"
8092
+ },
8093
+ showCopy: {
8094
+ types: [
8095
+ "boolean"
8096
+ ],
8097
+ description: "Show copy button"
8098
+ },
8099
+ wordWrap: {
8100
+ types: [
8101
+ "boolean"
8102
+ ],
8103
+ description: "Enable word wrap"
8104
+ },
8105
+ maxHeight: {
8106
+ types: [
8107
+ "number",
8108
+ "string"
8109
+ ],
8110
+ description: "Max height before scrolling"
8111
+ },
8112
+ files: {
8113
+ types: [
8114
+ "unknown"
8115
+ ],
8116
+ description: "Multiple files (tabbed view)"
8117
+ },
8118
+ actions: {
8119
+ types: [
8120
+ "unknown"
8121
+ ],
8122
+ description: "Actions"
8123
+ },
8124
+ entity: {
8125
+ types: [
8126
+ "string"
8127
+ ],
8128
+ description: "Entity name for schema-driven auto-fetch"
8129
+ },
8130
+ isLoading: {
8131
+ types: [
8132
+ "boolean"
8133
+ ],
8134
+ description: "Loading state"
8135
+ },
8136
+ error: {
8137
+ types: [
8138
+ "error"
8139
+ ],
8140
+ description: "Error state"
8141
+ },
8142
+ className: {
8143
+ types: [
8144
+ "string"
8145
+ ],
8146
+ description: "Additional CSS classes"
8147
+ }
8148
+ }
8149
+ },
8150
+ "canvas-effect": {
8151
+ type: "canvas-effect",
8152
+ category: "game",
8153
+ 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",
8154
+ suggestedFor: [
8155
+ "canvas",
8156
+ "effect",
8157
+ "canvas effect"
8158
+ ],
8159
+ typicalSize: "large",
8160
+ propsSchema: {
8161
+ actionType: {
8162
+ types: [
8163
+ "combatactiontype"
8164
+ ],
8165
+ description: "The type of combat action to visualise",
8166
+ required: true
8167
+ },
8168
+ x: {
8169
+ types: [
8170
+ "number"
8171
+ ],
8172
+ description: "Screen-space X position (center of the effect)",
8173
+ required: true
8174
+ },
8175
+ y: {
8176
+ types: [
8177
+ "number"
8178
+ ],
8179
+ description: "Screen-space Y position (center of the effect)",
8180
+ required: true
8181
+ },
8182
+ duration: {
8183
+ types: [
8184
+ "number"
8185
+ ],
8186
+ description: "Duration in ms before auto-dismiss (default 800)"
8187
+ },
8188
+ intensity: {
8189
+ types: [
8190
+ "number"
8191
+ ],
8192
+ description: "Optional intensity multiplier (1 = normal, 2 = double size/brightness)"
8193
+ },
8194
+ onComplete: {
8195
+ types: [
8196
+ "function"
8197
+ ],
8198
+ description: "Callback when the effect animation completes"
8199
+ },
8200
+ className: {
8201
+ types: [
8202
+ "string"
8203
+ ],
8204
+ description: "Additional CSS classes"
8205
+ },
8206
+ isLoading: {
8207
+ types: [
8208
+ "boolean"
8209
+ ],
8210
+ description: "Loading state indicator"
8211
+ },
8212
+ error: {
8213
+ types: [
8214
+ "error"
8215
+ ],
8216
+ description: "Error state"
8217
+ },
8218
+ effectSpriteUrl: {
8219
+ types: [
8220
+ "string"
8221
+ ],
8222
+ description: "--- Remote asset loading ---"
8223
+ },
8224
+ assetBaseUrl: {
8225
+ types: [
8226
+ "string"
8227
+ ],
8228
+ description: "Base URL for remote assets. Prepended to relative effectSpriteUrl paths."
8229
+ }
8230
+ }
8231
+ },
8232
+ "isometric-canvas": {
8233
+ type: "isometric-canvas",
8234
+ category: "game",
8235
+ 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.)",
8236
+ suggestedFor: [
8237
+ "isometric",
8238
+ "canvas",
8239
+ "isometric canvas"
8240
+ ],
8241
+ typicalSize: "large",
8242
+ propsSchema: {
8243
+ className: {
8244
+ types: [
8245
+ "string"
8246
+ ],
8247
+ description: "--- Closed-circuit props (MANDATORY) ---"
8248
+ },
8249
+ isLoading: {
8250
+ types: [
8251
+ "boolean"
8252
+ ],
8253
+ description: "Loading state indicator"
8254
+ },
8255
+ error: {
8256
+ types: [
8257
+ "error"
8258
+ ],
8259
+ description: "Error state"
8260
+ },
8261
+ entity: {
8262
+ types: [
8263
+ "string"
8264
+ ],
8265
+ description: "Entity name for schema-driven auto-fetch"
8266
+ },
8267
+ tiles: {
8268
+ types: [
8269
+ "array"
8270
+ ],
8271
+ description: "--- Grid data ---"
8272
+ },
8273
+ units: {
8274
+ types: [
8275
+ "array"
8276
+ ],
8277
+ description: "Array of units on the board"
8278
+ },
8279
+ features: {
8280
+ types: [
8281
+ "array"
8282
+ ],
8283
+ description: "Array of features (resources, portals, buildings, etc.)"
8284
+ },
8285
+ selectedUnitId: {
8286
+ types: [
8287
+ "string"
8288
+ ],
8289
+ description: "--- Interaction state ---"
8290
+ },
8291
+ validMoves: {
8292
+ types: [
8293
+ "array"
8294
+ ],
8295
+ description: "Valid move positions (shown as pulsing green highlights)"
8296
+ },
8297
+ attackTargets: {
8298
+ types: [
8299
+ "array"
8300
+ ],
8301
+ description: "Attack target positions (shown as pulsing red highlights)"
8302
+ },
8303
+ hoveredTile: {
8304
+ types: [
8305
+ "object"
8306
+ ],
8307
+ description: "Hovered tile position"
8308
+ },
8309
+ onTileClick: {
8310
+ types: [
8311
+ "function"
8312
+ ],
8313
+ description: "--- Event handlers ---"
8314
+ },
8315
+ onUnitClick: {
8316
+ types: [
8317
+ "function"
8318
+ ],
8319
+ description: "Unit click handler"
8320
+ },
8321
+ onTileHover: {
8322
+ types: [
8323
+ "function"
8324
+ ],
8325
+ description: "Tile hover handler"
8326
+ },
8327
+ onTileLeave: {
8328
+ types: [
8329
+ "function"
8330
+ ],
8331
+ description: "Tile leave handler"
8332
+ },
8333
+ scale: {
8334
+ types: [
8335
+ "number"
8336
+ ],
8337
+ description: "--- Rendering options ---"
8338
+ },
8339
+ debug: {
8340
+ types: [
8341
+ "boolean"
8342
+ ],
8343
+ description: "Show debug grid lines and coordinates"
8344
+ },
8345
+ backgroundImage: {
8346
+ types: [
8347
+ "string"
8348
+ ],
8349
+ description: "Background image URL tiled behind the isometric grid"
8350
+ },
8351
+ showMinimap: {
8352
+ types: [
8353
+ "boolean"
8354
+ ],
8355
+ description: "Toggle minimap overlay"
8356
+ },
8357
+ enableCamera: {
8358
+ types: [
8359
+ "boolean"
8360
+ ],
8361
+ description: "Enable camera pan/zoom controls"
8362
+ },
8363
+ unitScale: {
8364
+ types: [
8365
+ "number"
8366
+ ],
8367
+ description: "Extra scale multiplier for unit draw size. 1 = default."
8368
+ },
8369
+ getTerrainSprite: {
8370
+ types: [
8371
+ "function"
8372
+ ],
8373
+ description: "--- Asset resolution (project-agnostic) ---"
8374
+ },
8375
+ getFeatureSprite: {
8376
+ types: [
8377
+ "function"
8378
+ ],
8379
+ description: "Resolve feature sprite URL from feature type key"
8380
+ },
8381
+ getUnitSprite: {
8382
+ types: [
8383
+ "function"
8384
+ ],
8385
+ description: "Resolve unit static sprite URL"
8386
+ },
8387
+ resolveUnitFrame: {
8388
+ types: [
8389
+ "function"
8390
+ ],
8391
+ description: "Resolve animated sprite sheet frame for a unit"
8392
+ },
8393
+ effectSpriteUrls: {
8394
+ types: [
8395
+ "array"
8396
+ ],
8397
+ description: "Additional sprite URLs to preload (e.g., effect sprites)"
8398
+ },
8399
+ onDrawEffects: {
8400
+ types: [
8401
+ "function"
8402
+ ],
8403
+ description: "Callback to draw canvas effects after units"
8404
+ },
8405
+ hasActiveEffects: {
8406
+ types: [
8407
+ "boolean"
8408
+ ],
8409
+ description: "Whether there are active effects \u2014 keeps RAF loop alive"
8410
+ },
8411
+ assetBaseUrl: {
8412
+ types: [
8413
+ "string"
8414
+ ],
8415
+ description: "--- Remote asset loading ---"
8416
+ },
8417
+ assetManifest: {
8418
+ types: [
8419
+ "object"
8420
+ ],
8421
+ 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."
8422
+ }
8423
+ }
8424
+ }
8425
+ },
8426
+ categories: [
8427
+ "display",
8428
+ "header",
8429
+ "form",
8430
+ "filter",
8431
+ "navigation",
8432
+ "state",
8433
+ "dashboard",
8434
+ "container",
8435
+ "layout",
8436
+ "game",
8437
+ "debug",
8438
+ "meta",
8439
+ "component",
8440
+ "template",
8441
+ "visualization",
8442
+ "media"
8443
+ ]
8444
+ };
8445
+
8446
+ // src/integrators-registry.json
8447
+ var integrators_registry_default = {
8448
+ version: "1.0.0",
8449
+ exportedAt: "2026-01-25T00:58:14.172Z",
8450
+ integrators: {
8451
+ youtube: {
8452
+ name: "youtube",
8453
+ description: "YouTube Data API - search videos, get video/channel details",
8454
+ category: "media",
8455
+ actions: [
8456
+ {
8457
+ name: "search",
8458
+ description: "Search for videos",
8459
+ params: [
8460
+ {
8461
+ name: "query",
8462
+ type: "string",
8463
+ required: true,
8464
+ description: "Search query"
8465
+ },
8466
+ {
7847
8467
  name: "maxResults",
7848
8468
  type: "number",
7849
8469
  required: false,
@@ -8328,7 +8948,7 @@ var integrators_registry_default = {
8328
8948
  // src/component-mapping.json
8329
8949
  var component_mapping_default = {
8330
8950
  version: "1.0.0",
8331
- exportedAt: "2026-02-09T10:45:55.417Z",
8951
+ exportedAt: "2026-02-10T05:45:36.769Z",
8332
8952
  mappings: {
8333
8953
  "page-header": {
8334
8954
  component: "PageHeader",
@@ -8465,46 +9085,21 @@ var component_mapping_default = {
8465
9085
  importPath: "@/components/organisms/layout/DashboardGrid",
8466
9086
  category: "layout"
8467
9087
  },
8468
- "game-canvas": {
8469
- component: "GameCanvas",
8470
- importPath: "@/components/organisms/game/GameCanvas",
8471
- category: "game"
8472
- },
8473
9088
  "game-hud": {
8474
9089
  component: "GameHud",
8475
9090
  importPath: "@/components/organisms/game/GameHud",
8476
9091
  category: "game"
8477
9092
  },
8478
- "game-controls": {
8479
- component: "GameControls",
8480
- importPath: "@/components/organisms/game/GameControls",
8481
- category: "game"
8482
- },
8483
9093
  "game-menu": {
8484
9094
  component: "GameMenu",
8485
9095
  importPath: "@/components/organisms/game/GameMenu",
8486
9096
  category: "game"
8487
9097
  },
8488
- "game-pause-overlay": {
8489
- component: "GamePauseOverlay",
8490
- importPath: "@/components/organisms/game/GamePauseOverlay",
8491
- category: "game"
8492
- },
8493
9098
  "game-over-screen": {
8494
9099
  component: "GameOverScreen",
8495
9100
  importPath: "@/components/organisms/game/GameOverScreen",
8496
9101
  category: "game"
8497
9102
  },
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
9103
  "inventory-panel": {
8509
9104
  component: "InventoryPanel",
8510
9105
  importPath: "@/components/organisms/game/InventoryPanel",
@@ -8515,16 +9110,6 @@ var component_mapping_default = {
8515
9110
  importPath: "@/components/organisms/game/DialogueBox",
8516
9111
  category: "game"
8517
9112
  },
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
9113
  "runtime-debugger": {
8529
9114
  component: "RuntimeDebugger",
8530
9115
  importPath: "@/components/organisms/debug/RuntimeDebugger",
@@ -8723,6 +9308,16 @@ var component_mapping_default = {
8723
9308
  importPath: "@/components/atoms/Stack",
8724
9309
  category: "component"
8725
9310
  },
9311
+ vstack: {
9312
+ component: "VStack",
9313
+ importPath: "@/components/atoms/Stack",
9314
+ category: "component"
9315
+ },
9316
+ hstack: {
9317
+ component: "HStack",
9318
+ importPath: "@/components/atoms/Stack",
9319
+ category: "component"
9320
+ },
8726
9321
  "text-highlight": {
8727
9322
  component: "TextHighlight",
8728
9323
  importPath: "@/components/atoms/TextHighlight",
@@ -8942,6 +9537,56 @@ var component_mapping_default = {
8942
9537
  component: "GameShell",
8943
9538
  importPath: "@/components/templates/GameShell",
8944
9539
  category: "template"
9540
+ },
9541
+ chart: {
9542
+ component: "Chart",
9543
+ importPath: "@almadar/ui",
9544
+ category: "visualization"
9545
+ },
9546
+ meter: {
9547
+ component: "Meter",
9548
+ importPath: "@almadar/ui",
9549
+ category: "visualization"
9550
+ },
9551
+ timeline: {
9552
+ component: "Timeline",
9553
+ importPath: "@almadar/ui",
9554
+ category: "display"
9555
+ },
9556
+ "media-gallery": {
9557
+ component: "MediaGallery",
9558
+ importPath: "@almadar/ui",
9559
+ category: "media"
9560
+ },
9561
+ "signature-pad": {
9562
+ component: "SignaturePad",
9563
+ importPath: "@almadar/ui",
9564
+ category: "form"
9565
+ },
9566
+ "document-viewer": {
9567
+ component: "DocumentViewer",
9568
+ importPath: "@almadar/ui",
9569
+ category: "display"
9570
+ },
9571
+ "graph-canvas": {
9572
+ component: "GraphCanvas",
9573
+ importPath: "@almadar/ui",
9574
+ category: "visualization"
9575
+ },
9576
+ "code-viewer": {
9577
+ component: "CodeViewer",
9578
+ importPath: "@almadar/ui",
9579
+ category: "display"
9580
+ },
9581
+ "canvas-effect": {
9582
+ component: "CanvasEffect",
9583
+ importPath: "@/components/organisms/CanvasEffect",
9584
+ category: "game"
9585
+ },
9586
+ "isometric-canvas": {
9587
+ component: "IsometricCanvas",
9588
+ importPath: "@/components/organisms/IsometricCanvas",
9589
+ category: "game"
8945
9590
  }
8946
9591
  }
8947
9592
  };
@@ -8949,7 +9594,7 @@ var component_mapping_default = {
8949
9594
  // src/event-contracts.json
8950
9595
  var event_contracts_default = {
8951
9596
  version: "1.0.0",
8952
- exportedAt: "2026-02-09T10:45:55.417Z",
9597
+ exportedAt: "2026-02-10T05:45:36.769Z",
8953
9598
  contracts: {
8954
9599
  form: {
8955
9600
  emits: [
@@ -9422,56 +10067,11 @@ var event_contracts_default = {
9422
10067
  requires: [],
9423
10068
  entityAware: false
9424
10069
  },
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
10070
  "game-hud": {
9465
10071
  emits: [],
9466
10072
  requires: [],
9467
10073
  entityAware: false
9468
10074
  },
9469
- "game-controls": {
9470
- emits: [],
9471
- requires: [],
9472
- entityAware: false,
9473
- configDriven: true
9474
- },
9475
10075
  "game-menu": {
9476
10076
  emits: [
9477
10077
  {
@@ -9503,21 +10103,6 @@ var event_contracts_default = {
9503
10103
  entityAware: false,
9504
10104
  configDriven: true
9505
10105
  },
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
10106
  "game-over-screen": {
9522
10107
  emits: [
9523
10108
  {
@@ -9541,24 +10126,6 @@ var event_contracts_default = {
9541
10126
  ],
9542
10127
  entityAware: false
9543
10128
  },
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
10129
  "inventory-panel": {
9563
10130
  emits: [
9564
10131
  {
@@ -9602,55 +10169,6 @@ var event_contracts_default = {
9602
10169
  requires: [],
9603
10170
  entityAware: false
9604
10171
  },
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
10172
  "runtime-debugger": {
9655
10173
  emits: [],
9656
10174
  requires: [],
@@ -9928,6 +10446,66 @@ var event_contracts_default = {
9928
10446
  ],
9929
10447
  requires: [],
9930
10448
  entityAware: false
10449
+ },
10450
+ "code-viewer": {
10451
+ emits: [
10452
+ {
10453
+ event: "CODE_COPY",
10454
+ trigger: "action",
10455
+ payload: {
10456
+ type: "object"
10457
+ }
10458
+ }
10459
+ ],
10460
+ requires: [],
10461
+ entityAware: true
10462
+ },
10463
+ "document-viewer": {
10464
+ emits: [
10465
+ {
10466
+ event: "DOCUMENT_DOWNLOAD",
10467
+ trigger: "action",
10468
+ payload: {
10469
+ type: "object"
10470
+ }
10471
+ },
10472
+ {
10473
+ event: "DOCUMENT_PRINT",
10474
+ trigger: "action",
10475
+ payload: {
10476
+ type: "object"
10477
+ }
10478
+ },
10479
+ {
10480
+ event: "DOCUMENT_PAGE_CHANGE",
10481
+ trigger: "action",
10482
+ payload: {
10483
+ type: "object"
10484
+ }
10485
+ }
10486
+ ],
10487
+ requires: [],
10488
+ entityAware: true
10489
+ },
10490
+ "media-gallery": {
10491
+ emits: [
10492
+ {
10493
+ event: "MEDIA_SELECT",
10494
+ trigger: "action",
10495
+ payload: {
10496
+ type: "object"
10497
+ }
10498
+ },
10499
+ {
10500
+ event: "MEDIA_UPLOAD",
10501
+ trigger: "action",
10502
+ payload: {
10503
+ type: "object"
10504
+ }
10505
+ }
10506
+ ],
10507
+ requires: [],
10508
+ entityAware: true
9931
10509
  }
9932
10510
  }
9933
10511
  };
@@ -9935,220 +10513,122 @@ var event_contracts_default = {
9935
10513
  // src/pattern-types.ts
9936
10514
  var PATTERN_TYPES = [
9937
10515
  "accordion",
9938
- "activation-block",
9939
- "admin-dashboard",
9940
- "agent-chat-panel",
9941
- "ai-analysis-panel",
10516
+ "action-buttons",
9942
10517
  "alert",
9943
- "assessment-form",
10518
+ "auth-layout",
9944
10519
  "avatar",
9945
10520
  "badge",
9946
- "bloom-quiz-block",
9947
- "board-grid",
9948
- "body-measurement-input",
9949
10521
  "box",
9950
10522
  "breadcrumb",
9951
10523
  "button",
9952
- "button-group",
10524
+ "button-pattern",
10525
+ "canvas-effect",
9953
10526
  "card",
9954
- "card-deck",
9955
- "card-hand",
9956
- "card-selector",
9957
- "care-indicator",
9958
10527
  "center",
10528
+ "chart",
9959
10529
  "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",
10530
+ "code-viewer",
10531
+ "conditional-wrapper",
9971
10532
  "confirm-dialog",
9972
- "connection-block",
9973
- "connections-view",
9974
10533
  "container",
9975
- "credit-expiration-alert",
9976
- "credit-meter",
9977
- "custom",
9978
- "daily-progress-input",
10534
+ "control-button",
10535
+ "counter-template",
10536
+ "crud-template",
10537
+ "custom-pattern",
10538
+ "d-pad",
9979
10539
  "dashboard-grid",
10540
+ "dashboard-layout",
9980
10541
  "detail-panel",
9981
10542
  "dialogue-box",
9982
10543
  "divider",
9983
- "document-preview",
10544
+ "document-viewer",
9984
10545
  "drawer",
9985
- "drawer-container",
10546
+ "drawer-slot",
9986
10547
  "empty-state",
9987
10548
  "entity-cards",
9988
- "entity-detail",
9989
10549
  "entity-list",
9990
- "entity-search",
9991
10550
  "entity-table",
9992
10551
  "error-state",
9993
- "evidence-gallery",
9994
- "evidence-thumbnail",
9995
- "exercise-video-link",
9996
10552
  "filter-group",
9997
- "flash-card",
9998
- "flash-card-stack",
9999
- "flash-cards-display",
10000
- "float-button",
10001
- "floating-action-menu",
10002
- "force-directed-graph",
10553
+ "flex",
10554
+ "floating-action-button",
10003
10555
  "form",
10004
- "form-fields",
10556
+ "form-actions",
10557
+ "form-field",
10005
10558
  "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",
10559
+ "form-section-header",
10560
+ "form-template",
10015
10561
  "game-hud",
10016
- "game-isometric-canvas",
10017
10562
  "game-menu",
10018
10563
  "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",
10564
+ "game-shell",
10565
+ "game-template",
10566
+ "generic-app-template",
10567
+ "graph-canvas",
10028
10568
  "grid",
10029
- "group-session-card",
10030
- "growth-meter",
10031
- "harvest-card",
10032
- "heading",
10033
- "hstack",
10569
+ "header",
10570
+ "health-bar",
10034
10571
  "icon",
10035
- "icon-button",
10036
- "image",
10037
- "info-display",
10038
10572
  "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",
10573
+ "input-group",
10051
10574
  "inventory-panel",
10052
- "invites-list",
10053
- "kinesiology-exam-form",
10575
+ "isometric-canvas",
10054
10576
  "label",
10055
- "law-reference-badge",
10056
- "layer-navigator",
10057
- "learning-goal-display",
10058
- "level-select",
10059
- "lift-tracker",
10060
- "link",
10577
+ "law-reference-tooltip",
10578
+ "layout-pattern",
10579
+ "list-template",
10061
10580
  "loading-state",
10062
- "markdown-content",
10063
10581
  "master-detail",
10064
- "match3-grid",
10065
- "meal-plan-card",
10582
+ "media-gallery",
10066
10583
  "menu",
10067
- "mind-map-canvas",
10068
- "mind-map-connections",
10069
- "mind-map-header",
10070
- "mind-map-node",
10584
+ "meter",
10071
10585
  "modal",
10072
- "modal-container",
10073
- "multi-select",
10074
- "note-content",
10075
- "note-list",
10076
- "note-list-item",
10586
+ "modal-slot",
10587
+ "navigation",
10077
10588
  "notification",
10078
- "nutrition-summary",
10079
- "objection-recorder",
10589
+ "orbital-visualization",
10590
+ "overlay",
10080
10591
  "page-header",
10081
10592
  "pagination",
10082
- "participant-list",
10083
- "pattern-proposal",
10084
- "phase-indicator",
10085
- "photo-attachment",
10086
- "plant-card",
10087
10593
  "popover",
10088
10594
  "progress-bar",
10089
- "progress-chart",
10090
- "progress-header",
10091
- "project-detail",
10092
- "projects-list",
10093
- "puzzle-board",
10094
- "quiz-block",
10095
10595
  "radio",
10096
- "reflection-block",
10097
- "relationship-garden",
10596
+ "relation-select",
10098
10597
  "repeatable-form-section",
10099
- "rule-check-item",
10100
10598
  "runtime-debugger",
10101
- "schema-diff-viewer",
10102
- "search-bar",
10599
+ "score-display",
10103
10600
  "search-input",
10104
- "season-indicator",
10105
- "seed-network",
10106
- "segment-renderer",
10601
+ "section",
10107
10602
  "select",
10108
- "session-scheduler",
10109
- "shareable-link-generator",
10110
- "signature",
10111
- "signature-capture",
10603
+ "settings-template",
10604
+ "side-panel",
10605
+ "sidebar",
10606
+ "signature-pad",
10112
10607
  "simple-grid",
10113
10608
  "spacer",
10114
- "special-exercise-card",
10115
10609
  "spinner",
10116
- "split-layout",
10610
+ "split",
10611
+ "split-pane",
10612
+ "sprite",
10613
+ "stack",
10614
+ "stat-badge",
10117
10615
  "stats",
10118
- "stats-grid",
10119
- "streaming-display",
10120
- "studio-home-web-template",
10121
- "studio-project-template",
10122
- "suggestions-list",
10123
10616
  "switch",
10124
- "tab-bar",
10125
- "tabbed-layout",
10617
+ "tabbed-container",
10618
+ "table",
10126
10619
  "tabs",
10127
- "team-detail",
10128
- "team-members-list",
10129
- "teams-list",
10130
- "text",
10620
+ "text-highlight",
10131
10621
  "textarea",
10132
- "tilemap-renderer",
10133
- "title-only",
10134
- "todo-list",
10622
+ "theme-toggle",
10623
+ "timeline",
10624
+ "toast-slot",
10135
10625
  "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",
10626
+ "typography",
10627
+ "u-i-slot-renderer",
10628
+ "violation-alert",
10148
10629
  "wizard-container",
10149
10630
  "wizard-navigation",
10150
- "wizard-progress",
10151
- "workout-plan-card"
10631
+ "wizard-progress"
10152
10632
  ];
10153
10633
  function isValidPatternType(type) {
10154
10634
  return PATTERN_TYPES.includes(type);