@fluid-app/ui-primitives 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,1664 @@
1
+ import { clsx } from 'clsx';
2
+ import { twMerge } from 'tailwind-merge';
3
+ import { zodResolver } from '@hookform/resolvers/zod';
4
+ import { useForm } from 'react-hook-form';
5
+ import * as React6 from 'react';
6
+ import { createContext, useContext } from 'react';
7
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
+ import * as AccordionPrimitive from '@radix-ui/react-accordion';
9
+ import { X, ChevronDown, ChevronRight, ChevronLeft, Check, Circle, ChevronUp } from 'lucide-react';
10
+ import { cva } from 'class-variance-authority';
11
+ import { Slot } from '@radix-ui/react-slot';
12
+ import { DayPicker } from 'react-day-picker';
13
+ import * as RechartsPrimitive from 'recharts';
14
+ import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
15
+ import * as SheetPrimitive from '@radix-ui/react-dialog';
16
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
17
+ import * as TogglePrimitive from '@radix-ui/react-toggle';
18
+ import * as LabelPrimitive from '@radix-ui/react-label';
19
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
20
+ import * as SelectPrimitive from '@radix-ui/react-select';
21
+ import * as SeparatorPrimitive from '@radix-ui/react-separator';
22
+ import * as SliderPrimitive from '@radix-ui/react-slider';
23
+ import * as SwitchPrimitive from '@radix-ui/react-switch';
24
+ import * as TabsPrimitive from '@radix-ui/react-tabs';
25
+ import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
26
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
27
+
28
+ // src/lib/utils.ts
29
+ function cn(...inputs) {
30
+ return twMerge(clsx(inputs));
31
+ }
32
+ function useZodForm(schema, options) {
33
+ "use no memo";
34
+ const zodResolverFn = zodResolver;
35
+ const resolver = zodResolverFn(schema);
36
+ return useForm({ ...options, resolver });
37
+ }
38
+ var PortalContainerContext = createContext(
39
+ void 0
40
+ );
41
+ function PortalContainerProvider({
42
+ children,
43
+ container
44
+ }) {
45
+ return /* @__PURE__ */ jsx(PortalContainerContext.Provider, { value: container ?? void 0, children });
46
+ }
47
+ function usePortalContainer() {
48
+ return useContext(PortalContainerContext);
49
+ }
50
+ function Accordion({
51
+ className,
52
+ ...props
53
+ }) {
54
+ return /* @__PURE__ */ jsx(
55
+ AccordionPrimitive.Root,
56
+ {
57
+ "data-slot": "accordion",
58
+ className: cn("cn-accordion flex w-full flex-col", className),
59
+ ...props
60
+ }
61
+ );
62
+ }
63
+ function AccordionItem({
64
+ className,
65
+ ...props
66
+ }) {
67
+ return /* @__PURE__ */ jsx(
68
+ AccordionPrimitive.Item,
69
+ {
70
+ "data-slot": "accordion-item",
71
+ className: cn("cn-accordion-item", className),
72
+ ...props
73
+ }
74
+ );
75
+ }
76
+ function AccordionTrigger({
77
+ className,
78
+ children,
79
+ ...props
80
+ }) {
81
+ return /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
82
+ AccordionPrimitive.Trigger,
83
+ {
84
+ "data-slot": "accordion-trigger",
85
+ className: cn(
86
+ "cn-accordion-trigger group/accordion-trigger relative flex flex-1 items-start justify-between border border-transparent transition-all outline-none disabled:pointer-events-none disabled:opacity-50",
87
+ className
88
+ ),
89
+ ...props,
90
+ children: [
91
+ children,
92
+ /* @__PURE__ */ jsx(ChevronDown, { className: "cn-accordion-trigger-icon pointer-events-none shrink-0 transition-transform duration-200 group-aria-expanded/accordion-trigger:rotate-180" })
93
+ ]
94
+ }
95
+ ) });
96
+ }
97
+ function AccordionContent({
98
+ className,
99
+ children,
100
+ ...props
101
+ }) {
102
+ return /* @__PURE__ */ jsx(
103
+ AccordionPrimitive.Content,
104
+ {
105
+ "data-slot": "accordion-content",
106
+ className: "cn-accordion-content overflow-hidden",
107
+ ...props,
108
+ children: /* @__PURE__ */ jsx(
109
+ "div",
110
+ {
111
+ className: cn(
112
+ "cn-accordion-content-inner h-(--radix-accordion-content-height) [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4",
113
+ className
114
+ ),
115
+ children
116
+ }
117
+ )
118
+ }
119
+ );
120
+ }
121
+ var alertVariants = cva(
122
+ "relative grid h-full w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
123
+ {
124
+ variants: {
125
+ variant: {
126
+ default: "bg-card text-card-foreground",
127
+ destructive: "bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current"
128
+ }
129
+ },
130
+ defaultVariants: {
131
+ variant: "default"
132
+ }
133
+ }
134
+ );
135
+ function Alert({
136
+ className,
137
+ variant,
138
+ ...props
139
+ }) {
140
+ return /* @__PURE__ */ jsx(
141
+ "div",
142
+ {
143
+ "data-slot": "alert",
144
+ role: "alert",
145
+ className: cn(alertVariants({ variant }), className),
146
+ ...props
147
+ }
148
+ );
149
+ }
150
+ function AlertTitle({ className, ...props }) {
151
+ return /* @__PURE__ */ jsx(
152
+ "div",
153
+ {
154
+ "data-slot": "alert-title",
155
+ className: cn(
156
+ "col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight",
157
+ className
158
+ ),
159
+ ...props
160
+ }
161
+ );
162
+ }
163
+ function AlertDescription({
164
+ className,
165
+ ...props
166
+ }) {
167
+ return /* @__PURE__ */ jsx(
168
+ "div",
169
+ {
170
+ "data-slot": "alert-description",
171
+ className: cn(
172
+ "col-start-2 grid justify-items-start gap-1 text-sm text-muted-foreground [&_p]:leading-relaxed",
173
+ className
174
+ ),
175
+ ...props
176
+ }
177
+ );
178
+ }
179
+ var buttonVariants = cva(
180
+ "inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none 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 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
181
+ {
182
+ variants: {
183
+ variant: {
184
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
185
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",
186
+ outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
187
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
188
+ ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
189
+ link: "text-primary underline-offset-4 hover:underline"
190
+ },
191
+ size: {
192
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
193
+ sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",
194
+ lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
195
+ xl: "h-11 rounded-md px-8 has-[>svg]:px-5",
196
+ icon: "size-9",
197
+ "icon-xs": "size-6",
198
+ "icon-sm": "size-8",
199
+ "icon-lg": "size-10"
200
+ }
201
+ },
202
+ defaultVariants: {
203
+ variant: "default",
204
+ size: "default"
205
+ }
206
+ }
207
+ );
208
+ function Button({
209
+ className,
210
+ variant,
211
+ size,
212
+ asChild = false,
213
+ ...props
214
+ }) {
215
+ const Comp = asChild ? Slot : "button";
216
+ return /* @__PURE__ */ jsx(
217
+ Comp,
218
+ {
219
+ "data-slot": "button",
220
+ className: cn(buttonVariants({ variant, size, className })),
221
+ ...props
222
+ }
223
+ );
224
+ }
225
+ function Calendar({
226
+ className,
227
+ classNames,
228
+ showOutsideDays = true,
229
+ ...props
230
+ }) {
231
+ return /* @__PURE__ */ jsx(
232
+ DayPicker,
233
+ {
234
+ showOutsideDays,
235
+ className: cn("p-3", className),
236
+ classNames: {
237
+ months: "flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0",
238
+ month: "space-y-4",
239
+ caption: "flex justify-center pt-1 relative items-center",
240
+ caption_label: "text-sm font-medium",
241
+ nav: "space-x-1 flex items-center",
242
+ nav_button: cn(
243
+ buttonVariants({ variant: "ghost" }),
244
+ "h-7 w-7 justify-center bg-transparent p-0 opacity-50 hover:opacity-100"
245
+ ),
246
+ nav_button_previous: "absolute left-1",
247
+ nav_button_next: "absolute right-1",
248
+ table: "w-full border-collapse space-y-1",
249
+ head_row: "flex",
250
+ head_cell: "text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]",
251
+ row: "flex w-full mt-2",
252
+ cell: "h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected])]:bg-accent first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20",
253
+ day: cn(
254
+ buttonVariants({ variant: "ghost" }),
255
+ "h-9 w-9 justify-center p-0 font-normal aria-selected:opacity-100"
256
+ ),
257
+ day_range_end: "day-range-end",
258
+ day_selected: "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground",
259
+ day_today: "bg-accent text-accent-foreground",
260
+ day_outside: "day-outside text-muted-foreground aria-selected:bg-accent/50 aria-selected:text-muted-foreground",
261
+ day_disabled: "text-muted-foreground opacity-50",
262
+ day_range_middle: "aria-selected:bg-accent aria-selected:text-accent-foreground",
263
+ day_hidden: "invisible",
264
+ ...classNames
265
+ },
266
+ components: {
267
+ IconLeft: ({ className: iconClassName, ...iconProps }) => /* @__PURE__ */ jsx(
268
+ ChevronLeft,
269
+ {
270
+ className: cn("h-4 w-4", iconClassName),
271
+ ...iconProps
272
+ }
273
+ ),
274
+ IconRight: ({ className: iconClassName, ...iconProps }) => /* @__PURE__ */ jsx(
275
+ ChevronRight,
276
+ {
277
+ className: cn("h-4 w-4", iconClassName),
278
+ ...iconProps
279
+ }
280
+ )
281
+ },
282
+ ...props
283
+ }
284
+ );
285
+ }
286
+ Calendar.displayName = "Calendar";
287
+ function Card({ className, ...props }) {
288
+ return /* @__PURE__ */ jsx(
289
+ "div",
290
+ {
291
+ "data-slot": "card",
292
+ className: cn(
293
+ "flex h-full flex-col gap-6 rounded-xl border bg-card py-6 text-card-foreground shadow-sm",
294
+ className
295
+ ),
296
+ ...props
297
+ }
298
+ );
299
+ }
300
+ function CardHeader({ className, ...props }) {
301
+ return /* @__PURE__ */ jsx(
302
+ "div",
303
+ {
304
+ "data-slot": "card-header",
305
+ className: cn(
306
+ "@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
307
+ className
308
+ ),
309
+ ...props
310
+ }
311
+ );
312
+ }
313
+ function CardTitle({ className, ...props }) {
314
+ return /* @__PURE__ */ jsx(
315
+ "div",
316
+ {
317
+ "data-slot": "card-title",
318
+ className: cn("leading-none font-semibold", className),
319
+ ...props
320
+ }
321
+ );
322
+ }
323
+ function CardDescription({ className, ...props }) {
324
+ return /* @__PURE__ */ jsx(
325
+ "div",
326
+ {
327
+ "data-slot": "card-description",
328
+ className: cn("text-sm text-muted-foreground", className),
329
+ ...props
330
+ }
331
+ );
332
+ }
333
+ function CardAction({ className, ...props }) {
334
+ return /* @__PURE__ */ jsx(
335
+ "div",
336
+ {
337
+ "data-slot": "card-action",
338
+ className: cn(
339
+ "col-start-2 row-span-2 row-start-1 self-start justify-self-end",
340
+ className
341
+ ),
342
+ ...props
343
+ }
344
+ );
345
+ }
346
+ function CardContent({ className, ...props }) {
347
+ return /* @__PURE__ */ jsx(
348
+ "div",
349
+ {
350
+ "data-slot": "card-content",
351
+ className: cn("px-6", className),
352
+ ...props
353
+ }
354
+ );
355
+ }
356
+ function CardFooter({ className, ...props }) {
357
+ return /* @__PURE__ */ jsx(
358
+ "div",
359
+ {
360
+ "data-slot": "card-footer",
361
+ className: cn("flex items-center px-6 [.border-t]:pt-6", className),
362
+ ...props
363
+ }
364
+ );
365
+ }
366
+ var THEMES = { light: "", dark: ".dark" };
367
+ var ChartContext = React6.createContext(null);
368
+ function useChart() {
369
+ const context = React6.useContext(ChartContext);
370
+ if (!context) {
371
+ throw new Error("useChart must be used within a <ChartContainer />");
372
+ }
373
+ return context;
374
+ }
375
+ function ChartContainer({
376
+ id,
377
+ className,
378
+ children,
379
+ config,
380
+ ...props
381
+ }) {
382
+ const uniqueId = React6.useId();
383
+ const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
384
+ return /* @__PURE__ */ jsx(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs(
385
+ "div",
386
+ {
387
+ "data-slot": "chart",
388
+ "data-chart": chartId,
389
+ className: cn(
390
+ "flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden",
391
+ className
392
+ ),
393
+ ...props,
394
+ children: [
395
+ /* @__PURE__ */ jsx(ChartStyle, { id: chartId, config }),
396
+ /* @__PURE__ */ jsx(RechartsPrimitive.ResponsiveContainer, { children })
397
+ ]
398
+ }
399
+ ) });
400
+ }
401
+ var ChartStyle = ({ id, config }) => {
402
+ const colorConfig = Object.entries(config).filter(
403
+ ([, cfg]) => cfg.theme || cfg.color
404
+ );
405
+ if (!colorConfig.length) {
406
+ return null;
407
+ }
408
+ return /* @__PURE__ */ jsx(
409
+ "style",
410
+ {
411
+ dangerouslySetInnerHTML: {
412
+ __html: Object.entries(THEMES).map(
413
+ ([theme, prefix]) => `
414
+ ${prefix} [data-chart=${id}] {
415
+ ${colorConfig.map(([key, itemConfig]) => {
416
+ const color = itemConfig.theme?.[theme] || itemConfig.color;
417
+ return color ? ` --color-${key}: ${color};` : null;
418
+ }).join("\n")}
419
+ }
420
+ `
421
+ ).join("\n")
422
+ }
423
+ }
424
+ );
425
+ };
426
+ var ChartTooltip = RechartsPrimitive.Tooltip;
427
+ function ChartTooltipContent({
428
+ active,
429
+ payload,
430
+ className,
431
+ indicator = "dot",
432
+ hideLabel = false,
433
+ hideIndicator = false,
434
+ label,
435
+ labelFormatter,
436
+ labelClassName,
437
+ formatter,
438
+ color,
439
+ nameKey,
440
+ labelKey
441
+ }) {
442
+ const { config } = useChart();
443
+ const tooltipLabel = React6.useMemo(() => {
444
+ if (hideLabel || !payload?.length) {
445
+ return null;
446
+ }
447
+ const [item] = payload;
448
+ const key = `${labelKey || item?.dataKey || item?.name || "value"}`;
449
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
450
+ const value = !labelKey && typeof label === "string" ? config[label]?.label || label : itemConfig?.label;
451
+ if (labelFormatter) {
452
+ return /* @__PURE__ */ jsx("div", { className: cn("font-medium", labelClassName), children: labelFormatter(value, payload) });
453
+ }
454
+ if (!value) {
455
+ return null;
456
+ }
457
+ return /* @__PURE__ */ jsx("div", { className: cn("font-medium", labelClassName), children: value });
458
+ }, [
459
+ label,
460
+ labelFormatter,
461
+ payload,
462
+ hideLabel,
463
+ labelClassName,
464
+ config,
465
+ labelKey
466
+ ]);
467
+ if (!active || !payload?.length) {
468
+ return null;
469
+ }
470
+ const nestLabel = payload.length === 1 && indicator !== "dot";
471
+ return /* @__PURE__ */ jsxs(
472
+ "div",
473
+ {
474
+ className: cn(
475
+ "grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",
476
+ className
477
+ ),
478
+ children: [
479
+ !nestLabel ? tooltipLabel : null,
480
+ /* @__PURE__ */ jsx("div", { className: "grid gap-1.5", children: payload.filter((item) => item.type !== "none").map((item, index) => {
481
+ const key = `${nameKey || item.name || item.dataKey || "value"}`;
482
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
483
+ const indicatorColor = color || item.payload.fill || item.color;
484
+ return /* @__PURE__ */ jsx(
485
+ "div",
486
+ {
487
+ className: cn(
488
+ "flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",
489
+ indicator === "dot" && "items-center"
490
+ ),
491
+ children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxs(Fragment, { children: [
492
+ itemConfig?.icon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx(
493
+ "div",
494
+ {
495
+ className: cn(
496
+ "shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)",
497
+ {
498
+ "h-2.5 w-2.5": indicator === "dot",
499
+ "w-1": indicator === "line",
500
+ "w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
501
+ "my-0.5": nestLabel && indicator === "dashed"
502
+ }
503
+ ),
504
+ style: {
505
+ "--color-bg": indicatorColor,
506
+ "--color-border": indicatorColor
507
+ }
508
+ }
509
+ ),
510
+ /* @__PURE__ */ jsxs(
511
+ "div",
512
+ {
513
+ className: cn(
514
+ "flex flex-1 justify-between leading-none",
515
+ nestLabel ? "items-end" : "items-center"
516
+ ),
517
+ children: [
518
+ /* @__PURE__ */ jsxs("div", { className: "grid gap-1.5", children: [
519
+ nestLabel ? tooltipLabel : null,
520
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: itemConfig?.label || item.name })
521
+ ] }),
522
+ item.value && /* @__PURE__ */ jsx("span", { className: "font-mono font-medium text-foreground tabular-nums", children: item.value.toLocaleString() })
523
+ ]
524
+ }
525
+ )
526
+ ] })
527
+ },
528
+ item.dataKey
529
+ );
530
+ }) })
531
+ ]
532
+ }
533
+ );
534
+ }
535
+ var ChartLegend = RechartsPrimitive.Legend;
536
+ function ChartLegendContent({
537
+ className,
538
+ hideIcon = false,
539
+ payload,
540
+ verticalAlign = "bottom",
541
+ nameKey
542
+ }) {
543
+ const { config } = useChart();
544
+ if (!payload?.length) {
545
+ return null;
546
+ }
547
+ return /* @__PURE__ */ jsx(
548
+ "div",
549
+ {
550
+ className: cn(
551
+ "flex items-center justify-center gap-4",
552
+ verticalAlign === "top" ? "pb-3" : "pt-3",
553
+ className
554
+ ),
555
+ children: payload.filter((item) => item.type !== "none").map((item) => {
556
+ const key = `${nameKey || item.dataKey || "value"}`;
557
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
558
+ return /* @__PURE__ */ jsxs(
559
+ "div",
560
+ {
561
+ className: cn(
562
+ "flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"
563
+ ),
564
+ children: [
565
+ itemConfig?.icon && !hideIcon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : /* @__PURE__ */ jsx(
566
+ "div",
567
+ {
568
+ className: "h-2 w-2 shrink-0 rounded-[2px]",
569
+ style: { backgroundColor: item.color }
570
+ }
571
+ ),
572
+ itemConfig?.label
573
+ ]
574
+ },
575
+ item.value
576
+ );
577
+ })
578
+ }
579
+ );
580
+ }
581
+ function getPayloadConfigFromPayload(config, payload, key) {
582
+ if (typeof payload !== "object" || payload === null) {
583
+ return void 0;
584
+ }
585
+ const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
586
+ let configLabelKey = key;
587
+ if (key in payload && typeof payload[key] === "string") {
588
+ configLabelKey = payload[key];
589
+ } else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") {
590
+ configLabelKey = payloadPayload[key];
591
+ }
592
+ return configLabelKey in config ? config[configLabelKey] : config[key];
593
+ }
594
+ function Collapsible({
595
+ ...props
596
+ }) {
597
+ return /* @__PURE__ */ jsx(CollapsiblePrimitive.Root, { "data-slot": "collapsible", ...props });
598
+ }
599
+ function CollapsibleTrigger2({
600
+ ...props
601
+ }) {
602
+ return /* @__PURE__ */ jsx(
603
+ CollapsiblePrimitive.CollapsibleTrigger,
604
+ {
605
+ "data-slot": "collapsible-trigger",
606
+ ...props
607
+ }
608
+ );
609
+ }
610
+ function CollapsibleContent2({
611
+ ...props
612
+ }) {
613
+ return /* @__PURE__ */ jsx(
614
+ CollapsiblePrimitive.CollapsibleContent,
615
+ {
616
+ "data-slot": "collapsible-content",
617
+ ...props
618
+ }
619
+ );
620
+ }
621
+ function Dialog({
622
+ ...props
623
+ }) {
624
+ return /* @__PURE__ */ jsx(SheetPrimitive.Root, { "data-slot": "dialog", ...props });
625
+ }
626
+ function DialogTrigger({
627
+ ...props
628
+ }) {
629
+ return /* @__PURE__ */ jsx(SheetPrimitive.Trigger, { "data-slot": "dialog-trigger", ...props });
630
+ }
631
+ function DialogPortal({
632
+ ...props
633
+ }) {
634
+ const portalContainer = usePortalContainer();
635
+ return /* @__PURE__ */ jsx(
636
+ SheetPrimitive.Portal,
637
+ {
638
+ "data-slot": "dialog-portal",
639
+ container: portalContainer,
640
+ ...props
641
+ }
642
+ );
643
+ }
644
+ function DialogClose({
645
+ ...props
646
+ }) {
647
+ return /* @__PURE__ */ jsx(SheetPrimitive.Close, { "data-slot": "dialog-close", ...props });
648
+ }
649
+ function DialogOverlay({
650
+ className,
651
+ ...props
652
+ }) {
653
+ return /* @__PURE__ */ jsx(
654
+ SheetPrimitive.Overlay,
655
+ {
656
+ "data-slot": "dialog-overlay",
657
+ className: cn(
658
+ "fixed inset-0 z-50 bg-gray-900/70 backdrop-blur-sm data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0",
659
+ className
660
+ ),
661
+ ...props
662
+ }
663
+ );
664
+ }
665
+ function DialogContent({
666
+ className,
667
+ children,
668
+ showCloseButton = true,
669
+ overlayClassName,
670
+ ...props
671
+ }) {
672
+ return /* @__PURE__ */ jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [
673
+ /* @__PURE__ */ jsx(DialogOverlay, { className: overlayClassName }),
674
+ /* @__PURE__ */ jsxs(
675
+ SheetPrimitive.Content,
676
+ {
677
+ "data-slot": "dialog-content",
678
+ className: cn(
679
+ "fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-6 rounded-lg border bg-background p-6 shadow-lg duration-200 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-lg",
680
+ className
681
+ ),
682
+ ...props,
683
+ children: [
684
+ children,
685
+ showCloseButton && /* @__PURE__ */ jsxs(
686
+ SheetPrimitive.Close,
687
+ {
688
+ "data-slot": "dialog-close",
689
+ className: "absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
690
+ children: [
691
+ /* @__PURE__ */ jsx(X, {}),
692
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
693
+ ]
694
+ }
695
+ )
696
+ ]
697
+ }
698
+ )
699
+ ] });
700
+ }
701
+ function DialogHeader({ className, ...props }) {
702
+ return /* @__PURE__ */ jsx(
703
+ "div",
704
+ {
705
+ "data-slot": "dialog-header",
706
+ className: cn("flex flex-col gap-2 text-center sm:text-left", className),
707
+ ...props
708
+ }
709
+ );
710
+ }
711
+ function DialogFooter({ className, ...props }) {
712
+ return /* @__PURE__ */ jsx(
713
+ "div",
714
+ {
715
+ "data-slot": "dialog-footer",
716
+ className: cn(
717
+ "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
718
+ className
719
+ ),
720
+ ...props
721
+ }
722
+ );
723
+ }
724
+ function DialogTitle({
725
+ className,
726
+ ...props
727
+ }) {
728
+ return /* @__PURE__ */ jsx(
729
+ SheetPrimitive.Title,
730
+ {
731
+ "data-slot": "dialog-title",
732
+ className: cn("text-lg leading-none font-semibold", className),
733
+ ...props
734
+ }
735
+ );
736
+ }
737
+ function DialogDescription({
738
+ className,
739
+ ...props
740
+ }) {
741
+ return /* @__PURE__ */ jsx(
742
+ SheetPrimitive.Description,
743
+ {
744
+ "data-slot": "dialog-description",
745
+ className: cn("text-sm text-muted-foreground", className),
746
+ ...props
747
+ }
748
+ );
749
+ }
750
+ function DropdownMenu({
751
+ ...props
752
+ }) {
753
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
754
+ }
755
+ function DropdownMenuPortal({
756
+ ...props
757
+ }) {
758
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { "data-slot": "dropdown-menu-portal", ...props });
759
+ }
760
+ function DropdownMenuTrigger({
761
+ ...props
762
+ }) {
763
+ return /* @__PURE__ */ jsx(
764
+ DropdownMenuPrimitive.Trigger,
765
+ {
766
+ "data-slot": "dropdown-menu-trigger",
767
+ ...props
768
+ }
769
+ );
770
+ }
771
+ function DropdownMenuContent({
772
+ className,
773
+ sideOffset = 4,
774
+ ...props
775
+ }) {
776
+ const portalContainer = usePortalContainer();
777
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx(
778
+ DropdownMenuPrimitive.Content,
779
+ {
780
+ "data-slot": "dropdown-menu-content",
781
+ sideOffset,
782
+ className: cn(
783
+ "z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-md 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]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
784
+ className
785
+ ),
786
+ ...props
787
+ }
788
+ ) });
789
+ }
790
+ function DropdownMenuGroup({
791
+ ...props
792
+ }) {
793
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Group, { "data-slot": "dropdown-menu-group", ...props });
794
+ }
795
+ function DropdownMenuItem({
796
+ className,
797
+ inset,
798
+ variant = "default",
799
+ ...props
800
+ }) {
801
+ return /* @__PURE__ */ jsx(
802
+ DropdownMenuPrimitive.Item,
803
+ {
804
+ "data-slot": "dropdown-menu-item",
805
+ "data-inset": inset,
806
+ "data-variant": variant,
807
+ className: cn(
808
+ "relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:!text-destructive",
809
+ className
810
+ ),
811
+ ...props
812
+ }
813
+ );
814
+ }
815
+ function DropdownMenuCheckboxItem({
816
+ className,
817
+ children,
818
+ ...props
819
+ }) {
820
+ return /* @__PURE__ */ jsxs(
821
+ DropdownMenuPrimitive.CheckboxItem,
822
+ {
823
+ "data-slot": "dropdown-menu-checkbox-item",
824
+ className: cn(
825
+ "relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
826
+ className
827
+ ),
828
+ ...props,
829
+ children: [
830
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { className: "size-4" }) }) }),
831
+ children
832
+ ]
833
+ }
834
+ );
835
+ }
836
+ function DropdownMenuRadioGroup({
837
+ ...props
838
+ }) {
839
+ return /* @__PURE__ */ jsx(
840
+ DropdownMenuPrimitive.RadioGroup,
841
+ {
842
+ "data-slot": "dropdown-menu-radio-group",
843
+ ...props
844
+ }
845
+ );
846
+ }
847
+ function DropdownMenuRadioItem({
848
+ className,
849
+ children,
850
+ ...props
851
+ }) {
852
+ return /* @__PURE__ */ jsxs(
853
+ DropdownMenuPrimitive.RadioItem,
854
+ {
855
+ "data-slot": "dropdown-menu-radio-item",
856
+ className: cn(
857
+ "relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
858
+ className
859
+ ),
860
+ ...props,
861
+ children: [
862
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Circle, { className: "size-2 fill-current" }) }) }),
863
+ children
864
+ ]
865
+ }
866
+ );
867
+ }
868
+ function DropdownMenuLabel({
869
+ className,
870
+ inset,
871
+ ...props
872
+ }) {
873
+ return /* @__PURE__ */ jsx(
874
+ DropdownMenuPrimitive.Label,
875
+ {
876
+ "data-slot": "dropdown-menu-label",
877
+ "data-inset": inset,
878
+ className: cn(
879
+ "px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",
880
+ className
881
+ ),
882
+ ...props
883
+ }
884
+ );
885
+ }
886
+ function DropdownMenuSeparator({
887
+ className,
888
+ ...props
889
+ }) {
890
+ return /* @__PURE__ */ jsx(
891
+ DropdownMenuPrimitive.Separator,
892
+ {
893
+ "data-slot": "dropdown-menu-separator",
894
+ className: cn("-mx-1 my-1 h-px bg-border", className),
895
+ ...props
896
+ }
897
+ );
898
+ }
899
+ function DropdownMenuShortcut({
900
+ className,
901
+ ...props
902
+ }) {
903
+ return /* @__PURE__ */ jsx(
904
+ "span",
905
+ {
906
+ "data-slot": "dropdown-menu-shortcut",
907
+ className: cn(
908
+ "ml-auto text-xs tracking-widest text-muted-foreground",
909
+ className
910
+ ),
911
+ ...props
912
+ }
913
+ );
914
+ }
915
+ function DropdownMenuSub({
916
+ ...props
917
+ }) {
918
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Sub, { "data-slot": "dropdown-menu-sub", ...props });
919
+ }
920
+ function DropdownMenuSubTrigger({
921
+ className,
922
+ inset,
923
+ children,
924
+ ...props
925
+ }) {
926
+ return /* @__PURE__ */ jsxs(
927
+ DropdownMenuPrimitive.SubTrigger,
928
+ {
929
+ "data-slot": "dropdown-menu-sub-trigger",
930
+ "data-inset": inset,
931
+ className: cn(
932
+ "flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[inset]:pl-8 data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground",
933
+ className
934
+ ),
935
+ ...props,
936
+ children: [
937
+ children,
938
+ /* @__PURE__ */ jsx(ChevronRight, { className: "ml-auto size-4" })
939
+ ]
940
+ }
941
+ );
942
+ }
943
+ function DropdownMenuSubContent({
944
+ className,
945
+ ...props
946
+ }) {
947
+ return /* @__PURE__ */ jsx(
948
+ DropdownMenuPrimitive.SubContent,
949
+ {
950
+ "data-slot": "dropdown-menu-sub-content",
951
+ className: cn(
952
+ "z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg 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]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
953
+ className
954
+ ),
955
+ ...props
956
+ }
957
+ );
958
+ }
959
+ function IconButton({
960
+ icon: Icon2,
961
+ className,
962
+ variant = "ghost",
963
+ size = "icon",
964
+ isActive,
965
+ ...props
966
+ }) {
967
+ return /* @__PURE__ */ jsx(
968
+ Button,
969
+ {
970
+ variant,
971
+ size,
972
+ "data-active": isActive,
973
+ className: cn(isActive && "bg-accent text-accent-foreground", className),
974
+ ...props,
975
+ children: /* @__PURE__ */ jsx(Icon2, {})
976
+ }
977
+ );
978
+ }
979
+ var toggleVariants = cva(
980
+ "inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none 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 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
981
+ {
982
+ variants: {
983
+ variant: {
984
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
985
+ destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",
986
+ outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
987
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
988
+ ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
989
+ link: "text-primary underline-offset-4 hover:underline"
990
+ },
991
+ size: {
992
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
993
+ sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",
994
+ lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
995
+ icon: "size-9",
996
+ "icon-xs": "size-6",
997
+ "icon-sm": "size-8",
998
+ "icon-lg": "size-10"
999
+ }
1000
+ },
1001
+ defaultVariants: {
1002
+ variant: "default",
1003
+ size: "default"
1004
+ }
1005
+ }
1006
+ );
1007
+ function Toggle({
1008
+ className,
1009
+ variant = "default",
1010
+ size = "default",
1011
+ ...props
1012
+ }) {
1013
+ return /* @__PURE__ */ jsx(
1014
+ TogglePrimitive.Root,
1015
+ {
1016
+ "data-slot": "toggle",
1017
+ className: cn(toggleVariants({ variant, size, className })),
1018
+ ...props
1019
+ }
1020
+ );
1021
+ }
1022
+ function IconToggle({
1023
+ icon: Icon2,
1024
+ variant = "ghost",
1025
+ size = "icon",
1026
+ ...props
1027
+ }) {
1028
+ return /* @__PURE__ */ jsx(Toggle, { variant, size, ...props, children: /* @__PURE__ */ jsx(Icon2, {}) });
1029
+ }
1030
+ function Input({ className, type, ...props }) {
1031
+ return /* @__PURE__ */ jsx(
1032
+ "input",
1033
+ {
1034
+ type,
1035
+ "data-slot": "input",
1036
+ className: cn(
1037
+ "h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30",
1038
+ "focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50",
1039
+ "aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",
1040
+ className
1041
+ ),
1042
+ ...props
1043
+ }
1044
+ );
1045
+ }
1046
+ function Label2({
1047
+ className,
1048
+ ...props
1049
+ }) {
1050
+ return /* @__PURE__ */ jsx(
1051
+ LabelPrimitive.Root,
1052
+ {
1053
+ "data-slot": "label",
1054
+ className: cn(
1055
+ "flex items-center gap-2 text-sm 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",
1056
+ className
1057
+ ),
1058
+ ...props
1059
+ }
1060
+ );
1061
+ }
1062
+ function Popover({
1063
+ ...props
1064
+ }) {
1065
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
1066
+ }
1067
+ function PopoverTrigger({
1068
+ ...props
1069
+ }) {
1070
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
1071
+ }
1072
+ function PopoverContent({
1073
+ className,
1074
+ align = "center",
1075
+ sideOffset = 4,
1076
+ ...props
1077
+ }) {
1078
+ const portalContainer = usePortalContainer();
1079
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx(
1080
+ PopoverPrimitive.Content,
1081
+ {
1082
+ "data-slot": "popover-content",
1083
+ align,
1084
+ sideOffset,
1085
+ className: cn(
1086
+ "cn-popover-content z-50 w-72 origin-(--radix-popover-content-transform-origin) outline-hidden",
1087
+ className
1088
+ ),
1089
+ ...props
1090
+ }
1091
+ ) });
1092
+ }
1093
+ function PopoverAnchor({
1094
+ ...props
1095
+ }) {
1096
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Anchor, { "data-slot": "popover-anchor", ...props });
1097
+ }
1098
+ function PopoverHeader({ className, ...props }) {
1099
+ return /* @__PURE__ */ jsx(
1100
+ "div",
1101
+ {
1102
+ "data-slot": "popover-header",
1103
+ className: cn("cn-popover-header", className),
1104
+ ...props
1105
+ }
1106
+ );
1107
+ }
1108
+ function PopoverTitle({ className, ...props }) {
1109
+ return /* @__PURE__ */ jsx(
1110
+ "div",
1111
+ {
1112
+ "data-slot": "popover-title",
1113
+ className: cn("cn-popover-title", className),
1114
+ ...props
1115
+ }
1116
+ );
1117
+ }
1118
+ function PopoverDescription({
1119
+ className,
1120
+ ...props
1121
+ }) {
1122
+ return /* @__PURE__ */ jsx(
1123
+ "p",
1124
+ {
1125
+ "data-slot": "popover-description",
1126
+ className: cn("cn-popover-description", className),
1127
+ ...props
1128
+ }
1129
+ );
1130
+ }
1131
+ function Select({
1132
+ ...props
1133
+ }) {
1134
+ return /* @__PURE__ */ jsx(SelectPrimitive.Root, { "data-slot": "select", ...props });
1135
+ }
1136
+ function SelectGroup({
1137
+ ...props
1138
+ }) {
1139
+ return /* @__PURE__ */ jsx(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
1140
+ }
1141
+ function SelectValue({
1142
+ ...props
1143
+ }) {
1144
+ return /* @__PURE__ */ jsx(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
1145
+ }
1146
+ function SelectTrigger({
1147
+ className,
1148
+ size = "default",
1149
+ children,
1150
+ ...props
1151
+ }) {
1152
+ return /* @__PURE__ */ jsxs(
1153
+ SelectPrimitive.Trigger,
1154
+ {
1155
+ "data-slot": "select-trigger",
1156
+ "data-size": size,
1157
+ className: cn(
1158
+ "flex w-fit items-center justify-between gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground",
1159
+ className
1160
+ ),
1161
+ ...props,
1162
+ children: [
1163
+ children,
1164
+ /* @__PURE__ */ jsx(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx(ChevronDown, { className: "size-4 opacity-50" }) })
1165
+ ]
1166
+ }
1167
+ );
1168
+ }
1169
+ function SelectContent({
1170
+ className,
1171
+ children,
1172
+ position = "popper",
1173
+ align = "center",
1174
+ ...props
1175
+ }) {
1176
+ const portalContainer = usePortalContainer();
1177
+ return /* @__PURE__ */ jsx(SelectPrimitive.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxs(
1178
+ SelectPrimitive.Content,
1179
+ {
1180
+ "data-slot": "select-content",
1181
+ className: cn(
1182
+ "relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover text-popover-foreground shadow-md 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]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
1183
+ 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",
1184
+ className
1185
+ ),
1186
+ position,
1187
+ align,
1188
+ ...props,
1189
+ children: [
1190
+ /* @__PURE__ */ jsx(SelectScrollUpButton, {}),
1191
+ /* @__PURE__ */ jsx(
1192
+ SelectPrimitive.Viewport,
1193
+ {
1194
+ className: cn(
1195
+ "p-1",
1196
+ position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"
1197
+ ),
1198
+ children
1199
+ }
1200
+ ),
1201
+ /* @__PURE__ */ jsx(SelectScrollDownButton, {})
1202
+ ]
1203
+ }
1204
+ ) });
1205
+ }
1206
+ function SelectLabel({
1207
+ className,
1208
+ ...props
1209
+ }) {
1210
+ return /* @__PURE__ */ jsx(
1211
+ SelectPrimitive.Label,
1212
+ {
1213
+ "data-slot": "select-label",
1214
+ className: cn("px-2 py-1.5 text-xs text-muted-foreground", className),
1215
+ ...props
1216
+ }
1217
+ );
1218
+ }
1219
+ function SelectItem({
1220
+ className,
1221
+ children,
1222
+ ...props
1223
+ }) {
1224
+ return /* @__PURE__ */ jsxs(
1225
+ SelectPrimitive.Item,
1226
+ {
1227
+ "data-slot": "select-item",
1228
+ className: cn(
1229
+ "relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
1230
+ className
1231
+ ),
1232
+ ...props,
1233
+ children: [
1234
+ /* @__PURE__ */ jsx("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { className: "size-4" }) }) }),
1235
+ /* @__PURE__ */ jsx(SelectPrimitive.ItemText, { children })
1236
+ ]
1237
+ }
1238
+ );
1239
+ }
1240
+ function SelectSeparator({
1241
+ className,
1242
+ ...props
1243
+ }) {
1244
+ return /* @__PURE__ */ jsx(
1245
+ SelectPrimitive.Separator,
1246
+ {
1247
+ "data-slot": "select-separator",
1248
+ className: cn("pointer-events-none -mx-1 my-1 h-px bg-border", className),
1249
+ ...props
1250
+ }
1251
+ );
1252
+ }
1253
+ function SelectScrollUpButton({
1254
+ className,
1255
+ ...props
1256
+ }) {
1257
+ return /* @__PURE__ */ jsx(
1258
+ SelectPrimitive.ScrollUpButton,
1259
+ {
1260
+ "data-slot": "select-scroll-up-button",
1261
+ className: cn(
1262
+ "flex cursor-default items-center justify-center py-1",
1263
+ className
1264
+ ),
1265
+ ...props,
1266
+ children: /* @__PURE__ */ jsx(ChevronUp, { className: "size-4" })
1267
+ }
1268
+ );
1269
+ }
1270
+ function SelectScrollDownButton({
1271
+ className,
1272
+ ...props
1273
+ }) {
1274
+ return /* @__PURE__ */ jsx(
1275
+ SelectPrimitive.ScrollDownButton,
1276
+ {
1277
+ "data-slot": "select-scroll-down-button",
1278
+ className: cn(
1279
+ "flex cursor-default items-center justify-center py-1",
1280
+ className
1281
+ ),
1282
+ ...props,
1283
+ children: /* @__PURE__ */ jsx(ChevronDown, { className: "size-4" })
1284
+ }
1285
+ );
1286
+ }
1287
+ var Separator3 = React6.forwardRef(
1288
+ ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx(
1289
+ SeparatorPrimitive.Root,
1290
+ {
1291
+ ref,
1292
+ decorative,
1293
+ orientation,
1294
+ className: cn(
1295
+ "shrink-0 bg-gray-200",
1296
+ orientation === "horizontal" ? "h-px w-full" : "h-full w-px",
1297
+ className
1298
+ ),
1299
+ ...props
1300
+ }
1301
+ )
1302
+ );
1303
+ Separator3.displayName = SeparatorPrimitive.Root.displayName;
1304
+ function Skeleton({
1305
+ className,
1306
+ ...props
1307
+ }) {
1308
+ return /* @__PURE__ */ jsx(
1309
+ "div",
1310
+ {
1311
+ className: cn("animate-pulse rounded-md bg-muted", className),
1312
+ ...props
1313
+ }
1314
+ );
1315
+ }
1316
+ var Slider = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs(
1317
+ SliderPrimitive.Root,
1318
+ {
1319
+ ref,
1320
+ className: cn(
1321
+ "relative flex w-full touch-none items-center select-none",
1322
+ className
1323
+ ),
1324
+ ...props,
1325
+ children: [
1326
+ /* @__PURE__ */ jsx(SliderPrimitive.Track, { className: "relative h-2 w-full grow overflow-hidden rounded-full bg-gray-200", children: /* @__PURE__ */ jsx(SliderPrimitive.Range, { className: "absolute h-full bg-primary" }) }),
1327
+ /* @__PURE__ */ jsx(SliderPrimitive.Thumb, { className: "block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50" })
1328
+ ]
1329
+ }
1330
+ ));
1331
+ Slider.displayName = SliderPrimitive.Root.displayName;
1332
+ var Sheet = SheetPrimitive.Root;
1333
+ var SheetTrigger = SheetPrimitive.Trigger;
1334
+ var SheetClose = SheetPrimitive.Close;
1335
+ function SheetPortal(props) {
1336
+ const portalContainer = usePortalContainer();
1337
+ return /* @__PURE__ */ jsx(SheetPrimitive.Portal, { container: portalContainer, ...props });
1338
+ }
1339
+ var SheetOverlay = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1340
+ SheetPrimitive.Overlay,
1341
+ {
1342
+ className: cn(
1343
+ "fixed inset-0 z-[1040] bg-black/80 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0",
1344
+ className
1345
+ ),
1346
+ ...props,
1347
+ ref
1348
+ }
1349
+ ));
1350
+ SheetOverlay.displayName = SheetPrimitive.Overlay.displayName;
1351
+ var sheetVariants = cva(
1352
+ "fixed z-[1050] gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:animate-in data-[state=open]:duration-500",
1353
+ {
1354
+ variants: {
1355
+ side: {
1356
+ top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
1357
+ bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
1358
+ left: "inset-y-0 left-0 h-full w-full border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
1359
+ right: "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"
1360
+ }
1361
+ },
1362
+ defaultVariants: {
1363
+ side: "right"
1364
+ }
1365
+ }
1366
+ );
1367
+ var SheetContent = React6.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs(SheetPortal, { children: [
1368
+ /* @__PURE__ */ jsx(SheetOverlay, {}),
1369
+ /* @__PURE__ */ jsxs(
1370
+ SheetPrimitive.Content,
1371
+ {
1372
+ ref,
1373
+ className: cn(sheetVariants({ side }), className),
1374
+ ...props,
1375
+ children: [
1376
+ /* @__PURE__ */ jsxs(SheetPrimitive.Close, { className: "absolute top-4 right-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-secondary [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", children: [
1377
+ /* @__PURE__ */ jsx(X, {}),
1378
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1379
+ ] }),
1380
+ children
1381
+ ]
1382
+ }
1383
+ )
1384
+ ] }));
1385
+ SheetContent.displayName = SheetPrimitive.Content.displayName;
1386
+ function SheetHeader({ className, ...props }) {
1387
+ return /* @__PURE__ */ jsx(
1388
+ "div",
1389
+ {
1390
+ className: cn(
1391
+ "flex flex-col space-y-2 text-center sm:text-left",
1392
+ className
1393
+ ),
1394
+ ...props
1395
+ }
1396
+ );
1397
+ }
1398
+ function SheetFooter({ className, ...props }) {
1399
+ return /* @__PURE__ */ jsx(
1400
+ "div",
1401
+ {
1402
+ className: cn(
1403
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
1404
+ className
1405
+ ),
1406
+ ...props
1407
+ }
1408
+ );
1409
+ }
1410
+ var SheetTitle = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1411
+ SheetPrimitive.Title,
1412
+ {
1413
+ ref,
1414
+ className: cn("text-lg font-semibold text-foreground", className),
1415
+ ...props
1416
+ }
1417
+ ));
1418
+ SheetTitle.displayName = SheetPrimitive.Title.displayName;
1419
+ var SheetDescription = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1420
+ SheetPrimitive.Description,
1421
+ {
1422
+ ref,
1423
+ className: cn("text-sm text-muted-foreground", className),
1424
+ ...props
1425
+ }
1426
+ ));
1427
+ SheetDescription.displayName = SheetPrimitive.Description.displayName;
1428
+ function SpinnerWithText({
1429
+ text = "Loading...",
1430
+ variant = "inline",
1431
+ className
1432
+ }) {
1433
+ return /* @__PURE__ */ jsx(
1434
+ "div",
1435
+ {
1436
+ className: cn(
1437
+ "flex items-center justify-center self-stretch py-10",
1438
+ variant === "page" && "h-[60vh]",
1439
+ className
1440
+ ),
1441
+ children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-start gap-4", children: [
1442
+ /* @__PURE__ */ jsx("div", { className: "relative h-8 w-8", children: /* @__PURE__ */ jsxs(
1443
+ "svg",
1444
+ {
1445
+ width: "32",
1446
+ height: "33",
1447
+ viewBox: "0 0 32 33",
1448
+ fill: "none",
1449
+ xmlns: "http://www.w3.org/2000/svg",
1450
+ className: "animate-spin",
1451
+ children: [
1452
+ /* @__PURE__ */ jsx(
1453
+ "path",
1454
+ {
1455
+ d: "M30 16.5C30 18.3385 29.6379 20.159 28.9343 21.8576C28.2308 23.5561 27.1995 25.0995 25.8995 26.3995C24.5995 27.6995 23.0561 28.7307 21.3576 29.4343C19.659 30.1379 17.8385 30.5 16 30.5C14.1615 30.5 12.341 30.1379 10.6424 29.4343C8.94387 28.7307 7.40052 27.6995 6.1005 26.3995C4.80048 25.0995 3.76925 23.5561 3.06569 21.8576C2.36212 20.159 2 18.3385 2 16.5C2 14.6615 2.36212 12.841 3.06569 11.1424C3.76926 9.44387 4.80049 7.90052 6.10051 6.6005C7.40053 5.30048 8.94388 4.26925 10.6424 3.56568C12.341 2.86212 14.1615 2.5 16 2.5C17.8385 2.5 19.659 2.86212 21.3576 3.56569C23.0561 4.26925 24.5995 5.30049 25.8995 6.60051C27.1995 7.90053 28.2308 9.44388 28.9343 11.1424C29.6379 12.841 30 14.6615 30 16.5L30 16.5Z",
1456
+ stroke: "#F5F6F9",
1457
+ strokeWidth: "4",
1458
+ strokeLinecap: "round",
1459
+ strokeLinejoin: "round"
1460
+ }
1461
+ ),
1462
+ /* @__PURE__ */ jsx(
1463
+ "path",
1464
+ {
1465
+ d: "M16 2.5C17.8385 2.5 19.659 2.86212 21.3576 3.56569C23.0561 4.26925 24.5995 5.30049 25.8995 6.60051C27.1995 7.90053 28.2308 9.44388 28.9343 11.1424C29.6379 12.841 30 14.6615 30 16.5",
1466
+ stroke: "#155DFC",
1467
+ strokeWidth: "4",
1468
+ strokeLinecap: "round",
1469
+ strokeLinejoin: "round"
1470
+ }
1471
+ )
1472
+ ]
1473
+ }
1474
+ ) }),
1475
+ text && /* @__PURE__ */ jsx("div", { className: "text-center text-sm leading-tight font-medium text-slate-700", children: text })
1476
+ ] })
1477
+ }
1478
+ );
1479
+ }
1480
+ var Switch = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1481
+ SwitchPrimitive.Root,
1482
+ {
1483
+ className: cn(
1484
+ "peer relative inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background focus-visible:outline-hidden disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-gray-200",
1485
+ className
1486
+ ),
1487
+ ...props,
1488
+ ref,
1489
+ children: /* @__PURE__ */ jsx(
1490
+ SwitchPrimitive.Thumb,
1491
+ {
1492
+ className: cn(
1493
+ "pointer-events-none absolute left-0 block h-5 w-5 rounded-full bg-white shadow-lg ring-0 transition-transform duration-200 data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0"
1494
+ )
1495
+ }
1496
+ )
1497
+ }
1498
+ ));
1499
+ Switch.displayName = SwitchPrimitive.Root.displayName;
1500
+ function Tabs({
1501
+ className,
1502
+ ...props
1503
+ }) {
1504
+ return /* @__PURE__ */ jsx(
1505
+ TabsPrimitive.Root,
1506
+ {
1507
+ "data-slot": "tabs",
1508
+ className: cn("flex flex-col gap-2", className),
1509
+ ...props
1510
+ }
1511
+ );
1512
+ }
1513
+ function TabsList({
1514
+ className,
1515
+ ...props
1516
+ }) {
1517
+ return /* @__PURE__ */ jsx(
1518
+ TabsPrimitive.List,
1519
+ {
1520
+ "data-slot": "tabs-list",
1521
+ className: cn(
1522
+ "inline-flex h-9 w-fit items-center justify-center rounded-lg bg-muted p-[3px] text-muted-foreground",
1523
+ className
1524
+ ),
1525
+ ...props
1526
+ }
1527
+ );
1528
+ }
1529
+ function TabsTrigger({
1530
+ className,
1531
+ ...props
1532
+ }) {
1533
+ return /* @__PURE__ */ jsx(
1534
+ TabsPrimitive.Trigger,
1535
+ {
1536
+ "data-slot": "tabs-trigger",
1537
+ className: cn(
1538
+ "inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:shadow-sm dark:text-muted-foreground dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 dark:data-[state=active]:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
1539
+ className
1540
+ ),
1541
+ ...props
1542
+ }
1543
+ );
1544
+ }
1545
+ function TabsContent({
1546
+ className,
1547
+ ...props
1548
+ }) {
1549
+ return /* @__PURE__ */ jsx(
1550
+ TabsPrimitive.Content,
1551
+ {
1552
+ "data-slot": "tabs-content",
1553
+ className: cn("flex-1 outline-none", className),
1554
+ ...props
1555
+ }
1556
+ );
1557
+ }
1558
+ function Textarea({ className, ...props }) {
1559
+ return /* @__PURE__ */ jsx(
1560
+ "textarea",
1561
+ {
1562
+ "data-slot": "textarea",
1563
+ className: cn(
1564
+ "flex field-sizing-content min-h-16 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:ring-destructive/40",
1565
+ className
1566
+ ),
1567
+ ...props
1568
+ }
1569
+ );
1570
+ }
1571
+ var ToggleGroupContext = React6.createContext({
1572
+ size: "default",
1573
+ variant: "default",
1574
+ spacing: 0,
1575
+ orientation: "horizontal"
1576
+ });
1577
+ function ToggleGroup({
1578
+ className,
1579
+ variant,
1580
+ size,
1581
+ spacing = 0,
1582
+ orientation = "horizontal",
1583
+ children,
1584
+ ...props
1585
+ }) {
1586
+ return /* @__PURE__ */ jsx(
1587
+ ToggleGroupPrimitive.Root,
1588
+ {
1589
+ "data-slot": "toggle-group",
1590
+ "data-variant": variant,
1591
+ "data-size": size,
1592
+ "data-spacing": spacing,
1593
+ "data-orientation": orientation,
1594
+ style: { "--gap": spacing },
1595
+ className: cn(
1596
+ "cn-toggle-group group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] data-[orientation=vertical]:flex-col data-[orientation=vertical]:items-stretch",
1597
+ className
1598
+ ),
1599
+ ...props,
1600
+ children: /* @__PURE__ */ jsx(
1601
+ ToggleGroupContext.Provider,
1602
+ {
1603
+ value: { variant, size, spacing, orientation },
1604
+ children
1605
+ }
1606
+ )
1607
+ }
1608
+ );
1609
+ }
1610
+ function ToggleGroupItem({
1611
+ className,
1612
+ children,
1613
+ variant = "default",
1614
+ size = "default",
1615
+ ...props
1616
+ }) {
1617
+ const context = React6.useContext(ToggleGroupContext);
1618
+ return /* @__PURE__ */ jsx(
1619
+ ToggleGroupPrimitive.Item,
1620
+ {
1621
+ "data-slot": "toggle-group-item",
1622
+ "data-variant": context.variant || variant,
1623
+ "data-size": context.size || size,
1624
+ "data-spacing": context.spacing,
1625
+ className: cn(
1626
+ "cn-toggle-group-item shrink-0 focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t",
1627
+ toggleVariants({
1628
+ variant: context.variant || variant,
1629
+ size: context.size || size
1630
+ }),
1631
+ className
1632
+ ),
1633
+ ...props,
1634
+ children
1635
+ }
1636
+ );
1637
+ }
1638
+ var TooltipProvider = TooltipPrimitive.Provider;
1639
+ function Tooltip2(props) {
1640
+ return /* @__PURE__ */ jsx(TooltipPrimitive.Root, { ...props });
1641
+ }
1642
+ var TooltipTrigger = TooltipPrimitive.Trigger;
1643
+ function TooltipContent({
1644
+ className,
1645
+ sideOffset = 4,
1646
+ ...props
1647
+ }) {
1648
+ const portalContainer = usePortalContainer();
1649
+ return /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx(
1650
+ TooltipPrimitive.Content,
1651
+ {
1652
+ sideOffset,
1653
+ className: cn(
1654
+ "z-50 animate-in overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md fade-in-0 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 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
1655
+ className
1656
+ ),
1657
+ ...props
1658
+ }
1659
+ ) });
1660
+ }
1661
+
1662
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertTitle, Button, Calendar, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, IconButton, IconToggle, Input, Label2 as Label, Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, PortalContainerProvider, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator3 as Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Skeleton, Slider, SpinnerWithText, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toggle, ToggleGroup, ToggleGroupItem, Tooltip2 as Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, buttonVariants, cn, toggleVariants, useZodForm };
1663
+ //# sourceMappingURL=index.js.map
1664
+ //# sourceMappingURL=index.js.map