@privateers/ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js ADDED
@@ -0,0 +1,1082 @@
1
+ import { cva } from 'class-variance-authority';
2
+ import { Slot, Label as Label$1, Separator as Separator$1, Select as Select$1, AlertDialog as AlertDialog$1, DropdownMenu as DropdownMenu$1 } from 'radix-ui';
3
+ import { clsx } from 'clsx';
4
+ import { twMerge } from 'tailwind-merge';
5
+ import { jsx, jsxs } from 'react/jsx-runtime';
6
+ import { ChevronDownIcon, CheckIcon, ChevronUpIcon, ChevronRightIcon } from 'lucide-react';
7
+ import { useMemo } from 'react';
8
+
9
+ // src/components/primitives/button.tsx
10
+ function cn(...inputs) {
11
+ return twMerge(clsx(inputs));
12
+ }
13
+ var buttonVariants = cva(
14
+ "focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-md border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none",
15
+ {
16
+ variants: {
17
+ variant: {
18
+ default: "bg-primary text-primary-foreground hover:bg-primary/80",
19
+ outline: "border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground shadow-xs",
20
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
21
+ ghost: "hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground",
22
+ destructive: "bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30",
23
+ link: "text-primary underline-offset-4 hover:underline"
24
+ },
25
+ size: {
26
+ default: "h-9 gap-1.5 px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
27
+ xs: "h-6 gap-1 rounded-[min(var(--radius-md),8px)] px-2 text-xs in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
28
+ sm: "h-8 gap-1 rounded-[min(var(--radius-md),10px)] px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5",
29
+ lg: "h-10 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",
30
+ icon: "size-9",
31
+ "icon-xs": "size-6 rounded-[min(var(--radius-md),8px)] in-data-[slot=button-group]:rounded-md [&_svg:not([class*='size-'])]:size-3",
32
+ "icon-sm": "size-8 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-md",
33
+ "icon-lg": "size-10"
34
+ }
35
+ },
36
+ defaultVariants: {
37
+ variant: "default",
38
+ size: "default"
39
+ }
40
+ }
41
+ );
42
+ function Button({
43
+ className,
44
+ variant = "default",
45
+ size = "default",
46
+ asChild = false,
47
+ ...props
48
+ }) {
49
+ const Comp = asChild ? Slot.Root : "button";
50
+ return /* @__PURE__ */ jsx(
51
+ Comp,
52
+ {
53
+ "data-slot": "button",
54
+ "data-variant": variant,
55
+ "data-size": size,
56
+ className: cn(buttonVariants({ variant, size, className })),
57
+ ...props
58
+ }
59
+ );
60
+ }
61
+ var badgeVariants = cva(
62
+ "h-5 gap-1 rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3! inline-flex items-center justify-center w-fit whitespace-nowrap shrink-0 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive overflow-hidden group/badge",
63
+ {
64
+ variants: {
65
+ variant: {
66
+ default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
67
+ secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
68
+ destructive: "bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20",
69
+ outline: "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",
70
+ ghost: "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",
71
+ link: "text-primary underline-offset-4 hover:underline"
72
+ }
73
+ },
74
+ defaultVariants: {
75
+ variant: "default"
76
+ }
77
+ }
78
+ );
79
+ function Badge({
80
+ className,
81
+ variant = "default",
82
+ asChild = false,
83
+ ...props
84
+ }) {
85
+ const Comp = asChild ? Slot.Root : "span";
86
+ return /* @__PURE__ */ jsx(
87
+ Comp,
88
+ {
89
+ "data-slot": "badge",
90
+ "data-variant": variant,
91
+ className: cn(badgeVariants({ variant }), className),
92
+ ...props
93
+ }
94
+ );
95
+ }
96
+ function Card({
97
+ className,
98
+ size = "default",
99
+ ...props
100
+ }) {
101
+ return /* @__PURE__ */ jsx(
102
+ "div",
103
+ {
104
+ "data-slot": "card",
105
+ "data-size": size,
106
+ className: cn("ring-foreground/10 bg-card text-card-foreground gap-6 overflow-hidden rounded-xl py-6 text-sm shadow-xs ring-1 has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col", className),
107
+ ...props
108
+ }
109
+ );
110
+ }
111
+ function CardHeader({ className, ...props }) {
112
+ return /* @__PURE__ */ jsx(
113
+ "div",
114
+ {
115
+ "data-slot": "card-header",
116
+ className: cn(
117
+ "gap-1 rounded-t-xl px-6 group-data-[size=sm]/card:px-4 [.border-b]:pb-6 group-data-[size=sm]/card:[.border-b]:pb-4 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]",
118
+ className
119
+ ),
120
+ ...props
121
+ }
122
+ );
123
+ }
124
+ function CardTitle({ className, ...props }) {
125
+ return /* @__PURE__ */ jsx(
126
+ "div",
127
+ {
128
+ "data-slot": "card-title",
129
+ className: cn("text-base leading-normal font-medium group-data-[size=sm]/card:text-sm", className),
130
+ ...props
131
+ }
132
+ );
133
+ }
134
+ function CardDescription({ className, ...props }) {
135
+ return /* @__PURE__ */ jsx(
136
+ "div",
137
+ {
138
+ "data-slot": "card-description",
139
+ className: cn("text-muted-foreground text-sm", className),
140
+ ...props
141
+ }
142
+ );
143
+ }
144
+ function CardAction({ className, ...props }) {
145
+ return /* @__PURE__ */ jsx(
146
+ "div",
147
+ {
148
+ "data-slot": "card-action",
149
+ className: cn(
150
+ "col-start-2 row-span-2 row-start-1 self-start justify-self-end",
151
+ className
152
+ ),
153
+ ...props
154
+ }
155
+ );
156
+ }
157
+ function CardContent({ className, ...props }) {
158
+ return /* @__PURE__ */ jsx(
159
+ "div",
160
+ {
161
+ "data-slot": "card-content",
162
+ className: cn("px-6 group-data-[size=sm]/card:px-4", className),
163
+ ...props
164
+ }
165
+ );
166
+ }
167
+ function CardFooter({ className, ...props }) {
168
+ return /* @__PURE__ */ jsx(
169
+ "div",
170
+ {
171
+ "data-slot": "card-footer",
172
+ className: cn("rounded-b-xl px-6 group-data-[size=sm]/card:px-4 [.border-t]:pt-6 group-data-[size=sm]/card:[.border-t]:pt-4 flex items-center", className),
173
+ ...props
174
+ }
175
+ );
176
+ }
177
+ function Input({ className, type, ...props }) {
178
+ return /* @__PURE__ */ jsx(
179
+ "input",
180
+ {
181
+ type,
182
+ "data-slot": "input",
183
+ className: cn(
184
+ "dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 rounded-md border bg-transparent px-2.5 py-1 text-base shadow-xs transition-[color,box-shadow] file:h-7 file:text-sm file:font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] md:text-sm file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50",
185
+ className
186
+ ),
187
+ ...props
188
+ }
189
+ );
190
+ }
191
+ function Textarea({ className, ...props }) {
192
+ return /* @__PURE__ */ jsx(
193
+ "textarea",
194
+ {
195
+ "data-slot": "textarea",
196
+ className: cn(
197
+ "border-input dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-md border bg-transparent px-2.5 py-2 text-base shadow-xs transition-[color,box-shadow] focus-visible:ring-[3px] aria-invalid:ring-[3px] md:text-sm placeholder:text-muted-foreground flex field-sizing-content min-h-16 w-full outline-none disabled:cursor-not-allowed disabled:opacity-50",
198
+ className
199
+ ),
200
+ ...props
201
+ }
202
+ );
203
+ }
204
+ function Label({
205
+ className,
206
+ ...props
207
+ }) {
208
+ return /* @__PURE__ */ jsx(
209
+ Label$1.Root,
210
+ {
211
+ "data-slot": "label",
212
+ className: cn(
213
+ "gap-2 text-sm leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50 flex items-center select-none group-data-[disabled=true]:pointer-events-none peer-disabled:cursor-not-allowed",
214
+ className
215
+ ),
216
+ ...props
217
+ }
218
+ );
219
+ }
220
+ function Separator({
221
+ className,
222
+ orientation = "horizontal",
223
+ decorative = true,
224
+ ...props
225
+ }) {
226
+ return /* @__PURE__ */ jsx(
227
+ Separator$1.Root,
228
+ {
229
+ "data-slot": "separator",
230
+ decorative,
231
+ orientation,
232
+ className: cn(
233
+ "bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:self-stretch",
234
+ className
235
+ ),
236
+ ...props
237
+ }
238
+ );
239
+ }
240
+ function Select({
241
+ ...props
242
+ }) {
243
+ return /* @__PURE__ */ jsx(Select$1.Root, { "data-slot": "select", ...props });
244
+ }
245
+ function SelectGroup({
246
+ className,
247
+ ...props
248
+ }) {
249
+ return /* @__PURE__ */ jsx(
250
+ Select$1.Group,
251
+ {
252
+ "data-slot": "select-group",
253
+ className: cn("scroll-my-1 p-1", className),
254
+ ...props
255
+ }
256
+ );
257
+ }
258
+ function SelectValue({
259
+ ...props
260
+ }) {
261
+ return /* @__PURE__ */ jsx(Select$1.Value, { "data-slot": "select-value", ...props });
262
+ }
263
+ function SelectTrigger({
264
+ className,
265
+ size = "default",
266
+ children,
267
+ ...props
268
+ }) {
269
+ return /* @__PURE__ */ jsxs(
270
+ Select$1.Trigger,
271
+ {
272
+ "data-slot": "select-trigger",
273
+ "data-size": size,
274
+ className: cn(
275
+ "border-input data-[placeholder]:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-md border bg-transparent py-2 pr-2 pl-2.5 text-sm shadow-xs transition-[color,box-shadow] focus-visible:ring-[3px] aria-invalid:ring-[3px] data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:flex *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4 flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0",
276
+ className
277
+ ),
278
+ ...props,
279
+ children: [
280
+ children,
281
+ /* @__PURE__ */ jsx(Select$1.Icon, { asChild: true, children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "text-muted-foreground size-4 pointer-events-none" }) })
282
+ ]
283
+ }
284
+ );
285
+ }
286
+ function SelectContent({
287
+ className,
288
+ children,
289
+ position = "item-aligned",
290
+ align = "center",
291
+ ...props
292
+ }) {
293
+ return /* @__PURE__ */ jsx(Select$1.Portal, { children: /* @__PURE__ */ jsxs(
294
+ Select$1.Content,
295
+ {
296
+ "data-slot": "select-content",
297
+ "data-align-trigger": position === "item-aligned",
298
+ className: cn("bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-md shadow-md ring-1 duration-100 relative z-50 max-h-(--radix-select-content-available-height) origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto data-[align-trigger=true]:animate-none", position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", className),
299
+ position,
300
+ align,
301
+ ...props,
302
+ children: [
303
+ /* @__PURE__ */ jsx(SelectScrollUpButton, {}),
304
+ /* @__PURE__ */ jsx(
305
+ Select$1.Viewport,
306
+ {
307
+ "data-position": position,
308
+ className: cn(
309
+ "data-[position=popper]:h-[var(--radix-select-trigger-height)] data-[position=popper]:w-full data-[position=popper]:min-w-[var(--radix-select-trigger-width)]",
310
+ position === "popper" && ""
311
+ ),
312
+ children
313
+ }
314
+ ),
315
+ /* @__PURE__ */ jsx(SelectScrollDownButton, {})
316
+ ]
317
+ }
318
+ ) });
319
+ }
320
+ function SelectLabel({
321
+ className,
322
+ ...props
323
+ }) {
324
+ return /* @__PURE__ */ jsx(
325
+ Select$1.Label,
326
+ {
327
+ "data-slot": "select-label",
328
+ className: cn("text-muted-foreground px-2 py-1.5 text-xs", className),
329
+ ...props
330
+ }
331
+ );
332
+ }
333
+ function SelectItem({
334
+ className,
335
+ children,
336
+ ...props
337
+ }) {
338
+ return /* @__PURE__ */ jsxs(
339
+ Select$1.Item,
340
+ {
341
+ "data-slot": "select-item",
342
+ className: cn(
343
+ "focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
344
+ className
345
+ ),
346
+ ...props,
347
+ children: [
348
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx(Select$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "pointer-events-none" }) }) }),
349
+ /* @__PURE__ */ jsx(Select$1.ItemText, { children })
350
+ ]
351
+ }
352
+ );
353
+ }
354
+ function SelectSeparator({
355
+ className,
356
+ ...props
357
+ }) {
358
+ return /* @__PURE__ */ jsx(
359
+ Select$1.Separator,
360
+ {
361
+ "data-slot": "select-separator",
362
+ className: cn("bg-border -mx-1 my-1 h-px pointer-events-none", className),
363
+ ...props
364
+ }
365
+ );
366
+ }
367
+ function SelectScrollUpButton({
368
+ className,
369
+ ...props
370
+ }) {
371
+ return /* @__PURE__ */ jsx(
372
+ Select$1.ScrollUpButton,
373
+ {
374
+ "data-slot": "select-scroll-up-button",
375
+ className: cn("bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4", className),
376
+ ...props,
377
+ children: /* @__PURE__ */ jsx(
378
+ ChevronUpIcon,
379
+ {}
380
+ )
381
+ }
382
+ );
383
+ }
384
+ function SelectScrollDownButton({
385
+ className,
386
+ ...props
387
+ }) {
388
+ return /* @__PURE__ */ jsx(
389
+ Select$1.ScrollDownButton,
390
+ {
391
+ "data-slot": "select-scroll-down-button",
392
+ className: cn("bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4", className),
393
+ ...props,
394
+ children: /* @__PURE__ */ jsx(
395
+ ChevronDownIcon,
396
+ {}
397
+ )
398
+ }
399
+ );
400
+ }
401
+ function InputGroup({ className, ...props }) {
402
+ return /* @__PURE__ */ jsx(
403
+ "div",
404
+ {
405
+ "data-slot": "input-group",
406
+ role: "group",
407
+ className: cn(
408
+ "border-input dark:bg-input/30 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 h-9 rounded-md border shadow-xs transition-[color,box-shadow] has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot][aria-invalid=true]]:ring-[3px] 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-[>[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 [[data-slot=combobox-content]_&]:focus-within:border-inherit [[data-slot=combobox-content]_&]:focus-within:ring-0 group/input-group relative flex w-full min-w-0 items-center outline-none has-[>textarea]:h-auto",
409
+ className
410
+ ),
411
+ ...props
412
+ }
413
+ );
414
+ }
415
+ var inputGroupAddonVariants = cva(
416
+ "text-muted-foreground h-auto gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4 flex cursor-text items-center justify-center select-none",
417
+ {
418
+ variants: {
419
+ align: {
420
+ "inline-start": "pl-2 has-[>button]:ml-[-0.25rem] has-[>kbd]:ml-[-0.15rem] order-first",
421
+ "inline-end": "pr-2 has-[>button]:mr-[-0.25rem] has-[>kbd]:mr-[-0.15rem] order-last",
422
+ "block-start": "px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2 order-first w-full justify-start",
423
+ "block-end": "px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2 order-last w-full justify-start"
424
+ }
425
+ },
426
+ defaultVariants: {
427
+ align: "inline-start"
428
+ }
429
+ }
430
+ );
431
+ function InputGroupAddon({
432
+ className,
433
+ align = "inline-start",
434
+ ...props
435
+ }) {
436
+ return /* @__PURE__ */ jsx(
437
+ "div",
438
+ {
439
+ role: "group",
440
+ "data-slot": "input-group-addon",
441
+ "data-align": align,
442
+ className: cn(inputGroupAddonVariants({ align }), className),
443
+ onClick: (e) => {
444
+ if (e.target.closest("button")) {
445
+ return;
446
+ }
447
+ e.currentTarget.parentElement?.querySelector("input")?.focus();
448
+ },
449
+ ...props
450
+ }
451
+ );
452
+ }
453
+ var inputGroupButtonVariants = cva(
454
+ "gap-2 text-sm shadow-none flex items-center",
455
+ {
456
+ variants: {
457
+ size: {
458
+ xs: "h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5",
459
+ sm: "",
460
+ "icon-xs": "size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
461
+ "icon-sm": "size-8 p-0 has-[>svg]:p-0"
462
+ }
463
+ },
464
+ defaultVariants: {
465
+ size: "xs"
466
+ }
467
+ }
468
+ );
469
+ function InputGroupButton({
470
+ className,
471
+ type = "button",
472
+ variant = "ghost",
473
+ size = "xs",
474
+ ...props
475
+ }) {
476
+ return /* @__PURE__ */ jsx(
477
+ Button,
478
+ {
479
+ type,
480
+ "data-size": size,
481
+ variant,
482
+ className: cn(inputGroupButtonVariants({ size }), className),
483
+ ...props
484
+ }
485
+ );
486
+ }
487
+ function InputGroupText({ className, ...props }) {
488
+ return /* @__PURE__ */ jsx(
489
+ "span",
490
+ {
491
+ className: cn(
492
+ "text-muted-foreground gap-2 text-sm [&_svg:not([class*='size-'])]:size-4 flex items-center [&_svg]:pointer-events-none",
493
+ className
494
+ ),
495
+ ...props
496
+ }
497
+ );
498
+ }
499
+ function InputGroupInput({
500
+ className,
501
+ ...props
502
+ }) {
503
+ return /* @__PURE__ */ jsx(
504
+ Input,
505
+ {
506
+ "data-slot": "input-group-control",
507
+ className: cn("rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent flex-1", className),
508
+ ...props
509
+ }
510
+ );
511
+ }
512
+ function InputGroupTextarea({
513
+ className,
514
+ ...props
515
+ }) {
516
+ return /* @__PURE__ */ jsx(
517
+ Textarea,
518
+ {
519
+ "data-slot": "input-group-control",
520
+ className: cn("rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent flex-1 resize-none", className),
521
+ ...props
522
+ }
523
+ );
524
+ }
525
+ function FieldSet({ className, ...props }) {
526
+ return /* @__PURE__ */ jsx(
527
+ "fieldset",
528
+ {
529
+ "data-slot": "field-set",
530
+ className: cn("gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3 flex flex-col", className),
531
+ ...props
532
+ }
533
+ );
534
+ }
535
+ function FieldLegend({
536
+ className,
537
+ variant = "legend",
538
+ ...props
539
+ }) {
540
+ return /* @__PURE__ */ jsx(
541
+ "legend",
542
+ {
543
+ "data-slot": "field-legend",
544
+ "data-variant": variant,
545
+ className: cn("mb-3 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base", className),
546
+ ...props
547
+ }
548
+ );
549
+ }
550
+ function FieldGroup({ className, ...props }) {
551
+ return /* @__PURE__ */ jsx(
552
+ "div",
553
+ {
554
+ "data-slot": "field-group",
555
+ className: cn(
556
+ "gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4 group/field-group @container/field-group flex w-full flex-col",
557
+ className
558
+ ),
559
+ ...props
560
+ }
561
+ );
562
+ }
563
+ var fieldVariants = cva("data-[invalid=true]:text-destructive gap-3 group/field flex w-full", {
564
+ variants: {
565
+ orientation: {
566
+ vertical: "flex-col [&>*]:w-full [&>.sr-only]:w-auto",
567
+ horizontal: "flex-row items-center [&>[data-slot=field-label]]:flex-auto has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px",
568
+ responsive: "flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto @md/field-group:[&>[data-slot=field-label]]:flex-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
569
+ }
570
+ },
571
+ defaultVariants: {
572
+ orientation: "vertical"
573
+ }
574
+ });
575
+ function Field({
576
+ className,
577
+ orientation = "vertical",
578
+ ...props
579
+ }) {
580
+ return /* @__PURE__ */ jsx(
581
+ "div",
582
+ {
583
+ role: "group",
584
+ "data-slot": "field",
585
+ "data-orientation": orientation,
586
+ className: cn(fieldVariants({ orientation }), className),
587
+ ...props
588
+ }
589
+ );
590
+ }
591
+ function FieldContent({ className, ...props }) {
592
+ return /* @__PURE__ */ jsx(
593
+ "div",
594
+ {
595
+ "data-slot": "field-content",
596
+ className: cn(
597
+ "gap-1 group/field-content flex flex-1 flex-col leading-snug",
598
+ className
599
+ ),
600
+ ...props
601
+ }
602
+ );
603
+ }
604
+ function FieldLabel({
605
+ className,
606
+ ...props
607
+ }) {
608
+ return /* @__PURE__ */ jsx(
609
+ Label,
610
+ {
611
+ "data-slot": "field-label",
612
+ className: cn(
613
+ "has-data-checked:bg-primary/5 has-data-checked:border-primary dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-3 group/field-label peer/field-label flex w-fit leading-snug",
614
+ "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col",
615
+ className
616
+ ),
617
+ ...props
618
+ }
619
+ );
620
+ }
621
+ function FieldTitle({ className, ...props }) {
622
+ return /* @__PURE__ */ jsx(
623
+ "div",
624
+ {
625
+ "data-slot": "field-label",
626
+ className: cn(
627
+ "gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50 flex w-fit items-center leading-snug",
628
+ className
629
+ ),
630
+ ...props
631
+ }
632
+ );
633
+ }
634
+ function FieldDescription({ className, ...props }) {
635
+ return /* @__PURE__ */ jsx(
636
+ "p",
637
+ {
638
+ "data-slot": "field-description",
639
+ className: cn(
640
+ "text-muted-foreground text-left text-sm [[data-variant=legend]+&]:-mt-1.5 leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance",
641
+ "last:mt-0 nth-last-2:-mt-1",
642
+ "[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4",
643
+ className
644
+ ),
645
+ ...props
646
+ }
647
+ );
648
+ }
649
+ function FieldSeparator({
650
+ children,
651
+ className,
652
+ ...props
653
+ }) {
654
+ return /* @__PURE__ */ jsxs(
655
+ "div",
656
+ {
657
+ "data-slot": "field-separator",
658
+ "data-content": !!children,
659
+ className: cn("-my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2 relative", className),
660
+ ...props,
661
+ children: [
662
+ /* @__PURE__ */ jsx(Separator, { className: "absolute inset-0 top-1/2" }),
663
+ children && /* @__PURE__ */ jsx(
664
+ "span",
665
+ {
666
+ className: "text-muted-foreground px-2 bg-background relative mx-auto block w-fit",
667
+ "data-slot": "field-separator-content",
668
+ children
669
+ }
670
+ )
671
+ ]
672
+ }
673
+ );
674
+ }
675
+ function FieldError({
676
+ className,
677
+ children,
678
+ errors,
679
+ ...props
680
+ }) {
681
+ const content = useMemo(() => {
682
+ if (children) {
683
+ return children;
684
+ }
685
+ if (!errors?.length) {
686
+ return null;
687
+ }
688
+ const uniqueErrors = [
689
+ ...new Map(errors.map((error) => [error?.message, error])).values()
690
+ ];
691
+ if (uniqueErrors?.length == 1) {
692
+ return uniqueErrors[0]?.message;
693
+ }
694
+ return /* @__PURE__ */ jsx("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: uniqueErrors.map(
695
+ (error, index) => error?.message && /* @__PURE__ */ jsx("li", { children: error.message }, index)
696
+ ) });
697
+ }, [children, errors]);
698
+ if (!content) {
699
+ return null;
700
+ }
701
+ return /* @__PURE__ */ jsx(
702
+ "div",
703
+ {
704
+ role: "alert",
705
+ "data-slot": "field-error",
706
+ className: cn("text-destructive text-sm font-normal", className),
707
+ ...props,
708
+ children: content
709
+ }
710
+ );
711
+ }
712
+ function AlertDialog({
713
+ ...props
714
+ }) {
715
+ return /* @__PURE__ */ jsx(AlertDialog$1.Root, { "data-slot": "alert-dialog", ...props });
716
+ }
717
+ function AlertDialogTrigger({
718
+ ...props
719
+ }) {
720
+ return /* @__PURE__ */ jsx(AlertDialog$1.Trigger, { "data-slot": "alert-dialog-trigger", ...props });
721
+ }
722
+ function AlertDialogPortal({
723
+ ...props
724
+ }) {
725
+ return /* @__PURE__ */ jsx(AlertDialog$1.Portal, { "data-slot": "alert-dialog-portal", ...props });
726
+ }
727
+ function AlertDialogOverlay({
728
+ className,
729
+ ...props
730
+ }) {
731
+ return /* @__PURE__ */ jsx(
732
+ AlertDialog$1.Overlay,
733
+ {
734
+ "data-slot": "alert-dialog-overlay",
735
+ className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 z-50", className),
736
+ ...props
737
+ }
738
+ );
739
+ }
740
+ function AlertDialogContent({
741
+ className,
742
+ size = "default",
743
+ ...props
744
+ }) {
745
+ return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
746
+ /* @__PURE__ */ jsx(AlertDialogOverlay, {}),
747
+ /* @__PURE__ */ jsx(
748
+ AlertDialog$1.Content,
749
+ {
750
+ "data-slot": "alert-dialog-content",
751
+ "data-size": size,
752
+ className: cn(
753
+ "data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 bg-background ring-foreground/10 gap-6 rounded-xl p-6 ring-1 duration-100 data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-lg group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 outline-none",
754
+ className
755
+ ),
756
+ ...props
757
+ }
758
+ )
759
+ ] });
760
+ }
761
+ function AlertDialogHeader({
762
+ className,
763
+ ...props
764
+ }) {
765
+ return /* @__PURE__ */ jsx(
766
+ "div",
767
+ {
768
+ "data-slot": "alert-dialog-header",
769
+ className: cn("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]", className),
770
+ ...props
771
+ }
772
+ );
773
+ }
774
+ function AlertDialogFooter({
775
+ className,
776
+ ...props
777
+ }) {
778
+ return /* @__PURE__ */ jsx(
779
+ "div",
780
+ {
781
+ "data-slot": "alert-dialog-footer",
782
+ className: cn(
783
+ "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",
784
+ className
785
+ ),
786
+ ...props
787
+ }
788
+ );
789
+ }
790
+ function AlertDialogMedia({
791
+ className,
792
+ ...props
793
+ }) {
794
+ return /* @__PURE__ */ jsx(
795
+ "div",
796
+ {
797
+ "data-slot": "alert-dialog-media",
798
+ className: cn("bg-muted mb-2 inline-flex size-16 items-center justify-center rounded-md sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8", className),
799
+ ...props
800
+ }
801
+ );
802
+ }
803
+ function AlertDialogTitle({
804
+ className,
805
+ ...props
806
+ }) {
807
+ return /* @__PURE__ */ jsx(
808
+ AlertDialog$1.Title,
809
+ {
810
+ "data-slot": "alert-dialog-title",
811
+ className: cn("text-lg font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2", className),
812
+ ...props
813
+ }
814
+ );
815
+ }
816
+ function AlertDialogDescription({
817
+ className,
818
+ ...props
819
+ }) {
820
+ return /* @__PURE__ */ jsx(
821
+ AlertDialog$1.Description,
822
+ {
823
+ "data-slot": "alert-dialog-description",
824
+ className: cn("text-muted-foreground *:[a]:hover:text-foreground text-sm text-balance md:text-pretty *:[a]:underline *:[a]:underline-offset-3", className),
825
+ ...props
826
+ }
827
+ );
828
+ }
829
+ function AlertDialogAction({
830
+ className,
831
+ variant = "default",
832
+ size = "default",
833
+ ...props
834
+ }) {
835
+ return /* @__PURE__ */ jsx(Button, { variant, size, asChild: true, children: /* @__PURE__ */ jsx(
836
+ AlertDialog$1.Action,
837
+ {
838
+ "data-slot": "alert-dialog-action",
839
+ className: cn(className),
840
+ ...props
841
+ }
842
+ ) });
843
+ }
844
+ function AlertDialogCancel({
845
+ className,
846
+ variant = "outline",
847
+ size = "default",
848
+ ...props
849
+ }) {
850
+ return /* @__PURE__ */ jsx(Button, { variant, size, asChild: true, children: /* @__PURE__ */ jsx(
851
+ AlertDialog$1.Cancel,
852
+ {
853
+ "data-slot": "alert-dialog-cancel",
854
+ className: cn(className),
855
+ ...props
856
+ }
857
+ ) });
858
+ }
859
+ function DropdownMenu({
860
+ ...props
861
+ }) {
862
+ return /* @__PURE__ */ jsx(DropdownMenu$1.Root, { "data-slot": "dropdown-menu", ...props });
863
+ }
864
+ function DropdownMenuPortal({
865
+ ...props
866
+ }) {
867
+ return /* @__PURE__ */ jsx(DropdownMenu$1.Portal, { "data-slot": "dropdown-menu-portal", ...props });
868
+ }
869
+ function DropdownMenuTrigger({
870
+ ...props
871
+ }) {
872
+ return /* @__PURE__ */ jsx(
873
+ DropdownMenu$1.Trigger,
874
+ {
875
+ "data-slot": "dropdown-menu-trigger",
876
+ ...props
877
+ }
878
+ );
879
+ }
880
+ function DropdownMenuContent({
881
+ className,
882
+ align = "start",
883
+ sideOffset = 4,
884
+ ...props
885
+ }) {
886
+ return /* @__PURE__ */ jsx(DropdownMenu$1.Portal, { children: /* @__PURE__ */ jsx(
887
+ DropdownMenu$1.Content,
888
+ {
889
+ "data-slot": "dropdown-menu-content",
890
+ sideOffset,
891
+ align,
892
+ className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-md p-1 shadow-md ring-1 duration-100 z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto data-[state=closed]:overflow-hidden", className),
893
+ ...props
894
+ }
895
+ ) });
896
+ }
897
+ function DropdownMenuGroup({
898
+ ...props
899
+ }) {
900
+ return /* @__PURE__ */ jsx(DropdownMenu$1.Group, { "data-slot": "dropdown-menu-group", ...props });
901
+ }
902
+ function DropdownMenuItem({
903
+ className,
904
+ inset,
905
+ variant = "default",
906
+ ...props
907
+ }) {
908
+ return /* @__PURE__ */ jsx(
909
+ DropdownMenu$1.Item,
910
+ {
911
+ "data-slot": "dropdown-menu-item",
912
+ "data-inset": inset,
913
+ "data-variant": variant,
914
+ className: cn(
915
+ "focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-sm px-2 py-1.5 text-sm [&_svg:not([class*='size-'])]:size-4 group/dropdown-menu-item relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0",
916
+ className
917
+ ),
918
+ ...props
919
+ }
920
+ );
921
+ }
922
+ function DropdownMenuCheckboxItem({
923
+ className,
924
+ children,
925
+ checked,
926
+ ...props
927
+ }) {
928
+ return /* @__PURE__ */ jsxs(
929
+ DropdownMenu$1.CheckboxItem,
930
+ {
931
+ "data-slot": "dropdown-menu-checkbox-item",
932
+ className: cn(
933
+ "focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
934
+ className
935
+ ),
936
+ checked,
937
+ ...props,
938
+ children: [
939
+ /* @__PURE__ */ jsx(
940
+ "span",
941
+ {
942
+ className: "pointer-events-none absolute right-2 flex items-center justify-center pointer-events-none",
943
+ "data-slot": "dropdown-menu-checkbox-item-indicator",
944
+ children: /* @__PURE__ */ jsx(DropdownMenu$1.ItemIndicator, { children: /* @__PURE__ */ jsx(
945
+ CheckIcon,
946
+ {}
947
+ ) })
948
+ }
949
+ ),
950
+ children
951
+ ]
952
+ }
953
+ );
954
+ }
955
+ function DropdownMenuRadioGroup({
956
+ ...props
957
+ }) {
958
+ return /* @__PURE__ */ jsx(
959
+ DropdownMenu$1.RadioGroup,
960
+ {
961
+ "data-slot": "dropdown-menu-radio-group",
962
+ ...props
963
+ }
964
+ );
965
+ }
966
+ function DropdownMenuRadioItem({
967
+ className,
968
+ children,
969
+ ...props
970
+ }) {
971
+ return /* @__PURE__ */ jsxs(
972
+ DropdownMenu$1.RadioItem,
973
+ {
974
+ "data-slot": "dropdown-menu-radio-item",
975
+ className: cn(
976
+ "focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
977
+ className
978
+ ),
979
+ ...props,
980
+ children: [
981
+ /* @__PURE__ */ jsx(
982
+ "span",
983
+ {
984
+ className: "pointer-events-none absolute right-2 flex items-center justify-center pointer-events-none",
985
+ "data-slot": "dropdown-menu-radio-item-indicator",
986
+ children: /* @__PURE__ */ jsx(DropdownMenu$1.ItemIndicator, { children: /* @__PURE__ */ jsx(
987
+ CheckIcon,
988
+ {}
989
+ ) })
990
+ }
991
+ ),
992
+ children
993
+ ]
994
+ }
995
+ );
996
+ }
997
+ function DropdownMenuLabel({
998
+ className,
999
+ inset,
1000
+ ...props
1001
+ }) {
1002
+ return /* @__PURE__ */ jsx(
1003
+ DropdownMenu$1.Label,
1004
+ {
1005
+ "data-slot": "dropdown-menu-label",
1006
+ "data-inset": inset,
1007
+ className: cn("text-muted-foreground px-2 py-1.5 text-xs font-medium data-[inset]:pl-8", className),
1008
+ ...props
1009
+ }
1010
+ );
1011
+ }
1012
+ function DropdownMenuSeparator({
1013
+ className,
1014
+ ...props
1015
+ }) {
1016
+ return /* @__PURE__ */ jsx(
1017
+ DropdownMenu$1.Separator,
1018
+ {
1019
+ "data-slot": "dropdown-menu-separator",
1020
+ className: cn("bg-border -mx-1 my-1 h-px", className),
1021
+ ...props
1022
+ }
1023
+ );
1024
+ }
1025
+ function DropdownMenuShortcut({
1026
+ className,
1027
+ ...props
1028
+ }) {
1029
+ return /* @__PURE__ */ jsx(
1030
+ "span",
1031
+ {
1032
+ "data-slot": "dropdown-menu-shortcut",
1033
+ className: cn("text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest", className),
1034
+ ...props
1035
+ }
1036
+ );
1037
+ }
1038
+ function DropdownMenuSub({
1039
+ ...props
1040
+ }) {
1041
+ return /* @__PURE__ */ jsx(DropdownMenu$1.Sub, { "data-slot": "dropdown-menu-sub", ...props });
1042
+ }
1043
+ function DropdownMenuSubTrigger({
1044
+ className,
1045
+ inset,
1046
+ children,
1047
+ ...props
1048
+ }) {
1049
+ return /* @__PURE__ */ jsxs(
1050
+ DropdownMenu$1.SubTrigger,
1051
+ {
1052
+ "data-slot": "dropdown-menu-sub-trigger",
1053
+ "data-inset": inset,
1054
+ className: cn(
1055
+ "focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-sm px-2 py-1.5 text-sm [&_svg:not([class*='size-'])]:size-4 flex cursor-default items-center outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0",
1056
+ className
1057
+ ),
1058
+ ...props,
1059
+ children: [
1060
+ children,
1061
+ /* @__PURE__ */ jsx(ChevronRightIcon, { className: "ml-auto" })
1062
+ ]
1063
+ }
1064
+ );
1065
+ }
1066
+ function DropdownMenuSubContent({
1067
+ className,
1068
+ ...props
1069
+ }) {
1070
+ return /* @__PURE__ */ jsx(
1071
+ DropdownMenu$1.SubContent,
1072
+ {
1073
+ "data-slot": "dropdown-menu-sub-content",
1074
+ className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-[96px] rounded-md p-1 shadow-lg ring-1 duration-100 z-50 origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden", className),
1075
+ ...props
1076
+ }
1077
+ );
1078
+ }
1079
+
1080
+ export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, Badge, Button, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, Label, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Textarea, badgeVariants, buttonVariants, cn };
1081
+ //# sourceMappingURL=index.js.map
1082
+ //# sourceMappingURL=index.js.map