@static-ui/registry 0.0.2 → 0.1.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.
Files changed (3) hide show
  1. package/dist/index.json +1184 -68
  2. package/package.json +33 -14
  3. package/registry.json +649 -0
package/registry.json ADDED
@@ -0,0 +1,649 @@
1
+ {
2
+ "name": "@static-ui/registry",
3
+ "version": "0.1.0",
4
+ "description": "Static UI component registry",
5
+ "supportedFrameworks": ["react", "nextjs", "vue", "nuxt", "solid", "svelte", "astro", "remix"],
6
+ "categories": {
7
+ "ui": {
8
+ "label": "Components",
9
+ "description": "Individual UI components"
10
+ },
11
+ "blocks": {
12
+ "label": "Blocks",
13
+ "description": "Pre-built sections and patterns"
14
+ },
15
+ "templates": {
16
+ "label": "Templates",
17
+ "description": "Full page templates"
18
+ },
19
+ "ai": {
20
+ "label": "AI Components",
21
+ "description": "AI chat and prompt components"
22
+ }
23
+ },
24
+ "components": [
25
+ {
26
+ "name": "accordion",
27
+ "type": "components:ui",
28
+ "description": "A vertically stacked set of interactive headings that reveal content",
29
+ "frameworks": ["react", "nextjs", "remix"],
30
+ "dependencies": ["@base-ui/react"],
31
+ "registryDependencies": [],
32
+ "files": ["accordion.tsx"],
33
+ "categories": ["layout"]
34
+ },
35
+ {
36
+ "name": "alert",
37
+ "type": "components:ui",
38
+ "description": "A notification message that communicates information to the user",
39
+ "frameworks": ["react", "nextjs", "vue", "nuxt", "solid", "svelte", "astro", "remix"],
40
+ "dependencies": [],
41
+ "registryDependencies": [],
42
+ "files": ["alert.tsx"],
43
+ "categories": ["feedback"]
44
+ },
45
+ {
46
+ "name": "alert-dialog",
47
+ "type": "components:ui",
48
+ "description": "A modal dialog that interrupts the user with urgent information",
49
+ "frameworks": ["react", "nextjs", "remix"],
50
+ "dependencies": ["@base-ui/react"],
51
+ "registryDependencies": [],
52
+ "files": ["alert-dialog.tsx"],
53
+ "categories": ["overlay"]
54
+ },
55
+ {
56
+ "name": "aspect-ratio",
57
+ "type": "components:ui",
58
+ "description": "A container that maintains a consistent aspect ratio",
59
+ "frameworks": ["react", "nextjs", "vue", "nuxt", "solid", "svelte", "astro", "remix"],
60
+ "dependencies": [],
61
+ "registryDependencies": [],
62
+ "files": ["aspect-ratio.tsx"],
63
+ "categories": ["layout"]
64
+ },
65
+ {
66
+ "name": "avatar",
67
+ "type": "components:ui",
68
+ "description": "A visual representation of a user or entity",
69
+ "frameworks": ["react", "nextjs", "remix"],
70
+ "dependencies": ["@base-ui/react"],
71
+ "registryDependencies": [],
72
+ "files": ["avatar.tsx"],
73
+ "categories": ["data-display"]
74
+ },
75
+ {
76
+ "name": "badge",
77
+ "type": "components:ui",
78
+ "description": "A small status descriptor for UI elements",
79
+ "frameworks": ["react", "nextjs", "vue", "nuxt", "solid", "svelte", "astro", "remix"],
80
+ "dependencies": ["class-variance-authority"],
81
+ "registryDependencies": [],
82
+ "files": ["badge.tsx"],
83
+ "categories": ["data-display"]
84
+ },
85
+ {
86
+ "name": "breadcrumb",
87
+ "type": "components:ui",
88
+ "description": "A navigation helper that shows the user's location in a hierarchy",
89
+ "frameworks": ["react", "nextjs", "vue", "nuxt", "solid", "svelte", "astro", "remix"],
90
+ "dependencies": [],
91
+ "registryDependencies": [],
92
+ "files": ["breadcrumb.tsx"],
93
+ "categories": ["navigation"]
94
+ },
95
+ {
96
+ "name": "button",
97
+ "type": "components:ui",
98
+ "description": "A clickable element that triggers an action",
99
+ "frameworks": ["react", "nextjs", "vue", "nuxt", "solid", "svelte", "astro", "remix"],
100
+ "dependencies": ["@base-ui/react", "class-variance-authority"],
101
+ "registryDependencies": [],
102
+ "files": ["button.tsx"],
103
+ "categories": ["actions"]
104
+ },
105
+ {
106
+ "name": "calendar",
107
+ "type": "components:ui",
108
+ "description": "A date picker calendar component",
109
+ "dependencies": [],
110
+ "registryDependencies": [],
111
+ "files": ["calendar.tsx"],
112
+ "categories": ["forms"]
113
+ },
114
+ {
115
+ "name": "card",
116
+ "type": "components:ui",
117
+ "description": "A flexible content container with optional header, footer, and sections",
118
+ "dependencies": [],
119
+ "registryDependencies": [],
120
+ "files": ["card.tsx"],
121
+ "categories": ["layout"]
122
+ },
123
+ {
124
+ "name": "carousel",
125
+ "type": "components:ui",
126
+ "description": "A horizontally scrollable container for cycling through items",
127
+ "dependencies": [],
128
+ "registryDependencies": [],
129
+ "files": ["carousel.tsx"],
130
+ "categories": ["layout"]
131
+ },
132
+ {
133
+ "name": "checkbox",
134
+ "type": "components:ui",
135
+ "description": "A control that allows the user to toggle between checked and unchecked",
136
+ "dependencies": ["@base-ui/react"],
137
+ "registryDependencies": [],
138
+ "files": ["checkbox.tsx"],
139
+ "categories": ["forms"]
140
+ },
141
+ {
142
+ "name": "collapsible",
143
+ "type": "components:ui",
144
+ "description": "An expandable content panel",
145
+ "dependencies": ["@base-ui/react"],
146
+ "registryDependencies": [],
147
+ "files": ["collapsible.tsx"],
148
+ "categories": ["layout"]
149
+ },
150
+ {
151
+ "name": "context-menu",
152
+ "type": "components:ui",
153
+ "description": "A menu that appears on right-click, providing contextual actions",
154
+ "dependencies": ["@base-ui/react"],
155
+ "registryDependencies": [],
156
+ "files": ["context-menu.tsx"],
157
+ "categories": ["overlay"]
158
+ },
159
+ {
160
+ "name": "dialog",
161
+ "type": "components:ui",
162
+ "description": "A modal overlay that requires user interaction",
163
+ "dependencies": ["@base-ui/react"],
164
+ "registryDependencies": [],
165
+ "files": ["dialog.tsx"],
166
+ "categories": ["overlay"]
167
+ },
168
+ {
169
+ "name": "chart",
170
+ "type": "components:ui",
171
+ "description": "A chart component for data visualization using Recharts",
172
+ "frameworks": ["react", "nextjs"],
173
+ "dependencies": ["recharts"],
174
+ "registryDependencies": [],
175
+ "files": ["chart.tsx"],
176
+ "categories": ["data-display"]
177
+ },
178
+ {
179
+ "name": "drawer",
180
+ "type": "components:ui",
181
+ "description": "A slide-out panel for navigation or content",
182
+ "dependencies": ["@base-ui/react"],
183
+ "registryDependencies": [],
184
+ "files": ["drawer.tsx"],
185
+ "categories": ["overlay"]
186
+ },
187
+ {
188
+ "name": "dropdown-menu",
189
+ "type": "components:ui",
190
+ "description": "A menu of options anchored to a trigger element",
191
+ "dependencies": ["@base-ui/react"],
192
+ "registryDependencies": [],
193
+ "files": ["dropdown-menu.tsx"],
194
+ "categories": ["overlay"]
195
+ },
196
+ {
197
+ "name": "hover-card",
198
+ "type": "components:ui",
199
+ "description": "A card that appears on hover with additional information",
200
+ "dependencies": ["@base-ui/react"],
201
+ "registryDependencies": [],
202
+ "files": ["hover-card.tsx"],
203
+ "categories": ["overlay"]
204
+ },
205
+ {
206
+ "name": "input",
207
+ "type": "components:ui",
208
+ "description": "A text input field for user data entry",
209
+ "dependencies": [],
210
+ "registryDependencies": [],
211
+ "files": ["input.tsx"],
212
+ "categories": ["forms"]
213
+ },
214
+ {
215
+ "name": "input-group",
216
+ "type": "components:ui",
217
+ "description": "A grouped input with prepended or appended elements",
218
+ "dependencies": [],
219
+ "registryDependencies": [],
220
+ "files": ["input-group.tsx"],
221
+ "categories": ["forms"]
222
+ },
223
+ {
224
+ "name": "input-otp",
225
+ "type": "components:ui",
226
+ "description": "A one-time password input with individual digit fields",
227
+ "dependencies": [],
228
+ "registryDependencies": [],
229
+ "files": ["input-otp.tsx"],
230
+ "categories": ["forms"]
231
+ },
232
+ {
233
+ "name": "kbd",
234
+ "type": "components:ui",
235
+ "description": "A keyboard key indicator",
236
+ "dependencies": [],
237
+ "registryDependencies": [],
238
+ "files": ["kbd.tsx"],
239
+ "categories": ["data-display"]
240
+ },
241
+ {
242
+ "name": "label",
243
+ "type": "components:ui",
244
+ "description": "A text label for form elements",
245
+ "dependencies": [],
246
+ "registryDependencies": [],
247
+ "files": ["label.tsx"],
248
+ "categories": ["forms"]
249
+ },
250
+ {
251
+ "name": "number-field",
252
+ "type": "components:ui",
253
+ "description": "A numeric input with increment and decrement controls",
254
+ "dependencies": ["@base-ui/react"],
255
+ "registryDependencies": [],
256
+ "files": ["number-field.tsx"],
257
+ "categories": ["forms"]
258
+ },
259
+ {
260
+ "name": "pagination",
261
+ "type": "components:ui",
262
+ "description": "A pagination navigation component for paged content",
263
+ "dependencies": [],
264
+ "registryDependencies": [],
265
+ "files": ["pagination.tsx"],
266
+ "categories": ["navigation"]
267
+ },
268
+ {
269
+ "name": "popover",
270
+ "type": "components:ui",
271
+ "description": "A floating card that appears on click with additional content",
272
+ "dependencies": ["@base-ui/react"],
273
+ "registryDependencies": [],
274
+ "files": ["popover.tsx"],
275
+ "categories": ["overlay"]
276
+ },
277
+ {
278
+ "name": "progress",
279
+ "type": "components:ui",
280
+ "description": "A visual indicator of task completion progress",
281
+ "dependencies": ["@base-ui/react"],
282
+ "registryDependencies": [],
283
+ "files": ["progress.tsx"],
284
+ "categories": ["feedback"]
285
+ },
286
+ {
287
+ "name": "radio-group",
288
+ "type": "components:ui",
289
+ "description": "A set of radio buttons for single-selection from options",
290
+ "dependencies": ["@base-ui/react"],
291
+ "registryDependencies": [],
292
+ "files": ["radio-group.tsx"],
293
+ "categories": ["forms"]
294
+ },
295
+ {
296
+ "name": "scroll-area",
297
+ "type": "components:ui",
298
+ "description": "A custom scrollable container with styled scrollbars",
299
+ "dependencies": ["@base-ui/react"],
300
+ "registryDependencies": [],
301
+ "files": ["scroll-area.tsx"],
302
+ "categories": ["layout"]
303
+ },
304
+ {
305
+ "name": "select",
306
+ "type": "components:ui",
307
+ "description": "A dropdown select menu for choosing from options",
308
+ "dependencies": ["@base-ui/react"],
309
+ "registryDependencies": [],
310
+ "files": ["select.tsx"],
311
+ "categories": ["forms"]
312
+ },
313
+ {
314
+ "name": "separator",
315
+ "type": "components:ui",
316
+ "description": "A visual divider between sections",
317
+ "dependencies": [],
318
+ "registryDependencies": [],
319
+ "files": ["separator.tsx"],
320
+ "categories": ["layout"]
321
+ },
322
+ {
323
+ "name": "sheet",
324
+ "type": "components:ui",
325
+ "description": "A slide-out dialog panel from the edge of the screen",
326
+ "frameworks": ["react", "nextjs", "remix"],
327
+ "dependencies": ["@base-ui/react"],
328
+ "registryDependencies": [],
329
+ "files": ["sheet.tsx"],
330
+ "categories": ["overlay"]
331
+ },
332
+ {
333
+ "name": "sidebar",
334
+ "type": "components:ui",
335
+ "description": "A collapsible sidebar navigation panel",
336
+ "dependencies": [],
337
+ "registryDependencies": [],
338
+ "files": ["sidebar.tsx"],
339
+ "categories": ["navigation"]
340
+ },
341
+ {
342
+ "name": "skeleton",
343
+ "type": "components:ui",
344
+ "description": "A placeholder loading skeleton for content",
345
+ "dependencies": [],
346
+ "registryDependencies": [],
347
+ "files": ["skeleton.tsx"],
348
+ "categories": ["feedback"]
349
+ },
350
+ {
351
+ "name": "slider",
352
+ "type": "components:ui",
353
+ "description": "A range slider for selecting a value from a range",
354
+ "dependencies": ["@base-ui/react"],
355
+ "registryDependencies": [],
356
+ "files": ["slider.tsx"],
357
+ "categories": ["forms"]
358
+ },
359
+ {
360
+ "name": "sonner",
361
+ "type": "components:ui",
362
+ "description": "A toast notification system using sonner",
363
+ "dependencies": [],
364
+ "registryDependencies": [],
365
+ "files": ["sonner.tsx"],
366
+ "categories": ["feedback"]
367
+ },
368
+ {
369
+ "name": "spinner",
370
+ "type": "components:ui",
371
+ "description": "A loading spinner indicator",
372
+ "dependencies": [],
373
+ "registryDependencies": [],
374
+ "files": ["spinner.tsx"],
375
+ "categories": ["feedback"]
376
+ },
377
+ {
378
+ "name": "switch",
379
+ "type": "components:ui",
380
+ "description": "A toggle switch for binary settings",
381
+ "dependencies": ["@base-ui/react"],
382
+ "registryDependencies": [],
383
+ "files": ["switch.tsx"],
384
+ "categories": ["forms"]
385
+ },
386
+ {
387
+ "name": "table",
388
+ "type": "components:ui",
389
+ "description": "A data table for displaying tabular information",
390
+ "dependencies": [],
391
+ "registryDependencies": [],
392
+ "files": ["table.tsx"],
393
+ "categories": ["data-display"]
394
+ },
395
+ {
396
+ "name": "tabs",
397
+ "type": "components:ui",
398
+ "description": "A tabbed navigation for switching between views",
399
+ "dependencies": ["@base-ui/react"],
400
+ "registryDependencies": [],
401
+ "files": ["tabs.tsx"],
402
+ "categories": ["layout"]
403
+ },
404
+ {
405
+ "name": "textarea",
406
+ "type": "components:ui",
407
+ "description": "A multi-line text input field",
408
+ "dependencies": [],
409
+ "registryDependencies": [],
410
+ "files": ["textarea.tsx"],
411
+ "categories": ["forms"]
412
+ },
413
+ {
414
+ "name": "toast",
415
+ "type": "components:ui",
416
+ "description": "A toast notification component for brief messages",
417
+ "dependencies": [],
418
+ "registryDependencies": [],
419
+ "files": ["toast.tsx"],
420
+ "categories": ["feedback"]
421
+ },
422
+ {
423
+ "name": "toggle",
424
+ "type": "components:ui",
425
+ "description": "A button that toggles between on and off states",
426
+ "dependencies": ["@base-ui/react", "class-variance-authority"],
427
+ "registryDependencies": [],
428
+ "files": ["toggle.tsx"],
429
+ "categories": ["actions"]
430
+ },
431
+ {
432
+ "name": "toggle-group",
433
+ "type": "components:ui",
434
+ "description": "A group of toggle buttons for multi-selection",
435
+ "dependencies": ["@base-ui/react"],
436
+ "registryDependencies": [],
437
+ "files": ["toggle-group.tsx"],
438
+ "categories": ["actions"]
439
+ },
440
+ {
441
+ "name": "tooltip",
442
+ "type": "components:ui",
443
+ "description": "A floating label that provides additional context on hover",
444
+ "dependencies": ["@base-ui/react"],
445
+ "registryDependencies": [],
446
+ "files": ["tooltip.tsx"],
447
+ "categories": ["overlay"]
448
+ },
449
+ {
450
+ "name": "typography",
451
+ "type": "components:ui",
452
+ "description": "A set of typography components for consistent text styling",
453
+ "dependencies": [],
454
+ "registryDependencies": [],
455
+ "files": ["typography.tsx"],
456
+ "categories": ["typography"]
457
+ },
458
+ {
459
+ "name": "use-mobile",
460
+ "type": "components:hook",
461
+ "description": "A hook that detects mobile viewport for responsive layouts",
462
+ "frameworks": ["react", "nextjs", "vue", "nuxt", "solid", "svelte", "astro", "remix"],
463
+ "dependencies": [],
464
+ "registryDependencies": [],
465
+ "files": ["hooks/use-mobile.ts"],
466
+ "categories": ["hooks"]
467
+ },
468
+ {
469
+ "name": "ai-chat",
470
+ "type": "components:ui",
471
+ "description": "A full chat UI with message list, input area, and loading states",
472
+ "dependencies": [],
473
+ "registryDependencies": ["ai-message", "ai-prompt"],
474
+ "files": ["ai-chat.tsx"],
475
+ "categories": ["ai"]
476
+ },
477
+ {
478
+ "name": "ai-message",
479
+ "type": "components:ui",
480
+ "description": "A message bubble with role-based styling and timestamp support",
481
+ "dependencies": [],
482
+ "registryDependencies": [],
483
+ "files": ["ai-message.tsx"],
484
+ "categories": ["ai"]
485
+ },
486
+ {
487
+ "name": "ai-prompt",
488
+ "type": "components:ui",
489
+ "description": "A multi-line prompt input with send button and keyboard submit",
490
+ "dependencies": [],
491
+ "registryDependencies": [],
492
+ "files": ["ai-prompt.tsx"],
493
+ "categories": ["ai"]
494
+ },
495
+ {
496
+ "name": "ai-code-block",
497
+ "type": "components:ui",
498
+ "description": "A code display block with language label, copy button, and line numbers",
499
+ "dependencies": [],
500
+ "registryDependencies": [],
501
+ "files": ["ai-code-block.tsx"],
502
+ "categories": ["ai"]
503
+ },
504
+ {
505
+ "name": "ai-file-upload",
506
+ "type": "components:ui",
507
+ "description": "A drag-and-drop file upload zone with progress and file restrictions",
508
+ "dependencies": [],
509
+ "registryDependencies": [],
510
+ "files": ["ai-file-upload.tsx"],
511
+ "categories": ["ai"]
512
+ },
513
+ {
514
+ "name": "ai-chat-layout",
515
+ "type": "components:ui",
516
+ "description": "A responsive chat page layout with sidebar, header, and main area",
517
+ "dependencies": [],
518
+ "registryDependencies": ["ai-sidebar"],
519
+ "files": ["ai-chat-layout.tsx"],
520
+ "categories": ["ai"]
521
+ },
522
+ {
523
+ "name": "ai-sidebar",
524
+ "type": "components:ui",
525
+ "description": "A conversation sidebar with search, new chat button, and scrollable list",
526
+ "dependencies": [],
527
+ "registryDependencies": ["ai-conversation"],
528
+ "files": ["ai-sidebar.tsx"],
529
+ "categories": ["ai"]
530
+ },
531
+ {
532
+ "name": "ai-conversation",
533
+ "type": "components:ui",
534
+ "description": "A conversation item with title, preview, timestamp, active state, and delete",
535
+ "dependencies": [],
536
+ "registryDependencies": [],
537
+ "files": ["ai-conversation.tsx"],
538
+ "categories": ["ai"]
539
+ }
540
+ ],
541
+ "blocks": [
542
+ {
543
+ "name": "dashboard-01",
544
+ "type": "components:block",
545
+ "description": "A full dashboard layout with sidebar, header, and stats",
546
+ "dependencies": ["@base-ui/react", "lucide-react"],
547
+ "registryDependencies": ["sidebar", "card", "button", "avatar"],
548
+ "files": ["blocks/dashboard-01.tsx"]
549
+ },
550
+ {
551
+ "name": "dashboard-02",
552
+ "type": "components:block",
553
+ "description": "An analytics dashboard variant with charts",
554
+ "dependencies": ["@base-ui/react", "lucide-react"],
555
+ "registryDependencies": ["sidebar", "card", "tabs", "select", "button"],
556
+ "files": ["blocks/dashboard-02.tsx"]
557
+ },
558
+ {
559
+ "name": "login-01",
560
+ "type": "components:block",
561
+ "description": "A clean login form with email and password",
562
+ "dependencies": ["@base-ui/react", "lucide-react"],
563
+ "registryDependencies": ["button", "input", "label", "card"],
564
+ "files": ["blocks/login-01.tsx"]
565
+ },
566
+ {
567
+ "name": "login-02",
568
+ "type": "components:block",
569
+ "description": "A login form with social auth providers",
570
+ "dependencies": ["@base-ui/react", "lucide-react"],
571
+ "registryDependencies": ["button", "input", "label", "card", "separator"],
572
+ "files": ["blocks/login-02.tsx"]
573
+ },
574
+ {
575
+ "name": "pricing-01",
576
+ "type": "components:block",
577
+ "description": "A three-tier pricing card layout",
578
+ "dependencies": ["@base-ui/react", "lucide-react"],
579
+ "registryDependencies": ["card", "button", "badge"],
580
+ "files": ["blocks/pricing-01.tsx"]
581
+ },
582
+ {
583
+ "name": "pricing-02",
584
+ "type": "components:block",
585
+ "description": "A pricing table with feature comparison",
586
+ "dependencies": ["@base-ui/react", "lucide-react"],
587
+ "registryDependencies": ["card", "button", "badge", "table"],
588
+ "files": ["blocks/pricing-02.tsx"]
589
+ },
590
+ {
591
+ "name": "hero-01",
592
+ "type": "components:block",
593
+ "description": "A centered hero section with CTA buttons",
594
+ "dependencies": ["@base-ui/react", "lucide-react"],
595
+ "registryDependencies": ["button", "badge"],
596
+ "files": ["blocks/hero-01.tsx"]
597
+ },
598
+ {
599
+ "name": "hero-02",
600
+ "type": "components:block",
601
+ "description": "A split hero section with image and text",
602
+ "dependencies": ["@base-ui/react", "lucide-react"],
603
+ "registryDependencies": ["button", "badge"],
604
+ "files": ["blocks/hero-02.tsx"]
605
+ },
606
+ {
607
+ "name": "feature-01",
608
+ "type": "components:block",
609
+ "description": "A three-column feature grid",
610
+ "dependencies": ["@base-ui/react", "lucide-react"],
611
+ "registryDependencies": ["card"],
612
+ "files": ["blocks/feature-01.tsx"]
613
+ },
614
+ {
615
+ "name": "feature-02",
616
+ "type": "components:block",
617
+ "description": "An alternating feature section with icons",
618
+ "dependencies": ["@base-ui/react", "lucide-react"],
619
+ "registryDependencies": ["card"],
620
+ "files": ["blocks/feature-02.tsx"]
621
+ }
622
+ ],
623
+ "templates": [
624
+ {
625
+ "name": "marketing",
626
+ "type": "components:template",
627
+ "description": "A full marketing landing page template",
628
+ "dependencies": ["@base-ui/react", "lucide-react", "next"],
629
+ "registryDependencies": ["hero-01", "feature-01", "pricing-01", "button"],
630
+ "files": ["templates/marketing.tsx"]
631
+ },
632
+ {
633
+ "name": "dashboard",
634
+ "type": "components:template",
635
+ "description": "A full dashboard template",
636
+ "dependencies": ["@base-ui/react", "lucide-react", "next"],
637
+ "registryDependencies": ["dashboard-01", "sidebar", "button", "card"],
638
+ "files": ["templates/dashboard.tsx"]
639
+ },
640
+ {
641
+ "name": "auth",
642
+ "type": "components:template",
643
+ "description": "An authentication pages template",
644
+ "dependencies": ["@base-ui/react", "lucide-react", "next"],
645
+ "registryDependencies": ["login-01", "login-02"],
646
+ "files": ["templates/auth.tsx"]
647
+ }
648
+ ]
649
+ }