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