@greatapps/greatauth-ui 0.1.5 → 0.2.1
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/dist/index.d.ts +6 -36
- package/dist/ui.d.ts +157 -0
- package/dist/ui.js +2161 -0
- package/dist/ui.js.map +1 -0
- package/dist/utils-DPybL8ti.d.ts +76 -0
- package/package.json +12 -4
- package/src/components/ui/alert-dialog.tsx +170 -0
- package/src/components/ui/command.tsx +140 -0
- package/src/components/ui/dialog.tsx +146 -0
- package/src/components/ui/progress.tsx +31 -0
- package/src/components/ui/scroll-area.tsx +55 -0
- package/src/components/ui/select.tsx +184 -0
- package/src/components/ui/table.tsx +101 -0
- package/src/components/ui/tabs.tsx +90 -0
- package/src/components/ui/textarea.tsx +18 -0
- package/src/ui.ts +178 -0
package/dist/ui.js
ADDED
|
@@ -0,0 +1,2161 @@
|
|
|
1
|
+
// src/lib/utils.ts
|
|
2
|
+
import { clsx } from "clsx";
|
|
3
|
+
import { twMerge } from "tailwind-merge";
|
|
4
|
+
function cn(...inputs) {
|
|
5
|
+
return twMerge(clsx(inputs));
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
// src/components/ui/button.tsx
|
|
9
|
+
import { cva } from "class-variance-authority";
|
|
10
|
+
import { Slot } from "radix-ui";
|
|
11
|
+
import { jsx } from "react/jsx-runtime";
|
|
12
|
+
var buttonVariants = cva(
|
|
13
|
+
"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-md border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-3 aria-invalid:ring-3 [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none",
|
|
14
|
+
{
|
|
15
|
+
variants: {
|
|
16
|
+
variant: {
|
|
17
|
+
default: "bg-primary text-primary-foreground hover:bg-primary/80",
|
|
18
|
+
outline: "border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground shadow-xs",
|
|
19
|
+
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
|
|
20
|
+
ghost: "hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground",
|
|
21
|
+
destructive: "bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30",
|
|
22
|
+
link: "text-primary underline-offset-4 hover:underline"
|
|
23
|
+
},
|
|
24
|
+
size: {
|
|
25
|
+
default: "h-9 gap-1.5 px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
26
|
+
xs: "h-6 gap-1 rounded-[min(var(--radius-md),8px)] px-2 text-xs in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
|
|
27
|
+
sm: "h-8 gap-1 rounded-[min(var(--radius-md),10px)] px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5",
|
|
28
|
+
lg: "h-10 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",
|
|
29
|
+
icon: "size-9",
|
|
30
|
+
"icon-xs": "size-6 rounded-[min(var(--radius-md),8px)] in-data-[slot=button-group]:rounded-md [&_svg:not([class*='size-'])]:size-3",
|
|
31
|
+
"icon-sm": "size-8 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-md",
|
|
32
|
+
"icon-lg": "size-10"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
defaultVariants: {
|
|
36
|
+
variant: "default",
|
|
37
|
+
size: "default"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
);
|
|
41
|
+
function Button({
|
|
42
|
+
className,
|
|
43
|
+
variant = "default",
|
|
44
|
+
size = "default",
|
|
45
|
+
asChild = false,
|
|
46
|
+
...props
|
|
47
|
+
}) {
|
|
48
|
+
const Comp = asChild ? Slot.Root : "button";
|
|
49
|
+
return /* @__PURE__ */ jsx(
|
|
50
|
+
Comp,
|
|
51
|
+
{
|
|
52
|
+
"data-slot": "button",
|
|
53
|
+
"data-variant": variant,
|
|
54
|
+
"data-size": size,
|
|
55
|
+
className: cn(buttonVariants({ variant, size, className })),
|
|
56
|
+
...props
|
|
57
|
+
}
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// src/components/ui/dialog.tsx
|
|
62
|
+
import { Dialog as DialogPrimitive } from "radix-ui";
|
|
63
|
+
import { X } from "lucide-react";
|
|
64
|
+
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
65
|
+
function Dialog({
|
|
66
|
+
...props
|
|
67
|
+
}) {
|
|
68
|
+
return /* @__PURE__ */ jsx2(DialogPrimitive.Root, { "data-slot": "dialog", ...props });
|
|
69
|
+
}
|
|
70
|
+
function DialogTrigger({
|
|
71
|
+
...props
|
|
72
|
+
}) {
|
|
73
|
+
return /* @__PURE__ */ jsx2(DialogPrimitive.Trigger, { "data-slot": "dialog-trigger", ...props });
|
|
74
|
+
}
|
|
75
|
+
function DialogPortal({
|
|
76
|
+
...props
|
|
77
|
+
}) {
|
|
78
|
+
return /* @__PURE__ */ jsx2(DialogPrimitive.Portal, { "data-slot": "dialog-portal", ...props });
|
|
79
|
+
}
|
|
80
|
+
function DialogClose({
|
|
81
|
+
...props
|
|
82
|
+
}) {
|
|
83
|
+
return /* @__PURE__ */ jsx2(DialogPrimitive.Close, { "data-slot": "dialog-close", ...props });
|
|
84
|
+
}
|
|
85
|
+
function DialogOverlay({
|
|
86
|
+
className,
|
|
87
|
+
...props
|
|
88
|
+
}) {
|
|
89
|
+
return /* @__PURE__ */ jsx2(
|
|
90
|
+
DialogPrimitive.Overlay,
|
|
91
|
+
{
|
|
92
|
+
"data-slot": "dialog-overlay",
|
|
93
|
+
className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 isolate z-50", className),
|
|
94
|
+
...props
|
|
95
|
+
}
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
function DialogContent({
|
|
99
|
+
className,
|
|
100
|
+
children,
|
|
101
|
+
showCloseButton = true,
|
|
102
|
+
...props
|
|
103
|
+
}) {
|
|
104
|
+
return /* @__PURE__ */ jsxs(DialogPortal, { children: [
|
|
105
|
+
/* @__PURE__ */ jsx2(DialogOverlay, {}),
|
|
106
|
+
/* @__PURE__ */ jsxs(
|
|
107
|
+
DialogPrimitive.Content,
|
|
108
|
+
{
|
|
109
|
+
"data-slot": "dialog-content",
|
|
110
|
+
className: cn(
|
|
111
|
+
"bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/10 grid max-w-[calc(100%-2rem)] gap-6 rounded-xl p-6 text-sm ring-1 duration-100 sm:max-w-md fixed top-1/2 left-1/2 z-50 w-full -translate-x-1/2 -translate-y-1/2 outline-none",
|
|
112
|
+
className
|
|
113
|
+
),
|
|
114
|
+
...props,
|
|
115
|
+
children: [
|
|
116
|
+
children,
|
|
117
|
+
showCloseButton && /* @__PURE__ */ jsx2(DialogPrimitive.Close, { "data-slot": "dialog-close", asChild: true, children: /* @__PURE__ */ jsxs(Button, { variant: "ghost", className: "absolute top-4 right-4", size: "icon-sm", children: [
|
|
118
|
+
/* @__PURE__ */ jsx2(X, {}),
|
|
119
|
+
/* @__PURE__ */ jsx2("span", { className: "sr-only", children: "Close" })
|
|
120
|
+
] }) })
|
|
121
|
+
]
|
|
122
|
+
}
|
|
123
|
+
)
|
|
124
|
+
] });
|
|
125
|
+
}
|
|
126
|
+
function DialogHeader({ className, ...props }) {
|
|
127
|
+
return /* @__PURE__ */ jsx2(
|
|
128
|
+
"div",
|
|
129
|
+
{
|
|
130
|
+
"data-slot": "dialog-header",
|
|
131
|
+
className: cn("gap-2 flex flex-col", className),
|
|
132
|
+
...props
|
|
133
|
+
}
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
function DialogFooter({
|
|
137
|
+
className,
|
|
138
|
+
children,
|
|
139
|
+
...props
|
|
140
|
+
}) {
|
|
141
|
+
return /* @__PURE__ */ jsx2(
|
|
142
|
+
"div",
|
|
143
|
+
{
|
|
144
|
+
"data-slot": "dialog-footer",
|
|
145
|
+
className: cn(
|
|
146
|
+
"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
|
|
147
|
+
className
|
|
148
|
+
),
|
|
149
|
+
...props,
|
|
150
|
+
children
|
|
151
|
+
}
|
|
152
|
+
);
|
|
153
|
+
}
|
|
154
|
+
function DialogTitle({
|
|
155
|
+
className,
|
|
156
|
+
...props
|
|
157
|
+
}) {
|
|
158
|
+
return /* @__PURE__ */ jsx2(
|
|
159
|
+
DialogPrimitive.Title,
|
|
160
|
+
{
|
|
161
|
+
"data-slot": "dialog-title",
|
|
162
|
+
className: cn("leading-none font-medium", className),
|
|
163
|
+
...props
|
|
164
|
+
}
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
function DialogDescription({
|
|
168
|
+
className,
|
|
169
|
+
...props
|
|
170
|
+
}) {
|
|
171
|
+
return /* @__PURE__ */ jsx2(
|
|
172
|
+
DialogPrimitive.Description,
|
|
173
|
+
{
|
|
174
|
+
"data-slot": "dialog-description",
|
|
175
|
+
className: cn("text-muted-foreground *:[a]:hover:text-foreground text-sm *:[a]:underline *:[a]:underline-offset-3", className),
|
|
176
|
+
...props
|
|
177
|
+
}
|
|
178
|
+
);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// src/components/ui/alert-dialog.tsx
|
|
182
|
+
import { AlertDialog as AlertDialogPrimitive } from "radix-ui";
|
|
183
|
+
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
184
|
+
function AlertDialog({
|
|
185
|
+
...props
|
|
186
|
+
}) {
|
|
187
|
+
return /* @__PURE__ */ jsx3(AlertDialogPrimitive.Root, { "data-slot": "alert-dialog", ...props });
|
|
188
|
+
}
|
|
189
|
+
function AlertDialogTrigger({
|
|
190
|
+
...props
|
|
191
|
+
}) {
|
|
192
|
+
return /* @__PURE__ */ jsx3(AlertDialogPrimitive.Trigger, { "data-slot": "alert-dialog-trigger", ...props });
|
|
193
|
+
}
|
|
194
|
+
function AlertDialogPortal({
|
|
195
|
+
...props
|
|
196
|
+
}) {
|
|
197
|
+
return /* @__PURE__ */ jsx3(AlertDialogPrimitive.Portal, { "data-slot": "alert-dialog-portal", ...props });
|
|
198
|
+
}
|
|
199
|
+
function AlertDialogOverlay({
|
|
200
|
+
className,
|
|
201
|
+
...props
|
|
202
|
+
}) {
|
|
203
|
+
return /* @__PURE__ */ jsx3(
|
|
204
|
+
AlertDialogPrimitive.Overlay,
|
|
205
|
+
{
|
|
206
|
+
"data-slot": "alert-dialog-overlay",
|
|
207
|
+
className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 z-50", className),
|
|
208
|
+
...props
|
|
209
|
+
}
|
|
210
|
+
);
|
|
211
|
+
}
|
|
212
|
+
function AlertDialogContent({
|
|
213
|
+
className,
|
|
214
|
+
size = "default",
|
|
215
|
+
...props
|
|
216
|
+
}) {
|
|
217
|
+
return /* @__PURE__ */ jsxs2(AlertDialogPortal, { children: [
|
|
218
|
+
/* @__PURE__ */ jsx3(AlertDialogOverlay, {}),
|
|
219
|
+
/* @__PURE__ */ jsx3(
|
|
220
|
+
AlertDialogPrimitive.Content,
|
|
221
|
+
{
|
|
222
|
+
"data-slot": "alert-dialog-content",
|
|
223
|
+
"data-size": size,
|
|
224
|
+
className: cn(
|
|
225
|
+
"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 bg-background ring-foreground/10 gap-6 rounded-xl p-6 ring-1 duration-100 data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-lg group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 outline-none",
|
|
226
|
+
className
|
|
227
|
+
),
|
|
228
|
+
...props
|
|
229
|
+
}
|
|
230
|
+
)
|
|
231
|
+
] });
|
|
232
|
+
}
|
|
233
|
+
function AlertDialogHeader({
|
|
234
|
+
className,
|
|
235
|
+
...props
|
|
236
|
+
}) {
|
|
237
|
+
return /* @__PURE__ */ jsx3(
|
|
238
|
+
"div",
|
|
239
|
+
{
|
|
240
|
+
"data-slot": "alert-dialog-header",
|
|
241
|
+
className: cn("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]", className),
|
|
242
|
+
...props
|
|
243
|
+
}
|
|
244
|
+
);
|
|
245
|
+
}
|
|
246
|
+
function AlertDialogFooter({
|
|
247
|
+
className,
|
|
248
|
+
...props
|
|
249
|
+
}) {
|
|
250
|
+
return /* @__PURE__ */ jsx3(
|
|
251
|
+
"div",
|
|
252
|
+
{
|
|
253
|
+
"data-slot": "alert-dialog-footer",
|
|
254
|
+
className: cn(
|
|
255
|
+
"flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",
|
|
256
|
+
className
|
|
257
|
+
),
|
|
258
|
+
...props
|
|
259
|
+
}
|
|
260
|
+
);
|
|
261
|
+
}
|
|
262
|
+
function AlertDialogTitle({
|
|
263
|
+
className,
|
|
264
|
+
...props
|
|
265
|
+
}) {
|
|
266
|
+
return /* @__PURE__ */ jsx3(
|
|
267
|
+
AlertDialogPrimitive.Title,
|
|
268
|
+
{
|
|
269
|
+
"data-slot": "alert-dialog-title",
|
|
270
|
+
className: cn("text-lg font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2", className),
|
|
271
|
+
...props
|
|
272
|
+
}
|
|
273
|
+
);
|
|
274
|
+
}
|
|
275
|
+
function AlertDialogDescription({
|
|
276
|
+
className,
|
|
277
|
+
...props
|
|
278
|
+
}) {
|
|
279
|
+
return /* @__PURE__ */ jsx3(
|
|
280
|
+
AlertDialogPrimitive.Description,
|
|
281
|
+
{
|
|
282
|
+
"data-slot": "alert-dialog-description",
|
|
283
|
+
className: cn("text-muted-foreground *:[a]:hover:text-foreground text-sm text-balance md:text-pretty *:[a]:underline *:[a]:underline-offset-3", className),
|
|
284
|
+
...props
|
|
285
|
+
}
|
|
286
|
+
);
|
|
287
|
+
}
|
|
288
|
+
function AlertDialogAction({
|
|
289
|
+
className,
|
|
290
|
+
variant = "default",
|
|
291
|
+
size = "default",
|
|
292
|
+
...props
|
|
293
|
+
}) {
|
|
294
|
+
return /* @__PURE__ */ jsx3(Button, { variant, size, asChild: true, children: /* @__PURE__ */ jsx3(
|
|
295
|
+
AlertDialogPrimitive.Action,
|
|
296
|
+
{
|
|
297
|
+
"data-slot": "alert-dialog-action",
|
|
298
|
+
className: cn(className),
|
|
299
|
+
...props
|
|
300
|
+
}
|
|
301
|
+
) });
|
|
302
|
+
}
|
|
303
|
+
function AlertDialogCancel({
|
|
304
|
+
className,
|
|
305
|
+
variant = "outline",
|
|
306
|
+
size = "default",
|
|
307
|
+
...props
|
|
308
|
+
}) {
|
|
309
|
+
return /* @__PURE__ */ jsx3(Button, { variant, size, asChild: true, children: /* @__PURE__ */ jsx3(
|
|
310
|
+
AlertDialogPrimitive.Cancel,
|
|
311
|
+
{
|
|
312
|
+
"data-slot": "alert-dialog-cancel",
|
|
313
|
+
className: cn(className),
|
|
314
|
+
...props
|
|
315
|
+
}
|
|
316
|
+
) });
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
// src/components/ui/select.tsx
|
|
320
|
+
import { Select as SelectPrimitive } from "radix-ui";
|
|
321
|
+
import { ChevronsUpDown, Check, ChevronUp, ChevronDown } from "lucide-react";
|
|
322
|
+
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
323
|
+
function Select({
|
|
324
|
+
...props
|
|
325
|
+
}) {
|
|
326
|
+
return /* @__PURE__ */ jsx4(SelectPrimitive.Root, { "data-slot": "select", ...props });
|
|
327
|
+
}
|
|
328
|
+
function SelectGroup({
|
|
329
|
+
className,
|
|
330
|
+
...props
|
|
331
|
+
}) {
|
|
332
|
+
return /* @__PURE__ */ jsx4(
|
|
333
|
+
SelectPrimitive.Group,
|
|
334
|
+
{
|
|
335
|
+
"data-slot": "select-group",
|
|
336
|
+
className: cn("scroll-my-1 p-1", className),
|
|
337
|
+
...props
|
|
338
|
+
}
|
|
339
|
+
);
|
|
340
|
+
}
|
|
341
|
+
function SelectValue({
|
|
342
|
+
...props
|
|
343
|
+
}) {
|
|
344
|
+
return /* @__PURE__ */ jsx4(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
|
|
345
|
+
}
|
|
346
|
+
function SelectTrigger({
|
|
347
|
+
className,
|
|
348
|
+
size = "default",
|
|
349
|
+
children,
|
|
350
|
+
...props
|
|
351
|
+
}) {
|
|
352
|
+
return /* @__PURE__ */ jsxs3(
|
|
353
|
+
SelectPrimitive.Trigger,
|
|
354
|
+
{
|
|
355
|
+
"data-slot": "select-trigger",
|
|
356
|
+
"data-size": size,
|
|
357
|
+
className: cn(
|
|
358
|
+
"border-input data-placeholder:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-md border bg-transparent py-2 pr-2 pl-2.5 text-sm shadow-xs transition-[color,box-shadow] focus-visible:ring-3 aria-invalid:ring-3 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4 flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
359
|
+
className
|
|
360
|
+
),
|
|
361
|
+
...props,
|
|
362
|
+
children: [
|
|
363
|
+
children,
|
|
364
|
+
/* @__PURE__ */ jsx4(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx4(ChevronsUpDown, { className: "text-muted-foreground size-4 pointer-events-none" }) })
|
|
365
|
+
]
|
|
366
|
+
}
|
|
367
|
+
);
|
|
368
|
+
}
|
|
369
|
+
function SelectContent({
|
|
370
|
+
className,
|
|
371
|
+
children,
|
|
372
|
+
position = "item-aligned",
|
|
373
|
+
align = "center",
|
|
374
|
+
...props
|
|
375
|
+
}) {
|
|
376
|
+
return /* @__PURE__ */ jsx4(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs3(
|
|
377
|
+
SelectPrimitive.Content,
|
|
378
|
+
{
|
|
379
|
+
"data-slot": "select-content",
|
|
380
|
+
"data-align-trigger": position === "item-aligned",
|
|
381
|
+
className: cn("bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-md shadow-md ring-1 duration-100 relative z-50 max-h-(--radix-select-content-available-height) origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto data-[align-trigger=true]:animate-none", position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", className),
|
|
382
|
+
position,
|
|
383
|
+
align,
|
|
384
|
+
...props,
|
|
385
|
+
children: [
|
|
386
|
+
/* @__PURE__ */ jsx4(SelectScrollUpButton, {}),
|
|
387
|
+
/* @__PURE__ */ jsx4(
|
|
388
|
+
SelectPrimitive.Viewport,
|
|
389
|
+
{
|
|
390
|
+
"data-position": position,
|
|
391
|
+
className: cn(
|
|
392
|
+
"data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)",
|
|
393
|
+
position === "popper" && ""
|
|
394
|
+
),
|
|
395
|
+
children
|
|
396
|
+
}
|
|
397
|
+
),
|
|
398
|
+
/* @__PURE__ */ jsx4(SelectScrollDownButton, {})
|
|
399
|
+
]
|
|
400
|
+
}
|
|
401
|
+
) });
|
|
402
|
+
}
|
|
403
|
+
function SelectLabel({
|
|
404
|
+
className,
|
|
405
|
+
...props
|
|
406
|
+
}) {
|
|
407
|
+
return /* @__PURE__ */ jsx4(
|
|
408
|
+
SelectPrimitive.Label,
|
|
409
|
+
{
|
|
410
|
+
"data-slot": "select-label",
|
|
411
|
+
className: cn("text-muted-foreground px-2 py-1.5 text-xs", className),
|
|
412
|
+
...props
|
|
413
|
+
}
|
|
414
|
+
);
|
|
415
|
+
}
|
|
416
|
+
function SelectItem({
|
|
417
|
+
className,
|
|
418
|
+
children,
|
|
419
|
+
...props
|
|
420
|
+
}) {
|
|
421
|
+
return /* @__PURE__ */ jsxs3(
|
|
422
|
+
SelectPrimitive.Item,
|
|
423
|
+
{
|
|
424
|
+
"data-slot": "select-item",
|
|
425
|
+
className: cn(
|
|
426
|
+
"focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
427
|
+
className
|
|
428
|
+
),
|
|
429
|
+
...props,
|
|
430
|
+
children: [
|
|
431
|
+
/* @__PURE__ */ jsx4("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx4(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx4(Check, { className: "pointer-events-none" }) }) }),
|
|
432
|
+
/* @__PURE__ */ jsx4(SelectPrimitive.ItemText, { children })
|
|
433
|
+
]
|
|
434
|
+
}
|
|
435
|
+
);
|
|
436
|
+
}
|
|
437
|
+
function SelectSeparator({
|
|
438
|
+
className,
|
|
439
|
+
...props
|
|
440
|
+
}) {
|
|
441
|
+
return /* @__PURE__ */ jsx4(
|
|
442
|
+
SelectPrimitive.Separator,
|
|
443
|
+
{
|
|
444
|
+
"data-slot": "select-separator",
|
|
445
|
+
className: cn("bg-border -mx-1 my-1 h-px pointer-events-none", className),
|
|
446
|
+
...props
|
|
447
|
+
}
|
|
448
|
+
);
|
|
449
|
+
}
|
|
450
|
+
function SelectScrollUpButton({
|
|
451
|
+
className,
|
|
452
|
+
...props
|
|
453
|
+
}) {
|
|
454
|
+
return /* @__PURE__ */ jsx4(
|
|
455
|
+
SelectPrimitive.ScrollUpButton,
|
|
456
|
+
{
|
|
457
|
+
"data-slot": "select-scroll-up-button",
|
|
458
|
+
className: cn("bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4", className),
|
|
459
|
+
...props,
|
|
460
|
+
children: /* @__PURE__ */ jsx4(ChevronUp, {})
|
|
461
|
+
}
|
|
462
|
+
);
|
|
463
|
+
}
|
|
464
|
+
function SelectScrollDownButton({
|
|
465
|
+
className,
|
|
466
|
+
...props
|
|
467
|
+
}) {
|
|
468
|
+
return /* @__PURE__ */ jsx4(
|
|
469
|
+
SelectPrimitive.ScrollDownButton,
|
|
470
|
+
{
|
|
471
|
+
"data-slot": "select-scroll-down-button",
|
|
472
|
+
className: cn("bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4", className),
|
|
473
|
+
...props,
|
|
474
|
+
children: /* @__PURE__ */ jsx4(ChevronDown, {})
|
|
475
|
+
}
|
|
476
|
+
);
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
// src/components/ui/input.tsx
|
|
480
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
481
|
+
function Input({ className, type, ...props }) {
|
|
482
|
+
return /* @__PURE__ */ jsx5(
|
|
483
|
+
"input",
|
|
484
|
+
{
|
|
485
|
+
type,
|
|
486
|
+
"data-slot": "input",
|
|
487
|
+
className: cn(
|
|
488
|
+
"dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 rounded-md border bg-transparent px-2.5 py-1 text-base shadow-xs transition-[color,box-shadow] file:h-7 file:text-sm file:font-medium focus-visible:ring-3 aria-invalid:ring-3 md:text-sm file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50",
|
|
489
|
+
className
|
|
490
|
+
),
|
|
491
|
+
...props
|
|
492
|
+
}
|
|
493
|
+
);
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
// src/components/ui/label.tsx
|
|
497
|
+
import { Label as LabelPrimitive } from "radix-ui";
|
|
498
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
499
|
+
function Label({
|
|
500
|
+
className,
|
|
501
|
+
...props
|
|
502
|
+
}) {
|
|
503
|
+
return /* @__PURE__ */ jsx6(
|
|
504
|
+
LabelPrimitive.Root,
|
|
505
|
+
{
|
|
506
|
+
"data-slot": "label",
|
|
507
|
+
className: cn(
|
|
508
|
+
"gap-2 text-sm leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50 flex items-center select-none group-data-[disabled=true]:pointer-events-none peer-disabled:cursor-not-allowed",
|
|
509
|
+
className
|
|
510
|
+
),
|
|
511
|
+
...props
|
|
512
|
+
}
|
|
513
|
+
);
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
// src/components/ui/textarea.tsx
|
|
517
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
518
|
+
function Textarea({ className, ...props }) {
|
|
519
|
+
return /* @__PURE__ */ jsx7(
|
|
520
|
+
"textarea",
|
|
521
|
+
{
|
|
522
|
+
"data-slot": "textarea",
|
|
523
|
+
className: cn(
|
|
524
|
+
"border-input dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-md border bg-transparent px-2.5 py-2 text-base shadow-xs transition-[color,box-shadow] focus-visible:ring-3 aria-invalid:ring-3 md:text-sm placeholder:text-muted-foreground flex field-sizing-content min-h-16 w-full outline-none disabled:cursor-not-allowed disabled:opacity-50",
|
|
525
|
+
className
|
|
526
|
+
),
|
|
527
|
+
...props
|
|
528
|
+
}
|
|
529
|
+
);
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
// src/components/ui/card.tsx
|
|
533
|
+
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
534
|
+
function Card({
|
|
535
|
+
className,
|
|
536
|
+
size = "default",
|
|
537
|
+
...props
|
|
538
|
+
}) {
|
|
539
|
+
return /* @__PURE__ */ jsx8(
|
|
540
|
+
"div",
|
|
541
|
+
{
|
|
542
|
+
"data-slot": "card",
|
|
543
|
+
"data-size": size,
|
|
544
|
+
className: cn("ring-foreground/10 bg-card text-card-foreground gap-6 overflow-hidden rounded-xl py-6 text-sm shadow-xs ring-1 has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col", className),
|
|
545
|
+
...props
|
|
546
|
+
}
|
|
547
|
+
);
|
|
548
|
+
}
|
|
549
|
+
function CardHeader({ className, ...props }) {
|
|
550
|
+
return /* @__PURE__ */ jsx8(
|
|
551
|
+
"div",
|
|
552
|
+
{
|
|
553
|
+
"data-slot": "card-header",
|
|
554
|
+
className: cn(
|
|
555
|
+
"gap-1 rounded-t-xl px-6 group-data-[size=sm]/card:px-4 [.border-b]:pb-6 group-data-[size=sm]/card:[.border-b]:pb-4 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]",
|
|
556
|
+
className
|
|
557
|
+
),
|
|
558
|
+
...props
|
|
559
|
+
}
|
|
560
|
+
);
|
|
561
|
+
}
|
|
562
|
+
function CardTitle({ className, ...props }) {
|
|
563
|
+
return /* @__PURE__ */ jsx8(
|
|
564
|
+
"div",
|
|
565
|
+
{
|
|
566
|
+
"data-slot": "card-title",
|
|
567
|
+
className: cn("text-base leading-normal font-medium group-data-[size=sm]/card:text-sm", className),
|
|
568
|
+
...props
|
|
569
|
+
}
|
|
570
|
+
);
|
|
571
|
+
}
|
|
572
|
+
function CardDescription({ className, ...props }) {
|
|
573
|
+
return /* @__PURE__ */ jsx8(
|
|
574
|
+
"div",
|
|
575
|
+
{
|
|
576
|
+
"data-slot": "card-description",
|
|
577
|
+
className: cn("text-muted-foreground text-sm", className),
|
|
578
|
+
...props
|
|
579
|
+
}
|
|
580
|
+
);
|
|
581
|
+
}
|
|
582
|
+
function CardContent({ className, ...props }) {
|
|
583
|
+
return /* @__PURE__ */ jsx8(
|
|
584
|
+
"div",
|
|
585
|
+
{
|
|
586
|
+
"data-slot": "card-content",
|
|
587
|
+
className: cn("px-6 group-data-[size=sm]/card:px-4", className),
|
|
588
|
+
...props
|
|
589
|
+
}
|
|
590
|
+
);
|
|
591
|
+
}
|
|
592
|
+
function CardFooter({ className, ...props }) {
|
|
593
|
+
return /* @__PURE__ */ jsx8(
|
|
594
|
+
"div",
|
|
595
|
+
{
|
|
596
|
+
"data-slot": "card-footer",
|
|
597
|
+
className: cn("rounded-b-xl px-6 group-data-[size=sm]/card:px-4 [.border-t]:pt-6 group-data-[size=sm]/card:[.border-t]:pt-4 flex items-center", className),
|
|
598
|
+
...props
|
|
599
|
+
}
|
|
600
|
+
);
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
// src/components/ui/badge.tsx
|
|
604
|
+
import { cva as cva2 } from "class-variance-authority";
|
|
605
|
+
import { Slot as Slot2 } from "radix-ui";
|
|
606
|
+
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
607
|
+
var badgeVariants = cva2(
|
|
608
|
+
"h-5 gap-1 rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3! inline-flex items-center justify-center w-fit whitespace-nowrap shrink-0 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive overflow-hidden group/badge",
|
|
609
|
+
{
|
|
610
|
+
variants: {
|
|
611
|
+
variant: {
|
|
612
|
+
default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
|
|
613
|
+
secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
|
|
614
|
+
destructive: "bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20",
|
|
615
|
+
outline: "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",
|
|
616
|
+
ghost: "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",
|
|
617
|
+
link: "text-primary underline-offset-4 hover:underline"
|
|
618
|
+
}
|
|
619
|
+
},
|
|
620
|
+
defaultVariants: {
|
|
621
|
+
variant: "default"
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
);
|
|
625
|
+
function Badge({
|
|
626
|
+
className,
|
|
627
|
+
variant = "default",
|
|
628
|
+
asChild = false,
|
|
629
|
+
...props
|
|
630
|
+
}) {
|
|
631
|
+
const Comp = asChild ? Slot2.Root : "span";
|
|
632
|
+
return /* @__PURE__ */ jsx9(
|
|
633
|
+
Comp,
|
|
634
|
+
{
|
|
635
|
+
"data-slot": "badge",
|
|
636
|
+
"data-variant": variant,
|
|
637
|
+
className: cn(badgeVariants({ variant }), className),
|
|
638
|
+
...props
|
|
639
|
+
}
|
|
640
|
+
);
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
// src/components/ui/avatar.tsx
|
|
644
|
+
import { Avatar as AvatarPrimitive } from "radix-ui";
|
|
645
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
646
|
+
function Avatar({
|
|
647
|
+
className,
|
|
648
|
+
size = "default",
|
|
649
|
+
...props
|
|
650
|
+
}) {
|
|
651
|
+
return /* @__PURE__ */ jsx10(
|
|
652
|
+
AvatarPrimitive.Root,
|
|
653
|
+
{
|
|
654
|
+
"data-slot": "avatar",
|
|
655
|
+
"data-size": size,
|
|
656
|
+
className: cn(
|
|
657
|
+
"size-8 rounded-full after:rounded-full data-[size=lg]:size-10 data-[size=sm]:size-6 after:border-border group/avatar relative flex shrink-0 select-none after:absolute after:inset-0 after:border after:mix-blend-darken dark:after:mix-blend-lighten",
|
|
658
|
+
className
|
|
659
|
+
),
|
|
660
|
+
...props
|
|
661
|
+
}
|
|
662
|
+
);
|
|
663
|
+
}
|
|
664
|
+
function AvatarImage({
|
|
665
|
+
className,
|
|
666
|
+
...props
|
|
667
|
+
}) {
|
|
668
|
+
return /* @__PURE__ */ jsx10(
|
|
669
|
+
AvatarPrimitive.Image,
|
|
670
|
+
{
|
|
671
|
+
"data-slot": "avatar-image",
|
|
672
|
+
className: cn(
|
|
673
|
+
"rounded-full aspect-square size-full object-cover",
|
|
674
|
+
className
|
|
675
|
+
),
|
|
676
|
+
...props
|
|
677
|
+
}
|
|
678
|
+
);
|
|
679
|
+
}
|
|
680
|
+
function AvatarFallback({
|
|
681
|
+
className,
|
|
682
|
+
...props
|
|
683
|
+
}) {
|
|
684
|
+
return /* @__PURE__ */ jsx10(
|
|
685
|
+
AvatarPrimitive.Fallback,
|
|
686
|
+
{
|
|
687
|
+
"data-slot": "avatar-fallback",
|
|
688
|
+
className: cn(
|
|
689
|
+
"bg-muted text-muted-foreground rounded-full flex size-full items-center justify-center text-sm group-data-[size=sm]/avatar:text-xs",
|
|
690
|
+
className
|
|
691
|
+
),
|
|
692
|
+
...props
|
|
693
|
+
}
|
|
694
|
+
);
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
// src/components/ui/tooltip.tsx
|
|
698
|
+
import { Tooltip as TooltipPrimitive } from "radix-ui";
|
|
699
|
+
import { jsx as jsx11, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
700
|
+
function TooltipProvider({
|
|
701
|
+
delayDuration = 0,
|
|
702
|
+
...props
|
|
703
|
+
}) {
|
|
704
|
+
return /* @__PURE__ */ jsx11(
|
|
705
|
+
TooltipPrimitive.Provider,
|
|
706
|
+
{
|
|
707
|
+
"data-slot": "tooltip-provider",
|
|
708
|
+
delayDuration,
|
|
709
|
+
...props
|
|
710
|
+
}
|
|
711
|
+
);
|
|
712
|
+
}
|
|
713
|
+
function Tooltip({
|
|
714
|
+
...props
|
|
715
|
+
}) {
|
|
716
|
+
return /* @__PURE__ */ jsx11(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props });
|
|
717
|
+
}
|
|
718
|
+
function TooltipTrigger({
|
|
719
|
+
...props
|
|
720
|
+
}) {
|
|
721
|
+
return /* @__PURE__ */ jsx11(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
|
|
722
|
+
}
|
|
723
|
+
function TooltipContent({
|
|
724
|
+
className,
|
|
725
|
+
sideOffset = 0,
|
|
726
|
+
children,
|
|
727
|
+
...props
|
|
728
|
+
}) {
|
|
729
|
+
return /* @__PURE__ */ jsx11(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs4(
|
|
730
|
+
TooltipPrimitive.Content,
|
|
731
|
+
{
|
|
732
|
+
"data-slot": "tooltip-content",
|
|
733
|
+
sideOffset,
|
|
734
|
+
className: cn(
|
|
735
|
+
"data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 rounded-md px-3 py-1.5 text-xs bg-foreground text-background z-50 w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin)",
|
|
736
|
+
className
|
|
737
|
+
),
|
|
738
|
+
...props,
|
|
739
|
+
children: [
|
|
740
|
+
children,
|
|
741
|
+
/* @__PURE__ */ jsx11(TooltipPrimitive.Arrow, { className: "size-2.5 rotate-45 rounded-[2px] bg-foreground fill-foreground z-50 translate-y-[calc(-50%_-_2px)]" })
|
|
742
|
+
]
|
|
743
|
+
}
|
|
744
|
+
) });
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
// src/components/ui/dropdown-menu.tsx
|
|
748
|
+
import { DropdownMenu as DropdownMenuPrimitive } from "radix-ui";
|
|
749
|
+
import { Check as Check2, ChevronRight } from "lucide-react";
|
|
750
|
+
import { jsx as jsx12, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
751
|
+
function DropdownMenu({
|
|
752
|
+
...props
|
|
753
|
+
}) {
|
|
754
|
+
return /* @__PURE__ */ jsx12(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
|
|
755
|
+
}
|
|
756
|
+
function DropdownMenuTrigger({
|
|
757
|
+
...props
|
|
758
|
+
}) {
|
|
759
|
+
return /* @__PURE__ */ jsx12(
|
|
760
|
+
DropdownMenuPrimitive.Trigger,
|
|
761
|
+
{
|
|
762
|
+
"data-slot": "dropdown-menu-trigger",
|
|
763
|
+
...props
|
|
764
|
+
}
|
|
765
|
+
);
|
|
766
|
+
}
|
|
767
|
+
function DropdownMenuContent({
|
|
768
|
+
className,
|
|
769
|
+
align = "start",
|
|
770
|
+
sideOffset = 4,
|
|
771
|
+
...props
|
|
772
|
+
}) {
|
|
773
|
+
return /* @__PURE__ */ jsx12(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx12(
|
|
774
|
+
DropdownMenuPrimitive.Content,
|
|
775
|
+
{
|
|
776
|
+
"data-slot": "dropdown-menu-content",
|
|
777
|
+
sideOffset,
|
|
778
|
+
align,
|
|
779
|
+
className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-md p-1 shadow-md ring-1 duration-100 z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto data-[state=closed]:overflow-hidden", className),
|
|
780
|
+
...props
|
|
781
|
+
}
|
|
782
|
+
) });
|
|
783
|
+
}
|
|
784
|
+
function DropdownMenuGroup({
|
|
785
|
+
...props
|
|
786
|
+
}) {
|
|
787
|
+
return /* @__PURE__ */ jsx12(DropdownMenuPrimitive.Group, { "data-slot": "dropdown-menu-group", ...props });
|
|
788
|
+
}
|
|
789
|
+
function DropdownMenuItem({
|
|
790
|
+
className,
|
|
791
|
+
inset,
|
|
792
|
+
variant = "default",
|
|
793
|
+
...props
|
|
794
|
+
}) {
|
|
795
|
+
return /* @__PURE__ */ jsx12(
|
|
796
|
+
DropdownMenuPrimitive.Item,
|
|
797
|
+
{
|
|
798
|
+
"data-slot": "dropdown-menu-item",
|
|
799
|
+
"data-inset": inset,
|
|
800
|
+
"data-variant": variant,
|
|
801
|
+
className: cn(
|
|
802
|
+
"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-sm px-2 py-1.5 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4 group/dropdown-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
803
|
+
className
|
|
804
|
+
),
|
|
805
|
+
...props
|
|
806
|
+
}
|
|
807
|
+
);
|
|
808
|
+
}
|
|
809
|
+
function DropdownMenuLabel({
|
|
810
|
+
className,
|
|
811
|
+
inset,
|
|
812
|
+
...props
|
|
813
|
+
}) {
|
|
814
|
+
return /* @__PURE__ */ jsx12(
|
|
815
|
+
DropdownMenuPrimitive.Label,
|
|
816
|
+
{
|
|
817
|
+
"data-slot": "dropdown-menu-label",
|
|
818
|
+
"data-inset": inset,
|
|
819
|
+
className: cn("text-muted-foreground px-2 py-1.5 text-xs font-medium data-inset:pl-8", className),
|
|
820
|
+
...props
|
|
821
|
+
}
|
|
822
|
+
);
|
|
823
|
+
}
|
|
824
|
+
function DropdownMenuSeparator({
|
|
825
|
+
className,
|
|
826
|
+
...props
|
|
827
|
+
}) {
|
|
828
|
+
return /* @__PURE__ */ jsx12(
|
|
829
|
+
DropdownMenuPrimitive.Separator,
|
|
830
|
+
{
|
|
831
|
+
"data-slot": "dropdown-menu-separator",
|
|
832
|
+
className: cn("bg-border -mx-1 my-1 h-px", className),
|
|
833
|
+
...props
|
|
834
|
+
}
|
|
835
|
+
);
|
|
836
|
+
}
|
|
837
|
+
|
|
838
|
+
// src/components/ui/separator.tsx
|
|
839
|
+
import { Separator as SeparatorPrimitive } from "radix-ui";
|
|
840
|
+
import { jsx as jsx13 } from "react/jsx-runtime";
|
|
841
|
+
function Separator({
|
|
842
|
+
className,
|
|
843
|
+
orientation = "horizontal",
|
|
844
|
+
decorative = true,
|
|
845
|
+
...props
|
|
846
|
+
}) {
|
|
847
|
+
return /* @__PURE__ */ jsx13(
|
|
848
|
+
SeparatorPrimitive.Root,
|
|
849
|
+
{
|
|
850
|
+
"data-slot": "separator",
|
|
851
|
+
decorative,
|
|
852
|
+
orientation,
|
|
853
|
+
className: cn(
|
|
854
|
+
"bg-border shrink-0 data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",
|
|
855
|
+
className
|
|
856
|
+
),
|
|
857
|
+
...props
|
|
858
|
+
}
|
|
859
|
+
);
|
|
860
|
+
}
|
|
861
|
+
|
|
862
|
+
// src/components/ui/skeleton.tsx
|
|
863
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
864
|
+
function Skeleton({ className, ...props }) {
|
|
865
|
+
return /* @__PURE__ */ jsx14(
|
|
866
|
+
"div",
|
|
867
|
+
{
|
|
868
|
+
"data-slot": "skeleton",
|
|
869
|
+
className: cn("bg-muted rounded-md animate-pulse", className),
|
|
870
|
+
...props
|
|
871
|
+
}
|
|
872
|
+
);
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
// src/components/ui/scroll-area.tsx
|
|
876
|
+
import { ScrollArea as ScrollAreaPrimitive } from "radix-ui";
|
|
877
|
+
import { jsx as jsx15, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
878
|
+
function ScrollArea({
|
|
879
|
+
className,
|
|
880
|
+
children,
|
|
881
|
+
...props
|
|
882
|
+
}) {
|
|
883
|
+
return /* @__PURE__ */ jsxs6(
|
|
884
|
+
ScrollAreaPrimitive.Root,
|
|
885
|
+
{
|
|
886
|
+
"data-slot": "scroll-area",
|
|
887
|
+
className: cn("relative", className),
|
|
888
|
+
...props,
|
|
889
|
+
children: [
|
|
890
|
+
/* @__PURE__ */ jsx15(
|
|
891
|
+
ScrollAreaPrimitive.Viewport,
|
|
892
|
+
{
|
|
893
|
+
"data-slot": "scroll-area-viewport",
|
|
894
|
+
className: "focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",
|
|
895
|
+
children
|
|
896
|
+
}
|
|
897
|
+
),
|
|
898
|
+
/* @__PURE__ */ jsx15(ScrollBar, {}),
|
|
899
|
+
/* @__PURE__ */ jsx15(ScrollAreaPrimitive.Corner, {})
|
|
900
|
+
]
|
|
901
|
+
}
|
|
902
|
+
);
|
|
903
|
+
}
|
|
904
|
+
function ScrollBar({
|
|
905
|
+
className,
|
|
906
|
+
orientation = "vertical",
|
|
907
|
+
...props
|
|
908
|
+
}) {
|
|
909
|
+
return /* @__PURE__ */ jsx15(
|
|
910
|
+
ScrollAreaPrimitive.ScrollAreaScrollbar,
|
|
911
|
+
{
|
|
912
|
+
"data-slot": "scroll-area-scrollbar",
|
|
913
|
+
"data-orientation": orientation,
|
|
914
|
+
orientation,
|
|
915
|
+
className: cn(
|
|
916
|
+
"data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent flex touch-none p-px transition-colors select-none",
|
|
917
|
+
className
|
|
918
|
+
),
|
|
919
|
+
...props,
|
|
920
|
+
children: /* @__PURE__ */ jsx15(
|
|
921
|
+
ScrollAreaPrimitive.ScrollAreaThumb,
|
|
922
|
+
{
|
|
923
|
+
"data-slot": "scroll-area-thumb",
|
|
924
|
+
className: "rounded-full bg-border relative flex-1"
|
|
925
|
+
}
|
|
926
|
+
)
|
|
927
|
+
}
|
|
928
|
+
);
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
// src/components/ui/tabs.tsx
|
|
932
|
+
import { cva as cva3 } from "class-variance-authority";
|
|
933
|
+
import { Tabs as TabsPrimitive } from "radix-ui";
|
|
934
|
+
import { jsx as jsx16 } from "react/jsx-runtime";
|
|
935
|
+
function Tabs({
|
|
936
|
+
className,
|
|
937
|
+
orientation = "horizontal",
|
|
938
|
+
...props
|
|
939
|
+
}) {
|
|
940
|
+
return /* @__PURE__ */ jsx16(
|
|
941
|
+
TabsPrimitive.Root,
|
|
942
|
+
{
|
|
943
|
+
"data-slot": "tabs",
|
|
944
|
+
"data-orientation": orientation,
|
|
945
|
+
className: cn(
|
|
946
|
+
"gap-2 group/tabs flex data-horizontal:flex-col",
|
|
947
|
+
className
|
|
948
|
+
),
|
|
949
|
+
...props
|
|
950
|
+
}
|
|
951
|
+
);
|
|
952
|
+
}
|
|
953
|
+
var tabsListVariants = cva3(
|
|
954
|
+
"rounded-lg p-[3px] group-data-horizontal/tabs:h-9 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col",
|
|
955
|
+
{
|
|
956
|
+
variants: {
|
|
957
|
+
variant: {
|
|
958
|
+
default: "bg-muted",
|
|
959
|
+
line: "gap-1 bg-transparent"
|
|
960
|
+
}
|
|
961
|
+
},
|
|
962
|
+
defaultVariants: {
|
|
963
|
+
variant: "default"
|
|
964
|
+
}
|
|
965
|
+
}
|
|
966
|
+
);
|
|
967
|
+
function TabsList({
|
|
968
|
+
className,
|
|
969
|
+
variant = "default",
|
|
970
|
+
...props
|
|
971
|
+
}) {
|
|
972
|
+
return /* @__PURE__ */ jsx16(
|
|
973
|
+
TabsPrimitive.List,
|
|
974
|
+
{
|
|
975
|
+
"data-slot": "tabs-list",
|
|
976
|
+
"data-variant": variant,
|
|
977
|
+
className: cn(tabsListVariants({ variant }), className),
|
|
978
|
+
...props
|
|
979
|
+
}
|
|
980
|
+
);
|
|
981
|
+
}
|
|
982
|
+
function TabsTrigger({
|
|
983
|
+
className,
|
|
984
|
+
...props
|
|
985
|
+
}) {
|
|
986
|
+
return /* @__PURE__ */ jsx16(
|
|
987
|
+
TabsPrimitive.Trigger,
|
|
988
|
+
{
|
|
989
|
+
"data-slot": "tabs-trigger",
|
|
990
|
+
className: cn(
|
|
991
|
+
"gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg:not([class*='size-'])]:size-4 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground dark:text-muted-foreground dark:hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
992
|
+
"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent",
|
|
993
|
+
"data-active:bg-background dark:data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 data-active:text-foreground",
|
|
994
|
+
"after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100",
|
|
995
|
+
className
|
|
996
|
+
),
|
|
997
|
+
...props
|
|
998
|
+
}
|
|
999
|
+
);
|
|
1000
|
+
}
|
|
1001
|
+
function TabsContent({
|
|
1002
|
+
className,
|
|
1003
|
+
...props
|
|
1004
|
+
}) {
|
|
1005
|
+
return /* @__PURE__ */ jsx16(
|
|
1006
|
+
TabsPrimitive.Content,
|
|
1007
|
+
{
|
|
1008
|
+
"data-slot": "tabs-content",
|
|
1009
|
+
className: cn("text-sm flex-1 outline-none", className),
|
|
1010
|
+
...props
|
|
1011
|
+
}
|
|
1012
|
+
);
|
|
1013
|
+
}
|
|
1014
|
+
|
|
1015
|
+
// src/components/ui/table.tsx
|
|
1016
|
+
import { jsx as jsx17 } from "react/jsx-runtime";
|
|
1017
|
+
function Table({ className, ...props }) {
|
|
1018
|
+
return /* @__PURE__ */ jsx17("div", { "data-slot": "table-container", className: "relative w-full overflow-x-auto", children: /* @__PURE__ */ jsx17(
|
|
1019
|
+
"table",
|
|
1020
|
+
{
|
|
1021
|
+
"data-slot": "table",
|
|
1022
|
+
className: cn("w-full caption-bottom text-sm", className),
|
|
1023
|
+
...props
|
|
1024
|
+
}
|
|
1025
|
+
) });
|
|
1026
|
+
}
|
|
1027
|
+
function TableHeader({ className, ...props }) {
|
|
1028
|
+
return /* @__PURE__ */ jsx17(
|
|
1029
|
+
"thead",
|
|
1030
|
+
{
|
|
1031
|
+
"data-slot": "table-header",
|
|
1032
|
+
className: cn("[&_tr]:border-b", className),
|
|
1033
|
+
...props
|
|
1034
|
+
}
|
|
1035
|
+
);
|
|
1036
|
+
}
|
|
1037
|
+
function TableBody({ className, ...props }) {
|
|
1038
|
+
return /* @__PURE__ */ jsx17(
|
|
1039
|
+
"tbody",
|
|
1040
|
+
{
|
|
1041
|
+
"data-slot": "table-body",
|
|
1042
|
+
className: cn("[&_tr:last-child]:border-0", className),
|
|
1043
|
+
...props
|
|
1044
|
+
}
|
|
1045
|
+
);
|
|
1046
|
+
}
|
|
1047
|
+
function TableFooter({ className, ...props }) {
|
|
1048
|
+
return /* @__PURE__ */ jsx17(
|
|
1049
|
+
"tfoot",
|
|
1050
|
+
{
|
|
1051
|
+
"data-slot": "table-footer",
|
|
1052
|
+
className: cn("bg-muted/50 border-t font-medium [&>tr]:last:border-b-0", className),
|
|
1053
|
+
...props
|
|
1054
|
+
}
|
|
1055
|
+
);
|
|
1056
|
+
}
|
|
1057
|
+
function TableRow({ className, ...props }) {
|
|
1058
|
+
return /* @__PURE__ */ jsx17(
|
|
1059
|
+
"tr",
|
|
1060
|
+
{
|
|
1061
|
+
"data-slot": "table-row",
|
|
1062
|
+
className: cn("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors", className),
|
|
1063
|
+
...props
|
|
1064
|
+
}
|
|
1065
|
+
);
|
|
1066
|
+
}
|
|
1067
|
+
function TableHead({ className, ...props }) {
|
|
1068
|
+
return /* @__PURE__ */ jsx17(
|
|
1069
|
+
"th",
|
|
1070
|
+
{
|
|
1071
|
+
"data-slot": "table-head",
|
|
1072
|
+
className: cn("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0", className),
|
|
1073
|
+
...props
|
|
1074
|
+
}
|
|
1075
|
+
);
|
|
1076
|
+
}
|
|
1077
|
+
function TableCell({ className, ...props }) {
|
|
1078
|
+
return /* @__PURE__ */ jsx17(
|
|
1079
|
+
"td",
|
|
1080
|
+
{
|
|
1081
|
+
"data-slot": "table-cell",
|
|
1082
|
+
className: cn("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0", className),
|
|
1083
|
+
...props
|
|
1084
|
+
}
|
|
1085
|
+
);
|
|
1086
|
+
}
|
|
1087
|
+
function TableCaption({
|
|
1088
|
+
className,
|
|
1089
|
+
...props
|
|
1090
|
+
}) {
|
|
1091
|
+
return /* @__PURE__ */ jsx17(
|
|
1092
|
+
"caption",
|
|
1093
|
+
{
|
|
1094
|
+
"data-slot": "table-caption",
|
|
1095
|
+
className: cn("text-muted-foreground mt-4 text-sm", className),
|
|
1096
|
+
...props
|
|
1097
|
+
}
|
|
1098
|
+
);
|
|
1099
|
+
}
|
|
1100
|
+
|
|
1101
|
+
// src/components/ui/progress.tsx
|
|
1102
|
+
import { Progress as ProgressPrimitive } from "radix-ui";
|
|
1103
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
1104
|
+
function Progress({
|
|
1105
|
+
className,
|
|
1106
|
+
value,
|
|
1107
|
+
...props
|
|
1108
|
+
}) {
|
|
1109
|
+
return /* @__PURE__ */ jsx18(
|
|
1110
|
+
ProgressPrimitive.Root,
|
|
1111
|
+
{
|
|
1112
|
+
"data-slot": "progress",
|
|
1113
|
+
className: cn(
|
|
1114
|
+
"bg-muted h-1.5 rounded-full relative flex w-full items-center overflow-x-hidden",
|
|
1115
|
+
className
|
|
1116
|
+
),
|
|
1117
|
+
...props,
|
|
1118
|
+
children: /* @__PURE__ */ jsx18(
|
|
1119
|
+
ProgressPrimitive.Indicator,
|
|
1120
|
+
{
|
|
1121
|
+
"data-slot": "progress-indicator",
|
|
1122
|
+
className: "bg-primary size-full flex-1 transition-all",
|
|
1123
|
+
style: { transform: `translateX(-${100 - (value || 0)}%)` }
|
|
1124
|
+
}
|
|
1125
|
+
)
|
|
1126
|
+
}
|
|
1127
|
+
);
|
|
1128
|
+
}
|
|
1129
|
+
|
|
1130
|
+
// src/components/ui/command.tsx
|
|
1131
|
+
import { Command as CommandPrimitive } from "cmdk";
|
|
1132
|
+
import { Search } from "lucide-react";
|
|
1133
|
+
import { jsx as jsx19, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1134
|
+
function Command({
|
|
1135
|
+
className,
|
|
1136
|
+
...props
|
|
1137
|
+
}) {
|
|
1138
|
+
return /* @__PURE__ */ jsx19(
|
|
1139
|
+
CommandPrimitive,
|
|
1140
|
+
{
|
|
1141
|
+
"data-slot": "command",
|
|
1142
|
+
className: cn(
|
|
1143
|
+
"bg-popover text-popover-foreground rounded-xl p-1 flex size-full flex-col overflow-hidden",
|
|
1144
|
+
className
|
|
1145
|
+
),
|
|
1146
|
+
...props
|
|
1147
|
+
}
|
|
1148
|
+
);
|
|
1149
|
+
}
|
|
1150
|
+
function CommandInput({
|
|
1151
|
+
className,
|
|
1152
|
+
...props
|
|
1153
|
+
}) {
|
|
1154
|
+
return /* @__PURE__ */ jsxs7("div", { "data-slot": "command-input-wrapper", className: "flex h-9 items-center gap-2 border-b px-3", children: [
|
|
1155
|
+
/* @__PURE__ */ jsx19(Search, { className: "size-4 shrink-0 opacity-50" }),
|
|
1156
|
+
/* @__PURE__ */ jsx19(
|
|
1157
|
+
CommandPrimitive.Input,
|
|
1158
|
+
{
|
|
1159
|
+
"data-slot": "command-input",
|
|
1160
|
+
className: cn(
|
|
1161
|
+
"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
|
|
1162
|
+
className
|
|
1163
|
+
),
|
|
1164
|
+
...props
|
|
1165
|
+
}
|
|
1166
|
+
)
|
|
1167
|
+
] });
|
|
1168
|
+
}
|
|
1169
|
+
function CommandList({
|
|
1170
|
+
className,
|
|
1171
|
+
...props
|
|
1172
|
+
}) {
|
|
1173
|
+
return /* @__PURE__ */ jsx19(
|
|
1174
|
+
CommandPrimitive.List,
|
|
1175
|
+
{
|
|
1176
|
+
"data-slot": "command-list",
|
|
1177
|
+
className: cn(
|
|
1178
|
+
"no-scrollbar max-h-72 scroll-py-1 outline-none overflow-x-hidden overflow-y-auto",
|
|
1179
|
+
className
|
|
1180
|
+
),
|
|
1181
|
+
...props
|
|
1182
|
+
}
|
|
1183
|
+
);
|
|
1184
|
+
}
|
|
1185
|
+
function CommandEmpty({
|
|
1186
|
+
className,
|
|
1187
|
+
...props
|
|
1188
|
+
}) {
|
|
1189
|
+
return /* @__PURE__ */ jsx19(
|
|
1190
|
+
CommandPrimitive.Empty,
|
|
1191
|
+
{
|
|
1192
|
+
"data-slot": "command-empty",
|
|
1193
|
+
className: cn("py-6 text-center text-sm", className),
|
|
1194
|
+
...props
|
|
1195
|
+
}
|
|
1196
|
+
);
|
|
1197
|
+
}
|
|
1198
|
+
function CommandGroup({
|
|
1199
|
+
className,
|
|
1200
|
+
...props
|
|
1201
|
+
}) {
|
|
1202
|
+
return /* @__PURE__ */ jsx19(
|
|
1203
|
+
CommandPrimitive.Group,
|
|
1204
|
+
{
|
|
1205
|
+
"data-slot": "command-group",
|
|
1206
|
+
className: cn(
|
|
1207
|
+
"text-foreground overflow-hidden p-1 **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground",
|
|
1208
|
+
className
|
|
1209
|
+
),
|
|
1210
|
+
...props
|
|
1211
|
+
}
|
|
1212
|
+
);
|
|
1213
|
+
}
|
|
1214
|
+
function CommandSeparator({
|
|
1215
|
+
className,
|
|
1216
|
+
...props
|
|
1217
|
+
}) {
|
|
1218
|
+
return /* @__PURE__ */ jsx19(
|
|
1219
|
+
CommandPrimitive.Separator,
|
|
1220
|
+
{
|
|
1221
|
+
"data-slot": "command-separator",
|
|
1222
|
+
className: cn("bg-border -mx-1 h-px w-auto", className),
|
|
1223
|
+
...props
|
|
1224
|
+
}
|
|
1225
|
+
);
|
|
1226
|
+
}
|
|
1227
|
+
function CommandItem({
|
|
1228
|
+
className,
|
|
1229
|
+
...props
|
|
1230
|
+
}) {
|
|
1231
|
+
return /* @__PURE__ */ jsx19(
|
|
1232
|
+
CommandPrimitive.Item,
|
|
1233
|
+
{
|
|
1234
|
+
"data-slot": "command-item",
|
|
1235
|
+
className: cn(
|
|
1236
|
+
"data-selected:bg-muted data-selected:text-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none [&_svg:not([class*='size-'])]:size-4 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
1237
|
+
className
|
|
1238
|
+
),
|
|
1239
|
+
...props
|
|
1240
|
+
}
|
|
1241
|
+
);
|
|
1242
|
+
}
|
|
1243
|
+
function CommandShortcut({
|
|
1244
|
+
className,
|
|
1245
|
+
...props
|
|
1246
|
+
}) {
|
|
1247
|
+
return /* @__PURE__ */ jsx19(
|
|
1248
|
+
"span",
|
|
1249
|
+
{
|
|
1250
|
+
"data-slot": "command-shortcut",
|
|
1251
|
+
className: cn("text-muted-foreground ml-auto text-xs tracking-widest", className),
|
|
1252
|
+
...props
|
|
1253
|
+
}
|
|
1254
|
+
);
|
|
1255
|
+
}
|
|
1256
|
+
|
|
1257
|
+
// src/components/ui/sidebar.tsx
|
|
1258
|
+
import * as React from "react";
|
|
1259
|
+
import { cva as cva4 } from "class-variance-authority";
|
|
1260
|
+
import { Slot as Slot3 } from "radix-ui";
|
|
1261
|
+
import { PanelLeft } from "lucide-react";
|
|
1262
|
+
|
|
1263
|
+
// src/hooks/use-mobile.ts
|
|
1264
|
+
import { useEffect, useState } from "react";
|
|
1265
|
+
var MOBILE_BREAKPOINT = 768;
|
|
1266
|
+
function useIsMobile() {
|
|
1267
|
+
const [isMobile, setIsMobile] = useState(void 0);
|
|
1268
|
+
useEffect(() => {
|
|
1269
|
+
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
|
|
1270
|
+
const onChange = () => setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
1271
|
+
mql.addEventListener("change", onChange);
|
|
1272
|
+
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
1273
|
+
return () => mql.removeEventListener("change", onChange);
|
|
1274
|
+
}, []);
|
|
1275
|
+
return !!isMobile;
|
|
1276
|
+
}
|
|
1277
|
+
|
|
1278
|
+
// src/components/ui/sheet.tsx
|
|
1279
|
+
import { Dialog as SheetPrimitive } from "radix-ui";
|
|
1280
|
+
import { X as X2 } from "lucide-react";
|
|
1281
|
+
import { jsx as jsx20, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1282
|
+
function Sheet({ ...props }) {
|
|
1283
|
+
return /* @__PURE__ */ jsx20(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
|
|
1284
|
+
}
|
|
1285
|
+
function SheetTrigger({
|
|
1286
|
+
...props
|
|
1287
|
+
}) {
|
|
1288
|
+
return /* @__PURE__ */ jsx20(SheetPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
|
|
1289
|
+
}
|
|
1290
|
+
function SheetClose({
|
|
1291
|
+
...props
|
|
1292
|
+
}) {
|
|
1293
|
+
return /* @__PURE__ */ jsx20(SheetPrimitive.Close, { "data-slot": "sheet-close", ...props });
|
|
1294
|
+
}
|
|
1295
|
+
function SheetPortal({
|
|
1296
|
+
...props
|
|
1297
|
+
}) {
|
|
1298
|
+
return /* @__PURE__ */ jsx20(SheetPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
|
|
1299
|
+
}
|
|
1300
|
+
function SheetOverlay({
|
|
1301
|
+
className,
|
|
1302
|
+
...props
|
|
1303
|
+
}) {
|
|
1304
|
+
return /* @__PURE__ */ jsx20(
|
|
1305
|
+
SheetPrimitive.Overlay,
|
|
1306
|
+
{
|
|
1307
|
+
"data-slot": "sheet-overlay",
|
|
1308
|
+
className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 duration-100 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 z-50", className),
|
|
1309
|
+
...props
|
|
1310
|
+
}
|
|
1311
|
+
);
|
|
1312
|
+
}
|
|
1313
|
+
function SheetContent({
|
|
1314
|
+
className,
|
|
1315
|
+
children,
|
|
1316
|
+
side = "right",
|
|
1317
|
+
showCloseButton = true,
|
|
1318
|
+
...props
|
|
1319
|
+
}) {
|
|
1320
|
+
return /* @__PURE__ */ jsxs8(SheetPortal, { children: [
|
|
1321
|
+
/* @__PURE__ */ jsx20(SheetOverlay, {}),
|
|
1322
|
+
/* @__PURE__ */ jsxs8(
|
|
1323
|
+
SheetPrimitive.Content,
|
|
1324
|
+
{
|
|
1325
|
+
"data-slot": "sheet-content",
|
|
1326
|
+
"data-side": side,
|
|
1327
|
+
className: cn("bg-background data-open:animate-in data-closed:animate-out data-[side=right]:data-closed:slide-out-to-right-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=top]:data-closed:slide-out-to-top-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:fade-out-0 data-open:fade-in-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=bottom]:data-open:slide-in-from-bottom-10 fixed z-50 flex flex-col gap-4 bg-clip-padding text-sm shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm", className),
|
|
1328
|
+
...props,
|
|
1329
|
+
children: [
|
|
1330
|
+
children,
|
|
1331
|
+
showCloseButton && /* @__PURE__ */ jsx20(SheetPrimitive.Close, { "data-slot": "sheet-close", asChild: true, children: /* @__PURE__ */ jsxs8(Button, { variant: "ghost", className: "absolute top-4 right-4", size: "icon-sm", children: [
|
|
1332
|
+
/* @__PURE__ */ jsx20(X2, {}),
|
|
1333
|
+
/* @__PURE__ */ jsx20("span", { className: "sr-only", children: "Close" })
|
|
1334
|
+
] }) })
|
|
1335
|
+
]
|
|
1336
|
+
}
|
|
1337
|
+
)
|
|
1338
|
+
] });
|
|
1339
|
+
}
|
|
1340
|
+
function SheetHeader({ className, ...props }) {
|
|
1341
|
+
return /* @__PURE__ */ jsx20(
|
|
1342
|
+
"div",
|
|
1343
|
+
{
|
|
1344
|
+
"data-slot": "sheet-header",
|
|
1345
|
+
className: cn("gap-1.5 p-4 flex flex-col", className),
|
|
1346
|
+
...props
|
|
1347
|
+
}
|
|
1348
|
+
);
|
|
1349
|
+
}
|
|
1350
|
+
function SheetFooter({ className, ...props }) {
|
|
1351
|
+
return /* @__PURE__ */ jsx20(
|
|
1352
|
+
"div",
|
|
1353
|
+
{
|
|
1354
|
+
"data-slot": "sheet-footer",
|
|
1355
|
+
className: cn("gap-2 p-4 mt-auto flex flex-col", className),
|
|
1356
|
+
...props
|
|
1357
|
+
}
|
|
1358
|
+
);
|
|
1359
|
+
}
|
|
1360
|
+
function SheetTitle({
|
|
1361
|
+
className,
|
|
1362
|
+
...props
|
|
1363
|
+
}) {
|
|
1364
|
+
return /* @__PURE__ */ jsx20(
|
|
1365
|
+
SheetPrimitive.Title,
|
|
1366
|
+
{
|
|
1367
|
+
"data-slot": "sheet-title",
|
|
1368
|
+
className: cn("text-foreground font-medium", className),
|
|
1369
|
+
...props
|
|
1370
|
+
}
|
|
1371
|
+
);
|
|
1372
|
+
}
|
|
1373
|
+
function SheetDescription({
|
|
1374
|
+
className,
|
|
1375
|
+
...props
|
|
1376
|
+
}) {
|
|
1377
|
+
return /* @__PURE__ */ jsx20(
|
|
1378
|
+
SheetPrimitive.Description,
|
|
1379
|
+
{
|
|
1380
|
+
"data-slot": "sheet-description",
|
|
1381
|
+
className: cn("text-muted-foreground text-sm", className),
|
|
1382
|
+
...props
|
|
1383
|
+
}
|
|
1384
|
+
);
|
|
1385
|
+
}
|
|
1386
|
+
|
|
1387
|
+
// src/components/ui/sidebar.tsx
|
|
1388
|
+
import { jsx as jsx21, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1389
|
+
var SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
1390
|
+
var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
1391
|
+
var SIDEBAR_WIDTH = "16rem";
|
|
1392
|
+
var SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
1393
|
+
var SIDEBAR_WIDTH_ICON = "3rem";
|
|
1394
|
+
var SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
1395
|
+
var SidebarContext = React.createContext(null);
|
|
1396
|
+
function useSidebar() {
|
|
1397
|
+
const context = React.useContext(SidebarContext);
|
|
1398
|
+
if (!context) {
|
|
1399
|
+
throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
1400
|
+
}
|
|
1401
|
+
return context;
|
|
1402
|
+
}
|
|
1403
|
+
function SidebarProvider({
|
|
1404
|
+
defaultOpen = true,
|
|
1405
|
+
open: openProp,
|
|
1406
|
+
onOpenChange: setOpenProp,
|
|
1407
|
+
className,
|
|
1408
|
+
style,
|
|
1409
|
+
children,
|
|
1410
|
+
...props
|
|
1411
|
+
}) {
|
|
1412
|
+
const isMobile = useIsMobile();
|
|
1413
|
+
const [openMobile, setOpenMobile] = React.useState(false);
|
|
1414
|
+
const [_open, _setOpen] = React.useState(defaultOpen);
|
|
1415
|
+
const open = openProp ?? _open;
|
|
1416
|
+
const setOpen = React.useCallback(
|
|
1417
|
+
(value) => {
|
|
1418
|
+
const openState = typeof value === "function" ? value(open) : value;
|
|
1419
|
+
if (setOpenProp) {
|
|
1420
|
+
setOpenProp(openState);
|
|
1421
|
+
} else {
|
|
1422
|
+
_setOpen(openState);
|
|
1423
|
+
}
|
|
1424
|
+
document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
|
|
1425
|
+
},
|
|
1426
|
+
[setOpenProp, open]
|
|
1427
|
+
);
|
|
1428
|
+
const toggleSidebar = React.useCallback(() => {
|
|
1429
|
+
return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
|
|
1430
|
+
}, [isMobile, setOpen, setOpenMobile]);
|
|
1431
|
+
React.useEffect(() => {
|
|
1432
|
+
const handleKeyDown = (event) => {
|
|
1433
|
+
if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
|
|
1434
|
+
event.preventDefault();
|
|
1435
|
+
toggleSidebar();
|
|
1436
|
+
}
|
|
1437
|
+
};
|
|
1438
|
+
window.addEventListener("keydown", handleKeyDown);
|
|
1439
|
+
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
1440
|
+
}, [toggleSidebar]);
|
|
1441
|
+
const state = open ? "expanded" : "collapsed";
|
|
1442
|
+
const contextValue = React.useMemo(
|
|
1443
|
+
() => ({
|
|
1444
|
+
state,
|
|
1445
|
+
open,
|
|
1446
|
+
setOpen,
|
|
1447
|
+
isMobile,
|
|
1448
|
+
openMobile,
|
|
1449
|
+
setOpenMobile,
|
|
1450
|
+
toggleSidebar
|
|
1451
|
+
}),
|
|
1452
|
+
[state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
|
|
1453
|
+
);
|
|
1454
|
+
return /* @__PURE__ */ jsx21(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx21(
|
|
1455
|
+
"div",
|
|
1456
|
+
{
|
|
1457
|
+
"data-slot": "sidebar-wrapper",
|
|
1458
|
+
style: {
|
|
1459
|
+
"--sidebar-width": SIDEBAR_WIDTH,
|
|
1460
|
+
"--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
|
|
1461
|
+
...style
|
|
1462
|
+
},
|
|
1463
|
+
className: cn(
|
|
1464
|
+
"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full",
|
|
1465
|
+
className
|
|
1466
|
+
),
|
|
1467
|
+
...props,
|
|
1468
|
+
children
|
|
1469
|
+
}
|
|
1470
|
+
) });
|
|
1471
|
+
}
|
|
1472
|
+
function Sidebar({
|
|
1473
|
+
side = "left",
|
|
1474
|
+
variant = "sidebar",
|
|
1475
|
+
collapsible = "offcanvas",
|
|
1476
|
+
className,
|
|
1477
|
+
children,
|
|
1478
|
+
dir,
|
|
1479
|
+
...props
|
|
1480
|
+
}) {
|
|
1481
|
+
const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
|
|
1482
|
+
if (collapsible === "none") {
|
|
1483
|
+
return /* @__PURE__ */ jsx21(
|
|
1484
|
+
"div",
|
|
1485
|
+
{
|
|
1486
|
+
"data-slot": "sidebar",
|
|
1487
|
+
className: cn(
|
|
1488
|
+
"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col",
|
|
1489
|
+
className
|
|
1490
|
+
),
|
|
1491
|
+
...props,
|
|
1492
|
+
children
|
|
1493
|
+
}
|
|
1494
|
+
);
|
|
1495
|
+
}
|
|
1496
|
+
if (isMobile) {
|
|
1497
|
+
return /* @__PURE__ */ jsx21(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs9(
|
|
1498
|
+
SheetContent,
|
|
1499
|
+
{
|
|
1500
|
+
dir,
|
|
1501
|
+
"data-sidebar": "sidebar",
|
|
1502
|
+
"data-slot": "sidebar",
|
|
1503
|
+
"data-mobile": "true",
|
|
1504
|
+
className: "bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden",
|
|
1505
|
+
style: {
|
|
1506
|
+
"--sidebar-width": SIDEBAR_WIDTH_MOBILE
|
|
1507
|
+
},
|
|
1508
|
+
side,
|
|
1509
|
+
children: [
|
|
1510
|
+
/* @__PURE__ */ jsxs9(SheetHeader, { className: "sr-only", children: [
|
|
1511
|
+
/* @__PURE__ */ jsx21(SheetTitle, { children: "Sidebar" }),
|
|
1512
|
+
/* @__PURE__ */ jsx21(SheetDescription, { children: "Displays the mobile sidebar." })
|
|
1513
|
+
] }),
|
|
1514
|
+
/* @__PURE__ */ jsx21("div", { className: "flex h-full w-full flex-col", children })
|
|
1515
|
+
]
|
|
1516
|
+
}
|
|
1517
|
+
) });
|
|
1518
|
+
}
|
|
1519
|
+
return /* @__PURE__ */ jsxs9(
|
|
1520
|
+
"div",
|
|
1521
|
+
{
|
|
1522
|
+
className: "group peer text-sidebar-foreground hidden md:block",
|
|
1523
|
+
"data-state": state,
|
|
1524
|
+
"data-collapsible": state === "collapsed" ? collapsible : "",
|
|
1525
|
+
"data-variant": variant,
|
|
1526
|
+
"data-side": side,
|
|
1527
|
+
"data-slot": "sidebar",
|
|
1528
|
+
children: [
|
|
1529
|
+
/* @__PURE__ */ jsx21(
|
|
1530
|
+
"div",
|
|
1531
|
+
{
|
|
1532
|
+
"data-slot": "sidebar-gap",
|
|
1533
|
+
className: cn(
|
|
1534
|
+
"transition-[width] duration-200 ease-linear relative w-(--sidebar-width) bg-transparent",
|
|
1535
|
+
"group-data-[collapsible=offcanvas]:w-0",
|
|
1536
|
+
"group-data-[side=right]:rotate-180",
|
|
1537
|
+
variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)"
|
|
1538
|
+
)
|
|
1539
|
+
}
|
|
1540
|
+
),
|
|
1541
|
+
/* @__PURE__ */ jsx21(
|
|
1542
|
+
"div",
|
|
1543
|
+
{
|
|
1544
|
+
"data-slot": "sidebar-container",
|
|
1545
|
+
"data-side": side,
|
|
1546
|
+
className: cn(
|
|
1547
|
+
"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex",
|
|
1548
|
+
// Adjust the padding for floating and inset variants.
|
|
1549
|
+
variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",
|
|
1550
|
+
className
|
|
1551
|
+
),
|
|
1552
|
+
...props,
|
|
1553
|
+
children: /* @__PURE__ */ jsx21(
|
|
1554
|
+
"div",
|
|
1555
|
+
{
|
|
1556
|
+
"data-sidebar": "sidebar",
|
|
1557
|
+
"data-slot": "sidebar-inner",
|
|
1558
|
+
className: "bg-sidebar group-data-[variant=floating]:ring-sidebar-border group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 flex size-full flex-col",
|
|
1559
|
+
children
|
|
1560
|
+
}
|
|
1561
|
+
)
|
|
1562
|
+
}
|
|
1563
|
+
)
|
|
1564
|
+
]
|
|
1565
|
+
}
|
|
1566
|
+
);
|
|
1567
|
+
}
|
|
1568
|
+
function SidebarTrigger({
|
|
1569
|
+
className,
|
|
1570
|
+
onClick,
|
|
1571
|
+
...props
|
|
1572
|
+
}) {
|
|
1573
|
+
const { toggleSidebar } = useSidebar();
|
|
1574
|
+
return /* @__PURE__ */ jsxs9(
|
|
1575
|
+
Button,
|
|
1576
|
+
{
|
|
1577
|
+
"data-sidebar": "trigger",
|
|
1578
|
+
"data-slot": "sidebar-trigger",
|
|
1579
|
+
variant: "ghost",
|
|
1580
|
+
size: "icon-sm",
|
|
1581
|
+
className: cn(className),
|
|
1582
|
+
onClick: (event) => {
|
|
1583
|
+
onClick?.(event);
|
|
1584
|
+
toggleSidebar();
|
|
1585
|
+
},
|
|
1586
|
+
...props,
|
|
1587
|
+
children: [
|
|
1588
|
+
/* @__PURE__ */ jsx21(PanelLeft, {}),
|
|
1589
|
+
/* @__PURE__ */ jsx21("span", { className: "sr-only", children: "Toggle Sidebar" })
|
|
1590
|
+
]
|
|
1591
|
+
}
|
|
1592
|
+
);
|
|
1593
|
+
}
|
|
1594
|
+
function SidebarRail({ className, ...props }) {
|
|
1595
|
+
const { toggleSidebar } = useSidebar();
|
|
1596
|
+
return /* @__PURE__ */ jsx21(
|
|
1597
|
+
"button",
|
|
1598
|
+
{
|
|
1599
|
+
"data-sidebar": "rail",
|
|
1600
|
+
"data-slot": "sidebar-rail",
|
|
1601
|
+
"aria-label": "Toggle Sidebar",
|
|
1602
|
+
tabIndex: -1,
|
|
1603
|
+
onClick: toggleSidebar,
|
|
1604
|
+
title: "Toggle Sidebar",
|
|
1605
|
+
className: cn(
|
|
1606
|
+
"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2",
|
|
1607
|
+
"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize",
|
|
1608
|
+
"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
|
|
1609
|
+
"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full",
|
|
1610
|
+
"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
|
|
1611
|
+
"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
|
|
1612
|
+
className
|
|
1613
|
+
),
|
|
1614
|
+
...props
|
|
1615
|
+
}
|
|
1616
|
+
);
|
|
1617
|
+
}
|
|
1618
|
+
function SidebarInset({ className, ...props }) {
|
|
1619
|
+
return /* @__PURE__ */ jsx21(
|
|
1620
|
+
"main",
|
|
1621
|
+
{
|
|
1622
|
+
"data-slot": "sidebar-inset",
|
|
1623
|
+
className: cn(
|
|
1624
|
+
"bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 relative flex w-full flex-1 flex-col",
|
|
1625
|
+
className
|
|
1626
|
+
),
|
|
1627
|
+
...props
|
|
1628
|
+
}
|
|
1629
|
+
);
|
|
1630
|
+
}
|
|
1631
|
+
function SidebarHeader({ className, ...props }) {
|
|
1632
|
+
return /* @__PURE__ */ jsx21(
|
|
1633
|
+
"div",
|
|
1634
|
+
{
|
|
1635
|
+
"data-slot": "sidebar-header",
|
|
1636
|
+
"data-sidebar": "header",
|
|
1637
|
+
className: cn("gap-2 p-2 flex flex-col", className),
|
|
1638
|
+
...props
|
|
1639
|
+
}
|
|
1640
|
+
);
|
|
1641
|
+
}
|
|
1642
|
+
function SidebarFooter({ className, ...props }) {
|
|
1643
|
+
return /* @__PURE__ */ jsx21(
|
|
1644
|
+
"div",
|
|
1645
|
+
{
|
|
1646
|
+
"data-slot": "sidebar-footer",
|
|
1647
|
+
"data-sidebar": "footer",
|
|
1648
|
+
className: cn("gap-2 p-2 flex flex-col", className),
|
|
1649
|
+
...props
|
|
1650
|
+
}
|
|
1651
|
+
);
|
|
1652
|
+
}
|
|
1653
|
+
function SidebarSeparator({
|
|
1654
|
+
className,
|
|
1655
|
+
...props
|
|
1656
|
+
}) {
|
|
1657
|
+
return /* @__PURE__ */ jsx21(
|
|
1658
|
+
Separator,
|
|
1659
|
+
{
|
|
1660
|
+
"data-slot": "sidebar-separator",
|
|
1661
|
+
"data-sidebar": "separator",
|
|
1662
|
+
className: cn("bg-sidebar-border mx-2 w-auto", className),
|
|
1663
|
+
...props
|
|
1664
|
+
}
|
|
1665
|
+
);
|
|
1666
|
+
}
|
|
1667
|
+
function SidebarContent({ className, ...props }) {
|
|
1668
|
+
return /* @__PURE__ */ jsx21(
|
|
1669
|
+
"div",
|
|
1670
|
+
{
|
|
1671
|
+
"data-slot": "sidebar-content",
|
|
1672
|
+
"data-sidebar": "content",
|
|
1673
|
+
className: cn(
|
|
1674
|
+
"no-scrollbar gap-2 flex min-h-0 flex-1 flex-col overflow-auto group-data-[collapsible=icon]:overflow-hidden",
|
|
1675
|
+
className
|
|
1676
|
+
),
|
|
1677
|
+
...props
|
|
1678
|
+
}
|
|
1679
|
+
);
|
|
1680
|
+
}
|
|
1681
|
+
function SidebarGroup({ className, ...props }) {
|
|
1682
|
+
return /* @__PURE__ */ jsx21(
|
|
1683
|
+
"div",
|
|
1684
|
+
{
|
|
1685
|
+
"data-slot": "sidebar-group",
|
|
1686
|
+
"data-sidebar": "group",
|
|
1687
|
+
className: cn(
|
|
1688
|
+
"p-2 relative flex w-full min-w-0 flex-col",
|
|
1689
|
+
className
|
|
1690
|
+
),
|
|
1691
|
+
...props
|
|
1692
|
+
}
|
|
1693
|
+
);
|
|
1694
|
+
}
|
|
1695
|
+
function SidebarGroupLabel({
|
|
1696
|
+
className,
|
|
1697
|
+
asChild = false,
|
|
1698
|
+
...props
|
|
1699
|
+
}) {
|
|
1700
|
+
const Comp = asChild ? Slot3.Root : "div";
|
|
1701
|
+
return /* @__PURE__ */ jsx21(
|
|
1702
|
+
Comp,
|
|
1703
|
+
{
|
|
1704
|
+
"data-slot": "sidebar-group-label",
|
|
1705
|
+
"data-sidebar": "group-label",
|
|
1706
|
+
className: cn(
|
|
1707
|
+
"text-sidebar-foreground/70 ring-sidebar-ring h-8 rounded-md px-2 text-xs font-medium transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 flex shrink-0 items-center outline-hidden [&>svg]:shrink-0",
|
|
1708
|
+
className
|
|
1709
|
+
),
|
|
1710
|
+
...props
|
|
1711
|
+
}
|
|
1712
|
+
);
|
|
1713
|
+
}
|
|
1714
|
+
function SidebarGroupContent({
|
|
1715
|
+
className,
|
|
1716
|
+
...props
|
|
1717
|
+
}) {
|
|
1718
|
+
return /* @__PURE__ */ jsx21(
|
|
1719
|
+
"div",
|
|
1720
|
+
{
|
|
1721
|
+
"data-slot": "sidebar-group-content",
|
|
1722
|
+
"data-sidebar": "group-content",
|
|
1723
|
+
className: cn("text-sm w-full", className),
|
|
1724
|
+
...props
|
|
1725
|
+
}
|
|
1726
|
+
);
|
|
1727
|
+
}
|
|
1728
|
+
function SidebarMenu({ className, ...props }) {
|
|
1729
|
+
return /* @__PURE__ */ jsx21(
|
|
1730
|
+
"ul",
|
|
1731
|
+
{
|
|
1732
|
+
"data-slot": "sidebar-menu",
|
|
1733
|
+
"data-sidebar": "menu",
|
|
1734
|
+
className: cn("gap-1 flex w-full min-w-0 flex-col", className),
|
|
1735
|
+
...props
|
|
1736
|
+
}
|
|
1737
|
+
);
|
|
1738
|
+
}
|
|
1739
|
+
function SidebarMenuItem({ className, ...props }) {
|
|
1740
|
+
return /* @__PURE__ */ jsx21(
|
|
1741
|
+
"li",
|
|
1742
|
+
{
|
|
1743
|
+
"data-slot": "sidebar-menu-item",
|
|
1744
|
+
"data-sidebar": "menu-item",
|
|
1745
|
+
className: cn("group/menu-item relative", className),
|
|
1746
|
+
...props
|
|
1747
|
+
}
|
|
1748
|
+
);
|
|
1749
|
+
}
|
|
1750
|
+
var sidebarMenuButtonVariants = cva4(
|
|
1751
|
+
"ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground gap-2 rounded-md p-2 text-left text-sm transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! focus-visible:ring-2 data-active:font-medium peer/menu-button flex w-full items-center overflow-hidden outline-hidden group/menu-button disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&_svg]:size-4 [&_svg]:shrink-0",
|
|
1752
|
+
{
|
|
1753
|
+
variants: {
|
|
1754
|
+
variant: {
|
|
1755
|
+
default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
|
|
1756
|
+
outline: "bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"
|
|
1757
|
+
},
|
|
1758
|
+
size: {
|
|
1759
|
+
default: "h-8 text-sm",
|
|
1760
|
+
sm: "h-7 text-xs",
|
|
1761
|
+
lg: "h-12 text-sm group-data-[collapsible=icon]:p-0!"
|
|
1762
|
+
}
|
|
1763
|
+
},
|
|
1764
|
+
defaultVariants: {
|
|
1765
|
+
variant: "default",
|
|
1766
|
+
size: "default"
|
|
1767
|
+
}
|
|
1768
|
+
}
|
|
1769
|
+
);
|
|
1770
|
+
function SidebarMenuButton({
|
|
1771
|
+
asChild = false,
|
|
1772
|
+
isActive = false,
|
|
1773
|
+
variant = "default",
|
|
1774
|
+
size = "default",
|
|
1775
|
+
tooltip,
|
|
1776
|
+
className,
|
|
1777
|
+
...props
|
|
1778
|
+
}) {
|
|
1779
|
+
const Comp = asChild ? Slot3.Root : "button";
|
|
1780
|
+
const { isMobile, state } = useSidebar();
|
|
1781
|
+
const button = /* @__PURE__ */ jsx21(
|
|
1782
|
+
Comp,
|
|
1783
|
+
{
|
|
1784
|
+
"data-slot": "sidebar-menu-button",
|
|
1785
|
+
"data-sidebar": "menu-button",
|
|
1786
|
+
"data-size": size,
|
|
1787
|
+
"data-active": isActive,
|
|
1788
|
+
className: cn(sidebarMenuButtonVariants({ variant, size }), className),
|
|
1789
|
+
...props
|
|
1790
|
+
}
|
|
1791
|
+
);
|
|
1792
|
+
if (!tooltip) {
|
|
1793
|
+
return button;
|
|
1794
|
+
}
|
|
1795
|
+
if (typeof tooltip === "string") {
|
|
1796
|
+
tooltip = {
|
|
1797
|
+
children: tooltip
|
|
1798
|
+
};
|
|
1799
|
+
}
|
|
1800
|
+
return /* @__PURE__ */ jsxs9(Tooltip, { children: [
|
|
1801
|
+
/* @__PURE__ */ jsx21(TooltipTrigger, { asChild: true, children: button }),
|
|
1802
|
+
/* @__PURE__ */ jsx21(
|
|
1803
|
+
TooltipContent,
|
|
1804
|
+
{
|
|
1805
|
+
side: "right",
|
|
1806
|
+
align: "center",
|
|
1807
|
+
hidden: state !== "collapsed" || isMobile,
|
|
1808
|
+
...tooltip
|
|
1809
|
+
}
|
|
1810
|
+
)
|
|
1811
|
+
] });
|
|
1812
|
+
}
|
|
1813
|
+
function SidebarMenuSub({ className, ...props }) {
|
|
1814
|
+
return /* @__PURE__ */ jsx21(
|
|
1815
|
+
"ul",
|
|
1816
|
+
{
|
|
1817
|
+
"data-slot": "sidebar-menu-sub",
|
|
1818
|
+
"data-sidebar": "menu-sub",
|
|
1819
|
+
className: cn("border-sidebar-border mx-3.5 translate-x-px gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden flex min-w-0 flex-col", className),
|
|
1820
|
+
...props
|
|
1821
|
+
}
|
|
1822
|
+
);
|
|
1823
|
+
}
|
|
1824
|
+
function SidebarMenuSubItem({
|
|
1825
|
+
className,
|
|
1826
|
+
...props
|
|
1827
|
+
}) {
|
|
1828
|
+
return /* @__PURE__ */ jsx21(
|
|
1829
|
+
"li",
|
|
1830
|
+
{
|
|
1831
|
+
"data-slot": "sidebar-menu-sub-item",
|
|
1832
|
+
"data-sidebar": "menu-sub-item",
|
|
1833
|
+
className: cn("group/menu-sub-item relative", className),
|
|
1834
|
+
...props
|
|
1835
|
+
}
|
|
1836
|
+
);
|
|
1837
|
+
}
|
|
1838
|
+
function SidebarMenuSubButton({
|
|
1839
|
+
asChild = false,
|
|
1840
|
+
size = "md",
|
|
1841
|
+
isActive = false,
|
|
1842
|
+
className,
|
|
1843
|
+
...props
|
|
1844
|
+
}) {
|
|
1845
|
+
const Comp = asChild ? Slot3.Root : "a";
|
|
1846
|
+
return /* @__PURE__ */ jsx21(
|
|
1847
|
+
Comp,
|
|
1848
|
+
{
|
|
1849
|
+
"data-slot": "sidebar-menu-sub-button",
|
|
1850
|
+
"data-sidebar": "menu-sub-button",
|
|
1851
|
+
"data-size": size,
|
|
1852
|
+
"data-active": isActive,
|
|
1853
|
+
className: cn(
|
|
1854
|
+
"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground h-7 gap-2 rounded-md px-2 focus-visible:ring-2 data-[size=md]:text-sm data-[size=sm]:text-xs [&>svg]:size-4 flex min-w-0 -translate-x-px items-center overflow-hidden outline-hidden group-data-[collapsible=icon]:hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:shrink-0",
|
|
1855
|
+
className
|
|
1856
|
+
),
|
|
1857
|
+
...props
|
|
1858
|
+
}
|
|
1859
|
+
);
|
|
1860
|
+
}
|
|
1861
|
+
|
|
1862
|
+
// src/components/ui/alert.tsx
|
|
1863
|
+
import { cva as cva5 } from "class-variance-authority";
|
|
1864
|
+
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
1865
|
+
var alertVariants = cva5("grid gap-0.5 rounded-lg border px-4 py-3 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4 w-full relative group/alert", {
|
|
1866
|
+
variants: {
|
|
1867
|
+
variant: {
|
|
1868
|
+
default: "bg-card text-card-foreground",
|
|
1869
|
+
destructive: "text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current"
|
|
1870
|
+
}
|
|
1871
|
+
},
|
|
1872
|
+
defaultVariants: {
|
|
1873
|
+
variant: "default"
|
|
1874
|
+
}
|
|
1875
|
+
});
|
|
1876
|
+
function Alert({
|
|
1877
|
+
className,
|
|
1878
|
+
variant,
|
|
1879
|
+
...props
|
|
1880
|
+
}) {
|
|
1881
|
+
return /* @__PURE__ */ jsx22(
|
|
1882
|
+
"div",
|
|
1883
|
+
{
|
|
1884
|
+
"data-slot": "alert",
|
|
1885
|
+
role: "alert",
|
|
1886
|
+
className: cn(alertVariants({ variant }), className),
|
|
1887
|
+
...props
|
|
1888
|
+
}
|
|
1889
|
+
);
|
|
1890
|
+
}
|
|
1891
|
+
function AlertTitle({ className, ...props }) {
|
|
1892
|
+
return /* @__PURE__ */ jsx22(
|
|
1893
|
+
"div",
|
|
1894
|
+
{
|
|
1895
|
+
"data-slot": "alert-title",
|
|
1896
|
+
className: cn(
|
|
1897
|
+
"font-medium group-has-[>svg]/alert:col-start-2 [&_a]:hover:text-foreground [&_a]:underline [&_a]:underline-offset-3",
|
|
1898
|
+
className
|
|
1899
|
+
),
|
|
1900
|
+
...props
|
|
1901
|
+
}
|
|
1902
|
+
);
|
|
1903
|
+
}
|
|
1904
|
+
function AlertDescription({
|
|
1905
|
+
className,
|
|
1906
|
+
...props
|
|
1907
|
+
}) {
|
|
1908
|
+
return /* @__PURE__ */ jsx22(
|
|
1909
|
+
"div",
|
|
1910
|
+
{
|
|
1911
|
+
"data-slot": "alert-description",
|
|
1912
|
+
className: cn(
|
|
1913
|
+
"text-muted-foreground text-sm text-balance md:text-pretty [&_p:not(:last-child)]:mb-4 [&_a]:hover:text-foreground [&_a]:underline [&_a]:underline-offset-3",
|
|
1914
|
+
className
|
|
1915
|
+
),
|
|
1916
|
+
...props
|
|
1917
|
+
}
|
|
1918
|
+
);
|
|
1919
|
+
}
|
|
1920
|
+
|
|
1921
|
+
// src/components/ui/breadcrumb.tsx
|
|
1922
|
+
import { Slot as Slot4 } from "radix-ui";
|
|
1923
|
+
import { ChevronRight as ChevronRight2, MoreHorizontal } from "lucide-react";
|
|
1924
|
+
import { jsx as jsx23, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1925
|
+
function Breadcrumb({ className, ...props }) {
|
|
1926
|
+
return /* @__PURE__ */ jsx23(
|
|
1927
|
+
"nav",
|
|
1928
|
+
{
|
|
1929
|
+
"aria-label": "breadcrumb",
|
|
1930
|
+
"data-slot": "breadcrumb",
|
|
1931
|
+
className: cn(className),
|
|
1932
|
+
...props
|
|
1933
|
+
}
|
|
1934
|
+
);
|
|
1935
|
+
}
|
|
1936
|
+
function BreadcrumbList({ className, ...props }) {
|
|
1937
|
+
return /* @__PURE__ */ jsx23(
|
|
1938
|
+
"ol",
|
|
1939
|
+
{
|
|
1940
|
+
"data-slot": "breadcrumb-list",
|
|
1941
|
+
className: cn(
|
|
1942
|
+
"text-muted-foreground gap-1.5 text-sm sm:gap-2.5 flex flex-wrap items-center wrap-break-word",
|
|
1943
|
+
className
|
|
1944
|
+
),
|
|
1945
|
+
...props
|
|
1946
|
+
}
|
|
1947
|
+
);
|
|
1948
|
+
}
|
|
1949
|
+
function BreadcrumbItem({ className, ...props }) {
|
|
1950
|
+
return /* @__PURE__ */ jsx23(
|
|
1951
|
+
"li",
|
|
1952
|
+
{
|
|
1953
|
+
"data-slot": "breadcrumb-item",
|
|
1954
|
+
className: cn("gap-1.5 inline-flex items-center", className),
|
|
1955
|
+
...props
|
|
1956
|
+
}
|
|
1957
|
+
);
|
|
1958
|
+
}
|
|
1959
|
+
function BreadcrumbLink({
|
|
1960
|
+
asChild,
|
|
1961
|
+
className,
|
|
1962
|
+
...props
|
|
1963
|
+
}) {
|
|
1964
|
+
const Comp = asChild ? Slot4.Root : "a";
|
|
1965
|
+
return /* @__PURE__ */ jsx23(
|
|
1966
|
+
Comp,
|
|
1967
|
+
{
|
|
1968
|
+
"data-slot": "breadcrumb-link",
|
|
1969
|
+
className: cn("hover:text-foreground transition-colors", className),
|
|
1970
|
+
...props
|
|
1971
|
+
}
|
|
1972
|
+
);
|
|
1973
|
+
}
|
|
1974
|
+
function BreadcrumbPage({ className, ...props }) {
|
|
1975
|
+
return /* @__PURE__ */ jsx23(
|
|
1976
|
+
"span",
|
|
1977
|
+
{
|
|
1978
|
+
"data-slot": "breadcrumb-page",
|
|
1979
|
+
role: "link",
|
|
1980
|
+
"aria-disabled": "true",
|
|
1981
|
+
"aria-current": "page",
|
|
1982
|
+
className: cn("text-foreground font-normal", className),
|
|
1983
|
+
...props
|
|
1984
|
+
}
|
|
1985
|
+
);
|
|
1986
|
+
}
|
|
1987
|
+
function BreadcrumbSeparator({
|
|
1988
|
+
children,
|
|
1989
|
+
className,
|
|
1990
|
+
...props
|
|
1991
|
+
}) {
|
|
1992
|
+
return /* @__PURE__ */ jsx23(
|
|
1993
|
+
"li",
|
|
1994
|
+
{
|
|
1995
|
+
"data-slot": "breadcrumb-separator",
|
|
1996
|
+
role: "presentation",
|
|
1997
|
+
"aria-hidden": "true",
|
|
1998
|
+
className: cn("[&>svg]:size-3.5", className),
|
|
1999
|
+
...props,
|
|
2000
|
+
children: children ?? /* @__PURE__ */ jsx23(ChevronRight2, {})
|
|
2001
|
+
}
|
|
2002
|
+
);
|
|
2003
|
+
}
|
|
2004
|
+
|
|
2005
|
+
// src/components/ui/collapsible.tsx
|
|
2006
|
+
import { Collapsible as CollapsiblePrimitive } from "radix-ui";
|
|
2007
|
+
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
2008
|
+
function Collapsible({
|
|
2009
|
+
...props
|
|
2010
|
+
}) {
|
|
2011
|
+
return /* @__PURE__ */ jsx24(CollapsiblePrimitive.Root, { "data-slot": "collapsible", ...props });
|
|
2012
|
+
}
|
|
2013
|
+
function CollapsibleTrigger({
|
|
2014
|
+
...props
|
|
2015
|
+
}) {
|
|
2016
|
+
return /* @__PURE__ */ jsx24(
|
|
2017
|
+
CollapsiblePrimitive.CollapsibleTrigger,
|
|
2018
|
+
{
|
|
2019
|
+
"data-slot": "collapsible-trigger",
|
|
2020
|
+
...props
|
|
2021
|
+
}
|
|
2022
|
+
);
|
|
2023
|
+
}
|
|
2024
|
+
function CollapsibleContent({
|
|
2025
|
+
...props
|
|
2026
|
+
}) {
|
|
2027
|
+
return /* @__PURE__ */ jsx24(
|
|
2028
|
+
CollapsiblePrimitive.CollapsibleContent,
|
|
2029
|
+
{
|
|
2030
|
+
"data-slot": "collapsible-content",
|
|
2031
|
+
...props
|
|
2032
|
+
}
|
|
2033
|
+
);
|
|
2034
|
+
}
|
|
2035
|
+
export {
|
|
2036
|
+
Alert,
|
|
2037
|
+
AlertDescription,
|
|
2038
|
+
AlertDialog,
|
|
2039
|
+
AlertDialogAction,
|
|
2040
|
+
AlertDialogCancel,
|
|
2041
|
+
AlertDialogContent,
|
|
2042
|
+
AlertDialogDescription,
|
|
2043
|
+
AlertDialogFooter,
|
|
2044
|
+
AlertDialogHeader,
|
|
2045
|
+
AlertDialogOverlay,
|
|
2046
|
+
AlertDialogPortal,
|
|
2047
|
+
AlertDialogTitle,
|
|
2048
|
+
AlertDialogTrigger,
|
|
2049
|
+
AlertTitle,
|
|
2050
|
+
Avatar,
|
|
2051
|
+
AvatarFallback,
|
|
2052
|
+
AvatarImage,
|
|
2053
|
+
Badge,
|
|
2054
|
+
Breadcrumb,
|
|
2055
|
+
BreadcrumbItem,
|
|
2056
|
+
BreadcrumbLink,
|
|
2057
|
+
BreadcrumbList,
|
|
2058
|
+
BreadcrumbPage,
|
|
2059
|
+
BreadcrumbSeparator,
|
|
2060
|
+
Button,
|
|
2061
|
+
Card,
|
|
2062
|
+
CardContent,
|
|
2063
|
+
CardDescription,
|
|
2064
|
+
CardFooter,
|
|
2065
|
+
CardHeader,
|
|
2066
|
+
CardTitle,
|
|
2067
|
+
Collapsible,
|
|
2068
|
+
CollapsibleContent,
|
|
2069
|
+
CollapsibleTrigger,
|
|
2070
|
+
Command,
|
|
2071
|
+
CommandEmpty,
|
|
2072
|
+
CommandGroup,
|
|
2073
|
+
CommandInput,
|
|
2074
|
+
CommandItem,
|
|
2075
|
+
CommandList,
|
|
2076
|
+
CommandSeparator,
|
|
2077
|
+
CommandShortcut,
|
|
2078
|
+
Dialog,
|
|
2079
|
+
DialogClose,
|
|
2080
|
+
DialogContent,
|
|
2081
|
+
DialogDescription,
|
|
2082
|
+
DialogFooter,
|
|
2083
|
+
DialogHeader,
|
|
2084
|
+
DialogOverlay,
|
|
2085
|
+
DialogPortal,
|
|
2086
|
+
DialogTitle,
|
|
2087
|
+
DialogTrigger,
|
|
2088
|
+
DropdownMenu,
|
|
2089
|
+
DropdownMenuContent,
|
|
2090
|
+
DropdownMenuGroup,
|
|
2091
|
+
DropdownMenuItem,
|
|
2092
|
+
DropdownMenuLabel,
|
|
2093
|
+
DropdownMenuSeparator,
|
|
2094
|
+
DropdownMenuTrigger,
|
|
2095
|
+
Input,
|
|
2096
|
+
Label,
|
|
2097
|
+
Progress,
|
|
2098
|
+
ScrollArea,
|
|
2099
|
+
ScrollBar,
|
|
2100
|
+
Select,
|
|
2101
|
+
SelectContent,
|
|
2102
|
+
SelectGroup,
|
|
2103
|
+
SelectItem,
|
|
2104
|
+
SelectLabel,
|
|
2105
|
+
SelectScrollDownButton,
|
|
2106
|
+
SelectScrollUpButton,
|
|
2107
|
+
SelectSeparator,
|
|
2108
|
+
SelectTrigger,
|
|
2109
|
+
SelectValue,
|
|
2110
|
+
Separator,
|
|
2111
|
+
Sheet,
|
|
2112
|
+
SheetClose,
|
|
2113
|
+
SheetContent,
|
|
2114
|
+
SheetDescription,
|
|
2115
|
+
SheetFooter,
|
|
2116
|
+
SheetHeader,
|
|
2117
|
+
SheetTitle,
|
|
2118
|
+
SheetTrigger,
|
|
2119
|
+
Sidebar,
|
|
2120
|
+
SidebarContent,
|
|
2121
|
+
SidebarFooter,
|
|
2122
|
+
SidebarGroup,
|
|
2123
|
+
SidebarGroupContent,
|
|
2124
|
+
SidebarGroupLabel,
|
|
2125
|
+
SidebarHeader,
|
|
2126
|
+
SidebarInset,
|
|
2127
|
+
SidebarMenu,
|
|
2128
|
+
SidebarMenuButton,
|
|
2129
|
+
SidebarMenuItem,
|
|
2130
|
+
SidebarMenuSub,
|
|
2131
|
+
SidebarMenuSubButton,
|
|
2132
|
+
SidebarMenuSubItem,
|
|
2133
|
+
SidebarProvider,
|
|
2134
|
+
SidebarRail,
|
|
2135
|
+
SidebarSeparator,
|
|
2136
|
+
SidebarTrigger,
|
|
2137
|
+
Skeleton,
|
|
2138
|
+
Table,
|
|
2139
|
+
TableBody,
|
|
2140
|
+
TableCaption,
|
|
2141
|
+
TableCell,
|
|
2142
|
+
TableFooter,
|
|
2143
|
+
TableHead,
|
|
2144
|
+
TableHeader,
|
|
2145
|
+
TableRow,
|
|
2146
|
+
Tabs,
|
|
2147
|
+
TabsContent,
|
|
2148
|
+
TabsList,
|
|
2149
|
+
TabsTrigger,
|
|
2150
|
+
Textarea,
|
|
2151
|
+
Tooltip,
|
|
2152
|
+
TooltipContent,
|
|
2153
|
+
TooltipProvider,
|
|
2154
|
+
TooltipTrigger,
|
|
2155
|
+
badgeVariants,
|
|
2156
|
+
buttonVariants,
|
|
2157
|
+
cn,
|
|
2158
|
+
tabsListVariants,
|
|
2159
|
+
useSidebar
|
|
2160
|
+
};
|
|
2161
|
+
//# sourceMappingURL=ui.js.map
|