@nim-ui/components 0.0.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.
@@ -0,0 +1,1061 @@
1
+ {
2
+ "version": "0.0.0",
3
+ "components": [
4
+ {
5
+ "name": "Button",
6
+ "category": "primitives",
7
+ "description": "A versatile button component with multiple variants and sizes for different use cases",
8
+ "keywords": ["button", "click", "action", "cta", "interactive"],
9
+ "file": "components/button.tsx",
10
+ "variants": [
11
+ {
12
+ "name": "variant",
13
+ "values": ["default", "secondary", "outline", "ghost", "destructive"]
14
+ },
15
+ {
16
+ "name": "size",
17
+ "values": ["sm", "md", "lg", "xl"]
18
+ }
19
+ ],
20
+ "hasRadixPrimitive": false,
21
+ "examples": [
22
+ {
23
+ "title": "Default Button",
24
+ "code": "<Button>Click me</Button>"
25
+ },
26
+ {
27
+ "title": "Button with Variant and Size",
28
+ "code": "<Button variant=\"outline\" size=\"lg\">Large Outline</Button>"
29
+ }
30
+ ]
31
+ },
32
+ {
33
+ "name": "Input",
34
+ "category": "primitives",
35
+ "description": "A flexible input field component with validation states and multiple sizes",
36
+ "keywords": ["input", "text", "field", "form", "textbox"],
37
+ "file": "components/input.tsx",
38
+ "variants": [
39
+ {
40
+ "name": "variant",
41
+ "values": ["default", "error", "success"]
42
+ },
43
+ {
44
+ "name": "size",
45
+ "values": ["sm", "md", "lg"]
46
+ }
47
+ ],
48
+ "hasRadixPrimitive": false,
49
+ "examples": [
50
+ {
51
+ "title": "Basic Input",
52
+ "code": "<Input placeholder=\"Enter text...\" />"
53
+ },
54
+ {
55
+ "title": "Input with Error State",
56
+ "code": "<Input variant=\"error\" placeholder=\"Invalid email\" />"
57
+ }
58
+ ]
59
+ },
60
+ {
61
+ "name": "Badge",
62
+ "category": "primitives",
63
+ "description": "A small badge component for displaying status, counts, or labels",
64
+ "keywords": ["badge", "label", "tag", "status", "pill"],
65
+ "file": "components/badge.tsx",
66
+ "variants": [
67
+ {
68
+ "name": "variant",
69
+ "values": ["default", "secondary", "outline", "destructive"]
70
+ },
71
+ {
72
+ "name": "size",
73
+ "values": ["sm", "md", "lg"]
74
+ }
75
+ ],
76
+ "hasRadixPrimitive": false,
77
+ "examples": [
78
+ {
79
+ "title": "Simple Badge",
80
+ "code": "<Badge>New</Badge>"
81
+ },
82
+ {
83
+ "title": "Destructive Badge",
84
+ "code": "<Badge variant=\"destructive\" size=\"lg\">Error</Badge>"
85
+ }
86
+ ]
87
+ },
88
+ {
89
+ "name": "Avatar",
90
+ "category": "primitives",
91
+ "description": "A user avatar component with image fallback and initials support, built with Radix UI",
92
+ "keywords": ["avatar", "profile", "image", "user", "picture"],
93
+ "file": "components/avatar.tsx",
94
+ "variants": [
95
+ {
96
+ "name": "size",
97
+ "values": ["sm", "md", "lg", "xl"]
98
+ }
99
+ ],
100
+ "hasRadixPrimitive": true,
101
+ "examples": [
102
+ {
103
+ "title": "Avatar with Image",
104
+ "code": "<Avatar src=\"/user.jpg\" alt=\"John Doe\" />"
105
+ },
106
+ {
107
+ "title": "Avatar with Fallback",
108
+ "code": "<Avatar fallback=\"JD\" size=\"lg\" />"
109
+ }
110
+ ]
111
+ },
112
+ {
113
+ "name": "Card",
114
+ "category": "layout",
115
+ "description": "A container component for grouping related content with header, body, and footer sections",
116
+ "keywords": ["card", "container", "panel", "box", "section"],
117
+ "file": "components/card.tsx",
118
+ "variants": [
119
+ {
120
+ "name": "variant",
121
+ "values": ["default", "outline"]
122
+ }
123
+ ],
124
+ "hasRadixPrimitive": false,
125
+ "examples": [
126
+ {
127
+ "title": "Basic Card",
128
+ "code": "<Card><CardHeader><CardTitle>Title</CardTitle></CardHeader><CardContent>Content here</CardContent></Card>"
129
+ },
130
+ {
131
+ "title": "Card with Footer",
132
+ "code": "<Card variant=\"outline\"><CardHeader><CardTitle>Title</CardTitle></CardHeader><CardContent>Content</CardContent><CardFooter>Footer</CardFooter></Card>"
133
+ }
134
+ ]
135
+ },
136
+ {
137
+ "name": "Modal",
138
+ "category": "layout",
139
+ "description": "A dialog/modal component for displaying content in an overlay, built with Radix UI",
140
+ "keywords": ["modal", "dialog", "overlay", "popup", "lightbox"],
141
+ "file": "components/modal.tsx",
142
+ "variants": [
143
+ {
144
+ "name": "variant",
145
+ "values": ["default", "center", "fullscreen"]
146
+ }
147
+ ],
148
+ "hasRadixPrimitive": true,
149
+ "examples": [
150
+ {
151
+ "title": "Basic Modal",
152
+ "code": "<Modal><ModalTrigger><Button>Open</Button></ModalTrigger><ModalContent><ModalHeader><ModalTitle>Title</ModalTitle></ModalHeader>Content here</ModalContent></Modal>"
153
+ },
154
+ {
155
+ "title": "Centered Modal",
156
+ "code": "<Modal><ModalTrigger><Button>Open</Button></ModalTrigger><ModalContent variant=\"center\"><ModalHeader><ModalTitle>Centered</ModalTitle></ModalHeader>Centered content</ModalContent></Modal>"
157
+ }
158
+ ]
159
+ },
160
+ {
161
+ "name": "Drawer",
162
+ "category": "layout",
163
+ "description": "A slide-out panel component for side navigation or additional content, built with Radix UI",
164
+ "keywords": ["drawer", "sidebar", "panel", "sheet", "slide"],
165
+ "file": "components/drawer.tsx",
166
+ "variants": [
167
+ {
168
+ "name": "side",
169
+ "values": ["left", "right"]
170
+ }
171
+ ],
172
+ "hasRadixPrimitive": true,
173
+ "examples": [
174
+ {
175
+ "title": "Left Drawer",
176
+ "code": "<Drawer><DrawerTrigger><Button>Open</Button></DrawerTrigger><DrawerContent side=\"left\"><DrawerHeader><DrawerTitle>Menu</DrawerTitle></DrawerHeader>Content</DrawerContent></Drawer>"
177
+ },
178
+ {
179
+ "title": "Right Drawer",
180
+ "code": "<Drawer><DrawerTrigger><Button>Settings</Button></DrawerTrigger><DrawerContent side=\"right\">Settings panel</DrawerContent></Drawer>"
181
+ }
182
+ ]
183
+ },
184
+ {
185
+ "name": "Tabs",
186
+ "category": "layout",
187
+ "description": "A tabbed interface component for organizing content into separate views, built with Radix UI",
188
+ "keywords": ["tabs", "tablist", "navigation", "switcher", "panels"],
189
+ "file": "components/tabs.tsx",
190
+ "variants": [
191
+ {
192
+ "name": "variant",
193
+ "values": ["default", "pills"]
194
+ }
195
+ ],
196
+ "hasRadixPrimitive": true,
197
+ "examples": [
198
+ {
199
+ "title": "Basic Tabs",
200
+ "code": "<Tabs defaultValue=\"tab1\"><TabsList><TabsTrigger value=\"tab1\">Tab 1</TabsTrigger><TabsTrigger value=\"tab2\">Tab 2</TabsTrigger></TabsList><TabsContent value=\"tab1\">Content 1</TabsContent><TabsContent value=\"tab2\">Content 2</TabsContent></Tabs>"
201
+ },
202
+ {
203
+ "title": "Pills Variant",
204
+ "code": "<Tabs defaultValue=\"tab1\" variant=\"pills\"><TabsList><TabsTrigger value=\"tab1\">Tab 1</TabsTrigger><TabsTrigger value=\"tab2\">Tab 2</TabsTrigger></TabsList><TabsContent value=\"tab1\">Content 1</TabsContent></Tabs>"
205
+ }
206
+ ]
207
+ },
208
+ {
209
+ "name": "DataCard",
210
+ "category": "data-display",
211
+ "description": "A specialized card for displaying data with labels, values, and optional trends",
212
+ "keywords": ["data", "card", "metric", "display", "information"],
213
+ "file": "components/data-card.tsx",
214
+ "variants": [
215
+ {
216
+ "name": "variant",
217
+ "values": ["default", "outline"]
218
+ }
219
+ ],
220
+ "hasRadixPrimitive": false,
221
+ "examples": [
222
+ {
223
+ "title": "Data Card with Label",
224
+ "code": "<DataCard><DataCardLabel>Total Revenue</DataCardLabel><DataCardValue>$12,345</DataCardValue></DataCard>"
225
+ },
226
+ {
227
+ "title": "Data Card with Description",
228
+ "code": "<DataCard variant=\"outline\"><DataCardLabel>Users</DataCardLabel><DataCardValue>1,234</DataCardValue><DataCardDescription>Active this month</DataCardDescription></DataCard>"
229
+ }
230
+ ]
231
+ },
232
+ {
233
+ "name": "DataTable",
234
+ "category": "data-display",
235
+ "description": "A table component for displaying structured data with sorting and styling options",
236
+ "keywords": ["table", "data", "grid", "list", "rows"],
237
+ "file": "components/data-table.tsx",
238
+ "variants": [
239
+ {
240
+ "name": "variant",
241
+ "values": ["default", "striped"]
242
+ }
243
+ ],
244
+ "hasRadixPrimitive": false,
245
+ "examples": [
246
+ {
247
+ "title": "Basic Table",
248
+ "code": "<DataTable><DataTableHeader><DataTableRow><DataTableHead>Name</DataTableHead><DataTableHead>Email</DataTableHead></DataTableRow></DataTableHeader><DataTableBody><DataTableRow><DataTableCell>John</DataTableCell><DataTableCell>john@example.com</DataTableCell></DataTableRow></DataTableBody></DataTable>"
249
+ },
250
+ {
251
+ "title": "Striped Table",
252
+ "code": "<DataTable variant=\"striped\"><DataTableHeader><DataTableRow><DataTableHead>Product</DataTableHead><DataTableHead>Price</DataTableHead></DataTableRow></DataTableHeader><DataTableBody><DataTableRow><DataTableCell>Item 1</DataTableCell><DataTableCell>$10</DataTableCell></DataTableRow></DataTableBody></DataTable>"
253
+ }
254
+ ]
255
+ },
256
+ {
257
+ "name": "Stat",
258
+ "category": "data-display",
259
+ "description": "A component for displaying statistics with labels, values, and optional trend indicators",
260
+ "keywords": ["stat", "statistic", "metric", "number", "kpi"],
261
+ "file": "components/stat.tsx",
262
+ "variants": [
263
+ {
264
+ "name": "variant",
265
+ "values": ["default", "card"]
266
+ }
267
+ ],
268
+ "hasRadixPrimitive": false,
269
+ "examples": [
270
+ {
271
+ "title": "Simple Stat",
272
+ "code": "<Stat><StatLabel>Total Sales</StatLabel><StatValue>$45,231</StatValue></Stat>"
273
+ },
274
+ {
275
+ "title": "Stat with Helper Text",
276
+ "code": "<Stat variant=\"card\"><StatLabel>Growth</StatLabel><StatValue>23.5%</StatValue><StatHelper>+2.5% from last month</StatHelper></Stat>"
277
+ }
278
+ ]
279
+ },
280
+ {
281
+ "name": "ProductCard",
282
+ "category": "commerce",
283
+ "description": "A card component optimized for displaying product information including images, titles, and prices",
284
+ "keywords": ["product", "card", "ecommerce", "shop", "item"],
285
+ "file": "components/product-card.tsx",
286
+ "variants": [
287
+ {
288
+ "name": "variant",
289
+ "values": ["default", "compact"]
290
+ }
291
+ ],
292
+ "hasRadixPrimitive": false,
293
+ "examples": [
294
+ {
295
+ "title": "Product Card",
296
+ "code": "<ProductCard><ProductCardImage src=\"/product.jpg\" alt=\"Product\" /><ProductCardTitle>Product Name</ProductCardTitle><ProductCardPrice>$99.99</ProductCardPrice></ProductCard>"
297
+ },
298
+ {
299
+ "title": "Compact Product Card",
300
+ "code": "<ProductCard variant=\"compact\"><ProductCardImage src=\"/product.jpg\" alt=\"Product\" /><ProductCardTitle>Product</ProductCardTitle><ProductCardPrice>$49.99</ProductCardPrice><ProductCardButton>Add to Cart</ProductCardButton></ProductCard>"
301
+ }
302
+ ]
303
+ },
304
+ {
305
+ "name": "CartItem",
306
+ "category": "commerce",
307
+ "description": "A component for displaying shopping cart items with quantity controls and removal options",
308
+ "keywords": ["cart", "item", "shopping", "checkout", "product"],
309
+ "file": "components/cart-item.tsx",
310
+ "variants": [
311
+ {
312
+ "name": "variant",
313
+ "values": ["default", "compact"]
314
+ }
315
+ ],
316
+ "hasRadixPrimitive": false,
317
+ "examples": [
318
+ {
319
+ "title": "Cart Item",
320
+ "code": "<CartItem><CartItemImage src=\"/product.jpg\" alt=\"Product\" /><CartItemDetails><CartItemTitle>Product Name</CartItemTitle><CartItemPrice>$99.99</CartItemPrice></CartItemDetails><CartItemQuantity quantity={2} /><CartItemRemove /></CartItem>"
321
+ },
322
+ {
323
+ "title": "Compact Cart Item",
324
+ "code": "<CartItem variant=\"compact\"><CartItemImage src=\"/product.jpg\" alt=\"Product\" /><CartItemDetails><CartItemTitle>Product</CartItemTitle><CartItemPrice>$49.99</CartItemPrice></CartItemDetails></CartItem>"
325
+ }
326
+ ]
327
+ },
328
+ {
329
+ "name": "PriceTag",
330
+ "category": "commerce",
331
+ "description": "A component for displaying prices with optional original price and discount information",
332
+ "keywords": ["price", "tag", "cost", "discount", "sale"],
333
+ "file": "components/price-tag.tsx",
334
+ "variants": [
335
+ {
336
+ "name": "variant",
337
+ "values": ["default", "large"]
338
+ }
339
+ ],
340
+ "hasRadixPrimitive": false,
341
+ "examples": [
342
+ {
343
+ "title": "Simple Price",
344
+ "code": "<PriceTag price={99.99} />"
345
+ },
346
+ {
347
+ "title": "Price with Discount",
348
+ "code": "<PriceTag price={79.99} originalPrice={99.99} variant=\"large\" />"
349
+ }
350
+ ]
351
+ },
352
+ {
353
+ "name": "QuantitySelector",
354
+ "category": "commerce",
355
+ "description": "A component for selecting quantities with increment and decrement buttons",
356
+ "keywords": ["quantity", "selector", "counter", "stepper", "amount"],
357
+ "file": "components/quantity-selector.tsx",
358
+ "variants": [
359
+ {
360
+ "name": "size",
361
+ "values": ["sm", "md", "lg"]
362
+ }
363
+ ],
364
+ "hasRadixPrimitive": false,
365
+ "examples": [
366
+ {
367
+ "title": "Basic Quantity Selector",
368
+ "code": "<QuantitySelector value={1} onChange={(val) => console.log(val)} />"
369
+ },
370
+ {
371
+ "title": "Quantity Selector with Limits",
372
+ "code": "<QuantitySelector value={5} min={1} max={10} size=\"lg\" onChange={(val) => console.log(val)} />"
373
+ }
374
+ ]
375
+ },
376
+ {
377
+ "name": "Hero",
378
+ "category": "landing",
379
+ "description": "A hero section component for landing pages with headline, description, and call-to-action",
380
+ "keywords": ["hero", "banner", "header", "landing", "section"],
381
+ "file": "components/hero.tsx",
382
+ "variants": [
383
+ {
384
+ "name": "alignment",
385
+ "values": ["left", "center"]
386
+ }
387
+ ],
388
+ "hasRadixPrimitive": false,
389
+ "examples": [
390
+ {
391
+ "title": "Centered Hero",
392
+ "code": "<Hero alignment=\"center\"><HeroHeadline>Welcome to Our Product</HeroHeadline><HeroDescription>The best solution for your needs</HeroDescription><HeroActions><Button>Get Started</Button></HeroActions></Hero>"
393
+ },
394
+ {
395
+ "title": "Left-Aligned Hero",
396
+ "code": "<Hero alignment=\"left\"><HeroHeadline>Build Faster</HeroHeadline><HeroDescription>Ship products quickly</HeroDescription><HeroActions><Button>Learn More</Button></HeroActions></Hero>"
397
+ }
398
+ ]
399
+ },
400
+ {
401
+ "name": "FeatureGrid",
402
+ "category": "landing",
403
+ "description": "A grid layout component for displaying features with icons, titles, and descriptions",
404
+ "keywords": ["features", "grid", "layout", "benefits", "highlights"],
405
+ "file": "components/feature-grid.tsx",
406
+ "variants": [
407
+ {
408
+ "name": "columns",
409
+ "values": ["2", "3", "4"]
410
+ }
411
+ ],
412
+ "hasRadixPrimitive": false,
413
+ "examples": [
414
+ {
415
+ "title": "Three Column Feature Grid",
416
+ "code": "<FeatureGrid columns=\"3\"><FeatureGridItem><FeatureGridIcon>⚡</FeatureGridIcon><FeatureGridTitle>Fast</FeatureGridTitle><FeatureGridDescription>Lightning quick performance</FeatureGridDescription></FeatureGridItem></FeatureGrid>"
417
+ },
418
+ {
419
+ "title": "Two Column Feature Grid",
420
+ "code": "<FeatureGrid columns=\"2\"><FeatureGridItem><FeatureGridTitle>Secure</FeatureGridTitle><FeatureGridDescription>Enterprise-grade security</FeatureGridDescription></FeatureGridItem></FeatureGrid>"
421
+ }
422
+ ]
423
+ },
424
+ {
425
+ "name": "CTA",
426
+ "category": "landing",
427
+ "description": "A call-to-action component for encouraging user actions with headlines and buttons",
428
+ "keywords": ["cta", "call-to-action", "banner", "conversion", "action"],
429
+ "file": "components/cta.tsx",
430
+ "variants": [
431
+ {
432
+ "name": "variant",
433
+ "values": ["default", "card"]
434
+ },
435
+ {
436
+ "name": "alignment",
437
+ "values": ["left", "center"]
438
+ }
439
+ ],
440
+ "hasRadixPrimitive": false,
441
+ "examples": [
442
+ {
443
+ "title": "Centered CTA",
444
+ "code": "<CTA alignment=\"center\"><CTAHeadline>Ready to get started?</CTAHeadline><CTADescription>Join thousands of satisfied customers</CTADescription><CTAActions><Button>Sign Up Now</Button></CTAActions></CTA>"
445
+ },
446
+ {
447
+ "title": "Card Style CTA",
448
+ "code": "<CTA variant=\"card\" alignment=\"left\"><CTAHeadline>Boost Your Productivity</CTAHeadline><CTADescription>Try it free for 14 days</CTADescription><CTAActions><Button>Start Free Trial</Button></CTAActions></CTA>"
449
+ }
450
+ ]
451
+ },
452
+ {
453
+ "name": "Testimonial",
454
+ "category": "landing",
455
+ "description": "A component for displaying customer testimonials with quotes, names, and avatars",
456
+ "keywords": ["testimonial", "review", "quote", "feedback", "social-proof"],
457
+ "file": "components/testimonial.tsx",
458
+ "variants": [
459
+ {
460
+ "name": "variant",
461
+ "values": ["default", "card"]
462
+ }
463
+ ],
464
+ "hasRadixPrimitive": false,
465
+ "examples": [
466
+ {
467
+ "title": "Simple Testimonial",
468
+ "code": "<Testimonial><TestimonialQuote>This product changed our business!</TestimonialQuote><TestimonialAuthor name=\"John Doe\" role=\"CEO\" /></Testimonial>"
469
+ },
470
+ {
471
+ "title": "Card Testimonial with Avatar",
472
+ "code": "<Testimonial variant=\"card\"><TestimonialQuote>Amazing experience from start to finish</TestimonialQuote><TestimonialAuthor name=\"Jane Smith\" role=\"Designer\" avatar=\"/avatar.jpg\" /></Testimonial>"
473
+ }
474
+ ]
475
+ },
476
+ {
477
+ "name": "Form",
478
+ "category": "forms",
479
+ "description": "A form wrapper component with built-in validation and submission handling",
480
+ "keywords": ["form", "submit", "validation", "input", "fields"],
481
+ "file": "components/form.tsx",
482
+ "variants": [],
483
+ "hasRadixPrimitive": false,
484
+ "examples": [
485
+ {
486
+ "title": "Basic Form",
487
+ "code": "<Form onSubmit={(data) => console.log(data)}><FormField name=\"email\" label=\"Email\" /><Button type=\"submit\">Submit</Button></Form>"
488
+ },
489
+ {
490
+ "title": "Form with Multiple Fields",
491
+ "code": "<Form onSubmit={(data) => console.log(data)}><FormField name=\"name\" label=\"Name\" /><FormField name=\"email\" label=\"Email\" type=\"email\" /><Button type=\"submit\">Register</Button></Form>"
492
+ }
493
+ ]
494
+ },
495
+ {
496
+ "name": "FormField",
497
+ "category": "forms",
498
+ "description": "A form field component with label, input, error message, and helper text support",
499
+ "keywords": ["form-field", "input", "label", "validation", "error"],
500
+ "file": "components/form-field.tsx",
501
+ "variants": [
502
+ {
503
+ "name": "variant",
504
+ "values": ["default", "inline"]
505
+ }
506
+ ],
507
+ "hasRadixPrimitive": false,
508
+ "examples": [
509
+ {
510
+ "title": "Form Field with Label",
511
+ "code": "<FormField name=\"email\" label=\"Email Address\" placeholder=\"Enter your email\" />"
512
+ },
513
+ {
514
+ "title": "Inline Form Field",
515
+ "code": "<FormField name=\"search\" label=\"Search\" variant=\"inline\" placeholder=\"Search...\" />"
516
+ }
517
+ ]
518
+ },
519
+ {
520
+ "name": "Select",
521
+ "category": "forms",
522
+ "description": "A dropdown select component with search and multi-select capabilities, built with Radix UI",
523
+ "keywords": ["select", "dropdown", "picker", "menu", "options"],
524
+ "file": "components/select.tsx",
525
+ "variants": [
526
+ {
527
+ "name": "size",
528
+ "values": ["sm", "md", "lg"]
529
+ }
530
+ ],
531
+ "hasRadixPrimitive": true,
532
+ "examples": [
533
+ {
534
+ "title": "Basic Select",
535
+ "code": "<Select><SelectTrigger><SelectValue placeholder=\"Select option\" /></SelectTrigger><SelectContent><SelectItem value=\"1\">Option 1</SelectItem><SelectItem value=\"2\">Option 2</SelectItem></SelectContent></Select>"
536
+ },
537
+ {
538
+ "title": "Large Select",
539
+ "code": "<Select size=\"lg\"><SelectTrigger><SelectValue placeholder=\"Choose\" /></SelectTrigger><SelectContent><SelectItem value=\"a\">Choice A</SelectItem><SelectItem value=\"b\">Choice B</SelectItem></SelectContent></Select>"
540
+ }
541
+ ]
542
+ },
543
+ {
544
+ "name": "Checkbox",
545
+ "category": "forms",
546
+ "description": "A checkbox input component with label and indeterminate state support, built with Radix UI",
547
+ "keywords": ["checkbox", "check", "toggle", "input", "boolean"],
548
+ "file": "components/checkbox.tsx",
549
+ "variants": [
550
+ {
551
+ "name": "size",
552
+ "values": ["sm", "md", "lg"]
553
+ }
554
+ ],
555
+ "hasRadixPrimitive": true,
556
+ "examples": [
557
+ {
558
+ "title": "Simple Checkbox",
559
+ "code": "<Checkbox id=\"terms\" label=\"Accept terms and conditions\" />"
560
+ },
561
+ {
562
+ "title": "Large Checkbox",
563
+ "code": "<Checkbox id=\"newsletter\" label=\"Subscribe to newsletter\" size=\"lg\" />"
564
+ }
565
+ ]
566
+ },
567
+ {
568
+ "name": "Radio",
569
+ "category": "forms",
570
+ "description": "A radio button component for selecting a single option from a group, built with Radix UI",
571
+ "keywords": ["radio", "option", "choice", "select", "input"],
572
+ "file": "components/radio.tsx",
573
+ "variants": [
574
+ {
575
+ "name": "size",
576
+ "values": ["sm", "md", "lg"]
577
+ }
578
+ ],
579
+ "hasRadixPrimitive": true,
580
+ "examples": [
581
+ {
582
+ "title": "Radio Group",
583
+ "code": "<RadioGroup><Radio value=\"1\" label=\"Option 1\" /><Radio value=\"2\" label=\"Option 2\" /></RadioGroup>"
584
+ },
585
+ {
586
+ "title": "Large Radio Buttons",
587
+ "code": "<RadioGroup><Radio value=\"a\" label=\"Choice A\" size=\"lg\" /><Radio value=\"b\" label=\"Choice B\" size=\"lg\" /></RadioGroup>"
588
+ }
589
+ ]
590
+ },
591
+ {
592
+ "name": "Popover",
593
+ "category": "overlay",
594
+ "description": "Displays rich content in a floating panel triggered by a click, built with Radix UI",
595
+ "keywords": ["popover", "popup", "dropdown", "floating", "panel"],
596
+ "file": "components/popover.tsx",
597
+ "variants": [
598
+ {
599
+ "name": "variant",
600
+ "values": ["default", "outline"]
601
+ },
602
+ {
603
+ "name": "side",
604
+ "values": ["top", "bottom", "left", "right"]
605
+ }
606
+ ],
607
+ "hasRadixPrimitive": true,
608
+ "examples": [
609
+ {
610
+ "title": "Basic Popover",
611
+ "code": "<Popover><PopoverTrigger>Click me</PopoverTrigger><PopoverContent>Popover content</PopoverContent></Popover>"
612
+ },
613
+ {
614
+ "title": "Popover with Close and Arrow",
615
+ "code": "<Popover><PopoverTrigger>Click me</PopoverTrigger><PopoverContent variant=\"outline\" showArrow><p>Content</p><PopoverClose>Close</PopoverClose></PopoverContent></Popover>"
616
+ }
617
+ ]
618
+ },
619
+ {
620
+ "name": "Tooltip",
621
+ "category": "overlay",
622
+ "description": "Displays informational text when hovering or focusing on an element, built with Radix UI",
623
+ "keywords": ["tooltip", "hover", "popover", "hint", "info"],
624
+ "file": "components/tooltip.tsx",
625
+ "variants": [
626
+ {
627
+ "name": "variant",
628
+ "values": ["default", "light"]
629
+ },
630
+ {
631
+ "name": "side",
632
+ "values": ["top", "bottom", "left", "right"]
633
+ }
634
+ ],
635
+ "hasRadixPrimitive": true,
636
+ "examples": [
637
+ {
638
+ "title": "Basic Tooltip",
639
+ "code": "<TooltipProvider><Tooltip><TooltipTrigger>Hover me</TooltipTrigger><TooltipContent>Tooltip text</TooltipContent></Tooltip></TooltipProvider>"
640
+ },
641
+ {
642
+ "title": "Light Tooltip with Arrow",
643
+ "code": "<TooltipProvider><Tooltip><TooltipTrigger>Hover me</TooltipTrigger><TooltipContent variant=\"light\" showArrow>Light tooltip</TooltipContent></Tooltip></TooltipProvider>"
644
+ }
645
+ ]
646
+ },
647
+ {
648
+ "name": "Textarea",
649
+ "category": "primitives",
650
+ "description": "A textarea component with validation states and sizes for multi-line text input",
651
+ "keywords": ["textarea", "text", "multiline", "input", "form"],
652
+ "file": "components/textarea.tsx",
653
+ "variants": [
654
+ {
655
+ "name": "variant",
656
+ "values": ["default", "error", "success"]
657
+ },
658
+ {
659
+ "name": "size",
660
+ "values": ["sm", "md", "lg"]
661
+ }
662
+ ],
663
+ "hasRadixPrimitive": false,
664
+ "examples": [
665
+ {
666
+ "title": "Basic Textarea",
667
+ "code": "<Textarea placeholder=\"Enter your message...\" />"
668
+ },
669
+ {
670
+ "title": "Textarea with Error State",
671
+ "code": "<Textarea variant=\"error\" placeholder=\"Invalid input\" />"
672
+ }
673
+ ]
674
+ },
675
+ {
676
+ "name": "Switch",
677
+ "category": "primitives",
678
+ "description": "A toggle switch component for boolean on/off states, built with Radix UI",
679
+ "keywords": ["switch", "toggle", "on", "off", "boolean"],
680
+ "file": "components/switch.tsx",
681
+ "variants": [
682
+ {
683
+ "name": "size",
684
+ "values": ["sm", "md", "lg"]
685
+ }
686
+ ],
687
+ "hasRadixPrimitive": true,
688
+ "examples": [
689
+ {
690
+ "title": "Basic Switch",
691
+ "code": "<Switch id=\"airplane-mode\" />"
692
+ },
693
+ {
694
+ "title": "Switch with Label",
695
+ "code": "<div className=\"flex items-center space-x-2\"><Switch id=\"notifications\" /><label htmlFor=\"notifications\">Enable notifications</label></div>"
696
+ }
697
+ ]
698
+ },
699
+ {
700
+ "name": "Container",
701
+ "category": "layout",
702
+ "description": "A responsive container component with max-width constraints and optional padding",
703
+ "keywords": ["container", "wrapper", "layout", "responsive", "max-width"],
704
+ "file": "components/container.tsx",
705
+ "variants": [
706
+ {
707
+ "name": "maxWidth",
708
+ "values": ["sm", "md", "lg", "xl", "2xl", "full"]
709
+ },
710
+ {
711
+ "name": "padding",
712
+ "values": ["true", "false"]
713
+ }
714
+ ],
715
+ "hasRadixPrimitive": false,
716
+ "examples": [
717
+ {
718
+ "title": "Default Container",
719
+ "code": "<Container>Content here</Container>"
720
+ },
721
+ {
722
+ "title": "Small Container",
723
+ "code": "<Container maxWidth=\"sm\">Narrow content</Container>"
724
+ }
725
+ ]
726
+ },
727
+ {
728
+ "name": "Grid",
729
+ "category": "layout",
730
+ "description": "A responsive CSS Grid layout component with configurable columns and gap",
731
+ "keywords": ["grid", "layout", "columns", "responsive", "css-grid"],
732
+ "file": "components/grid.tsx",
733
+ "variants": [
734
+ {
735
+ "name": "cols",
736
+ "values": ["1", "2", "3", "4", "5", "6", "12"]
737
+ },
738
+ {
739
+ "name": "gap",
740
+ "values": ["none", "sm", "md", "lg", "xl"]
741
+ }
742
+ ],
743
+ "hasRadixPrimitive": false,
744
+ "examples": [
745
+ {
746
+ "title": "3-Column Grid",
747
+ "code": "<Grid cols={3} gap=\"md\"><div>Item 1</div><div>Item 2</div><div>Item 3</div></Grid>"
748
+ },
749
+ {
750
+ "title": "4-Column Grid",
751
+ "code": "<Grid cols={4} gap=\"lg\"><div>A</div><div>B</div><div>C</div><div>D</div></Grid>"
752
+ }
753
+ ]
754
+ },
755
+ {
756
+ "name": "Stack",
757
+ "category": "layout",
758
+ "description": "A stack component for vertical or horizontal stacking with consistent spacing",
759
+ "keywords": ["stack", "layout", "vertical", "horizontal", "spacing"],
760
+ "file": "components/stack.tsx",
761
+ "variants": [
762
+ {
763
+ "name": "direction",
764
+ "values": ["vertical", "horizontal"]
765
+ },
766
+ {
767
+ "name": "spacing",
768
+ "values": ["none", "xs", "sm", "md", "lg", "xl"]
769
+ },
770
+ {
771
+ "name": "align",
772
+ "values": ["start", "center", "end", "stretch"]
773
+ }
774
+ ],
775
+ "hasRadixPrimitive": false,
776
+ "examples": [
777
+ {
778
+ "title": "Vertical Stack",
779
+ "code": "<Stack spacing=\"md\"><div>Item 1</div><div>Item 2</div></Stack>"
780
+ },
781
+ {
782
+ "title": "Horizontal Stack",
783
+ "code": "<Stack direction=\"horizontal\" spacing=\"lg\" align=\"center\"><Button>Action 1</Button><Button>Action 2</Button></Stack>"
784
+ }
785
+ ]
786
+ },
787
+ {
788
+ "name": "Flex",
789
+ "category": "layout",
790
+ "description": "A flexible flexbox layout component for common alignment and distribution patterns",
791
+ "keywords": ["flex", "flexbox", "layout", "align", "justify"],
792
+ "file": "components/flex.tsx",
793
+ "variants": [
794
+ {
795
+ "name": "direction",
796
+ "values": ["row", "column", "row-reverse", "column-reverse"]
797
+ },
798
+ {
799
+ "name": "justify",
800
+ "values": ["start", "center", "end", "between", "around", "evenly"]
801
+ },
802
+ {
803
+ "name": "align",
804
+ "values": ["start", "center", "end", "stretch", "baseline"]
805
+ },
806
+ {
807
+ "name": "gap",
808
+ "values": ["none", "xs", "sm", "md", "lg", "xl"]
809
+ }
810
+ ],
811
+ "hasRadixPrimitive": false,
812
+ "examples": [
813
+ {
814
+ "title": "Space Between",
815
+ "code": "<Flex justify=\"between\" align=\"center\"><span>Left</span><span>Right</span></Flex>"
816
+ },
817
+ {
818
+ "title": "Centered Column",
819
+ "code": "<Flex direction=\"column\" justify=\"center\" align=\"center\"><h1>Title</h1><p>Description</p></Flex>"
820
+ }
821
+ ]
822
+ },
823
+ {
824
+ "name": "Spacer",
825
+ "category": "layout",
826
+ "description": "A spacer component for adding fixed or flexible spacing between elements",
827
+ "keywords": ["spacer", "space", "gap", "divider", "layout"],
828
+ "file": "components/spacer.tsx",
829
+ "variants": [
830
+ {
831
+ "name": "size",
832
+ "values": ["xs", "sm", "md", "lg", "xl", "2xl"]
833
+ },
834
+ {
835
+ "name": "flex",
836
+ "values": ["true", "false"]
837
+ }
838
+ ],
839
+ "hasRadixPrimitive": false,
840
+ "examples": [
841
+ {
842
+ "title": "Fixed Spacer",
843
+ "code": "<Spacer size=\"md\" />"
844
+ },
845
+ {
846
+ "title": "Flex Spacer",
847
+ "code": "<Flex><div>Left</div><Spacer flex /><div>Right</div></Flex>"
848
+ }
849
+ ]
850
+ },
851
+ {
852
+ "name": "DropdownMenu",
853
+ "category": "overlay",
854
+ "description": "A dropdown menu component for displaying actions or options triggered by a button click, built with Radix UI",
855
+ "keywords": ["dropdown", "menu", "context", "actions", "options", "navigation"],
856
+ "file": "components/dropdown-menu.tsx",
857
+ "variants": [
858
+ {
859
+ "name": "variant",
860
+ "values": ["default", "outline"]
861
+ }
862
+ ],
863
+ "hasRadixPrimitive": true,
864
+ "examples": [
865
+ {
866
+ "title": "Basic Dropdown Menu",
867
+ "code": "<DropdownMenu><DropdownMenuTrigger><Button>Open</Button></DropdownMenuTrigger><DropdownMenuContent><DropdownMenuItem>Profile</DropdownMenuItem><DropdownMenuItem>Settings</DropdownMenuItem></DropdownMenuContent></DropdownMenu>"
868
+ },
869
+ {
870
+ "title": "Dropdown with Checkbox Items",
871
+ "code": "<DropdownMenu><DropdownMenuTrigger><Button>View</Button></DropdownMenuTrigger><DropdownMenuContent><DropdownMenuCheckboxItem checked>Show Toolbar</DropdownMenuCheckboxItem><DropdownMenuCheckboxItem>Show Sidebar</DropdownMenuCheckboxItem></DropdownMenuContent></DropdownMenu>"
872
+ }
873
+ ]
874
+ },
875
+ {
876
+ "name": "AlertDialog",
877
+ "category": "overlay",
878
+ "description": "A modal dialog for confirming destructive or important actions that requires explicit user response, built with Radix UI",
879
+ "keywords": ["alert", "dialog", "confirm", "modal", "destructive", "warning"],
880
+ "file": "components/alert-dialog.tsx",
881
+ "variants": [
882
+ {
883
+ "name": "variant",
884
+ "values": ["default", "destructive"]
885
+ }
886
+ ],
887
+ "hasRadixPrimitive": true,
888
+ "examples": [
889
+ {
890
+ "title": "Basic Alert Dialog",
891
+ "code": "<AlertDialog><AlertDialogTrigger><Button>Delete</Button></AlertDialogTrigger><AlertDialogContent><AlertDialogHeader><AlertDialogTitle>Are you sure?</AlertDialogTitle><AlertDialogDescription>This action cannot be undone.</AlertDialogDescription></AlertDialogHeader><AlertDialogFooter><AlertDialogCancel>Cancel</AlertDialogCancel><AlertDialogAction>Continue</AlertDialogAction></AlertDialogFooter></AlertDialogContent></AlertDialog>"
892
+ },
893
+ {
894
+ "title": "Destructive Alert Dialog",
895
+ "code": "<AlertDialog><AlertDialogTrigger><Button variant=\"destructive\">Delete Account</Button></AlertDialogTrigger><AlertDialogContent variant=\"destructive\"><AlertDialogHeader><AlertDialogTitle>Delete Account</AlertDialogTitle><AlertDialogDescription>This will permanently delete your account.</AlertDialogDescription></AlertDialogHeader><AlertDialogFooter><AlertDialogCancel>Cancel</AlertDialogCancel><AlertDialogAction>Delete</AlertDialogAction></AlertDialogFooter></AlertDialogContent></AlertDialog>"
896
+ }
897
+ ]
898
+ },
899
+ {
900
+ "name": "Alert",
901
+ "category": "feedback",
902
+ "description": "An inline feedback message component for displaying contextual alerts with dismiss support",
903
+ "keywords": ["alert", "message", "notification", "feedback", "warning", "info"],
904
+ "file": "components/alert.tsx",
905
+ "variants": [
906
+ {
907
+ "name": "variant",
908
+ "values": ["info", "success", "warning", "destructive"]
909
+ }
910
+ ],
911
+ "hasRadixPrimitive": false,
912
+ "examples": [
913
+ {
914
+ "title": "Info Alert",
915
+ "code": "<Alert variant=\"info\"><AlertTitle>Information</AlertTitle><AlertDescription>This is an informational message.</AlertDescription></Alert>"
916
+ },
917
+ {
918
+ "title": "Dismissible Alert",
919
+ "code": "<Alert variant=\"warning\" dismissible onDismiss={() => {}}><AlertTitle>Warning</AlertTitle><AlertDescription>Please review your input.</AlertDescription></Alert>"
920
+ }
921
+ ]
922
+ },
923
+ {
924
+ "name": "Progress",
925
+ "category": "feedback",
926
+ "description": "A progress bar component for displaying completion percentage with multiple variants",
927
+ "keywords": ["progress", "bar", "loading", "percentage", "completion"],
928
+ "file": "components/progress.tsx",
929
+ "variants": [
930
+ {
931
+ "name": "variant",
932
+ "values": ["default", "success", "warning", "danger", "info"]
933
+ },
934
+ {
935
+ "name": "size",
936
+ "values": ["sm", "md", "lg"]
937
+ }
938
+ ],
939
+ "hasRadixPrimitive": false,
940
+ "examples": [
941
+ {
942
+ "title": "Basic Progress",
943
+ "code": "<Progress value={60} />"
944
+ },
945
+ {
946
+ "title": "Progress with Label",
947
+ "code": "<Progress value={75} variant=\"success\" size=\"lg\" showLabel />"
948
+ }
949
+ ]
950
+ },
951
+ {
952
+ "name": "Spinner",
953
+ "category": "feedback",
954
+ "description": "An animated loading spinner indicator with multiple sizes and color variants",
955
+ "keywords": ["spinner", "loading", "indicator", "busy", "wait"],
956
+ "file": "components/spinner.tsx",
957
+ "variants": [
958
+ {
959
+ "name": "variant",
960
+ "values": ["default", "secondary", "success", "destructive", "info"]
961
+ },
962
+ {
963
+ "name": "size",
964
+ "values": ["sm", "md", "lg", "xl"]
965
+ }
966
+ ],
967
+ "hasRadixPrimitive": false,
968
+ "examples": [
969
+ {
970
+ "title": "Default Spinner",
971
+ "code": "<Spinner />"
972
+ },
973
+ {
974
+ "title": "Large Spinner with Label",
975
+ "code": "<Spinner size=\"xl\" label=\"Loading data...\" />"
976
+ }
977
+ ]
978
+ },
979
+ {
980
+ "name": "Skeleton",
981
+ "category": "feedback",
982
+ "description": "A placeholder loading component with pulse animation for content that is loading",
983
+ "keywords": ["skeleton", "loading", "placeholder", "shimmer", "pulse"],
984
+ "file": "components/skeleton.tsx",
985
+ "variants": [],
986
+ "hasRadixPrimitive": false,
987
+ "examples": [
988
+ {
989
+ "title": "Text Skeleton",
990
+ "code": "<Skeleton className=\"h-4 w-48\" />"
991
+ },
992
+ {
993
+ "title": "Card Skeleton",
994
+ "code": "<div className=\"space-y-3\"><Skeleton className=\"h-40 w-full\" /><Skeleton className=\"h-4 w-3/4\" /><Skeleton className=\"h-4 w-1/2\" /></div>"
995
+ }
996
+ ]
997
+ },
998
+ {
999
+ "name": "Accordion",
1000
+ "category": "layout",
1001
+ "description": "A collapsible content component for organizing information into expandable sections, built with Radix UI",
1002
+ "keywords": ["accordion", "collapse", "expand", "toggle", "faq", "sections"],
1003
+ "file": "components/accordion.tsx",
1004
+ "variants": [],
1005
+ "hasRadixPrimitive": true,
1006
+ "examples": [
1007
+ {
1008
+ "title": "Single Accordion",
1009
+ "code": "<Accordion type=\"single\" collapsible><AccordionItem value=\"item-1\"><AccordionTrigger>Section 1</AccordionTrigger><AccordionContent>Content for section 1</AccordionContent></AccordionItem><AccordionItem value=\"item-2\"><AccordionTrigger>Section 2</AccordionTrigger><AccordionContent>Content for section 2</AccordionContent></AccordionItem></Accordion>"
1010
+ },
1011
+ {
1012
+ "title": "Multiple Accordion",
1013
+ "code": "<Accordion type=\"multiple\"><AccordionItem value=\"item-1\"><AccordionTrigger>First</AccordionTrigger><AccordionContent>First content</AccordionContent></AccordionItem></Accordion>"
1014
+ }
1015
+ ]
1016
+ },
1017
+ {
1018
+ "name": "Separator",
1019
+ "category": "layout",
1020
+ "description": "A visual divider component for separating content sections, built with Radix UI",
1021
+ "keywords": ["separator", "divider", "line", "hr", "border"],
1022
+ "file": "components/separator.tsx",
1023
+ "variants": [
1024
+ {
1025
+ "name": "orientation",
1026
+ "values": ["horizontal", "vertical"]
1027
+ }
1028
+ ],
1029
+ "hasRadixPrimitive": true,
1030
+ "examples": [
1031
+ {
1032
+ "title": "Horizontal Separator",
1033
+ "code": "<div><p>Above</p><Separator /><p>Below</p></div>"
1034
+ },
1035
+ {
1036
+ "title": "Vertical Separator",
1037
+ "code": "<div className=\"flex h-5 items-center space-x-4\"><span>Left</span><Separator orientation=\"vertical\" /><span>Right</span></div>"
1038
+ }
1039
+ ]
1040
+ },
1041
+ {
1042
+ "name": "Breadcrumb",
1043
+ "category": "navigation",
1044
+ "description": "A navigation component for displaying the current page location within a hierarchical structure",
1045
+ "keywords": ["breadcrumb", "navigation", "path", "trail", "hierarchy"],
1046
+ "file": "components/breadcrumb.tsx",
1047
+ "variants": [],
1048
+ "hasRadixPrimitive": false,
1049
+ "examples": [
1050
+ {
1051
+ "title": "Basic Breadcrumb",
1052
+ "code": "<Breadcrumb><BreadcrumbList><BreadcrumbItem><BreadcrumbLink href=\"/\">Home</BreadcrumbLink></BreadcrumbItem><BreadcrumbSeparator /><BreadcrumbItem><BreadcrumbLink href=\"/products\">Products</BreadcrumbLink></BreadcrumbItem><BreadcrumbSeparator /><BreadcrumbItem><BreadcrumbPage>Details</BreadcrumbPage></BreadcrumbItem></BreadcrumbList></Breadcrumb>"
1053
+ },
1054
+ {
1055
+ "title": "Breadcrumb with Links",
1056
+ "code": "<Breadcrumb><BreadcrumbList><BreadcrumbItem><BreadcrumbLink href=\"/\">Home</BreadcrumbLink></BreadcrumbItem><BreadcrumbSeparator /><BreadcrumbItem><BreadcrumbPage>Current Page</BreadcrumbPage></BreadcrumbItem></BreadcrumbList></Breadcrumb>"
1057
+ }
1058
+ ]
1059
+ }
1060
+ ]
1061
+ }