@smicolon/fasla-ui 0.2.3 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +91 -23
- package/dist/registry/index.js +31 -2
- package/dist/tokens/index.d.ts +75 -6
- package/dist/tokens/index.js +59 -20
- package/package.json +4 -1
- package/registry/blocks/app-shell/AppShell.tsx +1 -1
- package/registry/blocks/data-table/DataTable.test.tsx +61 -0
- package/registry/blocks/data-table/DataTable.tsx +53 -16
- package/registry/blocks/data-table/index.ts +1 -0
- package/registry/blocks/empty-state/EmptyState.test.tsx +12 -0
- package/registry/blocks/empty-state/EmptyState.tsx +22 -31
- package/registry/blocks/form-section/FormSection.tsx +1 -1
- package/registry/blocks/navbar/Navbar.test.tsx +12 -0
- package/registry/blocks/navbar/Navbar.tsx +8 -23
- package/registry/blocks/page-header/PageHeader.tsx +5 -2
- package/registry/blocks/sidebar/Sidebar.tsx +9 -16
- package/registry/blocks/stats-card/StatsCard.tsx +9 -27
- package/registry/effects/animated-gradient/animated-gradient.tsx +23 -8
- package/registry/effects/border-beam/border-beam.tsx +77 -53
- package/registry/effects/effects.test.tsx +266 -0
- package/registry/effects/glow-card/glow-card.tsx +68 -43
- package/registry/effects/shimmer-button/shimmer-button.tsx +62 -23
- package/registry/effects/spotlight/spotlight.tsx +73 -29
- package/registry/effects/text-reveal/index.ts +1 -0
- package/registry/effects/text-reveal/text-reveal.test.tsx +66 -0
- package/registry/effects/text-reveal/text-reveal.tsx +68 -21
- package/registry/effects/typewriter-text/typewriter-text.tsx +41 -22
- package/registry/text-props-undefined.test.tsx +73 -0
- package/registry/ui/avatar/avatar.test.tsx +316 -0
- package/registry/ui/avatar/avatar.tsx +235 -108
- package/registry/ui/avatar/index.ts +1 -1
- package/registry/ui/badge/badge.test.tsx +267 -32
- package/registry/ui/badge/badge.tsx +233 -21
- package/registry/ui/button/button.test.tsx +6 -0
- package/registry/ui/button/button.tsx +6 -23
- package/registry/ui/card/card.tsx +1 -1
- package/registry/ui/checkbox/checkbox.tsx +13 -26
- package/registry/ui/combobox/combobox.test.tsx +43 -0
- package/registry/ui/combobox/combobox.tsx +27 -55
- package/registry/ui/input/input.test.tsx +2 -2
- package/registry/ui/input/input.tsx +4 -4
- package/registry/ui/radio/index.ts +1 -0
- package/registry/ui/radio/radio.test.tsx +248 -0
- package/registry/ui/radio/radio.tsx +208 -0
- package/registry/ui/select/select.tsx +4 -14
- package/registry/ui/skeleton/skeleton.tsx +1 -1
- package/registry/ui/status-indicator/index.ts +6 -0
- package/registry/ui/status-indicator/status-indicator.test.tsx +148 -0
- package/registry/ui/status-indicator/status-indicator.tsx +87 -0
- package/registry/ui/switch/index.ts +1 -1
- package/registry/ui/switch/switch.test.tsx +323 -0
- package/registry/ui/switch/switch.tsx +254 -57
- package/registry/ui/textarea/textarea.tsx +1 -1
- package/registry.json +435 -78
- package/tailwind-preset.ts +143 -0
package/registry.json
CHANGED
|
@@ -4,36 +4,134 @@
|
|
|
4
4
|
"homepage": "https://ui.smicolon.com",
|
|
5
5
|
"items": [
|
|
6
6
|
{
|
|
7
|
-
"name": "
|
|
7
|
+
"name": "animated-gradient",
|
|
8
8
|
"type": "registry:ui",
|
|
9
|
-
"title": "
|
|
10
|
-
"description": "
|
|
11
|
-
"dependencies": [
|
|
9
|
+
"title": "Animated Gradient",
|
|
10
|
+
"description": "Animated gradient background and text effects.",
|
|
11
|
+
"dependencies": [
|
|
12
|
+
"framer-motion"
|
|
13
|
+
],
|
|
12
14
|
"registryDependencies": [],
|
|
13
15
|
"files": [
|
|
14
16
|
{
|
|
15
|
-
"path": "registry/
|
|
17
|
+
"path": "registry/effects/animated-gradient/animated-gradient.tsx",
|
|
16
18
|
"type": "registry:ui",
|
|
17
|
-
"target": "components/ui/
|
|
19
|
+
"target": "components/ui/animated-gradient.tsx"
|
|
18
20
|
}
|
|
19
21
|
],
|
|
20
|
-
"categories": [
|
|
22
|
+
"categories": [
|
|
23
|
+
"effects",
|
|
24
|
+
"backgrounds"
|
|
25
|
+
]
|
|
21
26
|
},
|
|
22
27
|
{
|
|
23
|
-
"name": "
|
|
28
|
+
"name": "app-shell",
|
|
29
|
+
"type": "registry:block",
|
|
30
|
+
"title": "App Shell",
|
|
31
|
+
"description": "Application shell with sidebar, header, and content area.",
|
|
32
|
+
"dependencies": [],
|
|
33
|
+
"registryDependencies": [],
|
|
34
|
+
"files": [
|
|
35
|
+
{
|
|
36
|
+
"path": "registry/blocks/app-shell/AppShell.tsx",
|
|
37
|
+
"type": "registry:block",
|
|
38
|
+
"target": "components/blocks/app-shell.tsx"
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"categories": [
|
|
42
|
+
"layout",
|
|
43
|
+
"application"
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"name": "avatar",
|
|
24
48
|
"type": "registry:ui",
|
|
25
|
-
"title": "
|
|
26
|
-
"description": "
|
|
27
|
-
"dependencies": [
|
|
49
|
+
"title": "Avatar",
|
|
50
|
+
"description": "A user's photo, initials or icon, in three sizes and two radii, with an optional border and presence dot. Falls back from photo to initials to icon on its own.",
|
|
51
|
+
"dependencies": [
|
|
52
|
+
"class-variance-authority",
|
|
53
|
+
"lucide-react"
|
|
54
|
+
],
|
|
55
|
+
"registryDependencies": [
|
|
56
|
+
"status-indicator"
|
|
57
|
+
],
|
|
58
|
+
"files": [
|
|
59
|
+
{
|
|
60
|
+
"path": "registry/ui/avatar/avatar.tsx",
|
|
61
|
+
"type": "registry:ui",
|
|
62
|
+
"target": "components/ui/avatar.tsx"
|
|
63
|
+
}
|
|
64
|
+
],
|
|
65
|
+
"categories": [
|
|
66
|
+
"primitives",
|
|
67
|
+
"data-display"
|
|
68
|
+
]
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"name": "badge",
|
|
72
|
+
"type": "registry:ui",
|
|
73
|
+
"title": "Badge",
|
|
74
|
+
"description": "A compact inline label for status, category or metadata: solid, soft and outline types in six semantic tones, with an optional icon, avatar and close button.",
|
|
75
|
+
"dependencies": [
|
|
76
|
+
"class-variance-authority",
|
|
77
|
+
"lucide-react"
|
|
78
|
+
],
|
|
28
79
|
"registryDependencies": [],
|
|
29
80
|
"files": [
|
|
30
81
|
{
|
|
31
|
-
"path": "registry/ui/
|
|
82
|
+
"path": "registry/ui/badge/badge.tsx",
|
|
32
83
|
"type": "registry:ui",
|
|
33
|
-
"target": "components/ui/
|
|
84
|
+
"target": "components/ui/badge.tsx"
|
|
85
|
+
}
|
|
86
|
+
],
|
|
87
|
+
"categories": [
|
|
88
|
+
"primitives",
|
|
89
|
+
"data-display"
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"name": "border-beam",
|
|
94
|
+
"type": "registry:ui",
|
|
95
|
+
"title": "Border Beam",
|
|
96
|
+
"description": "Animated border beam and glowing border effects.",
|
|
97
|
+
"dependencies": [
|
|
98
|
+
"framer-motion"
|
|
99
|
+
],
|
|
100
|
+
"registryDependencies": [],
|
|
101
|
+
"files": [
|
|
102
|
+
{
|
|
103
|
+
"path": "registry/effects/border-beam/border-beam.tsx",
|
|
104
|
+
"type": "registry:ui",
|
|
105
|
+
"target": "components/ui/border-beam.tsx"
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
"categories": [
|
|
109
|
+
"effects",
|
|
110
|
+
"borders"
|
|
111
|
+
]
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"name": "button",
|
|
115
|
+
"type": "registry:ui",
|
|
116
|
+
"title": "Button",
|
|
117
|
+
"description": "A button component with multiple variants, sizes, and loading state.",
|
|
118
|
+
"dependencies": [
|
|
119
|
+
"@radix-ui/react-slot",
|
|
120
|
+
"class-variance-authority",
|
|
121
|
+
"lucide-react"
|
|
122
|
+
],
|
|
123
|
+
"registryDependencies": [],
|
|
124
|
+
"files": [
|
|
125
|
+
{
|
|
126
|
+
"path": "registry/ui/button/button.tsx",
|
|
127
|
+
"type": "registry:ui",
|
|
128
|
+
"target": "components/ui/button.tsx"
|
|
34
129
|
}
|
|
35
130
|
],
|
|
36
|
-
"categories": [
|
|
131
|
+
"categories": [
|
|
132
|
+
"primitives",
|
|
133
|
+
"forms"
|
|
134
|
+
]
|
|
37
135
|
},
|
|
38
136
|
{
|
|
39
137
|
"name": "card",
|
|
@@ -49,78 +147,101 @@
|
|
|
49
147
|
"target": "components/ui/card.tsx"
|
|
50
148
|
}
|
|
51
149
|
],
|
|
52
|
-
"categories": [
|
|
150
|
+
"categories": [
|
|
151
|
+
"primitives",
|
|
152
|
+
"layout"
|
|
153
|
+
]
|
|
53
154
|
},
|
|
54
155
|
{
|
|
55
|
-
"name": "
|
|
156
|
+
"name": "checkbox",
|
|
56
157
|
"type": "registry:ui",
|
|
57
|
-
"title": "
|
|
58
|
-
"description": "
|
|
59
|
-
"dependencies": [
|
|
158
|
+
"title": "Checkbox",
|
|
159
|
+
"description": "An accessible checkbox for binary selections with controlled state.",
|
|
160
|
+
"dependencies": [
|
|
161
|
+
"lucide-react"
|
|
162
|
+
],
|
|
60
163
|
"registryDependencies": [],
|
|
61
164
|
"files": [
|
|
62
165
|
{
|
|
63
|
-
"path": "registry/ui/
|
|
166
|
+
"path": "registry/ui/checkbox/checkbox.tsx",
|
|
64
167
|
"type": "registry:ui",
|
|
65
|
-
"target": "components/ui/
|
|
168
|
+
"target": "components/ui/checkbox.tsx"
|
|
66
169
|
}
|
|
67
170
|
],
|
|
68
|
-
"categories": [
|
|
171
|
+
"categories": [
|
|
172
|
+
"primitives",
|
|
173
|
+
"forms"
|
|
174
|
+
]
|
|
69
175
|
},
|
|
70
176
|
{
|
|
71
|
-
"name": "
|
|
177
|
+
"name": "radio",
|
|
72
178
|
"type": "registry:ui",
|
|
73
|
-
"title": "
|
|
74
|
-
"description": "
|
|
75
|
-
"dependencies": [
|
|
179
|
+
"title": "Radio",
|
|
180
|
+
"description": "An accessible radio for choosing one option from a set, with a plain and a bordered layout variant.",
|
|
181
|
+
"dependencies": [
|
|
182
|
+
"class-variance-authority"
|
|
183
|
+
],
|
|
76
184
|
"registryDependencies": [],
|
|
77
185
|
"files": [
|
|
78
186
|
{
|
|
79
|
-
"path": "registry/ui/
|
|
187
|
+
"path": "registry/ui/radio/radio.tsx",
|
|
80
188
|
"type": "registry:ui",
|
|
81
|
-
"target": "components/ui/
|
|
189
|
+
"target": "components/ui/radio.tsx"
|
|
82
190
|
}
|
|
83
191
|
],
|
|
84
|
-
"categories": [
|
|
192
|
+
"categories": [
|
|
193
|
+
"primitives",
|
|
194
|
+
"forms"
|
|
195
|
+
]
|
|
85
196
|
},
|
|
86
197
|
{
|
|
87
|
-
"name": "
|
|
88
|
-
"type": "registry:
|
|
89
|
-
"title": "
|
|
90
|
-
"description": "
|
|
91
|
-
"dependencies": [
|
|
198
|
+
"name": "combobox",
|
|
199
|
+
"type": "registry:ui",
|
|
200
|
+
"title": "Combobox",
|
|
201
|
+
"description": "A searchable combobox with single or multiple selection.",
|
|
202
|
+
"dependencies": [
|
|
203
|
+
"lucide-react"
|
|
204
|
+
],
|
|
92
205
|
"registryDependencies": [],
|
|
93
206
|
"files": [
|
|
94
207
|
{
|
|
95
|
-
"path": "registry/
|
|
96
|
-
"type": "registry:
|
|
97
|
-
"target": "components/
|
|
208
|
+
"path": "registry/ui/combobox/combobox.tsx",
|
|
209
|
+
"type": "registry:ui",
|
|
210
|
+
"target": "components/ui/combobox.tsx"
|
|
98
211
|
}
|
|
99
212
|
],
|
|
100
|
-
"categories": [
|
|
213
|
+
"categories": [
|
|
214
|
+
"primitives",
|
|
215
|
+
"forms"
|
|
216
|
+
]
|
|
101
217
|
},
|
|
102
218
|
{
|
|
103
|
-
"name": "
|
|
219
|
+
"name": "data-table",
|
|
104
220
|
"type": "registry:block",
|
|
105
|
-
"title": "
|
|
106
|
-
"description": "
|
|
221
|
+
"title": "Data Table",
|
|
222
|
+
"description": "Data table with sorting, pagination, and custom cell rendering.",
|
|
107
223
|
"dependencies": [],
|
|
108
224
|
"registryDependencies": [],
|
|
109
225
|
"files": [
|
|
110
226
|
{
|
|
111
|
-
"path": "registry/blocks/
|
|
227
|
+
"path": "registry/blocks/data-table/DataTable.tsx",
|
|
112
228
|
"type": "registry:block",
|
|
113
|
-
"target": "components/blocks/
|
|
229
|
+
"target": "components/blocks/data-table.tsx"
|
|
114
230
|
}
|
|
115
231
|
],
|
|
116
|
-
"categories": [
|
|
232
|
+
"categories": [
|
|
233
|
+
"data-display",
|
|
234
|
+
"tables"
|
|
235
|
+
]
|
|
117
236
|
},
|
|
118
237
|
{
|
|
119
238
|
"name": "empty-state",
|
|
120
239
|
"type": "registry:block",
|
|
121
240
|
"title": "Empty State",
|
|
122
241
|
"description": "Empty state component with icon, title, description, and actions.",
|
|
123
|
-
"dependencies": [
|
|
242
|
+
"dependencies": [
|
|
243
|
+
"lucide-react"
|
|
244
|
+
],
|
|
124
245
|
"registryDependencies": [],
|
|
125
246
|
"files": [
|
|
126
247
|
{
|
|
@@ -129,7 +250,10 @@
|
|
|
129
250
|
"target": "components/blocks/empty-state.tsx"
|
|
130
251
|
}
|
|
131
252
|
],
|
|
132
|
-
"categories": [
|
|
253
|
+
"categories": [
|
|
254
|
+
"feedback",
|
|
255
|
+
"data-display"
|
|
256
|
+
]
|
|
133
257
|
},
|
|
134
258
|
{
|
|
135
259
|
"name": "form-section",
|
|
@@ -145,30 +269,120 @@
|
|
|
145
269
|
"target": "components/blocks/form-section.tsx"
|
|
146
270
|
}
|
|
147
271
|
],
|
|
148
|
-
"categories": [
|
|
272
|
+
"categories": [
|
|
273
|
+
"forms",
|
|
274
|
+
"layout"
|
|
275
|
+
]
|
|
149
276
|
},
|
|
150
277
|
{
|
|
151
|
-
"name": "
|
|
278
|
+
"name": "glow-card",
|
|
279
|
+
"type": "registry:ui",
|
|
280
|
+
"title": "Glow Card",
|
|
281
|
+
"description": "Card with a cursor-following glow on hover.",
|
|
282
|
+
"dependencies": [],
|
|
283
|
+
"registryDependencies": [],
|
|
284
|
+
"files": [
|
|
285
|
+
{
|
|
286
|
+
"path": "registry/effects/glow-card/glow-card.tsx",
|
|
287
|
+
"type": "registry:ui",
|
|
288
|
+
"target": "components/ui/glow-card.tsx"
|
|
289
|
+
}
|
|
290
|
+
],
|
|
291
|
+
"categories": [
|
|
292
|
+
"effects",
|
|
293
|
+
"interactive"
|
|
294
|
+
]
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
"name": "input",
|
|
298
|
+
"type": "registry:ui",
|
|
299
|
+
"title": "Input",
|
|
300
|
+
"description": "An input component with variants for validation states and icon support.",
|
|
301
|
+
"dependencies": [
|
|
302
|
+
"class-variance-authority"
|
|
303
|
+
],
|
|
304
|
+
"registryDependencies": [],
|
|
305
|
+
"files": [
|
|
306
|
+
{
|
|
307
|
+
"path": "registry/ui/input/input.tsx",
|
|
308
|
+
"type": "registry:ui",
|
|
309
|
+
"target": "components/ui/input.tsx"
|
|
310
|
+
}
|
|
311
|
+
],
|
|
312
|
+
"categories": [
|
|
313
|
+
"primitives",
|
|
314
|
+
"forms"
|
|
315
|
+
]
|
|
316
|
+
},
|
|
317
|
+
{
|
|
318
|
+
"name": "navbar",
|
|
152
319
|
"type": "registry:block",
|
|
153
|
-
"title": "
|
|
154
|
-
"description": "
|
|
320
|
+
"title": "Navbar",
|
|
321
|
+
"description": "Responsive navigation bar with desktop links and mobile menu.",
|
|
322
|
+
"dependencies": [
|
|
323
|
+
"lucide-react"
|
|
324
|
+
],
|
|
325
|
+
"registryDependencies": [],
|
|
326
|
+
"files": [
|
|
327
|
+
{
|
|
328
|
+
"path": "registry/blocks/navbar/Navbar.tsx",
|
|
329
|
+
"type": "registry:block",
|
|
330
|
+
"target": "components/blocks/navbar.tsx"
|
|
331
|
+
}
|
|
332
|
+
],
|
|
333
|
+
"categories": [
|
|
334
|
+
"navigation",
|
|
335
|
+
"layout"
|
|
336
|
+
]
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
"name": "page-header",
|
|
340
|
+
"type": "registry:block",
|
|
341
|
+
"title": "Page Header",
|
|
342
|
+
"description": "Page header with title, breadcrumb, description, and actions.",
|
|
155
343
|
"dependencies": [],
|
|
156
344
|
"registryDependencies": [],
|
|
157
345
|
"files": [
|
|
158
346
|
{
|
|
159
|
-
"path": "registry/blocks/
|
|
347
|
+
"path": "registry/blocks/page-header/PageHeader.tsx",
|
|
160
348
|
"type": "registry:block",
|
|
161
|
-
"target": "components/blocks/
|
|
349
|
+
"target": "components/blocks/page-header.tsx"
|
|
350
|
+
}
|
|
351
|
+
],
|
|
352
|
+
"categories": [
|
|
353
|
+
"layout",
|
|
354
|
+
"navigation"
|
|
355
|
+
]
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
"name": "select",
|
|
359
|
+
"type": "registry:ui",
|
|
360
|
+
"title": "Select",
|
|
361
|
+
"description": "A select control for choosing one option from a list.",
|
|
362
|
+
"dependencies": [
|
|
363
|
+
"lucide-react"
|
|
364
|
+
],
|
|
365
|
+
"registryDependencies": [],
|
|
366
|
+
"files": [
|
|
367
|
+
{
|
|
368
|
+
"path": "registry/ui/select/select.tsx",
|
|
369
|
+
"type": "registry:ui",
|
|
370
|
+
"target": "components/ui/select.tsx"
|
|
162
371
|
}
|
|
163
372
|
],
|
|
164
|
-
"categories": [
|
|
373
|
+
"categories": [
|
|
374
|
+
"primitives",
|
|
375
|
+
"forms"
|
|
376
|
+
]
|
|
165
377
|
},
|
|
166
378
|
{
|
|
167
379
|
"name": "shimmer-button",
|
|
168
380
|
"type": "registry:ui",
|
|
169
381
|
"title": "Shimmer Button",
|
|
170
382
|
"description": "A button with animated shimmer effect.",
|
|
171
|
-
"dependencies": [
|
|
383
|
+
"dependencies": [
|
|
384
|
+
"framer-motion"
|
|
385
|
+
],
|
|
172
386
|
"registryDependencies": [],
|
|
173
387
|
"files": [
|
|
174
388
|
{
|
|
@@ -177,30 +391,162 @@
|
|
|
177
391
|
"target": "components/ui/shimmer-button.tsx"
|
|
178
392
|
}
|
|
179
393
|
],
|
|
180
|
-
"categories": [
|
|
394
|
+
"categories": [
|
|
395
|
+
"effects",
|
|
396
|
+
"buttons"
|
|
397
|
+
]
|
|
181
398
|
},
|
|
182
399
|
{
|
|
183
|
-
"name": "
|
|
400
|
+
"name": "sidebar",
|
|
401
|
+
"type": "registry:block",
|
|
402
|
+
"title": "Sidebar",
|
|
403
|
+
"description": "Responsive sidebar navigation with collapsible structure.",
|
|
404
|
+
"dependencies": [
|
|
405
|
+
"lucide-react"
|
|
406
|
+
],
|
|
407
|
+
"registryDependencies": [],
|
|
408
|
+
"files": [
|
|
409
|
+
{
|
|
410
|
+
"path": "registry/blocks/sidebar/Sidebar.tsx",
|
|
411
|
+
"type": "registry:block",
|
|
412
|
+
"target": "components/blocks/sidebar.tsx"
|
|
413
|
+
}
|
|
414
|
+
],
|
|
415
|
+
"categories": [
|
|
416
|
+
"navigation",
|
|
417
|
+
"layout"
|
|
418
|
+
]
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
"name": "skeleton",
|
|
184
422
|
"type": "registry:ui",
|
|
185
|
-
"title": "
|
|
186
|
-
"description": "
|
|
187
|
-
"dependencies": [
|
|
423
|
+
"title": "Skeleton",
|
|
424
|
+
"description": "Loading skeleton placeholders with pre-built variants for text, avatars, and cards.",
|
|
425
|
+
"dependencies": [],
|
|
188
426
|
"registryDependencies": [],
|
|
189
427
|
"files": [
|
|
190
428
|
{
|
|
191
|
-
"path": "registry/
|
|
429
|
+
"path": "registry/ui/skeleton/skeleton.tsx",
|
|
192
430
|
"type": "registry:ui",
|
|
193
|
-
"target": "components/ui/
|
|
431
|
+
"target": "components/ui/skeleton.tsx"
|
|
432
|
+
}
|
|
433
|
+
],
|
|
434
|
+
"categories": [
|
|
435
|
+
"primitives",
|
|
436
|
+
"feedback"
|
|
437
|
+
]
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
"name": "spotlight",
|
|
441
|
+
"type": "registry:ui",
|
|
442
|
+
"title": "Spotlight",
|
|
443
|
+
"description": "Cursor-following spotlight effect.",
|
|
444
|
+
"dependencies": [
|
|
445
|
+
"framer-motion"
|
|
446
|
+
],
|
|
447
|
+
"registryDependencies": [],
|
|
448
|
+
"files": [
|
|
449
|
+
{
|
|
450
|
+
"path": "registry/effects/spotlight/spotlight.tsx",
|
|
451
|
+
"type": "registry:ui",
|
|
452
|
+
"target": "components/ui/spotlight.tsx"
|
|
453
|
+
}
|
|
454
|
+
],
|
|
455
|
+
"categories": [
|
|
456
|
+
"effects",
|
|
457
|
+
"interactive"
|
|
458
|
+
]
|
|
459
|
+
},
|
|
460
|
+
{
|
|
461
|
+
"name": "stats-card",
|
|
462
|
+
"type": "registry:block",
|
|
463
|
+
"title": "Stats Card",
|
|
464
|
+
"description": "Display a metric with trend, icon, and supporting label.",
|
|
465
|
+
"dependencies": [
|
|
466
|
+
"lucide-react"
|
|
467
|
+
],
|
|
468
|
+
"registryDependencies": [],
|
|
469
|
+
"files": [
|
|
470
|
+
{
|
|
471
|
+
"path": "registry/blocks/stats-card/StatsCard.tsx",
|
|
472
|
+
"type": "registry:block",
|
|
473
|
+
"target": "components/blocks/stats-card.tsx"
|
|
474
|
+
}
|
|
475
|
+
],
|
|
476
|
+
"categories": [
|
|
477
|
+
"data-display",
|
|
478
|
+
"application"
|
|
479
|
+
]
|
|
480
|
+
},
|
|
481
|
+
{
|
|
482
|
+
"name": "status-indicator",
|
|
483
|
+
"type": "registry:ui",
|
|
484
|
+
"title": "Status Indicator",
|
|
485
|
+
"description": "A presence dot — online, away, busy or offline — with an accessible name in the page's language, so colour never carries the status alone.",
|
|
486
|
+
"dependencies": [
|
|
487
|
+
"class-variance-authority"
|
|
488
|
+
],
|
|
489
|
+
"registryDependencies": [],
|
|
490
|
+
"files": [
|
|
491
|
+
{
|
|
492
|
+
"path": "registry/ui/status-indicator/status-indicator.tsx",
|
|
493
|
+
"type": "registry:ui",
|
|
494
|
+
"target": "components/ui/status-indicator.tsx"
|
|
495
|
+
}
|
|
496
|
+
],
|
|
497
|
+
"categories": [
|
|
498
|
+
"primitives",
|
|
499
|
+
"data-display"
|
|
500
|
+
]
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
"name": "switch",
|
|
504
|
+
"type": "registry:ui",
|
|
505
|
+
"title": "Switch",
|
|
506
|
+
"description": "An accessible switch for on-off settings: solid and outline styles in three sizes, with the track before or after its label.",
|
|
507
|
+
"dependencies": [
|
|
508
|
+
"class-variance-authority"
|
|
509
|
+
],
|
|
510
|
+
"registryDependencies": [],
|
|
511
|
+
"files": [
|
|
512
|
+
{
|
|
513
|
+
"path": "registry/ui/switch/switch.tsx",
|
|
514
|
+
"type": "registry:ui",
|
|
515
|
+
"target": "components/ui/switch.tsx"
|
|
516
|
+
}
|
|
517
|
+
],
|
|
518
|
+
"categories": [
|
|
519
|
+
"primitives",
|
|
520
|
+
"forms"
|
|
521
|
+
]
|
|
522
|
+
},
|
|
523
|
+
{
|
|
524
|
+
"name": "tabs",
|
|
525
|
+
"type": "registry:ui",
|
|
526
|
+
"title": "Tabs",
|
|
527
|
+
"description": "Accessible tab lists, triggers, and keyboard-navigable panels.",
|
|
528
|
+
"dependencies": [],
|
|
529
|
+
"registryDependencies": [],
|
|
530
|
+
"files": [
|
|
531
|
+
{
|
|
532
|
+
"path": "registry/ui/tabs/tabs.tsx",
|
|
533
|
+
"type": "registry:ui",
|
|
534
|
+
"target": "components/ui/tabs.tsx"
|
|
194
535
|
}
|
|
195
536
|
],
|
|
196
|
-
"categories": [
|
|
537
|
+
"categories": [
|
|
538
|
+
"primitives",
|
|
539
|
+
"navigation"
|
|
540
|
+
]
|
|
197
541
|
},
|
|
198
542
|
{
|
|
199
543
|
"name": "text-reveal",
|
|
200
544
|
"type": "registry:ui",
|
|
201
545
|
"title": "Text Reveal",
|
|
202
546
|
"description": "Character and word reveal animations.",
|
|
203
|
-
"dependencies": [
|
|
547
|
+
"dependencies": [
|
|
548
|
+
"framer-motion"
|
|
549
|
+
],
|
|
204
550
|
"registryDependencies": [],
|
|
205
551
|
"files": [
|
|
206
552
|
{
|
|
@@ -209,39 +555,50 @@
|
|
|
209
555
|
"target": "components/ui/text-reveal.tsx"
|
|
210
556
|
}
|
|
211
557
|
],
|
|
212
|
-
"categories": [
|
|
558
|
+
"categories": [
|
|
559
|
+
"effects",
|
|
560
|
+
"text"
|
|
561
|
+
]
|
|
213
562
|
},
|
|
214
563
|
{
|
|
215
|
-
"name": "
|
|
564
|
+
"name": "textarea",
|
|
216
565
|
"type": "registry:ui",
|
|
217
|
-
"title": "
|
|
218
|
-
"description": "
|
|
219
|
-
"dependencies": [
|
|
566
|
+
"title": "Textarea",
|
|
567
|
+
"description": "A multi-line text input with character counting and resize options.",
|
|
568
|
+
"dependencies": [
|
|
569
|
+
"class-variance-authority"
|
|
570
|
+
],
|
|
220
571
|
"registryDependencies": [],
|
|
221
572
|
"files": [
|
|
222
573
|
{
|
|
223
|
-
"path": "registry/
|
|
574
|
+
"path": "registry/ui/textarea/textarea.tsx",
|
|
224
575
|
"type": "registry:ui",
|
|
225
|
-
"target": "components/ui/
|
|
576
|
+
"target": "components/ui/textarea.tsx"
|
|
226
577
|
}
|
|
227
578
|
],
|
|
228
|
-
"categories": [
|
|
579
|
+
"categories": [
|
|
580
|
+
"primitives",
|
|
581
|
+
"forms"
|
|
582
|
+
]
|
|
229
583
|
},
|
|
230
584
|
{
|
|
231
|
-
"name": "
|
|
585
|
+
"name": "typewriter-text",
|
|
232
586
|
"type": "registry:ui",
|
|
233
|
-
"title": "
|
|
234
|
-
"description": "
|
|
235
|
-
"dependencies": [
|
|
587
|
+
"title": "Typewriter Text",
|
|
588
|
+
"description": "Text that types itself out, one character at a time.",
|
|
589
|
+
"dependencies": [],
|
|
236
590
|
"registryDependencies": [],
|
|
237
591
|
"files": [
|
|
238
592
|
{
|
|
239
|
-
"path": "registry/effects/
|
|
593
|
+
"path": "registry/effects/typewriter-text/typewriter-text.tsx",
|
|
240
594
|
"type": "registry:ui",
|
|
241
|
-
"target": "components/ui/
|
|
595
|
+
"target": "components/ui/typewriter-text.tsx"
|
|
242
596
|
}
|
|
243
597
|
],
|
|
244
|
-
"categories": [
|
|
598
|
+
"categories": [
|
|
599
|
+
"effects",
|
|
600
|
+
"text"
|
|
601
|
+
]
|
|
245
602
|
}
|
|
246
603
|
]
|
|
247
604
|
}
|