@pntbiz1/pds 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs ADDED
@@ -0,0 +1,2600 @@
1
+ "use strict";
2
+ "use client";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+
31
+ // src/index.ts
32
+ var index_exports = {};
33
+ __export(index_exports, {
34
+ Accordion: () => Accordion,
35
+ AccordionContent: () => AccordionContent,
36
+ AccordionItem: () => AccordionItem,
37
+ AccordionTrigger: () => AccordionTrigger,
38
+ Alert: () => alert_default,
39
+ AlertDialog: () => AlertDialog,
40
+ AlertDialogAction: () => AlertDialogAction,
41
+ AlertDialogCancel: () => AlertDialogCancel,
42
+ AlertDialogContent: () => AlertDialogContent,
43
+ AlertDialogDescription: () => AlertDialogDescription,
44
+ AlertDialogFooter: () => AlertDialogFooter,
45
+ AlertDialogHeader: () => AlertDialogHeader,
46
+ AlertDialogOverlay: () => AlertDialogOverlay,
47
+ AlertDialogPortal: () => AlertDialogPortal,
48
+ AlertDialogTitle: () => AlertDialogTitle,
49
+ AlertDialogTrigger: () => AlertDialogTrigger,
50
+ Badge: () => Badge,
51
+ Button: () => Button,
52
+ Calendar: () => Calendar,
53
+ Card: () => Card,
54
+ CardContent: () => CardContent,
55
+ CardDescription: () => CardDescription,
56
+ CardFooter: () => CardFooter,
57
+ CardHeader: () => CardHeader,
58
+ CardTitle: () => CardTitle,
59
+ Carousel: () => Carousel,
60
+ CarouselContent: () => CarouselContent,
61
+ CarouselItem: () => CarouselItem,
62
+ CarouselNext: () => CarouselNext,
63
+ CarouselPrevious: () => CarouselPrevious,
64
+ Checkbox: () => Checkbox,
65
+ DatePicker: () => date_picker_default,
66
+ Dialog: () => Dialog,
67
+ DialogClose: () => DialogClose,
68
+ DialogContent: () => DialogContent,
69
+ DialogDescription: () => DialogDescription,
70
+ DialogFooter: () => DialogFooter,
71
+ DialogHeader: () => DialogHeader,
72
+ DialogOverlay: () => DialogOverlay,
73
+ DialogPortal: () => DialogPortal,
74
+ DialogTitle: () => DialogTitle,
75
+ DialogTrigger: () => DialogTrigger,
76
+ DropdownMenu: () => DropdownMenu,
77
+ DropdownMenuCheckboxItem: () => DropdownMenuCheckboxItem,
78
+ DropdownMenuContent: () => DropdownMenuContent,
79
+ DropdownMenuGroup: () => DropdownMenuGroup,
80
+ DropdownMenuItem: () => DropdownMenuItem,
81
+ DropdownMenuLabel: () => DropdownMenuLabel,
82
+ DropdownMenuPortal: () => DropdownMenuPortal,
83
+ DropdownMenuRadioGroup: () => DropdownMenuRadioGroup,
84
+ DropdownMenuRadioItem: () => DropdownMenuRadioItem,
85
+ DropdownMenuSeparator: () => DropdownMenuSeparator,
86
+ DropdownMenuShortcut: () => DropdownMenuShortcut,
87
+ DropdownMenuSub: () => DropdownMenuSub,
88
+ DropdownMenuSubContent: () => DropdownMenuSubContent,
89
+ DropdownMenuSubTrigger: () => DropdownMenuSubTrigger,
90
+ DropdownMenuTrigger: () => DropdownMenuTrigger,
91
+ Form: () => Form,
92
+ FormControl: () => FormControl,
93
+ FormDescription: () => FormDescription,
94
+ FormField: () => FormField,
95
+ FormItem: () => FormItem,
96
+ FormLabel: () => FormLabel,
97
+ FormMessage: () => FormMessage,
98
+ Input: () => Input,
99
+ Label: () => Label2,
100
+ NavigationMenu: () => NavigationMenu,
101
+ NavigationMenuContent: () => NavigationMenuContent,
102
+ NavigationMenuIndicator: () => NavigationMenuIndicator,
103
+ NavigationMenuItem: () => NavigationMenuItem,
104
+ NavigationMenuLink: () => NavigationMenuLink,
105
+ NavigationMenuList: () => NavigationMenuList,
106
+ NavigationMenuTrigger: () => NavigationMenuTrigger,
107
+ NavigationMenuViewport: () => NavigationMenuViewport,
108
+ Pagination: () => Pagination,
109
+ PaginationContent: () => PaginationContent,
110
+ PaginationEllipsis: () => PaginationEllipsis,
111
+ PaginationFirstPage: () => PaginationFirstPage,
112
+ PaginationItem: () => PaginationItem,
113
+ PaginationLink: () => PaginationLink,
114
+ PaginationNext: () => PaginationNext,
115
+ PaginationPrevious: () => PaginationPrevious,
116
+ PaginationRangeNext: () => PaginationRangeNext,
117
+ PaginationRangePrevious: () => PaginationRangePrevious,
118
+ Popover: () => Popover,
119
+ PopoverAnchor: () => PopoverAnchor,
120
+ PopoverContent: () => PopoverContent,
121
+ PopoverTrigger: () => PopoverTrigger,
122
+ RadioGroup: () => RadioGroup2,
123
+ RadioGroupItem: () => RadioGroupItem,
124
+ ScrollArea: () => ScrollArea,
125
+ ScrollBar: () => ScrollBar,
126
+ Select: () => Select,
127
+ SelectContent: () => SelectContent,
128
+ SelectGroup: () => SelectGroup,
129
+ SelectItem: () => SelectItem,
130
+ SelectLabel: () => SelectLabel,
131
+ SelectScrollDownButton: () => SelectScrollDownButton,
132
+ SelectScrollUpButton: () => SelectScrollUpButton,
133
+ SelectSeparator: () => SelectSeparator,
134
+ SelectTrigger: () => SelectTrigger,
135
+ SelectValue: () => SelectValue,
136
+ Separator: () => Separator3,
137
+ Sheet: () => Sheet,
138
+ SheetClose: () => SheetClose,
139
+ SheetContent: () => SheetContent,
140
+ SheetDescription: () => SheetDescription,
141
+ SheetFooter: () => SheetFooter,
142
+ SheetHeader: () => SheetHeader,
143
+ SheetOverlay: () => SheetOverlay,
144
+ SheetPortal: () => SheetPortal,
145
+ SheetTitle: () => SheetTitle,
146
+ SheetTrigger: () => SheetTrigger,
147
+ Sidebar: () => Sidebar,
148
+ SidebarContent: () => SidebarContent,
149
+ SidebarFooter: () => SidebarFooter,
150
+ SidebarLabel: () => SidebarLabel,
151
+ SidebarSubtitle: () => SidebarSubtitle,
152
+ SidebarTitle: () => SidebarTitle,
153
+ Skeleton: () => Skeleton,
154
+ Switch: () => Switch,
155
+ Table: () => Table,
156
+ TableBody: () => TableBody,
157
+ TableCaption: () => TableCaption,
158
+ TableCell: () => TableCell,
159
+ TableFooter: () => TableFooter,
160
+ TableHead: () => TableHead,
161
+ TableHeader: () => TableHeader,
162
+ TableRow: () => TableRow,
163
+ Tabs: () => Tabs,
164
+ TabsContent: () => TabsContent,
165
+ TabsList: () => TabsList,
166
+ TabsTrigger: () => TabsTrigger,
167
+ Title: () => Title4,
168
+ Toast: () => Toast,
169
+ ToastAction: () => ToastAction,
170
+ ToastClose: () => ToastClose,
171
+ ToastDescription: () => ToastDescription,
172
+ ToastProvider: () => ToastProvider,
173
+ ToastTitle: () => ToastTitle,
174
+ ToastViewport: () => ToastViewport,
175
+ Toaster: () => Toaster,
176
+ VirtualScrollArea: () => VirtualScrollArea,
177
+ VirtualScrollBar: () => VirtualScrollBar,
178
+ badgeVariants: () => badgeVariants,
179
+ buttonVariants: () => buttonVariants,
180
+ inputVariants: () => inputVariants,
181
+ navigationMenuTriggerStyle: () => navigationMenuTriggerStyle,
182
+ reducer: () => reducer,
183
+ toast: () => toast,
184
+ useFormField: () => useFormField,
185
+ useToast: () => useToast
186
+ });
187
+ module.exports = __toCommonJS(index_exports);
188
+
189
+ // src/components/accordion.tsx
190
+ var AccordionPrimitive = __toESM(require("@radix-ui/react-accordion"), 1);
191
+ var import_lucide_react = require("lucide-react");
192
+ var React = __toESM(require("react"), 1);
193
+
194
+ // src/lib/cn.ts
195
+ var import_clsx = require("clsx");
196
+ var import_tailwind_merge = require("tailwind-merge");
197
+ function cn(...inputs) {
198
+ return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
199
+ }
200
+
201
+ // src/components/accordion.tsx
202
+ var import_jsx_runtime = require("react/jsx-runtime");
203
+ var Accordion = AccordionPrimitive.Root;
204
+ var AccordionItem = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
205
+ AccordionPrimitive.Item,
206
+ {
207
+ ref,
208
+ className: cn("border-b", className),
209
+ ...props
210
+ }
211
+ ));
212
+ AccordionItem.displayName = "AccordionItem";
213
+ var AccordionTrigger = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
214
+ AccordionPrimitive.Trigger,
215
+ {
216
+ ref,
217
+ className: cn(
218
+ "flex flex-1 items-center justify-between py-4 text-title-md transition-all hover:underline [&[data-state=open]>svg]:rotate-180",
219
+ className
220
+ ),
221
+ ...props,
222
+ children: [
223
+ children,
224
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ChevronDownIcon, { className: "size-4 shrink-0 text-muted-foreground transition-transform duration-200" })
225
+ ]
226
+ }
227
+ ) }));
228
+ AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
229
+ var AccordionContent = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
230
+ AccordionPrimitive.Content,
231
+ {
232
+ ref,
233
+ className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
234
+ ...props,
235
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: cn("pb-4 pt-0", className), children })
236
+ }
237
+ ));
238
+ AccordionContent.displayName = AccordionPrimitive.Content.displayName;
239
+
240
+ // src/components/alert-dialog.tsx
241
+ var AlertDialogPrimitive = __toESM(require("@radix-ui/react-alert-dialog"), 1);
242
+ var React3 = __toESM(require("react"), 1);
243
+
244
+ // src/components/button.tsx
245
+ var import_react_slot = require("@radix-ui/react-slot");
246
+ var import_class_variance_authority = require("class-variance-authority");
247
+ var React2 = __toESM(require("react"), 1);
248
+ var import_jsx_runtime2 = require("react/jsx-runtime");
249
+ var buttonVariants = (0, import_class_variance_authority.cva)(
250
+ "inline-flex w-fit items-center justify-center whitespace-nowrap text-center transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none",
251
+ {
252
+ variants: {
253
+ variant: {
254
+ outline: "border border-gray-300 bg-white text-gray-500 hover:bg-gray-100 disabled:bg-gray-50 disabled:text-gray-400",
255
+ outline_primary: "border border-orange-500 bg-white text-orange-500 transition-colors duration-200 ease-in-out hover:border-orange-600 hover:text-orange-600 hover:ring-1 hover:ring-orange-200",
256
+ primary: "bg-orange-500 text-white hover:bg-orange-400 disabled:bg-gray-300",
257
+ secondary: "bg-gray-400 text-white hover:bg-gray-300 disabled:bg-gray-300",
258
+ destructive: "bg-red-500 text-white hover:bg-red-400 disabled:bg-gray-300",
259
+ outline_destructive: "border border-gray-300 bg-white text-red-500 hover:bg-gray-100 disabled:bg-gray-100 disabled:text-gray-400",
260
+ blue: "bg-blue-500 text-white hover:bg-blue-400 disabled:bg-gray-300",
261
+ black: "bg-gray-800 text-white hover:bg-gray-600 disabled:bg-gray-300",
262
+ text: "text-gray-700 underline-offset-4 hover:text-gray-400 disabled:text-gray-300 [&>svg:first-child]:mr-2 [&>svg:last-child]:ml-2",
263
+ icon: "m-0 inline-flex size-fit items-center justify-center p-0"
264
+ },
265
+ size: {
266
+ lg: "h-12 px-4 py-2 text-[0.875rem] font-bold leading-5 tracking-normal",
267
+ md: "h-10 px-4 py-3",
268
+ sm: "h-9 px-3 py-2 text-[0.75rem] font-normal leading-[1.125rem] tracking-normal",
269
+ xs: "h-7 p-1 text-[0.875rem] font-bold leading-5 tracking-normal"
270
+ },
271
+ rounded: {
272
+ default: "rounded",
273
+ full: "rounded-full"
274
+ }
275
+ },
276
+ defaultVariants: {
277
+ variant: "outline",
278
+ size: "lg",
279
+ rounded: "default"
280
+ }
281
+ }
282
+ );
283
+ var Button = React2.forwardRef(
284
+ ({ className, size, rounded, variant, asChild = false, ...props }, ref) => {
285
+ const Comp = asChild ? import_react_slot.Slot : "button";
286
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
287
+ Comp,
288
+ {
289
+ className: cn(buttonVariants({ size, rounded, variant, className })),
290
+ ref,
291
+ ...props
292
+ }
293
+ );
294
+ }
295
+ );
296
+ Button.displayName = "Button";
297
+
298
+ // src/components/alert-dialog.tsx
299
+ var import_jsx_runtime3 = require("react/jsx-runtime");
300
+ var AlertDialog = AlertDialogPrimitive.Root;
301
+ var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
302
+ var AlertDialogPortal = AlertDialogPrimitive.Portal;
303
+ var AlertDialogOverlay = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
304
+ AlertDialogPrimitive.Overlay,
305
+ {
306
+ className: cn(
307
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
308
+ className
309
+ ),
310
+ ...props,
311
+ ref
312
+ }
313
+ ));
314
+ AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
315
+ var AlertDialogContent = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(AlertDialogPortal, { children: [
316
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(AlertDialogOverlay, {}),
317
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
318
+ AlertDialogPrimitive.Content,
319
+ {
320
+ ref,
321
+ className: cn(
322
+ "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 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%] sm:rounded-lg",
323
+ className
324
+ ),
325
+ ...props
326
+ }
327
+ )
328
+ ] }));
329
+ AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
330
+ var AlertDialogHeader = ({
331
+ className,
332
+ ...props
333
+ }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
334
+ "div",
335
+ {
336
+ className: cn(
337
+ "flex flex-col space-y-2 text-center sm:text-left",
338
+ className
339
+ ),
340
+ ...props
341
+ }
342
+ );
343
+ AlertDialogHeader.displayName = "AlertDialogHeader";
344
+ var AlertDialogFooter = ({
345
+ className,
346
+ ...props
347
+ }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
348
+ "div",
349
+ {
350
+ className: cn(
351
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
352
+ className
353
+ ),
354
+ ...props
355
+ }
356
+ );
357
+ AlertDialogFooter.displayName = "AlertDialogFooter";
358
+ var AlertDialogTitle = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
359
+ AlertDialogPrimitive.Title,
360
+ {
361
+ ref,
362
+ className: cn("text-lg font-semibold", className),
363
+ ...props
364
+ }
365
+ ));
366
+ AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
367
+ var AlertDialogDescription = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
368
+ AlertDialogPrimitive.Description,
369
+ {
370
+ ref,
371
+ className: cn("text-sm text-muted-foreground", className),
372
+ ...props
373
+ }
374
+ ));
375
+ AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
376
+ var AlertDialogAction = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
377
+ AlertDialogPrimitive.Action,
378
+ {
379
+ ref,
380
+ className: cn(buttonVariants({ variant: "destructive" }), className),
381
+ ...props
382
+ }
383
+ ));
384
+ AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
385
+ var AlertDialogCancel = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
386
+ AlertDialogPrimitive.Cancel,
387
+ {
388
+ ref,
389
+ className: cn(
390
+ buttonVariants({ variant: "outline" }),
391
+ "mt-2 sm:mt-0",
392
+ className
393
+ ),
394
+ ...props
395
+ }
396
+ ));
397
+ AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
398
+
399
+ // src/components/alert.tsx
400
+ var import_jsx_runtime4 = require("react/jsx-runtime");
401
+ var Alert = ({
402
+ title,
403
+ content,
404
+ confirmLabel,
405
+ cancelLabel,
406
+ open,
407
+ onOpenChange,
408
+ onConfirm,
409
+ children
410
+ }) => {
411
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(AlertDialog, { open, onOpenChange, children: [
412
+ children && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(AlertDialogTrigger, { asChild: true, children }),
413
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(AlertDialogContent, { className: "w-[460px]", children: [
414
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(AlertDialogHeader, { children: [
415
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(AlertDialogTitle, { children: title }),
416
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(AlertDialogDescription, { children: content })
417
+ ] }),
418
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(AlertDialogFooter, { children: [
419
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(AlertDialogCancel, { className: "rounded-sm", children: cancelLabel ?? "\uCDE8\uC18C" }),
420
+ onConfirm && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
421
+ AlertDialogAction,
422
+ {
423
+ onClick: onConfirm,
424
+ className: "rounded-sm bg-red-500 text-white",
425
+ children: confirmLabel ?? "\uD655\uC778"
426
+ }
427
+ )
428
+ ] })
429
+ ] })
430
+ ] });
431
+ };
432
+ var alert_default = Alert;
433
+
434
+ // src/components/badge.tsx
435
+ var import_class_variance_authority2 = require("class-variance-authority");
436
+ var import_jsx_runtime5 = require("react/jsx-runtime");
437
+ var badgeVariants = (0, import_class_variance_authority2.cva)(
438
+ "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",
439
+ {
440
+ variants: {
441
+ variant: {
442
+ default: "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",
443
+ secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
444
+ destructive: "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",
445
+ outline: "text-foreground"
446
+ }
447
+ },
448
+ defaultVariants: {
449
+ variant: "default"
450
+ }
451
+ }
452
+ );
453
+ function Badge({ className, variant, ...props }) {
454
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: cn(badgeVariants({ variant }), className), ...props });
455
+ }
456
+
457
+ // src/components/calendar.tsx
458
+ var import_react_icons = require("@radix-ui/react-icons");
459
+ var import_react_day_picker = require("react-day-picker");
460
+ var import_jsx_runtime6 = require("react/jsx-runtime");
461
+ var IconLeft = () => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_react_icons.ChevronLeftIcon, { className: "size-4" });
462
+ var IconRight = () => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_react_icons.ChevronRightIcon, { className: "size-4" });
463
+ function Calendar({
464
+ className,
465
+ classNames,
466
+ showOutsideDays = true,
467
+ ...props
468
+ }) {
469
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
470
+ import_react_day_picker.DayPicker,
471
+ {
472
+ showOutsideDays,
473
+ className: cn("p-3", className),
474
+ classNames: {
475
+ months: "flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0",
476
+ month: "space-y-4",
477
+ caption: "flex justify-center pt-1 relative items-center",
478
+ caption_label: "text-sm font-medium",
479
+ nav: "space-x-1 flex items-center",
480
+ nav_button: cn(
481
+ buttonVariants({ variant: "outline" }),
482
+ "h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"
483
+ ),
484
+ nav_button_previous: "absolute left-1",
485
+ nav_button_next: "absolute right-1",
486
+ table: "w-full border-collapse space-y-1",
487
+ head_row: "flex",
488
+ head_cell: "text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]",
489
+ row: "flex w-full mt-2",
490
+ cell: cn(
491
+ "relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected].day-range-end)]:rounded-r-md",
492
+ props.mode === "range" ? "[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md" : "[&:has([aria-selected])]:rounded-md"
493
+ ),
494
+ day: "h-8 w-8 p-0 font-normal aria-selected:opacity-100 rounded hover:bg-gray-100",
495
+ day_range_start: "day-range-start",
496
+ day_range_end: "day-range-end",
497
+ day_selected: "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground",
498
+ day_today: "bg-accent text-accent-foreground",
499
+ day_outside: "day-outside text-muted-foreground aria-selected:bg-accent/50 aria-selected:text-muted-foreground",
500
+ day_disabled: "text-muted-foreground opacity-50",
501
+ day_range_middle: "aria-selected:bg-accent aria-selected:text-accent-foreground",
502
+ day_hidden: "invisible",
503
+ ...classNames
504
+ },
505
+ components: {
506
+ IconLeft,
507
+ IconRight
508
+ },
509
+ ...props
510
+ }
511
+ );
512
+ }
513
+ Calendar.displayName = "Calendar";
514
+
515
+ // src/components/card.tsx
516
+ var React4 = __toESM(require("react"), 1);
517
+ var import_jsx_runtime7 = require("react/jsx-runtime");
518
+ var Card = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
519
+ "div",
520
+ {
521
+ ref,
522
+ className: cn("bg-card text-card-foreground shadow", className),
523
+ ...props
524
+ }
525
+ ));
526
+ Card.displayName = "Card";
527
+ var CardHeader = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { ref, className: cn("flex items-center", className), ...props }));
528
+ CardHeader.displayName = "CardHeader";
529
+ var CardTitle = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
530
+ "h3",
531
+ {
532
+ ref,
533
+ className: cn("font-semibold leading-none tracking-tight", className),
534
+ ...props
535
+ }
536
+ ));
537
+ CardTitle.displayName = "CardTitle";
538
+ var CardDescription = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
539
+ "p",
540
+ {
541
+ ref,
542
+ className: cn("text-sm text-muted-foreground", className),
543
+ ...props
544
+ }
545
+ ));
546
+ CardDescription.displayName = "CardDescription";
547
+ var CardContent = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { ref, className: cn("", className), ...props }));
548
+ CardContent.displayName = "CardContent";
549
+ var CardFooter = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { ref, className: cn("flex items-center", className), ...props }));
550
+ CardFooter.displayName = "CardFooter";
551
+
552
+ // src/components/carousel.tsx
553
+ var import_react_icons2 = require("@radix-ui/react-icons");
554
+ var import_embla_carousel_react = __toESM(require("embla-carousel-react"), 1);
555
+ var React5 = __toESM(require("react"), 1);
556
+ var import_jsx_runtime8 = require("react/jsx-runtime");
557
+ var CarouselContext = React5.createContext(null);
558
+ function useCarousel() {
559
+ const context = React5.useContext(CarouselContext);
560
+ if (!context) {
561
+ throw new Error("useCarousel must be used within a <Carousel />");
562
+ }
563
+ return context;
564
+ }
565
+ var Carousel = React5.forwardRef(
566
+ ({
567
+ orientation = "horizontal",
568
+ opts,
569
+ setApi,
570
+ plugins,
571
+ className,
572
+ children,
573
+ ...props
574
+ }, ref) => {
575
+ const [carouselRef, api] = (0, import_embla_carousel_react.default)(
576
+ {
577
+ ...opts,
578
+ axis: orientation === "horizontal" ? "x" : "y"
579
+ },
580
+ plugins
581
+ );
582
+ const [canScrollPrev, setCanScrollPrev] = React5.useState(false);
583
+ const [canScrollNext, setCanScrollNext] = React5.useState(false);
584
+ const onSelect = React5.useCallback((api2) => {
585
+ if (!api2) {
586
+ return;
587
+ }
588
+ setCanScrollPrev(api2.canScrollPrev());
589
+ setCanScrollNext(api2.canScrollNext());
590
+ }, []);
591
+ const scrollPrev = React5.useCallback(() => {
592
+ api?.scrollPrev();
593
+ }, [api]);
594
+ const scrollNext = React5.useCallback(() => {
595
+ api?.scrollNext();
596
+ }, [api]);
597
+ const handleKeyDown = React5.useCallback(
598
+ (event) => {
599
+ if (event.key === "ArrowLeft") {
600
+ event.preventDefault();
601
+ scrollPrev();
602
+ } else if (event.key === "ArrowRight") {
603
+ event.preventDefault();
604
+ scrollNext();
605
+ }
606
+ },
607
+ [scrollPrev, scrollNext]
608
+ );
609
+ React5.useEffect(() => {
610
+ if (!api || !setApi) {
611
+ return;
612
+ }
613
+ setApi(api);
614
+ }, [api, setApi]);
615
+ React5.useEffect(() => {
616
+ if (!api) {
617
+ return;
618
+ }
619
+ onSelect(api);
620
+ api.on("reInit", onSelect);
621
+ api.on("select", onSelect);
622
+ return () => {
623
+ api?.off("select", onSelect);
624
+ };
625
+ }, [api, onSelect]);
626
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
627
+ CarouselContext.Provider,
628
+ {
629
+ value: {
630
+ carouselRef,
631
+ api,
632
+ opts,
633
+ orientation: orientation || (opts?.axis === "y" ? "vertical" : "horizontal"),
634
+ scrollPrev,
635
+ scrollNext,
636
+ canScrollPrev,
637
+ canScrollNext
638
+ },
639
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
640
+ "div",
641
+ {
642
+ ref,
643
+ onKeyDownCapture: handleKeyDown,
644
+ className: cn("relative", className),
645
+ role: "region",
646
+ "aria-roledescription": "carousel",
647
+ ...props,
648
+ children
649
+ }
650
+ )
651
+ }
652
+ );
653
+ }
654
+ );
655
+ Carousel.displayName = "Carousel";
656
+ var CarouselContent = React5.forwardRef(({ className, ...props }, ref) => {
657
+ const { carouselRef, orientation } = useCarousel();
658
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { ref: carouselRef, className: "overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
659
+ "div",
660
+ {
661
+ ref,
662
+ className: cn(
663
+ "flex",
664
+ orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
665
+ className
666
+ ),
667
+ ...props
668
+ }
669
+ ) });
670
+ });
671
+ CarouselContent.displayName = "CarouselContent";
672
+ var CarouselItem = React5.forwardRef(({ className, ...props }, ref) => {
673
+ const { orientation } = useCarousel();
674
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
675
+ "div",
676
+ {
677
+ ref,
678
+ role: "group",
679
+ "aria-roledescription": "slide",
680
+ className: cn(
681
+ "min-w-0 shrink-0 grow-0 basis-full",
682
+ orientation === "horizontal" ? "pl-4" : "pt-4",
683
+ className
684
+ ),
685
+ ...props
686
+ }
687
+ );
688
+ });
689
+ CarouselItem.displayName = "CarouselItem";
690
+ var CarouselPrevious = React5.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
691
+ const { orientation, scrollPrev, canScrollPrev } = useCarousel();
692
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
693
+ Button,
694
+ {
695
+ ref,
696
+ variant,
697
+ className: cn(
698
+ "absolute h-8 w-8 rounded-full",
699
+ orientation === "horizontal" ? "-left-12 top-1/2 -translate-y-1/2" : "-top-12 left-1/2 -translate-x-1/2 rotate-90",
700
+ className
701
+ ),
702
+ disabled: !canScrollPrev,
703
+ onClick: scrollPrev,
704
+ ...props,
705
+ children: [
706
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_react_icons2.ArrowLeftIcon, { className: "size-4" }),
707
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "sr-only", children: "Previous slide" })
708
+ ]
709
+ }
710
+ );
711
+ });
712
+ CarouselPrevious.displayName = "CarouselPrevious";
713
+ var CarouselNext = React5.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
714
+ const { orientation, scrollNext, canScrollNext } = useCarousel();
715
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
716
+ Button,
717
+ {
718
+ ref,
719
+ variant,
720
+ className: cn(
721
+ "absolute h-8 w-8 rounded-full",
722
+ orientation === "horizontal" ? "-right-12 top-1/2 -translate-y-1/2" : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90",
723
+ className
724
+ ),
725
+ disabled: !canScrollNext,
726
+ onClick: scrollNext,
727
+ ...props,
728
+ children: [
729
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_react_icons2.ArrowRightIcon, { className: "size-4" }),
730
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "sr-only", children: "Next slide" })
731
+ ]
732
+ }
733
+ );
734
+ });
735
+ CarouselNext.displayName = "CarouselNext";
736
+
737
+ // src/components/checkbox.tsx
738
+ var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"), 1);
739
+ var import_react_icons3 = require("@radix-ui/react-icons");
740
+ var React6 = __toESM(require("react"), 1);
741
+ var import_jsx_runtime9 = require("react/jsx-runtime");
742
+ var Checkbox = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
743
+ CheckboxPrimitive.Root,
744
+ {
745
+ ref,
746
+ className: cn(
747
+ "peer h-4 w-4 shrink-0 rounded-sm border border-primary focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:text-white border-gray-300 data-[state=checked]:border-orange-500 data-[state=checked]:bg-orange-500 data-[state=unchecked]:bg-white",
748
+ className
749
+ ),
750
+ ...props,
751
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
752
+ CheckboxPrimitive.Indicator,
753
+ {
754
+ className: cn("flex items-center justify-center text-current"),
755
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_react_icons3.CheckIcon, { className: "size-4" })
756
+ }
757
+ )
758
+ }
759
+ ));
760
+ Checkbox.displayName = CheckboxPrimitive.Root.displayName;
761
+
762
+ // src/components/date-picker.tsx
763
+ var import_react_popover = require("@radix-ui/react-popover");
764
+ var import_date_fns = require("date-fns");
765
+ var import_locale = require("date-fns/locale");
766
+ var import_lucide_react2 = require("lucide-react");
767
+
768
+ // src/components/popover.tsx
769
+ var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"), 1);
770
+ var React7 = __toESM(require("react"), 1);
771
+ var import_jsx_runtime10 = require("react/jsx-runtime");
772
+ var Popover = PopoverPrimitive.Root;
773
+ var PopoverTrigger = PopoverPrimitive.Trigger;
774
+ var PopoverAnchor = PopoverPrimitive.Anchor;
775
+ var PopoverContent = React7.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(PopoverPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
776
+ PopoverPrimitive.Content,
777
+ {
778
+ ref,
779
+ align,
780
+ sideOffset,
781
+ className: cn(
782
+ "z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none 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",
783
+ className
784
+ ),
785
+ ...props
786
+ }
787
+ ) }));
788
+ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
789
+
790
+ // src/components/date-picker.tsx
791
+ var import_jsx_runtime11 = require("react/jsx-runtime");
792
+ function DateRangePicker({ value, setValue }) {
793
+ const selectedDate = value;
794
+ const handleSelect = (dateRange) => {
795
+ if (!dateRange) {
796
+ return;
797
+ }
798
+ const { from: startDate, to: endDate } = dateRange;
799
+ const maxEndDate = startDate ? (0, import_date_fns.addDays)(startDate, 6) : /* @__PURE__ */ new Date();
800
+ if (endDate && (0, import_date_fns.isAfter)(endDate, maxEndDate)) {
801
+ setValue({ from: startDate, to: maxEndDate });
802
+ return;
803
+ }
804
+ setValue({ from: startDate, to: endDate });
805
+ };
806
+ const disabledDates = (date) => {
807
+ const today = (0, import_date_fns.startOfDay)(/* @__PURE__ */ new Date());
808
+ if ((0, import_date_fns.isAfter)(date, today)) {
809
+ return true;
810
+ }
811
+ if (selectedDate) {
812
+ const { from: endDate } = selectedDate;
813
+ const maxEndDate = endDate ? (0, import_date_fns.addDays)(endDate, 6) : /* @__PURE__ */ new Date();
814
+ if ((0, import_date_fns.isAfter)(date, maxEndDate)) {
815
+ return true;
816
+ }
817
+ }
818
+ return false;
819
+ };
820
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Popover, { children: [
821
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
822
+ Button,
823
+ {
824
+ id: "date",
825
+ variant: "outline",
826
+ className: "h-4 gap-2 border-none p-0 text-[13px] font-bold shadow-none",
827
+ children: [
828
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { children: "\uC77C\uC2DC" }),
829
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react2.ChevronDownIcon, { width: 15, height: 18 })
830
+ ]
831
+ }
832
+ ) }),
833
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
834
+ import_react_popover.PopoverContent,
835
+ {
836
+ className: "z-50 w-auto min-w-32 overflow-hidden rounded-md border bg-white p-1 text-popover-foreground shadow-md\n 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",
837
+ align: "start",
838
+ children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
839
+ Calendar,
840
+ {
841
+ disabled: disabledDates,
842
+ locale: import_locale.ko,
843
+ initialFocus: true,
844
+ mode: "range",
845
+ selected: selectedDate,
846
+ onSelect: handleSelect,
847
+ numberOfMonths: 2
848
+ }
849
+ )
850
+ }
851
+ )
852
+ ] });
853
+ }
854
+ var date_picker_default = DateRangePicker;
855
+
856
+ // src/components/dialog.tsx
857
+ var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
858
+ var import_lucide_react3 = require("lucide-react");
859
+ var React8 = __toESM(require("react"), 1);
860
+ var import_jsx_runtime12 = require("react/jsx-runtime");
861
+ var Dialog = DialogPrimitive.Root;
862
+ var DialogTrigger = DialogPrimitive.Trigger;
863
+ var DialogPortal = DialogPrimitive.Portal;
864
+ var DialogClose = DialogPrimitive.Close;
865
+ var DialogOverlay = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
866
+ DialogPrimitive.Overlay,
867
+ {
868
+ ref,
869
+ className: cn(
870
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
871
+ className
872
+ ),
873
+ ...props
874
+ }
875
+ ));
876
+ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
877
+ var DialogContent = React8.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(DialogPortal, { children: [
878
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DialogOverlay, {}),
879
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
880
+ DialogPrimitive.Content,
881
+ {
882
+ ref,
883
+ className: cn(
884
+ "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 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%] sm:rounded-lg",
885
+ className
886
+ ),
887
+ tabIndex: void 0,
888
+ ...props,
889
+ children: [
890
+ children,
891
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(DialogPrimitive.Close, { className: "absolute right-6 top-6 rounded-sm text-gray-400 opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
892
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react3.X, { className: "size-6" }),
893
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "sr-only", children: "Close" })
894
+ ] })
895
+ ]
896
+ }
897
+ )
898
+ ] }));
899
+ DialogContent.displayName = DialogPrimitive.Content.displayName;
900
+ var DialogHeader = ({
901
+ className,
902
+ ...props
903
+ }) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
904
+ "div",
905
+ {
906
+ className: cn(
907
+ "flex flex-col space-y-1.5 text-center sm:text-left",
908
+ className
909
+ ),
910
+ ...props
911
+ }
912
+ );
913
+ DialogHeader.displayName = "DialogHeader";
914
+ var DialogFooter = ({
915
+ className,
916
+ ...props
917
+ }) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
918
+ "div",
919
+ {
920
+ className: cn("flex flex-col-reverse sm:flex-row", className),
921
+ ...props
922
+ }
923
+ );
924
+ DialogFooter.displayName = "DialogFooter";
925
+ var DialogTitle = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
926
+ DialogPrimitive.Title,
927
+ {
928
+ ref,
929
+ className: cn(
930
+ "text-lg font-semibold leading-none tracking-tight",
931
+ className
932
+ ),
933
+ ...props
934
+ }
935
+ ));
936
+ DialogTitle.displayName = DialogPrimitive.Title.displayName;
937
+ var DialogDescription = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
938
+ DialogPrimitive.Description,
939
+ {
940
+ ref,
941
+ className: cn("text-sm text-muted-foreground", className),
942
+ ...props
943
+ }
944
+ ));
945
+ DialogDescription.displayName = DialogPrimitive.Description.displayName;
946
+
947
+ // src/components/dropdown-menu.tsx
948
+ var DropdownMenuPrimitive = __toESM(require("@radix-ui/react-dropdown-menu"), 1);
949
+ var import_react_icons4 = require("@radix-ui/react-icons");
950
+ var React9 = __toESM(require("react"), 1);
951
+ var import_jsx_runtime13 = require("react/jsx-runtime");
952
+ var DropdownMenu = DropdownMenuPrimitive.Root;
953
+ var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
954
+ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
955
+ var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
956
+ var DropdownMenuSub = DropdownMenuPrimitive.Sub;
957
+ var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
958
+ var DropdownMenuSubTrigger = React9.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
959
+ DropdownMenuPrimitive.SubTrigger,
960
+ {
961
+ ref,
962
+ className: cn(
963
+ "flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
964
+ inset && "pl-8",
965
+ className
966
+ ),
967
+ ...props,
968
+ children: [
969
+ children,
970
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_react_icons4.ChevronRightIcon, { className: "ml-auto" })
971
+ ]
972
+ }
973
+ ));
974
+ DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
975
+ var DropdownMenuSubContent = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
976
+ DropdownMenuPrimitive.SubContent,
977
+ {
978
+ ref,
979
+ className: cn(
980
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg 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",
981
+ className
982
+ ),
983
+ ...props
984
+ }
985
+ ));
986
+ DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
987
+ var DropdownMenuContent = React9.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
988
+ DropdownMenuPrimitive.Content,
989
+ {
990
+ ref,
991
+ sideOffset,
992
+ className: cn(
993
+ "z-50 py-3 min-w-[8rem] overflow-hidden border bg-popover text-popover-foreground outline-none border-gray-300",
994
+ "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",
995
+ className
996
+ ),
997
+ ...props
998
+ }
999
+ ) }));
1000
+ DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
1001
+ var DropdownMenuItem = React9.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1002
+ DropdownMenuPrimitive.Item,
1003
+ {
1004
+ ref,
1005
+ className: cn(
1006
+ "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
1007
+ inset && "pl-8",
1008
+ className
1009
+ ),
1010
+ ...props
1011
+ }
1012
+ ));
1013
+ DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
1014
+ var DropdownMenuCheckboxItem = React9.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
1015
+ DropdownMenuPrimitive.CheckboxItem,
1016
+ {
1017
+ ref,
1018
+ className: cn(
1019
+ "relative flex w-full h-11 cursor-default select-none items-center py-1.5 pl-10 pr-2 text-body-md outline-none",
1020
+ "focus:bg-gray-100",
1021
+ "data-[state=checked]:text-orange-500 ",
1022
+ "data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1023
+ className
1024
+ ),
1025
+ checked,
1026
+ ...props,
1027
+ children: [
1028
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "absolute left-4 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1029
+ import_react_icons4.CheckIcon,
1030
+ {
1031
+ className: cn(
1032
+ "size-5 transition-colors",
1033
+ checked ? "text-orange-500" : "text-gray-300"
1034
+ )
1035
+ }
1036
+ ) }),
1037
+ children
1038
+ ]
1039
+ }
1040
+ ));
1041
+ DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
1042
+ var DropdownMenuRadioItem = React9.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
1043
+ DropdownMenuPrimitive.RadioItem,
1044
+ {
1045
+ ref,
1046
+ className: cn(
1047
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1048
+ className
1049
+ ),
1050
+ ...props,
1051
+ children: [
1052
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_react_icons4.DotFilledIcon, { className: "size-2 fill-current" }) }) }),
1053
+ children
1054
+ ]
1055
+ }
1056
+ ));
1057
+ DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
1058
+ var DropdownMenuLabel = React9.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1059
+ DropdownMenuPrimitive.Label,
1060
+ {
1061
+ ref,
1062
+ className: cn(
1063
+ "px-2 py-1.5 text-sm font-semibold",
1064
+ inset && "pl-8",
1065
+ className
1066
+ ),
1067
+ ...props
1068
+ }
1069
+ ));
1070
+ DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
1071
+ var DropdownMenuSeparator = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1072
+ DropdownMenuPrimitive.Separator,
1073
+ {
1074
+ ref,
1075
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
1076
+ ...props
1077
+ }
1078
+ ));
1079
+ DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
1080
+ var DropdownMenuShortcut = ({
1081
+ className,
1082
+ ...props
1083
+ }) => {
1084
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1085
+ "span",
1086
+ {
1087
+ className: cn("ml-auto text-xs tracking-widest opacity-60", className),
1088
+ ...props
1089
+ }
1090
+ );
1091
+ };
1092
+ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
1093
+
1094
+ // src/components/form.tsx
1095
+ var import_react_slot2 = require("@radix-ui/react-slot");
1096
+ var React11 = __toESM(require("react"), 1);
1097
+ var import_react_hook_form = require("react-hook-form");
1098
+
1099
+ // src/components/label.tsx
1100
+ var LabelPrimitive = __toESM(require("@radix-ui/react-label"), 1);
1101
+ var import_class_variance_authority3 = require("class-variance-authority");
1102
+ var React10 = __toESM(require("react"), 1);
1103
+ var import_jsx_runtime14 = require("react/jsx-runtime");
1104
+ var labelVariants = (0, import_class_variance_authority3.cva)(
1105
+ "mb-2 flex items-center text-[0.875rem] font-bold leading-5 text-gray-800 peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
1106
+ );
1107
+ var Label2 = React10.forwardRef(({ className, isRequired, description, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1108
+ LabelPrimitive.Root,
1109
+ {
1110
+ ref,
1111
+ className: cn(labelVariants(), className),
1112
+ ...props,
1113
+ children: [
1114
+ props.children,
1115
+ isRequired && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "ml-1 text-red-500", children: "*" }),
1116
+ description && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "ml-1 text-body-md text-gray-500", children: description })
1117
+ ]
1118
+ }
1119
+ ));
1120
+ Label2.displayName = LabelPrimitive.Root.displayName;
1121
+
1122
+ // src/components/form.tsx
1123
+ var import_jsx_runtime15 = require("react/jsx-runtime");
1124
+ var Form = import_react_hook_form.FormProvider;
1125
+ var FormFieldContext = React11.createContext(
1126
+ {}
1127
+ );
1128
+ var FormField = ({
1129
+ ...props
1130
+ }) => {
1131
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_react_hook_form.Controller, { ...props }) });
1132
+ };
1133
+ var useFormField = () => {
1134
+ const fieldContext = React11.useContext(FormFieldContext);
1135
+ const itemContext = React11.useContext(FormItemContext);
1136
+ const { getFieldState, formState } = (0, import_react_hook_form.useFormContext)();
1137
+ const fieldState = getFieldState(fieldContext.name, formState);
1138
+ if (!fieldContext) {
1139
+ throw new Error("useFormField should be used within <FormField>");
1140
+ }
1141
+ const { id } = itemContext;
1142
+ return {
1143
+ id,
1144
+ name: fieldContext.name,
1145
+ formItemId: `${id}-form-item`,
1146
+ formDescriptionId: `${id}-form-item-description`,
1147
+ formMessageId: `${id}-form-item-message`,
1148
+ ...fieldState
1149
+ };
1150
+ };
1151
+ var FormItemContext = React11.createContext(
1152
+ {}
1153
+ );
1154
+ var FormItem = React11.forwardRef(({ className, ...props }, ref) => {
1155
+ const id = React11.useId();
1156
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { ref, className: cn("space-y-2", className), ...props }) });
1157
+ });
1158
+ FormItem.displayName = "FormItem";
1159
+ var FormLabel = React11.forwardRef(({ className, isRequired, description, ...props }, ref) => {
1160
+ const { error, formItemId } = useFormField();
1161
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1162
+ Label2,
1163
+ {
1164
+ ref,
1165
+ className: cn(error && "text-destructive", className),
1166
+ htmlFor: formItemId,
1167
+ isRequired,
1168
+ description,
1169
+ ...props
1170
+ }
1171
+ );
1172
+ });
1173
+ FormLabel.displayName = "FormLabel";
1174
+ var FormControl = React11.forwardRef(({ ...props }, ref) => {
1175
+ const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
1176
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1177
+ import_react_slot2.Slot,
1178
+ {
1179
+ ref,
1180
+ id: formItemId,
1181
+ "aria-describedby": !error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`,
1182
+ "aria-invalid": !!error,
1183
+ ...props
1184
+ }
1185
+ );
1186
+ });
1187
+ FormControl.displayName = "FormControl";
1188
+ var FormDescription = React11.forwardRef(({ className, ...props }, ref) => {
1189
+ const { formDescriptionId } = useFormField();
1190
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1191
+ "p",
1192
+ {
1193
+ ref,
1194
+ id: formDescriptionId,
1195
+ className: cn("text-[0.8rem] text-muted-foreground", className),
1196
+ ...props
1197
+ }
1198
+ );
1199
+ });
1200
+ FormDescription.displayName = "FormDescription";
1201
+ var FormMessage = React11.forwardRef(({ className, children, ...props }, ref) => {
1202
+ const { error, formMessageId } = useFormField();
1203
+ const body = error ? String(error?.message) : children;
1204
+ if (!body) {
1205
+ return null;
1206
+ }
1207
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1208
+ "p",
1209
+ {
1210
+ ref,
1211
+ id: formMessageId,
1212
+ className: cn("text-destructive text-xs", className),
1213
+ ...props,
1214
+ children: body
1215
+ }
1216
+ );
1217
+ });
1218
+ FormMessage.displayName = "FormMessage";
1219
+
1220
+ // src/components/input.tsx
1221
+ var import_class_variance_authority4 = require("class-variance-authority");
1222
+ var React12 = __toESM(require("react"), 1);
1223
+ var import_jsx_runtime16 = require("react/jsx-runtime");
1224
+ var inputVariants = (0, import_class_variance_authority4.cva)(
1225
+ "m-0 h-10 w-full rounded-sm border border-gray-300 px-4 py-2 text-body-sm outline-none placeholder:text-gray-500",
1226
+ {
1227
+ variants: {
1228
+ variant: {
1229
+ default: "bg-white text-gray-700 focus:border-orange-500"
1230
+ }
1231
+ },
1232
+ defaultVariants: {
1233
+ variant: "default"
1234
+ }
1235
+ }
1236
+ );
1237
+ var Input = React12.forwardRef(
1238
+ ({ className, type, variant, isError, disabled, ...props }, ref) => {
1239
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1240
+ "input",
1241
+ {
1242
+ type,
1243
+ className: cn(
1244
+ inputVariants({
1245
+ variant,
1246
+ className
1247
+ }),
1248
+ isError && "border-red-500 bg-white text-red-500 focus:outline-none focus:border-red-500",
1249
+ disabled && "cursor-not-allowed bg-gray-100 placeholder:text-gray-300"
1250
+ ),
1251
+ ref,
1252
+ ...props,
1253
+ disabled
1254
+ }
1255
+ );
1256
+ }
1257
+ );
1258
+ Input.displayName = "Input";
1259
+
1260
+ // src/components/navigation-menu.tsx
1261
+ var NavigationMenuPrimitive = __toESM(require("@radix-ui/react-navigation-menu"), 1);
1262
+ var import_class_variance_authority5 = require("class-variance-authority");
1263
+ var import_lucide_react4 = require("lucide-react");
1264
+ var import_jsx_runtime17 = require("react/jsx-runtime");
1265
+ function NavigationMenu({
1266
+ className,
1267
+ children,
1268
+ viewport = true,
1269
+ ...props
1270
+ }) {
1271
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
1272
+ NavigationMenuPrimitive.Root,
1273
+ {
1274
+ "data-slot": "navigation-menu",
1275
+ "data-viewport": viewport,
1276
+ className: cn(
1277
+ "group/navigation-menu relative flex max-w-max flex-1 items-center justify-center",
1278
+ className
1279
+ ),
1280
+ ...props,
1281
+ children: [
1282
+ children,
1283
+ viewport && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(NavigationMenuViewport, {})
1284
+ ]
1285
+ }
1286
+ );
1287
+ }
1288
+ function NavigationMenuList({
1289
+ className,
1290
+ ...props
1291
+ }) {
1292
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1293
+ NavigationMenuPrimitive.List,
1294
+ {
1295
+ "data-slot": "navigation-menu-list",
1296
+ className: cn(
1297
+ "group flex flex-1 list-none items-center justify-center gap-1",
1298
+ className
1299
+ ),
1300
+ ...props
1301
+ }
1302
+ );
1303
+ }
1304
+ function NavigationMenuItem({
1305
+ className,
1306
+ ...props
1307
+ }) {
1308
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1309
+ NavigationMenuPrimitive.Item,
1310
+ {
1311
+ "data-slot": "navigation-menu-item",
1312
+ className: cn("relative", className),
1313
+ ...props
1314
+ }
1315
+ );
1316
+ }
1317
+ var navigationMenuTriggerStyle = (0, import_class_variance_authority5.cva)(
1318
+ "group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm outline-none transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50"
1319
+ );
1320
+ function NavigationMenuTrigger({
1321
+ className,
1322
+ children,
1323
+ ...props
1324
+ }) {
1325
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
1326
+ NavigationMenuPrimitive.Trigger,
1327
+ {
1328
+ "data-slot": "navigation-menu-trigger",
1329
+ className: cn(navigationMenuTriggerStyle(), "group", className),
1330
+ ...props,
1331
+ children: [
1332
+ children,
1333
+ " ",
1334
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1335
+ import_lucide_react4.ChevronDownIcon,
1336
+ {
1337
+ className: "relative top-px ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180",
1338
+ "aria-hidden": "true"
1339
+ }
1340
+ )
1341
+ ]
1342
+ }
1343
+ );
1344
+ }
1345
+ function NavigationMenuContent({
1346
+ className,
1347
+ ...props
1348
+ }) {
1349
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1350
+ NavigationMenuPrimitive.Content,
1351
+ {
1352
+ "data-slot": "navigation-menu-content",
1353
+ className: cn(
1354
+ "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 p-2 pr-2.5 md:absolute md:w-auto z-[999]",
1355
+ "group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none",
1356
+ className
1357
+ ),
1358
+ ...props
1359
+ }
1360
+ );
1361
+ }
1362
+ function NavigationMenuViewport({
1363
+ className,
1364
+ ...props
1365
+ }) {
1366
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1367
+ "div",
1368
+ {
1369
+ className: cn(
1370
+ "absolute top-full left-0 isolate z-50 flex justify-center"
1371
+ ),
1372
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1373
+ NavigationMenuPrimitive.Viewport,
1374
+ {
1375
+ "data-slot": "navigation-menu-viewport",
1376
+ className: cn(
1377
+ "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-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]",
1378
+ className
1379
+ ),
1380
+ ...props
1381
+ }
1382
+ )
1383
+ }
1384
+ );
1385
+ }
1386
+ function NavigationMenuLink({
1387
+ className,
1388
+ ...props
1389
+ }) {
1390
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1391
+ NavigationMenuPrimitive.Link,
1392
+ {
1393
+ "data-slot": "navigation-menu-link",
1394
+ className: cn(
1395
+ "data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4",
1396
+ className
1397
+ ),
1398
+ ...props
1399
+ }
1400
+ );
1401
+ }
1402
+ function NavigationMenuIndicator({
1403
+ className,
1404
+ ...props
1405
+ }) {
1406
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1407
+ NavigationMenuPrimitive.Indicator,
1408
+ {
1409
+ "data-slot": "navigation-menu-indicator",
1410
+ className: cn(
1411
+ "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",
1412
+ className
1413
+ ),
1414
+ ...props,
1415
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "relative top-[60%] size-2 rotate-45 rounded-tl-sm bg-border shadow-md" })
1416
+ }
1417
+ );
1418
+ }
1419
+
1420
+ // src/components/pagination.tsx
1421
+ var import_react_icons5 = require("@radix-ui/react-icons");
1422
+ var React13 = __toESM(require("react"), 1);
1423
+ var import_jsx_runtime18 = require("react/jsx-runtime");
1424
+ var Pagination = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1425
+ "nav",
1426
+ {
1427
+ role: "navigation",
1428
+ "aria-label": "pagination",
1429
+ className: cn("mx-auto flex w-full justify-center", className),
1430
+ ...props
1431
+ }
1432
+ );
1433
+ Pagination.displayName = "Pagination";
1434
+ var PaginationContent = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1435
+ "ul",
1436
+ {
1437
+ ref,
1438
+ className: cn("flex flex-row items-center gap-2", className),
1439
+ ...props
1440
+ }
1441
+ ));
1442
+ PaginationContent.displayName = "PaginationContent";
1443
+ var PaginationItem = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("li", { ref, className: cn("w-fit", className), ...props }));
1444
+ PaginationItem.displayName = "PaginationItem";
1445
+ var PaginationLink = ({
1446
+ className,
1447
+ isActive,
1448
+ size = "xs",
1449
+ ...props
1450
+ }) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1451
+ "a",
1452
+ {
1453
+ "aria-current": isActive ? "page" : void 0,
1454
+ className: cn(
1455
+ buttonVariants({
1456
+ variant: isActive ? "primary" : "text",
1457
+ size
1458
+ }),
1459
+ "min-w-7 gap-1 p-0",
1460
+ className
1461
+ ),
1462
+ ...props
1463
+ }
1464
+ );
1465
+ PaginationLink.displayName = "PaginationLink";
1466
+ var PaginationPrevious = ({
1467
+ className,
1468
+ ...props
1469
+ }) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1470
+ PaginationLink,
1471
+ {
1472
+ "aria-label": "Go to previous page",
1473
+ size: "xs",
1474
+ className: cn("w-fit", className),
1475
+ ...props,
1476
+ children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex items-center gap-0.5", children: [
1477
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_react_icons5.ChevronLeftIcon, { className: "size-4" }),
1478
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "text-title-md", children: "\uC774\uC804" })
1479
+ ] })
1480
+ }
1481
+ );
1482
+ PaginationPrevious.displayName = "PaginationPrevious";
1483
+ var PaginationRangePrevious = ({
1484
+ className,
1485
+ ...props
1486
+ }) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1487
+ PaginationLink,
1488
+ {
1489
+ "aria-label": "Go to previous line",
1490
+ size: "xs",
1491
+ className: cn(className),
1492
+ ...props,
1493
+ children: [
1494
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_react_icons5.DoubleArrowLeftIcon, { className: "size-4" }),
1495
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "text-title-md", children: "10\uD398\uC774\uC9C0" })
1496
+ ]
1497
+ }
1498
+ );
1499
+ PaginationRangePrevious.displayName = "PaginationRangePrevious";
1500
+ var PaginationNext = ({
1501
+ className,
1502
+ ...props
1503
+ }) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1504
+ PaginationLink,
1505
+ {
1506
+ "aria-label": "Go to next page",
1507
+ size: "xs",
1508
+ className,
1509
+ ...props,
1510
+ children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex items-center gap-0.5", children: [
1511
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "text-title-md", children: "\uB2E4\uC74C" }),
1512
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_react_icons5.ChevronRightIcon, { className: "size-4" })
1513
+ ] })
1514
+ }
1515
+ );
1516
+ PaginationNext.displayName = "PaginationNext";
1517
+ var PaginationRangeNext = ({
1518
+ className,
1519
+ ...props
1520
+ }) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1521
+ PaginationLink,
1522
+ {
1523
+ "aria-label": "Go to next line",
1524
+ size: "xs",
1525
+ className: cn(className),
1526
+ ...props,
1527
+ children: [
1528
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "text-title-md", children: "10\uD398\uC774\uC9C0" }),
1529
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_react_icons5.DoubleArrowRightIcon, { className: "size-4" })
1530
+ ]
1531
+ }
1532
+ );
1533
+ PaginationRangeNext.displayName = "PaginationRangeNext";
1534
+ var PaginationEllipsis = ({
1535
+ className,
1536
+ ...props
1537
+ }) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1538
+ "span",
1539
+ {
1540
+ "aria-hidden": true,
1541
+ className: cn("flex h-9 w-9 items-center justify-center", className),
1542
+ ...props,
1543
+ children: [
1544
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_react_icons5.DotsHorizontalIcon, { className: "size-4" }),
1545
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "sr-only", children: "More pages" })
1546
+ ]
1547
+ }
1548
+ );
1549
+ PaginationEllipsis.displayName = "PaginationEllipsis";
1550
+ var PaginationFirstPage = ({
1551
+ className,
1552
+ ...props
1553
+ }) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1554
+ PaginationLink,
1555
+ {
1556
+ "aria-label": "Go to first page",
1557
+ size: "xs",
1558
+ className: cn(className),
1559
+ ...props,
1560
+ children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "text-title-md", children: "\uCC98\uC74C\uC73C\uB85C" })
1561
+ }
1562
+ );
1563
+ PaginationFirstPage.displayName = "PaginationFirstPage";
1564
+
1565
+ // src/components/radio-group.tsx
1566
+ var RadioGroupPrimitive = __toESM(require("@radix-ui/react-radio-group"), 1);
1567
+ var import_lucide_react5 = require("lucide-react");
1568
+ var import_jsx_runtime19 = require("react/jsx-runtime");
1569
+ function RadioGroup2({
1570
+ className,
1571
+ ...props
1572
+ }) {
1573
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1574
+ RadioGroupPrimitive.Root,
1575
+ {
1576
+ "data-slot": "radio-group",
1577
+ className: cn("grid gap-3", className),
1578
+ ...props
1579
+ }
1580
+ );
1581
+ }
1582
+ function RadioGroupItem({
1583
+ className,
1584
+ ...props
1585
+ }) {
1586
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1587
+ RadioGroupPrimitive.Item,
1588
+ {
1589
+ "data-slot": "radio-group-item",
1590
+ className: cn(
1591
+ "border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-orange-500 border-gray-400",
1592
+ className
1593
+ ),
1594
+ ...props,
1595
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1596
+ RadioGroupPrimitive.Indicator,
1597
+ {
1598
+ "data-slot": "radio-group-indicator",
1599
+ className: "relative flex items-center justify-center",
1600
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react5.CircleIcon, { className: "absolute left-1/2 top-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-orange-500 text-orange-500" })
1601
+ }
1602
+ )
1603
+ }
1604
+ );
1605
+ }
1606
+
1607
+ // src/components/scroll-area.tsx
1608
+ var ScrollAreaPrimitive = __toESM(require("@radix-ui/react-scroll-area"), 1);
1609
+ var import_react = require("react");
1610
+ var React14 = __toESM(require("react"), 1);
1611
+ var import_jsx_runtime20 = require("react/jsx-runtime");
1612
+ var ScrollArea = (0, import_react.forwardRef)(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1613
+ ScrollAreaPrimitive.Root,
1614
+ {
1615
+ ref,
1616
+ className: cn("relative overflow-hidden", className),
1617
+ ...props,
1618
+ children: [
1619
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ScrollAreaPrimitive.Viewport, { className: "size-full rounded-[inherit]", children }),
1620
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ScrollBar, {}),
1621
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ScrollAreaPrimitive.Corner, {})
1622
+ ]
1623
+ }
1624
+ ));
1625
+ ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
1626
+ var ScrollBar = React14.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1627
+ ScrollAreaPrimitive.ScrollAreaScrollbar,
1628
+ {
1629
+ ref,
1630
+ orientation,
1631
+ className: cn(
1632
+ "flex touch-none select-none transition-colors",
1633
+ orientation === "vertical" && "h-full w-4 border-l border-l-transparent p-[2.5px]",
1634
+ orientation === "horizontal" && "h-4 flex-col border-t border-t-transparent p-[2.5px]",
1635
+ className
1636
+ ),
1637
+ ...props,
1638
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-black/10" })
1639
+ }
1640
+ ));
1641
+ ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
1642
+
1643
+ // src/components/select.tsx
1644
+ var import_react_icons6 = require("@radix-ui/react-icons");
1645
+ var SelectPrimitive = __toESM(require("@radix-ui/react-select"), 1);
1646
+ var React15 = __toESM(require("react"), 1);
1647
+ var import_jsx_runtime21 = require("react/jsx-runtime");
1648
+ var Select = SelectPrimitive.Root;
1649
+ var SelectGroup = SelectPrimitive.Group;
1650
+ var SelectValue = SelectPrimitive.Value;
1651
+ var SelectTrigger = React15.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1652
+ SelectPrimitive.Trigger,
1653
+ {
1654
+ ref,
1655
+ className: cn(
1656
+ "flex h-10 w-full items-center justify-between whitespace-nowrap rounded-sm border border-gray-300 bg-transparent px-3 py-2 text-body-md ring-offset-background placeholder:text-muted-foreground focus:outline-none outline-none focus:border-orange-500 [&>span]:truncate [&[data-state=open]>svg]:rotate-180 transition-all bg-white",
1657
+ "disabled:cursor-not-allowed disabled:bg-gray-100 disabled:text-gray-300 disabled:border-gray-300",
1658
+ className
1659
+ ),
1660
+ ...props,
1661
+ children
1662
+ }
1663
+ ));
1664
+ SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
1665
+ var SelectScrollUpButton = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1666
+ SelectPrimitive.ScrollUpButton,
1667
+ {
1668
+ ref,
1669
+ className: cn(
1670
+ "flex cursor-default items-center justify-center py-1",
1671
+ className
1672
+ ),
1673
+ ...props,
1674
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react_icons6.ChevronUpIcon, { className: "size-4" })
1675
+ }
1676
+ ));
1677
+ SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
1678
+ var SelectScrollDownButton = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1679
+ SelectPrimitive.ScrollDownButton,
1680
+ {
1681
+ ref,
1682
+ className: cn(
1683
+ "flex cursor-default items-center justify-center py-1",
1684
+ className
1685
+ ),
1686
+ ...props,
1687
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react_icons6.ChevronDownIcon, { className: "size-4" })
1688
+ }
1689
+ ));
1690
+ SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
1691
+ var SelectContent = React15.forwardRef(({ className, children, position = "popper", container, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SelectPrimitive.Portal, { container, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
1692
+ SelectPrimitive.Content,
1693
+ {
1694
+ ref,
1695
+ className: cn(
1696
+ "relative z-[60] max-h-96 min-w-[8rem] overflow-hidden rounded-sm border 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 border-gray-300",
1697
+ 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 w-[var(--radix-select-trigger-width)]",
1698
+ className
1699
+ ),
1700
+ position,
1701
+ ...props,
1702
+ children: [
1703
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SelectScrollUpButton, {}),
1704
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1705
+ SelectPrimitive.Viewport,
1706
+ {
1707
+ className: cn(
1708
+ "py-3",
1709
+ position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
1710
+ ),
1711
+ children
1712
+ }
1713
+ ),
1714
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SelectScrollDownButton, {})
1715
+ ]
1716
+ }
1717
+ ) }));
1718
+ SelectContent.displayName = SelectPrimitive.Content.displayName;
1719
+ var SelectLabel = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1720
+ SelectPrimitive.Label,
1721
+ {
1722
+ ref,
1723
+ className: cn("px-2 py-1.5 text-sm font-semibold", className),
1724
+ ...props
1725
+ }
1726
+ ));
1727
+ SelectLabel.displayName = SelectPrimitive.Label.displayName;
1728
+ var SelectItem = React15.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
1729
+ SelectPrimitive.Item,
1730
+ {
1731
+ ref,
1732
+ className: cn(
1733
+ "relative flex w-full h-11 cursor-default select-none items-center py-1.5 pl-4 pr-2 text-body-md outline-none",
1734
+ "focus:bg-gray-100",
1735
+ "data-[state=checked]:text-orange-500 data-[state=checked]:pl-10",
1736
+ "data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1737
+ className
1738
+ ),
1739
+ ...props,
1740
+ children: [
1741
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "absolute left-4 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react_icons6.CheckIcon, { className: "size-5 text-orange-500" }) }) }),
1742
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SelectPrimitive.ItemText, { children })
1743
+ ]
1744
+ }
1745
+ ));
1746
+ SelectItem.displayName = SelectPrimitive.Item.displayName;
1747
+ var SelectSeparator = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1748
+ SelectPrimitive.Separator,
1749
+ {
1750
+ ref,
1751
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
1752
+ ...props
1753
+ }
1754
+ ));
1755
+ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
1756
+
1757
+ // src/components/separator.tsx
1758
+ var SeparatorPrimitive = __toESM(require("@radix-ui/react-separator"), 1);
1759
+ var React16 = __toESM(require("react"), 1);
1760
+ var import_jsx_runtime22 = require("react/jsx-runtime");
1761
+ var Separator3 = React16.forwardRef(
1762
+ ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1763
+ SeparatorPrimitive.Root,
1764
+ {
1765
+ ref,
1766
+ decorative,
1767
+ orientation,
1768
+ className: cn(
1769
+ "shrink-0 bg-border",
1770
+ orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
1771
+ className
1772
+ ),
1773
+ ...props
1774
+ }
1775
+ )
1776
+ );
1777
+ Separator3.displayName = SeparatorPrimitive.Root.displayName;
1778
+
1779
+ // src/components/sheet.tsx
1780
+ var import_react_icons7 = require("@radix-ui/react-icons");
1781
+ var SheetPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
1782
+ var import_class_variance_authority6 = require("class-variance-authority");
1783
+ var React17 = __toESM(require("react"), 1);
1784
+ var import_jsx_runtime23 = require("react/jsx-runtime");
1785
+ var Sheet = SheetPrimitive.Root;
1786
+ var SheetTrigger = SheetPrimitive.Trigger;
1787
+ var SheetClose = SheetPrimitive.Close;
1788
+ var SheetPortal = SheetPrimitive.Portal;
1789
+ var SheetOverlay = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1790
+ SheetPrimitive.Overlay,
1791
+ {
1792
+ className: cn(
1793
+ "fixed inset-0 z-50 bg-black/10 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1794
+ className
1795
+ ),
1796
+ ...props,
1797
+ ref
1798
+ }
1799
+ ));
1800
+ SheetOverlay.displayName = SheetPrimitive.Overlay.displayName;
1801
+ var sheetVariants = (0, import_class_variance_authority6.cva)("fixed z-50 gap-4 bg-background shadow-lg", {
1802
+ variants: {
1803
+ side: {
1804
+ top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
1805
+ bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
1806
+ 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",
1807
+ 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"
1808
+ }
1809
+ },
1810
+ defaultVariants: {
1811
+ side: "right"
1812
+ }
1813
+ });
1814
+ var closeButtonVariants = (0, import_class_variance_authority6.cva)(
1815
+ "absolute right-2.5 top-2.5 rounded-sm opacity-80 ring-offset-background transition-opacity hover:opacity-100 disabled:pointer-events-none data-[state=open]:bg-secondary",
1816
+ {
1817
+ variants: {
1818
+ color: {
1819
+ default: "text-gray-400",
1820
+ primary: "text-[#ff7a00]",
1821
+ red: "text-[#ff0000]"
1822
+ }
1823
+ },
1824
+ defaultVariants: {
1825
+ color: "default"
1826
+ }
1827
+ }
1828
+ );
1829
+ var SheetContent = React17.forwardRef(
1830
+ ({
1831
+ side = "right",
1832
+ closeButtonColor: color = "default",
1833
+ className,
1834
+ children,
1835
+ ...props
1836
+ }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(SheetPortal, { children: [
1837
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SheetOverlay, {}),
1838
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
1839
+ SheetPrimitive.Content,
1840
+ {
1841
+ ref,
1842
+ className: cn(sheetVariants({ side }), className),
1843
+ ...props,
1844
+ children: [
1845
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(SheetPrimitive.Close, { className: closeButtonVariants({ color }), children: [
1846
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react_icons7.Cross2Icon, { className: "size-4" }),
1847
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "sr-only", children: "Close" })
1848
+ ] }),
1849
+ children
1850
+ ]
1851
+ }
1852
+ )
1853
+ ] })
1854
+ );
1855
+ SheetContent.displayName = SheetPrimitive.Content.displayName;
1856
+ var SheetHeader = ({
1857
+ className,
1858
+ ...props
1859
+ }) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1860
+ "div",
1861
+ {
1862
+ className: cn(
1863
+ "flex flex-col space-y-2 text-center sm:text-left",
1864
+ className
1865
+ ),
1866
+ ...props
1867
+ }
1868
+ );
1869
+ SheetHeader.displayName = "SheetHeader";
1870
+ var SheetFooter = ({
1871
+ className,
1872
+ ...props
1873
+ }) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1874
+ "div",
1875
+ {
1876
+ className: cn(
1877
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
1878
+ className
1879
+ ),
1880
+ ...props
1881
+ }
1882
+ );
1883
+ SheetFooter.displayName = "SheetFooter";
1884
+ var SheetTitle = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1885
+ SheetPrimitive.Title,
1886
+ {
1887
+ ref,
1888
+ className: cn("font-bold text-base text-gray-800", className),
1889
+ ...props
1890
+ }
1891
+ ));
1892
+ SheetTitle.displayName = SheetPrimitive.Title.displayName;
1893
+ var SheetDescription = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1894
+ SheetPrimitive.Description,
1895
+ {
1896
+ ref,
1897
+ className: cn("text-sm text-muted-foreground", className),
1898
+ ...props
1899
+ }
1900
+ ));
1901
+ SheetDescription.displayName = SheetPrimitive.Description.displayName;
1902
+
1903
+ // src/components/sidebar.tsx
1904
+ var React18 = __toESM(require("react"), 1);
1905
+ var import_jsx_runtime24 = require("react/jsx-runtime");
1906
+ var Sidebar = React18.forwardRef(
1907
+ ({ className, children, side = "left", ...props }, ref) => {
1908
+ const isLeftSidebar = side === "left";
1909
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1910
+ "aside",
1911
+ {
1912
+ ref,
1913
+ className: cn(
1914
+ "h-full shrink-0 relative transition-all z-10",
1915
+ "w-[341px]",
1916
+ isLeftSidebar ? "border-r border-gray-300" : "border-l border-gray-300",
1917
+ className
1918
+ ),
1919
+ ...props,
1920
+ children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "flex h-full flex-col bg-gray-100", children })
1921
+ }
1922
+ );
1923
+ }
1924
+ );
1925
+ Sidebar.displayName = "Sidebar";
1926
+ var SidebarTitle = React18.forwardRef(
1927
+ ({ className, ...props }, ref) => {
1928
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1929
+ "h3",
1930
+ {
1931
+ ref,
1932
+ className: cn("text-gray-800 pb-2 text-title-md", className),
1933
+ ...props
1934
+ }
1935
+ );
1936
+ }
1937
+ );
1938
+ SidebarTitle.displayName = "SidebarTitle";
1939
+ var SidebarSubtitle = React18.forwardRef(({ className, ...props }, ref) => {
1940
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1941
+ "p",
1942
+ {
1943
+ ref,
1944
+ className: cn("text-gray-500 whitespace-pre-line", className),
1945
+ ...props
1946
+ }
1947
+ );
1948
+ });
1949
+ SidebarSubtitle.displayName = "SidebarSubtitle";
1950
+ var SidebarLabel = React18.forwardRef(({ className, isRequired, description, error, name, ...props }, ref) => {
1951
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1952
+ Label2,
1953
+ {
1954
+ ref,
1955
+ className: cn(
1956
+ "text-title-md pt-4 pb-2 m-0",
1957
+ error && "text-destructive",
1958
+ className
1959
+ ),
1960
+ htmlFor: name,
1961
+ isRequired,
1962
+ description,
1963
+ ...props
1964
+ }
1965
+ );
1966
+ });
1967
+ SidebarLabel.displayName = "SidebarLabel";
1968
+ var SidebarContent = React18.forwardRef(
1969
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { ref, className: cn("py-4", className), ...props })
1970
+ );
1971
+ SidebarContent.displayName = "SidebarContent";
1972
+ var SidebarFooter = React18.forwardRef(
1973
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { ref, className: cn("mt-auto", className), ...props })
1974
+ );
1975
+ SidebarFooter.displayName = "SidebarFooter";
1976
+
1977
+ // src/components/skeleton.tsx
1978
+ var import_jsx_runtime25 = require("react/jsx-runtime");
1979
+ function Skeleton({
1980
+ className,
1981
+ ...props
1982
+ }) {
1983
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1984
+ "div",
1985
+ {
1986
+ className: cn("animate-pulse rounded-md bg-primary/10", className),
1987
+ ...props
1988
+ }
1989
+ );
1990
+ }
1991
+
1992
+ // src/components/switch.tsx
1993
+ var SwitchPrimitives = __toESM(require("@radix-ui/react-switch"), 1);
1994
+ var React19 = __toESM(require("react"), 1);
1995
+ var import_jsx_runtime26 = require("react/jsx-runtime");
1996
+ var Switch = React19.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
1997
+ SwitchPrimitives.Root,
1998
+ {
1999
+ className: cn(
2000
+ "peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-orange-500 focus-visible:ring-offset-2 focus-visible:ring-offset-white disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-orange-500 data-[state=unchecked]:bg-gray-200",
2001
+ className
2002
+ ),
2003
+ ...props,
2004
+ ref,
2005
+ children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2006
+ SwitchPrimitives.Thumb,
2007
+ {
2008
+ className: cn(
2009
+ "pointer-events-none block h-5 w-5 rounded-full bg-white shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0"
2010
+ )
2011
+ }
2012
+ )
2013
+ }
2014
+ ));
2015
+ Switch.displayName = SwitchPrimitives.Root.displayName;
2016
+
2017
+ // src/components/table.tsx
2018
+ var React20 = __toESM(require("react"), 1);
2019
+ var import_jsx_runtime27 = require("react/jsx-runtime");
2020
+ var Table = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2021
+ "table",
2022
+ {
2023
+ ref,
2024
+ className: cn("w-full caption-bottom text-sm", className),
2025
+ ...props
2026
+ }
2027
+ ));
2028
+ Table.displayName = "Table";
2029
+ var TableHeader = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
2030
+ TableHeader.displayName = "TableHeader";
2031
+ var TableBody = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2032
+ "tbody",
2033
+ {
2034
+ ref,
2035
+ className: cn("[&_tr:last-child]:border-0", className),
2036
+ ...props
2037
+ }
2038
+ ));
2039
+ TableBody.displayName = "TableBody";
2040
+ var TableFooter = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2041
+ "tfoot",
2042
+ {
2043
+ ref,
2044
+ className: cn(
2045
+ "border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",
2046
+ className
2047
+ ),
2048
+ ...props
2049
+ }
2050
+ ));
2051
+ TableFooter.displayName = "TableFooter";
2052
+ var TableRow = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2053
+ "tr",
2054
+ {
2055
+ ref,
2056
+ className: cn(
2057
+ "border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",
2058
+ className
2059
+ ),
2060
+ ...props
2061
+ }
2062
+ ));
2063
+ TableRow.displayName = "TableRow";
2064
+ var TableHead = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2065
+ "th",
2066
+ {
2067
+ ref,
2068
+ className: cn(
2069
+ "h-12 px-4 py-2 text-left align-middle",
2070
+ "[&:has([role=checkbox])]:p-0 [&:has([role=checkbox])]:w-12",
2071
+ className
2072
+ ),
2073
+ ...props
2074
+ }
2075
+ ));
2076
+ TableHead.displayName = "TableHead";
2077
+ var TableCell = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2078
+ "td",
2079
+ {
2080
+ ref,
2081
+ className: cn(
2082
+ "h-12 px-4 py-2 align-middle",
2083
+ "[&:has([role=checkbox])]:p-0 [&:has([role=checkbox])]:w-12",
2084
+ className
2085
+ ),
2086
+ ...props
2087
+ }
2088
+ ));
2089
+ TableCell.displayName = "TableCell";
2090
+ var TableCaption = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2091
+ "caption",
2092
+ {
2093
+ ref,
2094
+ className: cn("mt-4 text-sm text-muted-foreground", className),
2095
+ ...props
2096
+ }
2097
+ ));
2098
+ TableCaption.displayName = "TableCaption";
2099
+
2100
+ // src/components/tabs.tsx
2101
+ var TabsPrimitive = __toESM(require("@radix-ui/react-tabs"), 1);
2102
+ var React21 = __toESM(require("react"), 1);
2103
+ var import_jsx_runtime28 = require("react/jsx-runtime");
2104
+ var Tabs = TabsPrimitive.Root;
2105
+ var TabsList = React21.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2106
+ TabsPrimitive.List,
2107
+ {
2108
+ ref,
2109
+ className: cn(
2110
+ "inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",
2111
+ className
2112
+ ),
2113
+ ...props
2114
+ }
2115
+ ));
2116
+ TabsList.displayName = TabsPrimitive.List.displayName;
2117
+ var TabsTrigger = React21.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2118
+ TabsPrimitive.Trigger,
2119
+ {
2120
+ ref,
2121
+ className: cn(
2122
+ "inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",
2123
+ className
2124
+ ),
2125
+ ...props
2126
+ }
2127
+ ));
2128
+ TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
2129
+ var TabsContent = React21.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2130
+ TabsPrimitive.Content,
2131
+ {
2132
+ ref,
2133
+ className: cn(
2134
+ "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
2135
+ className
2136
+ ),
2137
+ ...props
2138
+ }
2139
+ ));
2140
+ TabsContent.displayName = TabsPrimitive.Content.displayName;
2141
+
2142
+ // src/components/title.tsx
2143
+ var LabelPrimitive2 = __toESM(require("@radix-ui/react-label"), 1);
2144
+ var React22 = __toESM(require("react"), 1);
2145
+ var import_jsx_runtime29 = require("react/jsx-runtime");
2146
+ var Root17 = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2147
+ LabelPrimitive2.Root,
2148
+ {
2149
+ ref,
2150
+ className: cn("flex text-gray-800 pb-1", className),
2151
+ ...props
2152
+ }
2153
+ ));
2154
+ Root17.displayName = "Title.Root";
2155
+ var SubTitle = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2156
+ LabelPrimitive2.Root,
2157
+ {
2158
+ ref,
2159
+ className: cn("text-gray-800 pb-1 text-title-lg", className),
2160
+ ...props
2161
+ }
2162
+ ));
2163
+ SubTitle.displayName = "Title.SubTitle";
2164
+ var Description4 = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2165
+ LabelPrimitive2.Root,
2166
+ {
2167
+ ref,
2168
+ className: cn("text-gray-500 text-sm", className),
2169
+ ...props
2170
+ }
2171
+ ));
2172
+ Description4.displayName = "Title.Description";
2173
+ var Title4 = Object.assign(Root17, {
2174
+ SubTitle,
2175
+ Description: Description4
2176
+ });
2177
+
2178
+ // src/components/toast.tsx
2179
+ var import_react_icons8 = require("@radix-ui/react-icons");
2180
+ var ToastPrimitives = __toESM(require("@radix-ui/react-toast"), 1);
2181
+ var import_class_variance_authority7 = require("class-variance-authority");
2182
+ var React23 = __toESM(require("react"), 1);
2183
+ var import_jsx_runtime30 = require("react/jsx-runtime");
2184
+ var ToastProvider = ToastPrimitives.Provider;
2185
+ var ToastViewport = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2186
+ ToastPrimitives.Viewport,
2187
+ {
2188
+ ref,
2189
+ className: cn(
2190
+ "fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-[20px] sm:right-[20px] sm:top-auto sm:flex-col md:max-w-[420px]",
2191
+ className
2192
+ ),
2193
+ ...props
2194
+ }
2195
+ ));
2196
+ ToastViewport.displayName = ToastPrimitives.Viewport.displayName;
2197
+ var toastVariants = (0, import_class_variance_authority7.cva)(
2198
+ "group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-5 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",
2199
+ {
2200
+ variants: {
2201
+ variant: {
2202
+ default: "border bg-background text-foreground",
2203
+ destructive: "destructive group border-destructive bg-destructive text-destructive-foreground"
2204
+ }
2205
+ },
2206
+ defaultVariants: {
2207
+ variant: "default"
2208
+ }
2209
+ }
2210
+ );
2211
+ var Toast = React23.forwardRef(({ className, variant, ...props }, ref) => {
2212
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2213
+ ToastPrimitives.Root,
2214
+ {
2215
+ ref,
2216
+ className: cn(toastVariants({ variant }), className),
2217
+ ...props
2218
+ }
2219
+ );
2220
+ });
2221
+ Toast.displayName = ToastPrimitives.Root.displayName;
2222
+ var ToastAction = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2223
+ ToastPrimitives.Action,
2224
+ {
2225
+ ref,
2226
+ className: cn(
2227
+ "inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",
2228
+ className
2229
+ ),
2230
+ ...props
2231
+ }
2232
+ ));
2233
+ ToastAction.displayName = ToastPrimitives.Action.displayName;
2234
+ var ToastClose = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2235
+ ToastPrimitives.Close,
2236
+ {
2237
+ ref,
2238
+ className: cn(
2239
+ "absolute right-4 top-4 rounded-md p-1 text-gray-700 group-[.destructive]:text-red-100",
2240
+ className
2241
+ ),
2242
+ "toast-close": "",
2243
+ ...props,
2244
+ children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_react_icons8.Cross2Icon, { className: "size-4" })
2245
+ }
2246
+ ));
2247
+ ToastClose.displayName = ToastPrimitives.Close.displayName;
2248
+ var ToastTitle = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2249
+ ToastPrimitives.Title,
2250
+ {
2251
+ ref,
2252
+ className: cn("text-title-md", className),
2253
+ ...props
2254
+ }
2255
+ ));
2256
+ ToastTitle.displayName = ToastPrimitives.Title.displayName;
2257
+ var ToastDescription = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2258
+ ToastPrimitives.Description,
2259
+ {
2260
+ ref,
2261
+ className: cn("text-body-md opacity-90", className),
2262
+ ...props
2263
+ }
2264
+ ));
2265
+ ToastDescription.displayName = ToastPrimitives.Description.displayName;
2266
+
2267
+ // src/hooks/use-toast.ts
2268
+ var React24 = __toESM(require("react"), 1);
2269
+ var TOAST_LIMIT = 1;
2270
+ var TOAST_REMOVE_DELAY = 3e3;
2271
+ var TOAST_DEFAULT_DURATION = 3e3;
2272
+ var count = 0;
2273
+ function genId() {
2274
+ count = (count + 1) % Number.MAX_SAFE_INTEGER;
2275
+ return count.toString();
2276
+ }
2277
+ var toastTimeouts = /* @__PURE__ */ new Map();
2278
+ var addToRemoveQueue = (toastId) => {
2279
+ if (toastTimeouts.has(toastId)) {
2280
+ return;
2281
+ }
2282
+ const timeout = setTimeout(() => {
2283
+ toastTimeouts.delete(toastId);
2284
+ dispatch({
2285
+ type: "REMOVE_TOAST",
2286
+ toastId
2287
+ });
2288
+ }, TOAST_REMOVE_DELAY);
2289
+ toastTimeouts.set(toastId, timeout);
2290
+ };
2291
+ var reducer = (state, action) => {
2292
+ switch (action.type) {
2293
+ case "ADD_TOAST":
2294
+ return {
2295
+ ...state,
2296
+ toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT)
2297
+ };
2298
+ case "UPDATE_TOAST":
2299
+ return {
2300
+ ...state,
2301
+ toasts: state.toasts.map(
2302
+ (t) => t.id === action.toast.id ? { ...t, ...action.toast } : t
2303
+ )
2304
+ };
2305
+ case "DISMISS_TOAST": {
2306
+ const { toastId } = action;
2307
+ if (toastId) {
2308
+ addToRemoveQueue(toastId);
2309
+ } else {
2310
+ state.toasts.forEach((toast2) => {
2311
+ addToRemoveQueue(toast2.id);
2312
+ });
2313
+ }
2314
+ return {
2315
+ ...state,
2316
+ toasts: state.toasts.map(
2317
+ (t) => t.id === toastId || toastId === void 0 ? {
2318
+ ...t,
2319
+ open: false
2320
+ } : t
2321
+ )
2322
+ };
2323
+ }
2324
+ case "REMOVE_TOAST":
2325
+ if (action.toastId === void 0) {
2326
+ return {
2327
+ ...state,
2328
+ toasts: []
2329
+ };
2330
+ }
2331
+ return {
2332
+ ...state,
2333
+ toasts: state.toasts.filter((t) => t.id !== action.toastId)
2334
+ };
2335
+ }
2336
+ };
2337
+ var listeners = [];
2338
+ var memoryState = { toasts: [] };
2339
+ function dispatch(action) {
2340
+ memoryState = reducer(memoryState, action);
2341
+ listeners.forEach((listener) => {
2342
+ listener(memoryState);
2343
+ });
2344
+ }
2345
+ function toast({ duration = TOAST_DEFAULT_DURATION, ...props }) {
2346
+ const id = genId();
2347
+ const update = (props2) => dispatch({
2348
+ type: "UPDATE_TOAST",
2349
+ toast: { ...props2, id }
2350
+ });
2351
+ const dismiss = () => dispatch({ type: "DISMISS_TOAST", toastId: id });
2352
+ dispatch({
2353
+ type: "ADD_TOAST",
2354
+ toast: {
2355
+ ...props,
2356
+ id,
2357
+ duration,
2358
+ open: true,
2359
+ onOpenChange: (open) => {
2360
+ if (!open) {
2361
+ dismiss();
2362
+ }
2363
+ }
2364
+ }
2365
+ });
2366
+ return {
2367
+ id,
2368
+ dismiss,
2369
+ update
2370
+ };
2371
+ }
2372
+ function useToast() {
2373
+ const [state, setState] = React24.useState(memoryState);
2374
+ React24.useEffect(() => {
2375
+ listeners.push(setState);
2376
+ if (memoryState !== state) {
2377
+ setState(memoryState);
2378
+ }
2379
+ return () => {
2380
+ const index = listeners.indexOf(setState);
2381
+ if (index > -1) {
2382
+ listeners.splice(index, 1);
2383
+ }
2384
+ };
2385
+ }, [state]);
2386
+ return {
2387
+ ...state,
2388
+ toast,
2389
+ dismiss: (toastId) => dispatch({ type: "DISMISS_TOAST", toastId })
2390
+ };
2391
+ }
2392
+
2393
+ // src/components/toaster.tsx
2394
+ var import_jsx_runtime31 = require("react/jsx-runtime");
2395
+ function Toaster() {
2396
+ const { toasts } = useToast();
2397
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(ToastProvider, { children: [
2398
+ toasts.map(function({ id, title, description, action, ...props }) {
2399
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(Toast, { ...props, children: [
2400
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "grid gap-1", children: [
2401
+ title && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ToastTitle, { children: title }),
2402
+ description && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ToastDescription, { children: description })
2403
+ ] }),
2404
+ action,
2405
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ToastClose, {})
2406
+ ] }, id);
2407
+ }),
2408
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ToastViewport, {})
2409
+ ] });
2410
+ }
2411
+
2412
+ // src/components/virtual-scroll-area.tsx
2413
+ var ScrollAreaPrimitive2 = __toESM(require("@radix-ui/react-scroll-area"), 1);
2414
+ var import_react2 = require("react");
2415
+ var import_jsx_runtime32 = require("react/jsx-runtime");
2416
+ var VirtualScrollArea = (0, import_react2.forwardRef)(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(ScrollAreaPrimitive2.Root, { className: cn("relative", className), ...props, children: [
2417
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2418
+ ScrollAreaPrimitive2.Viewport,
2419
+ {
2420
+ className: "size-full overflow-auto rounded-[inherit]",
2421
+ ref,
2422
+ children
2423
+ }
2424
+ ),
2425
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(VirtualScrollBar, {}),
2426
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(ScrollAreaPrimitive2.Corner, {})
2427
+ ] }));
2428
+ VirtualScrollArea.displayName = ScrollAreaPrimitive2.Root.displayName;
2429
+ var VirtualScrollBar = (0, import_react2.forwardRef)(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2430
+ ScrollAreaPrimitive2.ScrollAreaScrollbar,
2431
+ {
2432
+ ref,
2433
+ orientation,
2434
+ className: cn(
2435
+ "flex touch-none select-none transition-colors z-10",
2436
+ orientation === "vertical" && "h-full w-4 border-l border-l-transparent p-[2.5px]",
2437
+ orientation === "horizontal" && "h-4 flex-col border-t border-t-transparent p-[2.5px]",
2438
+ className
2439
+ ),
2440
+ ...props,
2441
+ children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(ScrollAreaPrimitive2.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-gray-200" })
2442
+ }
2443
+ ));
2444
+ VirtualScrollBar.displayName = ScrollAreaPrimitive2.ScrollAreaScrollbar.displayName;
2445
+ // Annotate the CommonJS export names for ESM import in node:
2446
+ 0 && (module.exports = {
2447
+ Accordion,
2448
+ AccordionContent,
2449
+ AccordionItem,
2450
+ AccordionTrigger,
2451
+ Alert,
2452
+ AlertDialog,
2453
+ AlertDialogAction,
2454
+ AlertDialogCancel,
2455
+ AlertDialogContent,
2456
+ AlertDialogDescription,
2457
+ AlertDialogFooter,
2458
+ AlertDialogHeader,
2459
+ AlertDialogOverlay,
2460
+ AlertDialogPortal,
2461
+ AlertDialogTitle,
2462
+ AlertDialogTrigger,
2463
+ Badge,
2464
+ Button,
2465
+ Calendar,
2466
+ Card,
2467
+ CardContent,
2468
+ CardDescription,
2469
+ CardFooter,
2470
+ CardHeader,
2471
+ CardTitle,
2472
+ Carousel,
2473
+ CarouselContent,
2474
+ CarouselItem,
2475
+ CarouselNext,
2476
+ CarouselPrevious,
2477
+ Checkbox,
2478
+ DatePicker,
2479
+ Dialog,
2480
+ DialogClose,
2481
+ DialogContent,
2482
+ DialogDescription,
2483
+ DialogFooter,
2484
+ DialogHeader,
2485
+ DialogOverlay,
2486
+ DialogPortal,
2487
+ DialogTitle,
2488
+ DialogTrigger,
2489
+ DropdownMenu,
2490
+ DropdownMenuCheckboxItem,
2491
+ DropdownMenuContent,
2492
+ DropdownMenuGroup,
2493
+ DropdownMenuItem,
2494
+ DropdownMenuLabel,
2495
+ DropdownMenuPortal,
2496
+ DropdownMenuRadioGroup,
2497
+ DropdownMenuRadioItem,
2498
+ DropdownMenuSeparator,
2499
+ DropdownMenuShortcut,
2500
+ DropdownMenuSub,
2501
+ DropdownMenuSubContent,
2502
+ DropdownMenuSubTrigger,
2503
+ DropdownMenuTrigger,
2504
+ Form,
2505
+ FormControl,
2506
+ FormDescription,
2507
+ FormField,
2508
+ FormItem,
2509
+ FormLabel,
2510
+ FormMessage,
2511
+ Input,
2512
+ Label,
2513
+ NavigationMenu,
2514
+ NavigationMenuContent,
2515
+ NavigationMenuIndicator,
2516
+ NavigationMenuItem,
2517
+ NavigationMenuLink,
2518
+ NavigationMenuList,
2519
+ NavigationMenuTrigger,
2520
+ NavigationMenuViewport,
2521
+ Pagination,
2522
+ PaginationContent,
2523
+ PaginationEllipsis,
2524
+ PaginationFirstPage,
2525
+ PaginationItem,
2526
+ PaginationLink,
2527
+ PaginationNext,
2528
+ PaginationPrevious,
2529
+ PaginationRangeNext,
2530
+ PaginationRangePrevious,
2531
+ Popover,
2532
+ PopoverAnchor,
2533
+ PopoverContent,
2534
+ PopoverTrigger,
2535
+ RadioGroup,
2536
+ RadioGroupItem,
2537
+ ScrollArea,
2538
+ ScrollBar,
2539
+ Select,
2540
+ SelectContent,
2541
+ SelectGroup,
2542
+ SelectItem,
2543
+ SelectLabel,
2544
+ SelectScrollDownButton,
2545
+ SelectScrollUpButton,
2546
+ SelectSeparator,
2547
+ SelectTrigger,
2548
+ SelectValue,
2549
+ Separator,
2550
+ Sheet,
2551
+ SheetClose,
2552
+ SheetContent,
2553
+ SheetDescription,
2554
+ SheetFooter,
2555
+ SheetHeader,
2556
+ SheetOverlay,
2557
+ SheetPortal,
2558
+ SheetTitle,
2559
+ SheetTrigger,
2560
+ Sidebar,
2561
+ SidebarContent,
2562
+ SidebarFooter,
2563
+ SidebarLabel,
2564
+ SidebarSubtitle,
2565
+ SidebarTitle,
2566
+ Skeleton,
2567
+ Switch,
2568
+ Table,
2569
+ TableBody,
2570
+ TableCaption,
2571
+ TableCell,
2572
+ TableFooter,
2573
+ TableHead,
2574
+ TableHeader,
2575
+ TableRow,
2576
+ Tabs,
2577
+ TabsContent,
2578
+ TabsList,
2579
+ TabsTrigger,
2580
+ Title,
2581
+ Toast,
2582
+ ToastAction,
2583
+ ToastClose,
2584
+ ToastDescription,
2585
+ ToastProvider,
2586
+ ToastTitle,
2587
+ ToastViewport,
2588
+ Toaster,
2589
+ VirtualScrollArea,
2590
+ VirtualScrollBar,
2591
+ badgeVariants,
2592
+ buttonVariants,
2593
+ inputVariants,
2594
+ navigationMenuTriggerStyle,
2595
+ reducer,
2596
+ toast,
2597
+ useFormField,
2598
+ useToast
2599
+ });
2600
+ //# sourceMappingURL=index.cjs.map