@bleakedev/bleake-components 0.0.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.cjs +2384 -0
- package/dist/index.d.cts +311 -0
- package/dist/index.d.ts +311 -0
- package/dist/index.js +2310 -0
- package/package.json +47 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,2310 @@
|
|
|
1
|
+
import { EllipsisVertical, Loader2Icon, Ban, Trash2, CameraOff, XIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, CheckIcon, ChevronUpIcon, OctagonXIcon, TriangleAlertIcon, InfoIcon, CircleCheckIcon, ChevronDown } from 'lucide-react';
|
|
2
|
+
import { merge, useTheme } from '@bleakedev/bleake-core';
|
|
3
|
+
import { Slot, DropdownMenu as DropdownMenu$1, AlertDialog as AlertDialog$1, Separator as Separator$1, Dialog as Dialog$1, Tooltip as Tooltip$1, Accordion as Accordion$1, Avatar as Avatar$1, Checkbox as Checkbox$1, Collapsible as Collapsible$1, ContextMenu as ContextMenu$1, HoverCard as HoverCard$1, Label as Label$1, Menubar as Menubar$1, Popover as Popover$1, RadioGroup as RadioGroup$1, Select as Select$1, Switch as Switch$1, Tabs as Tabs$1, Toggle as Toggle$1, ToggleGroup as ToggleGroup$1 } from 'radix-ui';
|
|
4
|
+
import { cva } from 'class-variance-authority';
|
|
5
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
|
+
import { createContext, useState, Fragment, useRef, useEffect, useContext } from 'react';
|
|
7
|
+
import { getDefaultClassNames, DayPicker } from 'react-day-picker';
|
|
8
|
+
import { Combobox as Combobox$1 } from '@base-ui/react';
|
|
9
|
+
import { Command as Command$1 } from 'cmdk';
|
|
10
|
+
import { OTPInput } from 'input-otp';
|
|
11
|
+
import { AnimatePresence, motion } from 'framer-motion';
|
|
12
|
+
import { Toaster as Toaster$1 } from 'sonner';
|
|
13
|
+
|
|
14
|
+
// src/primitives/actions-menu/index.tsx
|
|
15
|
+
var buttonVariants = cva(
|
|
16
|
+
"group/button inline-flex shrink-0 items-center justify-center rounded-xl border border-transparent bg-clip-padding text-sm/relaxed font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 active:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 cursor-pointer gap-2 transition-all duration-300 rounded-lg",
|
|
17
|
+
{
|
|
18
|
+
variants: {
|
|
19
|
+
variant: {
|
|
20
|
+
default: "bg-primary text-primary-foreground hover:bg-primary/80",
|
|
21
|
+
outline: "border-border bg-white hover:bg-input/50 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:bg-input/30",
|
|
22
|
+
secondary: "bg-orange-200/20 text-orange-600 border border-orange-400/40 hover:bg-orange-300/25 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
|
|
23
|
+
ghost: "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",
|
|
24
|
+
destructive: "bg-destructive text-white hover:bg-destructive/20",
|
|
25
|
+
link: "text-primary underline-offset-4 hover:underline",
|
|
26
|
+
success: "text-green-600 bg-green-200/50 hover:text-green-700 border border-green-500/40"
|
|
27
|
+
},
|
|
28
|
+
size: {
|
|
29
|
+
sm: "h-7 px-5",
|
|
30
|
+
default: "h-9 px-4 py-2",
|
|
31
|
+
lg: "h-11 px-6",
|
|
32
|
+
icon: "h-fit w-fit"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
defaultVariants: {
|
|
36
|
+
variant: "default",
|
|
37
|
+
size: "default"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
);
|
|
41
|
+
var 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: merge(buttonVariants({ variant, size, className })),
|
|
56
|
+
...props
|
|
57
|
+
}
|
|
58
|
+
);
|
|
59
|
+
};
|
|
60
|
+
var DropdownMenu = ({
|
|
61
|
+
...props
|
|
62
|
+
}) => {
|
|
63
|
+
return /* @__PURE__ */ jsx(
|
|
64
|
+
DropdownMenu$1.Root,
|
|
65
|
+
{
|
|
66
|
+
"data-slot": "dropdown-menu",
|
|
67
|
+
...props
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
};
|
|
71
|
+
var DropdownMenuContent = ({
|
|
72
|
+
className,
|
|
73
|
+
align = "start",
|
|
74
|
+
sideOffset = 4,
|
|
75
|
+
...props
|
|
76
|
+
}) => {
|
|
77
|
+
return /* @__PURE__ */ jsx(DropdownMenu$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
78
|
+
DropdownMenu$1.Content,
|
|
79
|
+
{
|
|
80
|
+
"data-slot": "dropdown-menu-content",
|
|
81
|
+
sideOffset,
|
|
82
|
+
align,
|
|
83
|
+
className: merge(
|
|
84
|
+
"z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 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 data-[state=closed]:overflow-hidden data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
85
|
+
className
|
|
86
|
+
),
|
|
87
|
+
...props
|
|
88
|
+
}
|
|
89
|
+
) });
|
|
90
|
+
};
|
|
91
|
+
var DropdownMenuTrigger = ({
|
|
92
|
+
...props
|
|
93
|
+
}) => {
|
|
94
|
+
return /* @__PURE__ */ jsx(
|
|
95
|
+
DropdownMenu$1.Trigger,
|
|
96
|
+
{
|
|
97
|
+
"data-slot": "dropdown-menu-trigger",
|
|
98
|
+
...props
|
|
99
|
+
}
|
|
100
|
+
);
|
|
101
|
+
};
|
|
102
|
+
var ActionsMenu = ({
|
|
103
|
+
children,
|
|
104
|
+
align = "end",
|
|
105
|
+
triggerDirection = "vertical"
|
|
106
|
+
}) => {
|
|
107
|
+
return /* @__PURE__ */ jsxs(DropdownMenu, { children: [
|
|
108
|
+
/* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
109
|
+
Button,
|
|
110
|
+
{
|
|
111
|
+
variant: "ghost",
|
|
112
|
+
size: "icon",
|
|
113
|
+
children: triggerDirection === "vertical" ? /* @__PURE__ */ jsx(EllipsisVertical, {}) : /* @__PURE__ */ jsx(EllipsisVertical, { className: "rotate-90" })
|
|
114
|
+
}
|
|
115
|
+
) }),
|
|
116
|
+
/* @__PURE__ */ jsx(
|
|
117
|
+
DropdownMenuContent,
|
|
118
|
+
{
|
|
119
|
+
className: "w-[--radix-dropdown-menu-trigger-width]",
|
|
120
|
+
side: "bottom",
|
|
121
|
+
sideOffset: 4,
|
|
122
|
+
align,
|
|
123
|
+
alignOffset: 1,
|
|
124
|
+
children
|
|
125
|
+
}
|
|
126
|
+
)
|
|
127
|
+
] });
|
|
128
|
+
};
|
|
129
|
+
var AlertDialog = (props) => {
|
|
130
|
+
return /* @__PURE__ */ jsx(
|
|
131
|
+
AlertDialog$1.Root,
|
|
132
|
+
{
|
|
133
|
+
"data-slot": "alert-dialog",
|
|
134
|
+
...props
|
|
135
|
+
}
|
|
136
|
+
);
|
|
137
|
+
};
|
|
138
|
+
var AlertDialogAction = ({
|
|
139
|
+
className,
|
|
140
|
+
variant = "default",
|
|
141
|
+
size = "default",
|
|
142
|
+
...props
|
|
143
|
+
}) => {
|
|
144
|
+
return /* @__PURE__ */ jsx(
|
|
145
|
+
Button,
|
|
146
|
+
{
|
|
147
|
+
variant,
|
|
148
|
+
size,
|
|
149
|
+
asChild: true,
|
|
150
|
+
children: /* @__PURE__ */ jsx(
|
|
151
|
+
AlertDialog$1.Action,
|
|
152
|
+
{
|
|
153
|
+
"data-slot": "alert-dialog-action",
|
|
154
|
+
className: merge(className),
|
|
155
|
+
...props
|
|
156
|
+
}
|
|
157
|
+
)
|
|
158
|
+
}
|
|
159
|
+
);
|
|
160
|
+
};
|
|
161
|
+
var AlertDialogCancel = ({
|
|
162
|
+
className,
|
|
163
|
+
variant = "outline",
|
|
164
|
+
size = "default",
|
|
165
|
+
...props
|
|
166
|
+
}) => {
|
|
167
|
+
return /* @__PURE__ */ jsx(
|
|
168
|
+
Button,
|
|
169
|
+
{
|
|
170
|
+
variant,
|
|
171
|
+
size,
|
|
172
|
+
asChild: true,
|
|
173
|
+
children: /* @__PURE__ */ jsx(
|
|
174
|
+
AlertDialog$1.Cancel,
|
|
175
|
+
{
|
|
176
|
+
"data-slot": "alert-dialog-cancel",
|
|
177
|
+
className: merge(className),
|
|
178
|
+
...props
|
|
179
|
+
}
|
|
180
|
+
)
|
|
181
|
+
}
|
|
182
|
+
);
|
|
183
|
+
};
|
|
184
|
+
var AlertDialogOverlay = ({
|
|
185
|
+
className,
|
|
186
|
+
...props
|
|
187
|
+
}) => {
|
|
188
|
+
return /* @__PURE__ */ jsx(
|
|
189
|
+
AlertDialog$1.Overlay,
|
|
190
|
+
{
|
|
191
|
+
"data-slot": "alert-dialog-overlay",
|
|
192
|
+
className: merge(
|
|
193
|
+
"fixed inset-0 z-50 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
|
|
194
|
+
className
|
|
195
|
+
),
|
|
196
|
+
...props
|
|
197
|
+
}
|
|
198
|
+
);
|
|
199
|
+
};
|
|
200
|
+
var AlertDialogPortal = (props) => {
|
|
201
|
+
return /* @__PURE__ */ jsx(
|
|
202
|
+
AlertDialog$1.Portal,
|
|
203
|
+
{
|
|
204
|
+
"data-slot": "alert-dialog-portal",
|
|
205
|
+
...props
|
|
206
|
+
}
|
|
207
|
+
);
|
|
208
|
+
};
|
|
209
|
+
var AlertDialogContent = ({
|
|
210
|
+
className,
|
|
211
|
+
size = "default",
|
|
212
|
+
...props
|
|
213
|
+
}) => {
|
|
214
|
+
return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
|
|
215
|
+
/* @__PURE__ */ jsx(AlertDialogOverlay, {}),
|
|
216
|
+
/* @__PURE__ */ jsx(
|
|
217
|
+
AlertDialog$1.Content,
|
|
218
|
+
{
|
|
219
|
+
"data-slot": "alert-dialog-content",
|
|
220
|
+
"data-size": size,
|
|
221
|
+
className: merge(
|
|
222
|
+
"group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-lg bg-background p-6 ring-1 ring-foreground/10 duration-100 outline-none",
|
|
223
|
+
"data-[size=sm]:max-w-sm",
|
|
224
|
+
"data-[size=default]:max-w-sm",
|
|
225
|
+
"data-[size=default]:sm:max-w-lg",
|
|
226
|
+
"data-[size=lg]:max-w-2xl",
|
|
227
|
+
"data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95",
|
|
228
|
+
"data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
229
|
+
className
|
|
230
|
+
),
|
|
231
|
+
...props
|
|
232
|
+
}
|
|
233
|
+
)
|
|
234
|
+
] });
|
|
235
|
+
};
|
|
236
|
+
var AlertDialogDescription = ({
|
|
237
|
+
className,
|
|
238
|
+
...props
|
|
239
|
+
}) => {
|
|
240
|
+
return /* @__PURE__ */ jsx(
|
|
241
|
+
AlertDialog$1.Description,
|
|
242
|
+
{
|
|
243
|
+
"data-slot": "alert-dialog-description",
|
|
244
|
+
className: merge(
|
|
245
|
+
"text-xs/relaxed text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",
|
|
246
|
+
className
|
|
247
|
+
),
|
|
248
|
+
...props
|
|
249
|
+
}
|
|
250
|
+
);
|
|
251
|
+
};
|
|
252
|
+
var AlertDialogFooter = ({
|
|
253
|
+
className,
|
|
254
|
+
...props
|
|
255
|
+
}) => {
|
|
256
|
+
return /* @__PURE__ */ jsx(
|
|
257
|
+
"div",
|
|
258
|
+
{
|
|
259
|
+
"data-slot": "alert-dialog-footer",
|
|
260
|
+
className: merge(
|
|
261
|
+
"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",
|
|
262
|
+
className
|
|
263
|
+
),
|
|
264
|
+
...props
|
|
265
|
+
}
|
|
266
|
+
);
|
|
267
|
+
};
|
|
268
|
+
var AlertDialogHeader = ({
|
|
269
|
+
className,
|
|
270
|
+
...props
|
|
271
|
+
}) => {
|
|
272
|
+
return /* @__PURE__ */ jsx(
|
|
273
|
+
"div",
|
|
274
|
+
{
|
|
275
|
+
"data-slot": "alert-dialog-header",
|
|
276
|
+
className: merge(
|
|
277
|
+
"grid grid-rows-[auto_1fr] place-items-center gap-1 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 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]",
|
|
278
|
+
className
|
|
279
|
+
),
|
|
280
|
+
...props
|
|
281
|
+
}
|
|
282
|
+
);
|
|
283
|
+
};
|
|
284
|
+
var AlertDialogTitle = ({
|
|
285
|
+
className,
|
|
286
|
+
...props
|
|
287
|
+
}) => {
|
|
288
|
+
return /* @__PURE__ */ jsx(
|
|
289
|
+
AlertDialog$1.Title,
|
|
290
|
+
{
|
|
291
|
+
"data-slot": "alert-dialog-title",
|
|
292
|
+
className: merge(
|
|
293
|
+
"text-sm font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",
|
|
294
|
+
className
|
|
295
|
+
),
|
|
296
|
+
...props
|
|
297
|
+
}
|
|
298
|
+
);
|
|
299
|
+
};
|
|
300
|
+
var AlertDialogTrigger = (props) => {
|
|
301
|
+
return /* @__PURE__ */ jsx(
|
|
302
|
+
AlertDialog$1.Trigger,
|
|
303
|
+
{
|
|
304
|
+
"data-slot": "alert-dialog-trigger",
|
|
305
|
+
...props
|
|
306
|
+
}
|
|
307
|
+
);
|
|
308
|
+
};
|
|
309
|
+
var Separator = ({
|
|
310
|
+
className,
|
|
311
|
+
orientation = "horizontal",
|
|
312
|
+
decorative = true,
|
|
313
|
+
...props
|
|
314
|
+
}) => {
|
|
315
|
+
return /* @__PURE__ */ jsx(
|
|
316
|
+
Separator$1.Root,
|
|
317
|
+
{
|
|
318
|
+
"data-slot": "separator",
|
|
319
|
+
decorative,
|
|
320
|
+
orientation,
|
|
321
|
+
className: merge(
|
|
322
|
+
"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",
|
|
323
|
+
className
|
|
324
|
+
),
|
|
325
|
+
...props
|
|
326
|
+
}
|
|
327
|
+
);
|
|
328
|
+
};
|
|
329
|
+
var Spinner = ({
|
|
330
|
+
className,
|
|
331
|
+
...props
|
|
332
|
+
}) => {
|
|
333
|
+
return /* @__PURE__ */ jsx(
|
|
334
|
+
Loader2Icon,
|
|
335
|
+
{
|
|
336
|
+
role: "status",
|
|
337
|
+
"aria-label": "Loading",
|
|
338
|
+
className: merge("size-4 animate-spin", className),
|
|
339
|
+
...props
|
|
340
|
+
}
|
|
341
|
+
);
|
|
342
|
+
};
|
|
343
|
+
var ConfirmDialog = ({
|
|
344
|
+
children,
|
|
345
|
+
title,
|
|
346
|
+
description,
|
|
347
|
+
confirmText = "Confirmar",
|
|
348
|
+
cancelText = "Cancelar",
|
|
349
|
+
variant = "destructive",
|
|
350
|
+
onConfirm,
|
|
351
|
+
loading = false,
|
|
352
|
+
disabled = false,
|
|
353
|
+
open: controlledOpen,
|
|
354
|
+
onOpenChange: setControlledOpen,
|
|
355
|
+
confirmIcon
|
|
356
|
+
}) => {
|
|
357
|
+
const ConfirmActionIcon = confirmIcon ?? Trash2;
|
|
358
|
+
const [internalOpen, setInternalOpen] = useState(false);
|
|
359
|
+
const open = controlledOpen ?? internalOpen;
|
|
360
|
+
const setOpen = setControlledOpen ?? setInternalOpen;
|
|
361
|
+
const handleConfirm = (e) => {
|
|
362
|
+
e.preventDefault();
|
|
363
|
+
const result = onConfirm();
|
|
364
|
+
if (result instanceof Promise) {
|
|
365
|
+
result.then(() => setOpen(false)).catch(() => void 0);
|
|
366
|
+
} else {
|
|
367
|
+
setOpen(false);
|
|
368
|
+
}
|
|
369
|
+
};
|
|
370
|
+
return /* @__PURE__ */ jsxs(
|
|
371
|
+
AlertDialog,
|
|
372
|
+
{
|
|
373
|
+
open,
|
|
374
|
+
onOpenChange: setOpen,
|
|
375
|
+
children: [
|
|
376
|
+
/* @__PURE__ */ jsx(
|
|
377
|
+
AlertDialogTrigger,
|
|
378
|
+
{
|
|
379
|
+
asChild: true,
|
|
380
|
+
disabled,
|
|
381
|
+
children
|
|
382
|
+
}
|
|
383
|
+
),
|
|
384
|
+
/* @__PURE__ */ jsxs(AlertDialogContent, { className: "max-w-md p-0 overflow-hidden", children: [
|
|
385
|
+
/* @__PURE__ */ jsxs(AlertDialogHeader, { className: "px-0 pt-6 pb-4 space-y-2", children: [
|
|
386
|
+
/* @__PURE__ */ jsx(AlertDialogTitle, { className: "px-6 text-base font-semibold text-gray-900", children: title }),
|
|
387
|
+
/* @__PURE__ */ jsx(Separator, {}),
|
|
388
|
+
description && /* @__PURE__ */ jsx(AlertDialogDescription, { className: "px-6 text-sm text-gray-500", children: description })
|
|
389
|
+
] }),
|
|
390
|
+
/* @__PURE__ */ jsx(Separator, {}),
|
|
391
|
+
/* @__PURE__ */ jsxs(AlertDialogFooter, { className: "px-6 mb-3 flex flex-row justify-end gap-2", children: [
|
|
392
|
+
/* @__PURE__ */ jsxs(
|
|
393
|
+
AlertDialogCancel,
|
|
394
|
+
{
|
|
395
|
+
variant: "outline",
|
|
396
|
+
disabled: loading,
|
|
397
|
+
children: [
|
|
398
|
+
/* @__PURE__ */ jsx(Ban, {}),
|
|
399
|
+
cancelText
|
|
400
|
+
]
|
|
401
|
+
}
|
|
402
|
+
),
|
|
403
|
+
/* @__PURE__ */ jsxs(
|
|
404
|
+
AlertDialogAction,
|
|
405
|
+
{
|
|
406
|
+
variant,
|
|
407
|
+
className: "min-w-32",
|
|
408
|
+
disabled: loading,
|
|
409
|
+
onClick: handleConfirm,
|
|
410
|
+
children: [
|
|
411
|
+
/* @__PURE__ */ jsx(ConfirmActionIcon, {}),
|
|
412
|
+
loading ? /* @__PURE__ */ jsx(Spinner, {}) : confirmText
|
|
413
|
+
]
|
|
414
|
+
}
|
|
415
|
+
)
|
|
416
|
+
] })
|
|
417
|
+
] })
|
|
418
|
+
]
|
|
419
|
+
}
|
|
420
|
+
);
|
|
421
|
+
};
|
|
422
|
+
var Glow = ({ className, background }) => {
|
|
423
|
+
return /* @__PURE__ */ jsx(
|
|
424
|
+
"div",
|
|
425
|
+
{
|
|
426
|
+
className: merge("absolute rounded-full", className),
|
|
427
|
+
style: { background }
|
|
428
|
+
}
|
|
429
|
+
);
|
|
430
|
+
};
|
|
431
|
+
var WaveLayer = ({
|
|
432
|
+
className,
|
|
433
|
+
path,
|
|
434
|
+
fill,
|
|
435
|
+
viewBox = "0 0 700 600",
|
|
436
|
+
transform
|
|
437
|
+
}) => {
|
|
438
|
+
return /* @__PURE__ */ jsx(
|
|
439
|
+
"svg",
|
|
440
|
+
{
|
|
441
|
+
className,
|
|
442
|
+
viewBox,
|
|
443
|
+
fill: "none",
|
|
444
|
+
preserveAspectRatio: "none",
|
|
445
|
+
"aria-hidden": "true",
|
|
446
|
+
children: /* @__PURE__ */ jsx(
|
|
447
|
+
"path",
|
|
448
|
+
{
|
|
449
|
+
d: path,
|
|
450
|
+
fill,
|
|
451
|
+
transform
|
|
452
|
+
}
|
|
453
|
+
)
|
|
454
|
+
}
|
|
455
|
+
);
|
|
456
|
+
};
|
|
457
|
+
var Image = ({
|
|
458
|
+
url,
|
|
459
|
+
icon,
|
|
460
|
+
label,
|
|
461
|
+
className,
|
|
462
|
+
imageClassName,
|
|
463
|
+
previewClassName
|
|
464
|
+
}) => {
|
|
465
|
+
if (url === void 0) {
|
|
466
|
+
return /* @__PURE__ */ jsx(
|
|
467
|
+
"div",
|
|
468
|
+
{
|
|
469
|
+
className: merge(
|
|
470
|
+
"py-3 my-2 rounded-lg border flex items-center justify-center bg-gray-100/50 h-35",
|
|
471
|
+
className
|
|
472
|
+
),
|
|
473
|
+
children: /* @__PURE__ */ jsx(CameraOff, { className: "text-gray-400" })
|
|
474
|
+
}
|
|
475
|
+
);
|
|
476
|
+
}
|
|
477
|
+
const Icon = icon;
|
|
478
|
+
return /* @__PURE__ */ jsxs("div", { className: merge("flex flex-col gap-1", className), children: [
|
|
479
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-row items-center gap-2", children: [
|
|
480
|
+
Icon && /* @__PURE__ */ jsx(Icon, { className: "text-gray-500 h-5 w-5" }),
|
|
481
|
+
label && /* @__PURE__ */ jsx("p", { className: "text-xs text-gray-500", children: label })
|
|
482
|
+
] }),
|
|
483
|
+
/* @__PURE__ */ jsx(
|
|
484
|
+
"div",
|
|
485
|
+
{
|
|
486
|
+
className: merge("py-2 rounded-lg border flex items-center justify-center", imageClassName),
|
|
487
|
+
children: /* @__PURE__ */ jsx(
|
|
488
|
+
"img",
|
|
489
|
+
{
|
|
490
|
+
src: url,
|
|
491
|
+
alt: label ?? "",
|
|
492
|
+
className: merge("max-h-full max-w-full object-contain", previewClassName)
|
|
493
|
+
}
|
|
494
|
+
)
|
|
495
|
+
}
|
|
496
|
+
)
|
|
497
|
+
] });
|
|
498
|
+
};
|
|
499
|
+
var DialogClose = ({
|
|
500
|
+
...props
|
|
501
|
+
}) => {
|
|
502
|
+
return /* @__PURE__ */ jsx(
|
|
503
|
+
Dialog$1.Close,
|
|
504
|
+
{
|
|
505
|
+
"data-slot": "dialog-close",
|
|
506
|
+
...props
|
|
507
|
+
}
|
|
508
|
+
);
|
|
509
|
+
};
|
|
510
|
+
var DialogOverlay = ({
|
|
511
|
+
className,
|
|
512
|
+
...props
|
|
513
|
+
}) => {
|
|
514
|
+
return /* @__PURE__ */ jsx(
|
|
515
|
+
Dialog$1.Overlay,
|
|
516
|
+
{
|
|
517
|
+
"data-slot": "dialog-overlay",
|
|
518
|
+
className: merge(
|
|
519
|
+
"fixed inset-0 isolate z-50 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
|
|
520
|
+
className
|
|
521
|
+
),
|
|
522
|
+
...props
|
|
523
|
+
}
|
|
524
|
+
);
|
|
525
|
+
};
|
|
526
|
+
var DialogPortal = ({
|
|
527
|
+
...props
|
|
528
|
+
}) => {
|
|
529
|
+
return /* @__PURE__ */ jsx(
|
|
530
|
+
Dialog$1.Portal,
|
|
531
|
+
{
|
|
532
|
+
"data-slot": "dialog-portal",
|
|
533
|
+
...props
|
|
534
|
+
}
|
|
535
|
+
);
|
|
536
|
+
};
|
|
537
|
+
var DialogContent = ({
|
|
538
|
+
className,
|
|
539
|
+
children,
|
|
540
|
+
showCloseButton = true,
|
|
541
|
+
...props
|
|
542
|
+
}) => {
|
|
543
|
+
return /* @__PURE__ */ jsxs(DialogPortal, { children: [
|
|
544
|
+
/* @__PURE__ */ jsx(DialogOverlay, {}),
|
|
545
|
+
/* @__PURE__ */ jsxs(
|
|
546
|
+
Dialog$1.Content,
|
|
547
|
+
{
|
|
548
|
+
"data-slot": "dialog-content",
|
|
549
|
+
className: merge(
|
|
550
|
+
"fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 text-xs/relaxed ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
551
|
+
className
|
|
552
|
+
),
|
|
553
|
+
...props,
|
|
554
|
+
children: [
|
|
555
|
+
children,
|
|
556
|
+
showCloseButton && /* @__PURE__ */ jsx(
|
|
557
|
+
Dialog$1.Close,
|
|
558
|
+
{
|
|
559
|
+
"data-slot": "dialog-close",
|
|
560
|
+
asChild: true,
|
|
561
|
+
children: /* @__PURE__ */ jsxs(
|
|
562
|
+
Button,
|
|
563
|
+
{
|
|
564
|
+
variant: "ghost",
|
|
565
|
+
className: "absolute top-2 right-2",
|
|
566
|
+
size: "icon",
|
|
567
|
+
children: [
|
|
568
|
+
/* @__PURE__ */ jsx(XIcon, {}),
|
|
569
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
|
|
570
|
+
]
|
|
571
|
+
}
|
|
572
|
+
)
|
|
573
|
+
}
|
|
574
|
+
)
|
|
575
|
+
]
|
|
576
|
+
}
|
|
577
|
+
)
|
|
578
|
+
] });
|
|
579
|
+
};
|
|
580
|
+
var DialogDescription = ({
|
|
581
|
+
className,
|
|
582
|
+
...props
|
|
583
|
+
}) => {
|
|
584
|
+
return /* @__PURE__ */ jsx(
|
|
585
|
+
Dialog$1.Description,
|
|
586
|
+
{
|
|
587
|
+
"data-slot": "dialog-description",
|
|
588
|
+
className: merge(
|
|
589
|
+
"text-xs/relaxed text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",
|
|
590
|
+
className
|
|
591
|
+
),
|
|
592
|
+
...props
|
|
593
|
+
}
|
|
594
|
+
);
|
|
595
|
+
};
|
|
596
|
+
var DialogFooter = ({
|
|
597
|
+
className,
|
|
598
|
+
showCloseButton = false,
|
|
599
|
+
children,
|
|
600
|
+
...props
|
|
601
|
+
}) => {
|
|
602
|
+
return /* @__PURE__ */ jsxs(
|
|
603
|
+
"div",
|
|
604
|
+
{
|
|
605
|
+
"data-slot": "dialog-footer",
|
|
606
|
+
className: merge("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className),
|
|
607
|
+
...props,
|
|
608
|
+
children: [
|
|
609
|
+
children,
|
|
610
|
+
showCloseButton && /* @__PURE__ */ jsx(Dialog$1.Close, { asChild: true, children: /* @__PURE__ */ jsx(Button, { variant: "outline", children: "Close" }) })
|
|
611
|
+
]
|
|
612
|
+
}
|
|
613
|
+
);
|
|
614
|
+
};
|
|
615
|
+
var DialogHeader = ({
|
|
616
|
+
className,
|
|
617
|
+
...props
|
|
618
|
+
}) => {
|
|
619
|
+
return /* @__PURE__ */ jsx(
|
|
620
|
+
"div",
|
|
621
|
+
{
|
|
622
|
+
"data-slot": "dialog-header",
|
|
623
|
+
className: merge("flex flex-col gap-1", className),
|
|
624
|
+
...props
|
|
625
|
+
}
|
|
626
|
+
);
|
|
627
|
+
};
|
|
628
|
+
var DialogTitle = ({
|
|
629
|
+
className,
|
|
630
|
+
...props
|
|
631
|
+
}) => {
|
|
632
|
+
return /* @__PURE__ */ jsx(
|
|
633
|
+
Dialog$1.Title,
|
|
634
|
+
{
|
|
635
|
+
"data-slot": "dialog-title",
|
|
636
|
+
className: merge("text-sm font-medium", className),
|
|
637
|
+
...props
|
|
638
|
+
}
|
|
639
|
+
);
|
|
640
|
+
};
|
|
641
|
+
var DialogTrigger = ({
|
|
642
|
+
...props
|
|
643
|
+
}) => {
|
|
644
|
+
return /* @__PURE__ */ jsx(
|
|
645
|
+
Dialog$1.Trigger,
|
|
646
|
+
{
|
|
647
|
+
"data-slot": "dialog-trigger",
|
|
648
|
+
...props
|
|
649
|
+
}
|
|
650
|
+
);
|
|
651
|
+
};
|
|
652
|
+
var Dialog = ({
|
|
653
|
+
...props
|
|
654
|
+
}) => {
|
|
655
|
+
return /* @__PURE__ */ jsx(
|
|
656
|
+
Dialog$1.Root,
|
|
657
|
+
{
|
|
658
|
+
"data-slot": "dialog",
|
|
659
|
+
...props
|
|
660
|
+
}
|
|
661
|
+
);
|
|
662
|
+
};
|
|
663
|
+
var ICON_VARIANTS = {
|
|
664
|
+
orange: "bg-orange-50 ring-orange-200 text-orange-600",
|
|
665
|
+
neutral: "bg-neutral-100 ring-neutral-200 text-neutral-600",
|
|
666
|
+
amber: "bg-amber-50 ring-amber-200 text-amber-600",
|
|
667
|
+
red: "bg-red-50 ring-red-200 text-red-600"
|
|
668
|
+
};
|
|
669
|
+
var Modal = ({
|
|
670
|
+
children,
|
|
671
|
+
openModal = false,
|
|
672
|
+
setOpenModal,
|
|
673
|
+
showClose = true,
|
|
674
|
+
className,
|
|
675
|
+
title,
|
|
676
|
+
description,
|
|
677
|
+
icon: Icon,
|
|
678
|
+
iconVariant = "orange",
|
|
679
|
+
content,
|
|
680
|
+
actions,
|
|
681
|
+
showCancel = false
|
|
682
|
+
}) => {
|
|
683
|
+
const [open, setOpen] = useState(false);
|
|
684
|
+
const isControlled = openModal !== void 0 && setOpenModal !== void 0;
|
|
685
|
+
const handleClose = () => {
|
|
686
|
+
if (isControlled) setOpenModal?.(false);
|
|
687
|
+
else setOpen(false);
|
|
688
|
+
};
|
|
689
|
+
return /* @__PURE__ */ jsxs(
|
|
690
|
+
Dialog,
|
|
691
|
+
{
|
|
692
|
+
open: isControlled ? openModal : open,
|
|
693
|
+
onOpenChange: isControlled ? setOpenModal : setOpen,
|
|
694
|
+
children: [
|
|
695
|
+
children && /* @__PURE__ */ jsx(DialogTrigger, { asChild: true, children }),
|
|
696
|
+
/* @__PURE__ */ jsxs(
|
|
697
|
+
DialogContent,
|
|
698
|
+
{
|
|
699
|
+
showCloseButton: showClose,
|
|
700
|
+
className: merge("max-w-lg! p-0 overflow-hidden gap-0", className),
|
|
701
|
+
children: [
|
|
702
|
+
/* @__PURE__ */ jsxs(DialogHeader, { className: "px-6 py-4 pb-3", children: [
|
|
703
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2.5", children: [
|
|
704
|
+
Icon && /* @__PURE__ */ jsx(
|
|
705
|
+
"div",
|
|
706
|
+
{
|
|
707
|
+
className: merge(
|
|
708
|
+
"flex size-8 items-center justify-center rounded-lg ring-1 shrink-0",
|
|
709
|
+
ICON_VARIANTS[iconVariant]
|
|
710
|
+
),
|
|
711
|
+
children: /* @__PURE__ */ jsx(Icon, { className: "size-4" })
|
|
712
|
+
}
|
|
713
|
+
),
|
|
714
|
+
/* @__PURE__ */ jsx(DialogTitle, { className: "text-base font-semibold text-gray-900", children: title })
|
|
715
|
+
] }),
|
|
716
|
+
/* @__PURE__ */ jsx(DialogDescription, { className: "text-sm text-gray-500", children: description })
|
|
717
|
+
] }),
|
|
718
|
+
/* @__PURE__ */ jsx(Separator, {}),
|
|
719
|
+
/* @__PURE__ */ jsx("div", { className: "px-6 py-4", children: content }),
|
|
720
|
+
/* @__PURE__ */ jsx(Separator, {}),
|
|
721
|
+
(showCancel || actions) && /* @__PURE__ */ jsxs(DialogFooter, { className: "px-6 py-3 flex flex-row justify-end gap-2", children: [
|
|
722
|
+
showCancel && /* @__PURE__ */ jsxs(
|
|
723
|
+
Button,
|
|
724
|
+
{
|
|
725
|
+
variant: "outline",
|
|
726
|
+
size: "sm",
|
|
727
|
+
onClick: handleClose,
|
|
728
|
+
children: [
|
|
729
|
+
/* @__PURE__ */ jsx(Ban, {}),
|
|
730
|
+
"Cancelar"
|
|
731
|
+
]
|
|
732
|
+
}
|
|
733
|
+
),
|
|
734
|
+
actions
|
|
735
|
+
] })
|
|
736
|
+
]
|
|
737
|
+
}
|
|
738
|
+
)
|
|
739
|
+
]
|
|
740
|
+
}
|
|
741
|
+
);
|
|
742
|
+
};
|
|
743
|
+
var StepItem = ({
|
|
744
|
+
step,
|
|
745
|
+
isCurrent,
|
|
746
|
+
isCompleted,
|
|
747
|
+
index,
|
|
748
|
+
totalSteps
|
|
749
|
+
}) => {
|
|
750
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
751
|
+
/* @__PURE__ */ jsxs(
|
|
752
|
+
"div",
|
|
753
|
+
{
|
|
754
|
+
className: merge("flex flex-row items-center gap-2 opacity-60", isCurrent && "opacity-100"),
|
|
755
|
+
children: [
|
|
756
|
+
/* @__PURE__ */ jsx(
|
|
757
|
+
"div",
|
|
758
|
+
{
|
|
759
|
+
className: merge(
|
|
760
|
+
"p-1 border border-transparent rounded-full flex items-center justify-center",
|
|
761
|
+
isCurrent && "border-orange-500"
|
|
762
|
+
),
|
|
763
|
+
children: /* @__PURE__ */ jsx(
|
|
764
|
+
"div",
|
|
765
|
+
{
|
|
766
|
+
className: merge(
|
|
767
|
+
"h-10 w-10 flex items-center justify-center bg-gray-200 text-gray-500 rounded-full",
|
|
768
|
+
isCurrent ? "bg-orange-500 text-white opacity-100" : isCompleted ? "bg-orange-500 text-white" : ""
|
|
769
|
+
),
|
|
770
|
+
children: step.step
|
|
771
|
+
}
|
|
772
|
+
)
|
|
773
|
+
}
|
|
774
|
+
),
|
|
775
|
+
step.label && /* @__PURE__ */ jsx("p", { className: "text-sm text-gray-900", children: step.label })
|
|
776
|
+
]
|
|
777
|
+
}
|
|
778
|
+
),
|
|
779
|
+
index < totalSteps - 1 && /* @__PURE__ */ jsx(Separator, { className: "flex-1 mx-4 bg-gray-300" })
|
|
780
|
+
] });
|
|
781
|
+
};
|
|
782
|
+
var Bar = ({
|
|
783
|
+
steps,
|
|
784
|
+
currentStep,
|
|
785
|
+
label,
|
|
786
|
+
className
|
|
787
|
+
}) => {
|
|
788
|
+
const totalSteps = steps.length;
|
|
789
|
+
const progress = (currentStep - 1) / (totalSteps - 1) * 100;
|
|
790
|
+
return /* @__PURE__ */ jsxs("div", { className: merge("w-full hidden sm:flex flex-col items-center", className), children: [
|
|
791
|
+
/* @__PURE__ */ jsxs("div", { className: "relative flex items-center justify-between w-full max-w-xs", children: [
|
|
792
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center px-10", children: /* @__PURE__ */ jsx("div", { className: "w-full h-1 bg-gray-300/50 rounded-full" }) }),
|
|
793
|
+
/* @__PURE__ */ jsx(
|
|
794
|
+
"div",
|
|
795
|
+
{
|
|
796
|
+
className: "absolute left-0 top-1/2 -translate-y-1/2 h-1 bg-orange-500 rounded-full transition-all",
|
|
797
|
+
style: { width: `${progress}%` }
|
|
798
|
+
}
|
|
799
|
+
),
|
|
800
|
+
steps.map((step, index) => {
|
|
801
|
+
const stepNumber = index + 1;
|
|
802
|
+
const isActive = stepNumber === currentStep;
|
|
803
|
+
const isCompleted = stepNumber < currentStep;
|
|
804
|
+
return /* @__PURE__ */ jsx(
|
|
805
|
+
"div",
|
|
806
|
+
{
|
|
807
|
+
className: "relative z-10 flex items-center justify-center",
|
|
808
|
+
children: /* @__PURE__ */ jsx(
|
|
809
|
+
"div",
|
|
810
|
+
{
|
|
811
|
+
className: merge(
|
|
812
|
+
"w-8 h-8 rounded-full flex items-center justify-center text-sm font-medium transition",
|
|
813
|
+
isActive && "bg-orange-500 text-white",
|
|
814
|
+
isCompleted && "bg-orange-500 text-white",
|
|
815
|
+
!isActive && !isCompleted && "bg-gray-200 text-gray-500"
|
|
816
|
+
),
|
|
817
|
+
children: stepNumber
|
|
818
|
+
}
|
|
819
|
+
)
|
|
820
|
+
},
|
|
821
|
+
`${step.step}`
|
|
822
|
+
);
|
|
823
|
+
})
|
|
824
|
+
] }),
|
|
825
|
+
label && /* @__PURE__ */ jsx("p", { className: "mt-3 text-xs text-gray-500/80 font-light text-center", children: label })
|
|
826
|
+
] });
|
|
827
|
+
};
|
|
828
|
+
var Steps = ({
|
|
829
|
+
steps,
|
|
830
|
+
currentStep,
|
|
831
|
+
variant = "line",
|
|
832
|
+
label,
|
|
833
|
+
className
|
|
834
|
+
}) => {
|
|
835
|
+
if (variant === "bar") {
|
|
836
|
+
return /* @__PURE__ */ jsx(
|
|
837
|
+
Bar,
|
|
838
|
+
{
|
|
839
|
+
steps,
|
|
840
|
+
currentStep,
|
|
841
|
+
label,
|
|
842
|
+
className
|
|
843
|
+
}
|
|
844
|
+
);
|
|
845
|
+
}
|
|
846
|
+
return /* @__PURE__ */ jsx(
|
|
847
|
+
"div",
|
|
848
|
+
{
|
|
849
|
+
className: merge(
|
|
850
|
+
"w-full hidden sm:flex items-center justify-center p-4 px-20 select-none",
|
|
851
|
+
className
|
|
852
|
+
),
|
|
853
|
+
children: steps.map((step, index) => /* @__PURE__ */ jsx(
|
|
854
|
+
StepItem,
|
|
855
|
+
{
|
|
856
|
+
step,
|
|
857
|
+
isCurrent: step.step === currentStep,
|
|
858
|
+
isCompleted: step.step < currentStep,
|
|
859
|
+
index,
|
|
860
|
+
totalSteps: steps.length
|
|
861
|
+
},
|
|
862
|
+
step.label
|
|
863
|
+
))
|
|
864
|
+
}
|
|
865
|
+
);
|
|
866
|
+
};
|
|
867
|
+
var Tooltip = ({
|
|
868
|
+
...props
|
|
869
|
+
}) => {
|
|
870
|
+
return /* @__PURE__ */ jsx(
|
|
871
|
+
Tooltip$1.Root,
|
|
872
|
+
{
|
|
873
|
+
"data-slot": "tooltip",
|
|
874
|
+
...props
|
|
875
|
+
}
|
|
876
|
+
);
|
|
877
|
+
};
|
|
878
|
+
var TooltipContent = ({
|
|
879
|
+
className,
|
|
880
|
+
sideOffset = 0,
|
|
881
|
+
children,
|
|
882
|
+
...props
|
|
883
|
+
}) => {
|
|
884
|
+
return /* @__PURE__ */ jsx(Tooltip$1.Portal, { children: /* @__PURE__ */ jsxs(
|
|
885
|
+
Tooltip$1.Content,
|
|
886
|
+
{
|
|
887
|
+
"data-slot": "tooltip-content",
|
|
888
|
+
sideOffset,
|
|
889
|
+
className: merge(
|
|
890
|
+
"z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 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 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
891
|
+
className
|
|
892
|
+
),
|
|
893
|
+
...props,
|
|
894
|
+
children: [
|
|
895
|
+
children,
|
|
896
|
+
/* @__PURE__ */ jsx(Tooltip$1.Arrow, { className: "z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-xs bg-foreground fill-foreground" })
|
|
897
|
+
]
|
|
898
|
+
}
|
|
899
|
+
) });
|
|
900
|
+
};
|
|
901
|
+
var TooltipTrigger = ({
|
|
902
|
+
...props
|
|
903
|
+
}) => {
|
|
904
|
+
return /* @__PURE__ */ jsx(
|
|
905
|
+
Tooltip$1.Trigger,
|
|
906
|
+
{
|
|
907
|
+
"data-slot": "tooltip-trigger",
|
|
908
|
+
...props
|
|
909
|
+
}
|
|
910
|
+
);
|
|
911
|
+
};
|
|
912
|
+
var TruncatedText = ({
|
|
913
|
+
text,
|
|
914
|
+
className,
|
|
915
|
+
tooltipClassName
|
|
916
|
+
}) => {
|
|
917
|
+
return /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
918
|
+
/* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx("span", { className: merge("block truncate min-w-0 w-full cursor-default", className), children: text }) }),
|
|
919
|
+
/* @__PURE__ */ jsx(TooltipContent, { className: tooltipClassName, children: /* @__PURE__ */ jsx("span", { children: text }) })
|
|
920
|
+
] });
|
|
921
|
+
};
|
|
922
|
+
var Accordion = ({
|
|
923
|
+
className,
|
|
924
|
+
...props
|
|
925
|
+
}) => {
|
|
926
|
+
return /* @__PURE__ */ jsx(
|
|
927
|
+
Accordion$1.Root,
|
|
928
|
+
{
|
|
929
|
+
"data-slot": "accordion",
|
|
930
|
+
className: merge("flex w-full flex-col overflow-hidden rounded-md border", className),
|
|
931
|
+
...props
|
|
932
|
+
}
|
|
933
|
+
);
|
|
934
|
+
};
|
|
935
|
+
var Avatar = ({
|
|
936
|
+
className,
|
|
937
|
+
size = "default",
|
|
938
|
+
...props
|
|
939
|
+
}) => {
|
|
940
|
+
return /* @__PURE__ */ jsx(
|
|
941
|
+
Avatar$1.Root,
|
|
942
|
+
{
|
|
943
|
+
"data-slot": "avatar",
|
|
944
|
+
"data-size": size,
|
|
945
|
+
className: merge(
|
|
946
|
+
"group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten",
|
|
947
|
+
className
|
|
948
|
+
),
|
|
949
|
+
...props
|
|
950
|
+
}
|
|
951
|
+
);
|
|
952
|
+
};
|
|
953
|
+
var badgeVariants = cva(
|
|
954
|
+
"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-[0.625rem] font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-2.5!",
|
|
955
|
+
{
|
|
956
|
+
variants: {
|
|
957
|
+
variant: {
|
|
958
|
+
default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80 font-semibold",
|
|
959
|
+
secondary: "bg-orange-50 border border-orange-200/50 backdrop-blur-sm text-orange-500",
|
|
960
|
+
destructive: "bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",
|
|
961
|
+
outline: "border-border bg-input/20 text-foreground dark:bg-input/30 [a]:hover:bg-muted [a]:hover:text-muted-foreground",
|
|
962
|
+
ghost: "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",
|
|
963
|
+
link: "text-primary underline-offset-4 hover:underline",
|
|
964
|
+
success: "bg-green-500/15 text-green-600 ring-1 ring-green-600/20 transition-colors [a&]:hover:bg-green-500/25",
|
|
965
|
+
warning: "bg-amber-500/15 text-amber-600 ring-1 ring-amber-600/20 transition-colors [a&]:hover:bg-amber-500/25",
|
|
966
|
+
error: "bg-red-500/15 text-red-600 ring-1 ring-red-600/20 transition-colors [a&]:hover:bg-red-500/25",
|
|
967
|
+
info: "bg-blue-500/15 text-blue-600 ring-1 ring-blue-600/20 transition-colors [a&]:hover:bg-blue-500/25"
|
|
968
|
+
}
|
|
969
|
+
},
|
|
970
|
+
defaultVariants: {
|
|
971
|
+
variant: "default"
|
|
972
|
+
}
|
|
973
|
+
}
|
|
974
|
+
);
|
|
975
|
+
var Badge = ({
|
|
976
|
+
className,
|
|
977
|
+
variant = "default",
|
|
978
|
+
asChild = false,
|
|
979
|
+
...props
|
|
980
|
+
}) => {
|
|
981
|
+
const Comp = asChild ? Slot.Root : "span";
|
|
982
|
+
return /* @__PURE__ */ jsx(
|
|
983
|
+
Comp,
|
|
984
|
+
{
|
|
985
|
+
"data-slot": "badge",
|
|
986
|
+
"data-variant": variant,
|
|
987
|
+
className: merge(badgeVariants({ variant }), className),
|
|
988
|
+
...props
|
|
989
|
+
}
|
|
990
|
+
);
|
|
991
|
+
};
|
|
992
|
+
var Breadcrumb = ({
|
|
993
|
+
className,
|
|
994
|
+
...props
|
|
995
|
+
}) => {
|
|
996
|
+
return /* @__PURE__ */ jsx(
|
|
997
|
+
"nav",
|
|
998
|
+
{
|
|
999
|
+
"aria-label": "breadcrumb",
|
|
1000
|
+
"data-slot": "breadcrumb",
|
|
1001
|
+
className: merge(className),
|
|
1002
|
+
...props
|
|
1003
|
+
}
|
|
1004
|
+
);
|
|
1005
|
+
};
|
|
1006
|
+
var buttonGroupVariants = cva(
|
|
1007
|
+
"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1",
|
|
1008
|
+
{
|
|
1009
|
+
variants: {
|
|
1010
|
+
orientation: {
|
|
1011
|
+
horizontal: "[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-md!",
|
|
1012
|
+
vertical: "flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-md!"
|
|
1013
|
+
}
|
|
1014
|
+
},
|
|
1015
|
+
defaultVariants: {
|
|
1016
|
+
orientation: "horizontal"
|
|
1017
|
+
}
|
|
1018
|
+
}
|
|
1019
|
+
);
|
|
1020
|
+
var ButtonGroup = ({
|
|
1021
|
+
className,
|
|
1022
|
+
orientation,
|
|
1023
|
+
...props
|
|
1024
|
+
}) => {
|
|
1025
|
+
return /* @__PURE__ */ jsx(
|
|
1026
|
+
"div",
|
|
1027
|
+
{
|
|
1028
|
+
"data-slot": "button-group",
|
|
1029
|
+
"data-orientation": orientation,
|
|
1030
|
+
className: merge(buttonGroupVariants({ orientation }), className),
|
|
1031
|
+
...props
|
|
1032
|
+
}
|
|
1033
|
+
);
|
|
1034
|
+
};
|
|
1035
|
+
var CalendarDayButton = ({
|
|
1036
|
+
className,
|
|
1037
|
+
day,
|
|
1038
|
+
modifiers,
|
|
1039
|
+
locale,
|
|
1040
|
+
...props
|
|
1041
|
+
}) => {
|
|
1042
|
+
const defaultClassNames = getDefaultClassNames();
|
|
1043
|
+
const ref = useRef(null);
|
|
1044
|
+
useEffect(() => {
|
|
1045
|
+
if (modifiers.focused) ref.current?.focus();
|
|
1046
|
+
}, [modifiers.focused]);
|
|
1047
|
+
return /* @__PURE__ */ jsx(
|
|
1048
|
+
Button,
|
|
1049
|
+
{
|
|
1050
|
+
ref,
|
|
1051
|
+
variant: "ghost",
|
|
1052
|
+
size: "icon",
|
|
1053
|
+
"data-day": day.date.toLocaleDateString(locale?.code),
|
|
1054
|
+
"data-selected-single": modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle,
|
|
1055
|
+
"data-disabled": modifiers.disabled || void 0,
|
|
1056
|
+
"data-range-start": modifiers.range_start,
|
|
1057
|
+
"data-range-end": modifiers.range_end,
|
|
1058
|
+
"data-range-middle": modifiers.range_middle,
|
|
1059
|
+
className: merge(
|
|
1060
|
+
"relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-middle=true]:bg-muted data-[range-start=true]:bg-primary data-[selected-single=true]:bg-orange-50 data-[selected-single=true]:text-orange-500 data-[selected-single=true]:border data-[selected-single=true]:border-orange-300/50! [&>span]:text-xs [&>span]:opacity-70 data-[disabled=true]:opacity-30 data-[disabled=true]:pointer-events-none data-[disabled=true]:line-through",
|
|
1061
|
+
defaultClassNames.day,
|
|
1062
|
+
className
|
|
1063
|
+
),
|
|
1064
|
+
...props
|
|
1065
|
+
}
|
|
1066
|
+
);
|
|
1067
|
+
};
|
|
1068
|
+
var Calendar = ({
|
|
1069
|
+
className,
|
|
1070
|
+
classNames,
|
|
1071
|
+
showOutsideDays = true,
|
|
1072
|
+
captionLayout = "label",
|
|
1073
|
+
buttonVariant = "ghost",
|
|
1074
|
+
locale,
|
|
1075
|
+
formatters,
|
|
1076
|
+
components,
|
|
1077
|
+
...props
|
|
1078
|
+
}) => {
|
|
1079
|
+
const defaultClassNames = getDefaultClassNames();
|
|
1080
|
+
return /* @__PURE__ */ jsx(
|
|
1081
|
+
DayPicker,
|
|
1082
|
+
{
|
|
1083
|
+
showOutsideDays,
|
|
1084
|
+
className: merge(
|
|
1085
|
+
"group/calendar bg-background p-3 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(6)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent",
|
|
1086
|
+
String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
|
|
1087
|
+
String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
|
|
1088
|
+
className
|
|
1089
|
+
),
|
|
1090
|
+
captionLayout,
|
|
1091
|
+
locale,
|
|
1092
|
+
formatters: {
|
|
1093
|
+
formatMonthDropdown: (date) => date.toLocaleString(locale?.code, { month: "short" }),
|
|
1094
|
+
...formatters
|
|
1095
|
+
},
|
|
1096
|
+
classNames: {
|
|
1097
|
+
...defaultClassNames,
|
|
1098
|
+
root: merge("w-full min-w-70", defaultClassNames.root),
|
|
1099
|
+
months: merge("relative flex flex-col gap-4 md:flex-row", defaultClassNames.months),
|
|
1100
|
+
month: merge(
|
|
1101
|
+
"flex w-full flex-col justify-center items-center gap-6",
|
|
1102
|
+
defaultClassNames.month
|
|
1103
|
+
),
|
|
1104
|
+
caption_label: merge("text-sm font-semibold text-gray-900 capitalize"),
|
|
1105
|
+
month_caption: merge(
|
|
1106
|
+
"flex w-full items-center justify-center gap-2 py-1",
|
|
1107
|
+
defaultClassNames.month_caption
|
|
1108
|
+
),
|
|
1109
|
+
dropdowns: merge("flex items-center gap-2", defaultClassNames.dropdowns),
|
|
1110
|
+
dropdown: merge("relative", defaultClassNames.dropdown),
|
|
1111
|
+
dropdown_root: merge("relative", defaultClassNames.dropdown_root),
|
|
1112
|
+
months_dropdown: merge(
|
|
1113
|
+
"appearance-none cursor-pointer rounded-md border border-gray-200 bg-background px-2 py-1 pr-6 text-sm font-semibold text-gray-900 capitalize focus:outline-none focus:ring-2 focus:ring-orange-300"
|
|
1114
|
+
),
|
|
1115
|
+
years_dropdown: merge(
|
|
1116
|
+
"appearance-none cursor-pointer rounded-md border border-gray-200 bg-background px-2 py-1 pr-6 text-sm font-semibold text-gray-900 focus:outline-none focus:ring-2 focus:ring-orange-300"
|
|
1117
|
+
),
|
|
1118
|
+
month_grid: merge("w-full"),
|
|
1119
|
+
today: merge("bg-gray-100 rounded-lg"),
|
|
1120
|
+
weekdays: merge(" border-b border-orange-200 capitalize"),
|
|
1121
|
+
weekday: merge("pb-2"),
|
|
1122
|
+
nav: merge(
|
|
1123
|
+
"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",
|
|
1124
|
+
defaultClassNames.nav
|
|
1125
|
+
),
|
|
1126
|
+
button_previous: merge(
|
|
1127
|
+
buttonVariants({ variant: buttonVariant }),
|
|
1128
|
+
"size-(--cell-size) p-0 select-none aria-disabled:opacity-50",
|
|
1129
|
+
defaultClassNames.button_previous
|
|
1130
|
+
),
|
|
1131
|
+
button_next: merge(
|
|
1132
|
+
buttonVariants({ variant: buttonVariant }),
|
|
1133
|
+
"size-(--cell-size) p-0 select-none aria-disabled:opacity-50",
|
|
1134
|
+
defaultClassNames.button_next
|
|
1135
|
+
),
|
|
1136
|
+
...classNames
|
|
1137
|
+
},
|
|
1138
|
+
components: {
|
|
1139
|
+
Root: ({ className: className2, rootRef, ...props2 }) => /* @__PURE__ */ jsx(
|
|
1140
|
+
"div",
|
|
1141
|
+
{
|
|
1142
|
+
"data-slot": "calendar",
|
|
1143
|
+
ref: rootRef,
|
|
1144
|
+
className: merge(className2),
|
|
1145
|
+
...props2
|
|
1146
|
+
}
|
|
1147
|
+
),
|
|
1148
|
+
Chevron: ({ className: className2, orientation, ...props2 }) => {
|
|
1149
|
+
if (orientation === "left")
|
|
1150
|
+
return /* @__PURE__ */ jsx(
|
|
1151
|
+
ChevronLeftIcon,
|
|
1152
|
+
{
|
|
1153
|
+
className: merge("size-4", className2),
|
|
1154
|
+
...props2
|
|
1155
|
+
}
|
|
1156
|
+
);
|
|
1157
|
+
if (orientation === "right")
|
|
1158
|
+
return /* @__PURE__ */ jsx(
|
|
1159
|
+
ChevronRightIcon,
|
|
1160
|
+
{
|
|
1161
|
+
className: merge("size-4", className2),
|
|
1162
|
+
...props2
|
|
1163
|
+
}
|
|
1164
|
+
);
|
|
1165
|
+
return /* @__PURE__ */ jsx(
|
|
1166
|
+
ChevronDownIcon,
|
|
1167
|
+
{
|
|
1168
|
+
className: merge("size-4", className2),
|
|
1169
|
+
...props2
|
|
1170
|
+
}
|
|
1171
|
+
);
|
|
1172
|
+
},
|
|
1173
|
+
Dropdown: ({ value, onChange, options, className: className2 }) => /* @__PURE__ */ jsxs("div", { className: "relative inline-flex items-center", children: [
|
|
1174
|
+
/* @__PURE__ */ jsx(
|
|
1175
|
+
"select",
|
|
1176
|
+
{
|
|
1177
|
+
value,
|
|
1178
|
+
onChange,
|
|
1179
|
+
className: merge(
|
|
1180
|
+
"appearance-none cursor-pointer rounded-md bg-transparent pl-2 pr-7 py-1 text-sm font-semibold text-gray-900 capitalize focus:outline-none",
|
|
1181
|
+
className2
|
|
1182
|
+
),
|
|
1183
|
+
children: options?.map((option) => /* @__PURE__ */ jsx(
|
|
1184
|
+
"option",
|
|
1185
|
+
{
|
|
1186
|
+
value: option.value,
|
|
1187
|
+
disabled: option.disabled,
|
|
1188
|
+
children: option.label
|
|
1189
|
+
},
|
|
1190
|
+
option.value
|
|
1191
|
+
))
|
|
1192
|
+
}
|
|
1193
|
+
),
|
|
1194
|
+
/* @__PURE__ */ jsx(ChevronDownIcon, { className: "pointer-events-none absolute right-1.5 top-1/2 size-3.5 -translate-y-1/2 text-gray-500" })
|
|
1195
|
+
] }),
|
|
1196
|
+
DayButton: (props2) => /* @__PURE__ */ jsx(
|
|
1197
|
+
CalendarDayButton,
|
|
1198
|
+
{
|
|
1199
|
+
locale,
|
|
1200
|
+
...props2
|
|
1201
|
+
}
|
|
1202
|
+
),
|
|
1203
|
+
...components
|
|
1204
|
+
},
|
|
1205
|
+
...props
|
|
1206
|
+
}
|
|
1207
|
+
);
|
|
1208
|
+
};
|
|
1209
|
+
var Card = ({
|
|
1210
|
+
className,
|
|
1211
|
+
size = "default",
|
|
1212
|
+
...props
|
|
1213
|
+
}) => {
|
|
1214
|
+
return /* @__PURE__ */ jsx(
|
|
1215
|
+
"div",
|
|
1216
|
+
{
|
|
1217
|
+
"data-slot": "card",
|
|
1218
|
+
"data-size": size,
|
|
1219
|
+
className: merge(
|
|
1220
|
+
"group/card flex flex-col gap-4 overflow-hidden rounded-lg bg-card py-4 text-xs/relaxed text-card-foreground ring-1 ring-foreground/10 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 *:[img:first-child]:rounded-t-lg *:[img:last-child]:rounded-b-lg",
|
|
1221
|
+
className
|
|
1222
|
+
),
|
|
1223
|
+
...props
|
|
1224
|
+
}
|
|
1225
|
+
);
|
|
1226
|
+
};
|
|
1227
|
+
var Checkbox = ({
|
|
1228
|
+
className,
|
|
1229
|
+
...props
|
|
1230
|
+
}) => {
|
|
1231
|
+
return /* @__PURE__ */ jsx(
|
|
1232
|
+
Checkbox$1.Root,
|
|
1233
|
+
{
|
|
1234
|
+
"data-slot": "checkbox",
|
|
1235
|
+
className: merge(
|
|
1236
|
+
"bg-white peer relative flex size-4 shrink-0 items-center justify-center rounded-sm border border-input transition-shadow outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary cursor-pointer",
|
|
1237
|
+
className
|
|
1238
|
+
),
|
|
1239
|
+
...props,
|
|
1240
|
+
children: /* @__PURE__ */ jsx(
|
|
1241
|
+
Checkbox$1.Indicator,
|
|
1242
|
+
{
|
|
1243
|
+
"data-slot": "checkbox-indicator",
|
|
1244
|
+
className: "grid place-content-center text-current transition-none [&>svg]:size-3.5",
|
|
1245
|
+
children: /* @__PURE__ */ jsx(CheckIcon, {})
|
|
1246
|
+
}
|
|
1247
|
+
)
|
|
1248
|
+
}
|
|
1249
|
+
);
|
|
1250
|
+
};
|
|
1251
|
+
var Collapsible = ({
|
|
1252
|
+
...props
|
|
1253
|
+
}) => {
|
|
1254
|
+
return /* @__PURE__ */ jsx(
|
|
1255
|
+
Collapsible$1.Root,
|
|
1256
|
+
{
|
|
1257
|
+
"data-slot": "collapsible",
|
|
1258
|
+
...props
|
|
1259
|
+
}
|
|
1260
|
+
);
|
|
1261
|
+
};
|
|
1262
|
+
var Combobox = Combobox$1.Root;
|
|
1263
|
+
var Command = ({
|
|
1264
|
+
className,
|
|
1265
|
+
...props
|
|
1266
|
+
}) => {
|
|
1267
|
+
return /* @__PURE__ */ jsx(
|
|
1268
|
+
Command$1,
|
|
1269
|
+
{
|
|
1270
|
+
"data-slot": "command",
|
|
1271
|
+
className: merge(
|
|
1272
|
+
"flex size-full flex-col overflow-hidden rounded-xl bg-popover p-1 text-popover-foreground",
|
|
1273
|
+
className
|
|
1274
|
+
),
|
|
1275
|
+
...props
|
|
1276
|
+
}
|
|
1277
|
+
);
|
|
1278
|
+
};
|
|
1279
|
+
var ContextMenu = ({
|
|
1280
|
+
...props
|
|
1281
|
+
}) => {
|
|
1282
|
+
return /* @__PURE__ */ jsx(
|
|
1283
|
+
ContextMenu$1.Root,
|
|
1284
|
+
{
|
|
1285
|
+
"data-slot": "context-menu",
|
|
1286
|
+
...props
|
|
1287
|
+
}
|
|
1288
|
+
);
|
|
1289
|
+
};
|
|
1290
|
+
var HoverCard = ({
|
|
1291
|
+
...props
|
|
1292
|
+
}) => {
|
|
1293
|
+
return /* @__PURE__ */ jsx(
|
|
1294
|
+
HoverCard$1.Root,
|
|
1295
|
+
{
|
|
1296
|
+
"data-slot": "hover-card",
|
|
1297
|
+
...props
|
|
1298
|
+
}
|
|
1299
|
+
);
|
|
1300
|
+
};
|
|
1301
|
+
var Input = ({
|
|
1302
|
+
className,
|
|
1303
|
+
type,
|
|
1304
|
+
...props
|
|
1305
|
+
}) => {
|
|
1306
|
+
return /* @__PURE__ */ jsx(
|
|
1307
|
+
"input",
|
|
1308
|
+
{
|
|
1309
|
+
type,
|
|
1310
|
+
"data-slot": "input",
|
|
1311
|
+
className: merge(
|
|
1312
|
+
"h-8 w-full min-w-0 rounded-lg border border-input bg-white px-2 py-0.5 text-sm transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-xs/relaxed file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 md:text-xs/relaxed dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
|
|
1313
|
+
className
|
|
1314
|
+
),
|
|
1315
|
+
...props
|
|
1316
|
+
}
|
|
1317
|
+
);
|
|
1318
|
+
};
|
|
1319
|
+
var inputGroupAddonVariants = cva(
|
|
1320
|
+
"flex h-auto cursor-text items-center justify-center gap-1 py-2 text-xs/relaxed font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 **:data-[slot=kbd]:rounded-[calc(var(--radius-sm)-2px)] **:data-[slot=kbd]:bg-muted-foreground/10 **:data-[slot=kbd]:px-1 **:data-[slot=kbd]:text-[0.625rem] [&>svg:not([class*='size-'])]:size-3.5",
|
|
1321
|
+
{
|
|
1322
|
+
variants: {
|
|
1323
|
+
align: {
|
|
1324
|
+
"inline-start": "order-first pl-2 has-[>button]:ml-[-0.275rem] has-[>kbd]:ml-[-0.275rem]",
|
|
1325
|
+
"inline-end": "order-last pr-2 has-[>button]:mr-[-0.275rem] has-[>kbd]:mr-[-0.275rem]",
|
|
1326
|
+
"block-start": "order-first w-full justify-start px-2 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2",
|
|
1327
|
+
"block-end": "order-last w-full justify-start px-2 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2"
|
|
1328
|
+
}
|
|
1329
|
+
},
|
|
1330
|
+
defaultVariants: {
|
|
1331
|
+
align: "inline-start"
|
|
1332
|
+
}
|
|
1333
|
+
}
|
|
1334
|
+
);
|
|
1335
|
+
var inputGroupButtonVariants = cva(
|
|
1336
|
+
"flex items-center gap-2 rounded-md text-xs/relaxed shadow-none",
|
|
1337
|
+
{
|
|
1338
|
+
variants: {
|
|
1339
|
+
size: {
|
|
1340
|
+
xs: "h-5 gap-1 rounded-[calc(var(--radius-sm)-2px)] px-1 [&>svg:not([class*='size-'])]:size-3",
|
|
1341
|
+
sm: "gap-1",
|
|
1342
|
+
"icon-xs": "size-6 p-0 has-[>svg]:p-0",
|
|
1343
|
+
"icon-sm": "size-7 p-0 has-[>svg]:p-0"
|
|
1344
|
+
}
|
|
1345
|
+
},
|
|
1346
|
+
defaultVariants: {
|
|
1347
|
+
size: "xs"
|
|
1348
|
+
}
|
|
1349
|
+
}
|
|
1350
|
+
);
|
|
1351
|
+
var InputGroupAddon = ({
|
|
1352
|
+
className,
|
|
1353
|
+
align = "inline-start",
|
|
1354
|
+
...props
|
|
1355
|
+
}) => {
|
|
1356
|
+
return /* @__PURE__ */ jsx(
|
|
1357
|
+
"div",
|
|
1358
|
+
{
|
|
1359
|
+
"data-slot": "input-group-addon",
|
|
1360
|
+
"data-align": align,
|
|
1361
|
+
className: merge(inputGroupAddonVariants({ align }), className),
|
|
1362
|
+
...props
|
|
1363
|
+
}
|
|
1364
|
+
);
|
|
1365
|
+
};
|
|
1366
|
+
var InputGroupButton = ({
|
|
1367
|
+
className,
|
|
1368
|
+
type = "button",
|
|
1369
|
+
variant = "ghost",
|
|
1370
|
+
size = "xs",
|
|
1371
|
+
...props
|
|
1372
|
+
}) => {
|
|
1373
|
+
return /* @__PURE__ */ jsx(
|
|
1374
|
+
Button,
|
|
1375
|
+
{
|
|
1376
|
+
type,
|
|
1377
|
+
"data-size": size,
|
|
1378
|
+
variant,
|
|
1379
|
+
className: merge(inputGroupButtonVariants({ size }), className),
|
|
1380
|
+
...props
|
|
1381
|
+
}
|
|
1382
|
+
);
|
|
1383
|
+
};
|
|
1384
|
+
var InputGroupInput = ({
|
|
1385
|
+
className,
|
|
1386
|
+
...props
|
|
1387
|
+
}) => {
|
|
1388
|
+
return /* @__PURE__ */ jsx(
|
|
1389
|
+
Input,
|
|
1390
|
+
{
|
|
1391
|
+
"data-slot": "input-group-control",
|
|
1392
|
+
className: merge(
|
|
1393
|
+
"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent",
|
|
1394
|
+
className
|
|
1395
|
+
),
|
|
1396
|
+
...props
|
|
1397
|
+
}
|
|
1398
|
+
);
|
|
1399
|
+
};
|
|
1400
|
+
var InputGroupText = ({
|
|
1401
|
+
className,
|
|
1402
|
+
...props
|
|
1403
|
+
}) => {
|
|
1404
|
+
return /* @__PURE__ */ jsx(
|
|
1405
|
+
"span",
|
|
1406
|
+
{
|
|
1407
|
+
className: merge(
|
|
1408
|
+
"flex items-center gap-2 text-xs/relaxed text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
|
|
1409
|
+
className
|
|
1410
|
+
),
|
|
1411
|
+
...props
|
|
1412
|
+
}
|
|
1413
|
+
);
|
|
1414
|
+
};
|
|
1415
|
+
var Textarea = ({
|
|
1416
|
+
className,
|
|
1417
|
+
...props
|
|
1418
|
+
}) => {
|
|
1419
|
+
return /* @__PURE__ */ jsx(
|
|
1420
|
+
"textarea",
|
|
1421
|
+
{
|
|
1422
|
+
"data-slot": "textarea",
|
|
1423
|
+
className: merge(
|
|
1424
|
+
"flex field-sizing-content min-h-16 w-full resize-none rounded-md border border-input bg-input/20 px-2 py-2 text-sm transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 md:text-xs/relaxed dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
|
|
1425
|
+
className
|
|
1426
|
+
),
|
|
1427
|
+
...props
|
|
1428
|
+
}
|
|
1429
|
+
);
|
|
1430
|
+
};
|
|
1431
|
+
var InputGroupTextarea = ({
|
|
1432
|
+
className,
|
|
1433
|
+
...props
|
|
1434
|
+
}) => {
|
|
1435
|
+
return /* @__PURE__ */ jsx(
|
|
1436
|
+
Textarea,
|
|
1437
|
+
{
|
|
1438
|
+
"data-slot": "input-group-control",
|
|
1439
|
+
className: merge(
|
|
1440
|
+
"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent",
|
|
1441
|
+
className
|
|
1442
|
+
),
|
|
1443
|
+
...props
|
|
1444
|
+
}
|
|
1445
|
+
);
|
|
1446
|
+
};
|
|
1447
|
+
var InputGroup = ({
|
|
1448
|
+
className,
|
|
1449
|
+
...props
|
|
1450
|
+
}) => {
|
|
1451
|
+
return /* @__PURE__ */ jsx(
|
|
1452
|
+
"div",
|
|
1453
|
+
{
|
|
1454
|
+
"data-slot": "input-group",
|
|
1455
|
+
className: merge(
|
|
1456
|
+
"group/input-group relative flex h-7 w-full min-w-0 items-center rounded-md border border-input bg-input/20 transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-data-[align=block-end]:rounded-md has-data-[align=block-start]:rounded-md has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-2 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/30 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-2 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[textarea]:rounded-md has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5",
|
|
1457
|
+
className
|
|
1458
|
+
),
|
|
1459
|
+
...props
|
|
1460
|
+
}
|
|
1461
|
+
);
|
|
1462
|
+
};
|
|
1463
|
+
var InputOTP = ({
|
|
1464
|
+
className,
|
|
1465
|
+
containerClassName,
|
|
1466
|
+
...props
|
|
1467
|
+
}) => {
|
|
1468
|
+
return /* @__PURE__ */ jsx(
|
|
1469
|
+
OTPInput,
|
|
1470
|
+
{
|
|
1471
|
+
"data-slot": "input-otp",
|
|
1472
|
+
containerClassName: merge(
|
|
1473
|
+
"cn-input-otp flex items-center has-disabled:opacity-50",
|
|
1474
|
+
containerClassName
|
|
1475
|
+
),
|
|
1476
|
+
spellCheck: false,
|
|
1477
|
+
className: merge("disabled:cursor-not-allowed", className),
|
|
1478
|
+
...props
|
|
1479
|
+
}
|
|
1480
|
+
);
|
|
1481
|
+
};
|
|
1482
|
+
var itemVariants = cva(
|
|
1483
|
+
"group/item flex w-full flex-wrap items-center rounded-md border text-xs/relaxed transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted",
|
|
1484
|
+
{
|
|
1485
|
+
variants: {
|
|
1486
|
+
variant: {
|
|
1487
|
+
default: "border-transparent",
|
|
1488
|
+
outline: "border-border",
|
|
1489
|
+
muted: "border-gray-200/50 bg-muted/50"
|
|
1490
|
+
},
|
|
1491
|
+
size: {
|
|
1492
|
+
default: "gap-2.5 px-3 py-2.5",
|
|
1493
|
+
sm: "gap-2.5 px-3 py-2.5",
|
|
1494
|
+
xs: "gap-2.5 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0"
|
|
1495
|
+
}
|
|
1496
|
+
},
|
|
1497
|
+
defaultVariants: {
|
|
1498
|
+
variant: "default",
|
|
1499
|
+
size: "default"
|
|
1500
|
+
}
|
|
1501
|
+
}
|
|
1502
|
+
);
|
|
1503
|
+
cva(
|
|
1504
|
+
"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-center [&_svg]:pointer-events-none",
|
|
1505
|
+
{
|
|
1506
|
+
variants: {
|
|
1507
|
+
variant: {
|
|
1508
|
+
default: "bg-transparent",
|
|
1509
|
+
icon: "[&_svg:not([class*='size-'])]:size-4",
|
|
1510
|
+
image: "size-8 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover"
|
|
1511
|
+
}
|
|
1512
|
+
},
|
|
1513
|
+
defaultVariants: {
|
|
1514
|
+
variant: "default"
|
|
1515
|
+
}
|
|
1516
|
+
}
|
|
1517
|
+
);
|
|
1518
|
+
var Item = ({
|
|
1519
|
+
className,
|
|
1520
|
+
variant = "default",
|
|
1521
|
+
size = "default",
|
|
1522
|
+
asChild = false,
|
|
1523
|
+
...props
|
|
1524
|
+
}) => {
|
|
1525
|
+
const Comp = asChild ? Slot.Root : "div";
|
|
1526
|
+
return /* @__PURE__ */ jsx(
|
|
1527
|
+
Comp,
|
|
1528
|
+
{
|
|
1529
|
+
"data-slot": "item",
|
|
1530
|
+
"data-variant": variant,
|
|
1531
|
+
"data-size": size,
|
|
1532
|
+
className: merge(itemVariants({ variant, size, className })),
|
|
1533
|
+
...props
|
|
1534
|
+
}
|
|
1535
|
+
);
|
|
1536
|
+
};
|
|
1537
|
+
var Label = ({
|
|
1538
|
+
className,
|
|
1539
|
+
...props
|
|
1540
|
+
}) => {
|
|
1541
|
+
return /* @__PURE__ */ jsx(
|
|
1542
|
+
Label$1.Root,
|
|
1543
|
+
{
|
|
1544
|
+
"data-slot": "label",
|
|
1545
|
+
className: merge(
|
|
1546
|
+
"flex items-center gap-2 text-sm/relaxed leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
|
|
1547
|
+
className
|
|
1548
|
+
),
|
|
1549
|
+
...props
|
|
1550
|
+
}
|
|
1551
|
+
);
|
|
1552
|
+
};
|
|
1553
|
+
var Menubar = ({
|
|
1554
|
+
className,
|
|
1555
|
+
...props
|
|
1556
|
+
}) => {
|
|
1557
|
+
return /* @__PURE__ */ jsx(
|
|
1558
|
+
Menubar$1.Root,
|
|
1559
|
+
{
|
|
1560
|
+
"data-slot": "menubar",
|
|
1561
|
+
className: merge("flex h-9 items-center rounded-lg border p-1", className),
|
|
1562
|
+
...props
|
|
1563
|
+
}
|
|
1564
|
+
);
|
|
1565
|
+
};
|
|
1566
|
+
var Pagination = ({
|
|
1567
|
+
className,
|
|
1568
|
+
...props
|
|
1569
|
+
}) => {
|
|
1570
|
+
return /* @__PURE__ */ jsx(
|
|
1571
|
+
"nav",
|
|
1572
|
+
{
|
|
1573
|
+
"aria-label": "pagination",
|
|
1574
|
+
"data-slot": "pagination",
|
|
1575
|
+
className: merge("mx-auto flex w-full justify-center", className),
|
|
1576
|
+
...props
|
|
1577
|
+
}
|
|
1578
|
+
);
|
|
1579
|
+
};
|
|
1580
|
+
var Popover = ({
|
|
1581
|
+
...props
|
|
1582
|
+
}) => {
|
|
1583
|
+
return /* @__PURE__ */ jsx(
|
|
1584
|
+
Popover$1.Root,
|
|
1585
|
+
{
|
|
1586
|
+
"data-slot": "popover",
|
|
1587
|
+
...props
|
|
1588
|
+
}
|
|
1589
|
+
);
|
|
1590
|
+
};
|
|
1591
|
+
var Progress = ({ value, className }) => {
|
|
1592
|
+
const isIndeterminate = value === null;
|
|
1593
|
+
return /* @__PURE__ */ jsx("div", { className: merge("relative h-1 w-full overflow-hidden rounded-full bg-muted", className), children: /* @__PURE__ */ jsx(
|
|
1594
|
+
"div",
|
|
1595
|
+
{
|
|
1596
|
+
className: merge(
|
|
1597
|
+
"h-full rounded-full bg-[oklch(0.65_0.22_50)]",
|
|
1598
|
+
isIndeterminate ? "w-2/3 animate-pulse" : "motion-safe:transition-[width] duration-150 ease-out"
|
|
1599
|
+
),
|
|
1600
|
+
style: isIndeterminate ? void 0 : { width: `${Math.min(100, Math.max(0, value))}%` }
|
|
1601
|
+
}
|
|
1602
|
+
) });
|
|
1603
|
+
};
|
|
1604
|
+
var RadioGroup = ({
|
|
1605
|
+
className,
|
|
1606
|
+
...props
|
|
1607
|
+
}) => {
|
|
1608
|
+
return /* @__PURE__ */ jsx(
|
|
1609
|
+
RadioGroup$1.Root,
|
|
1610
|
+
{
|
|
1611
|
+
"data-slot": "radio-group",
|
|
1612
|
+
className: merge("grid w-full gap-3", className),
|
|
1613
|
+
...props
|
|
1614
|
+
}
|
|
1615
|
+
);
|
|
1616
|
+
};
|
|
1617
|
+
var SectionCardHeader = ({
|
|
1618
|
+
title,
|
|
1619
|
+
icon: Icon,
|
|
1620
|
+
action,
|
|
1621
|
+
titleElement,
|
|
1622
|
+
isCollapsable,
|
|
1623
|
+
open,
|
|
1624
|
+
onToggle,
|
|
1625
|
+
headerClassName
|
|
1626
|
+
}) => /* @__PURE__ */ jsxs(
|
|
1627
|
+
"div",
|
|
1628
|
+
{
|
|
1629
|
+
className: merge(
|
|
1630
|
+
"w-full px-4 py-3 border-b border-gray-200 flex items-center gap-4",
|
|
1631
|
+
headerClassName
|
|
1632
|
+
),
|
|
1633
|
+
children: [
|
|
1634
|
+
/* @__PURE__ */ jsxs(
|
|
1635
|
+
"button",
|
|
1636
|
+
{
|
|
1637
|
+
type: "button",
|
|
1638
|
+
onClick: onToggle,
|
|
1639
|
+
disabled: !isCollapsable,
|
|
1640
|
+
className: merge(
|
|
1641
|
+
"flex flex-1 items-center gap-2 min-w-0 text-left",
|
|
1642
|
+
isCollapsable ? "cursor-pointer select-none" : "cursor-default"
|
|
1643
|
+
),
|
|
1644
|
+
children: [
|
|
1645
|
+
Icon && /* @__PURE__ */ jsx(Icon, { className: "size-4 text-orange-500 shrink-0" }),
|
|
1646
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-gray-700 truncate", children: title }),
|
|
1647
|
+
titleElement && titleElement
|
|
1648
|
+
]
|
|
1649
|
+
}
|
|
1650
|
+
),
|
|
1651
|
+
action && /* @__PURE__ */ jsx("div", { className: "flex items-center shrink-0", children: action }),
|
|
1652
|
+
isCollapsable && /* @__PURE__ */ jsx(
|
|
1653
|
+
motion.button,
|
|
1654
|
+
{
|
|
1655
|
+
type: "button",
|
|
1656
|
+
onClick: onToggle,
|
|
1657
|
+
"aria-label": open ? "Contraer secci\xF3n" : "Expandir secci\xF3n",
|
|
1658
|
+
animate: { rotate: open ? 180 : 0 },
|
|
1659
|
+
transition: { duration: 0.2 },
|
|
1660
|
+
className: "shrink-0 cursor-pointer",
|
|
1661
|
+
children: /* @__PURE__ */ jsx(ChevronDown, { className: "size-4 text-gray-500" })
|
|
1662
|
+
}
|
|
1663
|
+
)
|
|
1664
|
+
]
|
|
1665
|
+
}
|
|
1666
|
+
);
|
|
1667
|
+
var SectionCard = ({
|
|
1668
|
+
title,
|
|
1669
|
+
icon: Icon,
|
|
1670
|
+
action,
|
|
1671
|
+
titleElement,
|
|
1672
|
+
children,
|
|
1673
|
+
className,
|
|
1674
|
+
contentClassName,
|
|
1675
|
+
headerClassName,
|
|
1676
|
+
mode = "card",
|
|
1677
|
+
defaultOpen = true,
|
|
1678
|
+
open: controlledOpen,
|
|
1679
|
+
onOpenChange
|
|
1680
|
+
}) => {
|
|
1681
|
+
const isCollapsable = mode === "collapsable";
|
|
1682
|
+
const [internalOpen, setInternalOpen] = useState(defaultOpen);
|
|
1683
|
+
const isControlled = controlledOpen !== void 0;
|
|
1684
|
+
const isOpen = isControlled ? controlledOpen : internalOpen;
|
|
1685
|
+
const handleToggle = () => {
|
|
1686
|
+
if (!isCollapsable) return;
|
|
1687
|
+
const next = !isOpen;
|
|
1688
|
+
if (isControlled) {
|
|
1689
|
+
onOpenChange?.(next);
|
|
1690
|
+
} else {
|
|
1691
|
+
setInternalOpen(next);
|
|
1692
|
+
}
|
|
1693
|
+
};
|
|
1694
|
+
return /* @__PURE__ */ jsxs(Card, { className: merge("pb-4 pt-0 gap-0 overflow-visible", className, isCollapsable && "pb-0"), children: [
|
|
1695
|
+
/* @__PURE__ */ jsx(
|
|
1696
|
+
SectionCardHeader,
|
|
1697
|
+
{
|
|
1698
|
+
headerClassName,
|
|
1699
|
+
title,
|
|
1700
|
+
icon: Icon,
|
|
1701
|
+
action,
|
|
1702
|
+
isCollapsable,
|
|
1703
|
+
titleElement,
|
|
1704
|
+
open: isOpen,
|
|
1705
|
+
onToggle: handleToggle
|
|
1706
|
+
}
|
|
1707
|
+
),
|
|
1708
|
+
!isCollapsable && /* @__PURE__ */ jsx("div", { className: merge("p-4 flex flex-col gap-4", contentClassName), children }),
|
|
1709
|
+
isCollapsable && /* @__PURE__ */ jsx(AnimatePresence, { initial: false, children: isOpen && /* @__PURE__ */ jsx(
|
|
1710
|
+
motion.div,
|
|
1711
|
+
{
|
|
1712
|
+
initial: {
|
|
1713
|
+
height: 0,
|
|
1714
|
+
opacity: 0
|
|
1715
|
+
},
|
|
1716
|
+
animate: {
|
|
1717
|
+
height: "auto",
|
|
1718
|
+
opacity: 1
|
|
1719
|
+
},
|
|
1720
|
+
exit: {
|
|
1721
|
+
height: 0,
|
|
1722
|
+
opacity: 0
|
|
1723
|
+
},
|
|
1724
|
+
transition: {
|
|
1725
|
+
duration: 0.25,
|
|
1726
|
+
ease: "easeInOut"
|
|
1727
|
+
},
|
|
1728
|
+
className: "overflow-visible",
|
|
1729
|
+
children: /* @__PURE__ */ jsx("div", { className: merge("p-4 flex flex-col gap-4", contentClassName), children })
|
|
1730
|
+
}
|
|
1731
|
+
) })
|
|
1732
|
+
] });
|
|
1733
|
+
};
|
|
1734
|
+
var SelectScrollDownButton = ({
|
|
1735
|
+
className,
|
|
1736
|
+
...props
|
|
1737
|
+
}) => {
|
|
1738
|
+
return /* @__PURE__ */ jsx(
|
|
1739
|
+
Select$1.ScrollDownButton,
|
|
1740
|
+
{
|
|
1741
|
+
"data-slot": "select-scroll-down-button",
|
|
1742
|
+
className: merge(
|
|
1743
|
+
"z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-3.5",
|
|
1744
|
+
className
|
|
1745
|
+
),
|
|
1746
|
+
...props,
|
|
1747
|
+
children: /* @__PURE__ */ jsx(ChevronDownIcon, {})
|
|
1748
|
+
}
|
|
1749
|
+
);
|
|
1750
|
+
};
|
|
1751
|
+
var SelectScrollUpButton = ({
|
|
1752
|
+
className,
|
|
1753
|
+
...props
|
|
1754
|
+
}) => {
|
|
1755
|
+
return /* @__PURE__ */ jsx(
|
|
1756
|
+
Select$1.ScrollUpButton,
|
|
1757
|
+
{
|
|
1758
|
+
"data-slot": "select-scroll-up-button",
|
|
1759
|
+
className: merge(
|
|
1760
|
+
"z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-3.5",
|
|
1761
|
+
className
|
|
1762
|
+
),
|
|
1763
|
+
...props,
|
|
1764
|
+
children: /* @__PURE__ */ jsx(ChevronUpIcon, {})
|
|
1765
|
+
}
|
|
1766
|
+
);
|
|
1767
|
+
};
|
|
1768
|
+
var SelectContent = ({
|
|
1769
|
+
className,
|
|
1770
|
+
children,
|
|
1771
|
+
position = "item-aligned",
|
|
1772
|
+
align = "center",
|
|
1773
|
+
...props
|
|
1774
|
+
}) => {
|
|
1775
|
+
return /* @__PURE__ */ jsx(Select$1.Portal, { children: /* @__PURE__ */ jsxs(
|
|
1776
|
+
Select$1.Content,
|
|
1777
|
+
{
|
|
1778
|
+
"data-slot": "select-content",
|
|
1779
|
+
"data-align-trigger": position === "item-aligned",
|
|
1780
|
+
className: merge(
|
|
1781
|
+
"relative z-50 max-h-(--radix-select-content-available-height) min-w-32 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
1782
|
+
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",
|
|
1783
|
+
className
|
|
1784
|
+
),
|
|
1785
|
+
position,
|
|
1786
|
+
align,
|
|
1787
|
+
...props,
|
|
1788
|
+
children: [
|
|
1789
|
+
/* @__PURE__ */ jsx(SelectScrollUpButton, {}),
|
|
1790
|
+
/* @__PURE__ */ jsx(
|
|
1791
|
+
Select$1.Viewport,
|
|
1792
|
+
{
|
|
1793
|
+
"data-position": position,
|
|
1794
|
+
className: merge(
|
|
1795
|
+
"data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)"
|
|
1796
|
+
),
|
|
1797
|
+
children
|
|
1798
|
+
}
|
|
1799
|
+
),
|
|
1800
|
+
/* @__PURE__ */ jsx(SelectScrollDownButton, {})
|
|
1801
|
+
]
|
|
1802
|
+
}
|
|
1803
|
+
) });
|
|
1804
|
+
};
|
|
1805
|
+
var SelectGroup = ({
|
|
1806
|
+
className,
|
|
1807
|
+
...props
|
|
1808
|
+
}) => {
|
|
1809
|
+
return /* @__PURE__ */ jsx(
|
|
1810
|
+
Select$1.Group,
|
|
1811
|
+
{
|
|
1812
|
+
"data-slot": "select-group",
|
|
1813
|
+
className: merge("scroll-my-1 p-1", className),
|
|
1814
|
+
...props
|
|
1815
|
+
}
|
|
1816
|
+
);
|
|
1817
|
+
};
|
|
1818
|
+
var SelectItem = ({
|
|
1819
|
+
className,
|
|
1820
|
+
children,
|
|
1821
|
+
...props
|
|
1822
|
+
}) => {
|
|
1823
|
+
return /* @__PURE__ */ jsxs(
|
|
1824
|
+
Select$1.Item,
|
|
1825
|
+
{
|
|
1826
|
+
"data-slot": "select-item",
|
|
1827
|
+
className: merge(
|
|
1828
|
+
"relative flex min-h-7 w-full cursor-default items-center gap-2 rounded-md px-2 py-1 text-xs/relaxed outline-hidden select-none border border-transparent focus:bg-orange-50 focus:border focus:border-orange-200/50 focus:text-orange-500! focus:cursor-pointer not-data-[variant=destructive]:focus:**:text-orange-500! data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
|
|
1829
|
+
className
|
|
1830
|
+
),
|
|
1831
|
+
...props,
|
|
1832
|
+
children: [
|
|
1833
|
+
/* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute right-2 flex items-center justify-center", children: /* @__PURE__ */ jsx(Select$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "pointer-events-none" }) }) }),
|
|
1834
|
+
/* @__PURE__ */ jsx(Select$1.ItemText, { children })
|
|
1835
|
+
]
|
|
1836
|
+
}
|
|
1837
|
+
);
|
|
1838
|
+
};
|
|
1839
|
+
var SelectLabel = ({
|
|
1840
|
+
className,
|
|
1841
|
+
...props
|
|
1842
|
+
}) => {
|
|
1843
|
+
return /* @__PURE__ */ jsx(
|
|
1844
|
+
Select$1.Label,
|
|
1845
|
+
{
|
|
1846
|
+
"data-slot": "select-label",
|
|
1847
|
+
className: merge("px-2 py-1.5 text-xs text-muted-foreground", className),
|
|
1848
|
+
...props
|
|
1849
|
+
}
|
|
1850
|
+
);
|
|
1851
|
+
};
|
|
1852
|
+
var SelectSeparator = ({
|
|
1853
|
+
className,
|
|
1854
|
+
...props
|
|
1855
|
+
}) => {
|
|
1856
|
+
return /* @__PURE__ */ jsx(
|
|
1857
|
+
Select$1.Separator,
|
|
1858
|
+
{
|
|
1859
|
+
"data-slot": "select-separator",
|
|
1860
|
+
className: merge("pointer-events-none -mx-1 my-1 h-px bg-border/50", className),
|
|
1861
|
+
...props
|
|
1862
|
+
}
|
|
1863
|
+
);
|
|
1864
|
+
};
|
|
1865
|
+
var SelectTrigger = ({
|
|
1866
|
+
className,
|
|
1867
|
+
size = "default",
|
|
1868
|
+
children,
|
|
1869
|
+
...props
|
|
1870
|
+
}) => {
|
|
1871
|
+
return /* @__PURE__ */ jsxs(
|
|
1872
|
+
Select$1.Trigger,
|
|
1873
|
+
{
|
|
1874
|
+
"data-slot": "select-trigger",
|
|
1875
|
+
"data-size": size,
|
|
1876
|
+
className: merge(
|
|
1877
|
+
"flex w-fit items-center justify-between gap-1.5 rounded-md border border-input bg-input/20 px-2 py-1.5 text-xs/relaxed whitespace-nowrap transition-colors outline-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-7 data-[size=sm]:h-6 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5",
|
|
1878
|
+
className
|
|
1879
|
+
),
|
|
1880
|
+
...props,
|
|
1881
|
+
children: [
|
|
1882
|
+
children,
|
|
1883
|
+
/* @__PURE__ */ jsx(Select$1.Icon, { asChild: true, children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "pointer-events-none size-3.5 text-muted-foreground" }) })
|
|
1884
|
+
]
|
|
1885
|
+
}
|
|
1886
|
+
);
|
|
1887
|
+
};
|
|
1888
|
+
var SelectValue = (props) => {
|
|
1889
|
+
return /* @__PURE__ */ jsx(
|
|
1890
|
+
Select$1.Value,
|
|
1891
|
+
{
|
|
1892
|
+
"data-slot": "select-value",
|
|
1893
|
+
...props
|
|
1894
|
+
}
|
|
1895
|
+
);
|
|
1896
|
+
};
|
|
1897
|
+
var Select = (props) => {
|
|
1898
|
+
return /* @__PURE__ */ jsx(
|
|
1899
|
+
Select$1.Root,
|
|
1900
|
+
{
|
|
1901
|
+
"data-slot": "select",
|
|
1902
|
+
...props
|
|
1903
|
+
}
|
|
1904
|
+
);
|
|
1905
|
+
};
|
|
1906
|
+
var Sheet = (props) => {
|
|
1907
|
+
return /* @__PURE__ */ jsx(
|
|
1908
|
+
Dialog$1.Root,
|
|
1909
|
+
{
|
|
1910
|
+
"data-slot": "sheet",
|
|
1911
|
+
...props
|
|
1912
|
+
}
|
|
1913
|
+
);
|
|
1914
|
+
};
|
|
1915
|
+
var SheetOverlay = ({
|
|
1916
|
+
className,
|
|
1917
|
+
...props
|
|
1918
|
+
}) => {
|
|
1919
|
+
return /* @__PURE__ */ jsx(
|
|
1920
|
+
Dialog$1.Overlay,
|
|
1921
|
+
{
|
|
1922
|
+
"data-slot": "sheet-overlay",
|
|
1923
|
+
className: merge(
|
|
1924
|
+
"fixed inset-0 z-50 bg-black/20 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
|
|
1925
|
+
className
|
|
1926
|
+
),
|
|
1927
|
+
...props
|
|
1928
|
+
}
|
|
1929
|
+
);
|
|
1930
|
+
};
|
|
1931
|
+
var SheetPortal = (props) => {
|
|
1932
|
+
return /* @__PURE__ */ jsx(
|
|
1933
|
+
Dialog$1.Portal,
|
|
1934
|
+
{
|
|
1935
|
+
"data-slot": "sheet-portal",
|
|
1936
|
+
...props
|
|
1937
|
+
}
|
|
1938
|
+
);
|
|
1939
|
+
};
|
|
1940
|
+
var SheetContent = ({
|
|
1941
|
+
className,
|
|
1942
|
+
children,
|
|
1943
|
+
side = "right",
|
|
1944
|
+
showCloseButton = true,
|
|
1945
|
+
...props
|
|
1946
|
+
}) => {
|
|
1947
|
+
return /* @__PURE__ */ jsxs(SheetPortal, { children: [
|
|
1948
|
+
/* @__PURE__ */ jsx(SheetOverlay, {}),
|
|
1949
|
+
/* @__PURE__ */ jsxs(
|
|
1950
|
+
Dialog$1.Content,
|
|
1951
|
+
{
|
|
1952
|
+
"data-slot": "sheet-content",
|
|
1953
|
+
"data-side": side,
|
|
1954
|
+
className: merge(
|
|
1955
|
+
"fixed z-50 flex flex-col bg-background bg-clip-padding text-xs/relaxed 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 data-open:animate-in data-open:fade-in-0 data-[side=bottom]:data-open:slide-in-from-bottom-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:animate-out data-closed:fade-out-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=right]:data-closed:slide-out-to-right-10 data-[side=top]:data-closed:slide-out-to-top-10",
|
|
1956
|
+
className
|
|
1957
|
+
),
|
|
1958
|
+
...props,
|
|
1959
|
+
children: [
|
|
1960
|
+
children,
|
|
1961
|
+
showCloseButton && /* @__PURE__ */ jsx(
|
|
1962
|
+
Dialog$1.Close,
|
|
1963
|
+
{
|
|
1964
|
+
"data-slot": "sheet-close",
|
|
1965
|
+
asChild: true,
|
|
1966
|
+
children: /* @__PURE__ */ jsxs(
|
|
1967
|
+
Button,
|
|
1968
|
+
{
|
|
1969
|
+
variant: "ghost",
|
|
1970
|
+
className: "absolute top-4 right-4",
|
|
1971
|
+
size: "icon",
|
|
1972
|
+
children: [
|
|
1973
|
+
/* @__PURE__ */ jsx(XIcon, {}),
|
|
1974
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
|
|
1975
|
+
]
|
|
1976
|
+
}
|
|
1977
|
+
)
|
|
1978
|
+
}
|
|
1979
|
+
)
|
|
1980
|
+
]
|
|
1981
|
+
}
|
|
1982
|
+
)
|
|
1983
|
+
] });
|
|
1984
|
+
};
|
|
1985
|
+
var SheetDescription = ({
|
|
1986
|
+
className,
|
|
1987
|
+
...props
|
|
1988
|
+
}) => {
|
|
1989
|
+
return /* @__PURE__ */ jsx(
|
|
1990
|
+
Dialog$1.Description,
|
|
1991
|
+
{
|
|
1992
|
+
"data-slot": "sheet-description",
|
|
1993
|
+
className: merge("text-xs/relaxed text-muted-foreground", className),
|
|
1994
|
+
...props
|
|
1995
|
+
}
|
|
1996
|
+
);
|
|
1997
|
+
};
|
|
1998
|
+
var SheetHeader = ({
|
|
1999
|
+
className,
|
|
2000
|
+
...props
|
|
2001
|
+
}) => {
|
|
2002
|
+
return /* @__PURE__ */ jsx(
|
|
2003
|
+
"div",
|
|
2004
|
+
{
|
|
2005
|
+
"data-slot": "sheet-header",
|
|
2006
|
+
className: merge("flex flex-col gap-1.5 p-6", className),
|
|
2007
|
+
...props
|
|
2008
|
+
}
|
|
2009
|
+
);
|
|
2010
|
+
};
|
|
2011
|
+
var SheetTitle = ({
|
|
2012
|
+
className,
|
|
2013
|
+
...props
|
|
2014
|
+
}) => {
|
|
2015
|
+
return /* @__PURE__ */ jsx(
|
|
2016
|
+
Dialog$1.Title,
|
|
2017
|
+
{
|
|
2018
|
+
"data-slot": "sheet-title",
|
|
2019
|
+
className: merge("text-sm font-medium text-foreground", className),
|
|
2020
|
+
...props
|
|
2021
|
+
}
|
|
2022
|
+
);
|
|
2023
|
+
};
|
|
2024
|
+
var SidebarContext = createContext(null);
|
|
2025
|
+
|
|
2026
|
+
// src/ui/sidebar/useSidebar/index.tsx
|
|
2027
|
+
var useSidebar = () => {
|
|
2028
|
+
const context = useContext(SidebarContext);
|
|
2029
|
+
if (!context) {
|
|
2030
|
+
throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
2031
|
+
}
|
|
2032
|
+
return context;
|
|
2033
|
+
};
|
|
2034
|
+
var SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
2035
|
+
var Sidebar = ({
|
|
2036
|
+
side = "left",
|
|
2037
|
+
variant = "sidebar",
|
|
2038
|
+
collapsible = "offcanvas",
|
|
2039
|
+
className,
|
|
2040
|
+
children,
|
|
2041
|
+
dir,
|
|
2042
|
+
...props
|
|
2043
|
+
}) => {
|
|
2044
|
+
const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
|
|
2045
|
+
if (collapsible === "none") {
|
|
2046
|
+
return /* @__PURE__ */ jsx(
|
|
2047
|
+
"div",
|
|
2048
|
+
{
|
|
2049
|
+
"data-slot": "sidebar",
|
|
2050
|
+
className: merge(
|
|
2051
|
+
"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",
|
|
2052
|
+
className
|
|
2053
|
+
),
|
|
2054
|
+
...props,
|
|
2055
|
+
children
|
|
2056
|
+
}
|
|
2057
|
+
);
|
|
2058
|
+
}
|
|
2059
|
+
if (isMobile) {
|
|
2060
|
+
return /* @__PURE__ */ jsx(
|
|
2061
|
+
Sheet,
|
|
2062
|
+
{
|
|
2063
|
+
open: openMobile,
|
|
2064
|
+
onOpenChange: setOpenMobile,
|
|
2065
|
+
...props,
|
|
2066
|
+
children: /* @__PURE__ */ jsxs(
|
|
2067
|
+
SheetContent,
|
|
2068
|
+
{
|
|
2069
|
+
dir,
|
|
2070
|
+
"data-sidebar": "sidebar",
|
|
2071
|
+
"data-slot": "sidebar",
|
|
2072
|
+
"data-mobile": "true",
|
|
2073
|
+
className: "w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",
|
|
2074
|
+
style: {
|
|
2075
|
+
"--sidebar-width": SIDEBAR_WIDTH_MOBILE
|
|
2076
|
+
},
|
|
2077
|
+
side,
|
|
2078
|
+
children: [
|
|
2079
|
+
/* @__PURE__ */ jsxs(SheetHeader, { className: "sr-only", children: [
|
|
2080
|
+
/* @__PURE__ */ jsx(SheetTitle, { children: "Sidebar" }),
|
|
2081
|
+
/* @__PURE__ */ jsx(SheetDescription, { children: "Displays the mobile sidebar." })
|
|
2082
|
+
] }),
|
|
2083
|
+
/* @__PURE__ */ jsx("div", { className: "flex h-full w-full flex-col", children })
|
|
2084
|
+
]
|
|
2085
|
+
}
|
|
2086
|
+
)
|
|
2087
|
+
}
|
|
2088
|
+
);
|
|
2089
|
+
}
|
|
2090
|
+
return /* @__PURE__ */ jsxs(
|
|
2091
|
+
"div",
|
|
2092
|
+
{
|
|
2093
|
+
className: "group peer hidden text-sidebar-foreground md:block",
|
|
2094
|
+
"data-state": state,
|
|
2095
|
+
"data-collapsible": state === "collapsed" ? collapsible : "",
|
|
2096
|
+
"data-variant": variant,
|
|
2097
|
+
"data-side": side,
|
|
2098
|
+
"data-slot": "sidebar",
|
|
2099
|
+
children: [
|
|
2100
|
+
/* @__PURE__ */ jsx(
|
|
2101
|
+
"div",
|
|
2102
|
+
{
|
|
2103
|
+
"data-slot": "sidebar-gap",
|
|
2104
|
+
className: merge(
|
|
2105
|
+
"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear",
|
|
2106
|
+
"group-data-[collapsible=offcanvas]:w-0",
|
|
2107
|
+
"group-data-[side=right]:rotate-180",
|
|
2108
|
+
variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)"
|
|
2109
|
+
)
|
|
2110
|
+
}
|
|
2111
|
+
),
|
|
2112
|
+
/* @__PURE__ */ jsx(
|
|
2113
|
+
"div",
|
|
2114
|
+
{
|
|
2115
|
+
"data-slot": "sidebar-container",
|
|
2116
|
+
"data-side": side,
|
|
2117
|
+
className: merge(
|
|
2118
|
+
"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",
|
|
2119
|
+
// Adjust the padding for floating and inset variants.
|
|
2120
|
+
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",
|
|
2121
|
+
className
|
|
2122
|
+
),
|
|
2123
|
+
...props,
|
|
2124
|
+
children: /* @__PURE__ */ jsx(
|
|
2125
|
+
"div",
|
|
2126
|
+
{
|
|
2127
|
+
"data-sidebar": "sidebar",
|
|
2128
|
+
"data-slot": "sidebar-inner",
|
|
2129
|
+
className: "flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border",
|
|
2130
|
+
children
|
|
2131
|
+
}
|
|
2132
|
+
)
|
|
2133
|
+
}
|
|
2134
|
+
)
|
|
2135
|
+
]
|
|
2136
|
+
}
|
|
2137
|
+
);
|
|
2138
|
+
};
|
|
2139
|
+
var Skeleton = ({
|
|
2140
|
+
className,
|
|
2141
|
+
...props
|
|
2142
|
+
}) => {
|
|
2143
|
+
return /* @__PURE__ */ jsx(
|
|
2144
|
+
"div",
|
|
2145
|
+
{
|
|
2146
|
+
"data-slot": "skeleton",
|
|
2147
|
+
className: merge("animate-pulse rounded-md bg-gray-200/50", className),
|
|
2148
|
+
...props
|
|
2149
|
+
}
|
|
2150
|
+
);
|
|
2151
|
+
};
|
|
2152
|
+
var Toaster = ({ ...props }) => {
|
|
2153
|
+
const { theme = "system" } = useTheme();
|
|
2154
|
+
return /* @__PURE__ */ jsx(
|
|
2155
|
+
Toaster$1,
|
|
2156
|
+
{
|
|
2157
|
+
theme,
|
|
2158
|
+
className: "toaster group",
|
|
2159
|
+
icons: {
|
|
2160
|
+
success: /* @__PURE__ */ jsx(CircleCheckIcon, { className: "size-4" }),
|
|
2161
|
+
info: /* @__PURE__ */ jsx(InfoIcon, { className: "size-4" }),
|
|
2162
|
+
warning: /* @__PURE__ */ jsx(TriangleAlertIcon, { className: "size-4" }),
|
|
2163
|
+
error: /* @__PURE__ */ jsx(OctagonXIcon, { className: "size-4" }),
|
|
2164
|
+
loading: /* @__PURE__ */ jsx(Loader2Icon, { className: "size-4 animate-spin" })
|
|
2165
|
+
},
|
|
2166
|
+
style: {
|
|
2167
|
+
"--normal-bg": "var(--popover)",
|
|
2168
|
+
"--normal-text": "var(--popover-foreground)",
|
|
2169
|
+
"--normal-border": "var(--border)",
|
|
2170
|
+
"--border-radius": "var(--radius)"
|
|
2171
|
+
},
|
|
2172
|
+
toastOptions: {
|
|
2173
|
+
classNames: {
|
|
2174
|
+
toast: "cn-toast"
|
|
2175
|
+
}
|
|
2176
|
+
},
|
|
2177
|
+
...props
|
|
2178
|
+
}
|
|
2179
|
+
);
|
|
2180
|
+
};
|
|
2181
|
+
var Switch = ({
|
|
2182
|
+
className,
|
|
2183
|
+
size = "default",
|
|
2184
|
+
...props
|
|
2185
|
+
}) => {
|
|
2186
|
+
return /* @__PURE__ */ jsx(
|
|
2187
|
+
Switch$1.Root,
|
|
2188
|
+
{
|
|
2189
|
+
"data-slot": "switch",
|
|
2190
|
+
"data-size": size,
|
|
2191
|
+
className: merge(
|
|
2192
|
+
"cursor-pointer peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 data-[size=default]:h-[16.6px] data-[size=default]:w-7 data-[size=sm]:h-3.5 data-[size=sm]:w-6 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50",
|
|
2193
|
+
className
|
|
2194
|
+
),
|
|
2195
|
+
...props,
|
|
2196
|
+
children: /* @__PURE__ */ jsx(
|
|
2197
|
+
Switch$1.Thumb,
|
|
2198
|
+
{
|
|
2199
|
+
"data-slot": "switch-thumb",
|
|
2200
|
+
className: "pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-3.5 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground"
|
|
2201
|
+
}
|
|
2202
|
+
)
|
|
2203
|
+
}
|
|
2204
|
+
);
|
|
2205
|
+
};
|
|
2206
|
+
var Table = ({
|
|
2207
|
+
className,
|
|
2208
|
+
...props
|
|
2209
|
+
}) => {
|
|
2210
|
+
return /* @__PURE__ */ jsx(
|
|
2211
|
+
"div",
|
|
2212
|
+
{
|
|
2213
|
+
"data-slot": "table-container",
|
|
2214
|
+
className: "relative w-full overflow-x-auto",
|
|
2215
|
+
children: /* @__PURE__ */ jsx(
|
|
2216
|
+
"table",
|
|
2217
|
+
{
|
|
2218
|
+
"data-slot": "table",
|
|
2219
|
+
className: merge("w-full caption-bottom text-xs", className),
|
|
2220
|
+
...props
|
|
2221
|
+
}
|
|
2222
|
+
)
|
|
2223
|
+
}
|
|
2224
|
+
);
|
|
2225
|
+
};
|
|
2226
|
+
var Tabs = ({
|
|
2227
|
+
className,
|
|
2228
|
+
orientation = "horizontal",
|
|
2229
|
+
...props
|
|
2230
|
+
}) => {
|
|
2231
|
+
return /* @__PURE__ */ jsx(
|
|
2232
|
+
Tabs$1.Root,
|
|
2233
|
+
{
|
|
2234
|
+
"data-slot": "tabs",
|
|
2235
|
+
"data-orientation": orientation,
|
|
2236
|
+
className: merge("group/tabs flex gap-3 data-horizontal:flex-col", className),
|
|
2237
|
+
...props
|
|
2238
|
+
}
|
|
2239
|
+
);
|
|
2240
|
+
};
|
|
2241
|
+
var toggleVariants = cva(
|
|
2242
|
+
"group/toggle inline-flex items-center justify-center gap-1 rounded-md text-xs font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5",
|
|
2243
|
+
{
|
|
2244
|
+
variants: {
|
|
2245
|
+
variant: {
|
|
2246
|
+
default: "bg-transparent",
|
|
2247
|
+
outline: "border border-input bg-transparent hover:bg-muted"
|
|
2248
|
+
},
|
|
2249
|
+
size: {
|
|
2250
|
+
default: "h-7 min-w-7 px-2",
|
|
2251
|
+
sm: "h-6 min-w-6 rounded-[min(var(--radius-md),8px)] px-1.5 text-[0.625rem] [&_svg:not([class*='size-'])]:size-3",
|
|
2252
|
+
lg: "h-8 min-w-8 px-2"
|
|
2253
|
+
}
|
|
2254
|
+
},
|
|
2255
|
+
defaultVariants: {
|
|
2256
|
+
variant: "default",
|
|
2257
|
+
size: "default"
|
|
2258
|
+
}
|
|
2259
|
+
}
|
|
2260
|
+
);
|
|
2261
|
+
var Toggle = ({
|
|
2262
|
+
className,
|
|
2263
|
+
variant = "default",
|
|
2264
|
+
size = "default",
|
|
2265
|
+
...props
|
|
2266
|
+
}) => {
|
|
2267
|
+
return /* @__PURE__ */ jsx(
|
|
2268
|
+
Toggle$1.Root,
|
|
2269
|
+
{
|
|
2270
|
+
"data-slot": "toggle",
|
|
2271
|
+
className: merge(toggleVariants({ variant, size, className })),
|
|
2272
|
+
...props
|
|
2273
|
+
}
|
|
2274
|
+
);
|
|
2275
|
+
};
|
|
2276
|
+
var ToggleGroupContext = createContext({
|
|
2277
|
+
size: "default",
|
|
2278
|
+
variant: "default",
|
|
2279
|
+
spacing: 0,
|
|
2280
|
+
orientation: "horizontal"
|
|
2281
|
+
});
|
|
2282
|
+
var ToggleGroup = ({
|
|
2283
|
+
className,
|
|
2284
|
+
variant,
|
|
2285
|
+
size,
|
|
2286
|
+
spacing = 0,
|
|
2287
|
+
orientation = "horizontal",
|
|
2288
|
+
children,
|
|
2289
|
+
...props
|
|
2290
|
+
}) => {
|
|
2291
|
+
return /* @__PURE__ */ jsx(
|
|
2292
|
+
ToggleGroup$1.Root,
|
|
2293
|
+
{
|
|
2294
|
+
"data-slot": "toggle-group",
|
|
2295
|
+
"data-variant": variant,
|
|
2296
|
+
"data-size": size,
|
|
2297
|
+
"data-spacing": spacing,
|
|
2298
|
+
"data-orientation": orientation,
|
|
2299
|
+
style: { "--gap": spacing },
|
|
2300
|
+
className: merge(
|
|
2301
|
+
"group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-md data-[size=sm]:rounded-[min(var(--radius-md),8px)] data-vertical:flex-col data-vertical:items-stretch",
|
|
2302
|
+
className
|
|
2303
|
+
),
|
|
2304
|
+
...props,
|
|
2305
|
+
children: /* @__PURE__ */ jsx(ToggleGroupContext.Provider, { value: { variant, size, spacing, orientation }, children })
|
|
2306
|
+
}
|
|
2307
|
+
);
|
|
2308
|
+
};
|
|
2309
|
+
|
|
2310
|
+
export { Accordion, ActionsMenu, AlertDialog, Avatar, Badge, Breadcrumb, Button, ButtonGroup, Calendar, Card, Checkbox, Collapsible, Combobox, Command, ConfirmDialog, ContextMenu, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, Glow, HoverCard, Image, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, Item, Label, Menubar, Modal, Pagination, Popover, Progress, RadioGroup, SectionCard, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, Sidebar, Skeleton, Spinner, Steps, Switch, Table, Tabs, Textarea, Toaster, Toggle, ToggleGroup, Tooltip, TruncatedText, WaveLayer };
|