@almadar/patterns 2.3.0 → 2.6.0

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-03-09T08:08:00.655Z",
4
+ exportedAt: "2026-03-11T04:10:55.563Z",
5
5
  patterns: {
6
6
  "entity-table": {
7
7
  type: "entity-table",
@@ -2159,9 +2159,10 @@ var patterns_registry_default = {
2159
2159
  },
2160
2160
  icon: {
2161
2161
  types: [
2162
- "icon"
2162
+ "icon",
2163
+ "string"
2163
2164
  ],
2164
- description: "Icon to display"
2165
+ description: "Icon to display (Lucide component or icon name string)"
2165
2166
  },
2166
2167
  iconBg: {
2167
2168
  types: [
@@ -2198,6 +2199,12 @@ var patterns_registry_default = {
2198
2199
  "boolean"
2199
2200
  ],
2200
2201
  description: "Compact display mode"
2202
+ },
2203
+ sparklineData: {
2204
+ types: [
2205
+ "unknown"
2206
+ ],
2207
+ description: "Sparkline data points for an inline trend chart"
2201
2208
  }
2202
2209
  }
2203
2210
  },
@@ -2387,6 +2394,12 @@ var patterns_registry_default = {
2387
2394
  "string"
2388
2395
  ],
2389
2396
  description: "Declarative close event \u2014 emits UI:{closeEvent} via eventBus when modal should close"
2397
+ },
2398
+ swipeDownToClose: {
2399
+ types: [
2400
+ "boolean"
2401
+ ],
2402
+ description: "Enable swipe-down-to-close on mobile bottom sheet (default: true)"
2390
2403
  }
2391
2404
  }
2392
2405
  },
@@ -3521,6 +3534,12 @@ var patterns_registry_default = {
3521
3534
  "string"
3522
3535
  ],
3523
3536
  description: "Badge label text (alternative to children for schema-driven rendering)"
3537
+ },
3538
+ icon: {
3539
+ types: [
3540
+ "node"
3541
+ ],
3542
+ description: "Icon name (Lucide icon string) or React node"
3524
3543
  }
3525
3544
  }
3526
3545
  },
@@ -3753,6 +3772,18 @@ var patterns_registry_default = {
3753
3772
  "number"
3754
3773
  ],
3755
3774
  description: "Maximum level"
3775
+ },
3776
+ longPressEvent: {
3777
+ types: [
3778
+ "string"
3779
+ ],
3780
+ description: "Event emitted on long press: UI:{longPressEvent}"
3781
+ },
3782
+ longPressPayload: {
3783
+ types: [
3784
+ "object"
3785
+ ],
3786
+ description: "Additional payload for long-press events"
3756
3787
  }
3757
3788
  }
3758
3789
  },
@@ -4855,6 +4886,12 @@ var patterns_registry_default = {
4855
4886
  "object"
4856
4887
  ],
4857
4888
  description: "Payload to include with the action event"
4889
+ },
4890
+ responsive: {
4891
+ types: [
4892
+ "boolean"
4893
+ ],
4894
+ description: "When true, horizontal stacks flip to vertical below the md breakpoint (768px)"
4858
4895
  }
4859
4896
  }
4860
4897
  },
@@ -8487,7 +8524,7 @@ var patterns_registry_default = {
8487
8524
  },
8488
8525
  "graph-canvas": {
8489
8526
  type: "graph-canvas",
8490
- category: "visualization",
8527
+ category: "game",
8491
8528
  description: "Force-directed graph visualization for node-link data with interactive zoom, pan, and layout",
8492
8529
  suggestedFor: [
8493
8530
  "knowledge graphs",
@@ -8823,18 +8860,6 @@ var patterns_registry_default = {
8823
8860
  ],
8824
8861
  typicalSize: "large",
8825
8862
  propsSchema: {
8826
- entity: {
8827
- types: [
8828
- "string"
8829
- ],
8830
- description: "Entity name for schema-driven integration"
8831
- },
8832
- data: {
8833
- types: [
8834
- "array"
8835
- ],
8836
- description: "Data array provided by the trait via render-ui"
8837
- },
8838
8863
  className: {
8839
8864
  types: [
8840
8865
  "string"
@@ -8849,63 +8874,15 @@ var patterns_registry_default = {
8849
8874
  },
8850
8875
  error: {
8851
8876
  types: [
8852
- "object"
8877
+ "error"
8853
8878
  ],
8854
8879
  description: "Error state"
8855
8880
  },
8856
- sortBy: {
8857
- types: [
8858
- "string"
8859
- ],
8860
- description: "Current sort field"
8861
- },
8862
- sortDirection: {
8863
- types: [
8864
- "string"
8865
- ],
8866
- description: "Current sort direction"
8867
- },
8868
- searchValue: {
8869
- types: [
8870
- "string"
8871
- ],
8872
- description: "Current search query value"
8873
- },
8874
- page: {
8875
- types: [
8876
- "number"
8877
- ],
8878
- description: "Current page number"
8879
- },
8880
- pageSize: {
8881
- types: [
8882
- "number"
8883
- ],
8884
- description: "Number of items per page"
8885
- },
8886
- totalCount: {
8887
- types: [
8888
- "number"
8889
- ],
8890
- description: "Total number of items"
8891
- },
8892
- activeFilters: {
8893
- types: [
8894
- "object"
8895
- ],
8896
- description: "Active filters"
8897
- },
8898
- selectedIds: {
8899
- types: [
8900
- "array"
8901
- ],
8902
- description: "Currently selected item IDs"
8903
- },
8904
8881
  tiles: {
8905
8882
  types: [
8906
8883
  "array"
8907
8884
  ],
8908
- description: "EntityDisplayProps provides: className, isLoading, error, entity,"
8885
+ description: "--- Grid data ---"
8909
8886
  },
8910
8887
  units: {
8911
8888
  types: [
@@ -8953,19 +8930,19 @@ var patterns_registry_default = {
8953
8930
  types: [
8954
8931
  "function"
8955
8932
  ],
8956
- description: "eslint-disable-next-line almadar/organism-no-callback-props"
8933
+ description: "onUnitClick prop"
8957
8934
  },
8958
8935
  onTileHover: {
8959
8936
  types: [
8960
8937
  "function"
8961
8938
  ],
8962
- description: "eslint-disable-next-line almadar/organism-no-callback-props"
8939
+ description: "onTileHover prop"
8963
8940
  },
8964
8941
  onTileLeave: {
8965
8942
  types: [
8966
8943
  "function"
8967
8944
  ],
8968
- description: "eslint-disable-next-line almadar/organism-no-callback-props"
8945
+ description: "onTileLeave prop"
8969
8946
  },
8970
8947
  tileClickEvent: {
8971
8948
  types: [
@@ -12612,6 +12589,7 @@ var patterns_registry_default = {
12612
12589
  propsSchema: {
12613
12590
  preset: {
12614
12591
  types: [
12592
+ "string",
12615
12593
  "physicspreset"
12616
12594
  ],
12617
12595
  description: "preset prop",
@@ -13716,6 +13694,30 @@ var patterns_registry_default = {
13716
13694
  "string"
13717
13695
  ],
13718
13696
  description: "Additional CSS classes"
13697
+ },
13698
+ longPressEvent: {
13699
+ types: [
13700
+ "string"
13701
+ ],
13702
+ description: "Event emitted on long-press of a time slot: UI:{longPressEvent} with { date, time }"
13703
+ },
13704
+ longPressPayload: {
13705
+ types: [
13706
+ "object"
13707
+ ],
13708
+ description: "Additional payload for long-press events"
13709
+ },
13710
+ swipeLeftEvent: {
13711
+ types: [
13712
+ "string"
13713
+ ],
13714
+ description: "Event emitted on swipe left (next week): UI:{swipeLeftEvent}"
13715
+ },
13716
+ swipeRightEvent: {
13717
+ types: [
13718
+ "string"
13719
+ ],
13720
+ description: "Event emitted on swipe right (prev week): UI:{swipeRightEvent}"
13719
13721
  }
13720
13722
  }
13721
13723
  },
@@ -14104,6 +14106,48 @@ var patterns_registry_default = {
14104
14106
  "string"
14105
14107
  ],
14106
14108
  description: "Entity field name containing an image URL for card thumbnails"
14109
+ },
14110
+ selectable: {
14111
+ types: [
14112
+ "boolean"
14113
+ ],
14114
+ description: "Enable multi-select with checkboxes"
14115
+ },
14116
+ selectionEvent: {
14117
+ types: [
14118
+ "string"
14119
+ ],
14120
+ description: "Selection change event name (emits UI:{selectionEvent} with { selectedIds: string[] })"
14121
+ },
14122
+ infiniteScroll: {
14123
+ types: [
14124
+ "boolean"
14125
+ ],
14126
+ description: "Enable infinite scroll loading"
14127
+ },
14128
+ loadMoreEvent: {
14129
+ types: [
14130
+ "string"
14131
+ ],
14132
+ description: "Event emitted when more items needed: UI:{loadMoreEvent}"
14133
+ },
14134
+ hasMore: {
14135
+ types: [
14136
+ "boolean"
14137
+ ],
14138
+ description: "Whether more items are available for infinite scroll"
14139
+ },
14140
+ children: {
14141
+ types: [
14142
+ "function"
14143
+ ],
14144
+ description: "Render prop for custom per-item content. When provided, `fields` and `itemActions` are ignored."
14145
+ },
14146
+ pageSize: {
14147
+ types: [
14148
+ "number"
14149
+ ],
14150
+ description: 'Max items to show before "Show More" button. Defaults to 0 (disabled).'
14107
14151
  }
14108
14152
  }
14109
14153
  },
@@ -14154,6 +14198,24 @@ var patterns_registry_default = {
14154
14198
  ],
14155
14199
  description: "Visual variant"
14156
14200
  },
14201
+ groupBy: {
14202
+ types: [
14203
+ "string"
14204
+ ],
14205
+ description: "Group items by a field value (renders section headers between groups)"
14206
+ },
14207
+ senderField: {
14208
+ types: [
14209
+ "string"
14210
+ ],
14211
+ description: 'Field name identifying the sender (used with variant: "message")'
14212
+ },
14213
+ currentUser: {
14214
+ types: [
14215
+ "string"
14216
+ ],
14217
+ description: 'Current user identifier; messages matching this value align right (used with variant: "message")'
14218
+ },
14157
14219
  className: {
14158
14220
  types: [
14159
14221
  "string"
@@ -14171,162 +14233,2589 @@ var patterns_registry_default = {
14171
14233
  "error"
14172
14234
  ],
14173
14235
  description: "Error state"
14174
- }
14175
- }
14176
- },
14177
- heading: {
14178
- type: "heading",
14179
- category: "component",
14180
- description: "Alias for typography \u2014 Typography Atom Component Text elements following the KFlow design system with theme-aware styling.",
14181
- suggestedFor: [
14182
- "typography"
14183
- ],
14184
- typicalSize: "small",
14185
- propsSchema: {
14186
- variant: {
14187
- types: [
14188
- "typographyvariant"
14189
- ],
14190
- description: "Typography variant"
14191
14236
  },
14192
- level: {
14237
+ reorderable: {
14193
14238
  types: [
14194
- "number"
14239
+ "boolean"
14195
14240
  ],
14196
- description: "Heading level (1-6) - alternative to variant for headings"
14241
+ description: "Enable drag-to-reorder with grip handles"
14197
14242
  },
14198
- color: {
14243
+ reorderEvent: {
14199
14244
  types: [
14200
14245
  "string"
14201
14246
  ],
14202
- description: "Text color"
14247
+ description: "Event emitted on reorder: UI:{reorderEvent} with { fromIndex, toIndex }"
14203
14248
  },
14204
- align: {
14249
+ swipeLeftEvent: {
14205
14250
  types: [
14206
14251
  "string"
14207
14252
  ],
14208
- description: "Text alignment"
14253
+ description: "Event emitted on left swipe: UI:{swipeLeftEvent} with { row }"
14209
14254
  },
14210
- weight: {
14255
+ swipeLeftActions: {
14211
14256
  types: [
14212
- "string"
14257
+ "unknown"
14213
14258
  ],
14214
- description: "Font weight override"
14259
+ description: "Actions revealed on left swipe"
14215
14260
  },
14216
- size: {
14261
+ swipeRightEvent: {
14217
14262
  types: [
14218
- "typographysize"
14263
+ "string"
14219
14264
  ],
14220
- description: "Font size override"
14265
+ description: "Event emitted on right swipe: UI:{swipeRightEvent} with { row }"
14221
14266
  },
14222
- truncate: {
14267
+ swipeRightActions: {
14223
14268
  types: [
14224
- "boolean"
14269
+ "unknown"
14225
14270
  ],
14226
- description: "Truncate with ellipsis (single line)"
14271
+ description: "Actions revealed on right swipe"
14227
14272
  },
14228
- overflow: {
14273
+ longPressEvent: {
14229
14274
  types: [
14230
14275
  "string"
14231
14276
  ],
14232
- description: "Overflow handling mode"
14233
- },
14234
- as: {
14235
- types: [
14236
- "unknown"
14237
- ],
14238
- description: "Custom HTML element"
14277
+ description: "Event emitted on long press: UI:{longPressEvent} with { row }"
14239
14278
  },
14240
- id: {
14279
+ infiniteScroll: {
14241
14280
  types: [
14242
- "string"
14281
+ "boolean"
14243
14282
  ],
14244
- description: "HTML id attribute"
14283
+ description: "Enable infinite scroll loading"
14245
14284
  },
14246
- className: {
14285
+ loadMoreEvent: {
14247
14286
  types: [
14248
14287
  "string"
14249
14288
  ],
14250
- description: "Additional class names"
14289
+ description: "Event emitted when more items needed: UI:{loadMoreEvent}"
14251
14290
  },
14252
- style: {
14291
+ hasMore: {
14253
14292
  types: [
14254
- "object"
14293
+ "boolean"
14255
14294
  ],
14256
- description: "Inline style"
14295
+ description: "Whether more items are available for infinite scroll"
14257
14296
  },
14258
- content: {
14297
+ children: {
14259
14298
  types: [
14260
- "node"
14299
+ "function"
14261
14300
  ],
14262
- description: "Text content (alternative to children)"
14301
+ description: "Render prop for custom per-item content. When provided, `fields` and `itemActions` are ignored."
14263
14302
  },
14264
- children: {
14303
+ pageSize: {
14265
14304
  types: [
14266
- "node"
14305
+ "number"
14267
14306
  ],
14268
- description: "Children elements"
14307
+ description: 'Max items to show before "Show More" button. Defaults to 5. Set to 0 to disable.'
14269
14308
  }
14270
14309
  }
14271
14310
  },
14272
- text: {
14273
- type: "text",
14274
- category: "component",
14275
- description: "Alias for typography \u2014 Typography Atom Component Text elements following the KFlow design system with theme-aware styling.",
14311
+ "platformer-canvas": {
14312
+ type: "platformer-canvas",
14313
+ category: "game",
14314
+ description: "PlatformerCanvas component",
14276
14315
  suggestedFor: [
14277
- "typography"
14316
+ "platformer",
14317
+ "canvas",
14318
+ "platformer canvas"
14278
14319
  ],
14279
- typicalSize: "small",
14320
+ typicalSize: "large",
14280
14321
  propsSchema: {
14281
- variant: {
14322
+ player: {
14282
14323
  types: [
14283
- "typographyvariant"
14324
+ "platformerplayer"
14284
14325
  ],
14285
- description: "Typography variant"
14326
+ description: "Player state data"
14286
14327
  },
14287
- level: {
14328
+ platforms: {
14288
14329
  types: [
14289
- "number"
14330
+ "unknown"
14290
14331
  ],
14291
- description: "Heading level (1-6) - alternative to variant for headings"
14332
+ description: "Static platforms / level geometry"
14292
14333
  },
14293
- color: {
14334
+ worldWidth: {
14294
14335
  types: [
14295
- "string"
14336
+ "number"
14296
14337
  ],
14297
- description: "Text color"
14338
+ description: "World dimensions"
14298
14339
  },
14299
- align: {
14340
+ worldHeight: {
14300
14341
  types: [
14301
- "string"
14342
+ "number"
14302
14343
  ],
14303
- description: "Text alignment"
14344
+ description: "worldHeight prop"
14304
14345
  },
14305
- weight: {
14346
+ canvasWidth: {
14306
14347
  types: [
14307
- "string"
14348
+ "number"
14308
14349
  ],
14309
- description: "Font weight override"
14350
+ description: "Canvas display size"
14310
14351
  },
14311
- size: {
14352
+ canvasHeight: {
14312
14353
  types: [
14313
- "typographysize"
14354
+ "number"
14314
14355
  ],
14315
- description: "Font size override"
14356
+ description: "canvasHeight prop"
14316
14357
  },
14317
- truncate: {
14358
+ followCamera: {
14318
14359
  types: [
14319
14360
  "boolean"
14320
14361
  ],
14321
- description: "Truncate with ellipsis (single line)"
14362
+ description: "Camera follows player"
14322
14363
  },
14323
- overflow: {
14364
+ bgColor: {
14324
14365
  types: [
14325
14366
  "string"
14326
14367
  ],
14327
- description: "Overflow handling mode"
14368
+ description: "Background color"
14328
14369
  },
14329
- as: {
14370
+ playerSprite: {
14371
+ types: [
14372
+ "string"
14373
+ ],
14374
+ description: "Player sprite image URL"
14375
+ },
14376
+ tileSprites: {
14377
+ types: [
14378
+ "object"
14379
+ ],
14380
+ description: "Map of platform type to tile sprite URL"
14381
+ },
14382
+ backgroundImage: {
14383
+ types: [
14384
+ "string"
14385
+ ],
14386
+ description: "Background image URL"
14387
+ },
14388
+ assetBaseUrl: {
14389
+ types: [
14390
+ "string"
14391
+ ],
14392
+ description: "Base URL prefix for asset URLs"
14393
+ },
14394
+ leftEvent: {
14395
+ types: [
14396
+ "string"
14397
+ ],
14398
+ description: "Event names for keyboard controls"
14399
+ },
14400
+ rightEvent: {
14401
+ types: [
14402
+ "string"
14403
+ ],
14404
+ description: "rightEvent prop"
14405
+ },
14406
+ jumpEvent: {
14407
+ types: [
14408
+ "string"
14409
+ ],
14410
+ description: "jumpEvent prop"
14411
+ },
14412
+ stopEvent: {
14413
+ types: [
14414
+ "string"
14415
+ ],
14416
+ description: "stopEvent prop"
14417
+ },
14418
+ className: {
14419
+ types: [
14420
+ "string"
14421
+ ],
14422
+ description: "Additional CSS classes"
14423
+ }
14424
+ }
14425
+ },
14426
+ "map-view": {
14427
+ type: "map-view",
14428
+ category: "component",
14429
+ description: "MapView component",
14430
+ suggestedFor: [
14431
+ "map",
14432
+ "view",
14433
+ "map view"
14434
+ ],
14435
+ typicalSize: "medium",
14436
+ propsSchema: {
14437
+ markers: {
14438
+ types: [
14439
+ "array"
14440
+ ],
14441
+ description: "Array of markers to display"
14442
+ },
14443
+ centerLat: {
14444
+ types: [
14445
+ "number"
14446
+ ],
14447
+ description: "Map center latitude"
14448
+ },
14449
+ centerLng: {
14450
+ types: [
14451
+ "number"
14452
+ ],
14453
+ description: "Map center longitude"
14454
+ },
14455
+ zoom: {
14456
+ types: [
14457
+ "number"
14458
+ ],
14459
+ description: "Zoom level (1-18, default 13)"
14460
+ },
14461
+ height: {
14462
+ types: [
14463
+ "string"
14464
+ ],
14465
+ description: 'Height of the map container (default "400px")'
14466
+ },
14467
+ onMarkerClick: {
14468
+ types: [
14469
+ "function"
14470
+ ],
14471
+ description: "Callback when a marker is clicked (programmatic use)"
14472
+ },
14473
+ onMapClick: {
14474
+ types: [
14475
+ "function"
14476
+ ],
14477
+ description: "Callback when the map is clicked (programmatic use)"
14478
+ },
14479
+ mapClickEvent: {
14480
+ types: [
14481
+ "string"
14482
+ ],
14483
+ description: "Event name dispatched via event bus when the map is clicked. Payload: { latitude, longitude }"
14484
+ },
14485
+ markerClickEvent: {
14486
+ types: [
14487
+ "string"
14488
+ ],
14489
+ description: "Event name dispatched via event bus when a marker is clicked. Payload: marker data"
14490
+ },
14491
+ showClickedPin: {
14492
+ types: [
14493
+ "boolean"
14494
+ ],
14495
+ description: "Whether to show a pin at the clicked location"
14496
+ },
14497
+ className: {
14498
+ types: [
14499
+ "string"
14500
+ ],
14501
+ description: "Additional CSS classes"
14502
+ },
14503
+ showAttribution: {
14504
+ types: [
14505
+ "boolean"
14506
+ ],
14507
+ description: "Show attribution (default true)"
14508
+ }
14509
+ }
14510
+ },
14511
+ "range-slider": {
14512
+ type: "range-slider",
14513
+ category: "component",
14514
+ description: "RangeSlider component",
14515
+ suggestedFor: [
14516
+ "range",
14517
+ "slider",
14518
+ "range slider"
14519
+ ],
14520
+ typicalSize: "small",
14521
+ propsSchema: {
14522
+ min: {
14523
+ types: [
14524
+ "number"
14525
+ ],
14526
+ description: "Minimum value"
14527
+ },
14528
+ max: {
14529
+ types: [
14530
+ "number"
14531
+ ],
14532
+ description: "Maximum value"
14533
+ },
14534
+ value: {
14535
+ types: [
14536
+ "number"
14537
+ ],
14538
+ description: "Current value"
14539
+ },
14540
+ step: {
14541
+ types: [
14542
+ "number"
14543
+ ],
14544
+ description: "Step increment"
14545
+ },
14546
+ showTooltip: {
14547
+ types: [
14548
+ "boolean"
14549
+ ],
14550
+ description: "Show tooltip with current value on drag"
14551
+ },
14552
+ showTicks: {
14553
+ types: [
14554
+ "boolean"
14555
+ ],
14556
+ description: "Show tick marks at step intervals"
14557
+ },
14558
+ buffered: {
14559
+ types: [
14560
+ "number"
14561
+ ],
14562
+ description: "Buffered range (0-100), for media seek bars"
14563
+ },
14564
+ size: {
14565
+ types: [
14566
+ "rangeslidersize"
14567
+ ],
14568
+ description: "Slider size"
14569
+ },
14570
+ disabled: {
14571
+ types: [
14572
+ "boolean"
14573
+ ],
14574
+ description: "Disabled state"
14575
+ },
14576
+ action: {
14577
+ types: [
14578
+ "string"
14579
+ ],
14580
+ description: "Declarative event name for value changes"
14581
+ },
14582
+ actionPayload: {
14583
+ types: [
14584
+ "object"
14585
+ ],
14586
+ description: "Payload to include with the action event"
14587
+ },
14588
+ onChange: {
14589
+ types: [
14590
+ "function"
14591
+ ],
14592
+ description: "Direct onChange callback"
14593
+ },
14594
+ formatValue: {
14595
+ types: [
14596
+ "function"
14597
+ ],
14598
+ description: "Format function for tooltip display"
14599
+ }
14600
+ }
14601
+ },
14602
+ "status-dot": {
14603
+ type: "status-dot",
14604
+ category: "display",
14605
+ description: "StatusDot component",
14606
+ suggestedFor: [
14607
+ "status",
14608
+ "dot",
14609
+ "status dot"
14610
+ ],
14611
+ typicalSize: "small",
14612
+ propsSchema: {
14613
+ status: {
14614
+ types: [
14615
+ "statusdotstatus"
14616
+ ],
14617
+ description: "Status determines the dot color"
14618
+ },
14619
+ pulse: {
14620
+ types: [
14621
+ "boolean"
14622
+ ],
14623
+ description: "Enable pulse animation for active/critical states"
14624
+ },
14625
+ size: {
14626
+ types: [
14627
+ "statusdotsize"
14628
+ ],
14629
+ description: "Dot size"
14630
+ },
14631
+ label: {
14632
+ types: [
14633
+ "string"
14634
+ ],
14635
+ description: "Accessible label (rendered as sr-only text)"
14636
+ }
14637
+ }
14638
+ },
14639
+ "trend-indicator": {
14640
+ type: "trend-indicator",
14641
+ category: "component",
14642
+ description: "TrendIndicator component",
14643
+ suggestedFor: [
14644
+ "trend",
14645
+ "indicator",
14646
+ "trend indicator"
14647
+ ],
14648
+ typicalSize: "small",
14649
+ propsSchema: {
14650
+ value: {
14651
+ types: [
14652
+ "number"
14653
+ ],
14654
+ description: "Numeric value to display (e.g., 12.5 for +12.5%)"
14655
+ },
14656
+ direction: {
14657
+ types: [
14658
+ "trenddirection"
14659
+ ],
14660
+ description: "Override automatic direction detection (positive=up, negative=down, zero=flat)"
14661
+ },
14662
+ showValue: {
14663
+ types: [
14664
+ "boolean"
14665
+ ],
14666
+ description: "Show the formatted value text next to the arrow"
14667
+ },
14668
+ invert: {
14669
+ types: [
14670
+ "boolean"
14671
+ ],
14672
+ description: "Invert color logic (for metrics where down is good, e.g., error rate, bounce rate)"
14673
+ },
14674
+ label: {
14675
+ types: [
14676
+ "string"
14677
+ ],
14678
+ description: "Accessible label override"
14679
+ },
14680
+ size: {
14681
+ types: [
14682
+ "trendindicatorsize"
14683
+ ],
14684
+ description: "Size of the indicator"
14685
+ }
14686
+ }
14687
+ },
14688
+ lightbox: {
14689
+ type: "lightbox",
14690
+ category: "component",
14691
+ description: "Lightbox component",
14692
+ suggestedFor: [
14693
+ "lightbox"
14694
+ ],
14695
+ typicalSize: "medium",
14696
+ propsSchema: {
14697
+ images: {
14698
+ types: [
14699
+ "array"
14700
+ ],
14701
+ description: "Array of images to display",
14702
+ required: true
14703
+ },
14704
+ currentIndex: {
14705
+ types: [
14706
+ "number"
14707
+ ],
14708
+ description: "Current image index"
14709
+ },
14710
+ isOpen: {
14711
+ types: [
14712
+ "boolean"
14713
+ ],
14714
+ description: "Whether the lightbox is open"
14715
+ },
14716
+ showCounter: {
14717
+ types: [
14718
+ "boolean"
14719
+ ],
14720
+ description: 'Show image counter (e.g., "3 of 12")'
14721
+ },
14722
+ closeAction: {
14723
+ types: [
14724
+ "string"
14725
+ ],
14726
+ description: "Declarative close event name"
14727
+ },
14728
+ onClose: {
14729
+ types: [
14730
+ "function"
14731
+ ],
14732
+ description: "Direct onClose callback"
14733
+ },
14734
+ onIndexChange: {
14735
+ types: [
14736
+ "function"
14737
+ ],
14738
+ description: "Direct onIndexChange callback"
14739
+ },
14740
+ className: {
14741
+ types: [
14742
+ "string"
14743
+ ],
14744
+ description: "Additional CSS classes"
14745
+ }
14746
+ }
14747
+ },
14748
+ "number-stepper": {
14749
+ type: "number-stepper",
14750
+ category: "component",
14751
+ description: "NumberStepper component",
14752
+ suggestedFor: [
14753
+ "number",
14754
+ "stepper",
14755
+ "number stepper"
14756
+ ],
14757
+ typicalSize: "medium",
14758
+ propsSchema: {
14759
+ value: {
14760
+ types: [
14761
+ "number"
14762
+ ],
14763
+ description: "Current value"
14764
+ },
14765
+ min: {
14766
+ types: [
14767
+ "number"
14768
+ ],
14769
+ description: "Minimum value"
14770
+ },
14771
+ max: {
14772
+ types: [
14773
+ "number"
14774
+ ],
14775
+ description: "Maximum value"
14776
+ },
14777
+ step: {
14778
+ types: [
14779
+ "number"
14780
+ ],
14781
+ description: "Step increment"
14782
+ },
14783
+ size: {
14784
+ types: [
14785
+ "numbersteppersize"
14786
+ ],
14787
+ description: "Size variant"
14788
+ },
14789
+ disabled: {
14790
+ types: [
14791
+ "boolean"
14792
+ ],
14793
+ description: "Disabled state"
14794
+ },
14795
+ onChange: {
14796
+ types: [
14797
+ "function"
14798
+ ],
14799
+ description: "Direct onChange callback"
14800
+ },
14801
+ action: {
14802
+ types: [
14803
+ "string"
14804
+ ],
14805
+ description: "Declarative event name for value changes"
14806
+ },
14807
+ actionPayload: {
14808
+ types: [
14809
+ "object"
14810
+ ],
14811
+ description: "Payload to include with the action event"
14812
+ },
14813
+ className: {
14814
+ types: [
14815
+ "string"
14816
+ ],
14817
+ description: "Additional CSS classes"
14818
+ },
14819
+ label: {
14820
+ types: [
14821
+ "string"
14822
+ ],
14823
+ description: "Accessible label"
14824
+ }
14825
+ }
14826
+ },
14827
+ "star-rating": {
14828
+ type: "star-rating",
14829
+ category: "component",
14830
+ description: "StarRating component",
14831
+ suggestedFor: [
14832
+ "star",
14833
+ "rating",
14834
+ "star rating"
14835
+ ],
14836
+ typicalSize: "medium",
14837
+ propsSchema: {
14838
+ value: {
14839
+ types: [
14840
+ "number"
14841
+ ],
14842
+ description: "Current rating value"
14843
+ },
14844
+ max: {
14845
+ types: [
14846
+ "number"
14847
+ ],
14848
+ description: "Maximum number of stars"
14849
+ },
14850
+ readOnly: {
14851
+ types: [
14852
+ "boolean"
14853
+ ],
14854
+ description: "Read-only display mode"
14855
+ },
14856
+ precision: {
14857
+ types: [
14858
+ "starratingprecision"
14859
+ ],
14860
+ description: "Full or half-star precision"
14861
+ },
14862
+ size: {
14863
+ types: [
14864
+ "starratingsize"
14865
+ ],
14866
+ description: "Star size"
14867
+ },
14868
+ action: {
14869
+ types: [
14870
+ "string"
14871
+ ],
14872
+ description: "Declarative event name for rating changes"
14873
+ },
14874
+ actionPayload: {
14875
+ types: [
14876
+ "object"
14877
+ ],
14878
+ description: "Payload to include with the action event"
14879
+ },
14880
+ onChange: {
14881
+ types: [
14882
+ "function"
14883
+ ],
14884
+ description: "Direct onChange callback"
14885
+ },
14886
+ className: {
14887
+ types: [
14888
+ "string"
14889
+ ],
14890
+ description: "Additional CSS classes"
14891
+ },
14892
+ label: {
14893
+ types: [
14894
+ "string"
14895
+ ],
14896
+ description: "Accessible label"
14897
+ }
14898
+ }
14899
+ },
14900
+ "upload-drop-zone": {
14901
+ type: "upload-drop-zone",
14902
+ category: "component",
14903
+ description: "UploadDropZone component",
14904
+ suggestedFor: [
14905
+ "upload",
14906
+ "drop",
14907
+ "zone",
14908
+ "upload drop zone"
14909
+ ],
14910
+ typicalSize: "medium",
14911
+ propsSchema: {
14912
+ accept: {
14913
+ types: [
14914
+ "string"
14915
+ ],
14916
+ description: 'Accepted MIME types (e.g., "image/*", "application/pdf")'
14917
+ },
14918
+ maxSize: {
14919
+ types: [
14920
+ "number"
14921
+ ],
14922
+ description: "Max file size in bytes"
14923
+ },
14924
+ maxFiles: {
14925
+ types: [
14926
+ "number"
14927
+ ],
14928
+ description: "Max number of files"
14929
+ },
14930
+ label: {
14931
+ types: [
14932
+ "string"
14933
+ ],
14934
+ description: "Label text"
14935
+ },
14936
+ description: {
14937
+ types: [
14938
+ "string"
14939
+ ],
14940
+ description: "Description text below label"
14941
+ },
14942
+ icon: {
14943
+ types: [
14944
+ "string"
14945
+ ],
14946
+ description: "Icon name (Lucide string)"
14947
+ },
14948
+ disabled: {
14949
+ types: [
14950
+ "boolean"
14951
+ ],
14952
+ description: "Disabled state"
14953
+ },
14954
+ action: {
14955
+ types: [
14956
+ "string"
14957
+ ],
14958
+ description: "Declarative event name for file selection"
14959
+ },
14960
+ actionPayload: {
14961
+ types: [
14962
+ "object"
14963
+ ],
14964
+ description: "Payload to include with the action event"
14965
+ },
14966
+ onFiles: {
14967
+ types: [
14968
+ "function"
14969
+ ],
14970
+ description: "Direct onFiles callback"
14971
+ },
14972
+ className: {
14973
+ types: [
14974
+ "string"
14975
+ ],
14976
+ description: "Additional CSS classes"
14977
+ }
14978
+ }
14979
+ },
14980
+ "animated-counter": {
14981
+ type: "animated-counter",
14982
+ category: "component",
14983
+ description: "AnimatedCounter component",
14984
+ suggestedFor: [
14985
+ "animated",
14986
+ "counter",
14987
+ "animated counter"
14988
+ ],
14989
+ typicalSize: "small",
14990
+ propsSchema: {
14991
+ value: {
14992
+ types: [
14993
+ "number"
14994
+ ],
14995
+ description: "The target number to animate to",
14996
+ required: true
14997
+ },
14998
+ duration: {
14999
+ types: [
15000
+ "number"
15001
+ ],
15002
+ description: "Animation duration in milliseconds"
15003
+ },
15004
+ prefix: {
15005
+ types: [
15006
+ "string"
15007
+ ],
15008
+ description: "Text to display before the number"
15009
+ },
15010
+ suffix: {
15011
+ types: [
15012
+ "string"
15013
+ ],
15014
+ description: "Text to display after the number"
15015
+ },
15016
+ className: {
15017
+ types: [
15018
+ "string"
15019
+ ],
15020
+ description: "Additional class names"
15021
+ }
15022
+ }
15023
+ },
15024
+ "confetti-effect": {
15025
+ type: "confetti-effect",
15026
+ category: "component",
15027
+ description: "ConfettiEffect component",
15028
+ suggestedFor: [
15029
+ "confetti",
15030
+ "effect",
15031
+ "confetti effect"
15032
+ ],
15033
+ typicalSize: "small",
15034
+ propsSchema: {
15035
+ trigger: {
15036
+ types: [
15037
+ "boolean"
15038
+ ],
15039
+ description: "When this changes from false to true, a burst of particles is spawned",
15040
+ required: true
15041
+ },
15042
+ duration: {
15043
+ types: [
15044
+ "number"
15045
+ ],
15046
+ description: "How long the animation lasts in milliseconds"
15047
+ },
15048
+ particleCount: {
15049
+ types: [
15050
+ "number"
15051
+ ],
15052
+ description: "Number of particles to spawn"
15053
+ },
15054
+ className: {
15055
+ types: [
15056
+ "string"
15057
+ ],
15058
+ description: "Additional class names"
15059
+ }
15060
+ }
15061
+ },
15062
+ "infinite-scroll-sentinel": {
15063
+ type: "infinite-scroll-sentinel",
15064
+ category: "component",
15065
+ description: "InfiniteScrollSentinel component",
15066
+ suggestedFor: [
15067
+ "infinite",
15068
+ "scroll",
15069
+ "sentinel",
15070
+ "infinite scroll sentinel"
15071
+ ],
15072
+ typicalSize: "small",
15073
+ propsSchema: {
15074
+ loadMoreEvent: {
15075
+ types: [
15076
+ "string"
15077
+ ],
15078
+ description: "Event name to emit when load-more is triggered (emitted as UI:{loadMoreEvent})",
15079
+ required: true
15080
+ },
15081
+ loadMorePayload: {
15082
+ types: [
15083
+ "object"
15084
+ ],
15085
+ description: "Optional payload to include with the load-more event"
15086
+ },
15087
+ isLoading: {
15088
+ types: [
15089
+ "boolean"
15090
+ ],
15091
+ description: "Whether a load operation is currently in progress"
15092
+ },
15093
+ hasMore: {
15094
+ types: [
15095
+ "boolean"
15096
+ ],
15097
+ description: "Whether there are more items to load"
15098
+ },
15099
+ threshold: {
15100
+ types: [
15101
+ "string"
15102
+ ],
15103
+ description: "IntersectionObserver rootMargin for early trigger"
15104
+ },
15105
+ className: {
15106
+ types: [
15107
+ "string"
15108
+ ],
15109
+ description: "Additional class names"
15110
+ }
15111
+ }
15112
+ },
15113
+ "typewriter-text": {
15114
+ type: "typewriter-text",
15115
+ category: "component",
15116
+ description: "TypewriterText component",
15117
+ suggestedFor: [
15118
+ "typewriter",
15119
+ "text",
15120
+ "typewriter text"
15121
+ ],
15122
+ typicalSize: "small",
15123
+ propsSchema: {
15124
+ text: {
15125
+ types: [
15126
+ "string"
15127
+ ],
15128
+ description: "The full text to reveal",
15129
+ required: true
15130
+ },
15131
+ speed: {
15132
+ types: [
15133
+ "number"
15134
+ ],
15135
+ description: "Milliseconds per character"
15136
+ },
15137
+ startDelay: {
15138
+ types: [
15139
+ "number"
15140
+ ],
15141
+ description: "Delay before typing starts (ms)"
15142
+ },
15143
+ className: {
15144
+ types: [
15145
+ "string"
15146
+ ],
15147
+ description: "Additional class names"
15148
+ },
15149
+ onComplete: {
15150
+ types: [
15151
+ "function"
15152
+ ],
15153
+ description: "Called when the entire text has been revealed"
15154
+ }
15155
+ }
15156
+ },
15157
+ carousel: {
15158
+ type: "carousel",
15159
+ category: "component",
15160
+ description: "Carousel component",
15161
+ suggestedFor: [
15162
+ "carousel"
15163
+ ],
15164
+ typicalSize: "medium",
15165
+ propsSchema: {
15166
+ items: {
15167
+ types: [
15168
+ "array"
15169
+ ],
15170
+ description: "Array of items to display as slides",
15171
+ required: true
15172
+ },
15173
+ renderItem: {
15174
+ types: [
15175
+ "function"
15176
+ ],
15177
+ description: "Render function for each slide",
15178
+ required: true
15179
+ },
15180
+ autoPlay: {
15181
+ types: [
15182
+ "boolean"
15183
+ ],
15184
+ description: "Enable auto-play rotation"
15185
+ },
15186
+ autoPlayInterval: {
15187
+ types: [
15188
+ "number"
15189
+ ],
15190
+ description: "Auto-play interval in milliseconds (default: 5000)"
15191
+ },
15192
+ showDots: {
15193
+ types: [
15194
+ "boolean"
15195
+ ],
15196
+ description: "Show dot indicators"
15197
+ },
15198
+ showArrows: {
15199
+ types: [
15200
+ "boolean"
15201
+ ],
15202
+ description: "Show prev/next arrow buttons"
15203
+ },
15204
+ loop: {
15205
+ types: [
15206
+ "boolean"
15207
+ ],
15208
+ description: "Enable infinite loop"
15209
+ },
15210
+ slideChangeEvent: {
15211
+ types: [
15212
+ "string"
15213
+ ],
15214
+ description: "Declarative event name for slide change"
15215
+ },
15216
+ slideChangePayload: {
15217
+ types: [
15218
+ "object"
15219
+ ],
15220
+ description: "Payload to include with the slide change event"
15221
+ },
15222
+ className: {
15223
+ types: [
15224
+ "string"
15225
+ ],
15226
+ description: "Additional CSS classes"
15227
+ }
15228
+ }
15229
+ },
15230
+ "pull-to-refresh": {
15231
+ type: "pull-to-refresh",
15232
+ category: "component",
15233
+ description: "PullToRefresh component",
15234
+ suggestedFor: [
15235
+ "pull",
15236
+ "refresh",
15237
+ "pull to refresh"
15238
+ ],
15239
+ typicalSize: "medium",
15240
+ propsSchema: {
15241
+ refreshEvent: {
15242
+ types: [
15243
+ "string"
15244
+ ],
15245
+ description: "Event name to emit on refresh (emitted as UI:{refreshEvent})",
15246
+ required: true
15247
+ },
15248
+ refreshPayload: {
15249
+ types: [
15250
+ "object"
15251
+ ],
15252
+ description: "Payload to include with the refresh event"
15253
+ },
15254
+ threshold: {
15255
+ types: [
15256
+ "number"
15257
+ ],
15258
+ description: "Pull distance threshold to trigger refresh in px (default: 60)"
15259
+ },
15260
+ children: {
15261
+ types: [
15262
+ "node"
15263
+ ],
15264
+ description: "Content to wrap",
15265
+ required: true
15266
+ },
15267
+ className: {
15268
+ types: [
15269
+ "string"
15270
+ ],
15271
+ description: "Additional CSS classes"
15272
+ }
15273
+ }
15274
+ },
15275
+ "sortable-list": {
15276
+ type: "sortable-list",
15277
+ category: "display",
15278
+ description: "SortableList component",
15279
+ suggestedFor: [
15280
+ "sortable",
15281
+ "list",
15282
+ "sortable list"
15283
+ ],
15284
+ typicalSize: "medium",
15285
+ propsSchema: {
15286
+ items: {
15287
+ types: [
15288
+ "array"
15289
+ ],
15290
+ description: "items prop",
15291
+ required: true
15292
+ },
15293
+ renderItem: {
15294
+ types: [
15295
+ "function"
15296
+ ],
15297
+ description: "renderItem prop",
15298
+ required: true
15299
+ },
15300
+ reorderEvent: {
15301
+ types: [
15302
+ "string"
15303
+ ],
15304
+ description: "reorderEvent prop",
15305
+ required: true
15306
+ },
15307
+ reorderPayload: {
15308
+ types: [
15309
+ "object"
15310
+ ],
15311
+ description: "reorderPayload prop"
15312
+ },
15313
+ dragHandlePosition: {
15314
+ types: [
15315
+ "string"
15316
+ ],
15317
+ description: "dragHandlePosition prop"
15318
+ },
15319
+ className: {
15320
+ types: [
15321
+ "string"
15322
+ ],
15323
+ description: "className prop"
15324
+ }
15325
+ }
15326
+ },
15327
+ "swipeable-row": {
15328
+ type: "swipeable-row",
15329
+ category: "component",
15330
+ description: "SwipeableRow component",
15331
+ suggestedFor: [
15332
+ "swipeable",
15333
+ "row",
15334
+ "swipeable row"
15335
+ ],
15336
+ typicalSize: "medium",
15337
+ propsSchema: {
15338
+ leftActions: {
15339
+ types: [
15340
+ "array"
15341
+ ],
15342
+ description: "leftActions prop"
15343
+ },
15344
+ rightActions: {
15345
+ types: [
15346
+ "array"
15347
+ ],
15348
+ description: "rightActions prop"
15349
+ },
15350
+ threshold: {
15351
+ types: [
15352
+ "number"
15353
+ ],
15354
+ description: "threshold prop"
15355
+ },
15356
+ children: {
15357
+ types: [
15358
+ "node"
15359
+ ],
15360
+ description: "children prop",
15361
+ required: true
15362
+ },
15363
+ itemData: {
15364
+ types: [
15365
+ "object"
15366
+ ],
15367
+ description: "itemData prop"
15368
+ },
15369
+ className: {
15370
+ types: [
15371
+ "string"
15372
+ ],
15373
+ description: "className prop"
15374
+ }
15375
+ }
15376
+ },
15377
+ "stat-display": {
15378
+ type: "stat-display",
15379
+ category: "display",
15380
+ description: "StatDisplay component",
15381
+ suggestedFor: [
15382
+ "stat",
15383
+ "display",
15384
+ "stat display"
15385
+ ],
15386
+ typicalSize: "medium",
15387
+ propsSchema: {
15388
+ label: {
15389
+ types: [
15390
+ "string"
15391
+ ],
15392
+ description: 'Display label (e.g., "Total", "Remaining")',
15393
+ required: true
15394
+ },
15395
+ value: {
15396
+ types: [
15397
+ "number",
15398
+ "string"
15399
+ ],
15400
+ description: "Primary value (number or formatted string)"
15401
+ },
15402
+ max: {
15403
+ types: [
15404
+ "number"
15405
+ ],
15406
+ description: 'Maximum value (renders as "value / max")'
15407
+ },
15408
+ icon: {
15409
+ types: [
15410
+ "node"
15411
+ ],
15412
+ description: "Lucide icon name or React node"
15413
+ },
15414
+ iconBg: {
15415
+ types: [
15416
+ "string"
15417
+ ],
15418
+ description: "Icon background color class"
15419
+ },
15420
+ iconColor: {
15421
+ types: [
15422
+ "string"
15423
+ ],
15424
+ description: "Icon color class"
15425
+ },
15426
+ format: {
15427
+ types: [
15428
+ "string"
15429
+ ],
15430
+ description: 'Display format: "number", "currency", "percent"'
15431
+ },
15432
+ size: {
15433
+ types: [
15434
+ "string"
15435
+ ],
15436
+ description: "Size variant"
15437
+ },
15438
+ variant: {
15439
+ types: [
15440
+ "string"
15441
+ ],
15442
+ description: "Color variant"
15443
+ },
15444
+ compact: {
15445
+ types: [
15446
+ "boolean"
15447
+ ],
15448
+ description: "Compact mode (inline, no card wrapper)"
15449
+ },
15450
+ className: {
15451
+ types: [
15452
+ "string"
15453
+ ],
15454
+ description: "Additional CSS classes"
15455
+ },
15456
+ isLoading: {
15457
+ types: [
15458
+ "boolean"
15459
+ ],
15460
+ description: "Loading state"
15461
+ },
15462
+ error: {
15463
+ types: [
15464
+ "error"
15465
+ ],
15466
+ description: "Error state"
15467
+ }
15468
+ }
15469
+ },
15470
+ "action-button": {
15471
+ type: "action-button",
15472
+ category: "component",
15473
+ description: "ActionButton component",
15474
+ suggestedFor: [
15475
+ "action",
15476
+ "button",
15477
+ "action button"
15478
+ ],
15479
+ typicalSize: "small",
15480
+ propsSchema: {
15481
+ label: {
15482
+ types: [
15483
+ "string"
15484
+ ],
15485
+ description: "Button label text",
15486
+ required: true
15487
+ },
15488
+ icon: {
15489
+ types: [
15490
+ "node"
15491
+ ],
15492
+ description: "Icon displayed before the label"
15493
+ },
15494
+ cooldown: {
15495
+ types: [
15496
+ "number"
15497
+ ],
15498
+ description: "Cooldown progress from 0 (ready) to 1 (full cooldown)"
15499
+ },
15500
+ disabled: {
15501
+ types: [
15502
+ "boolean"
15503
+ ],
15504
+ description: "Whether the button is disabled"
15505
+ },
15506
+ hotkey: {
15507
+ types: [
15508
+ "string"
15509
+ ],
15510
+ description: "Keyboard hotkey to display as a badge"
15511
+ },
15512
+ size: {
15513
+ types: [
15514
+ "string"
15515
+ ],
15516
+ description: "Size variant"
15517
+ },
15518
+ variant: {
15519
+ types: [
15520
+ "string"
15521
+ ],
15522
+ description: "Visual variant"
15523
+ },
15524
+ onClick: {
15525
+ types: [
15526
+ "function"
15527
+ ],
15528
+ description: "Click handler"
15529
+ },
15530
+ className: {
15531
+ types: [
15532
+ "string"
15533
+ ],
15534
+ description: "Additional CSS classes"
15535
+ }
15536
+ }
15537
+ },
15538
+ "choice-button": {
15539
+ type: "choice-button",
15540
+ category: "component",
15541
+ description: "ChoiceButton component",
15542
+ suggestedFor: [
15543
+ "choice",
15544
+ "button",
15545
+ "choice button"
15546
+ ],
15547
+ typicalSize: "small",
15548
+ propsSchema: {
15549
+ text: {
15550
+ types: [
15551
+ "string"
15552
+ ],
15553
+ description: "Choice text content",
15554
+ required: true
15555
+ },
15556
+ index: {
15557
+ types: [
15558
+ "number"
15559
+ ],
15560
+ description: "Choice index number (displayed as prefix)"
15561
+ },
15562
+ disabled: {
15563
+ types: [
15564
+ "boolean"
15565
+ ],
15566
+ description: "Whether the choice is disabled"
15567
+ },
15568
+ selected: {
15569
+ types: [
15570
+ "boolean"
15571
+ ],
15572
+ description: "Whether the choice is currently selected"
15573
+ },
15574
+ onClick: {
15575
+ types: [
15576
+ "function"
15577
+ ],
15578
+ description: "Click handler"
15579
+ },
15580
+ className: {
15581
+ types: [
15582
+ "string"
15583
+ ],
15584
+ description: "Additional CSS classes"
15585
+ }
15586
+ }
15587
+ },
15588
+ "combo-counter": {
15589
+ type: "combo-counter",
15590
+ category: "component",
15591
+ description: "ComboCounter component",
15592
+ suggestedFor: [
15593
+ "combo",
15594
+ "counter",
15595
+ "combo counter"
15596
+ ],
15597
+ typicalSize: "small",
15598
+ propsSchema: {
15599
+ combo: {
15600
+ types: [
15601
+ "number"
15602
+ ],
15603
+ description: "Current combo count",
15604
+ required: true
15605
+ },
15606
+ multiplier: {
15607
+ types: [
15608
+ "number"
15609
+ ],
15610
+ description: "Score multiplier"
15611
+ },
15612
+ streak: {
15613
+ types: [
15614
+ "number"
15615
+ ],
15616
+ description: "Current streak"
15617
+ },
15618
+ size: {
15619
+ types: [
15620
+ "string"
15621
+ ],
15622
+ description: "Size variant"
15623
+ },
15624
+ className: {
15625
+ types: [
15626
+ "string"
15627
+ ],
15628
+ description: "Additional CSS classes"
15629
+ }
15630
+ }
15631
+ },
15632
+ "damage-number": {
15633
+ type: "damage-number",
15634
+ category: "component",
15635
+ description: "DamageNumber component",
15636
+ suggestedFor: [
15637
+ "damage",
15638
+ "number",
15639
+ "damage number"
15640
+ ],
15641
+ typicalSize: "small",
15642
+ propsSchema: {
15643
+ value: {
15644
+ types: [
15645
+ "number"
15646
+ ],
15647
+ description: "The damage/heal value to display",
15648
+ required: true
15649
+ },
15650
+ type: {
15651
+ types: [
15652
+ "string"
15653
+ ],
15654
+ description: "Type of number display"
15655
+ },
15656
+ size: {
15657
+ types: [
15658
+ "string"
15659
+ ],
15660
+ description: "Size variant"
15661
+ },
15662
+ className: {
15663
+ types: [
15664
+ "string"
15665
+ ],
15666
+ description: "Additional CSS classes"
15667
+ }
15668
+ }
15669
+ },
15670
+ "dialogue-bubble": {
15671
+ type: "dialogue-bubble",
15672
+ category: "game",
15673
+ description: "DialogueBubble component",
15674
+ suggestedFor: [
15675
+ "dialogue",
15676
+ "bubble",
15677
+ "dialogue bubble"
15678
+ ],
15679
+ typicalSize: "small",
15680
+ propsSchema: {
15681
+ speaker: {
15682
+ types: [
15683
+ "string"
15684
+ ],
15685
+ description: "Speaker name displayed at the top"
15686
+ },
15687
+ text: {
15688
+ types: [
15689
+ "string"
15690
+ ],
15691
+ description: "Dialogue text content",
15692
+ required: true
15693
+ },
15694
+ portrait: {
15695
+ types: [
15696
+ "string"
15697
+ ],
15698
+ description: "URL for the speaker portrait image"
15699
+ },
15700
+ position: {
15701
+ types: [
15702
+ "string"
15703
+ ],
15704
+ description: "Position of the bubble on screen"
15705
+ },
15706
+ className: {
15707
+ types: [
15708
+ "string"
15709
+ ],
15710
+ description: "Additional CSS classes"
15711
+ }
15712
+ }
15713
+ },
15714
+ "item-slot": {
15715
+ type: "item-slot",
15716
+ category: "layout",
15717
+ description: "ItemSlot component",
15718
+ suggestedFor: [
15719
+ "item",
15720
+ "slot",
15721
+ "item slot"
15722
+ ],
15723
+ typicalSize: "small",
15724
+ propsSchema: {
15725
+ icon: {
15726
+ types: [
15727
+ "node"
15728
+ ],
15729
+ description: "Icon component or emoji"
15730
+ },
15731
+ label: {
15732
+ types: [
15733
+ "string"
15734
+ ],
15735
+ description: "Item label"
15736
+ },
15737
+ quantity: {
15738
+ types: [
15739
+ "number"
15740
+ ],
15741
+ description: "Stack quantity"
15742
+ },
15743
+ rarity: {
15744
+ types: [
15745
+ "string"
15746
+ ],
15747
+ description: "Rarity tier affecting border color"
15748
+ },
15749
+ empty: {
15750
+ types: [
15751
+ "boolean"
15752
+ ],
15753
+ description: "Whether the slot is empty"
15754
+ },
15755
+ size: {
15756
+ types: [
15757
+ "string"
15758
+ ],
15759
+ description: "Size variant"
15760
+ },
15761
+ selected: {
15762
+ types: [
15763
+ "boolean"
15764
+ ],
15765
+ description: "Whether the slot is selected"
15766
+ },
15767
+ onClick: {
15768
+ types: [
15769
+ "function"
15770
+ ],
15771
+ description: "Click handler"
15772
+ },
15773
+ className: {
15774
+ types: [
15775
+ "string"
15776
+ ],
15777
+ description: "Additional CSS classes"
15778
+ }
15779
+ }
15780
+ },
15781
+ "mini-map": {
15782
+ type: "mini-map",
15783
+ category: "component",
15784
+ description: "MiniMap component",
15785
+ suggestedFor: [
15786
+ "mini",
15787
+ "map",
15788
+ "mini map"
15789
+ ],
15790
+ typicalSize: "small",
15791
+ propsSchema: {
15792
+ tiles: {
15793
+ types: [
15794
+ "array"
15795
+ ],
15796
+ description: "Tile data: each tile renders as a 1px dot at (x,y) with the given color"
15797
+ },
15798
+ units: {
15799
+ types: [
15800
+ "array"
15801
+ ],
15802
+ description: "Unit positions: each unit renders as a 2px dot"
15803
+ },
15804
+ width: {
15805
+ types: [
15806
+ "number"
15807
+ ],
15808
+ description: "Canvas display width in pixels"
15809
+ },
15810
+ height: {
15811
+ types: [
15812
+ "number"
15813
+ ],
15814
+ description: "Canvas display height in pixels"
15815
+ },
15816
+ mapWidth: {
15817
+ types: [
15818
+ "number"
15819
+ ],
15820
+ description: "Logical map width (for coordinate scaling)"
15821
+ },
15822
+ mapHeight: {
15823
+ types: [
15824
+ "number"
15825
+ ],
15826
+ description: "Logical map height (for coordinate scaling)"
15827
+ },
15828
+ viewportRect: {
15829
+ types: [
15830
+ "object"
15831
+ ],
15832
+ description: "Viewport rectangle outline"
15833
+ },
15834
+ className: {
15835
+ types: [
15836
+ "string"
15837
+ ],
15838
+ description: "Additional CSS classes"
15839
+ }
15840
+ }
15841
+ },
15842
+ "resource-counter": {
15843
+ type: "resource-counter",
15844
+ category: "component",
15845
+ description: "ResourceCounter component",
15846
+ suggestedFor: [
15847
+ "resource",
15848
+ "counter",
15849
+ "resource counter"
15850
+ ],
15851
+ typicalSize: "small",
15852
+ propsSchema: {
15853
+ icon: {
15854
+ types: [
15855
+ "node"
15856
+ ],
15857
+ description: "Icon component or emoji"
15858
+ },
15859
+ label: {
15860
+ types: [
15861
+ "string"
15862
+ ],
15863
+ description: "Resource label",
15864
+ required: true
15865
+ },
15866
+ value: {
15867
+ types: [
15868
+ "number"
15869
+ ],
15870
+ description: "Current value",
15871
+ required: true
15872
+ },
15873
+ max: {
15874
+ types: [
15875
+ "number"
15876
+ ],
15877
+ description: "Maximum value"
15878
+ },
15879
+ color: {
15880
+ types: [
15881
+ "string"
15882
+ ],
15883
+ description: "Accent color class (e.g. 'text-yellow-400')"
15884
+ },
15885
+ size: {
15886
+ types: [
15887
+ "string"
15888
+ ],
15889
+ description: "Size variant"
15890
+ },
15891
+ className: {
15892
+ types: [
15893
+ "string"
15894
+ ],
15895
+ description: "Additional CSS classes"
15896
+ }
15897
+ }
15898
+ },
15899
+ "status-effect": {
15900
+ type: "status-effect",
15901
+ category: "display",
15902
+ description: "StatusEffect component",
15903
+ suggestedFor: [
15904
+ "status",
15905
+ "effect",
15906
+ "status effect"
15907
+ ],
15908
+ typicalSize: "small",
15909
+ propsSchema: {
15910
+ icon: {
15911
+ types: [
15912
+ "node"
15913
+ ],
15914
+ description: "Icon to display for the effect",
15915
+ required: true
15916
+ },
15917
+ label: {
15918
+ types: [
15919
+ "string"
15920
+ ],
15921
+ description: "Label describing the effect"
15922
+ },
15923
+ duration: {
15924
+ types: [
15925
+ "number"
15926
+ ],
15927
+ description: "Remaining duration in seconds"
15928
+ },
15929
+ stacks: {
15930
+ types: [
15931
+ "number"
15932
+ ],
15933
+ description: "Number of stacks"
15934
+ },
15935
+ variant: {
15936
+ types: [
15937
+ "string"
15938
+ ],
15939
+ description: "Effect type"
15940
+ },
15941
+ size: {
15942
+ types: [
15943
+ "string"
15944
+ ],
15945
+ description: "Size variant"
15946
+ },
15947
+ className: {
15948
+ types: [
15949
+ "string"
15950
+ ],
15951
+ description: "Additional CSS classes"
15952
+ }
15953
+ }
15954
+ },
15955
+ "timer-display": {
15956
+ type: "timer-display",
15957
+ category: "component",
15958
+ description: "TimerDisplay component",
15959
+ suggestedFor: [
15960
+ "timer",
15961
+ "display",
15962
+ "timer display"
15963
+ ],
15964
+ typicalSize: "small",
15965
+ propsSchema: {
15966
+ seconds: {
15967
+ types: [
15968
+ "number"
15969
+ ],
15970
+ description: "Time in seconds",
15971
+ required: true
15972
+ },
15973
+ running: {
15974
+ types: [
15975
+ "boolean"
15976
+ ],
15977
+ description: "Whether the timer is running"
15978
+ },
15979
+ format: {
15980
+ types: [
15981
+ "string"
15982
+ ],
15983
+ description: "Display format"
15984
+ },
15985
+ size: {
15986
+ types: [
15987
+ "string"
15988
+ ],
15989
+ description: "Size variant"
15990
+ },
15991
+ className: {
15992
+ types: [
15993
+ "string"
15994
+ ],
15995
+ description: "Additional CSS classes"
15996
+ },
15997
+ lowThreshold: {
15998
+ types: [
15999
+ "number"
16000
+ ],
16001
+ description: "Seconds below which to pulse red"
16002
+ }
16003
+ }
16004
+ },
16005
+ "turn-indicator": {
16006
+ type: "turn-indicator",
16007
+ category: "component",
16008
+ description: "TurnIndicator component",
16009
+ suggestedFor: [
16010
+ "turn",
16011
+ "indicator",
16012
+ "turn indicator"
16013
+ ],
16014
+ typicalSize: "small",
16015
+ propsSchema: {
16016
+ currentTurn: {
16017
+ types: [
16018
+ "number"
16019
+ ],
16020
+ description: "Current turn number",
16021
+ required: true
16022
+ },
16023
+ maxTurns: {
16024
+ types: [
16025
+ "number"
16026
+ ],
16027
+ description: "Maximum number of turns"
16028
+ },
16029
+ activeTeam: {
16030
+ types: [
16031
+ "string"
16032
+ ],
16033
+ description: "Name of the active team"
16034
+ },
16035
+ phase: {
16036
+ types: [
16037
+ "string"
16038
+ ],
16039
+ description: "Current phase label"
16040
+ },
16041
+ size: {
16042
+ types: [
16043
+ "string"
16044
+ ],
16045
+ description: "Size variant"
16046
+ },
16047
+ className: {
16048
+ types: [
16049
+ "string"
16050
+ ],
16051
+ description: "Additional CSS classes"
16052
+ }
16053
+ }
16054
+ },
16055
+ "waypoint-marker": {
16056
+ type: "waypoint-marker",
16057
+ category: "component",
16058
+ description: "WaypointMarker component",
16059
+ suggestedFor: [
16060
+ "waypoint",
16061
+ "marker",
16062
+ "waypoint marker"
16063
+ ],
16064
+ typicalSize: "small",
16065
+ propsSchema: {
16066
+ label: {
16067
+ types: [
16068
+ "string"
16069
+ ],
16070
+ description: "Label text below the marker"
16071
+ },
16072
+ icon: {
16073
+ types: [
16074
+ "node"
16075
+ ],
16076
+ description: "Custom icon to render inside the marker"
16077
+ },
16078
+ active: {
16079
+ types: [
16080
+ "boolean"
16081
+ ],
16082
+ description: "Whether this waypoint is currently active"
16083
+ },
16084
+ completed: {
16085
+ types: [
16086
+ "boolean"
16087
+ ],
16088
+ description: "Whether this waypoint has been completed"
16089
+ },
16090
+ size: {
16091
+ types: [
16092
+ "string"
16093
+ ],
16094
+ description: "Size variant"
16095
+ },
16096
+ className: {
16097
+ types: [
16098
+ "string"
16099
+ ],
16100
+ description: "Additional CSS classes"
16101
+ }
16102
+ }
16103
+ },
16104
+ "x-p-bar": {
16105
+ type: "x-p-bar",
16106
+ category: "component",
16107
+ description: "XPBar component",
16108
+ suggestedFor: [
16109
+ "bar",
16110
+ "x p bar"
16111
+ ],
16112
+ typicalSize: "small",
16113
+ propsSchema: {
16114
+ current: {
16115
+ types: [
16116
+ "number"
16117
+ ],
16118
+ description: "Current XP value",
16119
+ required: true
16120
+ },
16121
+ max: {
16122
+ types: [
16123
+ "number"
16124
+ ],
16125
+ description: "XP needed for next level",
16126
+ required: true
16127
+ },
16128
+ level: {
16129
+ types: [
16130
+ "number"
16131
+ ],
16132
+ description: "Current level"
16133
+ },
16134
+ showLabel: {
16135
+ types: [
16136
+ "boolean"
16137
+ ],
16138
+ description: "Whether to show the XP label"
16139
+ },
16140
+ size: {
16141
+ types: [
16142
+ "string"
16143
+ ],
16144
+ description: "Size variant"
16145
+ },
16146
+ animated: {
16147
+ types: [
16148
+ "boolean"
16149
+ ],
16150
+ description: "Animate the fill bar"
16151
+ },
16152
+ className: {
16153
+ types: [
16154
+ "string"
16155
+ ],
16156
+ description: "Additional CSS classes"
16157
+ }
16158
+ }
16159
+ },
16160
+ "crafting-recipe": {
16161
+ type: "crafting-recipe",
16162
+ category: "component",
16163
+ description: "CraftingRecipe component",
16164
+ suggestedFor: [
16165
+ "crafting",
16166
+ "recipe",
16167
+ "crafting recipe"
16168
+ ],
16169
+ typicalSize: "medium",
16170
+ propsSchema: {
16171
+ inputs: {
16172
+ types: [
16173
+ "array"
16174
+ ],
16175
+ description: "Input ingredients for the recipe",
16176
+ required: true
16177
+ },
16178
+ output: {
16179
+ types: [
16180
+ "object"
16181
+ ],
16182
+ description: "Output item produced by the recipe",
16183
+ required: true
16184
+ },
16185
+ canCraft: {
16186
+ types: [
16187
+ "boolean"
16188
+ ],
16189
+ description: "Whether the player has enough ingredients to craft"
16190
+ },
16191
+ onCraft: {
16192
+ types: [
16193
+ "function"
16194
+ ],
16195
+ description: "Callback when the craft button is clicked"
16196
+ },
16197
+ craftEvent: {
16198
+ types: [
16199
+ "string"
16200
+ ],
16201
+ description: "Event bus event name for crafting"
16202
+ },
16203
+ className: {
16204
+ types: [
16205
+ "string"
16206
+ ],
16207
+ description: "Additional CSS classes"
16208
+ }
16209
+ }
16210
+ },
16211
+ "enemy-plate": {
16212
+ type: "enemy-plate",
16213
+ category: "component",
16214
+ description: "EnemyPlate component",
16215
+ suggestedFor: [
16216
+ "enemy",
16217
+ "plate",
16218
+ "enemy plate"
16219
+ ],
16220
+ typicalSize: "medium",
16221
+ propsSchema: {
16222
+ name: {
16223
+ types: [
16224
+ "string"
16225
+ ],
16226
+ description: "Enemy name",
16227
+ required: true
16228
+ },
16229
+ health: {
16230
+ types: [
16231
+ "number"
16232
+ ],
16233
+ description: "Current health",
16234
+ required: true
16235
+ },
16236
+ maxHealth: {
16237
+ types: [
16238
+ "number"
16239
+ ],
16240
+ description: "Maximum health",
16241
+ required: true
16242
+ },
16243
+ level: {
16244
+ types: [
16245
+ "number"
16246
+ ],
16247
+ description: "Enemy level"
16248
+ },
16249
+ effects: {
16250
+ types: [
16251
+ "array"
16252
+ ],
16253
+ description: "Active status effects"
16254
+ },
16255
+ className: {
16256
+ types: [
16257
+ "string"
16258
+ ],
16259
+ description: "Additional CSS classes"
16260
+ }
16261
+ }
16262
+ },
16263
+ "game-canvas2-d": {
16264
+ type: "game-canvas2-d",
16265
+ category: "game",
16266
+ description: "GameCanvas2D component",
16267
+ suggestedFor: [
16268
+ "game",
16269
+ "canvas2",
16270
+ "game canvas2 d"
16271
+ ],
16272
+ typicalSize: "medium",
16273
+ propsSchema: {
16274
+ width: {
16275
+ types: [
16276
+ "number"
16277
+ ],
16278
+ description: "Canvas width in pixels"
16279
+ },
16280
+ height: {
16281
+ types: [
16282
+ "number"
16283
+ ],
16284
+ description: "Canvas height in pixels"
16285
+ },
16286
+ onDraw: {
16287
+ types: [
16288
+ "function"
16289
+ ],
16290
+ description: "Called each frame with the 2D context and current frame count"
16291
+ },
16292
+ onTick: {
16293
+ types: [
16294
+ "function"
16295
+ ],
16296
+ description: "Called each tick with delta time in seconds"
16297
+ },
16298
+ fps: {
16299
+ types: [
16300
+ "number"
16301
+ ],
16302
+ description: "Target frames per second"
16303
+ },
16304
+ className: {
16305
+ types: [
16306
+ "string"
16307
+ ],
16308
+ description: "Additional CSS classes"
16309
+ }
16310
+ }
16311
+ },
16312
+ "health-panel": {
16313
+ type: "health-panel",
16314
+ category: "component",
16315
+ description: "HealthPanel component",
16316
+ suggestedFor: [
16317
+ "health",
16318
+ "panel",
16319
+ "health panel"
16320
+ ],
16321
+ typicalSize: "medium",
16322
+ propsSchema: {
16323
+ current: {
16324
+ types: [
16325
+ "number"
16326
+ ],
16327
+ description: "Current health value",
16328
+ required: true
16329
+ },
16330
+ max: {
16331
+ types: [
16332
+ "number"
16333
+ ],
16334
+ description: "Maximum health value",
16335
+ required: true
16336
+ },
16337
+ shield: {
16338
+ types: [
16339
+ "number"
16340
+ ],
16341
+ description: "Shield/armor points"
16342
+ },
16343
+ label: {
16344
+ types: [
16345
+ "string"
16346
+ ],
16347
+ description: "Label shown above the bar"
16348
+ },
16349
+ effects: {
16350
+ types: [
16351
+ "array"
16352
+ ],
16353
+ description: "Active status effects displayed as small badges"
16354
+ },
16355
+ showNumbers: {
16356
+ types: [
16357
+ "boolean"
16358
+ ],
16359
+ description: "Whether to display numeric HP values"
16360
+ },
16361
+ size: {
16362
+ types: [
16363
+ "string"
16364
+ ],
16365
+ description: "Size variant"
16366
+ },
16367
+ className: {
16368
+ types: [
16369
+ "string"
16370
+ ],
16371
+ description: "Additional CSS classes"
16372
+ }
16373
+ }
16374
+ },
16375
+ "inventory-grid": {
16376
+ type: "inventory-grid",
16377
+ category: "game",
16378
+ description: "InventoryGrid component",
16379
+ suggestedFor: [
16380
+ "inventory",
16381
+ "grid",
16382
+ "inventory grid"
16383
+ ],
16384
+ typicalSize: "medium",
16385
+ propsSchema: {
16386
+ items: {
16387
+ types: [
16388
+ "array"
16389
+ ],
16390
+ description: "Array of items to display in the grid",
16391
+ required: true
16392
+ },
16393
+ columns: {
16394
+ types: [
16395
+ "number"
16396
+ ],
16397
+ description: "Number of columns in the grid"
16398
+ },
16399
+ totalSlots: {
16400
+ types: [
16401
+ "number"
16402
+ ],
16403
+ description: "Total number of slots (empty slots fill remaining space)"
16404
+ },
16405
+ selectedId: {
16406
+ types: [
16407
+ "string"
16408
+ ],
16409
+ description: "Currently selected item ID"
16410
+ },
16411
+ onSelect: {
16412
+ types: [
16413
+ "function"
16414
+ ],
16415
+ description: "Callback when an item is selected"
16416
+ },
16417
+ selectEvent: {
16418
+ types: [
16419
+ "string"
16420
+ ],
16421
+ description: "Event bus event name for selection"
16422
+ },
16423
+ size: {
16424
+ types: [
16425
+ "string"
16426
+ ],
16427
+ description: "Size variant for all item slots"
16428
+ },
16429
+ className: {
16430
+ types: [
16431
+ "string"
16432
+ ],
16433
+ description: "Additional CSS classes"
16434
+ }
16435
+ }
16436
+ },
16437
+ "powerup-slots": {
16438
+ type: "powerup-slots",
16439
+ category: "layout",
16440
+ description: "PowerupSlots component",
16441
+ suggestedFor: [
16442
+ "powerup",
16443
+ "slots",
16444
+ "powerup slots"
16445
+ ],
16446
+ typicalSize: "medium",
16447
+ propsSchema: {
16448
+ active: {
16449
+ types: [
16450
+ "array"
16451
+ ],
16452
+ description: "Array of active powerups",
16453
+ required: true
16454
+ },
16455
+ maxSlots: {
16456
+ types: [
16457
+ "number"
16458
+ ],
16459
+ description: "Maximum number of powerup slots"
16460
+ },
16461
+ className: {
16462
+ types: [
16463
+ "string"
16464
+ ],
16465
+ description: "Additional CSS classes"
16466
+ }
16467
+ }
16468
+ },
16469
+ "quest-tracker": {
16470
+ type: "quest-tracker",
16471
+ category: "component",
16472
+ description: "QuestTracker component",
16473
+ suggestedFor: [
16474
+ "quest",
16475
+ "tracker",
16476
+ "quest tracker"
16477
+ ],
16478
+ typicalSize: "medium",
16479
+ propsSchema: {
16480
+ quests: {
16481
+ types: [
16482
+ "array"
16483
+ ],
16484
+ description: "Array of quests to display",
16485
+ required: true
16486
+ },
16487
+ activeQuestId: {
16488
+ types: [
16489
+ "string"
16490
+ ],
16491
+ description: "ID of the currently active quest"
16492
+ },
16493
+ className: {
16494
+ types: [
16495
+ "string"
16496
+ ],
16497
+ description: "Additional CSS classes"
16498
+ }
16499
+ }
16500
+ },
16501
+ "resource-bar": {
16502
+ type: "resource-bar",
16503
+ category: "component",
16504
+ description: "ResourceBar component",
16505
+ suggestedFor: [
16506
+ "resource",
16507
+ "bar",
16508
+ "resource bar"
16509
+ ],
16510
+ typicalSize: "medium",
16511
+ propsSchema: {
16512
+ resources: {
16513
+ types: [
16514
+ "array"
16515
+ ],
16516
+ description: "Resources to display",
16517
+ required: true
16518
+ },
16519
+ size: {
16520
+ types: [
16521
+ "string"
16522
+ ],
16523
+ description: "Size variant"
16524
+ },
16525
+ className: {
16526
+ types: [
16527
+ "string"
16528
+ ],
16529
+ description: "Additional CSS classes"
16530
+ }
16531
+ }
16532
+ },
16533
+ "score-board": {
16534
+ type: "score-board",
16535
+ category: "game",
16536
+ description: "ScoreBoard component",
16537
+ suggestedFor: [
16538
+ "score",
16539
+ "board",
16540
+ "score board"
16541
+ ],
16542
+ typicalSize: "medium",
16543
+ propsSchema: {
16544
+ score: {
16545
+ types: [
16546
+ "number"
16547
+ ],
16548
+ description: "Current score",
16549
+ required: true
16550
+ },
16551
+ highScore: {
16552
+ types: [
16553
+ "number"
16554
+ ],
16555
+ description: "All-time high score"
16556
+ },
16557
+ combo: {
16558
+ types: [
16559
+ "number"
16560
+ ],
16561
+ description: "Current combo count"
16562
+ },
16563
+ multiplier: {
16564
+ types: [
16565
+ "number"
16566
+ ],
16567
+ description: "Score multiplier"
16568
+ },
16569
+ level: {
16570
+ types: [
16571
+ "number"
16572
+ ],
16573
+ description: "Current level"
16574
+ },
16575
+ className: {
16576
+ types: [
16577
+ "string"
16578
+ ],
16579
+ description: "Additional CSS classes"
16580
+ }
16581
+ }
16582
+ },
16583
+ "turn-panel": {
16584
+ type: "turn-panel",
16585
+ category: "component",
16586
+ description: "TurnPanel component",
16587
+ suggestedFor: [
16588
+ "turn",
16589
+ "panel",
16590
+ "turn panel"
16591
+ ],
16592
+ typicalSize: "medium",
16593
+ propsSchema: {
16594
+ currentTurn: {
16595
+ types: [
16596
+ "number"
16597
+ ],
16598
+ description: "Current turn number",
16599
+ required: true
16600
+ },
16601
+ maxTurns: {
16602
+ types: [
16603
+ "number"
16604
+ ],
16605
+ description: "Maximum number of turns"
16606
+ },
16607
+ phase: {
16608
+ types: [
16609
+ "string"
16610
+ ],
16611
+ description: "Current phase label"
16612
+ },
16613
+ activeTeam: {
16614
+ types: [
16615
+ "string"
16616
+ ],
16617
+ description: "Active team name"
16618
+ },
16619
+ actions: {
16620
+ types: [
16621
+ "array"
16622
+ ],
16623
+ description: "Action buttons to display"
16624
+ },
16625
+ className: {
16626
+ types: [
16627
+ "string"
16628
+ ],
16629
+ description: "Additional CSS classes"
16630
+ }
16631
+ }
16632
+ },
16633
+ "unit-command-bar": {
16634
+ type: "unit-command-bar",
16635
+ category: "component",
16636
+ description: "UnitCommandBar component",
16637
+ suggestedFor: [
16638
+ "unit",
16639
+ "command",
16640
+ "bar",
16641
+ "unit command bar"
16642
+ ],
16643
+ typicalSize: "medium",
16644
+ propsSchema: {
16645
+ commands: {
16646
+ types: [
16647
+ "array"
16648
+ ],
16649
+ description: "Available commands",
16650
+ required: true
16651
+ },
16652
+ selectedUnitId: {
16653
+ types: [
16654
+ "string"
16655
+ ],
16656
+ description: "ID of the currently selected unit"
16657
+ },
16658
+ className: {
16659
+ types: [
16660
+ "string"
16661
+ ],
16662
+ description: "Additional CSS classes"
16663
+ }
16664
+ }
16665
+ },
16666
+ heading: {
16667
+ type: "heading",
16668
+ category: "component",
16669
+ description: "Alias for typography \u2014 Typography Atom Component Text elements following the KFlow design system with theme-aware styling.",
16670
+ suggestedFor: [
16671
+ "typography"
16672
+ ],
16673
+ typicalSize: "small",
16674
+ propsSchema: {
16675
+ variant: {
16676
+ types: [
16677
+ "typographyvariant"
16678
+ ],
16679
+ description: "Typography variant"
16680
+ },
16681
+ level: {
16682
+ types: [
16683
+ "number"
16684
+ ],
16685
+ description: "Heading level (1-6) - alternative to variant for headings"
16686
+ },
16687
+ color: {
16688
+ types: [
16689
+ "string"
16690
+ ],
16691
+ description: "Text color"
16692
+ },
16693
+ align: {
16694
+ types: [
16695
+ "string"
16696
+ ],
16697
+ description: "Text alignment"
16698
+ },
16699
+ weight: {
16700
+ types: [
16701
+ "string"
16702
+ ],
16703
+ description: "Font weight override"
16704
+ },
16705
+ size: {
16706
+ types: [
16707
+ "typographysize"
16708
+ ],
16709
+ description: "Font size override"
16710
+ },
16711
+ truncate: {
16712
+ types: [
16713
+ "boolean"
16714
+ ],
16715
+ description: "Truncate with ellipsis (single line)"
16716
+ },
16717
+ overflow: {
16718
+ types: [
16719
+ "string"
16720
+ ],
16721
+ description: "Overflow handling mode"
16722
+ },
16723
+ as: {
16724
+ types: [
16725
+ "unknown"
16726
+ ],
16727
+ description: "Custom HTML element"
16728
+ },
16729
+ id: {
16730
+ types: [
16731
+ "string"
16732
+ ],
16733
+ description: "HTML id attribute"
16734
+ },
16735
+ className: {
16736
+ types: [
16737
+ "string"
16738
+ ],
16739
+ description: "Additional class names"
16740
+ },
16741
+ style: {
16742
+ types: [
16743
+ "object"
16744
+ ],
16745
+ description: "Inline style"
16746
+ },
16747
+ content: {
16748
+ types: [
16749
+ "node"
16750
+ ],
16751
+ description: "Text content (alternative to children)"
16752
+ },
16753
+ children: {
16754
+ types: [
16755
+ "node"
16756
+ ],
16757
+ description: "Children elements"
16758
+ }
16759
+ }
16760
+ },
16761
+ text: {
16762
+ type: "text",
16763
+ category: "component",
16764
+ description: "Alias for typography \u2014 Typography Atom Component Text elements following the KFlow design system with theme-aware styling.",
16765
+ suggestedFor: [
16766
+ "typography"
16767
+ ],
16768
+ typicalSize: "small",
16769
+ propsSchema: {
16770
+ variant: {
16771
+ types: [
16772
+ "typographyvariant"
16773
+ ],
16774
+ description: "Typography variant"
16775
+ },
16776
+ level: {
16777
+ types: [
16778
+ "number"
16779
+ ],
16780
+ description: "Heading level (1-6) - alternative to variant for headings"
16781
+ },
16782
+ color: {
16783
+ types: [
16784
+ "string"
16785
+ ],
16786
+ description: "Text color"
16787
+ },
16788
+ align: {
16789
+ types: [
16790
+ "string"
16791
+ ],
16792
+ description: "Text alignment"
16793
+ },
16794
+ weight: {
16795
+ types: [
16796
+ "string"
16797
+ ],
16798
+ description: "Font weight override"
16799
+ },
16800
+ size: {
16801
+ types: [
16802
+ "typographysize"
16803
+ ],
16804
+ description: "Font size override"
16805
+ },
16806
+ truncate: {
16807
+ types: [
16808
+ "boolean"
16809
+ ],
16810
+ description: "Truncate with ellipsis (single line)"
16811
+ },
16812
+ overflow: {
16813
+ types: [
16814
+ "string"
16815
+ ],
16816
+ description: "Overflow handling mode"
16817
+ },
16818
+ as: {
14330
16819
  types: [
14331
16820
  "unknown"
14332
16821
  ],
@@ -14990,7 +17479,7 @@ var integrators_registry_default = {
14990
17479
  // src/component-mapping.json
14991
17480
  var component_mapping_default = {
14992
17481
  version: "1.0.0",
14993
- exportedAt: "2026-03-09T08:08:00.655Z",
17482
+ exportedAt: "2026-03-11T04:10:55.563Z",
14994
17483
  mappings: {
14995
17484
  "page-header": {
14996
17485
  component: "PageHeader",
@@ -15447,7 +17936,12 @@ var component_mapping_default = {
15447
17936
  },
15448
17937
  "stat-badge": {
15449
17938
  component: "StatBadge",
15450
- importPath: "@/components/molecules/StatBadge",
17939
+ importPath: "@/components/molecules/game/StatBadge",
17940
+ category: "game"
17941
+ },
17942
+ "stat-display": {
17943
+ component: "StatDisplay",
17944
+ importPath: "@/components/molecules/StatDisplay",
15451
17945
  category: "display"
15452
17946
  },
15453
17947
  "button-pattern": {
@@ -15567,7 +18061,7 @@ var component_mapping_default = {
15567
18061
  },
15568
18062
  meter: {
15569
18063
  component: "Meter",
15570
- importPath: "@almadar/ui",
18064
+ importPath: "@/components/molecules/Meter",
15571
18065
  category: "visualization"
15572
18066
  },
15573
18067
  timeline: {
@@ -15990,6 +18484,211 @@ var component_mapping_default = {
15990
18484
  importPath: "@/components/molecules/ProgressDots",
15991
18485
  category: "component"
15992
18486
  },
18487
+ "platformer-canvas": {
18488
+ component: "PlatformerCanvas",
18489
+ importPath: "@/components/organisms/PlatformerCanvas",
18490
+ category: "form"
18491
+ },
18492
+ "map-view": {
18493
+ component: "MapView",
18494
+ importPath: "@/components/molecules/MapView",
18495
+ category: "component"
18496
+ },
18497
+ "range-slider": {
18498
+ component: "RangeSlider",
18499
+ importPath: "@/components/atoms/RangeSlider",
18500
+ category: "component"
18501
+ },
18502
+ "status-dot": {
18503
+ component: "StatusDot",
18504
+ importPath: "@/components/atoms/StatusDot",
18505
+ category: "display"
18506
+ },
18507
+ "trend-indicator": {
18508
+ component: "TrendIndicator",
18509
+ importPath: "@/components/atoms/TrendIndicator",
18510
+ category: "component"
18511
+ },
18512
+ lightbox: {
18513
+ component: "Lightbox",
18514
+ importPath: "@/components/molecules/Lightbox",
18515
+ category: "component"
18516
+ },
18517
+ "number-stepper": {
18518
+ component: "NumberStepper",
18519
+ importPath: "@/components/molecules/NumberStepper",
18520
+ category: "component"
18521
+ },
18522
+ "star-rating": {
18523
+ component: "StarRating",
18524
+ importPath: "@/components/molecules/StarRating",
18525
+ category: "component"
18526
+ },
18527
+ "upload-drop-zone": {
18528
+ component: "UploadDropZone",
18529
+ importPath: "@/components/molecules/UploadDropZone",
18530
+ category: "component"
18531
+ },
18532
+ "animated-counter": {
18533
+ component: "AnimatedCounter",
18534
+ importPath: "@/components/atoms/AnimatedCounter",
18535
+ category: "component"
18536
+ },
18537
+ "confetti-effect": {
18538
+ component: "ConfettiEffect",
18539
+ importPath: "@/components/atoms/ConfettiEffect",
18540
+ category: "component"
18541
+ },
18542
+ "infinite-scroll-sentinel": {
18543
+ component: "InfiniteScrollSentinel",
18544
+ importPath: "@/components/atoms/InfiniteScrollSentinel",
18545
+ category: "component"
18546
+ },
18547
+ "typewriter-text": {
18548
+ component: "TypewriterText",
18549
+ importPath: "@/components/atoms/TypewriterText",
18550
+ category: "component"
18551
+ },
18552
+ carousel: {
18553
+ component: "Carousel",
18554
+ importPath: "@/components/molecules/Carousel",
18555
+ category: "component"
18556
+ },
18557
+ "pull-to-refresh": {
18558
+ component: "PullToRefresh",
18559
+ importPath: "@/components/molecules/PullToRefresh",
18560
+ category: "component"
18561
+ },
18562
+ "sortable-list": {
18563
+ component: "SortableList",
18564
+ importPath: "@/components/molecules/SortableList",
18565
+ category: "display"
18566
+ },
18567
+ "swipeable-row": {
18568
+ component: "SwipeableRow",
18569
+ importPath: "@/components/molecules/SwipeableRow",
18570
+ category: "component"
18571
+ },
18572
+ "action-button": {
18573
+ component: "ActionButton",
18574
+ importPath: "@/components/atoms/ActionButton",
18575
+ category: "component"
18576
+ },
18577
+ "choice-button": {
18578
+ component: "ChoiceButton",
18579
+ importPath: "@/components/atoms/ChoiceButton",
18580
+ category: "component"
18581
+ },
18582
+ "combo-counter": {
18583
+ component: "ComboCounter",
18584
+ importPath: "@/components/atoms/ComboCounter",
18585
+ category: "component"
18586
+ },
18587
+ "damage-number": {
18588
+ component: "DamageNumber",
18589
+ importPath: "@/components/atoms/DamageNumber",
18590
+ category: "component"
18591
+ },
18592
+ "dialogue-bubble": {
18593
+ component: "DialogueBubble",
18594
+ importPath: "@/components/atoms/DialogueBubble",
18595
+ category: "game"
18596
+ },
18597
+ "item-slot": {
18598
+ component: "ItemSlot",
18599
+ importPath: "@/components/atoms/ItemSlot",
18600
+ category: "layout"
18601
+ },
18602
+ "mini-map": {
18603
+ component: "MiniMap",
18604
+ importPath: "@/components/atoms/MiniMap",
18605
+ category: "component"
18606
+ },
18607
+ "resource-counter": {
18608
+ component: "ResourceCounter",
18609
+ importPath: "@/components/atoms/ResourceCounter",
18610
+ category: "component"
18611
+ },
18612
+ "status-effect": {
18613
+ component: "StatusEffect",
18614
+ importPath: "@/components/atoms/StatusEffect",
18615
+ category: "display"
18616
+ },
18617
+ "timer-display": {
18618
+ component: "TimerDisplay",
18619
+ importPath: "@/components/atoms/TimerDisplay",
18620
+ category: "component"
18621
+ },
18622
+ "turn-indicator": {
18623
+ component: "TurnIndicator",
18624
+ importPath: "@/components/atoms/TurnIndicator",
18625
+ category: "component"
18626
+ },
18627
+ "waypoint-marker": {
18628
+ component: "WaypointMarker",
18629
+ importPath: "@/components/atoms/WaypointMarker",
18630
+ category: "component"
18631
+ },
18632
+ "x-p-bar": {
18633
+ component: "XPBar",
18634
+ importPath: "@/components/atoms/XPBar",
18635
+ category: "component"
18636
+ },
18637
+ "crafting-recipe": {
18638
+ component: "CraftingRecipe",
18639
+ importPath: "@/components/molecules/CraftingRecipe",
18640
+ category: "component"
18641
+ },
18642
+ "enemy-plate": {
18643
+ component: "EnemyPlate",
18644
+ importPath: "@/components/molecules/EnemyPlate",
18645
+ category: "component"
18646
+ },
18647
+ "game-canvas2-d": {
18648
+ component: "GameCanvas2D",
18649
+ importPath: "@/components/molecules/GameCanvas2D",
18650
+ category: "game"
18651
+ },
18652
+ "health-panel": {
18653
+ component: "HealthPanel",
18654
+ importPath: "@/components/molecules/HealthPanel",
18655
+ category: "component"
18656
+ },
18657
+ "inventory-grid": {
18658
+ component: "InventoryGrid",
18659
+ importPath: "@/components/molecules/InventoryGrid",
18660
+ category: "game"
18661
+ },
18662
+ "powerup-slots": {
18663
+ component: "PowerupSlots",
18664
+ importPath: "@/components/molecules/PowerupSlots",
18665
+ category: "layout"
18666
+ },
18667
+ "quest-tracker": {
18668
+ component: "QuestTracker",
18669
+ importPath: "@/components/molecules/QuestTracker",
18670
+ category: "component"
18671
+ },
18672
+ "resource-bar": {
18673
+ component: "ResourceBar",
18674
+ importPath: "@/components/molecules/ResourceBar",
18675
+ category: "component"
18676
+ },
18677
+ "score-board": {
18678
+ component: "ScoreBoard",
18679
+ importPath: "@/components/molecules/ScoreBoard",
18680
+ category: "game"
18681
+ },
18682
+ "turn-panel": {
18683
+ component: "TurnPanel",
18684
+ importPath: "@/components/molecules/TurnPanel",
18685
+ category: "component"
18686
+ },
18687
+ "unit-command-bar": {
18688
+ component: "UnitCommandBar",
18689
+ importPath: "@/components/molecules/UnitCommandBar",
18690
+ category: "component"
18691
+ },
15993
18692
  heading: {
15994
18693
  component: "Typography",
15995
18694
  importPath: "@/components/atoms/Typography",
@@ -16006,7 +18705,7 @@ var component_mapping_default = {
16006
18705
  // src/event-contracts.json
16007
18706
  var event_contracts_default = {
16008
18707
  version: "1.0.0",
16009
- exportedAt: "2026-03-09T08:08:00.655Z",
18708
+ exportedAt: "2026-03-11T04:10:55.563Z",
16010
18709
  contracts: {
16011
18710
  form: {
16012
18711
  emits: [
@@ -17138,7 +19837,7 @@ var event_contracts_default = {
17138
19837
  }
17139
19838
  ],
17140
19839
  requires: [],
17141
- entityAware: true
19840
+ entityAware: false
17142
19841
  },
17143
19842
  "trait-slot": {
17144
19843
  emits: [