@almadar/patterns 2.3.0 → 2.5.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "1.0.0",
3
- "exportedAt": "2026-03-09T08:08:00.655Z",
3
+ "exportedAt": "2026-03-10T17:18:23.379Z",
4
4
  "patterns": {
5
5
  "entity-table": {
6
6
  "type": "entity-table",
@@ -2158,9 +2158,10 @@
2158
2158
  },
2159
2159
  "icon": {
2160
2160
  "types": [
2161
- "icon"
2161
+ "icon",
2162
+ "string"
2162
2163
  ],
2163
- "description": "Icon to display"
2164
+ "description": "Icon to display (Lucide component or icon name string)"
2164
2165
  },
2165
2166
  "iconBg": {
2166
2167
  "types": [
@@ -2197,6 +2198,12 @@
2197
2198
  "boolean"
2198
2199
  ],
2199
2200
  "description": "Compact display mode"
2201
+ },
2202
+ "sparklineData": {
2203
+ "types": [
2204
+ "unknown"
2205
+ ],
2206
+ "description": "Sparkline data points for an inline trend chart"
2200
2207
  }
2201
2208
  }
2202
2209
  },
@@ -2386,6 +2393,12 @@
2386
2393
  "string"
2387
2394
  ],
2388
2395
  "description": "Declarative close event — emits UI:{closeEvent} via eventBus when modal should close"
2396
+ },
2397
+ "swipeDownToClose": {
2398
+ "types": [
2399
+ "boolean"
2400
+ ],
2401
+ "description": "Enable swipe-down-to-close on mobile bottom sheet (default: true)"
2389
2402
  }
2390
2403
  }
2391
2404
  },
@@ -3520,6 +3533,12 @@
3520
3533
  "string"
3521
3534
  ],
3522
3535
  "description": "Badge label text (alternative to children for schema-driven rendering)"
3536
+ },
3537
+ "icon": {
3538
+ "types": [
3539
+ "node"
3540
+ ],
3541
+ "description": "Icon name (Lucide icon string) or React node"
3523
3542
  }
3524
3543
  }
3525
3544
  },
@@ -3752,6 +3771,18 @@
3752
3771
  "number"
3753
3772
  ],
3754
3773
  "description": "Maximum level"
3774
+ },
3775
+ "longPressEvent": {
3776
+ "types": [
3777
+ "string"
3778
+ ],
3779
+ "description": "Event emitted on long press: UI:{longPressEvent}"
3780
+ },
3781
+ "longPressPayload": {
3782
+ "types": [
3783
+ "object"
3784
+ ],
3785
+ "description": "Additional payload for long-press events"
3755
3786
  }
3756
3787
  }
3757
3788
  },
@@ -4854,6 +4885,12 @@
4854
4885
  "object"
4855
4886
  ],
4856
4887
  "description": "Payload to include with the action event"
4888
+ },
4889
+ "responsive": {
4890
+ "types": [
4891
+ "boolean"
4892
+ ],
4893
+ "description": "When true, horizontal stacks flip to vertical below the md breakpoint (768px)"
4857
4894
  }
4858
4895
  }
4859
4896
  },
@@ -8486,7 +8523,7 @@
8486
8523
  },
8487
8524
  "graph-canvas": {
8488
8525
  "type": "graph-canvas",
8489
- "category": "visualization",
8526
+ "category": "game",
8490
8527
  "description": "Force-directed graph visualization for node-link data with interactive zoom, pan, and layout",
8491
8528
  "suggestedFor": [
8492
8529
  "knowledge graphs",
@@ -12611,6 +12648,7 @@
12611
12648
  "propsSchema": {
12612
12649
  "preset": {
12613
12650
  "types": [
12651
+ "string",
12614
12652
  "physicspreset"
12615
12653
  ],
12616
12654
  "description": "preset prop",
@@ -13715,6 +13753,30 @@
13715
13753
  "string"
13716
13754
  ],
13717
13755
  "description": "Additional CSS classes"
13756
+ },
13757
+ "longPressEvent": {
13758
+ "types": [
13759
+ "string"
13760
+ ],
13761
+ "description": "Event emitted on long-press of a time slot: UI:{longPressEvent} with { date, time }"
13762
+ },
13763
+ "longPressPayload": {
13764
+ "types": [
13765
+ "object"
13766
+ ],
13767
+ "description": "Additional payload for long-press events"
13768
+ },
13769
+ "swipeLeftEvent": {
13770
+ "types": [
13771
+ "string"
13772
+ ],
13773
+ "description": "Event emitted on swipe left (next week): UI:{swipeLeftEvent}"
13774
+ },
13775
+ "swipeRightEvent": {
13776
+ "types": [
13777
+ "string"
13778
+ ],
13779
+ "description": "Event emitted on swipe right (prev week): UI:{swipeRightEvent}"
13718
13780
  }
13719
13781
  }
13720
13782
  },
@@ -14103,6 +14165,48 @@
14103
14165
  "string"
14104
14166
  ],
14105
14167
  "description": "Entity field name containing an image URL for card thumbnails"
14168
+ },
14169
+ "selectable": {
14170
+ "types": [
14171
+ "boolean"
14172
+ ],
14173
+ "description": "Enable multi-select with checkboxes"
14174
+ },
14175
+ "selectionEvent": {
14176
+ "types": [
14177
+ "string"
14178
+ ],
14179
+ "description": "Selection change event name (emits UI:{selectionEvent} with { selectedIds: string[] })"
14180
+ },
14181
+ "infiniteScroll": {
14182
+ "types": [
14183
+ "boolean"
14184
+ ],
14185
+ "description": "Enable infinite scroll loading"
14186
+ },
14187
+ "loadMoreEvent": {
14188
+ "types": [
14189
+ "string"
14190
+ ],
14191
+ "description": "Event emitted when more items needed: UI:{loadMoreEvent}"
14192
+ },
14193
+ "hasMore": {
14194
+ "types": [
14195
+ "boolean"
14196
+ ],
14197
+ "description": "Whether more items are available for infinite scroll"
14198
+ },
14199
+ "children": {
14200
+ "types": [
14201
+ "function"
14202
+ ],
14203
+ "description": "Render prop for custom per-item content. When provided, `fields` and `itemActions` are ignored."
14204
+ },
14205
+ "pageSize": {
14206
+ "types": [
14207
+ "number"
14208
+ ],
14209
+ "description": "Max items to show before \"Show More\" button. Defaults to 0 (disabled)."
14106
14210
  }
14107
14211
  }
14108
14212
  },
@@ -14153,6 +14257,1261 @@
14153
14257
  ],
14154
14258
  "description": "Visual variant"
14155
14259
  },
14260
+ "groupBy": {
14261
+ "types": [
14262
+ "string"
14263
+ ],
14264
+ "description": "Group items by a field value (renders section headers between groups)"
14265
+ },
14266
+ "senderField": {
14267
+ "types": [
14268
+ "string"
14269
+ ],
14270
+ "description": "Field name identifying the sender (used with variant: \"message\")"
14271
+ },
14272
+ "currentUser": {
14273
+ "types": [
14274
+ "string"
14275
+ ],
14276
+ "description": "Current user identifier; messages matching this value align right (used with variant: \"message\")"
14277
+ },
14278
+ "className": {
14279
+ "types": [
14280
+ "string"
14281
+ ],
14282
+ "description": "Additional CSS classes"
14283
+ },
14284
+ "isLoading": {
14285
+ "types": [
14286
+ "boolean"
14287
+ ],
14288
+ "description": "Loading state"
14289
+ },
14290
+ "error": {
14291
+ "types": [
14292
+ "error"
14293
+ ],
14294
+ "description": "Error state"
14295
+ },
14296
+ "reorderable": {
14297
+ "types": [
14298
+ "boolean"
14299
+ ],
14300
+ "description": "Enable drag-to-reorder with grip handles"
14301
+ },
14302
+ "reorderEvent": {
14303
+ "types": [
14304
+ "string"
14305
+ ],
14306
+ "description": "Event emitted on reorder: UI:{reorderEvent} with { fromIndex, toIndex }"
14307
+ },
14308
+ "swipeLeftEvent": {
14309
+ "types": [
14310
+ "string"
14311
+ ],
14312
+ "description": "Event emitted on left swipe: UI:{swipeLeftEvent} with { row }"
14313
+ },
14314
+ "swipeLeftActions": {
14315
+ "types": [
14316
+ "unknown"
14317
+ ],
14318
+ "description": "Actions revealed on left swipe"
14319
+ },
14320
+ "swipeRightEvent": {
14321
+ "types": [
14322
+ "string"
14323
+ ],
14324
+ "description": "Event emitted on right swipe: UI:{swipeRightEvent} with { row }"
14325
+ },
14326
+ "swipeRightActions": {
14327
+ "types": [
14328
+ "unknown"
14329
+ ],
14330
+ "description": "Actions revealed on right swipe"
14331
+ },
14332
+ "longPressEvent": {
14333
+ "types": [
14334
+ "string"
14335
+ ],
14336
+ "description": "Event emitted on long press: UI:{longPressEvent} with { row }"
14337
+ },
14338
+ "infiniteScroll": {
14339
+ "types": [
14340
+ "boolean"
14341
+ ],
14342
+ "description": "Enable infinite scroll loading"
14343
+ },
14344
+ "loadMoreEvent": {
14345
+ "types": [
14346
+ "string"
14347
+ ],
14348
+ "description": "Event emitted when more items needed: UI:{loadMoreEvent}"
14349
+ },
14350
+ "hasMore": {
14351
+ "types": [
14352
+ "boolean"
14353
+ ],
14354
+ "description": "Whether more items are available for infinite scroll"
14355
+ },
14356
+ "children": {
14357
+ "types": [
14358
+ "function"
14359
+ ],
14360
+ "description": "Render prop for custom per-item content. When provided, `fields` and `itemActions` are ignored."
14361
+ },
14362
+ "pageSize": {
14363
+ "types": [
14364
+ "number"
14365
+ ],
14366
+ "description": "Max items to show before \"Show More\" button. Defaults to 5. Set to 0 to disable."
14367
+ }
14368
+ }
14369
+ },
14370
+ "platformer-canvas": {
14371
+ "type": "platformer-canvas",
14372
+ "category": "game",
14373
+ "description": "PlatformerCanvas component",
14374
+ "suggestedFor": [
14375
+ "platformer",
14376
+ "canvas",
14377
+ "platformer canvas"
14378
+ ],
14379
+ "typicalSize": "large",
14380
+ "propsSchema": {
14381
+ "player": {
14382
+ "types": [
14383
+ "platformerplayer"
14384
+ ],
14385
+ "description": "Player entity data"
14386
+ },
14387
+ "platforms": {
14388
+ "types": [
14389
+ "unknown"
14390
+ ],
14391
+ "description": "Static platforms / level geometry"
14392
+ },
14393
+ "worldWidth": {
14394
+ "types": [
14395
+ "number"
14396
+ ],
14397
+ "description": "World dimensions"
14398
+ },
14399
+ "worldHeight": {
14400
+ "types": [
14401
+ "number"
14402
+ ],
14403
+ "description": "worldHeight prop"
14404
+ },
14405
+ "canvasWidth": {
14406
+ "types": [
14407
+ "number"
14408
+ ],
14409
+ "description": "Canvas display size"
14410
+ },
14411
+ "canvasHeight": {
14412
+ "types": [
14413
+ "number"
14414
+ ],
14415
+ "description": "canvasHeight prop"
14416
+ },
14417
+ "followCamera": {
14418
+ "types": [
14419
+ "boolean"
14420
+ ],
14421
+ "description": "Camera follows player"
14422
+ },
14423
+ "bgColor": {
14424
+ "types": [
14425
+ "string"
14426
+ ],
14427
+ "description": "Background color"
14428
+ },
14429
+ "playerSprite": {
14430
+ "types": [
14431
+ "string"
14432
+ ],
14433
+ "description": "Player sprite image URL"
14434
+ },
14435
+ "tileSprites": {
14436
+ "types": [
14437
+ "object"
14438
+ ],
14439
+ "description": "Map of platform type to tile sprite URL"
14440
+ },
14441
+ "backgroundImage": {
14442
+ "types": [
14443
+ "string"
14444
+ ],
14445
+ "description": "Background image URL"
14446
+ },
14447
+ "assetBaseUrl": {
14448
+ "types": [
14449
+ "string"
14450
+ ],
14451
+ "description": "Base URL prefix for asset URLs"
14452
+ },
14453
+ "leftEvent": {
14454
+ "types": [
14455
+ "string"
14456
+ ],
14457
+ "description": "Event names for keyboard controls"
14458
+ },
14459
+ "rightEvent": {
14460
+ "types": [
14461
+ "string"
14462
+ ],
14463
+ "description": "rightEvent prop"
14464
+ },
14465
+ "jumpEvent": {
14466
+ "types": [
14467
+ "string"
14468
+ ],
14469
+ "description": "jumpEvent prop"
14470
+ },
14471
+ "stopEvent": {
14472
+ "types": [
14473
+ "string"
14474
+ ],
14475
+ "description": "stopEvent prop"
14476
+ },
14477
+ "className": {
14478
+ "types": [
14479
+ "string"
14480
+ ],
14481
+ "description": "Additional CSS classes"
14482
+ },
14483
+ "entity": {
14484
+ "types": [
14485
+ "object"
14486
+ ],
14487
+ "description": "Entity data (schema binding)"
14488
+ }
14489
+ }
14490
+ },
14491
+ "map-view": {
14492
+ "type": "map-view",
14493
+ "category": "component",
14494
+ "description": "MapView component",
14495
+ "suggestedFor": [
14496
+ "map",
14497
+ "view",
14498
+ "map view"
14499
+ ],
14500
+ "typicalSize": "medium",
14501
+ "propsSchema": {
14502
+ "markers": {
14503
+ "types": [
14504
+ "array"
14505
+ ],
14506
+ "description": "Array of markers to display"
14507
+ },
14508
+ "centerLat": {
14509
+ "types": [
14510
+ "number"
14511
+ ],
14512
+ "description": "Map center latitude"
14513
+ },
14514
+ "centerLng": {
14515
+ "types": [
14516
+ "number"
14517
+ ],
14518
+ "description": "Map center longitude"
14519
+ },
14520
+ "zoom": {
14521
+ "types": [
14522
+ "number"
14523
+ ],
14524
+ "description": "Zoom level (1-18, default 13)"
14525
+ },
14526
+ "height": {
14527
+ "types": [
14528
+ "string"
14529
+ ],
14530
+ "description": "Height of the map container (default \"400px\")"
14531
+ },
14532
+ "onMarkerClick": {
14533
+ "types": [
14534
+ "function"
14535
+ ],
14536
+ "description": "Callback when a marker is clicked (programmatic use)"
14537
+ },
14538
+ "onMapClick": {
14539
+ "types": [
14540
+ "function"
14541
+ ],
14542
+ "description": "Callback when the map is clicked (programmatic use)"
14543
+ },
14544
+ "mapClickEvent": {
14545
+ "types": [
14546
+ "string"
14547
+ ],
14548
+ "description": "Event name dispatched via event bus when the map is clicked. Payload: { latitude, longitude }"
14549
+ },
14550
+ "markerClickEvent": {
14551
+ "types": [
14552
+ "string"
14553
+ ],
14554
+ "description": "Event name dispatched via event bus when a marker is clicked. Payload: marker data"
14555
+ },
14556
+ "showClickedPin": {
14557
+ "types": [
14558
+ "boolean"
14559
+ ],
14560
+ "description": "Whether to show a pin at the clicked location"
14561
+ },
14562
+ "className": {
14563
+ "types": [
14564
+ "string"
14565
+ ],
14566
+ "description": "Additional CSS classes"
14567
+ },
14568
+ "showAttribution": {
14569
+ "types": [
14570
+ "boolean"
14571
+ ],
14572
+ "description": "Show attribution (default true)"
14573
+ }
14574
+ }
14575
+ },
14576
+ "range-slider": {
14577
+ "type": "range-slider",
14578
+ "category": "component",
14579
+ "description": "RangeSlider component",
14580
+ "suggestedFor": [
14581
+ "range",
14582
+ "slider",
14583
+ "range slider"
14584
+ ],
14585
+ "typicalSize": "small",
14586
+ "propsSchema": {
14587
+ "min": {
14588
+ "types": [
14589
+ "number"
14590
+ ],
14591
+ "description": "Minimum value"
14592
+ },
14593
+ "max": {
14594
+ "types": [
14595
+ "number"
14596
+ ],
14597
+ "description": "Maximum value"
14598
+ },
14599
+ "value": {
14600
+ "types": [
14601
+ "number"
14602
+ ],
14603
+ "description": "Current value"
14604
+ },
14605
+ "step": {
14606
+ "types": [
14607
+ "number"
14608
+ ],
14609
+ "description": "Step increment"
14610
+ },
14611
+ "showTooltip": {
14612
+ "types": [
14613
+ "boolean"
14614
+ ],
14615
+ "description": "Show tooltip with current value on drag"
14616
+ },
14617
+ "showTicks": {
14618
+ "types": [
14619
+ "boolean"
14620
+ ],
14621
+ "description": "Show tick marks at step intervals"
14622
+ },
14623
+ "buffered": {
14624
+ "types": [
14625
+ "number"
14626
+ ],
14627
+ "description": "Buffered range (0-100), for media seek bars"
14628
+ },
14629
+ "size": {
14630
+ "types": [
14631
+ "rangeslidersize"
14632
+ ],
14633
+ "description": "Slider size"
14634
+ },
14635
+ "disabled": {
14636
+ "types": [
14637
+ "boolean"
14638
+ ],
14639
+ "description": "Disabled state"
14640
+ },
14641
+ "action": {
14642
+ "types": [
14643
+ "string"
14644
+ ],
14645
+ "description": "Declarative event name for value changes"
14646
+ },
14647
+ "actionPayload": {
14648
+ "types": [
14649
+ "object"
14650
+ ],
14651
+ "description": "Payload to include with the action event"
14652
+ },
14653
+ "onChange": {
14654
+ "types": [
14655
+ "function"
14656
+ ],
14657
+ "description": "Direct onChange callback"
14658
+ },
14659
+ "formatValue": {
14660
+ "types": [
14661
+ "function"
14662
+ ],
14663
+ "description": "Format function for tooltip display"
14664
+ }
14665
+ }
14666
+ },
14667
+ "status-dot": {
14668
+ "type": "status-dot",
14669
+ "category": "display",
14670
+ "description": "StatusDot component",
14671
+ "suggestedFor": [
14672
+ "status",
14673
+ "dot",
14674
+ "status dot"
14675
+ ],
14676
+ "typicalSize": "small",
14677
+ "propsSchema": {
14678
+ "status": {
14679
+ "types": [
14680
+ "statusdotstatus"
14681
+ ],
14682
+ "description": "Status determines the dot color"
14683
+ },
14684
+ "pulse": {
14685
+ "types": [
14686
+ "boolean"
14687
+ ],
14688
+ "description": "Enable pulse animation for active/critical states"
14689
+ },
14690
+ "size": {
14691
+ "types": [
14692
+ "statusdotsize"
14693
+ ],
14694
+ "description": "Dot size"
14695
+ },
14696
+ "label": {
14697
+ "types": [
14698
+ "string"
14699
+ ],
14700
+ "description": "Accessible label (rendered as sr-only text)"
14701
+ }
14702
+ }
14703
+ },
14704
+ "trend-indicator": {
14705
+ "type": "trend-indicator",
14706
+ "category": "component",
14707
+ "description": "TrendIndicator component",
14708
+ "suggestedFor": [
14709
+ "trend",
14710
+ "indicator",
14711
+ "trend indicator"
14712
+ ],
14713
+ "typicalSize": "small",
14714
+ "propsSchema": {
14715
+ "value": {
14716
+ "types": [
14717
+ "number"
14718
+ ],
14719
+ "description": "Numeric value to display (e.g., 12.5 for +12.5%)"
14720
+ },
14721
+ "direction": {
14722
+ "types": [
14723
+ "trenddirection"
14724
+ ],
14725
+ "description": "Override automatic direction detection (positive=up, negative=down, zero=flat)"
14726
+ },
14727
+ "showValue": {
14728
+ "types": [
14729
+ "boolean"
14730
+ ],
14731
+ "description": "Show the formatted value text next to the arrow"
14732
+ },
14733
+ "invert": {
14734
+ "types": [
14735
+ "boolean"
14736
+ ],
14737
+ "description": "Invert color logic (for metrics where down is good, e.g., error rate, bounce rate)"
14738
+ },
14739
+ "label": {
14740
+ "types": [
14741
+ "string"
14742
+ ],
14743
+ "description": "Accessible label override"
14744
+ },
14745
+ "size": {
14746
+ "types": [
14747
+ "trendindicatorsize"
14748
+ ],
14749
+ "description": "Size of the indicator"
14750
+ }
14751
+ }
14752
+ },
14753
+ "lightbox": {
14754
+ "type": "lightbox",
14755
+ "category": "component",
14756
+ "description": "Lightbox component",
14757
+ "suggestedFor": [
14758
+ "lightbox"
14759
+ ],
14760
+ "typicalSize": "medium",
14761
+ "propsSchema": {
14762
+ "images": {
14763
+ "types": [
14764
+ "array"
14765
+ ],
14766
+ "description": "Array of images to display",
14767
+ "required": true
14768
+ },
14769
+ "currentIndex": {
14770
+ "types": [
14771
+ "number"
14772
+ ],
14773
+ "description": "Current image index"
14774
+ },
14775
+ "isOpen": {
14776
+ "types": [
14777
+ "boolean"
14778
+ ],
14779
+ "description": "Whether the lightbox is open"
14780
+ },
14781
+ "showCounter": {
14782
+ "types": [
14783
+ "boolean"
14784
+ ],
14785
+ "description": "Show image counter (e.g., \"3 of 12\")"
14786
+ },
14787
+ "closeAction": {
14788
+ "types": [
14789
+ "string"
14790
+ ],
14791
+ "description": "Declarative close event name"
14792
+ },
14793
+ "onClose": {
14794
+ "types": [
14795
+ "function"
14796
+ ],
14797
+ "description": "Direct onClose callback"
14798
+ },
14799
+ "onIndexChange": {
14800
+ "types": [
14801
+ "function"
14802
+ ],
14803
+ "description": "Direct onIndexChange callback"
14804
+ },
14805
+ "className": {
14806
+ "types": [
14807
+ "string"
14808
+ ],
14809
+ "description": "Additional CSS classes"
14810
+ }
14811
+ }
14812
+ },
14813
+ "number-stepper": {
14814
+ "type": "number-stepper",
14815
+ "category": "component",
14816
+ "description": "NumberStepper component",
14817
+ "suggestedFor": [
14818
+ "number",
14819
+ "stepper",
14820
+ "number stepper"
14821
+ ],
14822
+ "typicalSize": "medium",
14823
+ "propsSchema": {
14824
+ "value": {
14825
+ "types": [
14826
+ "number"
14827
+ ],
14828
+ "description": "Current value"
14829
+ },
14830
+ "min": {
14831
+ "types": [
14832
+ "number"
14833
+ ],
14834
+ "description": "Minimum value"
14835
+ },
14836
+ "max": {
14837
+ "types": [
14838
+ "number"
14839
+ ],
14840
+ "description": "Maximum value"
14841
+ },
14842
+ "step": {
14843
+ "types": [
14844
+ "number"
14845
+ ],
14846
+ "description": "Step increment"
14847
+ },
14848
+ "size": {
14849
+ "types": [
14850
+ "numbersteppersize"
14851
+ ],
14852
+ "description": "Size variant"
14853
+ },
14854
+ "disabled": {
14855
+ "types": [
14856
+ "boolean"
14857
+ ],
14858
+ "description": "Disabled state"
14859
+ },
14860
+ "onChange": {
14861
+ "types": [
14862
+ "function"
14863
+ ],
14864
+ "description": "Direct onChange callback"
14865
+ },
14866
+ "action": {
14867
+ "types": [
14868
+ "string"
14869
+ ],
14870
+ "description": "Declarative event name for value changes"
14871
+ },
14872
+ "actionPayload": {
14873
+ "types": [
14874
+ "object"
14875
+ ],
14876
+ "description": "Payload to include with the action event"
14877
+ },
14878
+ "className": {
14879
+ "types": [
14880
+ "string"
14881
+ ],
14882
+ "description": "Additional CSS classes"
14883
+ },
14884
+ "label": {
14885
+ "types": [
14886
+ "string"
14887
+ ],
14888
+ "description": "Accessible label"
14889
+ }
14890
+ }
14891
+ },
14892
+ "star-rating": {
14893
+ "type": "star-rating",
14894
+ "category": "component",
14895
+ "description": "StarRating component",
14896
+ "suggestedFor": [
14897
+ "star",
14898
+ "rating",
14899
+ "star rating"
14900
+ ],
14901
+ "typicalSize": "medium",
14902
+ "propsSchema": {
14903
+ "value": {
14904
+ "types": [
14905
+ "number"
14906
+ ],
14907
+ "description": "Current rating value"
14908
+ },
14909
+ "max": {
14910
+ "types": [
14911
+ "number"
14912
+ ],
14913
+ "description": "Maximum number of stars"
14914
+ },
14915
+ "readOnly": {
14916
+ "types": [
14917
+ "boolean"
14918
+ ],
14919
+ "description": "Read-only display mode"
14920
+ },
14921
+ "precision": {
14922
+ "types": [
14923
+ "starratingprecision"
14924
+ ],
14925
+ "description": "Full or half-star precision"
14926
+ },
14927
+ "size": {
14928
+ "types": [
14929
+ "starratingsize"
14930
+ ],
14931
+ "description": "Star size"
14932
+ },
14933
+ "action": {
14934
+ "types": [
14935
+ "string"
14936
+ ],
14937
+ "description": "Declarative event name for rating changes"
14938
+ },
14939
+ "actionPayload": {
14940
+ "types": [
14941
+ "object"
14942
+ ],
14943
+ "description": "Payload to include with the action event"
14944
+ },
14945
+ "onChange": {
14946
+ "types": [
14947
+ "function"
14948
+ ],
14949
+ "description": "Direct onChange callback"
14950
+ },
14951
+ "className": {
14952
+ "types": [
14953
+ "string"
14954
+ ],
14955
+ "description": "Additional CSS classes"
14956
+ },
14957
+ "label": {
14958
+ "types": [
14959
+ "string"
14960
+ ],
14961
+ "description": "Accessible label"
14962
+ }
14963
+ }
14964
+ },
14965
+ "upload-drop-zone": {
14966
+ "type": "upload-drop-zone",
14967
+ "category": "component",
14968
+ "description": "UploadDropZone component",
14969
+ "suggestedFor": [
14970
+ "upload",
14971
+ "drop",
14972
+ "zone",
14973
+ "upload drop zone"
14974
+ ],
14975
+ "typicalSize": "medium",
14976
+ "propsSchema": {
14977
+ "accept": {
14978
+ "types": [
14979
+ "string"
14980
+ ],
14981
+ "description": "Accepted MIME types (e.g., \"image/*\", \"application/pdf\")"
14982
+ },
14983
+ "maxSize": {
14984
+ "types": [
14985
+ "number"
14986
+ ],
14987
+ "description": "Max file size in bytes"
14988
+ },
14989
+ "maxFiles": {
14990
+ "types": [
14991
+ "number"
14992
+ ],
14993
+ "description": "Max number of files"
14994
+ },
14995
+ "label": {
14996
+ "types": [
14997
+ "string"
14998
+ ],
14999
+ "description": "Label text"
15000
+ },
15001
+ "description": {
15002
+ "types": [
15003
+ "string"
15004
+ ],
15005
+ "description": "Description text below label"
15006
+ },
15007
+ "icon": {
15008
+ "types": [
15009
+ "string"
15010
+ ],
15011
+ "description": "Icon name (Lucide string)"
15012
+ },
15013
+ "disabled": {
15014
+ "types": [
15015
+ "boolean"
15016
+ ],
15017
+ "description": "Disabled state"
15018
+ },
15019
+ "action": {
15020
+ "types": [
15021
+ "string"
15022
+ ],
15023
+ "description": "Declarative event name for file selection"
15024
+ },
15025
+ "actionPayload": {
15026
+ "types": [
15027
+ "object"
15028
+ ],
15029
+ "description": "Payload to include with the action event"
15030
+ },
15031
+ "onFiles": {
15032
+ "types": [
15033
+ "function"
15034
+ ],
15035
+ "description": "Direct onFiles callback"
15036
+ },
15037
+ "className": {
15038
+ "types": [
15039
+ "string"
15040
+ ],
15041
+ "description": "Additional CSS classes"
15042
+ }
15043
+ }
15044
+ },
15045
+ "animated-counter": {
15046
+ "type": "animated-counter",
15047
+ "category": "component",
15048
+ "description": "AnimatedCounter component",
15049
+ "suggestedFor": [
15050
+ "animated",
15051
+ "counter",
15052
+ "animated counter"
15053
+ ],
15054
+ "typicalSize": "small",
15055
+ "propsSchema": {
15056
+ "value": {
15057
+ "types": [
15058
+ "number"
15059
+ ],
15060
+ "description": "The target number to animate to",
15061
+ "required": true
15062
+ },
15063
+ "duration": {
15064
+ "types": [
15065
+ "number"
15066
+ ],
15067
+ "description": "Animation duration in milliseconds"
15068
+ },
15069
+ "prefix": {
15070
+ "types": [
15071
+ "string"
15072
+ ],
15073
+ "description": "Text to display before the number"
15074
+ },
15075
+ "suffix": {
15076
+ "types": [
15077
+ "string"
15078
+ ],
15079
+ "description": "Text to display after the number"
15080
+ },
15081
+ "className": {
15082
+ "types": [
15083
+ "string"
15084
+ ],
15085
+ "description": "Additional class names"
15086
+ }
15087
+ }
15088
+ },
15089
+ "confetti-effect": {
15090
+ "type": "confetti-effect",
15091
+ "category": "component",
15092
+ "description": "ConfettiEffect component",
15093
+ "suggestedFor": [
15094
+ "confetti",
15095
+ "effect",
15096
+ "confetti effect"
15097
+ ],
15098
+ "typicalSize": "small",
15099
+ "propsSchema": {
15100
+ "trigger": {
15101
+ "types": [
15102
+ "boolean"
15103
+ ],
15104
+ "description": "When this changes from false to true, a burst of particles is spawned",
15105
+ "required": true
15106
+ },
15107
+ "duration": {
15108
+ "types": [
15109
+ "number"
15110
+ ],
15111
+ "description": "How long the animation lasts in milliseconds"
15112
+ },
15113
+ "particleCount": {
15114
+ "types": [
15115
+ "number"
15116
+ ],
15117
+ "description": "Number of particles to spawn"
15118
+ },
15119
+ "className": {
15120
+ "types": [
15121
+ "string"
15122
+ ],
15123
+ "description": "Additional class names"
15124
+ }
15125
+ }
15126
+ },
15127
+ "infinite-scroll-sentinel": {
15128
+ "type": "infinite-scroll-sentinel",
15129
+ "category": "component",
15130
+ "description": "InfiniteScrollSentinel component",
15131
+ "suggestedFor": [
15132
+ "infinite",
15133
+ "scroll",
15134
+ "sentinel",
15135
+ "infinite scroll sentinel"
15136
+ ],
15137
+ "typicalSize": "small",
15138
+ "propsSchema": {
15139
+ "loadMoreEvent": {
15140
+ "types": [
15141
+ "string"
15142
+ ],
15143
+ "description": "Event name to emit when load-more is triggered (emitted as UI:{loadMoreEvent})",
15144
+ "required": true
15145
+ },
15146
+ "loadMorePayload": {
15147
+ "types": [
15148
+ "object"
15149
+ ],
15150
+ "description": "Optional payload to include with the load-more event"
15151
+ },
15152
+ "isLoading": {
15153
+ "types": [
15154
+ "boolean"
15155
+ ],
15156
+ "description": "Whether a load operation is currently in progress"
15157
+ },
15158
+ "hasMore": {
15159
+ "types": [
15160
+ "boolean"
15161
+ ],
15162
+ "description": "Whether there are more items to load"
15163
+ },
15164
+ "threshold": {
15165
+ "types": [
15166
+ "string"
15167
+ ],
15168
+ "description": "IntersectionObserver rootMargin for early trigger"
15169
+ },
15170
+ "className": {
15171
+ "types": [
15172
+ "string"
15173
+ ],
15174
+ "description": "Additional class names"
15175
+ }
15176
+ }
15177
+ },
15178
+ "typewriter-text": {
15179
+ "type": "typewriter-text",
15180
+ "category": "component",
15181
+ "description": "TypewriterText component",
15182
+ "suggestedFor": [
15183
+ "typewriter",
15184
+ "text",
15185
+ "typewriter text"
15186
+ ],
15187
+ "typicalSize": "small",
15188
+ "propsSchema": {
15189
+ "text": {
15190
+ "types": [
15191
+ "string"
15192
+ ],
15193
+ "description": "The full text to reveal",
15194
+ "required": true
15195
+ },
15196
+ "speed": {
15197
+ "types": [
15198
+ "number"
15199
+ ],
15200
+ "description": "Milliseconds per character"
15201
+ },
15202
+ "startDelay": {
15203
+ "types": [
15204
+ "number"
15205
+ ],
15206
+ "description": "Delay before typing starts (ms)"
15207
+ },
15208
+ "className": {
15209
+ "types": [
15210
+ "string"
15211
+ ],
15212
+ "description": "Additional class names"
15213
+ },
15214
+ "onComplete": {
15215
+ "types": [
15216
+ "function"
15217
+ ],
15218
+ "description": "Called when the entire text has been revealed"
15219
+ }
15220
+ }
15221
+ },
15222
+ "carousel": {
15223
+ "type": "carousel",
15224
+ "category": "component",
15225
+ "description": "Carousel component",
15226
+ "suggestedFor": [
15227
+ "carousel"
15228
+ ],
15229
+ "typicalSize": "medium",
15230
+ "propsSchema": {
15231
+ "items": {
15232
+ "types": [
15233
+ "array"
15234
+ ],
15235
+ "description": "Array of items to display as slides",
15236
+ "required": true
15237
+ },
15238
+ "renderItem": {
15239
+ "types": [
15240
+ "function"
15241
+ ],
15242
+ "description": "Render function for each slide",
15243
+ "required": true
15244
+ },
15245
+ "autoPlay": {
15246
+ "types": [
15247
+ "boolean"
15248
+ ],
15249
+ "description": "Enable auto-play rotation"
15250
+ },
15251
+ "autoPlayInterval": {
15252
+ "types": [
15253
+ "number"
15254
+ ],
15255
+ "description": "Auto-play interval in milliseconds (default: 5000)"
15256
+ },
15257
+ "showDots": {
15258
+ "types": [
15259
+ "boolean"
15260
+ ],
15261
+ "description": "Show dot indicators"
15262
+ },
15263
+ "showArrows": {
15264
+ "types": [
15265
+ "boolean"
15266
+ ],
15267
+ "description": "Show prev/next arrow buttons"
15268
+ },
15269
+ "loop": {
15270
+ "types": [
15271
+ "boolean"
15272
+ ],
15273
+ "description": "Enable infinite loop"
15274
+ },
15275
+ "slideChangeEvent": {
15276
+ "types": [
15277
+ "string"
15278
+ ],
15279
+ "description": "Declarative event name for slide change"
15280
+ },
15281
+ "slideChangePayload": {
15282
+ "types": [
15283
+ "object"
15284
+ ],
15285
+ "description": "Payload to include with the slide change event"
15286
+ },
15287
+ "className": {
15288
+ "types": [
15289
+ "string"
15290
+ ],
15291
+ "description": "Additional CSS classes"
15292
+ }
15293
+ }
15294
+ },
15295
+ "pull-to-refresh": {
15296
+ "type": "pull-to-refresh",
15297
+ "category": "component",
15298
+ "description": "PullToRefresh component",
15299
+ "suggestedFor": [
15300
+ "pull",
15301
+ "refresh",
15302
+ "pull to refresh"
15303
+ ],
15304
+ "typicalSize": "medium",
15305
+ "propsSchema": {
15306
+ "refreshEvent": {
15307
+ "types": [
15308
+ "string"
15309
+ ],
15310
+ "description": "Event name to emit on refresh (emitted as UI:{refreshEvent})",
15311
+ "required": true
15312
+ },
15313
+ "refreshPayload": {
15314
+ "types": [
15315
+ "object"
15316
+ ],
15317
+ "description": "Payload to include with the refresh event"
15318
+ },
15319
+ "threshold": {
15320
+ "types": [
15321
+ "number"
15322
+ ],
15323
+ "description": "Pull distance threshold to trigger refresh in px (default: 60)"
15324
+ },
15325
+ "children": {
15326
+ "types": [
15327
+ "node"
15328
+ ],
15329
+ "description": "Content to wrap",
15330
+ "required": true
15331
+ },
15332
+ "className": {
15333
+ "types": [
15334
+ "string"
15335
+ ],
15336
+ "description": "Additional CSS classes"
15337
+ }
15338
+ }
15339
+ },
15340
+ "sortable-list": {
15341
+ "type": "sortable-list",
15342
+ "category": "display",
15343
+ "description": "SortableList component",
15344
+ "suggestedFor": [
15345
+ "sortable",
15346
+ "list",
15347
+ "sortable list"
15348
+ ],
15349
+ "typicalSize": "medium",
15350
+ "propsSchema": {
15351
+ "items": {
15352
+ "types": [
15353
+ "array"
15354
+ ],
15355
+ "description": "items prop",
15356
+ "required": true
15357
+ },
15358
+ "renderItem": {
15359
+ "types": [
15360
+ "function"
15361
+ ],
15362
+ "description": "renderItem prop",
15363
+ "required": true
15364
+ },
15365
+ "reorderEvent": {
15366
+ "types": [
15367
+ "string"
15368
+ ],
15369
+ "description": "reorderEvent prop",
15370
+ "required": true
15371
+ },
15372
+ "reorderPayload": {
15373
+ "types": [
15374
+ "object"
15375
+ ],
15376
+ "description": "reorderPayload prop"
15377
+ },
15378
+ "dragHandlePosition": {
15379
+ "types": [
15380
+ "string"
15381
+ ],
15382
+ "description": "dragHandlePosition prop"
15383
+ },
15384
+ "className": {
15385
+ "types": [
15386
+ "string"
15387
+ ],
15388
+ "description": "className prop"
15389
+ }
15390
+ }
15391
+ },
15392
+ "swipeable-row": {
15393
+ "type": "swipeable-row",
15394
+ "category": "component",
15395
+ "description": "SwipeableRow component",
15396
+ "suggestedFor": [
15397
+ "swipeable",
15398
+ "row",
15399
+ "swipeable row"
15400
+ ],
15401
+ "typicalSize": "medium",
15402
+ "propsSchema": {
15403
+ "leftActions": {
15404
+ "types": [
15405
+ "array"
15406
+ ],
15407
+ "description": "leftActions prop"
15408
+ },
15409
+ "rightActions": {
15410
+ "types": [
15411
+ "array"
15412
+ ],
15413
+ "description": "rightActions prop"
15414
+ },
15415
+ "threshold": {
15416
+ "types": [
15417
+ "number"
15418
+ ],
15419
+ "description": "threshold prop"
15420
+ },
15421
+ "children": {
15422
+ "types": [
15423
+ "node"
15424
+ ],
15425
+ "description": "children prop",
15426
+ "required": true
15427
+ },
15428
+ "itemData": {
15429
+ "types": [
15430
+ "object"
15431
+ ],
15432
+ "description": "itemData prop"
15433
+ },
15434
+ "className": {
15435
+ "types": [
15436
+ "string"
15437
+ ],
15438
+ "description": "className prop"
15439
+ }
15440
+ }
15441
+ },
15442
+ "stat-display": {
15443
+ "type": "stat-display",
15444
+ "category": "display",
15445
+ "description": "StatDisplay component",
15446
+ "suggestedFor": [
15447
+ "stat",
15448
+ "display",
15449
+ "stat display"
15450
+ ],
15451
+ "typicalSize": "medium",
15452
+ "propsSchema": {
15453
+ "label": {
15454
+ "types": [
15455
+ "string"
15456
+ ],
15457
+ "description": "Display label (e.g., \"Total\", \"Remaining\")",
15458
+ "required": true
15459
+ },
15460
+ "value": {
15461
+ "types": [
15462
+ "number",
15463
+ "string"
15464
+ ],
15465
+ "description": "Primary value (number or formatted string)"
15466
+ },
15467
+ "max": {
15468
+ "types": [
15469
+ "number"
15470
+ ],
15471
+ "description": "Maximum value (renders as \"value / max\")"
15472
+ },
15473
+ "icon": {
15474
+ "types": [
15475
+ "node"
15476
+ ],
15477
+ "description": "Lucide icon name or React node"
15478
+ },
15479
+ "iconBg": {
15480
+ "types": [
15481
+ "string"
15482
+ ],
15483
+ "description": "Icon background color class"
15484
+ },
15485
+ "iconColor": {
15486
+ "types": [
15487
+ "string"
15488
+ ],
15489
+ "description": "Icon color class"
15490
+ },
15491
+ "format": {
15492
+ "types": [
15493
+ "string"
15494
+ ],
15495
+ "description": "Display format: \"number\", \"currency\", \"percent\""
15496
+ },
15497
+ "size": {
15498
+ "types": [
15499
+ "string"
15500
+ ],
15501
+ "description": "Size variant"
15502
+ },
15503
+ "variant": {
15504
+ "types": [
15505
+ "string"
15506
+ ],
15507
+ "description": "Color variant"
15508
+ },
15509
+ "compact": {
15510
+ "types": [
15511
+ "boolean"
15512
+ ],
15513
+ "description": "Compact mode (inline, no card wrapper)"
15514
+ },
14156
15515
  "className": {
14157
15516
  "types": [
14158
15517
  "string"