crm-project-ui 0.1.8 → 0.1.11

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,2775 @@
1
+ "use client";
2
+
3
+ // src/components/ui/accordion/index.tsx
4
+ import { ChevronDown } from "lucide-react";
5
+ import * as React from "react";
6
+
7
+ // src/lib/utils.ts
8
+ import { clsx } from "clsx";
9
+ import { twMerge } from "tailwind-merge";
10
+ function cn(...inputs) {
11
+ return twMerge(clsx(inputs));
12
+ }
13
+
14
+ // src/components/ui/accordion/index.tsx
15
+ import * as AccordionPrimitive from "@radix-ui/react-accordion";
16
+ import { jsx, jsxs } from "react/jsx-runtime";
17
+ var Accordion = AccordionPrimitive.Root;
18
+ var AccordionItem = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
19
+ AccordionPrimitive.Item,
20
+ {
21
+ className: cn("border-b", className),
22
+ ref,
23
+ ...props
24
+ }
25
+ ));
26
+ AccordionItem.displayName = "AccordionItem";
27
+ var AccordionTrigger = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
28
+ AccordionPrimitive.Trigger,
29
+ {
30
+ className: cn(
31
+ "flex flex-1 items-center justify-between py-4 text-left text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",
32
+ className
33
+ ),
34
+ ref,
35
+ ...props,
36
+ children: [
37
+ children,
38
+ /* @__PURE__ */ jsx(ChevronDown, { className: "text-muted-foreground h-4 w-4 shrink-0 transition-transform duration-200" })
39
+ ]
40
+ }
41
+ ) }));
42
+ AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
43
+ var AccordionContent = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
44
+ AccordionPrimitive.Content,
45
+ {
46
+ className: "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm",
47
+ ref,
48
+ ...props,
49
+ children: /* @__PURE__ */ jsx("div", { className: cn("pt-0 pb-4", className), children })
50
+ }
51
+ ));
52
+ AccordionContent.displayName = AccordionPrimitive.Content.displayName;
53
+
54
+ // src/components/ui/alert/index.tsx
55
+ import { cva } from "class-variance-authority";
56
+ import * as React2 from "react";
57
+ import { jsx as jsx2 } from "react/jsx-runtime";
58
+ var alertVariants = cva(
59
+ "relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7",
60
+ {
61
+ variants: {
62
+ variant: {
63
+ default: "bg-background text-foreground",
64
+ destructive: "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"
65
+ }
66
+ },
67
+ defaultVariants: {
68
+ variant: "default"
69
+ }
70
+ }
71
+ );
72
+ var Alert = React2.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ jsx2(
73
+ "div",
74
+ {
75
+ className: cn(alertVariants({ variant }), className),
76
+ ref,
77
+ role: "alert",
78
+ ...props
79
+ }
80
+ ));
81
+ Alert.displayName = "Alert";
82
+ var AlertTitle = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx2(
83
+ "h5",
84
+ {
85
+ className: cn("mb-1 leading-none font-medium tracking-tight", className),
86
+ ref,
87
+ ...props
88
+ }
89
+ ));
90
+ AlertTitle.displayName = "AlertTitle";
91
+ var AlertDescription = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx2(
92
+ "div",
93
+ {
94
+ className: cn("text-sm [&_p]:leading-relaxed", className),
95
+ ref,
96
+ ...props
97
+ }
98
+ ));
99
+ AlertDescription.displayName = "AlertDescription";
100
+
101
+ // src/components/ui/alert-dialog/index.tsx
102
+ import * as React4 from "react";
103
+
104
+ // src/components/ui/button/index.tsx
105
+ import { cva as cva2 } from "class-variance-authority";
106
+ import * as React3 from "react";
107
+ import { Slot } from "@radix-ui/react-slot";
108
+ import { jsx as jsx3 } from "react/jsx-runtime";
109
+ var buttonVariants = cva2(
110
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
111
+ {
112
+ variants: {
113
+ variant: {
114
+ default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
115
+ destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
116
+ outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
117
+ secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
118
+ ghost: "hover:bg-accent hover:text-accent-foreground",
119
+ link: "text-primary underline-offset-4 hover:underline"
120
+ },
121
+ size: {
122
+ default: "h-9 px-4 py-2",
123
+ sm: "h-8 rounded-md px-3 text-xs",
124
+ lg: "h-10 rounded-md px-8",
125
+ icon: "h-9 w-9"
126
+ }
127
+ },
128
+ defaultVariants: {
129
+ variant: "default",
130
+ size: "default"
131
+ }
132
+ }
133
+ );
134
+ var Button = React3.forwardRef(
135
+ ({ className, variant, size, asChild = false, ...props }, ref) => {
136
+ const Comp = asChild ? Slot : "button";
137
+ return /* @__PURE__ */ jsx3(
138
+ Comp,
139
+ {
140
+ className: cn(buttonVariants({ variant, size, className })),
141
+ ref,
142
+ ...props
143
+ }
144
+ );
145
+ }
146
+ );
147
+ Button.displayName = "Button";
148
+
149
+ // src/components/ui/alert-dialog/index.tsx
150
+ import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
151
+ import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
152
+ var AlertDialog = AlertDialogPrimitive.Root;
153
+ var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
154
+ var AlertDialogPortal = AlertDialogPrimitive.Portal;
155
+ var AlertDialogOverlay = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
156
+ AlertDialogPrimitive.Overlay,
157
+ {
158
+ className: cn(
159
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80",
160
+ className
161
+ ),
162
+ ...props,
163
+ ref
164
+ }
165
+ ));
166
+ AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
167
+ var AlertDialogContent = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs2(AlertDialogPortal, { children: [
168
+ /* @__PURE__ */ jsx4(AlertDialogOverlay, {}),
169
+ /* @__PURE__ */ jsx4(
170
+ AlertDialogPrimitive.Content,
171
+ {
172
+ className: cn(
173
+ "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] fixed top-[50%] left-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border p-6 shadow-lg duration-200 sm:rounded-lg",
174
+ className
175
+ ),
176
+ ref,
177
+ ...props
178
+ }
179
+ )
180
+ ] }));
181
+ AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
182
+ var AlertDialogHeader = ({
183
+ className,
184
+ ...props
185
+ }) => /* @__PURE__ */ jsx4(
186
+ "div",
187
+ {
188
+ className: cn(
189
+ "flex flex-col space-y-2 text-center sm:text-left",
190
+ className
191
+ ),
192
+ ...props
193
+ }
194
+ );
195
+ AlertDialogHeader.displayName = "AlertDialogHeader";
196
+ var AlertDialogFooter = ({
197
+ className,
198
+ ...props
199
+ }) => /* @__PURE__ */ jsx4(
200
+ "div",
201
+ {
202
+ className: cn(
203
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
204
+ className
205
+ ),
206
+ ...props
207
+ }
208
+ );
209
+ AlertDialogFooter.displayName = "AlertDialogFooter";
210
+ var AlertDialogTitle = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
211
+ AlertDialogPrimitive.Title,
212
+ {
213
+ className: cn("text-lg font-semibold", className),
214
+ ref,
215
+ ...props
216
+ }
217
+ ));
218
+ AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
219
+ var AlertDialogDescription = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
220
+ AlertDialogPrimitive.Description,
221
+ {
222
+ className: cn("text-muted-foreground text-sm", className),
223
+ ref,
224
+ ...props
225
+ }
226
+ ));
227
+ AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
228
+ var AlertDialogAction = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
229
+ AlertDialogPrimitive.Action,
230
+ {
231
+ className: cn(buttonVariants(), className),
232
+ ref,
233
+ ...props
234
+ }
235
+ ));
236
+ AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
237
+ var AlertDialogCancel = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
238
+ AlertDialogPrimitive.Cancel,
239
+ {
240
+ className: cn(
241
+ buttonVariants({ variant: "outline" }),
242
+ "mt-2 sm:mt-0",
243
+ className
244
+ ),
245
+ ref,
246
+ ...props
247
+ }
248
+ ));
249
+ AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
250
+
251
+ // src/components/ui/avatar/index.tsx
252
+ import * as React5 from "react";
253
+ import * as AvatarPrimitive from "@radix-ui/react-avatar";
254
+ import { jsx as jsx5 } from "react/jsx-runtime";
255
+ var Avatar = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
256
+ AvatarPrimitive.Root,
257
+ {
258
+ className: cn(
259
+ "relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
260
+ className
261
+ ),
262
+ ref,
263
+ ...props
264
+ }
265
+ ));
266
+ Avatar.displayName = AvatarPrimitive.Root.displayName;
267
+ var AvatarImage = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
268
+ AvatarPrimitive.Image,
269
+ {
270
+ className: cn("aspect-square h-full w-full", className),
271
+ ref,
272
+ ...props
273
+ }
274
+ ));
275
+ AvatarImage.displayName = AvatarPrimitive.Image.displayName;
276
+ var AvatarFallback = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
277
+ AvatarPrimitive.Fallback,
278
+ {
279
+ className: cn(
280
+ "bg-muted flex h-full w-full items-center justify-center rounded-full",
281
+ className
282
+ ),
283
+ ref,
284
+ ...props
285
+ }
286
+ ));
287
+ AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
288
+
289
+ // src/components/ui/badge/index.tsx
290
+ import { cva as cva3 } from "class-variance-authority";
291
+ import { jsx as jsx6 } from "react/jsx-runtime";
292
+ var badgeVariants = cva3(
293
+ "inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
294
+ {
295
+ variants: {
296
+ variant: {
297
+ default: "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",
298
+ secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
299
+ destructive: "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",
300
+ outline: "text-foreground"
301
+ }
302
+ },
303
+ defaultVariants: {
304
+ variant: "default"
305
+ }
306
+ }
307
+ );
308
+ function Badge({ className, variant, ...props }) {
309
+ return /* @__PURE__ */ jsx6("div", { className: cn(badgeVariants({ variant }), className), ...props });
310
+ }
311
+
312
+ // src/components/ui/breadcrumb/index.tsx
313
+ import { ChevronRight, MoreHorizontal } from "lucide-react";
314
+ import * as React6 from "react";
315
+ import { Slot as Slot2 } from "@radix-ui/react-slot";
316
+ import { jsx as jsx7, jsxs as jsxs3 } from "react/jsx-runtime";
317
+ var Breadcrumb = React6.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx7("nav", { "aria-label": "breadcrumb", ref, ...props }));
318
+ Breadcrumb.displayName = "Breadcrumb";
319
+ var BreadcrumbList = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx7(
320
+ "ol",
321
+ {
322
+ className: cn(
323
+ "text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5",
324
+ className
325
+ ),
326
+ ref,
327
+ ...props
328
+ }
329
+ ));
330
+ BreadcrumbList.displayName = "BreadcrumbList";
331
+ var BreadcrumbItem = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx7(
332
+ "li",
333
+ {
334
+ className: cn("inline-flex items-center gap-1.5", className),
335
+ ref,
336
+ ...props
337
+ }
338
+ ));
339
+ BreadcrumbItem.displayName = "BreadcrumbItem";
340
+ var BreadcrumbLink = React6.forwardRef(({ asChild, className, ...props }, ref) => {
341
+ const Comp = asChild ? Slot2 : "a";
342
+ return /* @__PURE__ */ jsx7(
343
+ Comp,
344
+ {
345
+ className: cn("hover:text-foreground transition-colors", className),
346
+ ref,
347
+ ...props
348
+ }
349
+ );
350
+ });
351
+ BreadcrumbLink.displayName = "BreadcrumbLink";
352
+ var BreadcrumbPage = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx7(
353
+ "span",
354
+ {
355
+ "aria-current": "page",
356
+ "aria-disabled": "true",
357
+ className: cn("text-foreground font-normal", className),
358
+ ref,
359
+ role: "link",
360
+ ...props
361
+ }
362
+ ));
363
+ BreadcrumbPage.displayName = "BreadcrumbPage";
364
+ var BreadcrumbSeparator = ({
365
+ children,
366
+ className,
367
+ ...props
368
+ }) => /* @__PURE__ */ jsx7(
369
+ "li",
370
+ {
371
+ "aria-hidden": "true",
372
+ className: cn("[&>svg]:h-3.5 [&>svg]:w-3.5", className),
373
+ role: "presentation",
374
+ ...props,
375
+ children: children ?? /* @__PURE__ */ jsx7(ChevronRight, {})
376
+ }
377
+ );
378
+ BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
379
+ var BreadcrumbEllipsis = ({
380
+ className,
381
+ ...props
382
+ }) => /* @__PURE__ */ jsxs3(
383
+ "span",
384
+ {
385
+ "aria-hidden": "true",
386
+ className: cn("flex h-9 w-9 items-center justify-center", className),
387
+ role: "presentation",
388
+ ...props,
389
+ children: [
390
+ /* @__PURE__ */ jsx7(MoreHorizontal, { className: "h-4 w-4" }),
391
+ /* @__PURE__ */ jsx7("span", { className: "sr-only", children: "More" })
392
+ ]
393
+ }
394
+ );
395
+ BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
396
+
397
+ // src/components/ui/calendar/index.tsx
398
+ import {
399
+ ChevronDownIcon,
400
+ ChevronLeftIcon,
401
+ ChevronRightIcon
402
+ } from "lucide-react";
403
+ import * as React7 from "react";
404
+ import { DayPicker, getDefaultClassNames } from "react-day-picker";
405
+ import { jsx as jsx8 } from "react/jsx-runtime";
406
+ function Calendar({
407
+ className,
408
+ classNames,
409
+ showOutsideDays = true,
410
+ captionLayout = "label",
411
+ buttonVariant = "ghost",
412
+ formatters,
413
+ components,
414
+ ...props
415
+ }) {
416
+ const defaultClassNames = getDefaultClassNames();
417
+ return /* @__PURE__ */ jsx8(
418
+ DayPicker,
419
+ {
420
+ className: cn(
421
+ "bg-background group/calendar p-3 [--cell-size:2rem] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent",
422
+ String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
423
+ String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
424
+ className
425
+ ),
426
+ classNames: {
427
+ root: cn("w-fit", defaultClassNames.root),
428
+ months: cn(
429
+ "relative flex flex-col gap-4 md:flex-row",
430
+ defaultClassNames.months
431
+ ),
432
+ month: cn("flex w-full flex-col gap-4", defaultClassNames.month),
433
+ nav: cn(
434
+ "absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",
435
+ defaultClassNames.nav
436
+ ),
437
+ button_previous: cn(
438
+ buttonVariants({ variant: buttonVariant }),
439
+ "h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",
440
+ defaultClassNames.button_previous
441
+ ),
442
+ button_next: cn(
443
+ buttonVariants({ variant: buttonVariant }),
444
+ "h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",
445
+ defaultClassNames.button_next
446
+ ),
447
+ month_caption: cn(
448
+ "flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]",
449
+ defaultClassNames.month_caption
450
+ ),
451
+ dropdowns: cn(
452
+ "flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium",
453
+ defaultClassNames.dropdowns
454
+ ),
455
+ dropdown_root: cn(
456
+ "has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border",
457
+ defaultClassNames.dropdown_root
458
+ ),
459
+ dropdown: cn(
460
+ "bg-popover absolute inset-0 opacity-0",
461
+ defaultClassNames.dropdown
462
+ ),
463
+ caption_label: cn(
464
+ "select-none font-medium",
465
+ captionLayout === "label" ? "text-sm" : "[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5",
466
+ defaultClassNames.caption_label
467
+ ),
468
+ table: "w-full border-collapse",
469
+ weekdays: cn("flex", defaultClassNames.weekdays),
470
+ weekday: cn(
471
+ "text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal",
472
+ defaultClassNames.weekday
473
+ ),
474
+ week: cn("mt-2 flex w-full", defaultClassNames.week),
475
+ week_number_header: cn(
476
+ "w-[--cell-size] select-none",
477
+ defaultClassNames.week_number_header
478
+ ),
479
+ week_number: cn(
480
+ "text-muted-foreground select-none text-[0.8rem]",
481
+ defaultClassNames.week_number
482
+ ),
483
+ day: cn(
484
+ "group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md",
485
+ defaultClassNames.day
486
+ ),
487
+ range_start: cn(
488
+ "bg-accent rounded-l-md",
489
+ defaultClassNames.range_start
490
+ ),
491
+ range_middle: cn("rounded-none", defaultClassNames.range_middle),
492
+ range_end: cn("bg-accent rounded-r-md", defaultClassNames.range_end),
493
+ today: cn(
494
+ "bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",
495
+ defaultClassNames.today
496
+ ),
497
+ outside: cn(
498
+ "text-muted-foreground aria-selected:text-muted-foreground",
499
+ defaultClassNames.outside
500
+ ),
501
+ disabled: cn(
502
+ "text-muted-foreground opacity-50",
503
+ defaultClassNames.disabled
504
+ ),
505
+ hidden: cn("invisible", defaultClassNames.hidden),
506
+ ...classNames
507
+ },
508
+ components: {
509
+ Root: ({ className: className2, rootRef, ...props2 }) => {
510
+ return /* @__PURE__ */ jsx8(
511
+ "div",
512
+ {
513
+ className: cn(className2),
514
+ "data-slot": "calendar",
515
+ ref: rootRef,
516
+ ...props2
517
+ }
518
+ );
519
+ },
520
+ Chevron: ({ className: className2, orientation, ...props2 }) => {
521
+ if (orientation === "left") {
522
+ return /* @__PURE__ */ jsx8(ChevronLeftIcon, { className: cn("size-4", className2), ...props2 });
523
+ }
524
+ if (orientation === "right") {
525
+ return /* @__PURE__ */ jsx8(
526
+ ChevronRightIcon,
527
+ {
528
+ className: cn("size-4", className2),
529
+ ...props2
530
+ }
531
+ );
532
+ }
533
+ return /* @__PURE__ */ jsx8(ChevronDownIcon, { className: cn("size-4", className2), ...props2 });
534
+ },
535
+ DayButton: CalendarDayButton,
536
+ WeekNumber: ({ children, ...props2 }) => {
537
+ return /* @__PURE__ */ jsx8("td", { ...props2, children: /* @__PURE__ */ jsx8("div", { className: "flex size-[--cell-size] items-center justify-center text-center", children }) });
538
+ },
539
+ ...components
540
+ },
541
+ formatters: {
542
+ formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" }),
543
+ ...formatters
544
+ },
545
+ captionLayout,
546
+ showOutsideDays,
547
+ ...props
548
+ }
549
+ );
550
+ }
551
+ function CalendarDayButton({
552
+ className,
553
+ day,
554
+ modifiers,
555
+ ...props
556
+ }) {
557
+ const defaultClassNames = getDefaultClassNames();
558
+ const ref = React7.useRef(null);
559
+ React7.useEffect(() => {
560
+ if (modifiers.focused) ref.current?.focus();
561
+ }, [modifiers.focused]);
562
+ return /* @__PURE__ */ jsx8(
563
+ Button,
564
+ {
565
+ className: cn(
566
+ "data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md [&>span]:text-xs [&>span]:opacity-70",
567
+ defaultClassNames.day,
568
+ className
569
+ ),
570
+ "data-selected-single": modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle,
571
+ "data-day": day.date.toLocaleDateString(),
572
+ "data-range-end": modifiers.range_end,
573
+ "data-range-middle": modifiers.range_middle,
574
+ "data-range-start": modifiers.range_start,
575
+ ref,
576
+ size: "icon",
577
+ variant: "ghost",
578
+ ...props
579
+ }
580
+ );
581
+ }
582
+
583
+ // src/components/ui/card/index.tsx
584
+ import * as React8 from "react";
585
+ import { jsx as jsx9 } from "react/jsx-runtime";
586
+ var Card = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(
587
+ "div",
588
+ {
589
+ className: cn(
590
+ "bg-card text-card-foreground rounded-xl border shadow",
591
+ className
592
+ ),
593
+ ref,
594
+ ...props
595
+ }
596
+ ));
597
+ Card.displayName = "Card";
598
+ var CardHeader = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(
599
+ "div",
600
+ {
601
+ className: cn("flex flex-col space-y-1.5 p-6", className),
602
+ ref,
603
+ ...props
604
+ }
605
+ ));
606
+ CardHeader.displayName = "CardHeader";
607
+ var CardTitle = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(
608
+ "div",
609
+ {
610
+ className: cn("leading-none font-semibold tracking-tight", className),
611
+ ref,
612
+ ...props
613
+ }
614
+ ));
615
+ CardTitle.displayName = "CardTitle";
616
+ var CardDescription = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(
617
+ "div",
618
+ {
619
+ className: cn("text-muted-foreground text-sm", className),
620
+ ref,
621
+ ...props
622
+ }
623
+ ));
624
+ CardDescription.displayName = "CardDescription";
625
+ var CardContent = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9("div", { className: cn("p-6 pt-0", className), ref, ...props }));
626
+ CardContent.displayName = "CardContent";
627
+ var CardFooter = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(
628
+ "div",
629
+ {
630
+ className: cn("flex items-center p-6 pt-0", className),
631
+ ref,
632
+ ...props
633
+ }
634
+ ));
635
+ CardFooter.displayName = "CardFooter";
636
+
637
+ // src/components/ui/carousel/index.tsx
638
+ import useEmblaCarousel from "embla-carousel-react";
639
+ import { ArrowLeft, ArrowRight } from "lucide-react";
640
+ import * as React9 from "react";
641
+ import { jsx as jsx10, jsxs as jsxs4 } from "react/jsx-runtime";
642
+ var CarouselContext = React9.createContext(null);
643
+ function useCarousel() {
644
+ const context = React9.useContext(CarouselContext);
645
+ if (!context) {
646
+ throw new Error("useCarousel must be used within a <Carousel />");
647
+ }
648
+ return context;
649
+ }
650
+ var Carousel = React9.forwardRef(
651
+ ({
652
+ orientation = "horizontal",
653
+ opts,
654
+ setApi,
655
+ plugins,
656
+ className,
657
+ children,
658
+ ...props
659
+ }, ref) => {
660
+ const [carouselRef, api] = useEmblaCarousel(
661
+ {
662
+ ...opts,
663
+ axis: orientation === "horizontal" ? "x" : "y"
664
+ },
665
+ plugins
666
+ );
667
+ const [canScrollPrev, setCanScrollPrev] = React9.useState(false);
668
+ const [canScrollNext, setCanScrollNext] = React9.useState(false);
669
+ const onSelect = React9.useCallback((api2) => {
670
+ if (!api2) {
671
+ return;
672
+ }
673
+ setCanScrollPrev(api2.canScrollPrev());
674
+ setCanScrollNext(api2.canScrollNext());
675
+ }, []);
676
+ const scrollPrev = React9.useCallback(() => {
677
+ api?.scrollPrev();
678
+ }, [api]);
679
+ const scrollNext = React9.useCallback(() => {
680
+ api?.scrollNext();
681
+ }, [api]);
682
+ const handleKeyDown = React9.useCallback(
683
+ (event) => {
684
+ if (event.key === "ArrowLeft") {
685
+ event.preventDefault();
686
+ scrollPrev();
687
+ } else if (event.key === "ArrowRight") {
688
+ event.preventDefault();
689
+ scrollNext();
690
+ }
691
+ },
692
+ [scrollPrev, scrollNext]
693
+ );
694
+ React9.useEffect(() => {
695
+ if (!api || !setApi) {
696
+ return;
697
+ }
698
+ setApi(api);
699
+ }, [api, setApi]);
700
+ React9.useEffect(() => {
701
+ if (!api) {
702
+ return;
703
+ }
704
+ onSelect(api);
705
+ api.on("reInit", onSelect);
706
+ api.on("select", onSelect);
707
+ return () => {
708
+ api?.off("select", onSelect);
709
+ };
710
+ }, [api, onSelect]);
711
+ return /* @__PURE__ */ jsx10(
712
+ CarouselContext.Provider,
713
+ {
714
+ value: {
715
+ carouselRef,
716
+ api,
717
+ opts,
718
+ orientation: orientation || (opts?.axis === "y" ? "vertical" : "horizontal"),
719
+ scrollPrev,
720
+ scrollNext,
721
+ canScrollPrev,
722
+ canScrollNext
723
+ },
724
+ children: /* @__PURE__ */ jsx10(
725
+ "div",
726
+ {
727
+ "aria-roledescription": "carousel",
728
+ className: cn("relative", className),
729
+ onKeyDownCapture: handleKeyDown,
730
+ ref,
731
+ role: "region",
732
+ ...props,
733
+ children
734
+ }
735
+ )
736
+ }
737
+ );
738
+ }
739
+ );
740
+ Carousel.displayName = "Carousel";
741
+ var CarouselContent = React9.forwardRef(({ className, ...props }, ref) => {
742
+ const { carouselRef, orientation } = useCarousel();
743
+ return /* @__PURE__ */ jsx10("div", { className: "overflow-hidden", ref: carouselRef, children: /* @__PURE__ */ jsx10(
744
+ "div",
745
+ {
746
+ className: cn(
747
+ "flex",
748
+ orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
749
+ className
750
+ ),
751
+ ref,
752
+ ...props
753
+ }
754
+ ) });
755
+ });
756
+ CarouselContent.displayName = "CarouselContent";
757
+ var CarouselItem = React9.forwardRef(({ className, ...props }, ref) => {
758
+ const { orientation } = useCarousel();
759
+ return /* @__PURE__ */ jsx10(
760
+ "div",
761
+ {
762
+ className: cn(
763
+ "min-w-0 shrink-0 grow-0 basis-full",
764
+ orientation === "horizontal" ? "pl-4" : "pt-4",
765
+ className
766
+ ),
767
+ "aria-roledescription": "slide",
768
+ ref,
769
+ role: "group",
770
+ ...props
771
+ }
772
+ );
773
+ });
774
+ CarouselItem.displayName = "CarouselItem";
775
+ var CarouselPrevious = React9.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
776
+ const { orientation, scrollPrev, canScrollPrev } = useCarousel();
777
+ return /* @__PURE__ */ jsxs4(
778
+ Button,
779
+ {
780
+ className: cn(
781
+ "absolute h-8 w-8 rounded-full",
782
+ orientation === "horizontal" ? "top-1/2 -left-12 -translate-y-1/2" : "-top-12 left-1/2 -translate-x-1/2 rotate-90",
783
+ className
784
+ ),
785
+ disabled: !canScrollPrev,
786
+ onClick: scrollPrev,
787
+ ref,
788
+ size,
789
+ variant,
790
+ ...props,
791
+ children: [
792
+ /* @__PURE__ */ jsx10(ArrowLeft, { className: "h-4 w-4" }),
793
+ /* @__PURE__ */ jsx10("span", { className: "sr-only", children: "Previous slide" })
794
+ ]
795
+ }
796
+ );
797
+ });
798
+ CarouselPrevious.displayName = "CarouselPrevious";
799
+ var CarouselNext = React9.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
800
+ const { orientation, scrollNext, canScrollNext } = useCarousel();
801
+ return /* @__PURE__ */ jsxs4(
802
+ Button,
803
+ {
804
+ className: cn(
805
+ "absolute h-8 w-8 rounded-full",
806
+ orientation === "horizontal" ? "top-1/2 -right-12 -translate-y-1/2" : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90",
807
+ className
808
+ ),
809
+ disabled: !canScrollNext,
810
+ onClick: scrollNext,
811
+ ref,
812
+ size,
813
+ variant,
814
+ ...props,
815
+ children: [
816
+ /* @__PURE__ */ jsx10(ArrowRight, { className: "h-4 w-4" }),
817
+ /* @__PURE__ */ jsx10("span", { className: "sr-only", children: "Next slide" })
818
+ ]
819
+ }
820
+ );
821
+ });
822
+ CarouselNext.displayName = "CarouselNext";
823
+
824
+ // src/components/ui/checkbox/index.tsx
825
+ import { Check } from "lucide-react";
826
+ import * as React10 from "react";
827
+ import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
828
+ import { jsx as jsx11 } from "react/jsx-runtime";
829
+ var Checkbox = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
830
+ CheckboxPrimitive.Root,
831
+ {
832
+ className: cn(
833
+ "peer border-primary focus-visible:ring-ring data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground grid h-4 w-4 shrink-0 place-content-center rounded-sm border shadow focus-visible:ring-1 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50",
834
+ className
835
+ ),
836
+ ref,
837
+ ...props,
838
+ children: /* @__PURE__ */ jsx11(
839
+ CheckboxPrimitive.Indicator,
840
+ {
841
+ className: cn("grid place-content-center text-current"),
842
+ children: /* @__PURE__ */ jsx11(Check, { className: "h-4 w-4" })
843
+ }
844
+ )
845
+ }
846
+ ));
847
+ Checkbox.displayName = CheckboxPrimitive.Root.displayName;
848
+
849
+ // src/components/ui/collapsible/index.tsx
850
+ import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
851
+ var Collapsible = CollapsiblePrimitive.Root;
852
+ var CollapsibleTrigger2 = CollapsiblePrimitive.CollapsibleTrigger;
853
+ var CollapsibleContent2 = CollapsiblePrimitive.CollapsibleContent;
854
+
855
+ // src/components/ui/command/index.tsx
856
+ import { Command as CommandPrimitive } from "cmdk";
857
+ import { Search } from "lucide-react";
858
+ import * as React12 from "react";
859
+
860
+ // src/components/ui/dialog/index.tsx
861
+ import { X } from "lucide-react";
862
+ import * as React11 from "react";
863
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
864
+ import { jsx as jsx12, jsxs as jsxs5 } from "react/jsx-runtime";
865
+ var Dialog = DialogPrimitive.Root;
866
+ var DialogTrigger = DialogPrimitive.Trigger;
867
+ var DialogPortal = DialogPrimitive.Portal;
868
+ var DialogClose = DialogPrimitive.Close;
869
+ var DialogOverlay = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx12(
870
+ DialogPrimitive.Overlay,
871
+ {
872
+ className: cn(
873
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80",
874
+ className
875
+ ),
876
+ ref,
877
+ ...props
878
+ }
879
+ ));
880
+ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
881
+ var DialogContent = React11.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs5(DialogPortal, { children: [
882
+ /* @__PURE__ */ jsx12(DialogOverlay, {}),
883
+ /* @__PURE__ */ jsxs5(
884
+ DialogPrimitive.Content,
885
+ {
886
+ className: cn(
887
+ "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] fixed top-[50%] left-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border p-6 shadow-lg duration-200 sm:rounded-lg",
888
+ className
889
+ ),
890
+ ref,
891
+ ...props,
892
+ children: [
893
+ children,
894
+ /* @__PURE__ */ jsxs5(DialogPrimitive.Close, { className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none", children: [
895
+ /* @__PURE__ */ jsx12(X, { className: "h-4 w-4" }),
896
+ /* @__PURE__ */ jsx12("span", { className: "sr-only", children: "Close" })
897
+ ] })
898
+ ]
899
+ }
900
+ )
901
+ ] }));
902
+ DialogContent.displayName = DialogPrimitive.Content.displayName;
903
+ var DialogHeader = ({
904
+ className,
905
+ ...props
906
+ }) => /* @__PURE__ */ jsx12(
907
+ "div",
908
+ {
909
+ className: cn(
910
+ "flex flex-col space-y-1.5 text-center sm:text-left",
911
+ className
912
+ ),
913
+ ...props
914
+ }
915
+ );
916
+ DialogHeader.displayName = "DialogHeader";
917
+ var DialogFooter = ({
918
+ className,
919
+ ...props
920
+ }) => /* @__PURE__ */ jsx12(
921
+ "div",
922
+ {
923
+ className: cn(
924
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
925
+ className
926
+ ),
927
+ ...props
928
+ }
929
+ );
930
+ DialogFooter.displayName = "DialogFooter";
931
+ var DialogTitle = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx12(
932
+ DialogPrimitive.Title,
933
+ {
934
+ className: cn(
935
+ "text-lg leading-none font-semibold tracking-tight",
936
+ className
937
+ ),
938
+ ref,
939
+ ...props
940
+ }
941
+ ));
942
+ DialogTitle.displayName = DialogPrimitive.Title.displayName;
943
+ var DialogDescription = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx12(
944
+ DialogPrimitive.Description,
945
+ {
946
+ className: cn("text-muted-foreground text-sm", className),
947
+ ref,
948
+ ...props
949
+ }
950
+ ));
951
+ DialogDescription.displayName = DialogPrimitive.Description.displayName;
952
+
953
+ // src/components/ui/command/index.tsx
954
+ import { jsx as jsx13, jsxs as jsxs6 } from "react/jsx-runtime";
955
+ var Command = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx13(
956
+ CommandPrimitive,
957
+ {
958
+ className: cn(
959
+ "bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md",
960
+ className
961
+ ),
962
+ ref,
963
+ ...props
964
+ }
965
+ ));
966
+ Command.displayName = CommandPrimitive.displayName;
967
+ var CommandDialog = ({ children, ...props }) => {
968
+ return /* @__PURE__ */ jsx13(Dialog, { ...props, children: /* @__PURE__ */ jsx13(DialogContent, { className: "overflow-hidden p-0", children: /* @__PURE__ */ jsx13(Command, { className: "**:[[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5 **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group]]:px-2 **:[[cmdk-input]]:h-12 **:[[cmdk-item]]:px-2 **:[[cmdk-item]]:py-3", children }) }) });
969
+ };
970
+ var CommandInput = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs6("div", { className: "flex items-center border-b px-3", children: [
971
+ /* @__PURE__ */ jsx13(Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
972
+ /* @__PURE__ */ jsx13(
973
+ CommandPrimitive.Input,
974
+ {
975
+ className: cn(
976
+ "placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none disabled:cursor-not-allowed disabled:opacity-50",
977
+ className
978
+ ),
979
+ ref,
980
+ ...props
981
+ }
982
+ )
983
+ ] }));
984
+ CommandInput.displayName = CommandPrimitive.Input.displayName;
985
+ var CommandList = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx13(
986
+ CommandPrimitive.List,
987
+ {
988
+ className: cn("max-h-[300px] overflow-x-hidden overflow-y-auto", className),
989
+ ref,
990
+ ...props
991
+ }
992
+ ));
993
+ CommandList.displayName = CommandPrimitive.List.displayName;
994
+ var CommandEmpty = React12.forwardRef((props, ref) => /* @__PURE__ */ jsx13(
995
+ CommandPrimitive.Empty,
996
+ {
997
+ className: "py-6 text-center text-sm",
998
+ ref,
999
+ ...props
1000
+ }
1001
+ ));
1002
+ CommandEmpty.displayName = CommandPrimitive.Empty.displayName;
1003
+ var CommandGroup = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx13(
1004
+ CommandPrimitive.Group,
1005
+ {
1006
+ className: cn(
1007
+ "text-foreground **:[[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium",
1008
+ className
1009
+ ),
1010
+ ref,
1011
+ ...props
1012
+ }
1013
+ ));
1014
+ CommandGroup.displayName = CommandPrimitive.Group.displayName;
1015
+ var CommandSeparator = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx13(
1016
+ CommandPrimitive.Separator,
1017
+ {
1018
+ className: cn("bg-border -mx-1 h-px", className),
1019
+ ref,
1020
+ ...props
1021
+ }
1022
+ ));
1023
+ CommandSeparator.displayName = CommandPrimitive.Separator.displayName;
1024
+ var CommandItem = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx13(
1025
+ CommandPrimitive.Item,
1026
+ {
1027
+ className: cn(
1028
+ "data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
1029
+ className
1030
+ ),
1031
+ ref,
1032
+ ...props
1033
+ }
1034
+ ));
1035
+ CommandItem.displayName = CommandPrimitive.Item.displayName;
1036
+ var CommandShortcut = ({
1037
+ className,
1038
+ ...props
1039
+ }) => {
1040
+ return /* @__PURE__ */ jsx13(
1041
+ "span",
1042
+ {
1043
+ className: cn(
1044
+ "text-muted-foreground ml-auto text-xs tracking-widest",
1045
+ className
1046
+ ),
1047
+ ...props
1048
+ }
1049
+ );
1050
+ };
1051
+ CommandShortcut.displayName = "CommandShortcut";
1052
+
1053
+ // src/components/ui/context-menu/index.tsx
1054
+ import { Check as Check2, ChevronRight as ChevronRight2, Circle } from "lucide-react";
1055
+ import * as React13 from "react";
1056
+ import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
1057
+ import { jsx as jsx14, jsxs as jsxs7 } from "react/jsx-runtime";
1058
+ var ContextMenu = ContextMenuPrimitive.Root;
1059
+ var ContextMenuTrigger = ContextMenuPrimitive.Trigger;
1060
+ var ContextMenuGroup = ContextMenuPrimitive.Group;
1061
+ var ContextMenuPortal = ContextMenuPrimitive.Portal;
1062
+ var ContextMenuSub = ContextMenuPrimitive.Sub;
1063
+ var ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
1064
+ var ContextMenuSubTrigger = React13.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs7(
1065
+ ContextMenuPrimitive.SubTrigger,
1066
+ {
1067
+ className: cn(
1068
+ "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none",
1069
+ inset && "pl-8",
1070
+ className
1071
+ ),
1072
+ ref,
1073
+ ...props,
1074
+ children: [
1075
+ children,
1076
+ /* @__PURE__ */ jsx14(ChevronRight2, { className: "ml-auto h-4 w-4" })
1077
+ ]
1078
+ }
1079
+ ));
1080
+ ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
1081
+ var ContextMenuSubContent = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx14(
1082
+ ContextMenuPrimitive.SubContent,
1083
+ {
1084
+ className: cn(
1085
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-[--radix-context-menu-content-transform-origin] overflow-hidden rounded-md border p-1 shadow-lg",
1086
+ className
1087
+ ),
1088
+ ref,
1089
+ ...props
1090
+ }
1091
+ ));
1092
+ ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
1093
+ var ContextMenuContent = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx14(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx14(
1094
+ ContextMenuPrimitive.Content,
1095
+ {
1096
+ className: cn(
1097
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-[--radix-context-menu-content-available-height] min-w-[8rem] origin-[--radix-context-menu-content-transform-origin] overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",
1098
+ className
1099
+ ),
1100
+ ref,
1101
+ ...props
1102
+ }
1103
+ ) }));
1104
+ ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
1105
+ var ContextMenuItem = React13.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx14(
1106
+ ContextMenuPrimitive.Item,
1107
+ {
1108
+ className: cn(
1109
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-disabled:pointer-events-none data-disabled:opacity-50",
1110
+ inset && "pl-8",
1111
+ className
1112
+ ),
1113
+ ref,
1114
+ ...props
1115
+ }
1116
+ ));
1117
+ ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
1118
+ var ContextMenuCheckboxItem = React13.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs7(
1119
+ ContextMenuPrimitive.CheckboxItem,
1120
+ {
1121
+ className: cn(
1122
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-sm py-1.5 pr-2 pl-8 text-sm outline-none select-none data-disabled:pointer-events-none data-disabled:opacity-50",
1123
+ className
1124
+ ),
1125
+ checked,
1126
+ ref,
1127
+ ...props,
1128
+ children: [
1129
+ /* @__PURE__ */ jsx14("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx14(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx14(Check2, { className: "h-4 w-4" }) }) }),
1130
+ children
1131
+ ]
1132
+ }
1133
+ ));
1134
+ ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;
1135
+ var ContextMenuRadioItem = React13.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs7(
1136
+ ContextMenuPrimitive.RadioItem,
1137
+ {
1138
+ className: cn(
1139
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-sm py-1.5 pr-2 pl-8 text-sm outline-none select-none data-disabled:pointer-events-none data-disabled:opacity-50",
1140
+ className
1141
+ ),
1142
+ ref,
1143
+ ...props,
1144
+ children: [
1145
+ /* @__PURE__ */ jsx14("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx14(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx14(Circle, { className: "h-4 w-4 fill-current" }) }) }),
1146
+ children
1147
+ ]
1148
+ }
1149
+ ));
1150
+ ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
1151
+ var ContextMenuLabel = React13.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx14(
1152
+ ContextMenuPrimitive.Label,
1153
+ {
1154
+ className: cn(
1155
+ "text-foreground px-2 py-1.5 text-sm font-semibold",
1156
+ inset && "pl-8",
1157
+ className
1158
+ ),
1159
+ ref,
1160
+ ...props
1161
+ }
1162
+ ));
1163
+ ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
1164
+ var ContextMenuSeparator = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx14(
1165
+ ContextMenuPrimitive.Separator,
1166
+ {
1167
+ className: cn("bg-border -mx-1 my-1 h-px", className),
1168
+ ref,
1169
+ ...props
1170
+ }
1171
+ ));
1172
+ ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;
1173
+ var ContextMenuShortcut = ({
1174
+ className,
1175
+ ...props
1176
+ }) => {
1177
+ return /* @__PURE__ */ jsx14(
1178
+ "span",
1179
+ {
1180
+ className: cn(
1181
+ "text-muted-foreground ml-auto text-xs tracking-widest",
1182
+ className
1183
+ ),
1184
+ ...props
1185
+ }
1186
+ );
1187
+ };
1188
+ ContextMenuShortcut.displayName = "ContextMenuShortcut";
1189
+
1190
+ // src/components/ui/drawer/index.tsx
1191
+ import * as React14 from "react";
1192
+ import { Drawer as DrawerPrimitive } from "vaul";
1193
+ import { jsx as jsx15, jsxs as jsxs8 } from "react/jsx-runtime";
1194
+ var Drawer = ({
1195
+ shouldScaleBackground = true,
1196
+ ...props
1197
+ }) => /* @__PURE__ */ jsx15(
1198
+ DrawerPrimitive.Root,
1199
+ {
1200
+ shouldScaleBackground,
1201
+ ...props
1202
+ }
1203
+ );
1204
+ Drawer.displayName = "Drawer";
1205
+ var DrawerTrigger = DrawerPrimitive.Trigger;
1206
+ var DrawerPortal = DrawerPrimitive.Portal;
1207
+ var DrawerClose = DrawerPrimitive.Close;
1208
+ var DrawerOverlay = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15(
1209
+ DrawerPrimitive.Overlay,
1210
+ {
1211
+ className: cn("fixed inset-0 z-50 bg-black/80", className),
1212
+ ref,
1213
+ ...props
1214
+ }
1215
+ ));
1216
+ DrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;
1217
+ var DrawerContent = React14.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs8(DrawerPortal, { children: [
1218
+ /* @__PURE__ */ jsx15(DrawerOverlay, {}),
1219
+ /* @__PURE__ */ jsxs8(
1220
+ DrawerPrimitive.Content,
1221
+ {
1222
+ className: cn(
1223
+ "bg-background fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border",
1224
+ className
1225
+ ),
1226
+ ref,
1227
+ ...props,
1228
+ children: [
1229
+ /* @__PURE__ */ jsx15("div", { className: "bg-muted mx-auto mt-4 h-2 w-[100px] rounded-full" }),
1230
+ children
1231
+ ]
1232
+ }
1233
+ )
1234
+ ] }));
1235
+ DrawerContent.displayName = "DrawerContent";
1236
+ var DrawerHeader = ({
1237
+ className,
1238
+ ...props
1239
+ }) => /* @__PURE__ */ jsx15(
1240
+ "div",
1241
+ {
1242
+ className: cn("grid gap-1.5 p-4 text-center sm:text-left", className),
1243
+ ...props
1244
+ }
1245
+ );
1246
+ DrawerHeader.displayName = "DrawerHeader";
1247
+ var DrawerFooter = ({
1248
+ className,
1249
+ ...props
1250
+ }) => /* @__PURE__ */ jsx15(
1251
+ "div",
1252
+ {
1253
+ className: cn("mt-auto flex flex-col gap-2 p-4", className),
1254
+ ...props
1255
+ }
1256
+ );
1257
+ DrawerFooter.displayName = "DrawerFooter";
1258
+ var DrawerTitle = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15(
1259
+ DrawerPrimitive.Title,
1260
+ {
1261
+ className: cn(
1262
+ "text-lg leading-none font-semibold tracking-tight",
1263
+ className
1264
+ ),
1265
+ ref,
1266
+ ...props
1267
+ }
1268
+ ));
1269
+ DrawerTitle.displayName = DrawerPrimitive.Title.displayName;
1270
+ var DrawerDescription = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15(
1271
+ DrawerPrimitive.Description,
1272
+ {
1273
+ className: cn("text-muted-foreground text-sm", className),
1274
+ ref,
1275
+ ...props
1276
+ }
1277
+ ));
1278
+ DrawerDescription.displayName = DrawerPrimitive.Description.displayName;
1279
+
1280
+ // src/components/ui/dropdown-menu/index.tsx
1281
+ import { Check as Check3, ChevronRight as ChevronRight3, Circle as Circle2 } from "lucide-react";
1282
+ import * as React15 from "react";
1283
+ import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
1284
+ import { jsx as jsx16, jsxs as jsxs9 } from "react/jsx-runtime";
1285
+ var DropdownMenu = DropdownMenuPrimitive.Root;
1286
+ var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
1287
+ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
1288
+ var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
1289
+ var DropdownMenuSub = DropdownMenuPrimitive.Sub;
1290
+ var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
1291
+ var DropdownMenuSubTrigger = React15.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs9(
1292
+ DropdownMenuPrimitive.SubTrigger,
1293
+ {
1294
+ className: cn(
1295
+ "focus:bg-accent data-[state=open]:bg-accent flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none select-none [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
1296
+ inset && "pl-8",
1297
+ className
1298
+ ),
1299
+ ref,
1300
+ ...props,
1301
+ children: [
1302
+ children,
1303
+ /* @__PURE__ */ jsx16(ChevronRight3, { className: "ml-auto" })
1304
+ ]
1305
+ }
1306
+ ));
1307
+ DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
1308
+ var DropdownMenuSubContent = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx16(
1309
+ DropdownMenuPrimitive.SubContent,
1310
+ {
1311
+ className: cn(
1312
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-[--radix-dropdown-menu-content-transform-origin] overflow-hidden rounded-md border p-1 shadow-lg",
1313
+ className
1314
+ ),
1315
+ ref,
1316
+ ...props
1317
+ }
1318
+ ));
1319
+ DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
1320
+ var DropdownMenuContent = React15.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx16(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx16(
1321
+ DropdownMenuPrimitive.Content,
1322
+ {
1323
+ className: cn(
1324
+ "bg-popover text-popover-foreground z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",
1325
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]",
1326
+ className
1327
+ ),
1328
+ ref,
1329
+ sideOffset,
1330
+ ...props
1331
+ }
1332
+ ) }));
1333
+ DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
1334
+ var DropdownMenuItem = React15.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx16(
1335
+ DropdownMenuPrimitive.Item,
1336
+ {
1337
+ className: cn(
1338
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm transition-colors outline-none select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
1339
+ inset && "pl-8",
1340
+ className
1341
+ ),
1342
+ ref,
1343
+ ...props
1344
+ }
1345
+ ));
1346
+ DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
1347
+ var DropdownMenuCheckboxItem = React15.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs9(
1348
+ DropdownMenuPrimitive.CheckboxItem,
1349
+ {
1350
+ className: cn(
1351
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-sm py-1.5 pr-2 pl-8 text-sm transition-colors outline-none select-none data-disabled:pointer-events-none data-disabled:opacity-50",
1352
+ className
1353
+ ),
1354
+ checked,
1355
+ ref,
1356
+ ...props,
1357
+ children: [
1358
+ /* @__PURE__ */ jsx16("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx16(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx16(Check3, { className: "h-4 w-4" }) }) }),
1359
+ children
1360
+ ]
1361
+ }
1362
+ ));
1363
+ DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
1364
+ var DropdownMenuRadioItem = React15.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs9(
1365
+ DropdownMenuPrimitive.RadioItem,
1366
+ {
1367
+ className: cn(
1368
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-sm py-1.5 pr-2 pl-8 text-sm transition-colors outline-none select-none data-disabled:pointer-events-none data-disabled:opacity-50",
1369
+ className
1370
+ ),
1371
+ ref,
1372
+ ...props,
1373
+ children: [
1374
+ /* @__PURE__ */ jsx16("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx16(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx16(Circle2, { className: "h-2 w-2 fill-current" }) }) }),
1375
+ children
1376
+ ]
1377
+ }
1378
+ ));
1379
+ DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
1380
+ var DropdownMenuLabel = React15.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx16(
1381
+ DropdownMenuPrimitive.Label,
1382
+ {
1383
+ className: cn(
1384
+ "px-2 py-1.5 text-sm font-semibold",
1385
+ inset && "pl-8",
1386
+ className
1387
+ ),
1388
+ ref,
1389
+ ...props
1390
+ }
1391
+ ));
1392
+ DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
1393
+ var DropdownMenuSeparator = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx16(
1394
+ DropdownMenuPrimitive.Separator,
1395
+ {
1396
+ className: cn("bg-muted -mx-1 my-1 h-px", className),
1397
+ ref,
1398
+ ...props
1399
+ }
1400
+ ));
1401
+ DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
1402
+ var DropdownMenuShortcut = ({
1403
+ className,
1404
+ ...props
1405
+ }) => {
1406
+ return /* @__PURE__ */ jsx16(
1407
+ "span",
1408
+ {
1409
+ className: cn("ml-auto text-xs tracking-widest opacity-60", className),
1410
+ ...props
1411
+ }
1412
+ );
1413
+ };
1414
+ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
1415
+
1416
+ // src/components/ui/form/index.tsx
1417
+ import * as React17 from "react";
1418
+ import {
1419
+ Controller,
1420
+ FormProvider,
1421
+ useFormContext
1422
+ } from "react-hook-form";
1423
+
1424
+ // src/components/ui/label/index.tsx
1425
+ import { cva as cva4 } from "class-variance-authority";
1426
+ import * as React16 from "react";
1427
+ import * as LabelPrimitive from "@radix-ui/react-label";
1428
+ import { jsx as jsx17 } from "react/jsx-runtime";
1429
+ var labelVariants = cva4(
1430
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
1431
+ );
1432
+ var Label3 = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx17(
1433
+ LabelPrimitive.Root,
1434
+ {
1435
+ className: cn(labelVariants(), className),
1436
+ ref,
1437
+ ...props
1438
+ }
1439
+ ));
1440
+ Label3.displayName = LabelPrimitive.Root.displayName;
1441
+
1442
+ // src/components/ui/form/index.tsx
1443
+ import { Slot as Slot3 } from "@radix-ui/react-slot";
1444
+ import { jsx as jsx18 } from "react/jsx-runtime";
1445
+ var Form = FormProvider;
1446
+ var FormFieldContext = React17.createContext(null);
1447
+ var FormField = ({
1448
+ ...props
1449
+ }) => {
1450
+ return /* @__PURE__ */ jsx18(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx18(Controller, { ...props }) });
1451
+ };
1452
+ var useFormField = () => {
1453
+ const fieldContext = React17.useContext(FormFieldContext);
1454
+ const itemContext = React17.useContext(FormItemContext);
1455
+ const { getFieldState, formState } = useFormContext();
1456
+ if (!fieldContext) {
1457
+ throw new Error("useFormField should be used within <FormField>");
1458
+ }
1459
+ if (!itemContext) {
1460
+ throw new Error("useFormField should be used within <FormItem>");
1461
+ }
1462
+ const fieldState = getFieldState(fieldContext.name, formState);
1463
+ const { id: id2 } = itemContext;
1464
+ return {
1465
+ id: id2,
1466
+ name: fieldContext.name,
1467
+ formItemId: `${id2}-form-item`,
1468
+ formDescriptionId: `${id2}-form-item-description`,
1469
+ formMessageId: `${id2}-form-item-message`,
1470
+ ...fieldState
1471
+ };
1472
+ };
1473
+ var FormItemContext = React17.createContext(null);
1474
+ var FormItem = React17.forwardRef(({ className, ...props }, ref) => {
1475
+ const id2 = React17.useId();
1476
+ return /* @__PURE__ */ jsx18(FormItemContext.Provider, { value: { id: id2 }, children: /* @__PURE__ */ jsx18("div", { className: cn("space-y-2", className), ref, ...props }) });
1477
+ });
1478
+ FormItem.displayName = "FormItem";
1479
+ var FormLabel = React17.forwardRef(({ className, ...props }, ref) => {
1480
+ const { error, formItemId } = useFormField();
1481
+ return /* @__PURE__ */ jsx18(
1482
+ Label3,
1483
+ {
1484
+ className: cn(error && "text-destructive", className),
1485
+ htmlFor: formItemId,
1486
+ ref,
1487
+ ...props
1488
+ }
1489
+ );
1490
+ });
1491
+ FormLabel.displayName = "FormLabel";
1492
+ var FormControl = React17.forwardRef(({ ...props }, ref) => {
1493
+ const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
1494
+ return /* @__PURE__ */ jsx18(
1495
+ Slot3,
1496
+ {
1497
+ "aria-describedby": !error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`,
1498
+ "aria-invalid": !!error,
1499
+ id: formItemId,
1500
+ ref,
1501
+ ...props
1502
+ }
1503
+ );
1504
+ });
1505
+ FormControl.displayName = "FormControl";
1506
+ var FormDescription = React17.forwardRef(({ className, ...props }, ref) => {
1507
+ const { formDescriptionId } = useFormField();
1508
+ return /* @__PURE__ */ jsx18(
1509
+ "p",
1510
+ {
1511
+ className: cn("text-muted-foreground text-[0.8rem]", className),
1512
+ id: formDescriptionId,
1513
+ ref,
1514
+ ...props
1515
+ }
1516
+ );
1517
+ });
1518
+ FormDescription.displayName = "FormDescription";
1519
+ var FormMessage = React17.forwardRef(({ className, children, ...props }, ref) => {
1520
+ const { error, formMessageId } = useFormField();
1521
+ const body = error ? String(error?.message ?? "") : children;
1522
+ if (!body) {
1523
+ return null;
1524
+ }
1525
+ return /* @__PURE__ */ jsx18(
1526
+ "p",
1527
+ {
1528
+ className: cn("text-destructive text-[0.8rem] font-medium", className),
1529
+ id: formMessageId,
1530
+ ref,
1531
+ ...props,
1532
+ children: body
1533
+ }
1534
+ );
1535
+ });
1536
+ FormMessage.displayName = "FormMessage";
1537
+
1538
+ // src/components/ui/hover-card/index.tsx
1539
+ import * as React18 from "react";
1540
+ import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
1541
+ import { jsx as jsx19 } from "react/jsx-runtime";
1542
+ var HoverCard = HoverCardPrimitive.Root;
1543
+ var HoverCardTrigger = HoverCardPrimitive.Trigger;
1544
+ var HoverCardContent = React18.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx19(
1545
+ HoverCardPrimitive.Content,
1546
+ {
1547
+ className: cn(
1548
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 origin-[--radix-hover-card-content-transform-origin] rounded-md border p-4 shadow-md outline-none",
1549
+ className
1550
+ ),
1551
+ align,
1552
+ ref,
1553
+ sideOffset,
1554
+ ...props
1555
+ }
1556
+ ));
1557
+ HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
1558
+
1559
+ // src/components/ui/input/index.tsx
1560
+ import * as React19 from "react";
1561
+ import { jsx as jsx20 } from "react/jsx-runtime";
1562
+ var Input = React19.forwardRef(
1563
+ ({ className, type, ...props }, ref) => {
1564
+ return /* @__PURE__ */ jsx20(
1565
+ "input",
1566
+ {
1567
+ className: cn(
1568
+ "border-input file:text-foreground placeholder:text-muted-foreground focus-visible:ring-ring flex h-9 w-full rounded-md border bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:ring-1 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
1569
+ className
1570
+ ),
1571
+ ref,
1572
+ type,
1573
+ ...props
1574
+ }
1575
+ );
1576
+ }
1577
+ );
1578
+ Input.displayName = "Input";
1579
+
1580
+ // src/components/ui/menubar/index.tsx
1581
+ import { Check as Check4, ChevronRight as ChevronRight4, Circle as Circle3 } from "lucide-react";
1582
+ import * as React20 from "react";
1583
+ import * as MenubarPrimitive from "@radix-ui/react-menubar";
1584
+ import { jsx as jsx21, jsxs as jsxs10 } from "react/jsx-runtime";
1585
+ function MenubarMenu({
1586
+ ...props
1587
+ }) {
1588
+ return /* @__PURE__ */ jsx21(MenubarPrimitive.Menu, { ...props });
1589
+ }
1590
+ function MenubarGroup({
1591
+ ...props
1592
+ }) {
1593
+ return /* @__PURE__ */ jsx21(MenubarPrimitive.Group, { ...props });
1594
+ }
1595
+ function MenubarPortal({
1596
+ ...props
1597
+ }) {
1598
+ return /* @__PURE__ */ jsx21(MenubarPrimitive.Portal, { ...props });
1599
+ }
1600
+ function MenubarRadioGroup({
1601
+ ...props
1602
+ }) {
1603
+ return /* @__PURE__ */ jsx21(MenubarPrimitive.RadioGroup, { ...props });
1604
+ }
1605
+ function MenubarSub({
1606
+ ...props
1607
+ }) {
1608
+ return /* @__PURE__ */ jsx21(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
1609
+ }
1610
+ var Menubar = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx21(
1611
+ MenubarPrimitive.Root,
1612
+ {
1613
+ className: cn(
1614
+ "bg-background flex h-9 items-center space-x-1 rounded-md border p-1 shadow-sm",
1615
+ className
1616
+ ),
1617
+ ref,
1618
+ ...props
1619
+ }
1620
+ ));
1621
+ Menubar.displayName = MenubarPrimitive.Root.displayName;
1622
+ var MenubarTrigger = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx21(
1623
+ MenubarPrimitive.Trigger,
1624
+ {
1625
+ className: cn(
1626
+ "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-3 py-1 text-sm font-medium outline-none select-none",
1627
+ className
1628
+ ),
1629
+ ref,
1630
+ ...props
1631
+ }
1632
+ ));
1633
+ MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;
1634
+ var MenubarSubTrigger = React20.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs10(
1635
+ MenubarPrimitive.SubTrigger,
1636
+ {
1637
+ className: cn(
1638
+ "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none",
1639
+ inset && "pl-8",
1640
+ className
1641
+ ),
1642
+ ref,
1643
+ ...props,
1644
+ children: [
1645
+ children,
1646
+ /* @__PURE__ */ jsx21(ChevronRight4, { className: "ml-auto h-4 w-4" })
1647
+ ]
1648
+ }
1649
+ ));
1650
+ MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;
1651
+ var MenubarSubContent = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx21(
1652
+ MenubarPrimitive.SubContent,
1653
+ {
1654
+ className: cn(
1655
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-[--radix-menubar-content-transform-origin] overflow-hidden rounded-md border p-1 shadow-lg",
1656
+ className
1657
+ ),
1658
+ ref,
1659
+ ...props
1660
+ }
1661
+ ));
1662
+ MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;
1663
+ var MenubarContent = React20.forwardRef(
1664
+ ({ className, align = "start", alignOffset = -4, sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx21(MenubarPrimitive.Portal, { children: /* @__PURE__ */ jsx21(
1665
+ MenubarPrimitive.Content,
1666
+ {
1667
+ className: cn(
1668
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[12rem] origin-[--radix-menubar-content-transform-origin] overflow-hidden rounded-md border p-1 shadow-md",
1669
+ className
1670
+ ),
1671
+ align,
1672
+ alignOffset,
1673
+ ref,
1674
+ sideOffset,
1675
+ ...props
1676
+ }
1677
+ ) })
1678
+ );
1679
+ MenubarContent.displayName = MenubarPrimitive.Content.displayName;
1680
+ var MenubarItem = React20.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx21(
1681
+ MenubarPrimitive.Item,
1682
+ {
1683
+ className: cn(
1684
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-disabled:pointer-events-none data-disabled:opacity-50",
1685
+ inset && "pl-8",
1686
+ className
1687
+ ),
1688
+ ref,
1689
+ ...props
1690
+ }
1691
+ ));
1692
+ MenubarItem.displayName = MenubarPrimitive.Item.displayName;
1693
+ var MenubarCheckboxItem = React20.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs10(
1694
+ MenubarPrimitive.CheckboxItem,
1695
+ {
1696
+ className: cn(
1697
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-sm py-1.5 pr-2 pl-8 text-sm outline-none select-none data-disabled:pointer-events-none data-disabled:opacity-50",
1698
+ className
1699
+ ),
1700
+ checked,
1701
+ ref,
1702
+ ...props,
1703
+ children: [
1704
+ /* @__PURE__ */ jsx21("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx21(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx21(Check4, { className: "h-4 w-4" }) }) }),
1705
+ children
1706
+ ]
1707
+ }
1708
+ ));
1709
+ MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;
1710
+ var MenubarRadioItem = React20.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs10(
1711
+ MenubarPrimitive.RadioItem,
1712
+ {
1713
+ className: cn(
1714
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-sm py-1.5 pr-2 pl-8 text-sm outline-none select-none data-disabled:pointer-events-none data-disabled:opacity-50",
1715
+ className
1716
+ ),
1717
+ ref,
1718
+ ...props,
1719
+ children: [
1720
+ /* @__PURE__ */ jsx21("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx21(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx21(Circle3, { className: "h-4 w-4 fill-current" }) }) }),
1721
+ children
1722
+ ]
1723
+ }
1724
+ ));
1725
+ MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;
1726
+ var MenubarLabel = React20.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx21(
1727
+ MenubarPrimitive.Label,
1728
+ {
1729
+ className: cn(
1730
+ "px-2 py-1.5 text-sm font-semibold",
1731
+ inset && "pl-8",
1732
+ className
1733
+ ),
1734
+ ref,
1735
+ ...props
1736
+ }
1737
+ ));
1738
+ MenubarLabel.displayName = MenubarPrimitive.Label.displayName;
1739
+ var MenubarSeparator = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx21(
1740
+ MenubarPrimitive.Separator,
1741
+ {
1742
+ className: cn("bg-muted -mx-1 my-1 h-px", className),
1743
+ ref,
1744
+ ...props
1745
+ }
1746
+ ));
1747
+ MenubarSeparator.displayName = MenubarPrimitive.Separator.displayName;
1748
+ var MenubarShortcut = ({
1749
+ className,
1750
+ ...props
1751
+ }) => {
1752
+ return /* @__PURE__ */ jsx21(
1753
+ "span",
1754
+ {
1755
+ className: cn(
1756
+ "text-muted-foreground ml-auto text-xs tracking-widest",
1757
+ className
1758
+ ),
1759
+ ...props
1760
+ }
1761
+ );
1762
+ };
1763
+ MenubarShortcut.displayname = "MenubarShortcut";
1764
+
1765
+ // src/components/ui/navigation-menu/index.tsx
1766
+ import { cva as cva5 } from "class-variance-authority";
1767
+ import { ChevronDown as ChevronDown2 } from "lucide-react";
1768
+ import * as React21 from "react";
1769
+ import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
1770
+ import { jsx as jsx22, jsxs as jsxs11 } from "react/jsx-runtime";
1771
+ var NavigationMenu = React21.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs11(
1772
+ NavigationMenuPrimitive.Root,
1773
+ {
1774
+ className: cn(
1775
+ "relative z-10 flex max-w-max flex-1 items-center justify-center",
1776
+ className
1777
+ ),
1778
+ ref,
1779
+ ...props,
1780
+ children: [
1781
+ children,
1782
+ /* @__PURE__ */ jsx22(NavigationMenuViewport, {})
1783
+ ]
1784
+ }
1785
+ ));
1786
+ NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
1787
+ var NavigationMenuList = React21.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx22(
1788
+ NavigationMenuPrimitive.List,
1789
+ {
1790
+ className: cn(
1791
+ "group flex flex-1 list-none items-center justify-center space-x-1",
1792
+ className
1793
+ ),
1794
+ ref,
1795
+ ...props
1796
+ }
1797
+ ));
1798
+ NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;
1799
+ var NavigationMenuItem = NavigationMenuPrimitive.Item;
1800
+ var navigationMenuTriggerStyle = cva5(
1801
+ "group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=open]:text-accent-foreground data-[state=open]:bg-accent/50 data-[state=open]:hover:bg-accent data-[state=open]:focus:bg-accent"
1802
+ );
1803
+ var NavigationMenuTrigger = React21.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs11(
1804
+ NavigationMenuPrimitive.Trigger,
1805
+ {
1806
+ className: cn(navigationMenuTriggerStyle(), "group", className),
1807
+ ref,
1808
+ ...props,
1809
+ children: [
1810
+ children,
1811
+ " ",
1812
+ /* @__PURE__ */ jsx22(
1813
+ ChevronDown2,
1814
+ {
1815
+ "aria-hidden": "true",
1816
+ className: "relative top-px ml-1 h-3 w-3 transition duration-300 group-data-[state=open]:rotate-180"
1817
+ }
1818
+ )
1819
+ ]
1820
+ }
1821
+ ));
1822
+ NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
1823
+ var NavigationMenuContent = React21.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx22(
1824
+ NavigationMenuPrimitive.Content,
1825
+ {
1826
+ className: cn(
1827
+ "data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full md:absolute md:w-auto",
1828
+ className
1829
+ ),
1830
+ ref,
1831
+ ...props
1832
+ }
1833
+ ));
1834
+ NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
1835
+ var NavigationMenuLink = NavigationMenuPrimitive.Link;
1836
+ var NavigationMenuViewport = React21.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx22("div", { className: cn("absolute top-full left-0 flex justify-center"), children: /* @__PURE__ */ jsx22(
1837
+ NavigationMenuPrimitive.Viewport,
1838
+ {
1839
+ className: cn(
1840
+ "origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]",
1841
+ className
1842
+ ),
1843
+ ref,
1844
+ ...props
1845
+ }
1846
+ ) }));
1847
+ NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;
1848
+ var NavigationMenuIndicator = React21.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx22(
1849
+ NavigationMenuPrimitive.Indicator,
1850
+ {
1851
+ className: cn(
1852
+ "data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-1 flex h-1.5 items-end justify-center overflow-hidden",
1853
+ className
1854
+ ),
1855
+ ref,
1856
+ ...props,
1857
+ children: /* @__PURE__ */ jsx22("div", { className: "bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md" })
1858
+ }
1859
+ ));
1860
+ NavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName;
1861
+
1862
+ // src/components/ui/pagination/index.tsx
1863
+ import { ChevronLeft, ChevronRight as ChevronRight5, MoreHorizontal as MoreHorizontal2 } from "lucide-react";
1864
+ import * as React22 from "react";
1865
+ import { jsx as jsx23, jsxs as jsxs12 } from "react/jsx-runtime";
1866
+ var Pagination = ({ className, ...props }) => /* @__PURE__ */ jsx23(
1867
+ "nav",
1868
+ {
1869
+ "aria-label": "pagination",
1870
+ className: cn("mx-auto flex w-full justify-center", className),
1871
+ role: "navigation",
1872
+ ...props
1873
+ }
1874
+ );
1875
+ Pagination.displayName = "Pagination";
1876
+ var PaginationContent = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx23(
1877
+ "ul",
1878
+ {
1879
+ className: cn("flex flex-row items-center gap-1", className),
1880
+ ref,
1881
+ ...props
1882
+ }
1883
+ ));
1884
+ PaginationContent.displayName = "PaginationContent";
1885
+ var PaginationItem = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx23("li", { className: cn("", className), ref, ...props }));
1886
+ PaginationItem.displayName = "PaginationItem";
1887
+ var PaginationLink = ({
1888
+ className,
1889
+ isActive,
1890
+ size = "icon",
1891
+ ...props
1892
+ }) => /* @__PURE__ */ jsx23(
1893
+ "a",
1894
+ {
1895
+ className: cn(
1896
+ buttonVariants({
1897
+ variant: isActive ? "outline" : "ghost",
1898
+ size
1899
+ }),
1900
+ className
1901
+ ),
1902
+ "aria-current": isActive ? "page" : void 0,
1903
+ ...props
1904
+ }
1905
+ );
1906
+ PaginationLink.displayName = "PaginationLink";
1907
+ var PaginationPrevious = ({
1908
+ className,
1909
+ ...props
1910
+ }) => /* @__PURE__ */ jsxs12(
1911
+ PaginationLink,
1912
+ {
1913
+ "aria-label": "Go to previous page",
1914
+ className: cn("gap-1 pl-2.5", className),
1915
+ size: "default",
1916
+ ...props,
1917
+ children: [
1918
+ /* @__PURE__ */ jsx23(ChevronLeft, { className: "h-4 w-4" }),
1919
+ /* @__PURE__ */ jsx23("span", { children: "Previous" })
1920
+ ]
1921
+ }
1922
+ );
1923
+ PaginationPrevious.displayName = "PaginationPrevious";
1924
+ var PaginationNext = ({
1925
+ className,
1926
+ ...props
1927
+ }) => /* @__PURE__ */ jsxs12(
1928
+ PaginationLink,
1929
+ {
1930
+ "aria-label": "Go to next page",
1931
+ className: cn("gap-1 pr-2.5", className),
1932
+ size: "default",
1933
+ ...props,
1934
+ children: [
1935
+ /* @__PURE__ */ jsx23("span", { children: "Next" }),
1936
+ /* @__PURE__ */ jsx23(ChevronRight5, { className: "h-4 w-4" })
1937
+ ]
1938
+ }
1939
+ );
1940
+ PaginationNext.displayName = "PaginationNext";
1941
+ var PaginationEllipsis = ({
1942
+ className,
1943
+ ...props
1944
+ }) => /* @__PURE__ */ jsxs12(
1945
+ "span",
1946
+ {
1947
+ className: cn("flex h-9 w-9 items-center justify-center", className),
1948
+ "aria-hidden": true,
1949
+ ...props,
1950
+ children: [
1951
+ /* @__PURE__ */ jsx23(MoreHorizontal2, { className: "h-4 w-4" }),
1952
+ /* @__PURE__ */ jsx23("span", { className: "sr-only", children: "More pages" })
1953
+ ]
1954
+ }
1955
+ );
1956
+ PaginationEllipsis.displayName = "PaginationEllipsis";
1957
+
1958
+ // src/components/ui/popover/index.tsx
1959
+ import * as React23 from "react";
1960
+ import * as PopoverPrimitive from "@radix-ui/react-popover";
1961
+ import { jsx as jsx24 } from "react/jsx-runtime";
1962
+ var Popover = PopoverPrimitive.Root;
1963
+ var PopoverTrigger = PopoverPrimitive.Trigger;
1964
+ var PopoverAnchor = PopoverPrimitive.Anchor;
1965
+ var PopoverContent = React23.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx24(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx24(
1966
+ PopoverPrimitive.Content,
1967
+ {
1968
+ className: cn(
1969
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-[--radix-popover-content-transform-origin] rounded-md border p-4 shadow-md outline-none",
1970
+ className
1971
+ ),
1972
+ align,
1973
+ ref,
1974
+ sideOffset,
1975
+ ...props
1976
+ }
1977
+ ) }));
1978
+ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
1979
+
1980
+ // src/components/ui/progress/index.tsx
1981
+ import * as React24 from "react";
1982
+ import * as ProgressPrimitive from "@radix-ui/react-progress";
1983
+ import { jsx as jsx25 } from "react/jsx-runtime";
1984
+ var Progress = React24.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ jsx25(
1985
+ ProgressPrimitive.Root,
1986
+ {
1987
+ className: cn(
1988
+ "bg-primary/20 relative h-2 w-full overflow-hidden rounded-full",
1989
+ className
1990
+ ),
1991
+ ref,
1992
+ ...props,
1993
+ children: /* @__PURE__ */ jsx25(
1994
+ ProgressPrimitive.Indicator,
1995
+ {
1996
+ className: "bg-primary h-full w-full flex-1 transition-all",
1997
+ style: { transform: `translateX(-${100 - (value || 0)}%)` }
1998
+ }
1999
+ )
2000
+ }
2001
+ ));
2002
+ Progress.displayName = ProgressPrimitive.Root.displayName;
2003
+
2004
+ // src/components/ui/radio-group/index.tsx
2005
+ import { Circle as Circle4 } from "lucide-react";
2006
+ import * as React25 from "react";
2007
+ import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
2008
+ import { jsx as jsx26 } from "react/jsx-runtime";
2009
+ var RadioGroup4 = React25.forwardRef(({ className, ...props }, ref) => {
2010
+ return /* @__PURE__ */ jsx26(
2011
+ RadioGroupPrimitive.Root,
2012
+ {
2013
+ className: cn("grid gap-2", className),
2014
+ ...props,
2015
+ ref
2016
+ }
2017
+ );
2018
+ });
2019
+ RadioGroup4.displayName = RadioGroupPrimitive.Root.displayName;
2020
+ var RadioGroupItem = React25.forwardRef(({ className, ...props }, ref) => {
2021
+ return /* @__PURE__ */ jsx26(
2022
+ RadioGroupPrimitive.Item,
2023
+ {
2024
+ className: cn(
2025
+ "border-primary text-primary focus-visible:ring-ring aspect-square h-4 w-4 rounded-full border shadow focus:outline-none focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50",
2026
+ className
2027
+ ),
2028
+ ref,
2029
+ ...props,
2030
+ children: /* @__PURE__ */ jsx26(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx26(Circle4, { className: "fill-primary h-3.5 w-3.5" }) })
2031
+ }
2032
+ );
2033
+ });
2034
+ RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
2035
+
2036
+ // src/components/ui/scroll-area/index.tsx
2037
+ import * as React26 from "react";
2038
+ import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
2039
+ import { jsx as jsx27, jsxs as jsxs13 } from "react/jsx-runtime";
2040
+ var ScrollArea = React26.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs13(
2041
+ ScrollAreaPrimitive.Root,
2042
+ {
2043
+ className: cn("relative overflow-hidden", className),
2044
+ ref,
2045
+ ...props,
2046
+ children: [
2047
+ /* @__PURE__ */ jsx27(ScrollAreaPrimitive.Viewport, { className: "h-full w-full rounded-[inherit]", children }),
2048
+ /* @__PURE__ */ jsx27(ScrollBar, {}),
2049
+ /* @__PURE__ */ jsx27(ScrollAreaPrimitive.Corner, {})
2050
+ ]
2051
+ }
2052
+ ));
2053
+ ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
2054
+ var ScrollBar = React26.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx27(
2055
+ ScrollAreaPrimitive.ScrollAreaScrollbar,
2056
+ {
2057
+ className: cn(
2058
+ "flex touch-none transition-colors select-none",
2059
+ orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent p-px",
2060
+ orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-px",
2061
+ className
2062
+ ),
2063
+ orientation,
2064
+ ref,
2065
+ ...props,
2066
+ children: /* @__PURE__ */ jsx27(ScrollAreaPrimitive.ScrollAreaThumb, { className: "bg-border relative flex-1 rounded-full" })
2067
+ }
2068
+ ));
2069
+ ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
2070
+
2071
+ // src/components/ui/select/index.tsx
2072
+ import { Check as Check5, ChevronDown as ChevronDown3, ChevronUp } from "lucide-react";
2073
+ import * as React27 from "react";
2074
+ import * as SelectPrimitive from "@radix-ui/react-select";
2075
+ import { jsx as jsx28, jsxs as jsxs14 } from "react/jsx-runtime";
2076
+ var Select = SelectPrimitive.Root;
2077
+ var SelectGroup = SelectPrimitive.Group;
2078
+ var SelectValue = SelectPrimitive.Value;
2079
+ var SelectTrigger = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs14(
2080
+ SelectPrimitive.Trigger,
2081
+ {
2082
+ className: cn(
2083
+ "border-input ring-offset-background data-placeholder:text-muted-foreground focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-sm focus:ring-1 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
2084
+ className
2085
+ ),
2086
+ ref,
2087
+ ...props,
2088
+ children: [
2089
+ children,
2090
+ /* @__PURE__ */ jsx28(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx28(ChevronDown3, { className: "h-4 w-4 opacity-50" }) })
2091
+ ]
2092
+ }
2093
+ ));
2094
+ SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
2095
+ var SelectScrollUpButton = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx28(
2096
+ SelectPrimitive.ScrollUpButton,
2097
+ {
2098
+ className: cn(
2099
+ "flex cursor-default items-center justify-center py-1",
2100
+ className
2101
+ ),
2102
+ ref,
2103
+ ...props,
2104
+ children: /* @__PURE__ */ jsx28(ChevronUp, { className: "h-4 w-4" })
2105
+ }
2106
+ ));
2107
+ SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
2108
+ var SelectScrollDownButton = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx28(
2109
+ SelectPrimitive.ScrollDownButton,
2110
+ {
2111
+ className: cn(
2112
+ "flex cursor-default items-center justify-center py-1",
2113
+ className
2114
+ ),
2115
+ ref,
2116
+ ...props,
2117
+ children: /* @__PURE__ */ jsx28(ChevronDown3, { className: "h-4 w-4" })
2118
+ }
2119
+ ));
2120
+ SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
2121
+ var SelectContent = React27.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx28(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs14(
2122
+ SelectPrimitive.Content,
2123
+ {
2124
+ className: cn(
2125
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 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 shadow-md",
2126
+ 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",
2127
+ className
2128
+ ),
2129
+ position,
2130
+ ref,
2131
+ ...props,
2132
+ children: [
2133
+ /* @__PURE__ */ jsx28(SelectScrollUpButton, {}),
2134
+ /* @__PURE__ */ jsx28(
2135
+ SelectPrimitive.Viewport,
2136
+ {
2137
+ className: cn(
2138
+ "p-1",
2139
+ position === "popper" && "h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width)"
2140
+ ),
2141
+ children
2142
+ }
2143
+ ),
2144
+ /* @__PURE__ */ jsx28(SelectScrollDownButton, {})
2145
+ ]
2146
+ }
2147
+ ) }));
2148
+ SelectContent.displayName = SelectPrimitive.Content.displayName;
2149
+ var SelectLabel = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx28(
2150
+ SelectPrimitive.Label,
2151
+ {
2152
+ className: cn("px-2 py-1.5 text-sm font-semibold", className),
2153
+ ref,
2154
+ ...props
2155
+ }
2156
+ ));
2157
+ SelectLabel.displayName = SelectPrimitive.Label.displayName;
2158
+ var SelectItem = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs14(
2159
+ SelectPrimitive.Item,
2160
+ {
2161
+ className: cn(
2162
+ "focus:bg-accent focus:text-accent-foreground relative flex w-full cursor-default items-center rounded-sm py-1.5 pr-8 pl-2 text-sm outline-none select-none data-disabled:pointer-events-none data-disabled:opacity-50",
2163
+ className
2164
+ ),
2165
+ ref,
2166
+ ...props,
2167
+ children: [
2168
+ /* @__PURE__ */ jsx28("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx28(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx28(Check5, { className: "h-4 w-4" }) }) }),
2169
+ /* @__PURE__ */ jsx28(SelectPrimitive.ItemText, { children })
2170
+ ]
2171
+ }
2172
+ ));
2173
+ SelectItem.displayName = SelectPrimitive.Item.displayName;
2174
+ var SelectSeparator = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx28(
2175
+ SelectPrimitive.Separator,
2176
+ {
2177
+ className: cn("bg-muted -mx-1 my-1 h-px", className),
2178
+ ref,
2179
+ ...props
2180
+ }
2181
+ ));
2182
+ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
2183
+
2184
+ // src/components/ui/separator/index.tsx
2185
+ import * as React28 from "react";
2186
+ import * as SeparatorPrimitive from "@radix-ui/react-separator";
2187
+ import { jsx as jsx29 } from "react/jsx-runtime";
2188
+ var Separator5 = React28.forwardRef(
2189
+ ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx29(
2190
+ SeparatorPrimitive.Root,
2191
+ {
2192
+ className: cn(
2193
+ "bg-border shrink-0",
2194
+ orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
2195
+ className
2196
+ ),
2197
+ decorative,
2198
+ orientation,
2199
+ ref,
2200
+ ...props
2201
+ }
2202
+ )
2203
+ );
2204
+ Separator5.displayName = SeparatorPrimitive.Root.displayName;
2205
+
2206
+ // src/components/ui/sheet/index.tsx
2207
+ import { cva as cva6 } from "class-variance-authority";
2208
+ import { X as X2 } from "lucide-react";
2209
+ import * as React29 from "react";
2210
+ import * as SheetPrimitive from "@radix-ui/react-dialog";
2211
+ import { jsx as jsx30, jsxs as jsxs15 } from "react/jsx-runtime";
2212
+ var Sheet = SheetPrimitive.Root;
2213
+ var SheetTrigger = SheetPrimitive.Trigger;
2214
+ var SheetClose = SheetPrimitive.Close;
2215
+ var SheetPortal = SheetPrimitive.Portal;
2216
+ var SheetOverlay = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx30(
2217
+ SheetPrimitive.Overlay,
2218
+ {
2219
+ className: cn(
2220
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80",
2221
+ className
2222
+ ),
2223
+ ...props,
2224
+ ref
2225
+ }
2226
+ ));
2227
+ SheetOverlay.displayName = SheetPrimitive.Overlay.displayName;
2228
+ var sheetVariants = cva6(
2229
+ "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out",
2230
+ {
2231
+ variants: {
2232
+ side: {
2233
+ top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
2234
+ bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
2235
+ left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
2236
+ 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"
2237
+ }
2238
+ },
2239
+ defaultVariants: {
2240
+ side: "right"
2241
+ }
2242
+ }
2243
+ );
2244
+ var SheetContent = React29.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs15(SheetPortal, { children: [
2245
+ /* @__PURE__ */ jsx30(SheetOverlay, {}),
2246
+ /* @__PURE__ */ jsxs15(
2247
+ SheetPrimitive.Content,
2248
+ {
2249
+ className: cn(sheetVariants({ side }), className),
2250
+ ref,
2251
+ ...props,
2252
+ children: [
2253
+ /* @__PURE__ */ jsxs15(SheetPrimitive.Close, { className: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none", children: [
2254
+ /* @__PURE__ */ jsx30(X2, { className: "h-4 w-4" }),
2255
+ /* @__PURE__ */ jsx30("span", { className: "sr-only", children: "Close" })
2256
+ ] }),
2257
+ children
2258
+ ]
2259
+ }
2260
+ )
2261
+ ] }));
2262
+ SheetContent.displayName = SheetPrimitive.Content.displayName;
2263
+ var SheetHeader = ({
2264
+ className,
2265
+ ...props
2266
+ }) => /* @__PURE__ */ jsx30(
2267
+ "div",
2268
+ {
2269
+ className: cn(
2270
+ "flex flex-col space-y-2 text-center sm:text-left",
2271
+ className
2272
+ ),
2273
+ ...props
2274
+ }
2275
+ );
2276
+ SheetHeader.displayName = "SheetHeader";
2277
+ var SheetFooter = ({
2278
+ className,
2279
+ ...props
2280
+ }) => /* @__PURE__ */ jsx30(
2281
+ "div",
2282
+ {
2283
+ className: cn(
2284
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
2285
+ className
2286
+ ),
2287
+ ...props
2288
+ }
2289
+ );
2290
+ SheetFooter.displayName = "SheetFooter";
2291
+ var SheetTitle = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx30(
2292
+ SheetPrimitive.Title,
2293
+ {
2294
+ className: cn("text-foreground text-lg font-semibold", className),
2295
+ ref,
2296
+ ...props
2297
+ }
2298
+ ));
2299
+ SheetTitle.displayName = SheetPrimitive.Title.displayName;
2300
+ var SheetDescription = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx30(
2301
+ SheetPrimitive.Description,
2302
+ {
2303
+ className: cn("text-muted-foreground text-sm", className),
2304
+ ref,
2305
+ ...props
2306
+ }
2307
+ ));
2308
+ SheetDescription.displayName = SheetPrimitive.Description.displayName;
2309
+
2310
+ // src/components/ui/skeleton/index.tsx
2311
+ import { jsx as jsx31 } from "react/jsx-runtime";
2312
+ function Skeleton({
2313
+ className,
2314
+ ...props
2315
+ }) {
2316
+ return /* @__PURE__ */ jsx31(
2317
+ "div",
2318
+ {
2319
+ className: cn("bg-primary/10 animate-pulse rounded-md", className),
2320
+ ...props
2321
+ }
2322
+ );
2323
+ }
2324
+
2325
+ // src/components/ui/slider/index.tsx
2326
+ import * as React30 from "react";
2327
+ import * as SliderPrimitive from "@radix-ui/react-slider";
2328
+ import { jsx as jsx32, jsxs as jsxs16 } from "react/jsx-runtime";
2329
+ var Slider = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs16(
2330
+ SliderPrimitive.Root,
2331
+ {
2332
+ className: cn(
2333
+ "relative flex w-full touch-none items-center select-none",
2334
+ className
2335
+ ),
2336
+ ref,
2337
+ ...props,
2338
+ children: [
2339
+ /* @__PURE__ */ jsx32(SliderPrimitive.Track, { className: "bg-primary/20 relative h-1.5 w-full grow overflow-hidden rounded-full", children: /* @__PURE__ */ jsx32(SliderPrimitive.Range, { className: "bg-primary absolute h-full" }) }),
2340
+ /* @__PURE__ */ jsx32(SliderPrimitive.Thumb, { className: "border-primary/50 bg-background focus-visible:ring-ring block h-4 w-4 rounded-full border shadow transition-colors focus-visible:ring-1 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50" })
2341
+ ]
2342
+ }
2343
+ ));
2344
+ Slider.displayName = SliderPrimitive.Root.displayName;
2345
+
2346
+ // src/components/ui/spinner/index.tsx
2347
+ import { Loader2Icon } from "lucide-react";
2348
+ import { jsx as jsx33 } from "react/jsx-runtime";
2349
+ function Spinner({ className, ...props }) {
2350
+ return /* @__PURE__ */ jsx33(
2351
+ Loader2Icon,
2352
+ {
2353
+ "aria-label": "Loading",
2354
+ className: cn("size-4 animate-spin", className),
2355
+ role: "status",
2356
+ ...props
2357
+ }
2358
+ );
2359
+ }
2360
+
2361
+ // src/components/ui/switch/index.tsx
2362
+ import * as React31 from "react";
2363
+ import * as SwitchPrimitives from "@radix-ui/react-switch";
2364
+ import { jsx as jsx34 } from "react/jsx-runtime";
2365
+ var Switch = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx34(
2366
+ SwitchPrimitives.Root,
2367
+ {
2368
+ className: cn(
2369
+ "peer focus-visible:ring-ring focus-visible:ring-offset-background data-[state=checked]:bg-primary data-[state=unchecked]:bg-input inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50",
2370
+ className
2371
+ ),
2372
+ ...props,
2373
+ ref,
2374
+ children: /* @__PURE__ */ jsx34(
2375
+ SwitchPrimitives.Thumb,
2376
+ {
2377
+ className: cn(
2378
+ "bg-background pointer-events-none block h-4 w-4 rounded-full shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0"
2379
+ )
2380
+ }
2381
+ )
2382
+ }
2383
+ ));
2384
+ Switch.displayName = SwitchPrimitives.Root.displayName;
2385
+
2386
+ // src/components/ui/tabs/index.tsx
2387
+ import * as React32 from "react";
2388
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
2389
+ import { jsx as jsx35 } from "react/jsx-runtime";
2390
+ var Tabs = TabsPrimitive.Root;
2391
+ var TabsList = React32.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx35(
2392
+ TabsPrimitive.List,
2393
+ {
2394
+ className: cn(
2395
+ "bg-muted text-muted-foreground inline-flex h-9 items-center justify-center rounded-lg p-1",
2396
+ className
2397
+ ),
2398
+ ref,
2399
+ ...props
2400
+ }
2401
+ ));
2402
+ TabsList.displayName = TabsPrimitive.List.displayName;
2403
+ var TabsTrigger = React32.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx35(
2404
+ TabsPrimitive.Trigger,
2405
+ {
2406
+ className: cn(
2407
+ "ring-offset-background focus-visible:ring-ring data-[state=active]:bg-background data-[state=active]:text-foreground inline-flex items-center justify-center rounded-md px-3 py-1 text-sm font-medium whitespace-nowrap transition-all focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow",
2408
+ className
2409
+ ),
2410
+ ref,
2411
+ ...props
2412
+ }
2413
+ ));
2414
+ TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
2415
+ var TabsContent = React32.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx35(
2416
+ TabsPrimitive.Content,
2417
+ {
2418
+ className: cn(
2419
+ "ring-offset-background focus-visible:ring-ring mt-2 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none",
2420
+ className
2421
+ ),
2422
+ ref,
2423
+ ...props
2424
+ }
2425
+ ));
2426
+ TabsContent.displayName = TabsPrimitive.Content.displayName;
2427
+
2428
+ // src/components/ui/textarea/index.tsx
2429
+ import * as React33 from "react";
2430
+ import { jsx as jsx36 } from "react/jsx-runtime";
2431
+ var Textarea = React33.forwardRef(({ className, ...props }, ref) => {
2432
+ return /* @__PURE__ */ jsx36(
2433
+ "textarea",
2434
+ {
2435
+ className: cn(
2436
+ "border-input placeholder:text-muted-foreground focus-visible:ring-ring flex min-h-[60px] w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-sm focus-visible:ring-1 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
2437
+ className
2438
+ ),
2439
+ ref,
2440
+ ...props
2441
+ }
2442
+ );
2443
+ });
2444
+ Textarea.displayName = "Textarea";
2445
+
2446
+ // src/components/ui/toaster/index.tsx
2447
+ import { Toaster as ToasterComponent } from "sonner";
2448
+ import { jsx as jsx37 } from "react/jsx-runtime";
2449
+ var Toaster = () => {
2450
+ return /* @__PURE__ */ jsx37(ToasterComponent, {});
2451
+ };
2452
+
2453
+ // src/components/ui/toggle/index.tsx
2454
+ import { cva as cva7 } from "class-variance-authority";
2455
+ import * as React34 from "react";
2456
+ import * as TogglePrimitive from "@radix-ui/react-toggle";
2457
+ import { jsx as jsx38 } from "react/jsx-runtime";
2458
+ var toggleVariants = cva7(
2459
+ "inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
2460
+ {
2461
+ variants: {
2462
+ variant: {
2463
+ default: "bg-transparent",
2464
+ outline: "border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground"
2465
+ },
2466
+ size: {
2467
+ default: "h-9 px-2 min-w-9",
2468
+ sm: "h-8 px-1.5 min-w-8",
2469
+ lg: "h-10 px-2.5 min-w-10"
2470
+ }
2471
+ },
2472
+ defaultVariants: {
2473
+ variant: "default",
2474
+ size: "default"
2475
+ }
2476
+ }
2477
+ );
2478
+ var Toggle = React34.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx38(
2479
+ TogglePrimitive.Root,
2480
+ {
2481
+ className: cn(toggleVariants({ variant, size, className })),
2482
+ ref,
2483
+ ...props
2484
+ }
2485
+ ));
2486
+ Toggle.displayName = TogglePrimitive.Root.displayName;
2487
+
2488
+ // src/components/ui/tooltip/index.tsx
2489
+ import * as React35 from "react";
2490
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
2491
+ import { jsx as jsx39 } from "react/jsx-runtime";
2492
+ var TooltipProvider = TooltipPrimitive.Provider;
2493
+ var Tooltip = TooltipPrimitive.Root;
2494
+ var TooltipTrigger = TooltipPrimitive.Trigger;
2495
+ var TooltipContent = React35.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx39(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx39(
2496
+ TooltipPrimitive.Content,
2497
+ {
2498
+ className: cn(
2499
+ "bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-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 z-50 origin-[--radix-tooltip-content-transform-origin] overflow-hidden rounded-md px-3 py-1.5 text-xs",
2500
+ className
2501
+ ),
2502
+ ref,
2503
+ sideOffset,
2504
+ ...props
2505
+ }
2506
+ ) }));
2507
+ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
2508
+
2509
+ // src/hooks/use-auto-focus.ts
2510
+ import { useLayoutEffect } from "react";
2511
+ import { useIsMounted } from "usehooks-ts";
2512
+ function useAutoFocus({ ref, enabled = true }) {
2513
+ const isMounted = useIsMounted();
2514
+ useLayoutEffect(() => {
2515
+ if (!enabled || isMounted()) return;
2516
+ ref.current?.focus();
2517
+ }, [ref, enabled, isMounted]);
2518
+ }
2519
+
2520
+ // src/hooks/use-mobile.ts
2521
+ import * as React36 from "react";
2522
+ var MOBILE_BREAKPOINT = 768;
2523
+ function useIsMobile() {
2524
+ const [isMobile, setIsMobile] = React36.useState(void 0);
2525
+ React36.useEffect(() => {
2526
+ const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
2527
+ const onChange = () => {
2528
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
2529
+ };
2530
+ mql.addEventListener("change", onChange);
2531
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
2532
+ return () => mql.removeEventListener("change", onChange);
2533
+ }, []);
2534
+ return !!isMobile;
2535
+ }
2536
+
2537
+ // src/hooks/use-shortcuts.ts
2538
+ function isModifierMatch(event, modifiers = {}) {
2539
+ if (Array.isArray(modifiers))
2540
+ return modifiers.some((modifier) => isModifierMatch(event, modifier));
2541
+ return event.metaKey === !!modifiers.meta && event.shiftKey === !!modifiers.shift && event.altKey === !!modifiers.alt && event.ctrlKey === !!modifiers.ctrl;
2542
+ }
2543
+ function isEnabled(shortcut) {
2544
+ if (shortcut.enabled === void 0) return true;
2545
+ return typeof shortcut.enabled === "function" ? shortcut.enabled() : shortcut.enabled;
2546
+ }
2547
+ function useShortcuts(definitions) {
2548
+ function executeShortcut(event) {
2549
+ const matchedShortcut = definitions.find(
2550
+ (shortcut) => isEnabled(shortcut) && shortcut.keys.includes(event.key) && isModifierMatch(event, shortcut.modifiers)
2551
+ );
2552
+ if (!matchedShortcut) return false;
2553
+ if (matchedShortcut.preventDefault !== false) event.preventDefault();
2554
+ matchedShortcut.handler(event);
2555
+ return true;
2556
+ }
2557
+ return {
2558
+ executeShortcut
2559
+ };
2560
+ }
2561
+
2562
+ // src/hooks/use-uid.ts
2563
+ import { useState as useState3 } from "react";
2564
+ var id = 0;
2565
+ function useUid(prefix) {
2566
+ const [uid] = useState3(() => `tui-${prefix}:${++id}`);
2567
+ return uid;
2568
+ }
2569
+ export {
2570
+ Accordion,
2571
+ AccordionContent,
2572
+ AccordionItem,
2573
+ AccordionTrigger,
2574
+ Alert,
2575
+ AlertDescription,
2576
+ AlertDialog,
2577
+ AlertDialogAction,
2578
+ AlertDialogCancel,
2579
+ AlertDialogContent,
2580
+ AlertDialogDescription,
2581
+ AlertDialogFooter,
2582
+ AlertDialogHeader,
2583
+ AlertDialogOverlay,
2584
+ AlertDialogPortal,
2585
+ AlertDialogTitle,
2586
+ AlertDialogTrigger,
2587
+ AlertTitle,
2588
+ Avatar,
2589
+ AvatarFallback,
2590
+ AvatarImage,
2591
+ Badge,
2592
+ Breadcrumb,
2593
+ BreadcrumbEllipsis,
2594
+ BreadcrumbItem,
2595
+ BreadcrumbLink,
2596
+ BreadcrumbList,
2597
+ BreadcrumbPage,
2598
+ BreadcrumbSeparator,
2599
+ Button,
2600
+ Calendar,
2601
+ CalendarDayButton,
2602
+ Card,
2603
+ CardContent,
2604
+ CardDescription,
2605
+ CardFooter,
2606
+ CardHeader,
2607
+ CardTitle,
2608
+ Carousel,
2609
+ CarouselContent,
2610
+ CarouselItem,
2611
+ CarouselNext,
2612
+ CarouselPrevious,
2613
+ Checkbox,
2614
+ Collapsible,
2615
+ CollapsibleContent2 as CollapsibleContent,
2616
+ CollapsibleTrigger2 as CollapsibleTrigger,
2617
+ Command,
2618
+ CommandDialog,
2619
+ CommandEmpty,
2620
+ CommandGroup,
2621
+ CommandInput,
2622
+ CommandItem,
2623
+ CommandList,
2624
+ CommandSeparator,
2625
+ CommandShortcut,
2626
+ ContextMenu,
2627
+ ContextMenuCheckboxItem,
2628
+ ContextMenuContent,
2629
+ ContextMenuGroup,
2630
+ ContextMenuItem,
2631
+ ContextMenuLabel,
2632
+ ContextMenuPortal,
2633
+ ContextMenuRadioGroup,
2634
+ ContextMenuRadioItem,
2635
+ ContextMenuSeparator,
2636
+ ContextMenuShortcut,
2637
+ ContextMenuSub,
2638
+ ContextMenuSubContent,
2639
+ ContextMenuSubTrigger,
2640
+ ContextMenuTrigger,
2641
+ Dialog,
2642
+ DialogClose,
2643
+ DialogContent,
2644
+ DialogDescription,
2645
+ DialogFooter,
2646
+ DialogHeader,
2647
+ DialogOverlay,
2648
+ DialogPortal,
2649
+ DialogTitle,
2650
+ DialogTrigger,
2651
+ Drawer,
2652
+ DrawerClose,
2653
+ DrawerContent,
2654
+ DrawerDescription,
2655
+ DrawerFooter,
2656
+ DrawerHeader,
2657
+ DrawerOverlay,
2658
+ DrawerPortal,
2659
+ DrawerTitle,
2660
+ DrawerTrigger,
2661
+ DropdownMenu,
2662
+ DropdownMenuCheckboxItem,
2663
+ DropdownMenuContent,
2664
+ DropdownMenuGroup,
2665
+ DropdownMenuItem,
2666
+ DropdownMenuLabel,
2667
+ DropdownMenuPortal,
2668
+ DropdownMenuRadioGroup,
2669
+ DropdownMenuRadioItem,
2670
+ DropdownMenuSeparator,
2671
+ DropdownMenuShortcut,
2672
+ DropdownMenuSub,
2673
+ DropdownMenuSubContent,
2674
+ DropdownMenuSubTrigger,
2675
+ DropdownMenuTrigger,
2676
+ Form,
2677
+ FormControl,
2678
+ FormDescription,
2679
+ FormField,
2680
+ FormItem,
2681
+ FormLabel,
2682
+ FormMessage,
2683
+ HoverCard,
2684
+ HoverCardContent,
2685
+ HoverCardTrigger,
2686
+ Input,
2687
+ Label3 as Label,
2688
+ Menubar,
2689
+ MenubarCheckboxItem,
2690
+ MenubarContent,
2691
+ MenubarGroup,
2692
+ MenubarItem,
2693
+ MenubarLabel,
2694
+ MenubarMenu,
2695
+ MenubarPortal,
2696
+ MenubarRadioGroup,
2697
+ MenubarRadioItem,
2698
+ MenubarSeparator,
2699
+ MenubarShortcut,
2700
+ MenubarSub,
2701
+ MenubarSubContent,
2702
+ MenubarSubTrigger,
2703
+ MenubarTrigger,
2704
+ NavigationMenu,
2705
+ NavigationMenuContent,
2706
+ NavigationMenuIndicator,
2707
+ NavigationMenuItem,
2708
+ NavigationMenuLink,
2709
+ NavigationMenuList,
2710
+ NavigationMenuTrigger,
2711
+ NavigationMenuViewport,
2712
+ Pagination,
2713
+ PaginationContent,
2714
+ PaginationEllipsis,
2715
+ PaginationItem,
2716
+ PaginationLink,
2717
+ PaginationNext,
2718
+ PaginationPrevious,
2719
+ Popover,
2720
+ PopoverAnchor,
2721
+ PopoverContent,
2722
+ PopoverTrigger,
2723
+ Progress,
2724
+ RadioGroup4 as RadioGroup,
2725
+ RadioGroupItem,
2726
+ ScrollArea,
2727
+ ScrollBar,
2728
+ Select,
2729
+ SelectContent,
2730
+ SelectGroup,
2731
+ SelectItem,
2732
+ SelectLabel,
2733
+ SelectScrollDownButton,
2734
+ SelectScrollUpButton,
2735
+ SelectSeparator,
2736
+ SelectTrigger,
2737
+ SelectValue,
2738
+ Separator5 as Separator,
2739
+ Sheet,
2740
+ SheetClose,
2741
+ SheetContent,
2742
+ SheetDescription,
2743
+ SheetFooter,
2744
+ SheetHeader,
2745
+ SheetOverlay,
2746
+ SheetPortal,
2747
+ SheetTitle,
2748
+ SheetTrigger,
2749
+ Skeleton,
2750
+ Slider,
2751
+ Spinner,
2752
+ Switch,
2753
+ Tabs,
2754
+ TabsContent,
2755
+ TabsList,
2756
+ TabsTrigger,
2757
+ Textarea,
2758
+ Toaster,
2759
+ Toggle,
2760
+ Tooltip,
2761
+ TooltipContent,
2762
+ TooltipProvider,
2763
+ TooltipTrigger,
2764
+ badgeVariants,
2765
+ buttonVariants,
2766
+ cn,
2767
+ navigationMenuTriggerStyle,
2768
+ toggleVariants,
2769
+ useAutoFocus,
2770
+ useFormField,
2771
+ useIsMobile,
2772
+ useShortcuts,
2773
+ useUid
2774
+ };
2775
+ //# sourceMappingURL=index.js.map