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