@stampui/blocks 1.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.
Files changed (107) hide show
  1. package/dist/components/ai-chat-shell.d.ts +1 -0
  2. package/dist/components/ai-chat-shell.js +23 -0
  3. package/dist/components/prompt-input.d.ts +5 -0
  4. package/dist/components/prompt-input.js +47 -0
  5. package/dist/components/registry-card.d.ts +6 -0
  6. package/dist/components/registry-card.js +15 -0
  7. package/dist/components/registry-explorer.d.ts +8 -0
  8. package/dist/components/registry-explorer.js +38 -0
  9. package/dist/components/token-stream.d.ts +7 -0
  10. package/dist/components/token-stream.js +21 -0
  11. package/dist/index.d.ts +2 -0
  12. package/dist/index.js +23 -0
  13. package/dist/manifests.d.ts +3 -0
  14. package/dist/manifests.js +1666 -0
  15. package/dist/types.d.ts +44 -0
  16. package/dist/types.js +2 -0
  17. package/package.json +28 -0
  18. package/src/components/blocks/ai-chat-shell.tsx +97 -0
  19. package/src/components/blocks/auth-panel.tsx +203 -0
  20. package/src/components/blocks/feature-grid.tsx +122 -0
  21. package/src/components/blocks/hero-section.tsx +73 -0
  22. package/src/components/blocks/notification-center.tsx +185 -0
  23. package/src/components/blocks/onboarding-flow.tsx +230 -0
  24. package/src/components/blocks/pricing-section.tsx +135 -0
  25. package/src/components/blocks/project-command-center.tsx +188 -0
  26. package/src/components/blocks/prompt-input.tsx +81 -0
  27. package/src/components/blocks/registry-card.tsx +104 -0
  28. package/src/components/blocks/registry-explorer.tsx +78 -0
  29. package/src/components/blocks/settings-layout.tsx +178 -0
  30. package/src/components/blocks/stats-strip.tsx +100 -0
  31. package/src/components/blocks/token-stream.tsx +42 -0
  32. package/src/components/blocks/usage-card.tsx +116 -0
  33. package/src/components/core/accordion.tsx +58 -0
  34. package/src/components/core/alert-dialog.tsx +113 -0
  35. package/src/components/core/alert.tsx +48 -0
  36. package/src/components/core/animated-number.tsx +77 -0
  37. package/src/components/core/aspect-ratio.tsx +20 -0
  38. package/src/components/core/avatar-stack.tsx +61 -0
  39. package/src/components/core/avatar.tsx +90 -0
  40. package/src/components/core/badge.tsx +39 -0
  41. package/src/components/core/breadcrumb.tsx +63 -0
  42. package/src/components/core/button-group.tsx +37 -0
  43. package/src/components/core/button.tsx +110 -0
  44. package/src/components/core/calendar.tsx +143 -0
  45. package/src/components/core/card.tsx +60 -0
  46. package/src/components/core/carousel.tsx +170 -0
  47. package/src/components/core/chart.tsx +377 -0
  48. package/src/components/core/checkbox.tsx +64 -0
  49. package/src/components/core/collapsible.tsx +30 -0
  50. package/src/components/core/combobox.tsx +114 -0
  51. package/src/components/core/command-box.tsx +22 -0
  52. package/src/components/core/command.tsx +165 -0
  53. package/src/components/core/confirm-action.tsx +94 -0
  54. package/src/components/core/context-menu.tsx +139 -0
  55. package/src/components/core/copy-button.tsx +41 -0
  56. package/src/components/core/data-table.tsx +173 -0
  57. package/src/components/core/date-picker.tsx +73 -0
  58. package/src/components/core/dialog.tsx +83 -0
  59. package/src/components/core/drawer.tsx +87 -0
  60. package/src/components/core/dropdown-menu.tsx +147 -0
  61. package/src/components/core/empty.tsx +34 -0
  62. package/src/components/core/field.tsx +39 -0
  63. package/src/components/core/file-upload.tsx +143 -0
  64. package/src/components/core/hover-card.tsx +31 -0
  65. package/src/components/core/inline-edit.tsx +104 -0
  66. package/src/components/core/input-group.tsx +47 -0
  67. package/src/components/core/input-otp.tsx +108 -0
  68. package/src/components/core/input.tsx +37 -0
  69. package/src/components/core/kbd.tsx +47 -0
  70. package/src/components/core/label.tsx +28 -0
  71. package/src/components/core/marquee.tsx +61 -0
  72. package/src/components/core/menubar.tsx +120 -0
  73. package/src/components/core/multi-select.tsx +145 -0
  74. package/src/components/core/native-select.tsx +27 -0
  75. package/src/components/core/navigation-menu.tsx +130 -0
  76. package/src/components/core/number-stepper.tsx +80 -0
  77. package/src/components/core/pagination.tsx +80 -0
  78. package/src/components/core/password-input.tsx +90 -0
  79. package/src/components/core/popover.tsx +34 -0
  80. package/src/components/core/progress.tsx +63 -0
  81. package/src/components/core/radio-group.tsx +77 -0
  82. package/src/components/core/resizable.tsx +250 -0
  83. package/src/components/core/scroll-area.tsx +38 -0
  84. package/src/components/core/select.tsx +128 -0
  85. package/src/components/core/separator.tsx +47 -0
  86. package/src/components/core/sheet.tsx +118 -0
  87. package/src/components/core/sidebar.tsx +129 -0
  88. package/src/components/core/skeleton.tsx +32 -0
  89. package/src/components/core/slider.tsx +97 -0
  90. package/src/components/core/sonner.tsx +29 -0
  91. package/src/components/core/spinner.tsx +60 -0
  92. package/src/components/core/status-pulse.tsx +67 -0
  93. package/src/components/core/stepper.tsx +111 -0
  94. package/src/components/core/switch.tsx +72 -0
  95. package/src/components/core/table.tsx +104 -0
  96. package/src/components/core/tabs.tsx +55 -0
  97. package/src/components/core/tag-input.tsx +93 -0
  98. package/src/components/core/textarea.tsx +44 -0
  99. package/src/components/core/timeline.tsx +81 -0
  100. package/src/components/core/toggle-group.tsx +56 -0
  101. package/src/components/core/toggle.tsx +66 -0
  102. package/src/components/core/tooltip.tsx +31 -0
  103. package/src/components/core/typing-indicator.tsx +51 -0
  104. package/src/index.ts +8 -0
  105. package/src/manifests.ts +1682 -0
  106. package/src/types.ts +58 -0
  107. package/src/ui.ts +13 -0
@@ -0,0 +1,1682 @@
1
+ import { BlockManifest } from "./types"
2
+
3
+ export const manifests: Record<string, BlockManifest> = {
4
+
5
+ // ─── Core UI ─────────────────────────────────────────────────────────────
6
+
7
+ "button": {
8
+ slug: "button",
9
+ title: "Button",
10
+ description: "Versatile button with multiple variants, sizes, and loading state.",
11
+ category: "UI",
12
+ tags: ["button", "action", "form"],
13
+ version: "1.0.0",
14
+ updatedAt: "2026-05-10",
15
+ changelog: ["Initial release"],
16
+ status: "free",
17
+ difficulty: "beginner",
18
+ frameworks: ["nextjs", "react", "vite"],
19
+ dependencies: [],
20
+ files: [{ path: "components/core/button.tsx", type: "block" }],
21
+ tokens: ["foreground", "muted-foreground", "primary", "border", "surface-2"],
22
+ supportsDarkMode: true,
23
+ supportsLightMode: true,
24
+ promptReady: true,
25
+ },
26
+ "badge": {
27
+ slug: "badge",
28
+ title: "Badge",
29
+ description: "Compact label for statuses, counts, and categories.",
30
+ category: "UI",
31
+ tags: ["badge", "label", "status"],
32
+ version: "1.0.0",
33
+ updatedAt: "2026-05-10",
34
+ changelog: ["Initial release"],
35
+ status: "free",
36
+ difficulty: "beginner",
37
+ frameworks: ["nextjs", "react", "vite"],
38
+ dependencies: [],
39
+ files: [{ path: "components/core/badge.tsx", type: "block" }],
40
+ tokens: ["foreground", "muted-foreground", "border", "surface-2"],
41
+ supportsDarkMode: true,
42
+ supportsLightMode: true,
43
+ promptReady: true,
44
+ },
45
+ "input": {
46
+ slug: "input",
47
+ title: "Input",
48
+ description: "Text input with size variants and full form integration.",
49
+ category: "UI",
50
+ tags: ["input", "form", "text"],
51
+ version: "1.0.0",
52
+ updatedAt: "2026-05-10",
53
+ changelog: ["Initial release"],
54
+ status: "free",
55
+ difficulty: "beginner",
56
+ frameworks: ["nextjs", "react", "vite"],
57
+ dependencies: [],
58
+ files: [{ path: "components/core/input.tsx", type: "block" }],
59
+ tokens: ["border", "surface-2", "foreground", "muted-foreground"],
60
+ supportsDarkMode: true,
61
+ supportsLightMode: true,
62
+ promptReady: true,
63
+ },
64
+ "textarea": {
65
+ slug: "textarea",
66
+ title: "Textarea",
67
+ description: "Multi-line text input with auto-resize and size variants.",
68
+ category: "UI",
69
+ tags: ["textarea", "form", "text"],
70
+ version: "1.0.0",
71
+ updatedAt: "2026-05-10",
72
+ changelog: ["Initial release"],
73
+ status: "free",
74
+ difficulty: "beginner",
75
+ frameworks: ["nextjs", "react", "vite"],
76
+ dependencies: [],
77
+ files: [{ path: "components/core/textarea.tsx", type: "block" }],
78
+ tokens: ["border", "surface-2", "foreground", "muted-foreground"],
79
+ supportsDarkMode: true,
80
+ supportsLightMode: true,
81
+ promptReady: true,
82
+ },
83
+ "label": {
84
+ slug: "label",
85
+ title: "Label",
86
+ description: "Accessible form label with required indicator and disabled state.",
87
+ category: "UI",
88
+ tags: ["label", "form", "accessibility"],
89
+ version: "1.0.0",
90
+ updatedAt: "2026-05-10",
91
+ changelog: ["Initial release"],
92
+ status: "free",
93
+ difficulty: "beginner",
94
+ frameworks: ["nextjs", "react", "vite"],
95
+ dependencies: [],
96
+ files: [{ path: "components/core/label.tsx", type: "block" }],
97
+ tokens: ["foreground", "muted-foreground"],
98
+ supportsDarkMode: true,
99
+ supportsLightMode: true,
100
+ promptReady: true,
101
+ },
102
+ "card": {
103
+ slug: "card",
104
+ title: "Card",
105
+ description: "Flexible card container with header, body, and footer sections.",
106
+ category: "UI",
107
+ tags: ["card", "layout", "container"],
108
+ version: "1.0.0",
109
+ updatedAt: "2026-05-10",
110
+ changelog: ["Initial release"],
111
+ status: "free",
112
+ difficulty: "beginner",
113
+ frameworks: ["nextjs", "react", "vite"],
114
+ dependencies: [],
115
+ files: [{ path: "components/core/card.tsx", type: "block" }],
116
+ tokens: ["card", "border", "foreground", "muted-foreground"],
117
+ supportsDarkMode: true,
118
+ supportsLightMode: true,
119
+ promptReady: true,
120
+ },
121
+ "separator": {
122
+ slug: "separator",
123
+ title: "Separator",
124
+ description: "Horizontal or vertical divider line with accessible semantics.",
125
+ category: "UI",
126
+ tags: ["separator", "divider", "layout"],
127
+ version: "1.0.0",
128
+ updatedAt: "2026-05-10",
129
+ changelog: ["Initial release"],
130
+ status: "free",
131
+ difficulty: "beginner",
132
+ frameworks: ["nextjs", "react", "vite"],
133
+ dependencies: [],
134
+ files: [{ path: "components/core/separator.tsx", type: "block" }],
135
+ tokens: ["border"],
136
+ supportsDarkMode: true,
137
+ supportsLightMode: true,
138
+ promptReady: true,
139
+ },
140
+ "skeleton": {
141
+ slug: "skeleton",
142
+ title: "Skeleton",
143
+ description: "Animated placeholder for loading states with size variants.",
144
+ category: "UI",
145
+ tags: ["skeleton", "loading", "placeholder"],
146
+ version: "1.0.0",
147
+ updatedAt: "2026-05-10",
148
+ changelog: ["Initial release"],
149
+ status: "free",
150
+ difficulty: "beginner",
151
+ frameworks: ["nextjs", "react", "vite"],
152
+ dependencies: [],
153
+ files: [{ path: "components/core/skeleton.tsx", type: "block" }],
154
+ tokens: ["surface-2"],
155
+ supportsDarkMode: true,
156
+ supportsLightMode: true,
157
+ promptReady: true,
158
+ },
159
+ "spinner": {
160
+ slug: "spinner",
161
+ title: "Spinner",
162
+ description: "SVG loading spinner with size and color variants.",
163
+ category: "UI",
164
+ tags: ["spinner", "loading", "animation"],
165
+ version: "1.0.0",
166
+ updatedAt: "2026-05-10",
167
+ changelog: ["Initial release"],
168
+ status: "free",
169
+ difficulty: "beginner",
170
+ frameworks: ["nextjs", "react", "vite"],
171
+ dependencies: [],
172
+ files: [{ path: "components/core/spinner.tsx", type: "block" }],
173
+ tokens: ["foreground", "muted-foreground", "primary"],
174
+ supportsDarkMode: true,
175
+ supportsLightMode: true,
176
+ promptReady: true,
177
+ },
178
+ "alert": {
179
+ slug: "alert",
180
+ title: "Alert",
181
+ description: "Inline status message with semantic variants and icon slot.",
182
+ category: "UI",
183
+ tags: ["alert", "status", "feedback"],
184
+ version: "1.0.0",
185
+ updatedAt: "2026-05-10",
186
+ changelog: ["Initial release"],
187
+ status: "free",
188
+ difficulty: "beginner",
189
+ frameworks: ["nextjs", "react", "vite"],
190
+ dependencies: [],
191
+ files: [{ path: "components/core/alert.tsx", type: "block" }],
192
+ tokens: ["border", "foreground", "muted-foreground"],
193
+ supportsDarkMode: true,
194
+ supportsLightMode: true,
195
+ promptReady: true,
196
+ },
197
+ "aspect-ratio": {
198
+ slug: "aspect-ratio",
199
+ title: "Aspect Ratio",
200
+ description: "Maintains a consistent width-to-height ratio for media elements.",
201
+ category: "UI",
202
+ tags: ["aspect-ratio", "media", "layout"],
203
+ version: "1.0.0",
204
+ updatedAt: "2026-05-10",
205
+ changelog: ["Initial release"],
206
+ status: "free",
207
+ difficulty: "beginner",
208
+ frameworks: ["nextjs", "react", "vite"],
209
+ dependencies: [],
210
+ files: [{ path: "components/core/aspect-ratio.tsx", type: "block" }],
211
+ tokens: [],
212
+ supportsDarkMode: true,
213
+ supportsLightMode: true,
214
+ promptReady: true,
215
+ },
216
+ "table": {
217
+ slug: "table",
218
+ title: "Table",
219
+ description: "Semantic HTML table with styled header, body, and footer sections.",
220
+ category: "UI",
221
+ tags: ["table", "data", "layout"],
222
+ version: "1.0.0",
223
+ updatedAt: "2026-05-10",
224
+ changelog: ["Initial release"],
225
+ status: "free",
226
+ difficulty: "beginner",
227
+ frameworks: ["nextjs", "react", "vite"],
228
+ dependencies: [],
229
+ files: [{ path: "components/core/table.tsx", type: "block" }],
230
+ tokens: ["border", "foreground", "muted-foreground", "surface-2"],
231
+ supportsDarkMode: true,
232
+ supportsLightMode: true,
233
+ promptReady: true,
234
+ },
235
+ "button-group": {
236
+ slug: "button-group",
237
+ title: "Button Group",
238
+ description: "Groups related buttons with collapsed borders for a unified look.",
239
+ category: "UI",
240
+ tags: ["button", "group", "layout"],
241
+ version: "1.0.0",
242
+ updatedAt: "2026-05-10",
243
+ changelog: ["Initial release"],
244
+ status: "free",
245
+ difficulty: "beginner",
246
+ frameworks: ["nextjs", "react", "vite"],
247
+ dependencies: [],
248
+ files: [{ path: "components/core/button-group.tsx", type: "block" }],
249
+ tokens: ["border"],
250
+ supportsDarkMode: true,
251
+ supportsLightMode: true,
252
+ promptReady: true,
253
+ },
254
+ "breadcrumb": {
255
+ slug: "breadcrumb",
256
+ title: "Breadcrumb",
257
+ description: "Hierarchical navigation trail with separator and ellipsis support.",
258
+ category: "UI",
259
+ tags: ["breadcrumb", "navigation", "layout"],
260
+ version: "1.0.0",
261
+ updatedAt: "2026-05-10",
262
+ changelog: ["Initial release"],
263
+ status: "free",
264
+ difficulty: "beginner",
265
+ frameworks: ["nextjs", "react", "vite"],
266
+ dependencies: ["lucide-react"],
267
+ files: [{ path: "components/core/breadcrumb.tsx", type: "block" }],
268
+ tokens: ["foreground", "muted-foreground"],
269
+ supportsDarkMode: true,
270
+ supportsLightMode: true,
271
+ promptReady: true,
272
+ },
273
+
274
+ // ─── Interactive UI ───────────────────────────────────────────────────────
275
+
276
+ "checkbox": {
277
+ slug: "checkbox",
278
+ title: "Checkbox",
279
+ description: "Accessible checkbox with indeterminate state and size variants.",
280
+ category: "UI",
281
+ tags: ["checkbox", "form", "input"],
282
+ version: "1.0.0",
283
+ updatedAt: "2026-05-10",
284
+ changelog: ["Initial release"],
285
+ status: "free",
286
+ difficulty: "beginner",
287
+ frameworks: ["nextjs", "react", "vite"],
288
+ dependencies: [],
289
+ files: [{ path: "components/core/checkbox.tsx", type: "block" }],
290
+ tokens: ["border", "primary", "foreground"],
291
+ supportsDarkMode: true,
292
+ supportsLightMode: true,
293
+ promptReady: true,
294
+ },
295
+ "switch": {
296
+ slug: "switch",
297
+ title: "Switch",
298
+ description: "Toggle switch for boolean settings with size and color variants.",
299
+ category: "UI",
300
+ tags: ["switch", "toggle", "form"],
301
+ version: "1.0.0",
302
+ updatedAt: "2026-05-10",
303
+ changelog: ["Initial release"],
304
+ status: "free",
305
+ difficulty: "beginner",
306
+ frameworks: ["nextjs", "react", "vite"],
307
+ dependencies: [],
308
+ files: [{ path: "components/core/switch.tsx", type: "block" }],
309
+ tokens: ["border", "primary", "surface-2"],
310
+ supportsDarkMode: true,
311
+ supportsLightMode: true,
312
+ promptReady: true,
313
+ },
314
+ "slider": {
315
+ slug: "slider",
316
+ title: "Slider",
317
+ description: "Range input with track, thumb, and step support. Keyboard accessible.",
318
+ category: "UI",
319
+ tags: ["slider", "range", "form"],
320
+ version: "1.0.0",
321
+ updatedAt: "2026-05-10",
322
+ changelog: ["Initial release"],
323
+ status: "free",
324
+ difficulty: "beginner",
325
+ frameworks: ["nextjs", "react", "vite"],
326
+ dependencies: [],
327
+ files: [{ path: "components/core/slider.tsx", type: "block" }],
328
+ tokens: ["border", "primary", "surface-2"],
329
+ supportsDarkMode: true,
330
+ supportsLightMode: true,
331
+ promptReady: true,
332
+ },
333
+ "progress": {
334
+ slug: "progress",
335
+ title: "Progress",
336
+ description: "Progress bar with size and semantic variant support.",
337
+ category: "UI",
338
+ tags: ["progress", "loading", "feedback"],
339
+ version: "1.0.0",
340
+ updatedAt: "2026-05-10",
341
+ changelog: ["Initial release"],
342
+ status: "free",
343
+ difficulty: "beginner",
344
+ frameworks: ["nextjs", "react", "vite"],
345
+ dependencies: [],
346
+ files: [{ path: "components/core/progress.tsx", type: "block" }],
347
+ tokens: ["surface-2", "primary"],
348
+ supportsDarkMode: true,
349
+ supportsLightMode: true,
350
+ promptReady: true,
351
+ },
352
+ "toggle": {
353
+ slug: "toggle",
354
+ title: "Toggle",
355
+ description: "Two-state button with pressed/unpressed states and three variants.",
356
+ category: "UI",
357
+ tags: ["toggle", "button", "form"],
358
+ version: "1.0.0",
359
+ updatedAt: "2026-05-10",
360
+ changelog: ["Initial release"],
361
+ status: "free",
362
+ difficulty: "beginner",
363
+ frameworks: ["nextjs", "react", "vite"],
364
+ dependencies: [],
365
+ files: [{ path: "components/core/toggle.tsx", type: "block" }],
366
+ tokens: ["border", "surface-2", "foreground", "primary"],
367
+ supportsDarkMode: true,
368
+ supportsLightMode: true,
369
+ promptReady: true,
370
+ },
371
+ "radio-group": {
372
+ slug: "radio-group",
373
+ title: "Radio Group",
374
+ description: "Keyboard-navigable radio button group with size variants.",
375
+ category: "UI",
376
+ tags: ["radio", "form", "input"],
377
+ version: "1.0.0",
378
+ updatedAt: "2026-05-10",
379
+ changelog: ["Initial release"],
380
+ status: "free",
381
+ difficulty: "beginner",
382
+ frameworks: ["nextjs", "react", "vite"],
383
+ dependencies: [],
384
+ files: [{ path: "components/core/radio-group.tsx", type: "block" }],
385
+ tokens: ["border", "primary", "foreground"],
386
+ supportsDarkMode: true,
387
+ supportsLightMode: true,
388
+ promptReady: true,
389
+ },
390
+ "tabs": {
391
+ slug: "tabs",
392
+ title: "Tabs",
393
+ description: "Layered sections of content controlled by a tab list. Full keyboard navigation.",
394
+ category: "UI",
395
+ tags: ["tabs", "navigation", "layout"],
396
+ version: "1.0.0",
397
+ updatedAt: "2026-05-10",
398
+ changelog: ["Initial release"],
399
+ status: "free",
400
+ difficulty: "beginner",
401
+ frameworks: ["nextjs", "react", "vite"],
402
+ dependencies: [],
403
+ files: [{ path: "components/core/tabs.tsx", type: "block" }],
404
+ tokens: ["border", "surface-2", "foreground", "muted-foreground"],
405
+ supportsDarkMode: true,
406
+ supportsLightMode: true,
407
+ promptReady: true,
408
+ },
409
+ "accordion": {
410
+ slug: "accordion",
411
+ title: "Accordion",
412
+ description: "Vertically stacked expandable sections with smooth animation.",
413
+ category: "UI",
414
+ tags: ["accordion", "collapse", "layout"],
415
+ version: "1.0.0",
416
+ updatedAt: "2026-05-10",
417
+ changelog: ["Initial release"],
418
+ status: "free",
419
+ difficulty: "beginner",
420
+ frameworks: ["nextjs", "react", "vite"],
421
+ dependencies: ["lucide-react"],
422
+ files: [{ path: "components/core/accordion.tsx", type: "block" }],
423
+ tokens: ["border", "foreground", "muted-foreground"],
424
+ supportsDarkMode: true,
425
+ supportsLightMode: true,
426
+ promptReady: true,
427
+ },
428
+ "collapsible": {
429
+ slug: "collapsible",
430
+ title: "Collapsible",
431
+ description: "Single toggle section with open/close animation. Primitive for Accordion.",
432
+ category: "UI",
433
+ tags: ["collapsible", "toggle", "layout"],
434
+ version: "1.0.0",
435
+ updatedAt: "2026-05-10",
436
+ changelog: ["Initial release"],
437
+ status: "free",
438
+ difficulty: "beginner",
439
+ frameworks: ["nextjs", "react", "vite"],
440
+ dependencies: [],
441
+ files: [{ path: "components/core/collapsible.tsx", type: "block" }],
442
+ tokens: [],
443
+ supportsDarkMode: true,
444
+ supportsLightMode: true,
445
+ promptReady: true,
446
+ },
447
+ "avatar": {
448
+ slug: "avatar",
449
+ title: "Avatar",
450
+ description: "User avatar with image, fallback initials, and size variants.",
451
+ category: "UI",
452
+ tags: ["avatar", "user", "image"],
453
+ version: "1.0.0",
454
+ updatedAt: "2026-05-10",
455
+ changelog: ["Initial release"],
456
+ status: "free",
457
+ difficulty: "beginner",
458
+ frameworks: ["nextjs", "react", "vite"],
459
+ dependencies: [],
460
+ files: [{ path: "components/core/avatar.tsx", type: "block" }],
461
+ tokens: ["surface-2", "foreground"],
462
+ supportsDarkMode: true,
463
+ supportsLightMode: true,
464
+ promptReady: true,
465
+ },
466
+
467
+ // ─── Overlay & Floating ───────────────────────────────────────────────────
468
+
469
+ "dialog": {
470
+ slug: "dialog",
471
+ title: "Dialog",
472
+ description: "Accessible modal dialog with overlay, close button, header, and footer.",
473
+ category: "UI",
474
+ tags: ["dialog", "modal", "overlay"],
475
+ version: "1.0.0",
476
+ updatedAt: "2026-05-10",
477
+ changelog: ["Initial release"],
478
+ status: "free",
479
+ difficulty: "beginner",
480
+ frameworks: ["nextjs", "react", "vite"],
481
+ dependencies: ["lucide-react"],
482
+ files: [{ path: "components/core/dialog.tsx", type: "block" }],
483
+ tokens: ["card", "border", "foreground", "muted-foreground"],
484
+ supportsDarkMode: true,
485
+ supportsLightMode: true,
486
+ promptReady: true,
487
+ },
488
+ "alert-dialog": {
489
+ slug: "alert-dialog",
490
+ title: "Alert Dialog",
491
+ description: "Confirmation dialog that interrupts the user flow for destructive actions.",
492
+ category: "UI",
493
+ tags: ["dialog", "confirm", "destructive", "overlay"],
494
+ version: "1.0.0",
495
+ updatedAt: "2026-05-10",
496
+ changelog: ["Initial release"],
497
+ status: "free",
498
+ difficulty: "beginner",
499
+ frameworks: ["nextjs", "react", "vite"],
500
+ dependencies: [],
501
+ files: [{ path: "components/core/alert-dialog.tsx", type: "block" }],
502
+ tokens: ["card", "border", "foreground", "muted-foreground"],
503
+ supportsDarkMode: true,
504
+ supportsLightMode: true,
505
+ promptReady: true,
506
+ },
507
+ "drawer": {
508
+ slug: "drawer",
509
+ title: "Drawer",
510
+ description: "Bottom sheet drawer with safe area support and smooth animation.",
511
+ category: "UI",
512
+ tags: ["drawer", "sheet", "overlay", "mobile"],
513
+ version: "1.0.0",
514
+ updatedAt: "2026-05-10",
515
+ changelog: ["Initial release"],
516
+ status: "free",
517
+ difficulty: "beginner",
518
+ frameworks: ["nextjs", "react", "vite"],
519
+ dependencies: ["lucide-react"],
520
+ files: [{ path: "components/core/drawer.tsx", type: "block" }],
521
+ tokens: ["card", "border", "foreground", "muted-foreground"],
522
+ supportsDarkMode: true,
523
+ supportsLightMode: true,
524
+ promptReady: true,
525
+ },
526
+ "sheet": {
527
+ slug: "sheet",
528
+ title: "Sheet",
529
+ description: "Slide-in panel from any edge (top, right, bottom, left).",
530
+ category: "UI",
531
+ tags: ["sheet", "panel", "overlay"],
532
+ version: "1.0.0",
533
+ updatedAt: "2026-05-10",
534
+ changelog: ["Initial release"],
535
+ status: "free",
536
+ difficulty: "beginner",
537
+ frameworks: ["nextjs", "react", "vite"],
538
+ dependencies: ["lucide-react"],
539
+ files: [{ path: "components/core/sheet.tsx", type: "block" }],
540
+ tokens: ["card", "border", "foreground", "muted-foreground"],
541
+ supportsDarkMode: true,
542
+ supportsLightMode: true,
543
+ promptReady: true,
544
+ },
545
+ "popover": {
546
+ slug: "popover",
547
+ title: "Popover",
548
+ description: "Floating panel anchored to a trigger with focus management and Escape-to-close.",
549
+ category: "UI",
550
+ tags: ["popover", "floating", "overlay"],
551
+ version: "1.0.0",
552
+ updatedAt: "2026-05-10",
553
+ changelog: ["Initial release"],
554
+ status: "free",
555
+ difficulty: "beginner",
556
+ frameworks: ["nextjs", "react", "vite"],
557
+ dependencies: [],
558
+ files: [{ path: "components/core/popover.tsx", type: "block" }],
559
+ tokens: ["card", "border"],
560
+ supportsDarkMode: true,
561
+ supportsLightMode: true,
562
+ promptReady: true,
563
+ },
564
+ "hover-card": {
565
+ slug: "hover-card",
566
+ title: "Hover Card",
567
+ description: "Rich preview card that appears on hover with configurable delay.",
568
+ category: "UI",
569
+ tags: ["hover-card", "preview", "floating"],
570
+ version: "1.0.0",
571
+ updatedAt: "2026-05-10",
572
+ changelog: ["Initial release"],
573
+ status: "free",
574
+ difficulty: "beginner",
575
+ frameworks: ["nextjs", "react", "vite"],
576
+ dependencies: [],
577
+ files: [{ path: "components/core/hover-card.tsx", type: "block" }],
578
+ tokens: ["card", "border"],
579
+ supportsDarkMode: true,
580
+ supportsLightMode: true,
581
+ promptReady: true,
582
+ },
583
+ "tooltip": {
584
+ slug: "tooltip",
585
+ title: "Tooltip",
586
+ description: "Accessible label popup triggered by hover or focus.",
587
+ category: "UI",
588
+ tags: ["tooltip", "label", "floating"],
589
+ version: "1.0.0",
590
+ updatedAt: "2026-05-10",
591
+ changelog: ["Initial release"],
592
+ status: "free",
593
+ difficulty: "beginner",
594
+ frameworks: ["nextjs", "react", "vite"],
595
+ dependencies: [],
596
+ files: [{ path: "components/core/tooltip.tsx", type: "block" }],
597
+ tokens: ["card", "border", "foreground"],
598
+ supportsDarkMode: true,
599
+ supportsLightMode: true,
600
+ promptReady: true,
601
+ },
602
+ "scroll-area": {
603
+ slug: "scroll-area",
604
+ title: "Scroll Area",
605
+ description: "Custom-styled scrollable container with consistent cross-browser scrollbars.",
606
+ category: "UI",
607
+ tags: ["scroll", "overflow", "layout"],
608
+ version: "1.0.0",
609
+ updatedAt: "2026-05-10",
610
+ changelog: ["Initial release"],
611
+ status: "free",
612
+ difficulty: "beginner",
613
+ frameworks: ["nextjs", "react", "vite"],
614
+ dependencies: [],
615
+ files: [{ path: "components/core/scroll-area.tsx", type: "block" }],
616
+ tokens: ["border"],
617
+ supportsDarkMode: true,
618
+ supportsLightMode: true,
619
+ promptReady: true,
620
+ },
621
+
622
+ // ─── Menu & Navigation ────────────────────────────────────────────────────
623
+
624
+ "dropdown-menu": {
625
+ slug: "dropdown-menu",
626
+ title: "Dropdown Menu",
627
+ description: "Trigger-anchored menu with icons, submenus, checkboxes, and radio groups.",
628
+ category: "UI",
629
+ tags: ["dropdown", "menu", "navigation"],
630
+ version: "1.0.0",
631
+ updatedAt: "2026-05-10",
632
+ changelog: ["Initial release"],
633
+ status: "free",
634
+ difficulty: "intermediate",
635
+ frameworks: ["nextjs", "react", "vite"],
636
+ dependencies: ["lucide-react"],
637
+ files: [{ path: "components/core/dropdown-menu.tsx", type: "block" }],
638
+ tokens: ["card", "border", "foreground", "muted-foreground", "surface-2"],
639
+ supportsDarkMode: true,
640
+ supportsLightMode: true,
641
+ promptReady: true,
642
+ },
643
+ "context-menu": {
644
+ slug: "context-menu",
645
+ title: "Context Menu",
646
+ description: "Right-click contextual menu with submenus, checkboxes, and keyboard shortcuts.",
647
+ category: "UI",
648
+ tags: ["context-menu", "right-click", "menu"],
649
+ version: "1.0.0",
650
+ updatedAt: "2026-05-10",
651
+ changelog: ["Initial release"],
652
+ status: "free",
653
+ difficulty: "intermediate",
654
+ frameworks: ["nextjs", "react", "vite"],
655
+ dependencies: ["lucide-react"],
656
+ files: [{ path: "components/core/context-menu.tsx", type: "block" }],
657
+ tokens: ["card", "border", "foreground", "muted-foreground", "surface-2"],
658
+ supportsDarkMode: true,
659
+ supportsLightMode: true,
660
+ promptReady: true,
661
+ },
662
+ "select": {
663
+ slug: "select",
664
+ title: "Select",
665
+ description: "Accessible single-value select with groups, search, and custom trigger.",
666
+ category: "UI",
667
+ tags: ["select", "dropdown", "form"],
668
+ version: "1.0.0",
669
+ updatedAt: "2026-05-10",
670
+ changelog: ["Initial release"],
671
+ status: "free",
672
+ difficulty: "intermediate",
673
+ frameworks: ["nextjs", "react", "vite"],
674
+ dependencies: ["lucide-react"],
675
+ files: [{ path: "components/core/select.tsx", type: "block" }],
676
+ tokens: ["border", "surface-2", "card", "foreground", "muted-foreground"],
677
+ supportsDarkMode: true,
678
+ supportsLightMode: true,
679
+ promptReady: true,
680
+ },
681
+ "native-select": {
682
+ slug: "native-select",
683
+ title: "Native Select",
684
+ description: "Styled native <select> element that respects platform conventions.",
685
+ category: "UI",
686
+ tags: ["select", "form", "native"],
687
+ version: "1.0.0",
688
+ updatedAt: "2026-05-10",
689
+ changelog: ["Initial release"],
690
+ status: "free",
691
+ difficulty: "beginner",
692
+ frameworks: ["nextjs", "react", "vite"],
693
+ dependencies: ["lucide-react"],
694
+ files: [{ path: "components/core/native-select.tsx", type: "block" }],
695
+ tokens: ["border", "surface-2", "foreground", "muted-foreground"],
696
+ supportsDarkMode: true,
697
+ supportsLightMode: true,
698
+ promptReady: true,
699
+ },
700
+
701
+ // ─── Complex Interactive ──────────────────────────────────────────────────
702
+
703
+ "combobox": {
704
+ slug: "combobox",
705
+ title: "Combobox",
706
+ description: "Searchable single-value selector with keyboard navigation and async support.",
707
+ category: "UI",
708
+ tags: ["combobox", "search", "select", "form"],
709
+ version: "1.0.0",
710
+ updatedAt: "2026-05-10",
711
+ changelog: ["Initial release"],
712
+ status: "free",
713
+ difficulty: "intermediate",
714
+ frameworks: ["nextjs", "react", "vite"],
715
+ dependencies: ["lucide-react"],
716
+ files: [{ path: "components/core/combobox.tsx", type: "block" }],
717
+ tokens: ["border", "surface-2", "card", "foreground", "muted-foreground"],
718
+ supportsDarkMode: true,
719
+ supportsLightMode: true,
720
+ promptReady: true,
721
+ },
722
+ "multi-select": {
723
+ slug: "multi-select",
724
+ title: "Multi Select",
725
+ description: "Multi-value selector with tag chips, overflow count, and keyboard accessibility.",
726
+ category: "UI",
727
+ tags: ["select", "multi", "form", "tags"],
728
+ version: "1.0.0",
729
+ updatedAt: "2026-05-10",
730
+ changelog: ["Initial release"],
731
+ status: "free",
732
+ difficulty: "intermediate",
733
+ frameworks: ["nextjs", "react", "vite"],
734
+ dependencies: ["lucide-react"],
735
+ files: [{ path: "components/core/multi-select.tsx", type: "block" }],
736
+ tokens: ["border", "surface-2", "card", "foreground", "muted-foreground"],
737
+ supportsDarkMode: true,
738
+ supportsLightMode: true,
739
+ promptReady: true,
740
+ },
741
+ "command": {
742
+ slug: "command",
743
+ title: "Command",
744
+ description: "Command palette with search, groups, and keyboard shortcuts.",
745
+ category: "UI",
746
+ tags: ["command", "search", "palette", "keyboard"],
747
+ version: "1.0.0",
748
+ updatedAt: "2026-05-10",
749
+ changelog: ["Initial release"],
750
+ status: "free",
751
+ difficulty: "intermediate",
752
+ frameworks: ["nextjs", "react", "vite"],
753
+ dependencies: ["lucide-react"],
754
+ files: [{ path: "components/core/command.tsx", type: "block" }],
755
+ tokens: ["card", "border", "foreground", "muted-foreground", "surface-2"],
756
+ supportsDarkMode: true,
757
+ supportsLightMode: true,
758
+ promptReady: true,
759
+ },
760
+ "command-box": {
761
+ slug: "command-box",
762
+ title: "Command Box",
763
+ description: "Floating command palette trigger with shareable source display.",
764
+ category: "UI",
765
+ tags: ["command", "palette", "floating"],
766
+ version: "1.0.0",
767
+ updatedAt: "2026-05-10",
768
+ changelog: ["Initial release"],
769
+ status: "free",
770
+ difficulty: "intermediate",
771
+ frameworks: ["nextjs", "react", "vite"],
772
+ dependencies: [],
773
+ files: [
774
+ { path: "components/core/command-box.tsx", type: "block" },
775
+ { path: "components/core/copy-button.tsx", type: "block" },
776
+ ],
777
+ tokens: ["card", "border", "foreground", "muted-foreground"],
778
+ supportsDarkMode: true,
779
+ supportsLightMode: true,
780
+ promptReady: true,
781
+ },
782
+ "date-picker": {
783
+ slug: "date-picker",
784
+ title: "Date Picker",
785
+ description: "Popover date picker backed by the StampUI calendar. No external date library required.",
786
+ category: "UI",
787
+ tags: ["date", "picker", "calendar", "form"],
788
+ version: "1.0.0",
789
+ updatedAt: "2026-05-10",
790
+ changelog: ["Initial release"],
791
+ status: "free",
792
+ difficulty: "intermediate",
793
+ frameworks: ["nextjs", "react", "vite"],
794
+ dependencies: ["lucide-react"],
795
+ files: [
796
+ { path: "components/core/date-picker.tsx", type: "block" },
797
+ { path: "components/core/calendar.tsx", type: "block" },
798
+ ],
799
+ tokens: ["border", "surface-2", "card", "foreground", "muted-foreground", "primary"],
800
+ supportsDarkMode: true,
801
+ supportsLightMode: true,
802
+ promptReady: true,
803
+ },
804
+ "field": {
805
+ slug: "field",
806
+ title: "Field",
807
+ description: "Composable field wrapper with label, hint, and error message for accessible forms.",
808
+ category: "UI",
809
+ tags: ["field", "form", "label", "accessibility"],
810
+ version: "1.0.0",
811
+ updatedAt: "2026-05-10",
812
+ changelog: ["Initial release"],
813
+ status: "free",
814
+ difficulty: "beginner",
815
+ frameworks: ["nextjs", "react", "vite"],
816
+ dependencies: [],
817
+ files: [{ path: "components/core/field.tsx", type: "block" }],
818
+ tokens: ["foreground", "muted-foreground"],
819
+ supportsDarkMode: true,
820
+ supportsLightMode: true,
821
+ promptReady: true,
822
+ },
823
+ "input-group": {
824
+ slug: "input-group",
825
+ title: "Input Group",
826
+ description: "Combines an input with prefix/suffix addons for units, icons, or actions.",
827
+ category: "UI",
828
+ tags: ["input", "group", "addon", "form"],
829
+ version: "1.0.0",
830
+ updatedAt: "2026-05-10",
831
+ changelog: ["Initial release"],
832
+ status: "free",
833
+ difficulty: "beginner",
834
+ frameworks: ["nextjs", "react", "vite"],
835
+ dependencies: [],
836
+ files: [{ path: "components/core/input-group.tsx", type: "block" }],
837
+ tokens: ["border", "surface-2", "foreground", "muted-foreground"],
838
+ supportsDarkMode: true,
839
+ supportsLightMode: true,
840
+ promptReady: true,
841
+ },
842
+ "toggle-group": {
843
+ slug: "toggle-group",
844
+ title: "Toggle Group",
845
+ description: "Connected toggle buttons for single or multiple selection.",
846
+ category: "UI",
847
+ tags: ["toggle", "group", "selection", "form"],
848
+ version: "1.0.0",
849
+ updatedAt: "2026-05-10",
850
+ changelog: ["Initial release"],
851
+ status: "free",
852
+ difficulty: "beginner",
853
+ frameworks: ["nextjs", "react", "vite"],
854
+ dependencies: [],
855
+ files: [
856
+ { path: "components/core/toggle-group.tsx", type: "block" },
857
+ { path: "components/core/toggle.tsx", type: "block" },
858
+ ],
859
+ tokens: ["border", "surface-2", "foreground", "primary"],
860
+ supportsDarkMode: true,
861
+ supportsLightMode: true,
862
+ promptReady: true,
863
+ },
864
+ "copy-button": {
865
+ slug: "copy-button",
866
+ title: "Copy Button",
867
+ description: "Icon button that copies text to clipboard with animated confirmation.",
868
+ category: "UI",
869
+ tags: ["copy", "clipboard", "button"],
870
+ version: "1.0.0",
871
+ updatedAt: "2026-05-10",
872
+ changelog: ["Initial release"],
873
+ status: "free",
874
+ difficulty: "beginner",
875
+ frameworks: ["nextjs", "react", "vite"],
876
+ dependencies: ["lucide-react"],
877
+ files: [{ path: "components/core/copy-button.tsx", type: "block" }],
878
+ tokens: ["muted-foreground", "foreground"],
879
+ supportsDarkMode: true,
880
+ supportsLightMode: true,
881
+ promptReady: true,
882
+ },
883
+ "resizable": {
884
+ slug: "resizable",
885
+ title: "Resizable",
886
+ description: "Drag-to-resize panel layout with horizontal and vertical split support.",
887
+ category: "UI",
888
+ tags: ["resizable", "panels", "layout", "drag"],
889
+ version: "1.0.0",
890
+ updatedAt: "2026-05-10",
891
+ changelog: ["Initial release"],
892
+ status: "free",
893
+ difficulty: "intermediate",
894
+ frameworks: ["nextjs", "react", "vite"],
895
+ dependencies: [],
896
+ files: [{ path: "components/core/resizable.tsx", type: "block" }],
897
+ tokens: ["border", "surface-2"],
898
+ supportsDarkMode: true,
899
+ supportsLightMode: true,
900
+ promptReady: true,
901
+ },
902
+ "sonner": {
903
+ slug: "sonner",
904
+ title: "Sonner",
905
+ description: "Toast notification system with dark mode and queue support.",
906
+ category: "UI",
907
+ tags: ["toast", "notification", "feedback"],
908
+ version: "1.0.0",
909
+ updatedAt: "2026-05-10",
910
+ changelog: ["Initial release"],
911
+ status: "free",
912
+ difficulty: "beginner",
913
+ frameworks: ["nextjs", "react"],
914
+ dependencies: ["sonner", "next-themes"],
915
+ files: [{ path: "components/core/sonner.tsx", type: "block" }],
916
+ tokens: ["background", "border", "foreground"],
917
+ supportsDarkMode: true,
918
+ supportsLightMode: true,
919
+ promptReady: true,
920
+ },
921
+
922
+ // ─── Strategic / Original ─────────────────────────────────────────────────
923
+
924
+ "calendar": {
925
+ slug: "calendar",
926
+ title: "Calendar",
927
+ description: "Full-featured month calendar with navigation, range selection, and no date library dependency.",
928
+ category: "UI",
929
+ tags: ["calendar", "date", "picker"],
930
+ version: "1.0.0",
931
+ updatedAt: "2026-05-10",
932
+ changelog: ["Initial release"],
933
+ status: "new",
934
+ difficulty: "intermediate",
935
+ frameworks: ["nextjs", "react", "vite"],
936
+ dependencies: ["lucide-react"],
937
+ files: [{ path: "components/core/calendar.tsx", type: "block" }],
938
+ tokens: ["background", "border", "foreground", "muted-foreground", "primary", "surface-2"],
939
+ supportsDarkMode: true,
940
+ supportsLightMode: true,
941
+ promptReady: true,
942
+ },
943
+ "carousel": {
944
+ slug: "carousel",
945
+ title: "Carousel",
946
+ description: "Touch and drag carousel with dot navigation and auto-play.",
947
+ category: "UI",
948
+ tags: ["carousel", "slider", "gallery"],
949
+ version: "1.0.0",
950
+ updatedAt: "2026-05-10",
951
+ changelog: ["Initial release"],
952
+ status: "new",
953
+ difficulty: "intermediate",
954
+ frameworks: ["nextjs", "react", "vite"],
955
+ dependencies: ["lucide-react"],
956
+ files: [{ path: "components/core/carousel.tsx", type: "block" }],
957
+ tokens: ["foreground", "muted-foreground", "border"],
958
+ supportsDarkMode: true,
959
+ supportsLightMode: true,
960
+ promptReady: true,
961
+ },
962
+ "chart": {
963
+ slug: "chart",
964
+ title: "Chart",
965
+ description: "Composable chart system with line, bar, and area types. No Recharts dependency.",
966
+ category: "UI",
967
+ tags: ["chart", "graph", "data", "visualization"],
968
+ version: "1.0.0",
969
+ updatedAt: "2026-05-10",
970
+ changelog: ["Initial release"],
971
+ status: "new",
972
+ difficulty: "intermediate",
973
+ frameworks: ["nextjs", "react", "vite"],
974
+ dependencies: [],
975
+ files: [{ path: "components/core/chart.tsx", type: "block" }],
976
+ tokens: ["foreground", "muted-foreground", "border", "primary"],
977
+ supportsDarkMode: true,
978
+ supportsLightMode: true,
979
+ promptReady: true,
980
+ },
981
+ "data-table": {
982
+ slug: "data-table",
983
+ title: "Data Table",
984
+ description: "Sortable, searchable, paginated data table with column pinning and row selection.",
985
+ category: "UI",
986
+ tags: ["table", "data", "sort", "filter", "pagination"],
987
+ version: "1.0.0",
988
+ updatedAt: "2026-05-10",
989
+ changelog: ["Initial release"],
990
+ status: "new",
991
+ difficulty: "advanced",
992
+ frameworks: ["nextjs", "react", "vite"],
993
+ dependencies: ["lucide-react"],
994
+ files: [{ path: "components/core/data-table.tsx", type: "block" }],
995
+ tokens: ["border", "surface-2", "foreground", "muted-foreground", "primary"],
996
+ supportsDarkMode: true,
997
+ supportsLightMode: true,
998
+ promptReady: true,
999
+ },
1000
+ "file-upload": {
1001
+ slug: "file-upload",
1002
+ title: "File Upload",
1003
+ description: "Drag-and-drop file upload with preview, validation, and progress display.",
1004
+ category: "UI",
1005
+ tags: ["file", "upload", "drag-drop", "form"],
1006
+ version: "1.0.0",
1007
+ updatedAt: "2026-05-10",
1008
+ changelog: ["Initial release"],
1009
+ status: "new",
1010
+ difficulty: "intermediate",
1011
+ frameworks: ["nextjs", "react", "vite"],
1012
+ dependencies: ["lucide-react"],
1013
+ files: [{ path: "components/core/file-upload.tsx", type: "block" }],
1014
+ tokens: ["border", "surface-2", "foreground", "muted-foreground", "primary"],
1015
+ supportsDarkMode: true,
1016
+ supportsLightMode: true,
1017
+ promptReady: true,
1018
+ },
1019
+ "stepper": {
1020
+ slug: "stepper",
1021
+ title: "Stepper",
1022
+ description: "Multi-step wizard flow with horizontal and vertical orientation.",
1023
+ category: "UI",
1024
+ tags: ["stepper", "wizard", "steps", "flow"],
1025
+ version: "1.0.0",
1026
+ updatedAt: "2026-05-10",
1027
+ changelog: ["Initial release"],
1028
+ status: "new",
1029
+ difficulty: "intermediate",
1030
+ frameworks: ["nextjs", "react", "vite"],
1031
+ dependencies: ["lucide-react"],
1032
+ files: [{ path: "components/core/stepper.tsx", type: "block" }],
1033
+ tokens: ["border", "foreground", "muted-foreground", "primary"],
1034
+ supportsDarkMode: true,
1035
+ supportsLightMode: true,
1036
+ promptReady: true,
1037
+ },
1038
+ "timeline": {
1039
+ slug: "timeline",
1040
+ title: "Timeline",
1041
+ description: "Vertical event timeline with icon slots and connector lines.",
1042
+ category: "UI",
1043
+ tags: ["timeline", "events", "history"],
1044
+ version: "1.0.0",
1045
+ updatedAt: "2026-05-10",
1046
+ changelog: ["Initial release"],
1047
+ status: "new",
1048
+ difficulty: "beginner",
1049
+ frameworks: ["nextjs", "react", "vite"],
1050
+ dependencies: [],
1051
+ files: [{ path: "components/core/timeline.tsx", type: "block" }],
1052
+ tokens: ["border", "foreground", "muted-foreground"],
1053
+ supportsDarkMode: true,
1054
+ supportsLightMode: true,
1055
+ promptReady: true,
1056
+ },
1057
+ "input-otp": {
1058
+ slug: "input-otp",
1059
+ title: "Input OTP",
1060
+ description: "One-time password input with segmented slots and pattern validation.",
1061
+ category: "UI",
1062
+ tags: ["otp", "code", "input", "auth"],
1063
+ version: "1.0.0",
1064
+ updatedAt: "2026-05-10",
1065
+ changelog: ["Initial release"],
1066
+ status: "new",
1067
+ difficulty: "intermediate",
1068
+ frameworks: ["nextjs", "react", "vite"],
1069
+ dependencies: [],
1070
+ files: [{ path: "components/core/input-otp.tsx", type: "block" }],
1071
+ tokens: ["border", "surface-2", "foreground", "primary"],
1072
+ supportsDarkMode: true,
1073
+ supportsLightMode: true,
1074
+ promptReady: true,
1075
+ },
1076
+
1077
+ // ─── Already registered ──────────────────────────────────────────────────
1078
+
1079
+ "empty": {
1080
+ slug: "empty",
1081
+ title: "Empty",
1082
+ description: "A composable empty-state component with icon slot, title, description, and action.",
1083
+ category: "UI",
1084
+ tags: ["empty", "state", "feedback", "layout"],
1085
+ version: "1.0.0",
1086
+ updatedAt: "2026-05-10",
1087
+ changelog: ["Initial release"],
1088
+ status: "free",
1089
+ difficulty: "beginner",
1090
+ frameworks: ["nextjs", "react", "vite"],
1091
+ dependencies: [],
1092
+ files: [{ path: "components/core/empty.tsx", type: "block" }],
1093
+ tokens: ["foreground", "muted-foreground", "surface-2", "border"],
1094
+ supportsDarkMode: true,
1095
+ supportsLightMode: true,
1096
+ promptReady: true,
1097
+ },
1098
+ "kbd": {
1099
+ slug: "kbd",
1100
+ title: "Kbd",
1101
+ description: "Keyboard key display with realistic shadow and size variants. Includes KeyCombo for key sequences.",
1102
+ category: "UI",
1103
+ tags: ["keyboard", "shortcut", "badge", "utility"],
1104
+ version: "1.0.0",
1105
+ updatedAt: "2026-05-10",
1106
+ changelog: ["Initial release"],
1107
+ status: "free",
1108
+ difficulty: "beginner",
1109
+ frameworks: ["nextjs", "react", "vite"],
1110
+ dependencies: [],
1111
+ files: [{ path: "components/core/kbd.tsx", type: "block" }],
1112
+ tokens: ["surface-2", "border", "muted-foreground"],
1113
+ supportsDarkMode: true,
1114
+ supportsLightMode: true,
1115
+ promptReady: true,
1116
+ },
1117
+
1118
+ // ─── Registry Blocks ─────────────────────────────────────────────────────
1119
+
1120
+ "token-stream": {
1121
+ slug: "token-stream",
1122
+ title: "Token Stream",
1123
+ description: "Animated token streaming text effect for LLM outputs.",
1124
+ category: "AI Apps",
1125
+ tags: ["ai", "animation", "text"],
1126
+ version: "1.0.0",
1127
+ updatedAt: "2026-05-09",
1128
+ changelog: ["Initial release"],
1129
+ status: "free",
1130
+ difficulty: "beginner",
1131
+ frameworks: ["nextjs", "react"],
1132
+ dependencies: [],
1133
+ files: [{ path: "components/blocks/token-stream.tsx", type: "block" }],
1134
+ tokens: ["foreground", "muted-foreground"],
1135
+ supportsDarkMode: true,
1136
+ supportsLightMode: true,
1137
+ promptReady: true,
1138
+ },
1139
+ "prompt-input": {
1140
+ slug: "prompt-input",
1141
+ title: "Prompt Input",
1142
+ description: "A robust, auto-resizing text area with submit mechanics.",
1143
+ category: "AI Apps",
1144
+ tags: ["input", "ai", "form"],
1145
+ version: "1.0.0",
1146
+ updatedAt: "2026-05-09",
1147
+ changelog: ["Initial release"],
1148
+ status: "free",
1149
+ difficulty: "beginner",
1150
+ frameworks: ["nextjs", "react"],
1151
+ dependencies: ["lucide-react"],
1152
+ files: [{ path: "components/blocks/prompt-input.tsx", type: "block" }],
1153
+ tokens: ["background", "border", "primary", "muted"],
1154
+ supportsDarkMode: true,
1155
+ supportsLightMode: true,
1156
+ promptReady: true,
1157
+ },
1158
+ "ai-chat-shell": {
1159
+ slug: "ai-chat-shell",
1160
+ title: "AI Chat Shell",
1161
+ description: "A polished chat interface shell for AI products.",
1162
+ category: "AI Apps",
1163
+ tags: ["chat", "ai", "layout", "input"],
1164
+ version: "1.0.0",
1165
+ updatedAt: "2026-05-09",
1166
+ changelog: ["Initial release"],
1167
+ status: "pro",
1168
+ licenseRequired: true,
1169
+ difficulty: "intermediate",
1170
+ frameworks: ["nextjs", "react"],
1171
+ dependencies: ["lucide-react"],
1172
+ files: [
1173
+ { path: "components/blocks/ai-chat-shell.tsx", type: "block" },
1174
+ { path: "components/blocks/prompt-input.tsx", type: "block" },
1175
+ { path: "components/blocks/token-stream.tsx", type: "block" },
1176
+ ],
1177
+ tokens: ["background", "card", "border", "primary", "accent"],
1178
+ supportsDarkMode: true,
1179
+ supportsLightMode: true,
1180
+ promptReady: true,
1181
+ },
1182
+ "pricing-section": {
1183
+ slug: "pricing-section",
1184
+ title: "Pricing Section",
1185
+ description: "A modern, data-driven pricing section for SaaS products.",
1186
+ category: "SaaS",
1187
+ tags: ["pricing", "saas", "marketing", "cards"],
1188
+ version: "1.0.0",
1189
+ updatedAt: "2026-05-09",
1190
+ changelog: ["Initial release"],
1191
+ status: "free",
1192
+ difficulty: "beginner",
1193
+ frameworks: ["nextjs", "react", "vite"],
1194
+ dependencies: ["lucide-react"],
1195
+ files: [{ path: "components/blocks/pricing-section.tsx", type: "block" }],
1196
+ tokens: ["background", "card", "border", "primary", "muted"],
1197
+ supportsDarkMode: true,
1198
+ supportsLightMode: true,
1199
+ promptReady: true,
1200
+ },
1201
+ "dashboard-shell": {
1202
+ slug: "dashboard-shell",
1203
+ title: "Dashboard Shell",
1204
+ description: "A comprehensive dashboard layout with sidebar and header.",
1205
+ category: "Dashboard",
1206
+ tags: ["layout", "sidebar", "dashboard"],
1207
+ version: "1.0.0",
1208
+ updatedAt: "2026-05-09",
1209
+ changelog: ["Initial release"],
1210
+ status: "pro",
1211
+ licenseRequired: true,
1212
+ difficulty: "intermediate",
1213
+ frameworks: ["nextjs"],
1214
+ dependencies: ["lucide-react"],
1215
+ files: [{ path: "components/blocks/dashboard-shell.tsx", type: "block" }],
1216
+ tokens: ["background", "border"],
1217
+ supportsDarkMode: true,
1218
+ supportsLightMode: true,
1219
+ promptReady: true,
1220
+ },
1221
+ "auth-panel": {
1222
+ slug: "auth-panel",
1223
+ title: "Auth Panel",
1224
+ description: "Login and registration panel with social providers.",
1225
+ category: "Auth",
1226
+ tags: ["login", "register", "auth", "saas"],
1227
+ version: "1.0.0",
1228
+ updatedAt: "2026-05-09",
1229
+ changelog: ["Initial release"],
1230
+ status: "new",
1231
+ difficulty: "intermediate",
1232
+ frameworks: ["nextjs", "react"],
1233
+ dependencies: ["lucide-react"],
1234
+ files: [{ path: "components/blocks/auth-panel.tsx", type: "block" }],
1235
+ tokens: ["background", "border"],
1236
+ supportsDarkMode: true,
1237
+ supportsLightMode: true,
1238
+ promptReady: true,
1239
+ },
1240
+ "usage-card": {
1241
+ slug: "usage-card",
1242
+ title: "Usage Card",
1243
+ description: "Display API usage and subscription limits.",
1244
+ category: "Billing",
1245
+ tags: ["billing", "usage", "dashboard"],
1246
+ version: "1.0.0",
1247
+ updatedAt: "2026-05-09",
1248
+ changelog: ["Initial release"],
1249
+ status: "free",
1250
+ difficulty: "beginner",
1251
+ frameworks: ["nextjs", "react"],
1252
+ dependencies: ["lucide-react"],
1253
+ files: [{ path: "components/blocks/usage-card.tsx", type: "block" }],
1254
+ tokens: ["background", "border"],
1255
+ supportsDarkMode: true,
1256
+ supportsLightMode: true,
1257
+ promptReady: true,
1258
+ },
1259
+ "hero-section": {
1260
+ slug: "hero-section",
1261
+ title: "Hero Section",
1262
+ description: "Full-width landing page hero with headline, subtext, primary and secondary CTAs, and optional eyebrow badge.",
1263
+ category: "Marketing",
1264
+ tags: ["hero", "landing", "cta", "marketing"],
1265
+ version: "1.0.0",
1266
+ updatedAt: "2026-05-10",
1267
+ changelog: ["Initial release"],
1268
+ status: "free",
1269
+ difficulty: "beginner",
1270
+ frameworks: ["nextjs", "react"],
1271
+ dependencies: [],
1272
+ files: [{ path: "components/blocks/hero-section.tsx", type: "block" }],
1273
+ tokens: ["foreground", "muted-foreground", "border"],
1274
+ supportsDarkMode: true,
1275
+ supportsLightMode: true,
1276
+ promptReady: true,
1277
+ },
1278
+ "feature-grid": {
1279
+ slug: "feature-grid",
1280
+ title: "Feature Grid",
1281
+ description: "Responsive icon + title + description feature grid. 2, 3, or 4 column layouts with optional eyebrow and headline.",
1282
+ category: "Marketing",
1283
+ tags: ["features", "grid", "marketing", "landing"],
1284
+ version: "1.0.0",
1285
+ updatedAt: "2026-05-10",
1286
+ changelog: ["Initial release"],
1287
+ status: "free",
1288
+ difficulty: "beginner",
1289
+ frameworks: ["nextjs", "react"],
1290
+ dependencies: [],
1291
+ files: [{ path: "components/blocks/feature-grid.tsx", type: "block" }],
1292
+ tokens: ["foreground", "muted-foreground", "border", "surface"],
1293
+ supportsDarkMode: true,
1294
+ supportsLightMode: true,
1295
+ promptReady: true,
1296
+ },
1297
+ "stats-strip": {
1298
+ slug: "stats-strip",
1299
+ title: "Stats Strip",
1300
+ description: "Animated count-up metrics row. Strip layout (bordered, full-width) or grid layout. Numbers animate on viewport entry.",
1301
+ category: "Marketing",
1302
+ tags: ["stats", "metrics", "numbers", "marketing"],
1303
+ version: "1.0.0",
1304
+ updatedAt: "2026-05-10",
1305
+ changelog: ["Initial release"],
1306
+ status: "free",
1307
+ difficulty: "beginner",
1308
+ frameworks: ["nextjs", "react"],
1309
+ dependencies: [],
1310
+ files: [{ path: "components/blocks/stats-strip.tsx", type: "block" }],
1311
+ tokens: ["foreground", "muted-foreground", "border", "surface"],
1312
+ supportsDarkMode: true,
1313
+ supportsLightMode: true,
1314
+ promptReady: true,
1315
+ },
1316
+ "settings-layout": {
1317
+ slug: "settings-layout",
1318
+ title: "Settings Layout",
1319
+ description: "Full settings page with Account, Notifications, and Security tabs. Includes form inputs, toggle switches, and password fields.",
1320
+ category: "App",
1321
+ tags: ["settings", "account", "forms", "dashboard"],
1322
+ version: "1.0.0",
1323
+ updatedAt: "2026-05-10",
1324
+ changelog: ["Initial release"],
1325
+ status: "pro",
1326
+ difficulty: "intermediate",
1327
+ frameworks: ["nextjs", "react"],
1328
+ dependencies: ["lucide-react"],
1329
+ files: [{ path: "components/blocks/settings-layout.tsx", type: "block" }],
1330
+ tokens: ["background", "border", "foreground", "muted-foreground", "surface"],
1331
+ supportsDarkMode: true,
1332
+ supportsLightMode: true,
1333
+ promptReady: true,
1334
+ },
1335
+ "onboarding-flow": {
1336
+ slug: "onboarding-flow",
1337
+ title: "Onboarding Flow",
1338
+ description: "Multi-step onboarding modal with progress bar, workspace setup, team invite, and plan selection. Fully animated step transitions.",
1339
+ category: "App",
1340
+ tags: ["onboarding", "steps", "wizard", "saas"],
1341
+ version: "1.0.0",
1342
+ updatedAt: "2026-05-10",
1343
+ changelog: ["Initial release"],
1344
+ status: "pro",
1345
+ difficulty: "intermediate",
1346
+ frameworks: ["nextjs", "react"],
1347
+ dependencies: ["lucide-react"],
1348
+ files: [{ path: "components/blocks/onboarding-flow.tsx", type: "block" }],
1349
+ tokens: ["background", "border", "foreground", "muted-foreground", "surface"],
1350
+ supportsDarkMode: true,
1351
+ supportsLightMode: true,
1352
+ promptReady: true,
1353
+ },
1354
+ "notification-center": {
1355
+ slug: "notification-center",
1356
+ title: "Notification Center",
1357
+ description: "Bell icon with unread badge, dropdown notification list with type icons, mark-as-read, dismiss, and mark-all-read.",
1358
+ category: "App",
1359
+ tags: ["notifications", "bell", "alerts", "dashboard"],
1360
+ version: "1.0.0",
1361
+ updatedAt: "2026-05-10",
1362
+ changelog: ["Initial release"],
1363
+ status: "pro",
1364
+ difficulty: "intermediate",
1365
+ frameworks: ["nextjs", "react"],
1366
+ dependencies: ["lucide-react"],
1367
+ files: [{ path: "components/blocks/notification-center.tsx", type: "block" }],
1368
+ tokens: ["background", "border", "foreground", "muted-foreground", "surface"],
1369
+ supportsDarkMode: true,
1370
+ supportsLightMode: true,
1371
+ promptReady: true,
1372
+ },
1373
+ "project-command-center": {
1374
+ slug: "project-command-center",
1375
+ title: "Project Command Center",
1376
+ description: "Compact project dashboard with launch metrics, milestone progress, team avatars, activity, and health tabs.",
1377
+ category: "App",
1378
+ tags: ["dashboard", "project", "progress", "team", "status"],
1379
+ version: "1.0.0",
1380
+ updatedAt: "2026-05-11",
1381
+ changelog: ["Initial release"],
1382
+ status: "new",
1383
+ difficulty: "intermediate",
1384
+ frameworks: ["nextjs", "react"],
1385
+ dependencies: ["lucide-react"],
1386
+ files: [{ path: "components/blocks/project-command-center.tsx", type: "block" }],
1387
+ tokens: ["background", "card", "border", "foreground", "muted-foreground", "surface"],
1388
+ supportsDarkMode: true,
1389
+ supportsLightMode: true,
1390
+ promptReady: true,
1391
+ },
1392
+ "registry-explorer": {
1393
+ slug: "registry-explorer",
1394
+ title: "Registry Explorer",
1395
+ description: "A searchable, filterable block registry browser with sidebar navigation.",
1396
+ category: "Registry",
1397
+ tags: ["registry", "search", "filter", "sidebar"],
1398
+ version: "1.0.0",
1399
+ updatedAt: "2026-05-09",
1400
+ changelog: ["Initial release — extracted from StampUI website (self-hosted)"],
1401
+ status: "free",
1402
+ difficulty: "intermediate",
1403
+ frameworks: ["nextjs", "react"],
1404
+ dependencies: ["lucide-react"],
1405
+ files: [
1406
+ { path: "components/blocks/registry-explorer.tsx", type: "block" },
1407
+ { path: "components/blocks/registry-card.tsx", type: "block" },
1408
+ ],
1409
+ tokens: ["background", "surface", "border", "muted-foreground"],
1410
+ supportsDarkMode: true,
1411
+ supportsLightMode: true,
1412
+ promptReady: true,
1413
+ },
1414
+ "animated-number": {
1415
+ slug: "animated-number",
1416
+ title: "Animated Number",
1417
+ description: "Count-up animation triggered when the element enters the viewport. Supports compact, currency, and percent formats.",
1418
+ category: "Display",
1419
+ tags: ["animation", "counter", "number", "viewport"],
1420
+ version: "1.0.0",
1421
+ updatedAt: "2026-05-10",
1422
+ changelog: ["Initial release"],
1423
+ status: "free",
1424
+ difficulty: "beginner",
1425
+ frameworks: ["nextjs", "react"],
1426
+ dependencies: [],
1427
+ files: [{ path: "components/core/animated-number.tsx", type: "registry:ui" }],
1428
+ tokens: ["foreground"],
1429
+ supportsDarkMode: true,
1430
+ supportsLightMode: true,
1431
+ promptReady: true,
1432
+ },
1433
+ "avatar-stack": {
1434
+ slug: "avatar-stack",
1435
+ title: "Avatar Stack",
1436
+ description: "Overlapping avatar images with +N overflow indicator. Supports sm/md/lg sizes.",
1437
+ category: "Display",
1438
+ tags: ["avatar", "users", "team", "stack"],
1439
+ version: "1.0.0",
1440
+ updatedAt: "2026-05-10",
1441
+ changelog: ["Initial release"],
1442
+ status: "free",
1443
+ difficulty: "beginner",
1444
+ frameworks: ["nextjs", "react"],
1445
+ dependencies: [],
1446
+ files: [{ path: "components/core/avatar-stack.tsx", type: "registry:ui" }],
1447
+ tokens: ["background", "border", "muted-foreground"],
1448
+ supportsDarkMode: true,
1449
+ supportsLightMode: true,
1450
+ promptReady: true,
1451
+ },
1452
+ "tag-input": {
1453
+ slug: "tag-input",
1454
+ title: "Tag Input",
1455
+ description: "Multi-tag text input. Press Enter or comma to add tags, Backspace to remove the last one.",
1456
+ category: "Forms",
1457
+ tags: ["input", "tags", "multi-value", "form"],
1458
+ version: "1.0.0",
1459
+ updatedAt: "2026-05-10",
1460
+ changelog: ["Initial release"],
1461
+ status: "free",
1462
+ difficulty: "beginner",
1463
+ frameworks: ["nextjs", "react"],
1464
+ dependencies: ["lucide-react"],
1465
+ files: [{ path: "components/core/tag-input.tsx", type: "registry:ui" }],
1466
+ tokens: ["background", "border", "foreground", "muted-foreground"],
1467
+ supportsDarkMode: true,
1468
+ supportsLightMode: true,
1469
+ promptReady: true,
1470
+ },
1471
+ "inline-edit": {
1472
+ slug: "inline-edit",
1473
+ title: "Inline Edit",
1474
+ description: "Click-to-edit text with a pencil icon on hover. Supports Enter to save, Escape to cancel.",
1475
+ category: "Forms",
1476
+ tags: ["edit", "inline", "contenteditable", "text"],
1477
+ version: "1.0.0",
1478
+ updatedAt: "2026-05-10",
1479
+ changelog: ["Initial release"],
1480
+ status: "free",
1481
+ difficulty: "beginner",
1482
+ frameworks: ["nextjs", "react"],
1483
+ dependencies: ["lucide-react"],
1484
+ files: [{ path: "components/core/inline-edit.tsx", type: "registry:ui" }],
1485
+ tokens: ["foreground", "muted-foreground", "border", "surface"],
1486
+ supportsDarkMode: true,
1487
+ supportsLightMode: true,
1488
+ promptReady: true,
1489
+ },
1490
+ "status-pulse": {
1491
+ slug: "status-pulse",
1492
+ title: "Status Pulse",
1493
+ description: "Animated ping dot for live status indicators. States: online, offline, processing, error, warning.",
1494
+ category: "Feedback",
1495
+ tags: ["status", "indicator", "ping", "live"],
1496
+ version: "1.0.0",
1497
+ updatedAt: "2026-05-10",
1498
+ changelog: ["Initial release"],
1499
+ status: "free",
1500
+ difficulty: "beginner",
1501
+ frameworks: ["nextjs", "react"],
1502
+ dependencies: [],
1503
+ files: [{ path: "components/core/status-pulse.tsx", type: "registry:ui" }],
1504
+ tokens: ["muted-foreground"],
1505
+ supportsDarkMode: true,
1506
+ supportsLightMode: true,
1507
+ promptReady: true,
1508
+ },
1509
+ "typing-indicator": {
1510
+ slug: "typing-indicator",
1511
+ title: "Typing Indicator",
1512
+ description: "Three bouncing dots for AI or chat typing state. Bubble and bare variants.",
1513
+ category: "Feedback",
1514
+ tags: ["typing", "chat", "ai", "loading"],
1515
+ version: "1.0.0",
1516
+ updatedAt: "2026-05-10",
1517
+ changelog: ["Initial release"],
1518
+ status: "free",
1519
+ difficulty: "beginner",
1520
+ frameworks: ["nextjs", "react"],
1521
+ dependencies: [],
1522
+ files: [{ path: "components/core/typing-indicator.tsx", type: "registry:ui" }],
1523
+ tokens: ["surface", "border", "muted-foreground"],
1524
+ supportsDarkMode: true,
1525
+ supportsLightMode: true,
1526
+ promptReady: true,
1527
+ },
1528
+ "password-input": {
1529
+ slug: "password-input",
1530
+ title: "Password Input",
1531
+ description: "Password field with show/hide toggle and an optional animated 4-bar strength meter.",
1532
+ category: "Forms",
1533
+ tags: ["password", "input", "strength", "form", "auth"],
1534
+ version: "1.0.0",
1535
+ updatedAt: "2026-05-10",
1536
+ changelog: ["Initial release"],
1537
+ status: "free",
1538
+ difficulty: "beginner",
1539
+ frameworks: ["nextjs", "react"],
1540
+ dependencies: ["lucide-react"],
1541
+ files: [{ path: "components/core/password-input.tsx", type: "registry:ui" }],
1542
+ tokens: ["background", "border", "foreground", "muted-foreground"],
1543
+ supportsDarkMode: true,
1544
+ supportsLightMode: true,
1545
+ promptReady: true,
1546
+ },
1547
+ "number-stepper": {
1548
+ slug: "number-stepper",
1549
+ title: "Number Stepper",
1550
+ description: "Increment/decrement number input with min, max, and step. Supports controlled and uncontrolled usage.",
1551
+ category: "Forms",
1552
+ tags: ["input", "number", "stepper", "counter", "form"],
1553
+ version: "1.0.0",
1554
+ updatedAt: "2026-05-10",
1555
+ changelog: ["Initial release"],
1556
+ status: "free",
1557
+ difficulty: "beginner",
1558
+ frameworks: ["nextjs", "react"],
1559
+ dependencies: ["lucide-react"],
1560
+ files: [{ path: "components/core/number-stepper.tsx", type: "registry:ui" }],
1561
+ tokens: ["background", "border", "foreground", "muted-foreground", "surface"],
1562
+ supportsDarkMode: true,
1563
+ supportsLightMode: true,
1564
+ promptReady: true,
1565
+ },
1566
+ "confirm-action": {
1567
+ slug: "confirm-action",
1568
+ title: "Confirm Action",
1569
+ description: "Destructive action button that requires a second click within a timeout window. Resets automatically if you don't confirm.",
1570
+ category: "Feedback",
1571
+ tags: ["confirm", "delete", "destructive", "safety"],
1572
+ version: "1.0.0",
1573
+ updatedAt: "2026-05-10",
1574
+ changelog: ["Initial release"],
1575
+ status: "free",
1576
+ difficulty: "beginner",
1577
+ frameworks: ["nextjs", "react"],
1578
+ dependencies: [],
1579
+ files: [{ path: "components/core/confirm-action.tsx", type: "registry:ui" }],
1580
+ tokens: [],
1581
+ supportsDarkMode: true,
1582
+ supportsLightMode: true,
1583
+ promptReady: true,
1584
+ },
1585
+ "pagination": {
1586
+ slug: "pagination",
1587
+ title: "Pagination",
1588
+ description: "Page navigation with previous/next buttons, numbered pages, and ellipsis for large sets.",
1589
+ category: "Navigation",
1590
+ tags: ["pagination", "navigation", "pages"],
1591
+ version: "1.0.0",
1592
+ updatedAt: "2026-05-10",
1593
+ changelog: ["Initial release"],
1594
+ status: "free",
1595
+ difficulty: "beginner",
1596
+ frameworks: ["nextjs", "react"],
1597
+ dependencies: ["lucide-react"],
1598
+ files: [{ path: "components/core/pagination.tsx", type: "registry:ui" }],
1599
+ tokens: ["border", "foreground", "muted-foreground", "surface"],
1600
+ supportsDarkMode: true,
1601
+ supportsLightMode: true,
1602
+ promptReady: true,
1603
+ },
1604
+ "menubar": {
1605
+ slug: "menubar",
1606
+ title: "Menubar",
1607
+ description: "Horizontal menu bar with dropdown submenus, labels, separators, and keyboard shortcuts.",
1608
+ category: "Navigation",
1609
+ tags: ["menubar", "menu", "navigation", "dropdown"],
1610
+ version: "1.0.0",
1611
+ updatedAt: "2026-05-10",
1612
+ changelog: ["Initial release"],
1613
+ status: "free",
1614
+ difficulty: "beginner",
1615
+ frameworks: ["nextjs", "react"],
1616
+ dependencies: [],
1617
+ files: [{ path: "components/core/menubar.tsx", type: "registry:ui" }],
1618
+ tokens: ["border", "background", "foreground", "muted-foreground", "surface"],
1619
+ supportsDarkMode: true,
1620
+ supportsLightMode: true,
1621
+ promptReady: true,
1622
+ },
1623
+ "navigation-menu": {
1624
+ slug: "navigation-menu",
1625
+ title: "Navigation Menu",
1626
+ description: "Horizontal navigation with link items and optional dropdown content panels.",
1627
+ category: "Navigation",
1628
+ tags: ["navigation", "menu", "nav", "links"],
1629
+ version: "1.0.0",
1630
+ updatedAt: "2026-05-10",
1631
+ changelog: ["Initial release"],
1632
+ status: "free",
1633
+ difficulty: "beginner",
1634
+ frameworks: ["nextjs", "react"],
1635
+ dependencies: ["lucide-react"],
1636
+ files: [{ path: "components/core/navigation-menu.tsx", type: "registry:ui" }],
1637
+ tokens: ["border", "background", "foreground", "muted-foreground", "surface"],
1638
+ supportsDarkMode: true,
1639
+ supportsLightMode: true,
1640
+ promptReady: true,
1641
+ },
1642
+ "sidebar": {
1643
+ slug: "sidebar",
1644
+ title: "Sidebar",
1645
+ description: "Vertical navigation sidebar with collapsible groups, icons, badges, and collapsed mode.",
1646
+ category: "Navigation",
1647
+ tags: ["sidebar", "navigation", "menu", "collapsible"],
1648
+ version: "1.0.0",
1649
+ updatedAt: "2026-05-10",
1650
+ changelog: ["Initial release"],
1651
+ status: "free",
1652
+ difficulty: "intermediate",
1653
+ frameworks: ["nextjs", "react"],
1654
+ dependencies: ["lucide-react"],
1655
+ files: [{ path: "components/core/sidebar.tsx", type: "registry:ui" }],
1656
+ tokens: ["border", "foreground", "muted-foreground", "surface"],
1657
+ supportsDarkMode: true,
1658
+ supportsLightMode: true,
1659
+ promptReady: true,
1660
+ },
1661
+ "marquee": {
1662
+ slug: "marquee",
1663
+ title: "Marquee",
1664
+ description: "Infinite horizontal scrolling strip for logos, testimonials, or any repeating content. Pause on hover.",
1665
+ category: "Display",
1666
+ tags: ["marquee", "scroll", "infinite", "logos", "animation"],
1667
+ version: "1.0.0",
1668
+ updatedAt: "2026-05-10",
1669
+ changelog: ["Initial release"],
1670
+ status: "free",
1671
+ difficulty: "beginner",
1672
+ frameworks: ["nextjs", "react"],
1673
+ dependencies: [],
1674
+ files: [{ path: "components/core/marquee.tsx", type: "registry:ui" }],
1675
+ tokens: [],
1676
+ supportsDarkMode: true,
1677
+ supportsLightMode: true,
1678
+ promptReady: true,
1679
+ },
1680
+ }
1681
+
1682
+ export const blockList = Object.values(manifests)