xfds 0.1.0 → 0.1.1

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.
@@ -0,0 +1,2073 @@
1
+ import { __rest } from 'tslib';
2
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
+ import { Accordion as Accordion$1, Slot, AlertDialog as AlertDialog$1, AspectRatio as AspectRatio$1, Avatar as Avatar$1, Separator as Separator$1, Checkbox as Checkbox$1, Collapsible as Collapsible$1, Dialog as Dialog$1, ContextMenu as ContextMenu$1, DropdownMenu as DropdownMenu$1, Label as Label$1, HoverCard as HoverCard$1, Menubar as Menubar$1, NavigationMenu as NavigationMenu$1, Popover as Popover$1, Progress as Progress$1, RadioGroup as RadioGroup$1, ScrollArea as ScrollArea$1, Select as Select$1, Tooltip as Tooltip$1, Slider as Slider$1, Switch as Switch$1, Tabs as Tabs$1, Toggle as Toggle$1, ToggleGroup as ToggleGroup$1 } from 'radix-ui';
4
+ import { clsx } from 'clsx';
5
+ import { twMerge } from 'tailwind-merge';
6
+ import * as React from 'react';
7
+ import { useMemo } from 'react';
8
+ import { cva } from 'class-variance-authority';
9
+ import { getDefaultClassNames, DayPicker } from 'react-day-picker';
10
+ import useEmblaCarousel from 'embla-carousel-react';
11
+ import * as RechartsPrimitive from 'recharts';
12
+ import { Combobox as Combobox$1 } from '@base-ui/react';
13
+ import { Command as Command$1 } from 'cmdk';
14
+ import { Drawer as Drawer$1 } from 'vaul';
15
+ import { OTPInput, OTPInputContext } from 'input-otp';
16
+ import * as ResizablePrimitive from 'react-resizable-panels';
17
+ import { Toaster as Toaster$1 } from 'sonner';
18
+
19
+ function cn(...inputs) {
20
+ return twMerge(clsx(inputs));
21
+ }
22
+
23
+ var _path$f;
24
+ function _extends$f() { return _extends$f = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$f.apply(null, arguments); }
25
+ var SvgKeyboardArrowUp = function SvgKeyboardArrowUp(props) {
26
+ return /*#__PURE__*/React.createElement("svg", _extends$f({
27
+ xmlns: "http://www.w3.org/2000/svg",
28
+ width: 48,
29
+ height: 48,
30
+ viewBox: "0 -960 960 960"
31
+ }, props), _path$f || (_path$f = /*#__PURE__*/React.createElement("path", {
32
+ d: "M480-554 283-357l-43-43 240-240 240 240-43 43-197-197Z"
33
+ })));
34
+ };
35
+
36
+ var _path$e;
37
+ function _extends$e() { return _extends$e = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$e.apply(null, arguments); }
38
+ var SvgKeyboardArrowDown = function SvgKeyboardArrowDown(props) {
39
+ return /*#__PURE__*/React.createElement("svg", _extends$e({
40
+ xmlns: "http://www.w3.org/2000/svg",
41
+ width: 48,
42
+ height: 48,
43
+ viewBox: "0 -960 960 960"
44
+ }, props), _path$e || (_path$e = /*#__PURE__*/React.createElement("path", {
45
+ d: "M480-344 240-584l43-43 197 197 197-197 43 43-240 240Z"
46
+ })));
47
+ };
48
+
49
+ function Accordion(_a) {
50
+ var { className } = _a, props = __rest(_a, ["className"]);
51
+ return (jsx(Accordion$1.Root, Object.assign({ "data-slot": "accordion", className: cn("flex w-full flex-col", className) }, props)));
52
+ }
53
+ function AccordionItem(_a) {
54
+ var { className } = _a, props = __rest(_a, ["className"]);
55
+ return (jsx(Accordion$1.Item, Object.assign({ "data-slot": "accordion-item", className: cn("border-b border-border", className) }, props)));
56
+ }
57
+ function AccordionTrigger(_a) {
58
+ var { className, children } = _a, props = __rest(_a, ["className", "children"]);
59
+ return (jsx(Accordion$1.Header, { className: "flex", children: jsxs(Accordion$1.Trigger, Object.assign({ "data-slot": "accordion-trigger", className: cn("focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ring [&_[data-slot=accordion-trigger-icon]]:text-muted-foreground rounded-input-area py-4 text-left text-base font-medium hover:underline [&_[data-slot=accordion-trigger-icon]]:ml-auto [&_[data-slot=accordion-trigger-icon]]:size-4 group/accordion-trigger relative flex flex-1 items-center justify-between gap-4 border border-transparent transition-all disabled:pointer-events-none disabled:opacity-50", className) }, props, { children: [children, jsx(SvgKeyboardArrowDown, { "data-slot": "accordion-trigger-icon", className: "pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden size-4" }), jsx(SvgKeyboardArrowUp, { "data-slot": "accordion-trigger-icon", className: "pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline size-4" })] })) }));
60
+ }
61
+ function AccordionContent(_a) {
62
+ var { className, children } = _a, props = __rest(_a, ["className", "children"]);
63
+ return (jsx(Accordion$1.Content, Object.assign({ "data-slot": "accordion-content", className: "data-open:animate-accordion-down data-closed:animate-accordion-up text-sm overflow-hidden" }, props, { children: jsx("div", { className: cn("pb-0 pt-4 text-sm leading-5 [&_a]:hover:text-foreground [&_a]:underline [&_a]:underline-offset-3 [&_p:not(:last-child)]:mb-4", className), children: children }) })));
64
+ }
65
+
66
+ const alertVariants = cva("grid gap-1 rounded-input-card border p-4 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4 w-full relative group/alert", {
67
+ variants: {
68
+ variant: {
69
+ default: "bg-card text-card-foreground border-border",
70
+ destructive: "text-destructive bg-card border-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current",
71
+ },
72
+ },
73
+ defaultVariants: {
74
+ variant: "default",
75
+ },
76
+ });
77
+ function Alert(_a) {
78
+ var { className, variant } = _a, props = __rest(_a, ["className", "variant"]);
79
+ return (jsx("div", Object.assign({ "data-slot": "alert", role: "alert", className: cn(alertVariants({ variant }), className) }, props)));
80
+ }
81
+ function AlertTitle(_a) {
82
+ var { className } = _a, props = __rest(_a, ["className"]);
83
+ return (jsx("div", Object.assign({ "data-slot": "alert-title", className: cn("font-medium group-has-[>svg]/alert:col-start-2 text-base [&_a]:hover:text-foreground [&_a]:underline [&_a]:underline-offset-3", className) }, props)));
84
+ }
85
+ function AlertDescription(_a) {
86
+ var { className } = _a, props = __rest(_a, ["className"]);
87
+ return (jsx("div", Object.assign({ "data-slot": "alert-description", className: cn("text-muted-foreground text-sm text-balance md:text-pretty [&_p:not(:last-child)]:mb-4 [&_a]:hover:text-foreground [&_a]:underline [&_a]:underline-offset-3", className) }, props)));
88
+ }
89
+ function AlertAction(_a) {
90
+ var { className } = _a, props = __rest(_a, ["className"]);
91
+ return (jsx("div", Object.assign({ "data-slot": "alert-action", className: cn("absolute top-2.5 right-3", className) }, props)));
92
+ }
93
+
94
+ const buttonVariants = cva("focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ring aria-invalid:ring-2 aria-invalid:ring-offset-2 aria-invalid:ring-destructive border border-transparent bg-clip-padding text-sm font-medium [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 group/button select-none", {
95
+ variants: {
96
+ variant: {
97
+ default: "bg-primary text-primary-foreground hover:bg-primary-hover",
98
+ outline: "border-border bg-none hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground",
99
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary-hover aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
100
+ ghost: "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground",
101
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive-hover focus-visible:ring-destructive",
102
+ link: "text-primary underline-offset-4 hover:underline",
103
+ },
104
+ size: {
105
+ default: "h-9 gap-1.5 px-2.5 rounded-input-sm in-data-[slot=button-group]:rounded-input-sm has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
106
+ xs: "h-6 gap-1 rounded-input-sm px-2 text-xs in-data-[slot=button-group]:rounded-input-sm has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
107
+ sm: "h-8 gap-1 rounded-input-sm px-2.5 in-data-[slot=button-group]:rounded-input-sm has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5",
108
+ lg: "h-10 gap-1.5 px-2.5 rounded-input-sm has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",
109
+ xl: "h-12 gap-2 px-4 text-base rounded-input-sm has-data-[icon=inline-end]:pr-4 has-data-[icon=inline-start]:pl-4 [&_svg:not([class*='size-'])]:size-5",
110
+ icon: "size-9 rounded-input-sm",
111
+ "icon-xs": "size-6 rounded-input-sm in-data-[slot=button-group]:rounded-input-sm [&_svg:not([class*='size-'])]:size-3",
112
+ "icon-sm": "size-8 rounded-input-sm in-data-[slot=button-group]:rounded-input-sm",
113
+ "icon-lg": "size-10 rounded-input-sm",
114
+ "icon-xl": "size-12 rounded-input-sm [&_svg:not([class*='size-'])]:size-5",
115
+ },
116
+ },
117
+ defaultVariants: {
118
+ variant: "default",
119
+ size: "default",
120
+ },
121
+ });
122
+ function Button(_a) {
123
+ var { className, variant = "default", size = "default", asChild = false } = _a, props = __rest(_a, ["className", "variant", "size", "asChild"]);
124
+ const Comp = asChild ? Slot.Root : "button";
125
+ return (jsx(Comp, Object.assign({ "data-slot": "button", "data-variant": variant, "data-size": size, className: cn(buttonVariants({ variant, size, className })) }, props)));
126
+ }
127
+
128
+ function AlertDialog(_a) {
129
+ var props = __rest(_a, []);
130
+ return jsx(AlertDialog$1.Root, Object.assign({ "data-slot": "alert-dialog" }, props));
131
+ }
132
+ function AlertDialogTrigger(_a) {
133
+ var props = __rest(_a, []);
134
+ return (jsx(AlertDialog$1.Trigger, Object.assign({ "data-slot": "alert-dialog-trigger" }, props)));
135
+ }
136
+ function AlertDialogPortal(_a) {
137
+ var props = __rest(_a, []);
138
+ return (jsx(AlertDialog$1.Portal, Object.assign({ "data-slot": "alert-dialog-portal" }, props)));
139
+ }
140
+ function AlertDialogOverlay(_a) {
141
+ var { className } = _a, props = __rest(_a, ["className"]);
142
+ return (jsx(AlertDialog$1.Overlay, Object.assign({ "data-slot": "alert-dialog-overlay", className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-overlay duration-100 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 z-50", className) }, props)));
143
+ }
144
+ function AlertDialogContent(_a) {
145
+ var { className, size = "default", overlayClassName } = _a, props = __rest(_a, ["className", "size", "overlayClassName"]);
146
+ return (jsxs(AlertDialogPortal, { children: [jsx(AlertDialogOverlay, { className: overlayClassName }), jsx(AlertDialog$1.Content, Object.assign({ "data-slot": "alert-dialog-content", "data-size": size, className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 bg-popover border border-solid shadow-lg gap-6 rounded-card p-6 duration-100 data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-lg group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 outline-none text-center sm:text-left", className) }, props))] }));
147
+ }
148
+ function AlertDialogHeader(_a) {
149
+ var { className } = _a, props = __rest(_a, ["className"]);
150
+ return (jsx("div", Object.assign({ "data-slot": "alert-dialog-header", className: cn("grid grid-rows-[auto_1fr] gap-2 text-center sm:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]", className) }, props)));
151
+ }
152
+ function AlertDialogFooter(_a) {
153
+ var { className } = _a, props = __rest(_a, ["className"]);
154
+ return (jsx("div", Object.assign({ "data-slot": "alert-dialog-footer", className: cn("flex flex-col gap-2 justify-center sm:flex-row sm:justify-end", className) }, props)));
155
+ }
156
+ function AlertDialogMedia(_a) {
157
+ var { className } = _a, props = __rest(_a, ["className"]);
158
+ return (jsx("div", Object.assign({ "data-slot": "alert-dialog-media", className: cn("bg-muted mb-2 inline-flex size-16 items-center justify-center rounded-input-area sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8", className) }, props)));
159
+ }
160
+ function AlertDialogTitle(_a) {
161
+ var { className } = _a, props = __rest(_a, ["className"]);
162
+ return (jsx(AlertDialog$1.Title, Object.assign({ "data-slot": "alert-dialog-title", className: cn("text-lg font-semibold text-foreground sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2", className) }, props)));
163
+ }
164
+ function AlertDialogDescription(_a) {
165
+ var { className } = _a, props = __rest(_a, ["className"]);
166
+ return (jsx(AlertDialog$1.Description, Object.assign({ "data-slot": "alert-dialog-description", className: cn("text-sm text-muted-foreground *:[a]:hover:text-foreground text-balance md:text-pretty *:[a]:underline *:[a]:underline-offset-3", className) }, props)));
167
+ }
168
+ function AlertDialogAction(_a) {
169
+ var { className, variant = "default", size = "default" } = _a, props = __rest(_a, ["className", "variant", "size"]);
170
+ return (jsx(Button, { variant: variant, size: size, asChild: true, children: jsx(AlertDialog$1.Action, Object.assign({ "data-slot": "alert-dialog-action", className: cn(className) }, props)) }));
171
+ }
172
+ function AlertDialogCancel(_a) {
173
+ var { className, variant = "outline", size = "default" } = _a, props = __rest(_a, ["className", "variant", "size"]);
174
+ return (jsx(Button, { variant: variant, size: size, asChild: true, children: jsx(AlertDialog$1.Cancel, Object.assign({ "data-slot": "alert-dialog-cancel", className: cn(className) }, props)) }));
175
+ }
176
+
177
+ function AspectRatio(_a) {
178
+ var props = __rest(_a, []);
179
+ return jsx(AspectRatio$1.Root, Object.assign({ "data-slot": "aspect-ratio" }, props));
180
+ }
181
+
182
+ function Avatar(_a) {
183
+ var { className, size = "default" } = _a, props = __rest(_a, ["className", "size"]);
184
+ return (jsx(Avatar$1.Root, Object.assign({ "data-slot": "avatar", "data-size": size, className: cn("size-8 rounded-full after:rounded-full data-[size=lg]:size-10 data-[size=sm]:size-6 after:border-border group/avatar relative flex shrink-0 select-none after:absolute after:inset-0 after:border after:mix-blend-darken dark:after:mix-blend-lighten", className) }, props)));
185
+ }
186
+ function AvatarImage(_a) {
187
+ var { className } = _a, props = __rest(_a, ["className"]);
188
+ return (jsx(Avatar$1.Image, Object.assign({ "data-slot": "avatar-image", className: cn("rounded-full aspect-square size-full object-cover", className) }, props)));
189
+ }
190
+ function AvatarFallback(_a) {
191
+ var { className } = _a, props = __rest(_a, ["className"]);
192
+ return (jsx(Avatar$1.Fallback, Object.assign({ "data-slot": "avatar-fallback", className: cn("bg-muted text-muted-foreground rounded-full flex size-full items-center justify-center text-sm group-data-[size=sm]/avatar:text-xs", className) }, props)));
193
+ }
194
+ function AvatarBadge(_a) {
195
+ var { className } = _a, props = __rest(_a, ["className"]);
196
+ return (jsx("span", Object.assign({ "data-slot": "avatar-badge", className: cn("bg-primary text-primary-foreground ring-background absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-blend-color ring-2 select-none", "group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden", "group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2", "group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2", className) }, props)));
197
+ }
198
+ function AvatarGroup(_a) {
199
+ var { className } = _a, props = __rest(_a, ["className"]);
200
+ return (jsx("div", Object.assign({ "data-slot": "avatar-group", className: cn("*:data-[slot=avatar]:ring-background group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2", className) }, props)));
201
+ }
202
+ function AvatarGroupCount(_a) {
203
+ var { className } = _a, props = __rest(_a, ["className"]);
204
+ return (jsx("div", Object.assign({ "data-slot": "avatar-group-count", className: cn("bg-muted text-muted-foreground size-8 rounded-full text-sm group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3 ring-background relative flex shrink-0 items-center justify-center ring-2", className) }, props)));
205
+ }
206
+
207
+ const badgeVariants = cva("inline-flex items-center justify-center gap-1 rounded-full border border-transparent px-2.5 py-0.5 text-xs font-semibold transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3 w-fit whitespace-nowrap shrink-0 [&>svg]:pointer-events-none group/badge", {
208
+ variants: {
209
+ variant: {
210
+ default: "bg-primary text-primary-foreground hover:bg-primary-hover",
211
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary-hover",
212
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive-hover hover:![background-color]",
213
+ outline: "text-foreground border-border hover:bg-muted hover:text-foreground",
214
+ ghost: "hover:bg-muted hover:text-foreground",
215
+ link: "bg-transparent text-primary underline-offset-4 hover:bg-muted hover:underline",
216
+ },
217
+ },
218
+ defaultVariants: {
219
+ variant: "default",
220
+ },
221
+ });
222
+ function Badge(_a) {
223
+ var { className, variant = "default", asChild = false } = _a, props = __rest(_a, ["className", "variant", "asChild"]);
224
+ const Comp = asChild ? Slot.Root : "span";
225
+ return (jsx(Comp, Object.assign({ "data-slot": "badge", "data-variant": variant, className: cn(badgeVariants({ variant }), className) }, props)));
226
+ }
227
+
228
+ var _path$d;
229
+ function _extends$d() { return _extends$d = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$d.apply(null, arguments); }
230
+ var SvgChevronRight = function SvgChevronRight(props) {
231
+ return /*#__PURE__*/React.createElement("svg", _extends$d({
232
+ xmlns: "http://www.w3.org/2000/svg",
233
+ width: 48,
234
+ height: 48,
235
+ viewBox: "0 -960 960 960"
236
+ }, props), _path$d || (_path$d = /*#__PURE__*/React.createElement("path", {
237
+ d: "M530-481 332-679l43-43 241 241-241 241-43-43 198-198Z"
238
+ })));
239
+ };
240
+
241
+ var _path$c;
242
+ function _extends$c() { return _extends$c = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$c.apply(null, arguments); }
243
+ var SvgMoreHoriz = function SvgMoreHoriz(props) {
244
+ return /*#__PURE__*/React.createElement("svg", _extends$c({
245
+ xmlns: "http://www.w3.org/2000/svg",
246
+ width: 48,
247
+ height: 48,
248
+ viewBox: "0 -960 960 960"
249
+ }, props), _path$c || (_path$c = /*#__PURE__*/React.createElement("path", {
250
+ d: "M207.86-432Q188-432 174-446.14t-14-34Q160-500 174.14-514t34-14Q228-528 242-513.86t14 34Q256-460 241.86-446t-34 14Zm272 0Q460-432 446-446.14t-14-34Q432-500 446.14-514t34-14Q500-528 514-513.86t14 34Q528-460 513.86-446t-34 14Zm272 0Q732-432 718-446.14t-14-34Q704-500 718.14-514t34-14Q772-528 786-513.86t14 34Q800-460 785.86-446t-34 14Z"
251
+ })));
252
+ };
253
+
254
+ function Breadcrumb(_a) {
255
+ var { className } = _a, props = __rest(_a, ["className"]);
256
+ return (jsx("nav", Object.assign({ "aria-label": "breadcrumb", "data-slot": "breadcrumb", className: cn(className) }, props)));
257
+ }
258
+ function BreadcrumbList(_a) {
259
+ var { className } = _a, props = __rest(_a, ["className"]);
260
+ return (jsx("ol", Object.assign({ "data-slot": "breadcrumb-list", className: cn("text-muted-foreground gap-1 text-sm sm:gap-2 flex flex-wrap items-center break-words font-normal leading-5", className) }, props)));
261
+ }
262
+ function BreadcrumbItem(_a) {
263
+ var { className } = _a, props = __rest(_a, ["className"]);
264
+ return (jsx("li", Object.assign({ "data-slot": "breadcrumb-item", className: cn("gap-1 inline-flex items-center", className) }, props)));
265
+ }
266
+ function BreadcrumbLink(_a) {
267
+ var { asChild, className } = _a, props = __rest(_a, ["asChild", "className"]);
268
+ const Comp = asChild ? Slot.Root : "a";
269
+ return (jsx(Comp, Object.assign({ "data-slot": "breadcrumb-link", className: cn("hover:text-foreground transition-colors text-sm leading-5 font-normal focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2", className) }, props)));
270
+ }
271
+ function BreadcrumbPage(_a) {
272
+ var { className } = _a, props = __rest(_a, ["className"]);
273
+ return (jsx("span", Object.assign({ "data-slot": "breadcrumb-page", role: "link", "aria-disabled": "true", "aria-current": "page", className: cn("text-foreground font-normal text-sm leading-5", className) }, props)));
274
+ }
275
+ function BreadcrumbSeparator(_a) {
276
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
277
+ return (jsx("li", Object.assign({ "data-slot": "breadcrumb-separator", role: "presentation", "aria-hidden": "true", className: cn("[&>svg]:size-3.5 text-muted-foreground", className) }, props, { children: children !== null && children !== void 0 ? children : (jsx(SvgChevronRight, {})) })));
278
+ }
279
+ function BreadcrumbEllipsis(_a) {
280
+ var { className } = _a, props = __rest(_a, ["className"]);
281
+ return (jsxs("span", Object.assign({ "data-slot": "breadcrumb-ellipsis", role: "presentation", "aria-hidden": "true", className: cn("size-5 [&>svg]:size-4 flex items-center justify-center text-muted-foreground", className) }, props, { children: [jsx(SvgMoreHoriz, {}), jsx("span", { className: "sr-only", children: "More" })] })));
282
+ }
283
+
284
+ function Separator(_a) {
285
+ var { className, orientation = "horizontal", decorative = true } = _a, props = __rest(_a, ["className", "orientation", "decorative"]);
286
+ return (jsx(Separator$1.Root, Object.assign({ "data-slot": "separator", decorative: decorative, orientation: orientation, className: cn("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:self-stretch", className) }, props)));
287
+ }
288
+
289
+ const buttonGroupVariants = cva("has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-input-sm flex w-fit items-stretch [&>*]:focus-visible:z-10 [&>*]:focus-visible:relative [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1", {
290
+ variants: {
291
+ orientation: {
292
+ horizontal: "[&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-input-sm! [&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none",
293
+ vertical: "[&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-input-sm! flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none",
294
+ },
295
+ },
296
+ defaultVariants: {
297
+ orientation: "horizontal",
298
+ },
299
+ });
300
+ function ButtonGroup(_a) {
301
+ var { className, orientation } = _a, props = __rest(_a, ["className", "orientation"]);
302
+ return (jsx("div", Object.assign({ role: "group", "data-slot": "button-group", "data-orientation": orientation, className: cn(buttonGroupVariants({ orientation }), className) }, props)));
303
+ }
304
+ function ButtonGroupText(_a) {
305
+ var { className, asChild = false } = _a, props = __rest(_a, ["className", "asChild"]);
306
+ const Comp = asChild ? Slot.Root : "div";
307
+ return (jsx(Comp, Object.assign({ className: cn("bg-muted gap-2 rounded-input-sm border px-2.5 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 flex items-center [&_svg]:pointer-events-none", className) }, props)));
308
+ }
309
+ function ButtonGroupSeparator(_a) {
310
+ var { className, orientation = "vertical" } = _a, props = __rest(_a, ["className", "orientation"]);
311
+ return (jsx(Separator, Object.assign({ "data-slot": "button-group-separator", orientation: orientation, className: cn("bg-input relative self-stretch data-[orientation=horizontal]:mx-px data-[orientation=horizontal]:w-auto data-[orientation=vertical]:my-px data-[orientation=vertical]:h-auto", className) }, props)));
312
+ }
313
+
314
+ var _path$b;
315
+ function _extends$b() { return _extends$b = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$b.apply(null, arguments); }
316
+ var SvgChevronLeft = function SvgChevronLeft(props) {
317
+ return /*#__PURE__*/React.createElement("svg", _extends$b({
318
+ xmlns: "http://www.w3.org/2000/svg",
319
+ width: 48,
320
+ height: 48,
321
+ viewBox: "0 -960 960 960"
322
+ }, props), _path$b || (_path$b = /*#__PURE__*/React.createElement("path", {
323
+ d: "M561-240 320-481l241-241 43 43-198 198 198 198-43 43Z"
324
+ })));
325
+ };
326
+
327
+ function Calendar(_a) {
328
+ var { className, classNames, showOutsideDays = true, captionLayout = "label", buttonVariant = "ghost", formatters, components } = _a, props = __rest(_a, ["className", "classNames", "showOutsideDays", "captionLayout", "buttonVariant", "formatters", "components"]);
329
+ const defaultClassNames = getDefaultClassNames();
330
+ return (jsx(DayPicker, Object.assign({ showOutsideDays: showOutsideDays, className: cn("p-3 [--cell-size:--spacing(8)] rounded-input-area bg-background group/calendar [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent", String.raw `rtl:**:[.rdp-button\_next>svg]:rotate-180`, String.raw `rtl:**:[.rdp-button\_previous>svg]:rotate-180`, className), captionLayout: captionLayout, formatters: Object.assign({ formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" }) }, formatters), classNames: Object.assign({ root: cn("w-fit", defaultClassNames.root), months: cn("flex gap-4 flex-col md:flex-row relative", defaultClassNames.months), month: cn("flex flex-col w-full gap-4", defaultClassNames.month), nav: cn("flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between", defaultClassNames.nav), button_previous: cn(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none", defaultClassNames.button_previous), button_next: cn(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none", defaultClassNames.button_next), month_caption: cn("flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)", defaultClassNames.month_caption), dropdowns: cn("w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5", defaultClassNames.dropdowns), dropdown_root: cn("relative cn-calendar-dropdown-root rounded-input-sm", defaultClassNames.dropdown_root), dropdown: cn("absolute bg-popover inset-0 opacity-0", defaultClassNames.dropdown), caption_label: cn("select-none font-medium", captionLayout === "label"
331
+ ? "text-sm"
332
+ : "cn-calendar-caption-label rounded-input-sm flex items-center gap-1 text-sm [&>svg]:text-muted-foreground [&>svg]:size-3.5", defaultClassNames.caption_label), table: "w-full border-collapse", weekdays: cn("flex", defaultClassNames.weekdays), weekday: cn("text-muted-foreground rounded-input-sm flex-1 font-normal text-[0.8rem] select-none", defaultClassNames.weekday), week: cn("flex w-full mt-2", defaultClassNames.week), week_number_header: cn("select-none w-(--cell-size)", defaultClassNames.week_number_header), week_number: cn("text-[0.8rem] select-none text-muted-foreground", defaultClassNames.week_number), day: cn("relative w-full rounded-input-sm h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-input-sm group/day aspect-square select-none overflow-hidden", props.showWeekNumber
333
+ ? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-input-sm"
334
+ : "[&:first-child[data-selected=true]_button]:rounded-l-input-sm", defaultClassNames.day), range_start: cn("rounded-l-input-sm rounded-r-none bg-muted relative after:bg-muted after:absolute after:inset-y-0 after:w-4 after:right-0 -z-0 isolate", defaultClassNames.range_start), range_middle: cn("rounded-none", defaultClassNames.range_middle), range_end: cn("rounded-r-input-sm rounded-l-none bg-muted relative after:bg-muted-200 after:absolute after:inset-y-0 after:w-4 after:left-0 -z-0 isolate", defaultClassNames.range_end), today: cn("bg-muted text-foreground rounded-none data-[selected=true]:rounded-none", defaultClassNames.today), outside: cn("text-muted-foreground aria-selected:text-muted-foreground", defaultClassNames.outside), disabled: cn("text-muted-foreground opacity-50", defaultClassNames.disabled), hidden: cn("invisible", defaultClassNames.hidden) }, classNames), components: Object.assign({ Root: (_a) => {
335
+ var { className, rootRef } = _a, props = __rest(_a, ["className", "rootRef"]);
336
+ return (jsx("div", Object.assign({ "data-slot": "calendar", ref: rootRef, className: cn(className) }, props)));
337
+ }, Chevron: (_a) => {
338
+ var { className, orientation } = _a, props = __rest(_a, ["className", "orientation"]);
339
+ if (orientation === "left") {
340
+ return (jsx(SvgChevronLeft, Object.assign({ className: cn("size-4", className), style: {
341
+ fontVariationSettings: "'wght' 400, 'opsz' 24, 'FILL' 0, 'GRAD' 0"
342
+ } }, props)));
343
+ }
344
+ if (orientation === "right") {
345
+ return (jsx(SvgChevronRight, Object.assign({ className: cn("size-4", className), style: {
346
+ fontVariationSettings: "'wght' 400, 'opsz' 24, 'FILL' 0, 'GRAD' 0"
347
+ } }, props)));
348
+ }
349
+ return (jsx(SvgKeyboardArrowDown, Object.assign({ className: cn("size-4", className), style: {
350
+ fontVariationSettings: "'wght' 400, 'opsz' 24, 'FILL' 0, 'GRAD' 0"
351
+ } }, props)));
352
+ }, DayButton: CalendarDayButton, WeekNumber: (_a) => {
353
+ var { children } = _a, props = __rest(_a, ["children"]);
354
+ return (jsx("td", Object.assign({}, props, { children: jsx("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children: children }) })));
355
+ } }, components) }, props)));
356
+ }
357
+ function CalendarDayButton(_a) {
358
+ var { className, day, modifiers } = _a, props = __rest(_a, ["className", "day", "modifiers"]);
359
+ const defaultClassNames = getDefaultClassNames();
360
+ const ref = React.useRef(null);
361
+ React.useEffect(() => {
362
+ var _a;
363
+ if (modifiers.focused)
364
+ (_a = ref.current) === null || _a === void 0 ? void 0 : _a.focus();
365
+ }, [modifiers.focused]);
366
+ return (jsx(Button, Object.assign({ ref: ref, variant: "ghost", size: "icon", "data-day": day.date.toLocaleDateString(), "data-selected-single": modifiers.selected &&
367
+ !modifiers.range_start &&
368
+ !modifiers.range_end &&
369
+ !modifiers.range_middle, "data-range-start": modifiers.range_start, "data-range-end": modifiers.range_end, "data-range-middle": modifiers.range_middle, className: cn("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:focus-visible:outline-none group-data-[focused=true]/day:focus-visible:ring-2 group-data-[focused=true]/day:focus-visible:ring-offset-2 group-data-[focused=true]/day:focus-visible:ring-ring dark:hover:text-foreground relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 data-[range-end=true]:rounded-input-sm data-[range-end=true]:rounded-r-input-sm data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-input-sm data-[range-start=true]:rounded-l-input-sm [&>span]:text-xs [&>span]:opacity-70 rounded-input-sm", defaultClassNames.day, className) }, props)));
370
+ }
371
+
372
+ function Card(_a) {
373
+ var { className, size = "default" } = _a, props = __rest(_a, ["className", "size"]);
374
+ return (jsx("div", Object.assign({ "data-slot": "card", "data-size": size, className: cn("bg-card text-card-foreground gap-6 overflow-hidden rounded-card py-6 text-sm ring-1 ring-border has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-none *:[img:last-child]:rounded-b-none group/card flex flex-col", className) }, props)));
375
+ }
376
+ function CardHeader(_a) {
377
+ var { className } = _a, props = __rest(_a, ["className"]);
378
+ return (jsx("div", Object.assign({ "data-slot": "card-header", className: cn("gap-1.5 px-6 pb-6 group-data-[size=sm]/card:px-4 group-data-[size=sm]/card:pb-4 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]", className) }, props)));
379
+ }
380
+ function CardTitle(_a) {
381
+ var { className } = _a, props = __rest(_a, ["className"]);
382
+ return (jsx("div", Object.assign({ "data-slot": "card-title", className: cn("text-2xl font-semibold leading-none tracking-tight group-data-[size=sm]/card:text-lg", className) }, props)));
383
+ }
384
+ function CardDescription(_a) {
385
+ var { className } = _a, props = __rest(_a, ["className"]);
386
+ return (jsx("div", Object.assign({ "data-slot": "card-description", className: cn("text-sm text-muted-foreground leading-5", className) }, props)));
387
+ }
388
+ function CardAction(_a) {
389
+ var { className } = _a, props = __rest(_a, ["className"]);
390
+ return (jsx("div", Object.assign({ "data-slot": "card-action", className: cn("col-start-2 row-span-2 row-start-1 self-start justify-self-end", className) }, props)));
391
+ }
392
+ function CardContent(_a) {
393
+ var { className } = _a, props = __rest(_a, ["className"]);
394
+ return (jsx("div", Object.assign({ "data-slot": "card-content", className: cn("px-6 pb-6 group-data-[size=sm]/card:px-4 group-data-[size=sm]/card:pb-4", className) }, props)));
395
+ }
396
+ function CardFooter(_a) {
397
+ var { className } = _a, props = __rest(_a, ["className"]);
398
+ return (jsx("div", Object.assign({ "data-slot": "card-footer", className: cn("px-6 pb-6 group-data-[size=sm]/card:px-4 group-data-[size=sm]/card:pb-4 flex items-center gap-3", className) }, props)));
399
+ }
400
+
401
+ const CarouselContext = React.createContext(null);
402
+ function useCarousel() {
403
+ const context = React.useContext(CarouselContext);
404
+ if (!context) {
405
+ throw new Error("useCarousel must be used within a <Carousel />");
406
+ }
407
+ return context;
408
+ }
409
+ function Carousel(_a) {
410
+ var { orientation = "horizontal", opts, setApi, plugins, className, children } = _a, props = __rest(_a, ["orientation", "opts", "setApi", "plugins", "className", "children"]);
411
+ const [carouselRef, api] = useEmblaCarousel(Object.assign(Object.assign({}, opts), { axis: orientation === "horizontal" ? "x" : "y" }), plugins);
412
+ const [canScrollPrev, setCanScrollPrev] = React.useState(false);
413
+ const [canScrollNext, setCanScrollNext] = React.useState(false);
414
+ const onSelect = React.useCallback((api) => {
415
+ if (!api)
416
+ return;
417
+ setCanScrollPrev(api.canScrollPrev());
418
+ setCanScrollNext(api.canScrollNext());
419
+ }, []);
420
+ const scrollPrev = React.useCallback(() => {
421
+ api === null || api === void 0 ? void 0 : api.scrollPrev();
422
+ }, [api]);
423
+ const scrollNext = React.useCallback(() => {
424
+ api === null || api === void 0 ? void 0 : api.scrollNext();
425
+ }, [api]);
426
+ const handleKeyDown = React.useCallback((event) => {
427
+ if (event.key === "ArrowLeft") {
428
+ event.preventDefault();
429
+ scrollPrev();
430
+ }
431
+ else if (event.key === "ArrowRight") {
432
+ event.preventDefault();
433
+ scrollNext();
434
+ }
435
+ }, [scrollPrev, scrollNext]);
436
+ React.useEffect(() => {
437
+ if (!api || !setApi)
438
+ return;
439
+ setApi(api);
440
+ }, [api, setApi]);
441
+ React.useEffect(() => {
442
+ if (!api)
443
+ return;
444
+ onSelect(api);
445
+ api.on("reInit", onSelect);
446
+ api.on("select", onSelect);
447
+ return () => {
448
+ api === null || api === void 0 ? void 0 : api.off("select", onSelect);
449
+ };
450
+ }, [api, onSelect]);
451
+ return (jsx(CarouselContext.Provider, { value: {
452
+ carouselRef,
453
+ api: api,
454
+ opts,
455
+ orientation: orientation || ((opts === null || opts === void 0 ? void 0 : opts.axis) === "y" ? "vertical" : "horizontal"),
456
+ scrollPrev,
457
+ scrollNext,
458
+ canScrollPrev,
459
+ canScrollNext,
460
+ }, children: jsx("div", Object.assign({ onKeyDownCapture: handleKeyDown, className: cn("relative", className), role: "region", "aria-roledescription": "carousel", "data-slot": "carousel" }, props, { children: children })) }));
461
+ }
462
+ function CarouselContent(_a) {
463
+ var { className } = _a, props = __rest(_a, ["className"]);
464
+ const { carouselRef, orientation } = useCarousel();
465
+ return (jsx("div", { ref: carouselRef, className: "overflow-hidden", "data-slot": "carousel-content", children: jsx("div", Object.assign({ className: cn("flex", orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col", className) }, props)) }));
466
+ }
467
+ function CarouselItem(_a) {
468
+ var { className } = _a, props = __rest(_a, ["className"]);
469
+ const { orientation } = useCarousel();
470
+ return (jsx("div", Object.assign({ role: "group", "aria-roledescription": "slide", "data-slot": "carousel-item", className: cn("min-w-0 shrink-0 grow-0 basis-full", orientation === "horizontal" ? "pl-4" : "pt-4", className) }, props)));
471
+ }
472
+ function CarouselPrevious(_a) {
473
+ var { className, variant = "outline", size = "icon-sm" } = _a, props = __rest(_a, ["className", "variant", "size"]);
474
+ const { orientation, scrollPrev, canScrollPrev } = useCarousel();
475
+ return (jsxs(Button, Object.assign({ "data-slot": "carousel-previous", variant: variant, size: size, className: cn("absolute touch-manipulation rounded-input-sm", orientation === "horizontal"
476
+ ? "top-1/2 -left-12 -translate-y-1/2"
477
+ : "-top-12 left-1/2 -translate-x-1/2 rotate-90", className), disabled: !canScrollPrev, onClick: scrollPrev }, props, { children: [jsx(SvgChevronLeft, {}), jsx("span", { className: "sr-only", children: "Previous slide" })] })));
478
+ }
479
+ function CarouselNext(_a) {
480
+ var { className, variant = "outline", size = "icon-sm" } = _a, props = __rest(_a, ["className", "variant", "size"]);
481
+ const { orientation, scrollNext, canScrollNext } = useCarousel();
482
+ return (jsxs(Button, Object.assign({ "data-slot": "carousel-next", variant: variant, size: size, className: cn("absolute touch-manipulation rounded-input-sm", orientation === "horizontal"
483
+ ? "top-1/2 -right-12 -translate-y-1/2"
484
+ : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90", className), disabled: !canScrollNext, onClick: scrollNext }, props, { children: [jsx(SvgChevronRight, {}), jsx("span", { className: "sr-only", children: "Next slide" })] })));
485
+ }
486
+
487
+ // Format: { THEME_NAME: CSS_SELECTOR }
488
+ const THEMES = { light: "", dark: ".dark" };
489
+ const ChartContext = React.createContext(null);
490
+ function useChart() {
491
+ const context = React.useContext(ChartContext);
492
+ if (!context) {
493
+ throw new Error("useChart must be used within a <ChartContainer />");
494
+ }
495
+ return context;
496
+ }
497
+ function ChartContainer(_a) {
498
+ var { id, className, children, config } = _a, props = __rest(_a, ["id", "className", "children", "config"]);
499
+ const uniqueId = React.useId();
500
+ const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
501
+ return (jsx(ChartContext.Provider, { value: { config }, children: jsxs("div", Object.assign({ "data-slot": "chart", "data-chart": chartId, className: cn("[&_.recharts-cartesian-axis-tick_text]:fill-[var(--muted-foreground)] [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-[var(--border)] [&_.recharts-curve.recharts-tooltip-cursor]:stroke-[var(--border)] [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-[var(--border)] [&_.recharts-radial-bar-background-sector]:fill-[var(--muted)] [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-[var(--muted)] [&_.recharts-reference-line_[stroke='#ccc']]:stroke-[var(--border)] flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden", "chart-container", className) }, props, { children: [jsx(ChartStyle, { id: chartId, config: config }), jsx(RechartsPrimitive.ResponsiveContainer, { children: children })] })) }));
502
+ }
503
+ const ChartStyle = ({ id, config }) => {
504
+ const colorConfig = Object.entries(config).filter(([, config]) => config.theme || config.color);
505
+ if (!colorConfig.length) {
506
+ return null;
507
+ }
508
+ return (jsx("style", { dangerouslySetInnerHTML: {
509
+ __html: Object.entries(THEMES)
510
+ .map(([theme, prefix]) => `
511
+ ${prefix} [data-chart=${id}] {
512
+ ${colorConfig
513
+ .map(([key, itemConfig]) => {
514
+ var _a;
515
+ const color = ((_a = itemConfig.theme) === null || _a === void 0 ? void 0 : _a[theme]) ||
516
+ itemConfig.color;
517
+ return color ? ` --color-${key}: ${color};` : null;
518
+ })
519
+ .join("\n")}
520
+ }
521
+ `)
522
+ .join("\n"),
523
+ } }));
524
+ };
525
+ const ChartTooltip = RechartsPrimitive.Tooltip;
526
+ function ChartTooltipContent({ active, payload, className, indicator = "dot", hideLabel = false, hideIndicator = false, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey, }) {
527
+ const { config } = useChart();
528
+ const tooltipLabel = React.useMemo(() => {
529
+ var _a;
530
+ if (hideLabel || !(payload === null || payload === void 0 ? void 0 : payload.length)) {
531
+ return null;
532
+ }
533
+ const [item] = payload;
534
+ const key = `${labelKey || (item === null || item === void 0 ? void 0 : item.dataKey) || (item === null || item === void 0 ? void 0 : item.name) || "value"}`;
535
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
536
+ const value = !labelKey && typeof label === "string"
537
+ ? ((_a = config[label]) === null || _a === void 0 ? void 0 : _a.label) || label
538
+ : itemConfig === null || itemConfig === void 0 ? void 0 : itemConfig.label;
539
+ if (labelFormatter) {
540
+ return (jsx("div", { className: cn("font-medium", labelClassName), children: labelFormatter(value, payload) }));
541
+ }
542
+ if (!value) {
543
+ return null;
544
+ }
545
+ return jsx("div", { className: cn("font-medium", labelClassName), children: value });
546
+ }, [
547
+ label,
548
+ labelFormatter,
549
+ payload,
550
+ hideLabel,
551
+ labelClassName,
552
+ config,
553
+ labelKey,
554
+ ]);
555
+ if (!active || !(payload === null || payload === void 0 ? void 0 : payload.length)) {
556
+ return null;
557
+ }
558
+ const nestLabel = payload.length === 1 && indicator !== "dot";
559
+ return (jsxs("div", { className: cn("chart-tooltip", "border border-[var(--border)] bg-[var(--background)] gap-1.5 rounded-popover px-2.5 py-1.5 text-xs shadow-xl grid min-w-[8rem] items-start", className), children: [!nestLabel ? tooltipLabel : null, jsx("div", { className: "chart-tooltip-content grid gap-1.5", children: payload
560
+ .filter((item) => item.type !== "none")
561
+ .map((item, index) => {
562
+ const key = `${nameKey || item.name || item.dataKey || "value"}`;
563
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
564
+ const indicatorColor = color || item.payload.fill || item.color;
565
+ return (jsx("div", { className: cn("[&>svg]:text-[var(--muted-foreground)] flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5", indicator === "dot" && "items-center"), children: formatter && (item === null || item === void 0 ? void 0 : item.value) !== undefined && item.name ? (formatter(item.value, item.name, item, index, item.payload)) : (jsxs(Fragment, { children: [(itemConfig === null || itemConfig === void 0 ? void 0 : itemConfig.icon) ? (jsx(itemConfig.icon, {})) : (!hideIndicator && (jsx("div", { className: cn("shrink-0 rounded-[2px] border-[var(--color-border)] bg-[var(--color-bg)]", {
566
+ "h-2.5 w-2.5": indicator === "dot",
567
+ "w-1": indicator === "line",
568
+ "w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
569
+ "my-0.5": nestLabel && indicator === "dashed",
570
+ }), style: {
571
+ "--color-bg": indicatorColor,
572
+ "--color-border": indicatorColor,
573
+ } }))), jsxs("div", { className: cn("flex flex-1 justify-between leading-none", nestLabel ? "items-end" : "items-center"), children: [jsxs("div", { className: "grid gap-1.5", children: [nestLabel ? tooltipLabel : null, jsx("span", { className: "text-[var(--muted-foreground)]", children: (itemConfig === null || itemConfig === void 0 ? void 0 : itemConfig.label) || item.name })] }), item.value && (jsx("span", { className: "text-[var(--foreground)] font-mono font-medium tabular-nums", children: item.value.toLocaleString() }))] })] })) }, item.dataKey));
574
+ }) })] }));
575
+ }
576
+ const ChartLegend = RechartsPrimitive.Legend;
577
+ function ChartLegendContent({ className, hideIcon = false, payload, verticalAlign = "bottom", nameKey, }) {
578
+ const { config } = useChart();
579
+ if (!(payload === null || payload === void 0 ? void 0 : payload.length)) {
580
+ return null;
581
+ }
582
+ return (jsx("div", { className: cn("flex items-center justify-center gap-4", verticalAlign === "top" ? "pb-3" : "pt-3", className), children: payload
583
+ .filter((item) => item.type !== "none")
584
+ .map((item) => {
585
+ const key = `${nameKey || item.dataKey || "value"}`;
586
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
587
+ return (jsxs("div", { className: cn("[&>svg]:text-[var(--muted-foreground)] flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3"), children: [(itemConfig === null || itemConfig === void 0 ? void 0 : itemConfig.icon) && !hideIcon ? (jsx(itemConfig.icon, {})) : (jsx("div", { className: "h-2 w-2 shrink-0 rounded-[2px]", style: {
588
+ backgroundColor: item.color,
589
+ } })), itemConfig === null || itemConfig === void 0 ? void 0 : itemConfig.label] }, item.value));
590
+ }) }));
591
+ }
592
+ function getPayloadConfigFromPayload(config, payload, key) {
593
+ if (typeof payload !== "object" || payload === null) {
594
+ return undefined;
595
+ }
596
+ const payloadPayload = "payload" in payload &&
597
+ typeof payload.payload === "object" &&
598
+ payload.payload !== null
599
+ ? payload.payload
600
+ : undefined;
601
+ let configLabelKey = key;
602
+ if (key in payload &&
603
+ typeof payload[key] === "string") {
604
+ configLabelKey = payload[key];
605
+ }
606
+ else if (payloadPayload &&
607
+ key in payloadPayload &&
608
+ typeof payloadPayload[key] === "string") {
609
+ configLabelKey = payloadPayload[key];
610
+ }
611
+ return configLabelKey in config
612
+ ? config[configLabelKey]
613
+ : config[key];
614
+ }
615
+
616
+ var _path$a;
617
+ function _extends$a() { return _extends$a = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$a.apply(null, arguments); }
618
+ var SvgCheck = function SvgCheck(props) {
619
+ return /*#__PURE__*/React.createElement("svg", _extends$a({
620
+ xmlns: "http://www.w3.org/2000/svg",
621
+ width: 48,
622
+ height: 48,
623
+ viewBox: "0 -960 960 960"
624
+ }, props), _path$a || (_path$a = /*#__PURE__*/React.createElement("path", {
625
+ d: "M378-246 154-470l43-43 181 181 384-384 43 43-427 427Z"
626
+ })));
627
+ };
628
+
629
+ function Checkbox(_a) {
630
+ var { className } = _a, props = __rest(_a, ["className"]);
631
+ return (jsx(Checkbox$1.Root, Object.assign({ "data-slot": "checkbox", className: cn("border-input-border bg-input data-checked:bg-primary data-checked:text-primary-foreground data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ring aria-invalid:ring-2 aria-invalid:ring-offset-2 aria-invalid:ring-destructive flex size-4 items-center justify-center rounded-xs border transition-shadow group-has-disabled/field:opacity-50 peer relative shrink-0 disabled:cursor-not-allowed disabled:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2", className) }, props, { children: jsx(Checkbox$1.Indicator, { "data-slot": "checkbox-indicator", className: "[&>svg]:size-3.5 grid place-content-center text-current transition-none", children: jsx(SvgCheck, {}) }) })));
632
+ }
633
+
634
+ function Collapsible(_a) {
635
+ var props = __rest(_a, []);
636
+ return jsx(Collapsible$1.Root, Object.assign({ "data-slot": "collapsible" }, props));
637
+ }
638
+ function CollapsibleTrigger(_a) {
639
+ var props = __rest(_a, []);
640
+ return (jsx(Collapsible$1.CollapsibleTrigger, Object.assign({ "data-slot": "collapsible-trigger" }, props)));
641
+ }
642
+ function CollapsibleContent(_a) {
643
+ var props = __rest(_a, []);
644
+ return (jsx(Collapsible$1.CollapsibleContent, Object.assign({ "data-slot": "collapsible-content" }, props)));
645
+ }
646
+
647
+ function Input(_a) {
648
+ var { className, type } = _a, props = __rest(_a, ["className", "type"]);
649
+ return (jsx("input", Object.assign({ type: type, "data-slot": "input", className: cn("border-input-border bg-input focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ring aria-invalid:ring-2 aria-invalid:ring-offset-2 aria-invalid:ring-destructive h-9 rounded-input-sm border bg-input px-3 py-1 text-base transition-[color,box-shadow] file:h-7 file:text-sm file:font-medium md:text-sm file:text-foreground placeholder:text-muted-foreground w-full min-w-0 file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50", className) }, props)));
650
+ }
651
+
652
+ function Textarea(_a) {
653
+ var { className } = _a, props = __rest(_a, ["className"]);
654
+ return (jsx("textarea", Object.assign({ "data-slot": "textarea", className: cn("border-input-border bg-input focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ring aria-invalid:ring-2 aria-invalid:ring-offset-2 aria-invalid:ring-destructive rounded-input-area border px-2.5 py-2 text-base transition-[color,box-shadow] md:text-sm placeholder:text-muted-foreground flex field-sizing-content min-h-16 w-full disabled:cursor-not-allowed disabled:opacity-50", className) }, props)));
655
+ }
656
+
657
+ function InputGroup(_a) {
658
+ var { className } = _a, props = __rest(_a, ["className"]);
659
+ return (jsx("div", Object.assign({ "data-slot": "input-group", role: "group", className: cn("border-input-border bg-input has-[[data-slot=input-group-control]:focus-visible]:outline-none has-[[data-slot=input-group-control]:focus-visible]:ring-2 has-[[data-slot=input-group-control]:focus-visible]:ring-offset-2 has-[[data-slot=input-group-control]:focus-visible]:ring-ring has-[[data-slot][aria-invalid=true]]:ring-2 has-[[data-slot][aria-invalid=true]]:ring-offset-2 has-[[data-slot][aria-invalid=true]]:ring-destructive h-9 rounded-input-sm border transition-[color,box-shadow] has-[>textarea]:h-auto group/input-group relative flex w-full min-w-0 items-center outline-none [[data-slot=combobox-content]_&]:focus-within:border-inherit [[data-slot=combobox-content]_&]:focus-within:ring-0", className) }, props)));
660
+ }
661
+ const inputGroupAddonVariants = cva("text-muted-foreground h-auto ml-1.5 gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-input-sm [&>svg:not([class*='size-'])]:size-4 flex cursor-text items-center justify-center select-none", {
662
+ variants: {
663
+ align: {
664
+ "inline-start": "pl-2 has-[>button]:ml-[-0.25rem] has-[>kbd]:ml-[-0.15rem] order-first",
665
+ "inline-end": "pr-2 has-[>button]:mr-[-0.25rem] has-[>kbd]:mr-[-0.15rem] order-last",
666
+ "block-start": "px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2 order-first w-full justify-start",
667
+ "block-end": "px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2 order-last w-full justify-start",
668
+ },
669
+ },
670
+ defaultVariants: {
671
+ align: "inline-start",
672
+ },
673
+ });
674
+ function InputGroupAddon(_a) {
675
+ var { className, align = "inline-start" } = _a, props = __rest(_a, ["className", "align"]);
676
+ return (jsx("div", Object.assign({ role: "group", "data-slot": "input-group-addon", "data-align": align, className: cn(inputGroupAddonVariants({ align }), className), onClick: (e) => {
677
+ var _a, _b;
678
+ if (e.target.closest("button")) {
679
+ return;
680
+ }
681
+ (_b = (_a = e.currentTarget.parentElement) === null || _a === void 0 ? void 0 : _a.querySelector("input")) === null || _b === void 0 ? void 0 : _b.focus();
682
+ } }, props)));
683
+ }
684
+ const inputGroupButtonVariants = cva("gap-2 text-sm shadow-none border-0 mr-1.5 rounded-input-sm bg-transparent focus-visible:ring-0 flex items-center", {
685
+ variants: {
686
+ size: {
687
+ xs: "h-6 gap-1 px-1.5 [&>svg:not([class*='size-'])]:size-3.5",
688
+ sm: "",
689
+ "icon-xs": "size-6 p-0 has-[>svg]:p-0",
690
+ "icon-sm": "size-8 p-0 has-[>svg]:p-0",
691
+ },
692
+ },
693
+ defaultVariants: {
694
+ size: "xs",
695
+ },
696
+ });
697
+ function InputGroupButton(_a) {
698
+ var { className, type = "button", variant = "ghost", size = "xs" } = _a, props = __rest(_a, ["className", "type", "variant", "size"]);
699
+ return (jsx(Button, Object.assign({ type: type, "data-size": size, variant: variant, className: cn(inputGroupButtonVariants({ size }), className) }, props)));
700
+ }
701
+ function InputGroupText(_a) {
702
+ var { className } = _a, props = __rest(_a, ["className"]);
703
+ return (jsx("span", Object.assign({ className: cn("text-muted-foreground gap-2 text-sm [&_svg:not([class*='size-'])]:size-4 flex items-center [&_svg]:pointer-events-none", className) }, props)));
704
+ }
705
+ function InputGroupInput(_a) {
706
+ var { className } = _a, props = __rest(_a, ["className"]);
707
+ return (jsx(Input, Object.assign({ "data-slot": "input-group-control", className: cn("rounded-none border-0 bg-transparent shadow-none ring-0 ring-offset-0 focus-visible:ring-0 focus-visible:ring-offset-0 aria-invalid:ring-0 aria-invalid:ring-offset-0 flex-1", className) }, props)));
708
+ }
709
+ function InputGroupTextarea(_a) {
710
+ var { className } = _a, props = __rest(_a, ["className"]);
711
+ return (jsx(Textarea, Object.assign({ "data-slot": "input-group-control", className: cn("rounded-none border-0 bg-transparent py-2 shadow-none ring-0 ring-offset-0 focus-visible:ring-0 focus-visible:ring-offset-0 aria-invalid:ring-0 aria-invalid:ring-offset-0 flex-1 resize-none", className) }, props)));
712
+ }
713
+
714
+ var _path$9;
715
+ function _extends$9() { return _extends$9 = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$9.apply(null, arguments); }
716
+ var SvgClose = function SvgClose(props) {
717
+ return /*#__PURE__*/React.createElement("svg", _extends$9({
718
+ xmlns: "http://www.w3.org/2000/svg",
719
+ width: 48,
720
+ height: 48,
721
+ viewBox: "0 -960 960 960"
722
+ }, props), _path$9 || (_path$9 = /*#__PURE__*/React.createElement("path", {
723
+ d: "m249-207-42-42 231-231-231-231 42-42 231 231 231-231 42 42-231 231 231 231-42 42-231-231-231 231Z"
724
+ })));
725
+ };
726
+
727
+ const Combobox = Combobox$1.Root;
728
+ function ComboboxValue(_a) {
729
+ var props = __rest(_a, []);
730
+ return jsx(Combobox$1.Value, Object.assign({ "data-slot": "combobox-value" }, props));
731
+ }
732
+ function ComboboxTrigger(_a) {
733
+ var { className, children } = _a, props = __rest(_a, ["className", "children"]);
734
+ return (jsxs(Combobox$1.Trigger, Object.assign({ "data-slot": "combobox-trigger", className: cn("[&_svg:not([class*='size-'])]:size-4", className) }, props, { children: [children, jsx(SvgKeyboardArrowDown, { className: "text-muted-foreground size-4 pointer-events-none" })] })));
735
+ }
736
+ function ComboboxClear(_a) {
737
+ var { className } = _a, props = __rest(_a, ["className"]);
738
+ return (jsx(Combobox$1.Clear, Object.assign({ "data-slot": "combobox-clear", render: jsx(InputGroupButton, { variant: "ghost", size: "icon-xs" }), className: cn(className) }, props, { children: jsx(SvgClose, { className: "pointer-events-none" }) })));
739
+ }
740
+ function ComboboxInput(_a) {
741
+ var { className, children, disabled = false, showTrigger = true, showClear = false } = _a, props = __rest(_a, ["className", "children", "disabled", "showTrigger", "showClear"]);
742
+ return (jsxs(InputGroup, { className: cn("w-auto", className), children: [jsx(Combobox$1.Input, Object.assign({ render: jsx(InputGroupInput, { disabled: disabled }) }, props)), jsxs(InputGroupAddon, { align: "inline-end", children: [showTrigger && (jsx(InputGroupButton, { size: "icon-xs", variant: "ghost", asChild: true, "data-slot": "input-group-button", className: "group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent", disabled: disabled, children: jsx(ComboboxTrigger, {}) })), showClear && jsx(ComboboxClear, { disabled: disabled })] }), children] }));
743
+ }
744
+ function ComboboxContent(_a) {
745
+ var { className, side = "bottom", sideOffset = 6, align = "start", alignOffset = 0, anchor } = _a, props = __rest(_a, ["className", "side", "sideOffset", "align", "alignOffset", "anchor"]);
746
+ return (jsx(Combobox$1.Portal, { children: jsx(Combobox$1.Positioner, { side: side, sideOffset: sideOffset, align: align, alignOffset: alignOffset, anchor: anchor, className: "isolate z-50", children: jsx(Combobox$1.Popup, Object.assign({ "data-slot": "combobox-content", "data-chips": !!anchor, className: cn("bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:border-input-border/30 max-h-72 min-w-36 overflow-hidden rounded-popover shadow-md ring-1 ring-foreground/10 duration-100 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:shadow-none group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) data-[chips=true]:min-w-(--anchor-width) p-2", className) }, props)) }) }));
747
+ }
748
+ function ComboboxList(_a) {
749
+ var { className } = _a, props = __rest(_a, ["className"]);
750
+ return (jsx(Combobox$1.List, Object.assign({ "data-slot": "combobox-list", className: cn("no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto p-2 data-empty:p-0 overflow-y-auto overscroll-contain", className) }, props)));
751
+ }
752
+ function ComboboxItem(_a) {
753
+ var { className, children } = _a, props = __rest(_a, ["className", "children"]);
754
+ return (jsxs(Combobox$1.Item, Object.assign({ "data-slot": "combobox-item", className: cn("data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground gap-2 rounded-input-area p-1 py-1.5 pr-8 pl-2 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex w-full cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0", className) }, props, { children: [children, jsx(Combobox$1.ItemIndicator, { render: jsx("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center" }), children: jsx(SvgCheck, { className: "pointer-events-none" }) })] })));
755
+ }
756
+ function ComboboxGroup(_a) {
757
+ var { className } = _a, props = __rest(_a, ["className"]);
758
+ return (jsx(Combobox$1.Group, Object.assign({ "data-slot": "combobox-group", className: cn(className) }, props)));
759
+ }
760
+ function ComboboxLabel(_a) {
761
+ var { className } = _a, props = __rest(_a, ["className"]);
762
+ return (jsx(Combobox$1.GroupLabel, Object.assign({ "data-slot": "combobox-label", className: cn("text-muted-foreground px-2 py-1.5 text-xs", className) }, props)));
763
+ }
764
+ function ComboboxCollection(_a) {
765
+ var props = __rest(_a, []);
766
+ return (jsx(Combobox$1.Collection, Object.assign({ "data-slot": "combobox-collection" }, props)));
767
+ }
768
+ function ComboboxEmpty(_a) {
769
+ var { className } = _a, props = __rest(_a, ["className"]);
770
+ return (jsx(Combobox$1.Empty, Object.assign({ "data-slot": "combobox-empty", className: cn("text-muted-foreground hidden w-full justify-center py-2 text-center text-sm group-data-empty/combobox-content:flex", className) }, props)));
771
+ }
772
+ function ComboboxSeparator(_a) {
773
+ var { className } = _a, props = __rest(_a, ["className"]);
774
+ return (jsx(Combobox$1.Separator, Object.assign({ "data-slot": "combobox-separator", className: cn("bg-border -mx-1 my-1 h-px", className) }, props)));
775
+ }
776
+ function ComboboxChips(_a) {
777
+ var { className } = _a, props = __rest(_a, ["className"]);
778
+ return (jsx(Combobox$1.Chips, Object.assign({ "data-slot": "combobox-chips", className: cn("dark:bg-input border-input-border focus-within:border-ring focus-within:focus-visible:outline-none focus-within:focus-visible:ring-2 focus-within:focus-visible:ring-offset-2 focus-within:focus-visible:ring-ring has-aria-invalid:ring-2 has-aria-invalid:ring-offset-2 has-aria-invalid:ring-destructive has-aria-invalid:border-destructive dark:has-aria-invalid:border-destructive flex min-h-9 flex-wrap items-center gap-1.5 rounded-input-area border bg-transparent bg-clip-padding px-2.5 py-1.5 text-sm transition-[color,box-shadow] has-data-[slot=combobox-chip]:px-1.5", className) }, props)));
779
+ }
780
+ function ComboboxChip(_a) {
781
+ var { className, children, showRemove = true } = _a, props = __rest(_a, ["className", "children", "showRemove"]);
782
+ return (jsxs(Combobox$1.Chip, Object.assign({ "data-slot": "combobox-chip", className: cn("bg-muted text-foreground flex h-[calc(--spacing(5.5))] w-fit items-center justify-center gap-1 rounded-input-area px-1.5 text-xs font-medium whitespace-nowrap has-data-[slot=combobox-chip-remove]:pr-0 has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50", className) }, props, { children: [children, showRemove && (jsx(Combobox$1.ChipRemove, { render: jsx(Button, { variant: "ghost", size: "icon-xs" }), className: "-ml-1 opacity-50 hover:opacity-100", "data-slot": "combobox-chip-remove", children: jsx(SvgClose, { className: "pointer-events-none" }) }))] })));
783
+ }
784
+ function ComboboxChipsInput(_a) {
785
+ var { className } = _a, props = __rest(_a, ["className"]);
786
+ return (jsx(Combobox$1.Input, Object.assign({ "data-slot": "combobox-chip-input", className: cn("min-w-16 flex-1 outline-none", className) }, props)));
787
+ }
788
+ function useComboboxAnchor() {
789
+ return React.useRef(null);
790
+ }
791
+
792
+ function Dialog(_a) {
793
+ var props = __rest(_a, []);
794
+ return jsx(Dialog$1.Root, Object.assign({ "data-slot": "dialog" }, props));
795
+ }
796
+ function DialogTrigger(_a) {
797
+ var props = __rest(_a, []);
798
+ return jsx(Dialog$1.Trigger, Object.assign({ "data-slot": "dialog-trigger" }, props));
799
+ }
800
+ function DialogPortal(_a) {
801
+ var props = __rest(_a, []);
802
+ return jsx(Dialog$1.Portal, Object.assign({ "data-slot": "dialog-portal" }, props));
803
+ }
804
+ function DialogClose(_a) {
805
+ var props = __rest(_a, []);
806
+ return jsx(Dialog$1.Close, Object.assign({ "data-slot": "dialog-close" }, props));
807
+ }
808
+ function DialogOverlay(_a) {
809
+ var { className } = _a, props = __rest(_a, ["className"]);
810
+ return (jsx(Dialog$1.Overlay, Object.assign({ "data-slot": "dialog-overlay", className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-overlay duration-100 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 isolate z-50", className) }, props)));
811
+ }
812
+ function DialogContent(_a) {
813
+ var { className, children, showCloseButton = true, overlayClassName } = _a, props = __rest(_a, ["className", "children", "showCloseButton", "overlayClassName"]);
814
+ return (jsxs(DialogPortal, { children: [jsx(DialogOverlay, { className: overlayClassName }), jsxs(Dialog$1.Content, Object.assign({ "data-slot": "dialog-content", className: cn("bg-popover data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 shadow-lg grid max-w-[calc(100%-2rem)] gap-6 rounded-card p-6 text-sm duration-100 sm:max-w-md fixed top-1/2 left-1/2 z-50 w-full -translate-x-1/2 -translate-y-1/2", className) }, props, { children: [children, showCloseButton && (jsx(Dialog$1.Close, { "data-slot": "dialog-close", asChild: true, children: jsxs(Button, { variant: "ghost", className: "absolute top-4 right-4", size: "icon-sm", children: [jsx(SvgClose, {}), jsx("span", { className: "sr-only", children: "Close" })] }) }))] }))] }));
815
+ }
816
+ function DialogHeader(_a) {
817
+ var { className } = _a, props = __rest(_a, ["className"]);
818
+ return (jsx("div", Object.assign({ "data-slot": "dialog-header", className: cn("gap-2 flex flex-col", className) }, props)));
819
+ }
820
+ function DialogFooter(_a) {
821
+ var { className, showCloseButton = false, children } = _a, props = __rest(_a, ["className", "showCloseButton", "children"]);
822
+ return (jsxs("div", Object.assign({ "data-slot": "dialog-footer", className: cn("gap-2 flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className) }, props, { children: [children, showCloseButton && (jsx(Dialog$1.Close, { asChild: true, children: jsx(Button, { variant: "outline", children: "Close" }) }))] })));
823
+ }
824
+ function DialogTitle(_a) {
825
+ var { className } = _a, props = __rest(_a, ["className"]);
826
+ return (jsx(Dialog$1.Title, Object.assign({ "data-slot": "dialog-title", className: cn("leading-none font-medium", className) }, props)));
827
+ }
828
+ function DialogDescription(_a) {
829
+ var { className } = _a, props = __rest(_a, ["className"]);
830
+ return (jsx(Dialog$1.Description, Object.assign({ "data-slot": "dialog-description", className: cn("text-muted-foreground *:[a]:hover:text-foreground text-sm *:[a]:underline *:[a]:underline-offset-3", className) }, props)));
831
+ }
832
+
833
+ var _path$8;
834
+ function _extends$8() { return _extends$8 = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$8.apply(null, arguments); }
835
+ var SvgSearch = function SvgSearch(props) {
836
+ return /*#__PURE__*/React.createElement("svg", _extends$8({
837
+ xmlns: "http://www.w3.org/2000/svg",
838
+ width: 48,
839
+ height: 48,
840
+ viewBox: "0 -960 960 960"
841
+ }, props), _path$8 || (_path$8 = /*#__PURE__*/React.createElement("path", {
842
+ d: "M796-121 533-384q-30 26-69.96 40.5Q423.08-329 378-329q-108.16 0-183.08-75Q120-479 120-585t75-181q75-75 181.5-75t181 75Q632-691 632-584.85 632-542 618-502q-14 40-42 75l264 262-44 44ZM377-389q81.25 0 138.13-57.5Q572-504 572-585t-56.87-138.5Q458.25-781 377-781q-82.08 0-139.54 57.5Q180-666 180-585t57.46 138.5Q294.92-389 377-389Z"
843
+ })));
844
+ };
845
+
846
+ function Command(_a) {
847
+ var { className } = _a, props = __rest(_a, ["className"]);
848
+ return (jsx(Command$1, Object.assign({ "data-slot": "command", className: cn("bg-popover text-popover-foreground rounded-popover p-1 flex size-full flex-col overflow-hidden", className) }, props)));
849
+ }
850
+ function CommandDialog(_a) {
851
+ var { title = "Command Palette", description = "Search for a command to run...", children, className, showCloseButton = false } = _a, props = __rest(_a, ["title", "description", "children", "className", "showCloseButton"]);
852
+ return (jsxs(Dialog, Object.assign({}, props, { children: [jsxs(DialogHeader, { className: "sr-only", children: [jsx(DialogTitle, { children: title }), jsx(DialogDescription, { children: description })] }), jsx(DialogContent, { className: cn("rounded-popover overflow-hidden p-0", className), showCloseButton: showCloseButton, children: jsx(Command, { children: children }) })] })));
853
+ }
854
+ function CommandInput(_a) {
855
+ var { className } = _a, props = __rest(_a, ["className"]);
856
+ return (jsx("div", { "data-slot": "command-input-wrapper", className: "p-1 pb-0", children: jsxs(InputGroup, { className: "bg-input border-input h-8! rounded-input-area! shadow-none! *:data-[slot=input-group-addon]:pl-2!", children: [jsx(Command$1.Input, Object.assign({ "data-slot": "command-input", className: cn("w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50", className) }, props)), jsx(InputGroupAddon, { children: jsx(SvgSearch, { className: "size-4 shrink-0 opacity-50" }) })] }) }));
857
+ }
858
+ function CommandList(_a) {
859
+ var { className } = _a, props = __rest(_a, ["className"]);
860
+ return (jsx(Command$1.List, Object.assign({ "data-slot": "command-list", className: cn("no-scrollbar max-h-72 scroll-py-1 outline-none overflow-x-hidden overflow-y-auto", className) }, props)));
861
+ }
862
+ function CommandEmpty(_a) {
863
+ var { className } = _a, props = __rest(_a, ["className"]);
864
+ return (jsx(Command$1.Empty, Object.assign({ "data-slot": "command-empty", className: cn("py-6 text-center text-sm", className) }, props)));
865
+ }
866
+ function CommandGroup(_a) {
867
+ var { className } = _a, props = __rest(_a, ["className"]);
868
+ return (jsx(Command$1.Group, Object.assign({ "data-slot": "command-group", className: cn("text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium", className) }, props)));
869
+ }
870
+ function CommandSeparator(_a) {
871
+ var { className } = _a, props = __rest(_a, ["className"]);
872
+ return (jsx(Command$1.Separator, Object.assign({ "data-slot": "command-separator", className: cn("bg-border -mx-1 h-px w-auto", className) }, props)));
873
+ }
874
+ function CommandItem(_a) {
875
+ var { className, children } = _a, props = __rest(_a, ["className", "children"]);
876
+ return (jsxs(Command$1.Item, Object.assign({ "data-slot": "command-item", className: cn("data-selected:bg-accent data-selected:text-accent-foreground data-selected:**:[svg]:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-input-area px-2 py-1.5 text-sm outline-hidden select-none [&_svg:not([class*='size-'])]:size-4 [[data-slot=dialog-content]_&]:rounded-input-area! group/command-item data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0", className) }, props, { children: [children, jsx(SvgCheck, { className: "ml-auto opacity-0 group-has-[[data-slot=command-shortcut]]/command-item:hidden group-data-[checked=true]/command-item:opacity-100" })] })));
877
+ }
878
+ function CommandShortcut(_a) {
879
+ var { className } = _a, props = __rest(_a, ["className"]);
880
+ return (jsx("span", Object.assign({ "data-slot": "command-shortcut", className: cn("text-muted-foreground group-data-selected/command-item:text-accent-foreground ml-auto text-xs tracking-widest", className) }, props)));
881
+ }
882
+
883
+ function ContextMenu(_a) {
884
+ var props = __rest(_a, []);
885
+ return jsx(ContextMenu$1.Root, Object.assign({ "data-slot": "context-menu" }, props));
886
+ }
887
+ function ContextMenuTrigger(_a) {
888
+ var { className } = _a, props = __rest(_a, ["className"]);
889
+ return (jsx(ContextMenu$1.Trigger, Object.assign({ "data-slot": "context-menu-trigger", className: cn("select-none", className) }, props)));
890
+ }
891
+ function ContextMenuGroup(_a) {
892
+ var props = __rest(_a, []);
893
+ return (jsx(ContextMenu$1.Group, Object.assign({ "data-slot": "context-menu-group" }, props)));
894
+ }
895
+ function ContextMenuPortal(_a) {
896
+ var props = __rest(_a, []);
897
+ return (jsx(ContextMenu$1.Portal, Object.assign({ "data-slot": "context-menu-portal" }, props)));
898
+ }
899
+ function ContextMenuSub(_a) {
900
+ var props = __rest(_a, []);
901
+ return jsx(ContextMenu$1.Sub, Object.assign({ "data-slot": "context-menu-sub" }, props));
902
+ }
903
+ function ContextMenuRadioGroup(_a) {
904
+ var props = __rest(_a, []);
905
+ return (jsx(ContextMenu$1.RadioGroup, Object.assign({ "data-slot": "context-menu-radio-group" }, props)));
906
+ }
907
+ function ContextMenuContent(_a) {
908
+ var { className } = _a, props = __rest(_a, ["className"]);
909
+ return (jsx(ContextMenu$1.Portal, { children: jsx(ContextMenu$1.Content, Object.assign({ "data-slot": "context-menu-content", className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/10 bg-popover text-popover-foreground min-w-36 rounded-popover p-1 shadow-md ring-1 duration-100 z-50 max-h-(--radix-context-menu-content-available-height) origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto", className) }, props)) }));
910
+ }
911
+ function ContextMenuItem(_a) {
912
+ var { className, inset, variant = "default" } = _a, props = __rest(_a, ["className", "inset", "variant"]);
913
+ return (jsx(ContextMenu$1.Item, Object.assign({ "data-slot": "context-menu-item", "data-inset": inset, "data-variant": variant, className: cn("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive focus:*:[svg]:text-accent-foreground gap-2 rounded-input-area px-2 py-1.5 text-sm [&_svg:not([class*='size-'])]:size-4 group/context-menu-item relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0", className) }, props)));
914
+ }
915
+ function ContextMenuSubTrigger(_a) {
916
+ var { className, inset, children } = _a, props = __rest(_a, ["className", "inset", "children"]);
917
+ return (jsxs(ContextMenu$1.SubTrigger, Object.assign({ "data-slot": "context-menu-sub-trigger", "data-inset": inset, className: cn("focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground rounded-input-area px-2 py-1.5 text-sm [&_svg:not([class*='size-'])]:size-4 flex cursor-default items-center outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0", className) }, props, { children: [children, jsx(SvgChevronRight, { className: "ml-auto" })] })));
918
+ }
919
+ function ContextMenuSubContent(_a) {
920
+ var { className } = _a, props = __rest(_a, ["className"]);
921
+ return (jsx(ContextMenu$1.SubContent, Object.assign({ "data-slot": "context-menu-sub-content", className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 bg-popover text-popover-foreground min-w-32 rounded-popover border p-1 shadow-lg duration-100 z-50 origin-(--radix-context-menu-content-transform-origin) overflow-hidden", className) }, props)));
922
+ }
923
+ function ContextMenuCheckboxItem(_a) {
924
+ var { className, children, checked } = _a, props = __rest(_a, ["className", "children", "checked"]);
925
+ return (jsxs(ContextMenu$1.CheckboxItem, Object.assign({ "data-slot": "context-menu-checkbox-item", className: cn("focus:bg-accent focus:text-accent-foreground gap-2 rounded-input-area py-1.5 pr-8 pl-2 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0", className), checked: checked }, props, { children: [jsx("span", { className: "absolute right-2 pointer-events-none", children: jsx(ContextMenu$1.ItemIndicator, { children: jsx(SvgCheck, {}) }) }), children] })));
926
+ }
927
+ function ContextMenuRadioItem(_a) {
928
+ var { className, children } = _a, props = __rest(_a, ["className", "children"]);
929
+ return (jsxs(ContextMenu$1.RadioItem, Object.assign({ "data-slot": "context-menu-radio-item", className: cn("focus:bg-accent focus:text-accent-foreground gap-2 rounded-input-area py-1.5 pr-8 pl-2 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0", className) }, props, { children: [jsx("span", { className: "absolute right-2 pointer-events-none", children: jsx(ContextMenu$1.ItemIndicator, { children: jsx(SvgCheck, {}) }) }), children] })));
930
+ }
931
+ function ContextMenuLabel(_a) {
932
+ var { className, inset } = _a, props = __rest(_a, ["className", "inset"]);
933
+ return (jsx(ContextMenu$1.Label, Object.assign({ "data-slot": "context-menu-label", "data-inset": inset, className: cn("text-muted-foreground px-2 py-1.5 text-xs font-medium data-[inset]:pl-8", className) }, props)));
934
+ }
935
+ function ContextMenuSeparator(_a) {
936
+ var { className } = _a, props = __rest(_a, ["className"]);
937
+ return (jsx(ContextMenu$1.Separator, Object.assign({ "data-slot": "context-menu-separator", className: cn("bg-border -mx-1 my-1 h-px", className) }, props)));
938
+ }
939
+ function ContextMenuShortcut(_a) {
940
+ var { className } = _a, props = __rest(_a, ["className"]);
941
+ return (jsx("span", Object.assign({ "data-slot": "context-menu-shortcut", className: cn("text-muted-foreground group-focus/context-menu-item:text-accent-foreground ml-auto text-xs tracking-widest", className) }, props)));
942
+ }
943
+
944
+ function Drawer(_a) {
945
+ var props = __rest(_a, []);
946
+ return jsx(Drawer$1.Root, Object.assign({ "data-slot": "drawer" }, props));
947
+ }
948
+ function DrawerTrigger(_a) {
949
+ var props = __rest(_a, []);
950
+ return jsx(Drawer$1.Trigger, Object.assign({ "data-slot": "drawer-trigger" }, props));
951
+ }
952
+ function DrawerPortal(_a) {
953
+ var props = __rest(_a, []);
954
+ return jsx(Drawer$1.Portal, Object.assign({ "data-slot": "drawer-portal" }, props));
955
+ }
956
+ function DrawerClose(_a) {
957
+ var props = __rest(_a, []);
958
+ return jsx(Drawer$1.Close, Object.assign({ "data-slot": "drawer-close" }, props));
959
+ }
960
+ function DrawerOverlay(_a) {
961
+ var { className } = _a, props = __rest(_a, ["className"]);
962
+ return (jsx(Drawer$1.Overlay, Object.assign({ "data-slot": "drawer-overlay", className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-overlay supports-backdrop-filter:backdrop-blur-xs fixed inset-0 z-50", className) }, props)));
963
+ }
964
+ function DrawerContent(_a) {
965
+ var { className, children, overlayClassName } = _a, props = __rest(_a, ["className", "children", "overlayClassName"]);
966
+ return (jsxs(DrawerPortal, { "data-slot": "drawer-portal", children: [jsx(DrawerOverlay, { className: overlayClassName }), jsxs(Drawer$1.Content, Object.assign({ "data-slot": "drawer-content", className: cn("bg-background flex h-auto flex-col text-sm data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-xl data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-r-xl data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-l-xl data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-xl data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm group/drawer-content fixed z-50", className) }, props, { children: [jsx("div", { className: "bg-muted mx-auto mt-4 hidden h-1.5 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block bg-muted mx-auto hidden shrink-0 group-data-[vaul-drawer-direction=bottom]/drawer-content:block" }), children] }))] }));
967
+ }
968
+ function DrawerHeader(_a) {
969
+ var { className } = _a, props = __rest(_a, ["className"]);
970
+ return (jsx("div", Object.assign({ "data-slot": "drawer-header", className: cn("gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left flex flex-col", className) }, props)));
971
+ }
972
+ function DrawerFooter(_a) {
973
+ var { className } = _a, props = __rest(_a, ["className"]);
974
+ return (jsx("div", Object.assign({ "data-slot": "drawer-footer", className: cn("gap-2 p-4 mt-auto flex flex-col", className) }, props)));
975
+ }
976
+ function DrawerTitle(_a) {
977
+ var { className } = _a, props = __rest(_a, ["className"]);
978
+ return (jsx(Drawer$1.Title, Object.assign({ "data-slot": "drawer-title", className: cn("text-foreground font-medium", className) }, props)));
979
+ }
980
+ function DrawerDescription(_a) {
981
+ var { className } = _a, props = __rest(_a, ["className"]);
982
+ return (jsx(Drawer$1.Description, Object.assign({ "data-slot": "drawer-description", className: cn("text-muted-foreground text-sm", className) }, props)));
983
+ }
984
+
985
+ function DropdownMenu(_a) {
986
+ var props = __rest(_a, []);
987
+ return jsx(DropdownMenu$1.Root, Object.assign({ "data-slot": "dropdown-menu" }, props));
988
+ }
989
+ function DropdownMenuPortal(_a) {
990
+ var props = __rest(_a, []);
991
+ return (jsx(DropdownMenu$1.Portal, Object.assign({ "data-slot": "dropdown-menu-portal" }, props)));
992
+ }
993
+ function DropdownMenuTrigger(_a) {
994
+ var props = __rest(_a, []);
995
+ return (jsx(DropdownMenu$1.Trigger, Object.assign({ "data-slot": "dropdown-menu-trigger" }, props)));
996
+ }
997
+ function DropdownMenuContent(_a) {
998
+ var { className, align = "start", sideOffset = 4 } = _a, props = __rest(_a, ["className", "align", "sideOffset"]);
999
+ return (jsx(DropdownMenu$1.Portal, { children: jsx(DropdownMenu$1.Content, Object.assign({ "data-slot": "dropdown-menu-content", sideOffset: sideOffset, align: align, className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-popover p-1 shadow-md ring-1 duration-100 z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto data-[state=closed]:overflow-hidden", className) }, props)) }));
1000
+ }
1001
+ function DropdownMenuGroup(_a) {
1002
+ var props = __rest(_a, []);
1003
+ return (jsx(DropdownMenu$1.Group, Object.assign({ "data-slot": "dropdown-menu-group" }, props)));
1004
+ }
1005
+ function DropdownMenuItem(_a) {
1006
+ var { className, inset, variant = "default" } = _a, props = __rest(_a, ["className", "inset", "variant"]);
1007
+ return (jsx(DropdownMenu$1.Item, Object.assign({ "data-slot": "dropdown-menu-item", "data-inset": inset, "data-variant": variant, className: cn("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-input-area px-2 py-1.5 text-sm [&_svg:not([class*='size-'])]:size-4 group/dropdown-menu-item relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0", className) }, props)));
1008
+ }
1009
+ function DropdownMenuCheckboxItem(_a) {
1010
+ var { className, children, checked } = _a, props = __rest(_a, ["className", "children", "checked"]);
1011
+ return (jsxs(DropdownMenu$1.CheckboxItem, Object.assign({ "data-slot": "dropdown-menu-checkbox-item", className: cn("focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-input-area py-1.5 pr-8 pl-2 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0", className), checked: checked }, props, { children: [jsx("span", { className: "pointer-events-none absolute right-2 flex items-center justify-center pointer-events-none", "data-slot": "dropdown-menu-checkbox-item-indicator", children: jsx(DropdownMenu$1.ItemIndicator, { children: jsx(SvgCheck, {}) }) }), children] })));
1012
+ }
1013
+ function DropdownMenuRadioGroup(_a) {
1014
+ var props = __rest(_a, []);
1015
+ return (jsx(DropdownMenu$1.RadioGroup, Object.assign({ "data-slot": "dropdown-menu-radio-group" }, props)));
1016
+ }
1017
+ function DropdownMenuRadioItem(_a) {
1018
+ var { className, children } = _a, props = __rest(_a, ["className", "children"]);
1019
+ return (jsxs(DropdownMenu$1.RadioItem, Object.assign({ "data-slot": "dropdown-menu-radio-item", className: cn("focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-input-area py-1.5 pr-8 pl-2 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0", className) }, props, { children: [jsx("span", { className: "pointer-events-none absolute right-2 flex items-center justify-center pointer-events-none", "data-slot": "dropdown-menu-radio-item-indicator", children: jsx(DropdownMenu$1.ItemIndicator, { children: jsx(SvgCheck, {}) }) }), children] })));
1020
+ }
1021
+ function DropdownMenuLabel(_a) {
1022
+ var { className, inset } = _a, props = __rest(_a, ["className", "inset"]);
1023
+ return (jsx(DropdownMenu$1.Label, Object.assign({ "data-slot": "dropdown-menu-label", "data-inset": inset, className: cn("text-muted-foreground px-2 py-1.5 text-xs font-medium data-[inset]:pl-8", className) }, props)));
1024
+ }
1025
+ function DropdownMenuSeparator(_a) {
1026
+ var { className } = _a, props = __rest(_a, ["className"]);
1027
+ return (jsx(DropdownMenu$1.Separator, Object.assign({ "data-slot": "dropdown-menu-separator", className: cn("bg-border -mx-1 my-1 h-px", className) }, props)));
1028
+ }
1029
+ function DropdownMenuShortcut(_a) {
1030
+ var { className } = _a, props = __rest(_a, ["className"]);
1031
+ return (jsx("span", Object.assign({ "data-slot": "dropdown-menu-shortcut", className: cn("text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest", className) }, props)));
1032
+ }
1033
+ function DropdownMenuSub(_a) {
1034
+ var props = __rest(_a, []);
1035
+ return jsx(DropdownMenu$1.Sub, Object.assign({ "data-slot": "dropdown-menu-sub" }, props));
1036
+ }
1037
+ function DropdownMenuSubTrigger(_a) {
1038
+ var { className, inset, children } = _a, props = __rest(_a, ["className", "inset", "children"]);
1039
+ return (jsxs(DropdownMenu$1.SubTrigger, Object.assign({ "data-slot": "dropdown-menu-sub-trigger", "data-inset": inset, className: cn("focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-input-area px-2 py-1.5 text-sm [&_svg:not([class*='size-'])]:size-4 flex cursor-default items-center outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0", className) }, props, { children: [children, jsx(SvgChevronRight, { className: "ml-auto" })] })));
1040
+ }
1041
+ function DropdownMenuSubContent(_a) {
1042
+ var { className } = _a, props = __rest(_a, ["className"]);
1043
+ return (jsx(DropdownMenu$1.SubContent, Object.assign({ "data-slot": "dropdown-menu-sub-content", className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/10 bg-popover text-popover-foreground min-w-[96px] rounded-popover p-1 shadow-lg ring-1 duration-100 z-50 origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden", className) }, props)));
1044
+ }
1045
+
1046
+ function Empty(_a) {
1047
+ var { className } = _a, props = __rest(_a, ["className"]);
1048
+ return (jsx("div", Object.assign({ "data-slot": "empty", className: cn("gap-4 rounded-lg border-dashed p-12 flex w-full min-w-0 flex-1 flex-col items-center justify-center text-center text-balance", className) }, props)));
1049
+ }
1050
+ function EmptyHeader(_a) {
1051
+ var { className } = _a, props = __rest(_a, ["className"]);
1052
+ return (jsx("div", Object.assign({ "data-slot": "empty-header", className: cn("gap-2 flex max-w-sm flex-col items-center", className) }, props)));
1053
+ }
1054
+ const emptyMediaVariants = cva("mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0", {
1055
+ variants: {
1056
+ variant: {
1057
+ default: "bg-transparent",
1058
+ icon: "bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6",
1059
+ },
1060
+ },
1061
+ defaultVariants: {
1062
+ variant: "default",
1063
+ },
1064
+ });
1065
+ function EmptyMedia(_a) {
1066
+ var { className, variant = "default" } = _a, props = __rest(_a, ["className", "variant"]);
1067
+ return (jsx("div", Object.assign({ "data-slot": "empty-icon", "data-variant": variant, className: cn(emptyMediaVariants({ variant, className })) }, props)));
1068
+ }
1069
+ function EmptyTitle(_a) {
1070
+ var { className } = _a, props = __rest(_a, ["className"]);
1071
+ return (jsx("div", Object.assign({ "data-slot": "empty-title", className: cn("text-lg font-medium tracking-tight", className) }, props)));
1072
+ }
1073
+ function EmptyDescription(_a) {
1074
+ var { className } = _a, props = __rest(_a, ["className"]);
1075
+ return (jsx("div", Object.assign({ "data-slot": "empty-description", className: cn("text-sm/relaxed text-muted-foreground [&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4", className) }, props)));
1076
+ }
1077
+ function EmptyContent(_a) {
1078
+ var { className } = _a, props = __rest(_a, ["className"]);
1079
+ return (jsx("div", Object.assign({ "data-slot": "empty-content", className: cn("gap-4 text-sm flex w-full max-w-sm min-w-0 flex-col items-center text-balance", className) }, props)));
1080
+ }
1081
+
1082
+ function Label(_a) {
1083
+ var { className } = _a, props = __rest(_a, ["className"]);
1084
+ return (jsx(Label$1.Root, Object.assign({ "data-slot": "label", className: cn("gap-2 text-sm leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50 flex items-center select-none group-data-[disabled=true]:pointer-events-none peer-disabled:cursor-not-allowed", className) }, props)));
1085
+ }
1086
+
1087
+ function FieldSet(_a) {
1088
+ var { className } = _a, props = __rest(_a, ["className"]);
1089
+ return (jsx("fieldset", Object.assign({ "data-slot": "field-set", className: cn("gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3 flex flex-col", className) }, props)));
1090
+ }
1091
+ function FieldLegend(_a) {
1092
+ var { className, variant = "legend" } = _a, props = __rest(_a, ["className", "variant"]);
1093
+ return (jsx("legend", Object.assign({ "data-slot": "field-legend", "data-variant": variant, className: cn("mb-3 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base", className) }, props)));
1094
+ }
1095
+ function FieldGroup(_a) {
1096
+ var { className } = _a, props = __rest(_a, ["className"]);
1097
+ return (jsx("div", Object.assign({ "data-slot": "field-group", className: cn("gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4 group/field-group @container/field-group flex w-full flex-col", className) }, props)));
1098
+ }
1099
+ const fieldVariants = cva("data-[invalid=true]:text-destructive gap-3 group/field flex w-full", {
1100
+ variants: {
1101
+ orientation: {
1102
+ vertical: "flex-col [&>*]:w-full [&>.sr-only]:w-auto",
1103
+ horizontal: "flex-row items-center [&>[data-slot=field-label]]:flex-auto has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px",
1104
+ responsive: "flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto @md/field-group:[&>[data-slot=field-label]]:flex-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px",
1105
+ },
1106
+ },
1107
+ defaultVariants: {
1108
+ orientation: "vertical",
1109
+ },
1110
+ });
1111
+ function Field(_a) {
1112
+ var { className, orientation = "vertical" } = _a, props = __rest(_a, ["className", "orientation"]);
1113
+ return (jsx("div", Object.assign({ role: "group", "data-slot": "field", "data-orientation": orientation, className: cn(fieldVariants({ orientation }), className) }, props)));
1114
+ }
1115
+ function FieldContent(_a) {
1116
+ var { className } = _a, props = __rest(_a, ["className"]);
1117
+ return (jsx("div", Object.assign({ "data-slot": "field-content", className: cn("gap-1 group/field-content flex flex-1 flex-col leading-snug", className) }, props)));
1118
+ }
1119
+ function FieldLabel(_a) {
1120
+ var { className } = _a, props = __rest(_a, ["className"]);
1121
+ return (jsx(Label, Object.assign({ "data-slot": "field-label", className: cn("has-data-checked:bg-primary/5 has-data-checked:border-primary dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-input-sm has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-3 group/field-label peer/field-label flex w-fit leading-snug", "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col", className) }, props)));
1122
+ }
1123
+ function FieldTitle(_a) {
1124
+ var { className } = _a, props = __rest(_a, ["className"]);
1125
+ return (jsx("div", Object.assign({ "data-slot": "field-label", className: cn("gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50 flex w-fit items-center leading-snug", className) }, props)));
1126
+ }
1127
+ function FieldDescription(_a) {
1128
+ var { className } = _a, props = __rest(_a, ["className"]);
1129
+ return (jsx("p", Object.assign({ "data-slot": "field-description", className: cn("text-muted-foreground text-left text-sm [[data-variant=legend]+&]:-mt-1.5 leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance", "last:mt-0 nth-last-2:-mt-1", "[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4", className) }, props)));
1130
+ }
1131
+ function FieldSeparator(_a) {
1132
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
1133
+ return (jsxs("div", Object.assign({ "data-slot": "field-separator", "data-content": !!children, className: cn("-my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2 relative", className) }, props, { children: [jsx(Separator, { className: "absolute inset-0 top-1/2" }), children && (jsx("span", { className: "text-muted-foreground px-2 bg-background relative mx-auto block w-fit", "data-slot": "field-separator-content", children: children }))] })));
1134
+ }
1135
+ function FieldError(_a) {
1136
+ var { className, children, errors } = _a, props = __rest(_a, ["className", "children", "errors"]);
1137
+ const content = useMemo(() => {
1138
+ var _a;
1139
+ if (children) {
1140
+ return children;
1141
+ }
1142
+ if (!(errors === null || errors === void 0 ? void 0 : errors.length)) {
1143
+ return null;
1144
+ }
1145
+ const uniqueErrors = [
1146
+ ...new Map(errors.map((error) => [error === null || error === void 0 ? void 0 : error.message, error])).values(),
1147
+ ];
1148
+ if ((uniqueErrors === null || uniqueErrors === void 0 ? void 0 : uniqueErrors.length) == 1) {
1149
+ return (_a = uniqueErrors[0]) === null || _a === void 0 ? void 0 : _a.message;
1150
+ }
1151
+ return (jsx("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: uniqueErrors.map((error, index) => (error === null || error === void 0 ? void 0 : error.message) && jsx("li", { children: error.message }, index)) }));
1152
+ }, [children, errors]);
1153
+ if (!content) {
1154
+ return null;
1155
+ }
1156
+ return (jsx("div", Object.assign({ role: "alert", "data-slot": "field-error", className: cn("text-destructive text-sm font-normal", className) }, props, { children: content })));
1157
+ }
1158
+
1159
+ function HoverCard(_a) {
1160
+ var props = __rest(_a, []);
1161
+ return jsx(HoverCard$1.Root, Object.assign({ "data-slot": "hover-card" }, props));
1162
+ }
1163
+ function HoverCardTrigger(_a) {
1164
+ var props = __rest(_a, []);
1165
+ return (jsx(HoverCard$1.Trigger, Object.assign({ "data-slot": "hover-card-trigger" }, props)));
1166
+ }
1167
+ function HoverCardContent(_a) {
1168
+ var { className, align = "center", sideOffset = 4 } = _a, props = __rest(_a, ["className", "align", "sideOffset"]);
1169
+ return (jsx(HoverCard$1.Portal, { "data-slot": "hover-card-portal", children: jsx(HoverCard$1.Content, Object.assign({ "data-slot": "hover-card-content", align: align, sideOffset: sideOffset, className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/10 bg-popover text-popover-foreground w-64 rounded-popover p-4 text-sm shadow-md ring-1 duration-100 z-50 origin-(--radix-hover-card-content-transform-origin) outline-hidden", className) }, props)) }));
1170
+ }
1171
+
1172
+ var _path$7;
1173
+ function _extends$7() { return _extends$7 = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$7.apply(null, arguments); }
1174
+ var SvgRemove = function SvgRemove(props) {
1175
+ return /*#__PURE__*/React.createElement("svg", _extends$7({
1176
+ xmlns: "http://www.w3.org/2000/svg",
1177
+ width: 48,
1178
+ height: 48,
1179
+ viewBox: "0 -960 960 960"
1180
+ }, props), _path$7 || (_path$7 = /*#__PURE__*/React.createElement("path", {
1181
+ d: "M200-450v-60h560v60H200Z"
1182
+ })));
1183
+ };
1184
+
1185
+ function InputOTP(_a) {
1186
+ var { className, containerClassName } = _a, props = __rest(_a, ["className", "containerClassName"]);
1187
+ return (jsx(OTPInput, Object.assign({ "data-slot": "input-otp", containerClassName: cn("cn-input-otp flex items-center has-disabled:opacity-50", containerClassName), spellCheck: false, className: cn("disabled:cursor-not-allowed", className) }, props)));
1188
+ }
1189
+ function InputOTPGroup(_a) {
1190
+ var { className } = _a, props = __rest(_a, ["className"]);
1191
+ return (jsx("div", Object.assign({ "data-slot": "input-otp-group", className: cn("has-aria-invalid:ring-2 has-aria-invalid:ring-offset-2 has-aria-invalid:ring-destructive rounded-input-sm flex items-center", className) }, props)));
1192
+ }
1193
+ function InputOTPSlot(_a) {
1194
+ var _b, _c;
1195
+ var { index, className } = _a, props = __rest(_a, ["index", "className"]);
1196
+ const inputOTPContext = React.useContext(OTPInputContext);
1197
+ const { char, hasFakeCaret, isActive } = (_b = inputOTPContext === null || inputOTPContext === void 0 ? void 0 : inputOTPContext.slots[index]) !== null && _b !== void 0 ? _b : {};
1198
+ (_c = inputOTPContext === null || inputOTPContext === void 0 ? void 0 : inputOTPContext.slots.length) !== null && _c !== void 0 ? _c : 0;
1199
+ return (jsxs("div", Object.assign({ "data-slot": "input-otp-slot", "data-active": isActive, className: cn("bg-input border-input-border data-[active=true]:border-transparent data-[active=true]:outline-none data-[active=true]:ring-2 data-[active=true]:ring-offset-2 data-[active=true]:ring-ring data-[active=true]:aria-invalid:ring-2 data-[active=true]:aria-invalid:ring-offset-2 data-[active=true]:aria-invalid:ring-destructive aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive size-9 border-y border-r text-sm transition-all first:rounded-l-input-sm first:border-l last:rounded-r-input-sm data-[active=true]:z-10 relative flex items-center justify-center", className) }, props, { children: [char, hasFakeCaret && (jsx("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: jsx("div", { className: "animate-caret-blink bg-foreground h-4 w-px duration-1000" }) }))] })));
1200
+ }
1201
+ function InputOTPSeparator(_a) {
1202
+ var props = __rest(_a, []);
1203
+ return (jsx("div", Object.assign({ "data-slot": "input-otp-separator", className: "[&_svg:not([class*='size-'])]:size-4 flex items-center", role: "separator" }, props, { children: jsx(SvgRemove, {}) })));
1204
+ }
1205
+
1206
+ function ItemGroup(_a) {
1207
+ var { className } = _a, props = __rest(_a, ["className"]);
1208
+ return (jsx("div", Object.assign({ role: "list", "data-slot": "item-group", className: cn("gap-4 has-[[data-size=sm]]:gap-2.5 has-[[data-size=xs]]:gap-2 group/item-group flex w-full flex-col", className) }, props)));
1209
+ }
1210
+ function ItemSeparator(_a) {
1211
+ var { className } = _a, props = __rest(_a, ["className"]);
1212
+ return (jsx(Separator, Object.assign({ "data-slot": "item-separator", orientation: "horizontal", className: cn("my-2", className) }, props)));
1213
+ }
1214
+ const itemVariants = cva("[a]:hover:bg-muted rounded-input-sm border text-sm w-full group/item focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ring flex items-center flex-wrap transition-colors duration-100 [a]:transition-colors", {
1215
+ variants: {
1216
+ variant: {
1217
+ default: "border-transparent",
1218
+ outline: "border-border",
1219
+ muted: "bg-muted/50 border-transparent",
1220
+ },
1221
+ size: {
1222
+ default: "gap-3.5 px-4 py-3.5",
1223
+ sm: "gap-2.5 px-3 py-2.5",
1224
+ xs: "gap-2 px-2.5 py-2 [[data-slot=dropdown-menu-content]_&]:p-0",
1225
+ },
1226
+ },
1227
+ defaultVariants: {
1228
+ variant: "default",
1229
+ size: "default",
1230
+ },
1231
+ });
1232
+ function Item(_a) {
1233
+ var { className, variant = "default", size = "default", asChild = false } = _a, props = __rest(_a, ["className", "variant", "size", "asChild"]);
1234
+ const Comp = asChild ? Slot.Root : "div";
1235
+ return (jsx(Comp, Object.assign({ "data-slot": "item", "data-variant": variant, "data-size": size, className: cn(itemVariants({ variant, size, className })) }, props)));
1236
+ }
1237
+ const itemMediaVariants = cva("gap-2 group-has-[[data-slot=item-description]]/item:translate-y-0.5 group-has-[[data-slot=item-description]]/item:self-start flex shrink-0 items-center justify-center [&_svg]:pointer-events-none", {
1238
+ variants: {
1239
+ variant: {
1240
+ default: "bg-transparent",
1241
+ icon: "[&_svg:not([class*='size-'])]:size-4",
1242
+ image: "size-10 overflow-hidden rounded-input-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover",
1243
+ },
1244
+ },
1245
+ defaultVariants: {
1246
+ variant: "default",
1247
+ },
1248
+ });
1249
+ function ItemMedia(_a) {
1250
+ var { className, variant = "default" } = _a, props = __rest(_a, ["className", "variant"]);
1251
+ return (jsx("div", Object.assign({ "data-slot": "item-media", "data-variant": variant, className: cn(itemMediaVariants({ variant, className })) }, props)));
1252
+ }
1253
+ function ItemContent(_a) {
1254
+ var { className } = _a, props = __rest(_a, ["className"]);
1255
+ return (jsx("div", Object.assign({ "data-slot": "item-content", className: cn("gap-1 group-data-[size=xs]/item:gap-0 flex flex-1 flex-col [&+[data-slot=item-content]]:flex-none", className) }, props)));
1256
+ }
1257
+ function ItemTitle(_a) {
1258
+ var { className } = _a, props = __rest(_a, ["className"]);
1259
+ return (jsx("div", Object.assign({ "data-slot": "item-title", className: cn("gap-2 text-sm leading-snug font-medium underline-offset-4 line-clamp-1 flex w-fit items-center", className) }, props)));
1260
+ }
1261
+ function ItemDescription(_a) {
1262
+ var { className } = _a, props = __rest(_a, ["className"]);
1263
+ return (jsx("p", Object.assign({ "data-slot": "item-description", className: cn("text-muted-foreground text-left text-sm leading-normal group-data-[size=xs]/item:text-xs [&>a:hover]:text-primary line-clamp-2 font-normal [&>a]:underline [&>a]:underline-offset-4", className) }, props)));
1264
+ }
1265
+ function ItemActions(_a) {
1266
+ var { className } = _a, props = __rest(_a, ["className"]);
1267
+ return (jsx("div", Object.assign({ "data-slot": "item-actions", className: cn("gap-2 flex items-center", className) }, props)));
1268
+ }
1269
+ function ItemHeader(_a) {
1270
+ var { className } = _a, props = __rest(_a, ["className"]);
1271
+ return (jsx("div", Object.assign({ "data-slot": "item-header", className: cn("gap-2 flex basis-full items-center justify-between", className) }, props)));
1272
+ }
1273
+ function ItemFooter(_a) {
1274
+ var { className } = _a, props = __rest(_a, ["className"]);
1275
+ return (jsx("div", Object.assign({ "data-slot": "item-footer", className: cn("gap-2 flex basis-full items-center justify-between", className) }, props)));
1276
+ }
1277
+
1278
+ function Kbd(_a) {
1279
+ var { className } = _a, props = __rest(_a, ["className"]);
1280
+ return (jsx("kbd", Object.assign({ "data-slot": "kbd", className: cn("bg-muted text-muted-foreground [[data-slot=tooltip-content]_&]:bg-background/20 [[data-slot=tooltip-content]_&]:text-background dark:[[data-slot=tooltip-content]_&]:bg-background/10 h-5 w-fit min-w-5 gap-1 rounded-input-sm px-1 font-sans text-xs font-medium [&_svg:not([class*='size-'])]:size-3 pointer-events-none inline-flex items-center justify-center select-none", className) }, props)));
1281
+ }
1282
+ function KbdGroup(_a) {
1283
+ var { className } = _a, props = __rest(_a, ["className"]);
1284
+ return (jsx("kbd", Object.assign({ "data-slot": "kbd-group", className: cn("gap-1 inline-flex items-center", className) }, props)));
1285
+ }
1286
+
1287
+ function Menubar(_a) {
1288
+ var { className } = _a, props = __rest(_a, ["className"]);
1289
+ return (jsx(Menubar$1.Root, Object.assign({ "data-slot": "menubar", className: cn("bg-background h-9 gap-1 rounded-input-md border p-1 flex items-center", className) }, props)));
1290
+ }
1291
+ function MenubarMenu(_a) {
1292
+ var props = __rest(_a, []);
1293
+ return jsx(Menubar$1.Menu, Object.assign({ "data-slot": "menubar-menu" }, props));
1294
+ }
1295
+ function MenubarGroup(_a) {
1296
+ var props = __rest(_a, []);
1297
+ return jsx(Menubar$1.Group, Object.assign({ "data-slot": "menubar-group" }, props));
1298
+ }
1299
+ function MenubarPortal(_a) {
1300
+ var props = __rest(_a, []);
1301
+ return jsx(Menubar$1.Portal, Object.assign({ "data-slot": "menubar-portal" }, props));
1302
+ }
1303
+ function MenubarRadioGroup(_a) {
1304
+ var props = __rest(_a, []);
1305
+ return (jsx(Menubar$1.RadioGroup, Object.assign({ "data-slot": "menubar-radio-group" }, props)));
1306
+ }
1307
+ function MenubarTrigger(_a) {
1308
+ var { className } = _a, props = __rest(_a, ["className"]);
1309
+ return (jsx(Menubar$1.Trigger, Object.assign({ "data-slot": "menubar-trigger", className: cn("hover:bg-primary hover:text-primary-foreground aria-expanded:bg-primary aria-expanded:text-primary-foreground rounded-input-sm px-2 py-1 text-sm font-medium flex items-center outline-hidden select-none", className) }, props)));
1310
+ }
1311
+ function MenubarContent(_a) {
1312
+ var { className, align = "start", alignOffset = -4, sideOffset = 8 } = _a, props = __rest(_a, ["className", "align", "alignOffset", "sideOffset"]);
1313
+ return (jsx(MenubarPortal, { children: jsx(Menubar$1.Content, Object.assign({ "data-slot": "menubar-content", align: align, alignOffset: alignOffset, sideOffset: sideOffset, className: cn("bg-popover text-popover-foreground data-open:animate-in data-open:fade-in-0 data-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 ring-foreground/10 min-w-36 rounded-popover p-1 shadow-md ring-1 duration-100 z-50 origin-(--radix-menubar-content-transform-origin) overflow-hidden", className) }, props)) }));
1314
+ }
1315
+ function MenubarItem(_a) {
1316
+ var { className, inset, variant = "default" } = _a, props = __rest(_a, ["className", "inset", "variant"]);
1317
+ return (jsx(Menubar$1.Item, Object.assign({ "data-slot": "menubar-item", "data-inset": inset, "data-variant": variant, className: cn("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-input-area px-2 py-1.5 text-sm data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg:not([class*='size-'])]:size-4 group/menubar-item relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0", className) }, props)));
1318
+ }
1319
+ function MenubarCheckboxItem(_a) {
1320
+ var { className, children, checked } = _a, props = __rest(_a, ["className", "children", "checked"]);
1321
+ return (jsxs(Menubar$1.CheckboxItem, Object.assign({ "data-slot": "menubar-checkbox-item", className: cn("focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-input-area py-1.5 pr-2 pl-8 text-sm data-disabled:opacity-50 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0", className), checked: checked }, props, { children: [jsx("span", { className: "left-2 size-4 [&_svg:not([class*='size-'])]:size-4 pointer-events-none absolute flex items-center justify-center", children: jsx(Menubar$1.ItemIndicator, { children: jsx(SvgCheck, {}) }) }), children] })));
1322
+ }
1323
+ function MenubarRadioItem(_a) {
1324
+ var { className, children } = _a, props = __rest(_a, ["className", "children"]);
1325
+ return (jsxs(Menubar$1.RadioItem, Object.assign({ "data-slot": "menubar-radio-item", className: cn("focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-input-area py-1.5 pr-2 pl-8 text-sm data-disabled:opacity-50 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0", className) }, props, { children: [jsx("span", { className: "left-2 size-4 [&_svg:not([class*='size-'])]:size-4 pointer-events-none absolute flex items-center justify-center", children: jsx(Menubar$1.ItemIndicator, { children: jsx(SvgCheck, {}) }) }), children] })));
1326
+ }
1327
+ function MenubarLabel(_a) {
1328
+ var { className, inset } = _a, props = __rest(_a, ["className", "inset"]);
1329
+ return (jsx(Menubar$1.Label, Object.assign({ "data-slot": "menubar-label", "data-inset": inset, className: cn("px-2 py-1.5 text-sm font-medium data-[inset]:pl-8", className) }, props)));
1330
+ }
1331
+ function MenubarSeparator(_a) {
1332
+ var { className } = _a, props = __rest(_a, ["className"]);
1333
+ return (jsx(Menubar$1.Separator, Object.assign({ "data-slot": "menubar-separator", className: cn("bg-border -mx-1 my-1 h-px", className) }, props)));
1334
+ }
1335
+ function MenubarShortcut(_a) {
1336
+ var { className } = _a, props = __rest(_a, ["className"]);
1337
+ return (jsx("span", Object.assign({ "data-slot": "menubar-shortcut", className: cn("text-muted-foreground group-focus/menubar-item:text-accent-foreground text-xs tracking-widest ml-auto", className) }, props)));
1338
+ }
1339
+ function MenubarSub(_a) {
1340
+ var props = __rest(_a, []);
1341
+ return jsx(Menubar$1.Sub, Object.assign({ "data-slot": "menubar-sub" }, props));
1342
+ }
1343
+ function MenubarSubTrigger(_a) {
1344
+ var { className, inset, children } = _a, props = __rest(_a, ["className", "inset", "children"]);
1345
+ return (jsxs(Menubar$1.SubTrigger, Object.assign({ "data-slot": "menubar-sub-trigger", "data-inset": inset, className: cn("focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground gap-2 rounded-input-area px-2 py-1.5 text-sm data-[inset]:pl-8 [&_svg:not([class*='size-'])]:size-4 flex cursor-default items-center outline-none select-none", className) }, props, { children: [children, jsx(SvgChevronRight, { className: "ml-auto size-4" })] })));
1346
+ }
1347
+ function MenubarSubContent(_a) {
1348
+ var { className } = _a, props = __rest(_a, ["className"]);
1349
+ return (jsx(Menubar$1.SubContent, Object.assign({ "data-slot": "menubar-sub-content", className: cn("bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/10 min-w-32 rounded-popover p-1 shadow-lg ring-1 duration-100 z-50 origin-(--radix-menubar-content-transform-origin) overflow-hidden", className) }, props)));
1350
+ }
1351
+
1352
+ function NavigationMenu(_a) {
1353
+ var { className, children, viewport = true } = _a, props = __rest(_a, ["className", "children", "viewport"]);
1354
+ return (jsxs(NavigationMenu$1.Root, Object.assign({ "data-slot": "navigation-menu", "data-viewport": viewport, className: cn("max-w-max group/navigation-menu relative flex max-w-max flex-1 items-center justify-center", className) }, props, { children: [children, viewport && jsx(NavigationMenuViewport, {})] })));
1355
+ }
1356
+ function NavigationMenuList(_a) {
1357
+ var { className } = _a, props = __rest(_a, ["className"]);
1358
+ return (jsx(NavigationMenu$1.List, Object.assign({ "data-slot": "navigation-menu-list", className: cn("gap-0 group flex flex-1 list-none items-center justify-center", className) }, props)));
1359
+ }
1360
+ function NavigationMenuItem(_a) {
1361
+ var { className } = _a, props = __rest(_a, ["className"]);
1362
+ return (jsx(NavigationMenu$1.Item, Object.assign({ "data-slot": "navigation-menu-item", className: cn("relative", className) }, props)));
1363
+ }
1364
+ const navigationMenuTriggerStyle = cva("bg-background hover:bg-accent focus:bg-accent data-open:hover:bg-accent data-open:focus:bg-accent data-open:bg-muted/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ring data-popup-open:bg-muted/50 data-popup-open:hover:bg-accent rounded-input-sm px-4 py-2 text-sm font-medium transition-all focus-visible:outline-1 disabled:opacity-50 group/navigation-menu-trigger inline-flex h-10 w-max items-center justify-center disabled:pointer-events-none");
1365
+ function NavigationMenuTrigger(_a) {
1366
+ var { className, children } = _a, props = __rest(_a, ["className", "children"]);
1367
+ return (jsxs(NavigationMenu$1.Trigger, Object.assign({ "data-slot": "navigation-menu-trigger", className: cn(navigationMenuTriggerStyle(), "group", className) }, props, { children: [children, " ", jsx(SvgKeyboardArrowDown, { className: "relative top-[1px] ml-1 size-3 transition duration-300 group-data-open/navigation-menu-trigger:rotate-180 group-data-popup-open/navigation-menu-trigger:rotate-180", "aria-hidden": "true" })] })));
1368
+ }
1369
+ function NavigationMenuContent(_a) {
1370
+ var { className } = _a, props = __rest(_a, ["className"]);
1371
+ return (jsx(NavigationMenu$1.Content, Object.assign({ "data-slot": "navigation-menu-content", className: cn("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 group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:ring-foreground/10 p-2 pr-2.5 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-input-sm group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:duration-300 top-0 left-0 w-full 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 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none md:absolute md:w-auto", className) }, props)));
1372
+ }
1373
+ function NavigationMenuViewport(_a) {
1374
+ var { className } = _a, props = __rest(_a, ["className"]);
1375
+ return (jsx("div", { className: cn("absolute top-full left-0 isolate z-50 flex justify-center"), children: jsx(NavigationMenu$1.Viewport, Object.assign({ "data-slot": "navigation-menu-viewport", className: cn("bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:zoom-out-95 data-open:zoom-in-90 ring-foreground/10 rounded-card shadow ring-1 duration-100 origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden md:w-[var(--radix-navigation-menu-viewport-width)]", className) }, props)) }));
1376
+ }
1377
+ function NavigationMenuLink(_a) {
1378
+ var { className } = _a, props = __rest(_a, ["className"]);
1379
+ return (jsx(NavigationMenu$1.Link, Object.assign({ "data-slot": "navigation-menu-link", className: cn("data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-muted/50 focus-visible:ring-ring hover:bg-accent focus:bg-accent flex items-center gap-1.5 rounded-input-area p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4", className) }, props)));
1380
+ }
1381
+ function NavigationMenuIndicator(_a) {
1382
+ var { className } = _a, props = __rest(_a, ["className"]);
1383
+ return (jsx(NavigationMenu$1.Indicator, Object.assign({ "data-slot": "navigation-menu-indicator", className: cn("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", className) }, props, { children: jsx("div", { className: "bg-border rounded-tl-sm shadow-md relative top-[60%] h-2 w-2 rotate-45" }) })));
1384
+ }
1385
+
1386
+ function Pagination(_a) {
1387
+ var { className } = _a, props = __rest(_a, ["className"]);
1388
+ return (jsx("nav", Object.assign({ role: "navigation", "aria-label": "pagination", "data-slot": "pagination", className: cn("mx-auto flex w-full justify-center", className) }, props)));
1389
+ }
1390
+ function PaginationContent(_a) {
1391
+ var { className } = _a, props = __rest(_a, ["className"]);
1392
+ return (jsx("ul", Object.assign({ "data-slot": "pagination-content", className: cn("gap-1 flex items-center", className) }, props)));
1393
+ }
1394
+ function PaginationItem(_a) {
1395
+ var props = __rest(_a, []);
1396
+ return jsx("li", Object.assign({ "data-slot": "pagination-item" }, props));
1397
+ }
1398
+ function PaginationLink(_a) {
1399
+ var { className, isActive, size = "icon" } = _a, props = __rest(_a, ["className", "isActive", "size"]);
1400
+ return (jsx(Button, { asChild: true, variant: isActive ? "outline" : "ghost", size: size, className: cn(className), children: jsx("a", Object.assign({ "aria-current": isActive ? "page" : undefined, "data-slot": "pagination-link", "data-active": isActive }, props)) }));
1401
+ }
1402
+ function PaginationPrevious(_a) {
1403
+ var { className } = _a, props = __rest(_a, ["className"]);
1404
+ return (jsxs(PaginationLink, Object.assign({ "aria-label": "Go to previous page", size: "default", className: cn("pl-2!", className) }, props, { children: [jsx(SvgChevronLeft, { "data-icon": "inline-start" }), jsx("span", { className: "hidden sm:block", children: "Previous" })] })));
1405
+ }
1406
+ function PaginationNext(_a) {
1407
+ var { className } = _a, props = __rest(_a, ["className"]);
1408
+ return (jsxs(PaginationLink, Object.assign({ "aria-label": "Go to next page", size: "default", className: cn("pr-2!", className) }, props, { children: [jsx("span", { className: "hidden sm:block", children: "Next" }), jsx(SvgChevronRight, { "data-icon": "inline-end" })] })));
1409
+ }
1410
+ function PaginationEllipsis(_a) {
1411
+ var { className } = _a, props = __rest(_a, ["className"]);
1412
+ return (jsxs("span", Object.assign({ "aria-hidden": true, "data-slot": "pagination-ellipsis", className: cn("size-9 items-center justify-center [&_svg:not([class*='size-'])]:size-4 flex items-center justify-center", className) }, props, { children: [jsx(SvgMoreHoriz, {}), jsx("span", { className: "sr-only", children: "More pages" })] })));
1413
+ }
1414
+
1415
+ function Popover(_a) {
1416
+ var props = __rest(_a, []);
1417
+ return jsx(Popover$1.Root, Object.assign({ "data-slot": "popover" }, props));
1418
+ }
1419
+ function PopoverTrigger(_a) {
1420
+ var props = __rest(_a, []);
1421
+ return jsx(Popover$1.Trigger, Object.assign({ "data-slot": "popover-trigger" }, props));
1422
+ }
1423
+ function PopoverContent(_a) {
1424
+ var { className, align = "center", sideOffset = 4 } = _a, props = __rest(_a, ["className", "align", "sideOffset"]);
1425
+ return (jsx(Popover$1.Portal, { children: jsx(Popover$1.Content, Object.assign({ "data-slot": "popover-content", align: align, sideOffset: sideOffset, className: cn("bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/10 flex flex-col gap-4 rounded-popover p-4 text-sm shadow-md ring-1 duration-100 z-50 w-72 origin-(--radix-popover-content-transform-origin) outline-hidden", className) }, props)) }));
1426
+ }
1427
+ function PopoverAnchor(_a) {
1428
+ var props = __rest(_a, []);
1429
+ return jsx(Popover$1.Anchor, Object.assign({ "data-slot": "popover-anchor" }, props));
1430
+ }
1431
+ function PopoverHeader(_a) {
1432
+ var { className } = _a, props = __rest(_a, ["className"]);
1433
+ return (jsx("div", Object.assign({ "data-slot": "popover-header", className: cn("flex flex-col gap-1 text-sm", className) }, props)));
1434
+ }
1435
+ function PopoverTitle(_a) {
1436
+ var { className } = _a, props = __rest(_a, ["className"]);
1437
+ return (jsx("div", Object.assign({ "data-slot": "popover-title", className: cn("font-medium", className) }, props)));
1438
+ }
1439
+ function PopoverDescription(_a) {
1440
+ var { className } = _a, props = __rest(_a, ["className"]);
1441
+ return (jsx("p", Object.assign({ "data-slot": "popover-description", className: cn("text-muted-foreground", className) }, props)));
1442
+ }
1443
+
1444
+ function Progress(_a) {
1445
+ var { className, value } = _a, props = __rest(_a, ["className", "value"]);
1446
+ return (jsx(Progress$1.Root, Object.assign({ "data-slot": "progress", className: cn("bg-muted h-1.5 rounded-full relative flex w-full items-center overflow-x-hidden", className) }, props, { children: jsx(Progress$1.Indicator, { "data-slot": "progress-indicator", className: "bg-primary size-full flex-1 transition-all", style: { transform: `translateX(-${100 - (value || 0)}%)` } }) })));
1447
+ }
1448
+
1449
+ var _path$6;
1450
+ function _extends$6() { return _extends$6 = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$6.apply(null, arguments); }
1451
+ var SvgCircleFill = function SvgCircleFill(props) {
1452
+ return /*#__PURE__*/React.createElement("svg", _extends$6({
1453
+ xmlns: "http://www.w3.org/2000/svg",
1454
+ width: 48,
1455
+ height: 48,
1456
+ viewBox: "0 -960 960 960"
1457
+ }, props), _path$6 || (_path$6 = /*#__PURE__*/React.createElement("path", {
1458
+ d: "M480-80q-82 0-155-31.5t-127.5-86Q143-252 111.5-325T80-480q0-83 31.5-156t86-127Q252-817 325-848.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 82-31.5 155T763-197.5q-54 54.5-127 86T480-80Z"
1459
+ })));
1460
+ };
1461
+
1462
+ function RadioGroup(_a) {
1463
+ var { className } = _a, props = __rest(_a, ["className"]);
1464
+ return (jsx(RadioGroup$1.Root, Object.assign({ "data-slot": "radio-group", className: cn("grid gap-3 w-full", className) }, props)));
1465
+ }
1466
+ function RadioGroupItem(_a) {
1467
+ var { className } = _a, props = __rest(_a, ["className"]);
1468
+ return (jsx(RadioGroup$1.Item, Object.assign({ "data-slot": "radio-group-item", className: cn("border-input-border text-primary bg-input data-[state=checked]:border-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ring aria-invalid:ring-2 aria-invalid:ring-offset-2 aria-invalid:ring-destructive flex size-4 rounded-full group/radio-group-item peer relative aspect-square shrink-0 border after:absolute after:-inset-x-3 after:-inset-y-2 disabled:cursor-not-allowed disabled:opacity-50", className) }, props, { children: jsx(RadioGroup$1.Indicator, { "data-slot": "radio-group-indicator", className: "group-aria-invalid/radio-group-item:text-destructive text-primary flex size-4 items-center justify-center", children: jsx(SvgCircleFill, { className: "absolute top-1/2 left-1/2 size-2.5 -translate-x-1/2 -translate-y-1/2 fill-current" }) }) })));
1469
+ }
1470
+
1471
+ function ResizablePanelGroup(_a) {
1472
+ var { className } = _a, props = __rest(_a, ["className"]);
1473
+ return (jsx(ResizablePrimitive.Group, Object.assign({ "data-slot": "resizable-panel-group", className: cn("flex h-full w-full aria-[orientation=vertical]:flex-col", className) }, props)));
1474
+ }
1475
+ function ResizablePanel(_a) {
1476
+ var props = __rest(_a, []);
1477
+ return jsx(ResizablePrimitive.Panel, Object.assign({ "data-slot": "resizable-panel" }, props));
1478
+ }
1479
+ function ResizableHandle(_a) {
1480
+ var { withHandle, className } = _a, props = __rest(_a, ["withHandle", "className"]);
1481
+ return (jsx(ResizablePrimitive.Separator, Object.assign({ "data-slot": "resizable-handle", className: cn("bg-border focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90", className) }, props, { children: withHandle && (jsx("div", { className: "bg-border h-6 w-1 rounded-input-sm z-10 flex shrink-0" })) })));
1482
+ }
1483
+
1484
+ function ScrollArea(_a) {
1485
+ var { className, children } = _a, props = __rest(_a, ["className", "children"]);
1486
+ return (jsxs(ScrollArea$1.Root, Object.assign({ "data-slot": "scroll-area", className: cn("relative", className) }, props, { children: [jsx(ScrollArea$1.Viewport, { "data-slot": "scroll-area-viewport", className: "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ring size-full rounded-[inherit] transition-[color,box-shadow] focus-visible:outline-1", children: children }), jsx(ScrollBar, {}), jsx(ScrollArea$1.Corner, {})] })));
1487
+ }
1488
+ function ScrollBar(_a) {
1489
+ var { className, orientation = "vertical" } = _a, props = __rest(_a, ["className", "orientation"]);
1490
+ return (jsx(ScrollArea$1.ScrollAreaScrollbar, Object.assign({ "data-slot": "scroll-area-scrollbar", "data-orientation": orientation, orientation: orientation, className: cn("data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent flex touch-none p-px transition-colors select-none", className) }, props, { children: jsx(ScrollArea$1.ScrollAreaThumb, { "data-slot": "scroll-area-thumb", className: "rounded-full bg-border relative flex-1" }) })));
1491
+ }
1492
+
1493
+ function Select(_a) {
1494
+ var props = __rest(_a, []);
1495
+ return jsx(Select$1.Root, Object.assign({ "data-slot": "select" }, props));
1496
+ }
1497
+ function SelectGroup(_a) {
1498
+ var { className } = _a, props = __rest(_a, ["className"]);
1499
+ return (jsx(Select$1.Group, Object.assign({ "data-slot": "select-group", className: cn("scroll-my-1 p-1", className) }, props)));
1500
+ }
1501
+ function SelectValue(_a) {
1502
+ var props = __rest(_a, []);
1503
+ return jsx(Select$1.Value, Object.assign({ "data-slot": "select-value" }, props));
1504
+ }
1505
+ function SelectTrigger(_a) {
1506
+ var { className, size = "default", children } = _a, props = __rest(_a, ["className", "size", "children"]);
1507
+ return (jsxs(Select$1.Trigger, Object.assign({ "data-slot": "select-trigger", "data-size": size, className: cn("border border-input-border data-[placeholder]:text-muted-foreground bg-input hover:bg-input/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ring aria-invalid:ring-2 aria-invalid:ring-offset-2 aria-invalid:ring-destructive gap-1.5 rounded-input-sm py-2 pr-2 pl-2.5 text-base md:text-sm transition-[color,box-shadow] data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:flex *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4 flex w-fit items-center justify-between whitespace-nowrap disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0", className) }, props, { children: [children, jsx(Select$1.Icon, { asChild: true, children: jsx(SvgKeyboardArrowDown, { className: "text-muted-foreground size-4 pointer-events-none" }) })] })));
1508
+ }
1509
+ function SelectContent(_a) {
1510
+ var { className, children, position = "item-aligned", align = "center" } = _a, props = __rest(_a, ["className", "children", "position", "align"]);
1511
+ return (jsx(Select$1.Portal, { children: jsxs(Select$1.Content, Object.assign({ "data-slot": "select-content", className: cn("bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/10 min-w-36 p-1 rounded-popover shadow-md ring-1 duration-100 relative z-50 max-h-(--radix-select-content-available-height) origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto", 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", className), position: position, align: align }, props, { children: [jsx(SelectScrollUpButton, {}), jsx(Select$1.Viewport, { "data-position": position, className: cn("data-[position=popper]:h-[var(--radix-select-trigger-height)] data-[position=popper]:w-full data-[position=popper]:min-w-[var(--radix-select-trigger-width)]", position === "popper" && ""), children: children }), jsx(SelectScrollDownButton, {})] })) }));
1512
+ }
1513
+ function SelectLabel(_a) {
1514
+ var { className } = _a, props = __rest(_a, ["className"]);
1515
+ return (jsx(Select$1.Label, Object.assign({ "data-slot": "select-label", className: cn("text-muted-foreground px-2 py-1.5 text-xs", className) }, props)));
1516
+ }
1517
+ function SelectItem(_a) {
1518
+ var { className, children } = _a, props = __rest(_a, ["className", "children"]);
1519
+ return (jsxs(Select$1.Item, Object.assign({ "data-slot": "select-item", className: cn("focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-input-area py-1.5 pr-8 pl-2 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0", className) }, props, { children: [jsx("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center", children: jsx(Select$1.ItemIndicator, { children: jsx(SvgCheck, { className: "pointer-events-none" }) }) }), jsx(Select$1.ItemText, { children: children })] })));
1520
+ }
1521
+ function SelectSeparator(_a) {
1522
+ var { className } = _a, props = __rest(_a, ["className"]);
1523
+ return (jsx(Select$1.Separator, Object.assign({ "data-slot": "select-separator", className: cn("bg-border -mx-1 my-1 h-px pointer-events-none", className) }, props)));
1524
+ }
1525
+ function SelectScrollUpButton(_a) {
1526
+ var { className } = _a, props = __rest(_a, ["className"]);
1527
+ return (jsx(Select$1.ScrollUpButton, Object.assign({ "data-slot": "select-scroll-up-button", className: cn("bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4", className) }, props, { children: jsx(SvgKeyboardArrowUp, {}) })));
1528
+ }
1529
+ function SelectScrollDownButton(_a) {
1530
+ var { className } = _a, props = __rest(_a, ["className"]);
1531
+ return (jsx(Select$1.ScrollDownButton, Object.assign({ "data-slot": "select-scroll-down-button", className: cn("bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4", className) }, props, { children: jsx(SvgKeyboardArrowDown, {}) })));
1532
+ }
1533
+
1534
+ function Sheet(_a) {
1535
+ var props = __rest(_a, []);
1536
+ return jsx(Dialog$1.Root, Object.assign({ "data-slot": "sheet" }, props));
1537
+ }
1538
+ function SheetTrigger(_a) {
1539
+ var props = __rest(_a, []);
1540
+ return jsx(Dialog$1.Trigger, Object.assign({ "data-slot": "sheet-trigger" }, props));
1541
+ }
1542
+ function SheetClose(_a) {
1543
+ var props = __rest(_a, []);
1544
+ return jsx(Dialog$1.Close, Object.assign({ "data-slot": "sheet-close" }, props));
1545
+ }
1546
+ function SheetPortal(_a) {
1547
+ var props = __rest(_a, []);
1548
+ return jsx(Dialog$1.Portal, Object.assign({ "data-slot": "sheet-portal" }, props));
1549
+ }
1550
+ function SheetOverlay(_a) {
1551
+ var { className } = _a, props = __rest(_a, ["className"]);
1552
+ return (jsx(Dialog$1.Overlay, Object.assign({ "data-slot": "sheet-overlay", className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-overlay duration-100 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 z-50", className) }, props)));
1553
+ }
1554
+ function SheetContent(_a) {
1555
+ var { className, children, side = "right", showCloseButton = true, overlayClassName } = _a, props = __rest(_a, ["className", "children", "side", "showCloseButton", "overlayClassName"]);
1556
+ return (jsxs(SheetPortal, { children: [jsx(SheetOverlay, { className: overlayClassName }), jsxs(Dialog$1.Content, Object.assign({ "data-slot": "sheet-content", "data-side": side, className: cn("bg-background data-open:animate-in data-closed:animate-out data-[side=right]:data-closed:slide-out-to-right-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=top]:data-closed:slide-out-to-top-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:fade-out-0 data-open:fade-in-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=bottom]:data-open:slide-in-from-bottom-10 fixed z-50 flex flex-col gap-4 bg-clip-padding text-sm shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm", className) }, props, { children: [children, showCloseButton && (jsx(Dialog$1.Close, { "data-slot": "sheet-close", asChild: true, children: jsxs(Button, { variant: "ghost", className: "absolute top-4 right-4", size: "icon-sm", children: [jsx(SvgClose, {}), jsx("span", { className: "sr-only", children: "Close" })] }) }))] }))] }));
1557
+ }
1558
+ function SheetHeader(_a) {
1559
+ var { className } = _a, props = __rest(_a, ["className"]);
1560
+ return (jsx("div", Object.assign({ "data-slot": "sheet-header", className: cn("gap-1.5 p-4 flex flex-col", className) }, props)));
1561
+ }
1562
+ function SheetFooter(_a) {
1563
+ var { className } = _a, props = __rest(_a, ["className"]);
1564
+ return (jsx("div", Object.assign({ "data-slot": "sheet-footer", className: cn("gap-2 p-4 mt-auto flex flex-col", className) }, props)));
1565
+ }
1566
+ function SheetTitle(_a) {
1567
+ var { className } = _a, props = __rest(_a, ["className"]);
1568
+ return (jsx(Dialog$1.Title, Object.assign({ "data-slot": "sheet-title", className: cn("text-foreground font-medium", className) }, props)));
1569
+ }
1570
+ function SheetDescription(_a) {
1571
+ var { className } = _a, props = __rest(_a, ["className"]);
1572
+ return (jsx(Dialog$1.Description, Object.assign({ "data-slot": "sheet-description", className: cn("text-muted-foreground text-sm", className) }, props)));
1573
+ }
1574
+
1575
+ function Skeleton(_a) {
1576
+ var { className } = _a, props = __rest(_a, ["className"]);
1577
+ return (jsx("div", Object.assign({ "data-slot": "skeleton", className: cn("bg-muted rounded-md animate-pulse", className) }, props)));
1578
+ }
1579
+
1580
+ function TooltipProvider(_a) {
1581
+ var { delayDuration = 0 } = _a, props = __rest(_a, ["delayDuration"]);
1582
+ return (jsx(Tooltip$1.Provider, Object.assign({ "data-slot": "tooltip-provider", delayDuration: delayDuration }, props)));
1583
+ }
1584
+ function Tooltip(_a) {
1585
+ var props = __rest(_a, []);
1586
+ return (jsx(TooltipProvider, { children: jsx(Tooltip$1.Root, Object.assign({ "data-slot": "tooltip" }, props)) }));
1587
+ }
1588
+ function TooltipTrigger(_a) {
1589
+ var props = __rest(_a, []);
1590
+ return jsx(Tooltip$1.Trigger, Object.assign({ "data-slot": "tooltip-trigger" }, props));
1591
+ }
1592
+ function TooltipContent(_a) {
1593
+ var { className, sideOffset = 0, children } = _a, props = __rest(_a, ["className", "sideOffset", "children"]);
1594
+ return (jsx(Tooltip$1.Portal, { children: jsxs(Tooltip$1.Content, Object.assign({ "data-slot": "tooltip-content", sideOffset: sideOffset, className: cn("data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 rounded-input-area px-3 py-1.5 text-xs bg-foreground text-background z-50 w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin)", className) }, props, { children: [children, jsx(Tooltip$1.Arrow, { className: "size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground z-50 translate-y-[calc(-50%_-_2px)]" })] })) }));
1595
+ }
1596
+
1597
+ const MOBILE_BREAKPOINT = 768;
1598
+ function useIsMobile() {
1599
+ const [isMobile, setIsMobile] = React.useState(undefined);
1600
+ React.useEffect(() => {
1601
+ const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
1602
+ const onChange = () => {
1603
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
1604
+ };
1605
+ mql.addEventListener("change", onChange);
1606
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
1607
+ return () => mql.removeEventListener("change", onChange);
1608
+ }, []);
1609
+ return !!isMobile;
1610
+ }
1611
+
1612
+ var _path$5;
1613
+ function _extends$5() { return _extends$5 = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$5.apply(null, arguments); }
1614
+ var SvgDockToLeft = function SvgDockToLeft(props) {
1615
+ return /*#__PURE__*/React.createElement("svg", _extends$5({
1616
+ xmlns: "http://www.w3.org/2000/svg",
1617
+ width: 48,
1618
+ height: 48,
1619
+ viewBox: "0 -960 960 960"
1620
+ }, props), _path$5 || (_path$5 = /*#__PURE__*/React.createElement("path", {
1621
+ d: "M633-180h147v-600H633v600Zm-453 0h393v-600H180v600Zm453 0h147-147Zm-513 60v-720h720v720H120Z"
1622
+ })));
1623
+ };
1624
+
1625
+ const SIDEBAR_COOKIE_NAME = "sidebar_state";
1626
+ const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
1627
+ const SIDEBAR_WIDTH = "16rem";
1628
+ const SIDEBAR_WIDTH_ICON = "3rem";
1629
+ const SIDEBAR_KEYBOARD_SHORTCUT = "b";
1630
+ const SidebarContext = React.createContext(null);
1631
+ function useSidebar() {
1632
+ const context = React.useContext(SidebarContext);
1633
+ if (!context) {
1634
+ throw new Error("useSidebar must be used within a SidebarProvider.");
1635
+ }
1636
+ return context;
1637
+ }
1638
+ function SidebarProvider(_a) {
1639
+ var { defaultOpen = true, open: openProp, onOpenChange: setOpenProp, forceDesktop = false, className, style, children } = _a, props = __rest(_a, ["defaultOpen", "open", "onOpenChange", "forceDesktop", "className", "style", "children"]);
1640
+ const isMobileValue = useIsMobile();
1641
+ const isMobile = forceDesktop ? false : isMobileValue;
1642
+ const [openMobile, setOpenMobile] = React.useState(false);
1643
+ // This is the internal state of the sidebar.
1644
+ // We use openProp and setOpenProp for control from outside the component.
1645
+ const [_open, _setOpen] = React.useState(defaultOpen);
1646
+ const open = openProp !== null && openProp !== void 0 ? openProp : _open;
1647
+ const setOpen = React.useCallback((value) => {
1648
+ const openState = typeof value === "function" ? value(open) : value;
1649
+ if (setOpenProp) {
1650
+ setOpenProp(openState);
1651
+ }
1652
+ else {
1653
+ _setOpen(openState);
1654
+ }
1655
+ // This sets the cookie to keep the sidebar state.
1656
+ document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
1657
+ }, [setOpenProp, open]);
1658
+ // Helper to toggle the sidebar.
1659
+ const toggleSidebar = React.useCallback(() => {
1660
+ return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);
1661
+ }, [isMobile, setOpen, setOpenMobile]);
1662
+ // Adds a keyboard shortcut to toggle the sidebar.
1663
+ React.useEffect(() => {
1664
+ const handleKeyDown = (event) => {
1665
+ if (event.key === SIDEBAR_KEYBOARD_SHORTCUT &&
1666
+ (event.metaKey || event.ctrlKey)) {
1667
+ event.preventDefault();
1668
+ toggleSidebar();
1669
+ }
1670
+ };
1671
+ window.addEventListener("keydown", handleKeyDown);
1672
+ return () => window.removeEventListener("keydown", handleKeyDown);
1673
+ }, [toggleSidebar]);
1674
+ // We add a state so that we can do data-state="expanded" or "collapsed".
1675
+ // This makes it easier to style the sidebar with Tailwind classes.
1676
+ const state = open ? "expanded" : "collapsed";
1677
+ const contextValue = React.useMemo(() => ({
1678
+ state,
1679
+ open,
1680
+ setOpen,
1681
+ isMobile,
1682
+ openMobile,
1683
+ setOpenMobile,
1684
+ toggleSidebar,
1685
+ }), [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]);
1686
+ return (jsx(SidebarContext.Provider, { value: contextValue, children: jsx("div", Object.assign({ "data-slot": "sidebar-wrapper", style: Object.assign({ "--sidebar-width": SIDEBAR_WIDTH, "--sidebar-width-icon": SIDEBAR_WIDTH_ICON }, style), className: cn("group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full", className) }, props, { children: children })) }));
1687
+ }
1688
+ function Sidebar(_a) {
1689
+ var { side = "left", variant = "sidebar", collapsible = "offExamples", className, children } = _a, props = __rest(_a, ["side", "variant", "collapsible", "className", "children"]);
1690
+ const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
1691
+ if (collapsible === "none") {
1692
+ return (jsx("div", Object.assign({ "data-slot": "sidebar", className: cn("bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col", className) }, props, { children: children })));
1693
+ }
1694
+ if (isMobile) {
1695
+ return (jsx(Sheet, Object.assign({ open: openMobile, onOpenChange: setOpenMobile }, props, { children: jsxs(SheetContent, { "data-sidebar": "sidebar", "data-slot": "sidebar", "data-mobile": "true", className: "bg-sidebar text-sidebar-foreground w-screen h-screen p-0 border-0 [&>button]:hidden", style: {
1696
+ "--sidebar-width": "100vw",
1697
+ }, side: "left", children: [jsxs(SheetHeader, { className: "bg-sidebar border-sidebar-border flex h-16 items-left justify-between px-4 border-b", children: [jsx(SheetTitle, { className: "sr-only", children: "Navigation Menu" }), jsx(SheetDescription, { className: "sr-only", children: "Main navigation menu for Thundercat application" }), jsxs("div", { className: "flex items-center justify-between gap-3", children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx("div", { className: "size-6 bg-sidebar-accent rounded-lg" }), jsxs("div", { children: [jsx("div", { className: "text-sidebar-foreground text-base font-medium", children: "Navigation" }), jsx("div", { className: "text-sidebar-foreground/70 text-sm", children: "Menu" })] })] }), jsx(SheetClose, { asChild: true, children: jsx(Button, { variant: "ghost", size: "icon", className: " text-sidebar-foreground", children: jsx(SvgClose, { className: "size-6", "aria-hidden": "true" }) }) })] })] }), jsx("div", { className: "flex h-full w-full flex-col overflow-hidden", children: jsx("div", { className: "flex-1 overflow-y-auto p-6", "data-mobile": "true", children: children }) })] }) })));
1698
+ }
1699
+ return (jsxs("div", { className: "group peer text-sidebar-foreground hidden md:block", "data-state": state, "data-collapsible": state === "collapsed" ? collapsible : "", "data-variant": variant, "data-side": side, "data-slot": "sidebar", children: [jsx("div", { "data-slot": "sidebar-gap", className: cn("transition-[width] duration-150 ease-out relative w-(--sidebar-width) bg-transparent", "group-data-[collapsible=offExamples]:w-0", "group-data-[side=right]:rotate-180", variant === "floating" || variant === "inset"
1700
+ ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]"
1701
+ : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)") }), jsx("div", Object.assign({ "data-slot": "sidebar-container", className: cn("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-150 ease-out md:flex", side === "left"
1702
+ ? "left-0 group-data-[collapsible=offExamples]:left-[calc(var(--sidebar-width)*-1)]"
1703
+ : "right-0 group-data-[collapsible=offExamples]:right-[calc(var(--sidebar-width)*-1)]",
1704
+ // Adjust the padding for floating and inset variants.
1705
+ variant === "floating" || variant === "inset"
1706
+ ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]"
1707
+ : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l", className) }, props, { children: jsx("div", { "data-sidebar": "sidebar", "data-slot": "sidebar-inner", className: "bg-sidebar group-data-[variant=floating]:ring-sidebar-border group-data-[variant=floating]:rounded-card group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 flex size-full flex-col", children: children }) }))] }));
1708
+ }
1709
+ function SidebarTrigger(_a) {
1710
+ var { className, onClick } = _a, props = __rest(_a, ["className", "onClick"]);
1711
+ const { toggleSidebar } = useSidebar();
1712
+ return (jsxs(Button, Object.assign({ "data-sidebar": "trigger", "data-slot": "sidebar-trigger", variant: "ghost", size: "icon-sm", className: cn(className), onClick: (event) => {
1713
+ onClick === null || onClick === void 0 ? void 0 : onClick(event);
1714
+ toggleSidebar();
1715
+ } }, props, { children: [jsx(SvgDockToLeft, {}), jsx("span", { className: "sr-only", children: "Toggle Sidebar" })] })));
1716
+ }
1717
+ function SidebarRail(_a) {
1718
+ var { className } = _a, props = __rest(_a, ["className"]);
1719
+ const { toggleSidebar } = useSidebar();
1720
+ return (jsx("button", Object.assign({ "data-sidebar": "rail", "data-slot": "sidebar-rail", "aria-label": "Toggle Sidebar", tabIndex: -1, onClick: toggleSidebar, title: "Toggle Sidebar", className: cn("hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex", "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize", "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize", "hover:group-data-[collapsible=offExamples]:bg-sidebar group-data-[collapsible=offExamples]:translate-x-0 group-data-[collapsible=offExamples]:after:left-full", "[[data-side=left][data-collapsible=offExamples]_&]:-right-2", "[[data-side=right][data-collapsible=offExamples]_&]:-left-2", className) }, props)));
1721
+ }
1722
+ function SidebarInset(_a) {
1723
+ var { className } = _a, props = __rest(_a, ["className"]);
1724
+ return (jsx("main", Object.assign({ "data-slot": "sidebar-inset", className: cn("bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-card md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 relative flex w-full flex-1 flex-col", className) }, props)));
1725
+ }
1726
+ function SidebarInput(_a) {
1727
+ var { className } = _a, props = __rest(_a, ["className"]);
1728
+ return (jsx(Input, Object.assign({ "data-slot": "sidebar-input", "data-sidebar": "input", className: cn("bg-background h-8 w-full shadow-none group-data-[collapsible=icon]:hidden", className) }, props)));
1729
+ }
1730
+ function SidebarHeader(_a) {
1731
+ var { className } = _a, props = __rest(_a, ["className"]);
1732
+ return (jsx("div", Object.assign({ "data-slot": "sidebar-header", "data-sidebar": "header", className: cn("gap-2 p-2 flex flex-col group-data-[collapsible=icon]:items-center", className) }, props)));
1733
+ }
1734
+ function SidebarFooter(_a) {
1735
+ var { className } = _a, props = __rest(_a, ["className"]);
1736
+ return (jsx("div", Object.assign({ "data-slot": "sidebar-footer", "data-sidebar": "footer", className: cn("gap-2 p-2 flex flex-col", className) }, props)));
1737
+ }
1738
+ function SidebarSeparator(_a) {
1739
+ var { className } = _a, props = __rest(_a, ["className"]);
1740
+ return (jsx(Separator, Object.assign({ "data-slot": "sidebar-separator", "data-sidebar": "separator", className: cn("bg-sidebar-border", className) }, props)));
1741
+ }
1742
+ function SidebarContent(_a) {
1743
+ var { className } = _a, props = __rest(_a, ["className"]);
1744
+ return (jsx("div", Object.assign({ "data-slot": "sidebar-content", "data-sidebar": "content", className: cn("no-scrollbar gap-2 flex min-h-0 flex-1 flex-col overflow-auto group-data-[collapsible=icon]:overflow-hidden", className) }, props)));
1745
+ }
1746
+ function SidebarGroup(_a) {
1747
+ var { className } = _a, props = __rest(_a, ["className"]);
1748
+ return (jsx("div", Object.assign({ "data-slot": "sidebar-group", "data-sidebar": "group", className: cn("p-2 relative flex w-full min-w-0 flex-col", className) }, props)));
1749
+ }
1750
+ function SidebarGroupLabel(_a) {
1751
+ var { className, asChild = false } = _a, props = __rest(_a, ["className", "asChild"]);
1752
+ const Comp = asChild ? Slot.Root : "div";
1753
+ return (jsx(Comp, Object.assign({ "data-slot": "sidebar-group-label", "data-sidebar": "group-label", className: cn("text-sidebar-foreground/70 ring-sidebar-ring h-8 rounded-input-sm px-2 text-xs font-medium transition-[margin,opacity] duration-150 ease-out group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 flex shrink-0 items-center outline-hidden [&>svg]:shrink-0 data-[mobile=true]:text-sm data-[mobile=true]:h-10 data-[mobile=true]:px-3", className) }, props)));
1754
+ }
1755
+ function SidebarGroupAction(_a) {
1756
+ var { className, asChild = false } = _a, props = __rest(_a, ["className", "asChild"]);
1757
+ const Comp = asChild ? Slot.Root : "button";
1758
+ return (jsx(Comp, Object.assign({ "data-slot": "sidebar-group-action", "data-sidebar": "group-action", className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 w-5 rounded-input-sm p-0 focus-visible:ring-2 [&>svg]:size-4 flex aspect-square items-center justify-center outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 md:after:hidden [&>svg]:shrink-0", className) }, props)));
1759
+ }
1760
+ function SidebarGroupContent(_a) {
1761
+ var { className } = _a, props = __rest(_a, ["className"]);
1762
+ return (jsx("div", Object.assign({ "data-slot": "sidebar-group-content", "data-sidebar": "group-content", className: cn("text-sm w-full", className) }, props)));
1763
+ }
1764
+ function SidebarMenu(_a) {
1765
+ var { className } = _a, props = __rest(_a, ["className"]);
1766
+ return (jsx("ul", Object.assign({ "data-slot": "sidebar-menu", "data-sidebar": "menu", className: cn("gap-1 flex w-full min-w-0 flex-col", className) }, props)));
1767
+ }
1768
+ function SidebarMenuItem(_a) {
1769
+ var { className } = _a, props = __rest(_a, ["className"]);
1770
+ return (jsx("li", Object.assign({ "data-slot": "sidebar-menu-item", "data-sidebar": "menu-item", className: cn("group/menu-item relative", className) }, props)));
1771
+ }
1772
+ const sidebarMenuButtonVariants = cva("ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground gap-2 rounded-input-sm p-2 text-left text-sm transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! focus-visible:ring-2 data-active:font-medium peer/menu-button flex w-full items-center overflow-hidden outline-hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&_svg]:size-4 [&_svg]:shrink-0 data-[mobile=true]:text-base data-[mobile=true]:h-12 data-[mobile=true]:[&_svg]:size-5", {
1773
+ variants: {
1774
+ variant: {
1775
+ default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
1776
+ outline: "bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]",
1777
+ },
1778
+ size: {
1779
+ default: "h-8 text-sm",
1780
+ sm: "h-7 text-xs",
1781
+ lg: "h-12 text-sm group-data-[collapsible=icon]:p-0!",
1782
+ },
1783
+ },
1784
+ defaultVariants: {
1785
+ variant: "default",
1786
+ size: "default",
1787
+ },
1788
+ });
1789
+ function SidebarMenuButton(_a) {
1790
+ var { asChild = false, isActive = false, variant = "default", size = "default", tooltip, className } = _a, props = __rest(_a, ["asChild", "isActive", "variant", "size", "tooltip", "className"]);
1791
+ const Comp = asChild ? Slot.Root : "button";
1792
+ const { isMobile, state } = useSidebar();
1793
+ const button = (jsx(Comp, Object.assign({ "data-slot": "sidebar-menu-button", "data-sidebar": "menu-button", "data-size": size, "data-active": isActive, className: cn(sidebarMenuButtonVariants({ variant, size }), className) }, props)));
1794
+ if (!tooltip) {
1795
+ return button;
1796
+ }
1797
+ if (typeof tooltip === "string") {
1798
+ tooltip = {
1799
+ children: tooltip,
1800
+ };
1801
+ }
1802
+ return (jsxs(Tooltip, { children: [jsx(TooltipTrigger, { asChild: true, children: button }), jsx(TooltipContent, Object.assign({ side: "right", align: "center", hidden: state !== "collapsed" || isMobile }, tooltip))] }));
1803
+ }
1804
+ function SidebarMenuAction(_a) {
1805
+ var { className, asChild = false, showOnHover = false } = _a, props = __rest(_a, ["className", "asChild", "showOnHover"]);
1806
+ const Comp = asChild ? Slot.Root : "button";
1807
+ return (jsx(Comp, Object.assign({ "data-slot": "sidebar-menu-action", "data-sidebar": "menu-action", className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 aspect-square w-5 rounded-input-sm p-0 peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 focus-visible:ring-2 [&>svg]:size-4 flex items-center justify-center outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 md:after:hidden [&>svg]:shrink-0", showOnHover &&
1808
+ "peer-data-active/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-open:opacity-100 md:opacity-0", className) }, props)));
1809
+ }
1810
+ function SidebarMenuBadge(_a) {
1811
+ var { className } = _a, props = __rest(_a, ["className"]);
1812
+ return (jsx("div", Object.assign({ "data-slot": "sidebar-menu-badge", "data-sidebar": "menu-badge", className: cn("text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-active/menu-button:text-sidebar-accent-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 rounded-input-sm px-1 text-xs font-medium peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 flex items-center justify-center tabular-nums select-none group-data-[collapsible=icon]:hidden", className) }, props)));
1813
+ }
1814
+ const SKELETON_WIDTH_OPTIONS = ["54%", "64%", "70%", "82%"];
1815
+ function SidebarMenuSkeleton(_a) {
1816
+ var { className, showIcon = false } = _a, props = __rest(_a, ["className", "showIcon"]);
1817
+ const id = React.useId();
1818
+ const width = React.useMemo(() => {
1819
+ const digits = id.replace(/\D+/g, "");
1820
+ const numericId = digits ? Number(digits) : 0;
1821
+ return SKELETON_WIDTH_OPTIONS[numericId % SKELETON_WIDTH_OPTIONS.length];
1822
+ }, [id]);
1823
+ return (jsxs("div", Object.assign({ "data-slot": "sidebar-menu-skeleton", "data-sidebar": "menu-skeleton", className: cn("h-8 gap-2 rounded-input-sm px-2 flex items-center", className) }, props, { children: [showIcon && (jsx(Skeleton, { className: "size-4 rounded-lg", "data-sidebar": "menu-skeleton-icon" })), jsx(Skeleton, { className: "h-4 max-w-(--skeleton-width) flex-1", "data-sidebar": "menu-skeleton-text", style: {
1824
+ "--skeleton-width": width,
1825
+ } })] })));
1826
+ }
1827
+ function SidebarMenuSub(_a) {
1828
+ var { className } = _a, props = __rest(_a, ["className"]);
1829
+ return (jsx("ul", Object.assign({ "data-slot": "sidebar-menu-sub", "data-sidebar": "menu-sub", className: cn("border-sidebar-border mx-3.5 translate-x-px gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden flex min-w-0 flex-col", className) }, props)));
1830
+ }
1831
+ function SidebarMenuSubItem(_a) {
1832
+ var { className } = _a, props = __rest(_a, ["className"]);
1833
+ return (jsx("li", Object.assign({ "data-slot": "sidebar-menu-sub-item", "data-sidebar": "menu-sub-item", className: cn("group/menu-sub-item relative", className) }, props)));
1834
+ }
1835
+ function SidebarMenuSubButton(_a) {
1836
+ var { asChild = false, size = "md", isActive = false, className } = _a, props = __rest(_a, ["asChild", "size", "isActive", "className"]);
1837
+ const Comp = asChild ? Slot.Root : "a";
1838
+ return (jsx(Comp, Object.assign({ "data-slot": "sidebar-menu-sub-button", "data-sidebar": "menu-sub-button", "data-size": size, "data-active": isActive, className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground h-7 gap-2 rounded-input-sm px-2 focus-visible:ring-2 data-[size=md]:text-sm data-[size=sm]:text-xs [&>svg]:size-4 flex min-w-0 -translate-x-px items-center overflow-hidden outline-hidden group-data-[collapsible=icon]:hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:shrink-0", className) }, props)));
1839
+ }
1840
+
1841
+ function Slider(_a) {
1842
+ var { className, defaultValue, value, min = 0, max = 100 } = _a, props = __rest(_a, ["className", "defaultValue", "value", "min", "max"]);
1843
+ const _values = React.useMemo(() => Array.isArray(value)
1844
+ ? value
1845
+ : Array.isArray(defaultValue)
1846
+ ? defaultValue
1847
+ : [min, max], [value, defaultValue, min, max]);
1848
+ return (jsxs(Slider$1.Root, Object.assign({ "data-slot": "slider", defaultValue: defaultValue, value: value, min: min, max: max, className: cn("data-vertical:min-h-40 relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:w-auto data-vertical:flex-col", className) }, props, { children: [jsx(Slider$1.Track, { "data-slot": "slider-track", className: "bg-muted rounded-full data-horizontal:h-1.5 data-horizontal:w-full data-vertical:h-full data-vertical:w-1.5 bg-muted relative grow overflow-hidden data-horizontal:w-full data-vertical:h-full", children: jsx(Slider$1.Range, { "data-slot": "slider-range", className: "bg-primary absolute select-none data-horizontal:h-full data-vertical:w-full" }) }), Array.from({ length: _values.length }, (_, index) => (jsx(Slider$1.Thumb, { "data-slot": "slider-thumb", className: "border-primary ring-ring/50 size-4 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden block shrink-0 select-none disabled:pointer-events-none disabled:opacity-50" }, index)))] })));
1849
+ }
1850
+
1851
+ var _path$4;
1852
+ function _extends$4() { return _extends$4 = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$4.apply(null, arguments); }
1853
+ var SvgCheckCircle = function SvgCheckCircle(props) {
1854
+ return /*#__PURE__*/React.createElement("svg", _extends$4({
1855
+ xmlns: "http://www.w3.org/2000/svg",
1856
+ width: 48,
1857
+ height: 48,
1858
+ viewBox: "0 -960 960 960"
1859
+ }, props), _path$4 || (_path$4 = /*#__PURE__*/React.createElement("path", {
1860
+ d: "m421-298 283-283-46-45-237 237-120-120-45 45 165 166Zm59 218q-82 0-155-31.5t-127.5-86Q143-252 111.5-325T80-480q0-83 31.5-156t86-127Q252-817 325-848.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 82-31.5 155T763-197.5q-54 54.5-127 86T480-80Zm0-60q142 0 241-99.5T820-480q0-142-99-241t-241-99q-141 0-240.5 99T140-480q0 141 99.5 240.5T480-140Zm0-340Z"
1861
+ })));
1862
+ };
1863
+
1864
+ var _path$3;
1865
+ function _extends$3() { return _extends$3 = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$3.apply(null, arguments); }
1866
+ var SvgInfo = function SvgInfo(props) {
1867
+ return /*#__PURE__*/React.createElement("svg", _extends$3({
1868
+ xmlns: "http://www.w3.org/2000/svg",
1869
+ width: 48,
1870
+ height: 48,
1871
+ viewBox: "0 -960 960 960"
1872
+ }, props), _path$3 || (_path$3 = /*#__PURE__*/React.createElement("path", {
1873
+ d: "M453-280h60v-240h-60v240Zm26.98-314q14.02 0 23.52-9.2T513-626q0-14.45-9.48-24.22-9.48-9.78-23.5-9.78t-23.52 9.78Q447-640.45 447-626q0 13.6 9.48 22.8 9.48 9.2 23.5 9.2Zm.29 514q-82.74 0-155.5-31.5Q252-143 197.5-197.5t-86-127.34Q80-397.68 80-480.5t31.5-155.66Q143-709 197.5-763t127.34-85.5Q397.68-880 480.5-880t155.66 31.5Q709-817 763-763t85.5 127Q880-563 880-480.27q0 82.74-31.5 155.5Q817-252 763-197.68q-54 54.31-127 86Q563-80 480.27-80Zm.23-60Q622-140 721-239.5t99-241Q820-622 721.19-721T480-820q-141 0-240.5 98.81T140-480q0 141 99.5 240.5t241 99.5Zm-.5-340Z"
1874
+ })));
1875
+ };
1876
+
1877
+ var _path$2;
1878
+ function _extends$2() { return _extends$2 = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$2.apply(null, arguments); }
1879
+ var SvgWarning = function SvgWarning(props) {
1880
+ return /*#__PURE__*/React.createElement("svg", _extends$2({
1881
+ xmlns: "http://www.w3.org/2000/svg",
1882
+ width: 48,
1883
+ height: 48,
1884
+ viewBox: "0 -960 960 960"
1885
+ }, props), _path$2 || (_path$2 = /*#__PURE__*/React.createElement("path", {
1886
+ d: "m40-120 440-760 440 760H40Zm104-60h672L480-760 144-180Zm340.18-57q12.82 0 21.32-8.68 8.5-8.67 8.5-21.5 0-12.82-8.68-21.32-8.67-8.5-21.5-8.5-12.82 0-21.32 8.68-8.5 8.67-8.5 21.5 0 12.82 8.68 21.32 8.67 8.5 21.5 8.5ZM454-348h60v-224h-60v224Zm26-122Z"
1887
+ })));
1888
+ };
1889
+
1890
+ var _path$1;
1891
+ function _extends$1() { return _extends$1 = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$1.apply(null, arguments); }
1892
+ var SvgDangerous = function SvgDangerous(props) {
1893
+ return /*#__PURE__*/React.createElement("svg", _extends$1({
1894
+ xmlns: "http://www.w3.org/2000/svg",
1895
+ width: 48,
1896
+ height: 48,
1897
+ viewBox: "0 -960 960 960"
1898
+ }, props), _path$1 || (_path$1 = /*#__PURE__*/React.createElement("path", {
1899
+ d: "M330-120 120-330v-300l210-210h300l210 210v300L630-120H330Zm27-195 123-123 123 123 42-42-123-123 123-123-42-42-123 123-123-123-42 42 123 123-123 123 42 42Zm-2 135h250l175-175v-250L605-780H355L180-605v250l175 175Zm125-300Z"
1900
+ })));
1901
+ };
1902
+
1903
+ var _path;
1904
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
1905
+ var SvgProgressActivity = function SvgProgressActivity(props) {
1906
+ return /*#__PURE__*/React.createElement("svg", _extends({
1907
+ xmlns: "http://www.w3.org/2000/svg",
1908
+ width: 48,
1909
+ height: 48,
1910
+ viewBox: "0 -960 960 960"
1911
+ }, props), _path || (_path = /*#__PURE__*/React.createElement("path", {
1912
+ d: "M480-80q-84 0-157-31t-127-85q-54-54-85-127T80-480q0-83.73 31-156.86Q142-710 196-764t127-85q73-31 157-31v60q-141.31 0-240.66 99.28Q140-621.44 140-480.22t99.28 240.72q99.28 99.5 240.5 99.5t240.72-99.34Q820-338.69 820-480h60q0 84-31 157t-85 127q-54 54-127.14 85Q563.73-80 480-80Z"
1913
+ })));
1914
+ };
1915
+
1916
+ const Toaster = (_a) => {
1917
+ var props = __rest(_a, []);
1918
+ const [theme, setTheme] = React.useState("system");
1919
+ React.useEffect(() => {
1920
+ const readTheme = () => {
1921
+ const mode = document.body.getAttribute("data-theme");
1922
+ if (mode === "dark-mode") {
1923
+ return "dark";
1924
+ }
1925
+ if (mode === "light-mode") {
1926
+ return "light";
1927
+ }
1928
+ return "system";
1929
+ };
1930
+ setTheme(readTheme());
1931
+ const observer = new MutationObserver(() => {
1932
+ setTheme(readTheme());
1933
+ });
1934
+ observer.observe(document.body, {
1935
+ attributes: true,
1936
+ attributeFilter: ["data-theme"],
1937
+ });
1938
+ return () => {
1939
+ observer.disconnect();
1940
+ };
1941
+ }, []);
1942
+ return (jsx(Toaster$1, Object.assign({ theme: theme, className: "toaster group", icons: {
1943
+ success: (jsx(SvgCheckCircle, { className: "size-4" })),
1944
+ info: (jsx(SvgInfo, { className: "size-4" })),
1945
+ warning: (jsx(SvgWarning, { className: "size-4" })),
1946
+ error: (jsx(SvgDangerous, { className: "size-4" })),
1947
+ loading: (jsx(SvgProgressActivity, { className: "size-4 animate-spin" })),
1948
+ }, style: {
1949
+ "--normal-bg": "var(--popover)",
1950
+ "--normal-text": "var(--popover-foreground)",
1951
+ "--normal-border": "var(--border)",
1952
+ "--border-radius": "var(--radius-card)",
1953
+ }, toastOptions: {
1954
+ classNames: {
1955
+ toast: "cn-toast",
1956
+ },
1957
+ } }, props)));
1958
+ };
1959
+
1960
+ function Spinner(_a) {
1961
+ var { className } = _a, props = __rest(_a, ["className"]);
1962
+ return (jsx(SvgProgressActivity, Object.assign({ role: "status", "aria-label": "Loading", className: cn("size-4 animate-spin", className) }, props)));
1963
+ }
1964
+
1965
+ function Switch(_a) {
1966
+ var { className, size = "default" } = _a, props = __rest(_a, ["className", "size"]);
1967
+ return (jsx(Switch$1.Root, Object.assign({ "data-slot": "switch", "data-size": size, className: cn("data-checked:bg-primary data-unchecked:bg-border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ring aria-invalid:ring-2 aria-invalid:ring-offset-2 aria-invalid:ring-destructive shrink-0 rounded-full border border-transparent data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] data-[size=lg]:h-[24px] data-[size=lg]:w-[42px] peer group/switch relative inline-flex items-center transition-all after:absolute after:-inset-x-3 after:-inset-y-2 data-disabled:cursor-not-allowed data-disabled:opacity-50", className) }, props, { children: jsx(Switch$1.Thumb, { "data-slot": "switch-thumb", className: "bg-primary-foreground dark:data-unchecked:bg-primary dark:data-checked:bg-primary-foreground rounded-full group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=lg]/switch:size-5 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=lg]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 group-data-[size=lg]/switch:data-unchecked:translate-x-0 pointer-events-none block ring-0 transition-transform" }) })));
1968
+ }
1969
+
1970
+ function Table(_a) {
1971
+ var { className } = _a, props = __rest(_a, ["className"]);
1972
+ return (jsx("div", { "data-slot": "table-container", className: "relative w-full overflow-x-auto", children: jsx("table", Object.assign({ "data-slot": "table", className: cn("w-full caption-bottom text-sm", className) }, props)) }));
1973
+ }
1974
+ function TableHeader(_a) {
1975
+ var { className } = _a, props = __rest(_a, ["className"]);
1976
+ return (jsx("thead", Object.assign({ "data-slot": "table-header", className: cn("[&_tr]:border-b", className) }, props)));
1977
+ }
1978
+ function TableBody(_a) {
1979
+ var { className } = _a, props = __rest(_a, ["className"]);
1980
+ return (jsx("tbody", Object.assign({ "data-slot": "table-body", className: cn("[&_tr:last-child]:border-0", className) }, props)));
1981
+ }
1982
+ function TableFooter(_a) {
1983
+ var { className } = _a, props = __rest(_a, ["className"]);
1984
+ return (jsx("tfoot", Object.assign({ "data-slot": "table-footer", className: cn("bg-muted/50 border-t font-medium [&>tr]:last:border-b-0", className) }, props)));
1985
+ }
1986
+ function TableRow(_a) {
1987
+ var { className } = _a, props = __rest(_a, ["className"]);
1988
+ return (jsx("tr", Object.assign({ "data-slot": "table-row", className: cn("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors", className) }, props)));
1989
+ }
1990
+ function TableHead(_a) {
1991
+ var { className } = _a, props = __rest(_a, ["className"]);
1992
+ return (jsx("th", Object.assign({ "data-slot": "table-head", className: cn("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0", className) }, props)));
1993
+ }
1994
+ function TableCell(_a) {
1995
+ var { className } = _a, props = __rest(_a, ["className"]);
1996
+ return (jsx("td", Object.assign({ "data-slot": "table-cell", className: cn("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0", className) }, props)));
1997
+ }
1998
+ function TableCaption(_a) {
1999
+ var { className } = _a, props = __rest(_a, ["className"]);
2000
+ return (jsx("caption", Object.assign({ "data-slot": "table-caption", className: cn("text-muted-foreground mt-4 text-sm", className) }, props)));
2001
+ }
2002
+
2003
+ function Tabs(_a) {
2004
+ var { className, orientation = "horizontal" } = _a, props = __rest(_a, ["className", "orientation"]);
2005
+ return (jsx(Tabs$1.Root, Object.assign({ "data-slot": "tabs", "data-orientation": orientation, className: cn("gap-2 group/tabs flex data-[orientation=horizontal]:flex-col", className) }, props)));
2006
+ }
2007
+ const tabsListVariants = cva("rounded-input-md p-[3px] group-data-horizontal/tabs:h-9 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col", {
2008
+ variants: {
2009
+ variant: {
2010
+ default: "bg-muted",
2011
+ line: "gap-1 bg-transparent border-b border-border relative",
2012
+ },
2013
+ },
2014
+ defaultVariants: {
2015
+ variant: "default",
2016
+ },
2017
+ });
2018
+ function TabsList(_a) {
2019
+ var { className, variant = "default" } = _a, props = __rest(_a, ["className", "variant"]);
2020
+ return (jsx(Tabs$1.List, Object.assign({ "data-slot": "tabs-list", "data-variant": variant, className: cn(tabsListVariants({ variant }), className) }, props)));
2021
+ }
2022
+ function TabsTrigger(_a) {
2023
+ var { className } = _a, props = __rest(_a, ["className"]);
2024
+ return (jsx(Tabs$1.Trigger, Object.assign({ "data-slot": "tabs-trigger", className: cn("gap-1.5 rounded-input-sm border border-transparent px-2 py-1 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:outline-none text-muted-foreground hover:text-foreground data-active:text-primary-foreground data-active:hover:text-primary-foreground group-data-[variant=line]/tabs-list:data-active:text-primary group-data-[variant=line]/tabs-list:data-active:hover:text-primary relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0", "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent", "data-active:bg-primary data-active:text-primary-foreground data-active:border-transparent group-data-[variant=line]/tabs-list:data-active:text-primary", "after:bg-primary after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.75 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.75 group-data-[variant=line]/tabs-list:data-active:after:opacity-100", className) }, props)));
2025
+ }
2026
+ function TabsContent(_a) {
2027
+ var { className } = _a, props = __rest(_a, ["className"]);
2028
+ return (jsx(Tabs$1.Content, Object.assign({ "data-slot": "tabs-content", className: cn("text-sm flex-1 outline-none", className) }, props)));
2029
+ }
2030
+
2031
+ const toggleVariants = cva("hover:text-foreground aria-pressed:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ring aria-invalid:ring-2 aria-invalid:ring-offset-2 aria-invalid:ring-destructive gap-1 rounded-input-sm text-sm font-medium transition-[color,box-shadow] [&_svg:not([class*='size-'])]:size-4 group/toggle hover:bg-muted inline-flex items-center justify-center whitespace-nowrap disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0", {
2032
+ variants: {
2033
+ variant: {
2034
+ default: "bg-transparent",
2035
+ outline: "border-input-border hover:bg-muted border bg-transparent",
2036
+ },
2037
+ size: {
2038
+ default: "h-9 min-w-9 px-2",
2039
+ sm: "h-8 min-w-8 px-1.5",
2040
+ lg: "h-10 min-w-10 px-2.5",
2041
+ },
2042
+ },
2043
+ defaultVariants: {
2044
+ variant: "default",
2045
+ size: "default",
2046
+ },
2047
+ });
2048
+ function Toggle(_a) {
2049
+ var { className, variant = "default", size = "default" } = _a, props = __rest(_a, ["className", "variant", "size"]);
2050
+ return (jsx(Toggle$1.Root, Object.assign({ "data-slot": "toggle", className: cn(toggleVariants({ variant, size, className })) }, props)));
2051
+ }
2052
+
2053
+ const ToggleGroupContext = React.createContext({
2054
+ size: "default",
2055
+ variant: "default",
2056
+ spacing: 0,
2057
+ orientation: "horizontal",
2058
+ });
2059
+ function ToggleGroup(_a) {
2060
+ var { className, variant, size, spacing = 0, orientation = "horizontal", children } = _a, props = __rest(_a, ["className", "variant", "size", "spacing", "orientation", "children"]);
2061
+ return (jsx(ToggleGroup$1.Root, Object.assign({ "data-slot": "toggle-group", "data-variant": variant, "data-size": size, "data-spacing": spacing, "data-orientation": orientation, style: { "--gap": spacing }, className: cn("rounded-input-sm data-[spacing=0]:data-[variant=outline]: group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] data-[orientation=vertical]:flex-col data-[orientation=vertical]:items-stretch", className) }, props, { children: jsx(ToggleGroupContext.Provider, { value: { variant, size, spacing, orientation }, children: children }) })));
2062
+ }
2063
+ function ToggleGroupItem(_a) {
2064
+ var { className, children, variant = "default", size = "default" } = _a, props = __rest(_a, ["className", "children", "variant", "size"]);
2065
+ const context = React.useContext(ToggleGroupContext);
2066
+ return (jsx(ToggleGroup$1.Item, Object.assign({ "data-slot": "toggle-group-item", "data-variant": context.variant || variant, "data-size": context.size || size, "data-spacing": context.spacing, className: cn("data-[state=on]:bg-muted group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 group-data-[spacing=0]/toggle-group:shadow-none group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-input-sm group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-input-sm group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-input-sm group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-input-sm shrink-0 focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t", toggleVariants({
2067
+ variant: context.variant || variant,
2068
+ size: context.size || size,
2069
+ }), className) }, props, { children: children })));
2070
+ }
2071
+
2072
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertAction, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AspectRatio, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSeparator, ComboboxTrigger, ComboboxValue, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, HoverCard, HoverCardContent, HoverCardTrigger, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, Label, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, Spinner, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buttonGroupVariants, buttonVariants, navigationMenuTriggerStyle, tabsListVariants, toggleVariants, useCarousel, useComboboxAnchor, useSidebar };
2073
+ //# sourceMappingURL=index.esm.js.map