@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/README.md +25 -0
- package/dist/index.cjs +2600 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +405 -0
- package/dist/index.d.ts +405 -0
- package/dist/index.js +2431 -0
- package/dist/index.js.map +1 -0
- package/dist/styles.css +1 -0
- package/dist/tailwind-preset.cjs +241 -0
- package/dist/tailwind-preset.cjs.map +1 -0
- package/dist/tailwind-preset.d.cts +6 -0
- package/dist/tailwind-preset.d.ts +6 -0
- package/dist/tailwind-preset.js +206 -0
- package/dist/tailwind-preset.js.map +1 -0
- package/package.json +115 -0
- package/styles.css +2 -0
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
|