@invana/ui 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs ADDED
@@ -0,0 +1,3878 @@
1
+ 'use strict';
2
+
3
+ var clsx = require('clsx');
4
+ var tailwindMerge = require('tailwind-merge');
5
+ var React23 = require('react');
6
+ var AccordionPrimitive = require('@radix-ui/react-accordion');
7
+ var lucideReact = require('lucide-react');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+ var classVarianceAuthority = require('class-variance-authority');
10
+ var AlertDialogPrimitive = require('@radix-ui/react-alert-dialog');
11
+ var reactSlot = require('@radix-ui/react-slot');
12
+ var AvatarPrimitive = require('@radix-ui/react-avatar');
13
+ var SeparatorPrimitive = require('@radix-ui/react-separator');
14
+ var useEmblaCarousel = require('embla-carousel-react');
15
+ var cmdk = require('cmdk');
16
+ var DialogPrimitive = require('@radix-ui/react-dialog');
17
+ var DropdownMenuPrimitive = require('@radix-ui/react-dropdown-menu');
18
+ var HoverCardPrimitive = require('@radix-ui/react-hover-card');
19
+ var MenubarPrimitive = require('@radix-ui/react-menubar');
20
+ var NavigationMenuPrimitive = require('@radix-ui/react-navigation-menu');
21
+ var PopoverPrimitive = require('@radix-ui/react-popover');
22
+ var ProgressPrimitive = require('@radix-ui/react-progress');
23
+ var reactResizablePanels = require('react-resizable-panels');
24
+ var ScrollAreaPrimitive = require('@radix-ui/react-scroll-area');
25
+ var TooltipPrimitive = require('@radix-ui/react-tooltip');
26
+ var sonner = require('sonner');
27
+ var TabsPrimitive = require('@radix-ui/react-tabs');
28
+ var TogglePrimitive = require('@radix-ui/react-toggle');
29
+ var ToggleGroupPrimitive = require('@radix-ui/react-toggle-group');
30
+
31
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
32
+
33
+ function _interopNamespace(e) {
34
+ if (e && e.__esModule) return e;
35
+ var n = Object.create(null);
36
+ if (e) {
37
+ Object.keys(e).forEach(function (k) {
38
+ if (k !== 'default') {
39
+ var d = Object.getOwnPropertyDescriptor(e, k);
40
+ Object.defineProperty(n, k, d.get ? d : {
41
+ enumerable: true,
42
+ get: function () { return e[k]; }
43
+ });
44
+ }
45
+ });
46
+ }
47
+ n.default = e;
48
+ return Object.freeze(n);
49
+ }
50
+
51
+ var React23__namespace = /*#__PURE__*/_interopNamespace(React23);
52
+ var AccordionPrimitive__namespace = /*#__PURE__*/_interopNamespace(AccordionPrimitive);
53
+ var AlertDialogPrimitive__namespace = /*#__PURE__*/_interopNamespace(AlertDialogPrimitive);
54
+ var AvatarPrimitive__namespace = /*#__PURE__*/_interopNamespace(AvatarPrimitive);
55
+ var SeparatorPrimitive__namespace = /*#__PURE__*/_interopNamespace(SeparatorPrimitive);
56
+ var useEmblaCarousel__default = /*#__PURE__*/_interopDefault(useEmblaCarousel);
57
+ var DialogPrimitive__namespace = /*#__PURE__*/_interopNamespace(DialogPrimitive);
58
+ var DropdownMenuPrimitive__namespace = /*#__PURE__*/_interopNamespace(DropdownMenuPrimitive);
59
+ var HoverCardPrimitive__namespace = /*#__PURE__*/_interopNamespace(HoverCardPrimitive);
60
+ var MenubarPrimitive__namespace = /*#__PURE__*/_interopNamespace(MenubarPrimitive);
61
+ var NavigationMenuPrimitive__namespace = /*#__PURE__*/_interopNamespace(NavigationMenuPrimitive);
62
+ var PopoverPrimitive__namespace = /*#__PURE__*/_interopNamespace(PopoverPrimitive);
63
+ var ProgressPrimitive__namespace = /*#__PURE__*/_interopNamespace(ProgressPrimitive);
64
+ var ScrollAreaPrimitive__namespace = /*#__PURE__*/_interopNamespace(ScrollAreaPrimitive);
65
+ var TooltipPrimitive__namespace = /*#__PURE__*/_interopNamespace(TooltipPrimitive);
66
+ var TabsPrimitive__namespace = /*#__PURE__*/_interopNamespace(TabsPrimitive);
67
+ var TogglePrimitive__namespace = /*#__PURE__*/_interopNamespace(TogglePrimitive);
68
+ var ToggleGroupPrimitive__namespace = /*#__PURE__*/_interopNamespace(ToggleGroupPrimitive);
69
+
70
+ // src/lib/utils.ts
71
+ function cn(...inputs) {
72
+ return tailwindMerge.twMerge(clsx.clsx(inputs));
73
+ }
74
+ var Accordion = AccordionPrimitive__namespace.Root;
75
+ var AccordionItem = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
76
+ AccordionPrimitive__namespace.Item,
77
+ {
78
+ ref,
79
+ className: cn("border-b", className),
80
+ ...props
81
+ }
82
+ ));
83
+ AccordionItem.displayName = "AccordionItem";
84
+ var AccordionTrigger = React23__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(AccordionPrimitive__namespace.Header, { className: "flex", children: /* @__PURE__ */ jsxRuntime.jsxs(
85
+ AccordionPrimitive__namespace.Trigger,
86
+ {
87
+ ref,
88
+ className: cn(
89
+ "flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",
90
+ className
91
+ ),
92
+ ...props,
93
+ children: [
94
+ children,
95
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4 shrink-0 transition-transform duration-200" })
96
+ ]
97
+ }
98
+ ) }));
99
+ AccordionTrigger.displayName = AccordionPrimitive__namespace.Trigger.displayName;
100
+ var AccordionContent = React23__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
101
+ AccordionPrimitive__namespace.Content,
102
+ {
103
+ ref,
104
+ className: "overflow-hidden transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
105
+ ...props,
106
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("pb-4 pt-0", className), children })
107
+ }
108
+ ));
109
+ AccordionContent.displayName = AccordionPrimitive__namespace.Content.displayName;
110
+ var alertVariants = classVarianceAuthority.cva(
111
+ "relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",
112
+ {
113
+ variants: {
114
+ variant: {
115
+ default: "bg-background text-foreground",
116
+ destructive: "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"
117
+ }
118
+ },
119
+ defaultVariants: {
120
+ variant: "default"
121
+ }
122
+ }
123
+ );
124
+ var Alert = React23__namespace.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
125
+ "div",
126
+ {
127
+ ref,
128
+ role: "alert",
129
+ className: cn(alertVariants({ variant }), className),
130
+ ...props
131
+ }
132
+ ));
133
+ Alert.displayName = "Alert";
134
+ var AlertTitle = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
135
+ "h5",
136
+ {
137
+ ref,
138
+ className: cn("mb-1 font-medium leading-none tracking-tight", className),
139
+ ...props
140
+ }
141
+ ));
142
+ AlertTitle.displayName = "AlertTitle";
143
+ var AlertDescription = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
144
+ "div",
145
+ {
146
+ ref,
147
+ className: cn("text-sm [&_p]:leading-relaxed", className),
148
+ ...props
149
+ }
150
+ ));
151
+ AlertDescription.displayName = "AlertDescription";
152
+ var buttonVariants = classVarianceAuthority.cva(
153
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-5 [&_svg]:shrink-0",
154
+ {
155
+ variants: {
156
+ variant: {
157
+ default: "bg-primary text-primary-foreground shadow ring-1 ring-primary/30 hover:ring-primary/50 hover:shadow-lg active:bg-primary",
158
+ destructive: "bg-destructive text-destructive-foreground shadow-sm ring-1 ring-destructive/40 hover:ring-destructive/60 active:bg-destructive/70",
159
+ outline: "bg-background shadow-sm ring-1 ring-border hover:bg-primary/10 hover:text-primary hover:ring-primary/40 active:bg-primary/20",
160
+ secondary: "bg-secondary text-secondary-foreground shadow-sm ring-1 ring-border hover:bg-secondary/80 hover:ring-primary/40 active:bg-secondary/60",
161
+ ghost: "ring-1 ring-transparent hover:bg-primary/10 hover:text-primary hover:ring-primary/25 active:bg-primary/15 active:text-primary",
162
+ soft: "bg-primary/10 text-primary ring-1 ring-primary/30 shadow-sm hover:bg-primary/20 active:bg-primary/25",
163
+ link: "text-primary underline-offset-4 hover:underline hover:text-primary/80 active:text-primary/60"
164
+ },
165
+ size: {
166
+ default: "h-9 px-4 py-2",
167
+ sm: "h-8 rounded-md px-3 py-2 text-sm",
168
+ lg: "h-12 rounded-md px-8 py-3",
169
+ icon: "h-8 w-8 rounded-md",
170
+ "nav-icon": "h-11 w-11 rounded-md"
171
+ }
172
+ },
173
+ defaultVariants: {
174
+ variant: "default",
175
+ size: "default"
176
+ }
177
+ }
178
+ );
179
+ var Button = React23__namespace.forwardRef(
180
+ ({ className, variant, size, asChild = false, ...props }, ref) => {
181
+ const Comp = asChild ? reactSlot.Slot : "button";
182
+ return /* @__PURE__ */ jsxRuntime.jsx(
183
+ Comp,
184
+ {
185
+ className: cn(buttonVariants({ variant, size, className })),
186
+ ref,
187
+ ...props
188
+ }
189
+ );
190
+ }
191
+ );
192
+ Button.displayName = "Button";
193
+ var AlertDialog = AlertDialogPrimitive__namespace.Root;
194
+ var AlertDialogTrigger = AlertDialogPrimitive__namespace.Trigger;
195
+ var AlertDialogPortal = AlertDialogPrimitive__namespace.Portal;
196
+ var AlertDialogOverlay = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
197
+ AlertDialogPrimitive__namespace.Overlay,
198
+ {
199
+ className: cn(
200
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
201
+ className
202
+ ),
203
+ ...props,
204
+ ref
205
+ }
206
+ ));
207
+ AlertDialogOverlay.displayName = AlertDialogPrimitive__namespace.Overlay.displayName;
208
+ var AlertDialogContent = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(AlertDialogPortal, { children: [
209
+ /* @__PURE__ */ jsxRuntime.jsx(AlertDialogOverlay, {}),
210
+ /* @__PURE__ */ jsxRuntime.jsx(
211
+ AlertDialogPrimitive__namespace.Content,
212
+ {
213
+ ref,
214
+ className: cn(
215
+ "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
216
+ className
217
+ ),
218
+ ...props
219
+ }
220
+ )
221
+ ] }));
222
+ AlertDialogContent.displayName = AlertDialogPrimitive__namespace.Content.displayName;
223
+ var AlertDialogHeader = ({
224
+ className,
225
+ ...props
226
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
227
+ "div",
228
+ {
229
+ className: cn(
230
+ "flex flex-col space-y-2 text-center sm:text-left",
231
+ className
232
+ ),
233
+ ...props
234
+ }
235
+ );
236
+ AlertDialogHeader.displayName = "AlertDialogHeader";
237
+ var AlertDialogFooter = ({
238
+ className,
239
+ ...props
240
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
241
+ "div",
242
+ {
243
+ className: cn(
244
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
245
+ className
246
+ ),
247
+ ...props
248
+ }
249
+ );
250
+ AlertDialogFooter.displayName = "AlertDialogFooter";
251
+ var AlertDialogTitle = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
252
+ AlertDialogPrimitive__namespace.Title,
253
+ {
254
+ ref,
255
+ className: cn("text-lg font-semibold", className),
256
+ ...props
257
+ }
258
+ ));
259
+ AlertDialogTitle.displayName = AlertDialogPrimitive__namespace.Title.displayName;
260
+ var AlertDialogDescription = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
261
+ AlertDialogPrimitive__namespace.Description,
262
+ {
263
+ ref,
264
+ className: cn("text-sm text-muted-foreground", className),
265
+ ...props
266
+ }
267
+ ));
268
+ AlertDialogDescription.displayName = AlertDialogPrimitive__namespace.Description.displayName;
269
+ var AlertDialogAction = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
270
+ AlertDialogPrimitive__namespace.Action,
271
+ {
272
+ ref,
273
+ className: cn(buttonVariants(), className),
274
+ ...props
275
+ }
276
+ ));
277
+ AlertDialogAction.displayName = AlertDialogPrimitive__namespace.Action.displayName;
278
+ var AlertDialogCancel = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
279
+ AlertDialogPrimitive__namespace.Cancel,
280
+ {
281
+ ref,
282
+ className: cn(
283
+ buttonVariants({ variant: "outline" }),
284
+ "mt-2 sm:mt-0",
285
+ className
286
+ ),
287
+ ...props
288
+ }
289
+ ));
290
+ AlertDialogCancel.displayName = AlertDialogPrimitive__namespace.Cancel.displayName;
291
+ var Avatar = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
292
+ AvatarPrimitive__namespace.Root,
293
+ {
294
+ ref,
295
+ "data-slot": "avatar",
296
+ className: cn(
297
+ "relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
298
+ className
299
+ ),
300
+ ...props
301
+ }
302
+ ));
303
+ Avatar.displayName = AvatarPrimitive__namespace.Root.displayName;
304
+ var AvatarImage = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
305
+ AvatarPrimitive__namespace.Image,
306
+ {
307
+ ref,
308
+ className: cn("aspect-square h-full w-full", className),
309
+ ...props
310
+ }
311
+ ));
312
+ AvatarImage.displayName = AvatarPrimitive__namespace.Image.displayName;
313
+ var AvatarFallback = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
314
+ AvatarPrimitive__namespace.Fallback,
315
+ {
316
+ ref,
317
+ className: cn(
318
+ "flex h-full w-full items-center justify-center rounded-full bg-muted",
319
+ className
320
+ ),
321
+ ...props
322
+ }
323
+ ));
324
+ AvatarFallback.displayName = AvatarPrimitive__namespace.Fallback.displayName;
325
+ var badgeVariants = classVarianceAuthority.cva(
326
+ "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
327
+ {
328
+ variants: {
329
+ variant: {
330
+ default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
331
+ secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
332
+ destructive: "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",
333
+ outline: "text-foreground border-border",
334
+ soft: "border-primary/25 bg-primary/15 text-primary hover:bg-primary/20"
335
+ }
336
+ },
337
+ defaultVariants: {
338
+ variant: "default"
339
+ }
340
+ }
341
+ );
342
+ function Badge({ className, variant, ...props }) {
343
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(badgeVariants({ variant }), className), ...props });
344
+ }
345
+ var Breadcrumb = React23__namespace.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("nav", { ref, "aria-label": "breadcrumb", ...props }));
346
+ Breadcrumb.displayName = "Breadcrumb";
347
+ var BreadcrumbList = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
348
+ "ol",
349
+ {
350
+ ref,
351
+ className: cn(
352
+ "flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5",
353
+ className
354
+ ),
355
+ ...props
356
+ }
357
+ ));
358
+ BreadcrumbList.displayName = "BreadcrumbList";
359
+ var BreadcrumbItem = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
360
+ "li",
361
+ {
362
+ ref,
363
+ className: cn("inline-flex items-center gap-1.5", className),
364
+ ...props
365
+ }
366
+ ));
367
+ BreadcrumbItem.displayName = "BreadcrumbItem";
368
+ var BreadcrumbLink = React23__namespace.forwardRef(({ asChild, className, ...props }, ref) => {
369
+ const Comp = asChild ? reactSlot.Slot : "a";
370
+ return /* @__PURE__ */ jsxRuntime.jsx(
371
+ Comp,
372
+ {
373
+ ref,
374
+ className: cn("transition-colors hover:text-foreground", className),
375
+ ...props
376
+ }
377
+ );
378
+ });
379
+ BreadcrumbLink.displayName = "BreadcrumbLink";
380
+ var BreadcrumbPage = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
381
+ "span",
382
+ {
383
+ ref,
384
+ role: "link",
385
+ "aria-disabled": "true",
386
+ "aria-current": "page",
387
+ className: cn("font-normal text-foreground", className),
388
+ ...props
389
+ }
390
+ ));
391
+ BreadcrumbPage.displayName = "BreadcrumbPage";
392
+ var BreadcrumbSeparator = ({
393
+ children,
394
+ className,
395
+ ...props
396
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
397
+ "li",
398
+ {
399
+ role: "presentation",
400
+ "aria-hidden": "true",
401
+ className: cn("[&>svg]:w-3.5 [&>svg]:h-3.5", className),
402
+ ...props,
403
+ children: children ?? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, {})
404
+ }
405
+ );
406
+ BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
407
+ var BreadcrumbEllipsis = ({
408
+ className,
409
+ ...props
410
+ }) => /* @__PURE__ */ jsxRuntime.jsxs(
411
+ "span",
412
+ {
413
+ role: "presentation",
414
+ "aria-hidden": "true",
415
+ className: cn("flex h-9 w-9 items-center justify-center", className),
416
+ ...props,
417
+ children: [
418
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MoreHorizontal, { className: "h-4 w-4" }),
419
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "More" })
420
+ ]
421
+ }
422
+ );
423
+ BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
424
+ var Separator = React23__namespace.forwardRef(
425
+ ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
426
+ SeparatorPrimitive__namespace.Root,
427
+ {
428
+ ref,
429
+ decorative,
430
+ orientation,
431
+ className: cn(
432
+ "shrink-0 bg-border",
433
+ orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
434
+ className
435
+ ),
436
+ ...props
437
+ }
438
+ )
439
+ );
440
+ Separator.displayName = SeparatorPrimitive__namespace.Root.displayName;
441
+ var buttonGroupVariants = classVarianceAuthority.cva(
442
+ "flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1",
443
+ {
444
+ variants: {
445
+ orientation: {
446
+ horizontal: "[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none",
447
+ vertical: "flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none"
448
+ }
449
+ },
450
+ defaultVariants: {
451
+ orientation: "horizontal"
452
+ }
453
+ }
454
+ );
455
+ function ButtonGroup({
456
+ className,
457
+ orientation,
458
+ ...props
459
+ }) {
460
+ return /* @__PURE__ */ jsxRuntime.jsx(
461
+ "div",
462
+ {
463
+ role: "group",
464
+ "data-slot": "button-group",
465
+ "data-orientation": orientation,
466
+ className: cn(buttonGroupVariants({ orientation }), className),
467
+ ...props
468
+ }
469
+ );
470
+ }
471
+ function ButtonGroupText({
472
+ className,
473
+ asChild = false,
474
+ ...props
475
+ }) {
476
+ const Comp = asChild ? reactSlot.Slot : "div";
477
+ return /* @__PURE__ */ jsxRuntime.jsx(
478
+ Comp,
479
+ {
480
+ className: cn(
481
+ "bg-muted shadow-xs flex items-center gap-2 rounded-md border px-4 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none",
482
+ className
483
+ ),
484
+ ...props
485
+ }
486
+ );
487
+ }
488
+ function ButtonGroupSeparator({
489
+ className,
490
+ orientation = "vertical",
491
+ ...props
492
+ }) {
493
+ return /* @__PURE__ */ jsxRuntime.jsx(
494
+ Separator,
495
+ {
496
+ "data-slot": "button-group-separator",
497
+ orientation,
498
+ className: cn(
499
+ "bg-input relative !m-0 self-stretch data-[orientation=vertical]:h-auto",
500
+ className
501
+ ),
502
+ ...props
503
+ }
504
+ );
505
+ }
506
+ var Card = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
507
+ "div",
508
+ {
509
+ ref,
510
+ className: cn(
511
+ "rounded-md border bg-card text-card-foreground shadow",
512
+ className
513
+ ),
514
+ ...props
515
+ }
516
+ ));
517
+ Card.displayName = "Card";
518
+ var CardHeader = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
519
+ "div",
520
+ {
521
+ ref,
522
+ className: cn("flex flex-col space-y-1.5 p-3", className),
523
+ ...props
524
+ }
525
+ ));
526
+ CardHeader.displayName = "CardHeader";
527
+ var CardTitle = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
528
+ "div",
529
+ {
530
+ ref,
531
+ className: cn("font-semibold leading-none tracking-tight ", className),
532
+ ...props
533
+ }
534
+ ));
535
+ CardTitle.displayName = "CardTitle";
536
+ var CardDescription = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
537
+ "div",
538
+ {
539
+ ref,
540
+ className: cn(" text-muted-foreground", className),
541
+ ...props
542
+ }
543
+ ));
544
+ CardDescription.displayName = "CardDescription";
545
+ var CardContent = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cn("p-3 flex-1 overflow-y-auto", className), ...props }));
546
+ CardContent.displayName = "CardContent";
547
+ var CardFooter = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
548
+ "div",
549
+ {
550
+ ref,
551
+ className: cn("flex items-center p-3 ", className),
552
+ ...props
553
+ }
554
+ ));
555
+ CardFooter.displayName = "CardFooter";
556
+ var CardWithHeader = React23__namespace.forwardRef(
557
+ ({ className, title, description, headerClassName, contentClassName, footerClassName, footer, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Card, { ref, className, ...props, children: [
558
+ /* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: `${headerClassName} rounded-t-md`, children: [
559
+ typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { children: title }) : title,
560
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(CardDescription, { children: description }) : description)
561
+ ] }),
562
+ /* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: contentClassName, children }),
563
+ footer && /* @__PURE__ */ jsxRuntime.jsx(CardFooter, { className: footerClassName, children: footer })
564
+ ] })
565
+ );
566
+ CardWithHeader.displayName = "CardWithHeader";
567
+ var CarouselContext = React23__namespace.createContext(null);
568
+ function useCarousel() {
569
+ const context = React23__namespace.useContext(CarouselContext);
570
+ if (!context) {
571
+ throw new Error("useCarousel must be used within a <Carousel />");
572
+ }
573
+ return context;
574
+ }
575
+ var Carousel = React23__namespace.forwardRef(
576
+ ({
577
+ orientation = "horizontal",
578
+ opts,
579
+ setApi,
580
+ plugins,
581
+ className,
582
+ children,
583
+ ...props
584
+ }, ref) => {
585
+ const [carouselRef, api] = useEmblaCarousel__default.default(
586
+ {
587
+ ...opts,
588
+ axis: orientation === "horizontal" ? "x" : "y"
589
+ },
590
+ plugins
591
+ );
592
+ const [canScrollPrev, setCanScrollPrev] = React23__namespace.useState(false);
593
+ const [canScrollNext, setCanScrollNext] = React23__namespace.useState(false);
594
+ const onSelect = React23__namespace.useCallback((api2) => {
595
+ if (!api2) {
596
+ return;
597
+ }
598
+ setCanScrollPrev(api2.canScrollPrev());
599
+ setCanScrollNext(api2.canScrollNext());
600
+ }, []);
601
+ const scrollPrev = React23__namespace.useCallback(() => {
602
+ api?.scrollPrev();
603
+ }, [api]);
604
+ const scrollNext = React23__namespace.useCallback(() => {
605
+ api?.scrollNext();
606
+ }, [api]);
607
+ const handleKeyDown = React23__namespace.useCallback(
608
+ (event) => {
609
+ if (event.key === "ArrowLeft") {
610
+ event.preventDefault();
611
+ scrollPrev();
612
+ } else if (event.key === "ArrowRight") {
613
+ event.preventDefault();
614
+ scrollNext();
615
+ }
616
+ },
617
+ [scrollPrev, scrollNext]
618
+ );
619
+ React23__namespace.useEffect(() => {
620
+ if (!api || !setApi) {
621
+ return;
622
+ }
623
+ setApi(api);
624
+ }, [api, setApi]);
625
+ React23__namespace.useEffect(() => {
626
+ if (!api) {
627
+ return;
628
+ }
629
+ onSelect(api);
630
+ api.on("reInit", onSelect);
631
+ api.on("select", onSelect);
632
+ return () => {
633
+ api?.off("select", onSelect);
634
+ };
635
+ }, [api, onSelect]);
636
+ return /* @__PURE__ */ jsxRuntime.jsx(
637
+ CarouselContext.Provider,
638
+ {
639
+ value: {
640
+ carouselRef,
641
+ api,
642
+ opts,
643
+ orientation: orientation || (opts?.axis === "y" ? "vertical" : "horizontal"),
644
+ scrollPrev,
645
+ scrollNext,
646
+ canScrollPrev,
647
+ canScrollNext
648
+ },
649
+ children: /* @__PURE__ */ jsxRuntime.jsx(
650
+ "div",
651
+ {
652
+ ref,
653
+ onKeyDownCapture: handleKeyDown,
654
+ className: cn("relative", className),
655
+ role: "region",
656
+ "aria-roledescription": "carousel",
657
+ ...props,
658
+ children
659
+ }
660
+ )
661
+ }
662
+ );
663
+ }
664
+ );
665
+ Carousel.displayName = "Carousel";
666
+ var CarouselContent = React23__namespace.forwardRef(({ className, ...props }, ref) => {
667
+ const { carouselRef, orientation } = useCarousel();
668
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ref: carouselRef, className: "overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
669
+ "div",
670
+ {
671
+ ref,
672
+ className: cn(
673
+ "flex",
674
+ orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
675
+ className
676
+ ),
677
+ ...props
678
+ }
679
+ ) });
680
+ });
681
+ CarouselContent.displayName = "CarouselContent";
682
+ var CarouselItem = React23__namespace.forwardRef(({ className, ...props }, ref) => {
683
+ const { orientation } = useCarousel();
684
+ return /* @__PURE__ */ jsxRuntime.jsx(
685
+ "div",
686
+ {
687
+ ref,
688
+ role: "group",
689
+ "aria-roledescription": "slide",
690
+ className: cn(
691
+ "min-w-0 shrink-0 grow-0 basis-full",
692
+ orientation === "horizontal" ? "pl-4" : "pt-4",
693
+ className
694
+ ),
695
+ ...props
696
+ }
697
+ );
698
+ });
699
+ CarouselItem.displayName = "CarouselItem";
700
+ var CarouselPrevious = React23__namespace.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
701
+ const { orientation, scrollPrev, canScrollPrev } = useCarousel();
702
+ return /* @__PURE__ */ jsxRuntime.jsxs(
703
+ Button,
704
+ {
705
+ ref,
706
+ variant,
707
+ size,
708
+ className: cn(
709
+ "absolute h-8 w-8 rounded-full",
710
+ orientation === "horizontal" ? "-left-12 top-1/2 -translate-y-1/2" : "-top-12 left-1/2 -translate-x-1/2 rotate-90",
711
+ className
712
+ ),
713
+ disabled: !canScrollPrev,
714
+ onClick: scrollPrev,
715
+ ...props,
716
+ children: [
717
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowLeft, { className: "h-4 w-4" }),
718
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Previous slide" })
719
+ ]
720
+ }
721
+ );
722
+ });
723
+ CarouselPrevious.displayName = "CarouselPrevious";
724
+ var CarouselNext = React23__namespace.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
725
+ const { orientation, scrollNext, canScrollNext } = useCarousel();
726
+ return /* @__PURE__ */ jsxRuntime.jsxs(
727
+ Button,
728
+ {
729
+ ref,
730
+ variant,
731
+ size,
732
+ className: cn(
733
+ "absolute h-8 w-8 rounded-full",
734
+ orientation === "horizontal" ? "-right-12 top-1/2 -translate-y-1/2" : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90",
735
+ className
736
+ ),
737
+ disabled: !canScrollNext,
738
+ onClick: scrollNext,
739
+ ...props,
740
+ children: [
741
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowRight, { className: "h-4 w-4" }),
742
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Next slide" })
743
+ ]
744
+ }
745
+ );
746
+ });
747
+ CarouselNext.displayName = "CarouselNext";
748
+ var Dialog = DialogPrimitive__namespace.Root;
749
+ var DialogTrigger = DialogPrimitive__namespace.Trigger;
750
+ var DialogPortal = DialogPrimitive__namespace.Portal;
751
+ var DialogClose = DialogPrimitive__namespace.Close;
752
+ var DialogOverlay = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
753
+ DialogPrimitive__namespace.Overlay,
754
+ {
755
+ ref,
756
+ className: cn(
757
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
758
+ className
759
+ ),
760
+ ...props
761
+ }
762
+ ));
763
+ DialogOverlay.displayName = DialogPrimitive__namespace.Overlay.displayName;
764
+ var DialogContent = React23__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(DialogPortal, { children: [
765
+ /* @__PURE__ */ jsxRuntime.jsx(DialogOverlay, {}),
766
+ /* @__PURE__ */ jsxRuntime.jsxs(
767
+ DialogPrimitive__namespace.Content,
768
+ {
769
+ ref,
770
+ className: cn(
771
+ "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-border bg-background/85 backdrop-blur-md supports-[backdrop-filter]:bg-background/80 p-6 shadow-2xl duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
772
+ className
773
+ ),
774
+ ...props,
775
+ children: [
776
+ children,
777
+ /* @__PURE__ */ jsxRuntime.jsxs(DialogPrimitive__namespace.Close, { className: "absolute right-4 top-4 rounded-md opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
778
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" }),
779
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
780
+ ] })
781
+ ]
782
+ }
783
+ )
784
+ ] }));
785
+ DialogContent.displayName = DialogPrimitive__namespace.Content.displayName;
786
+ var DialogHeader = ({
787
+ className,
788
+ ...props
789
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
790
+ "div",
791
+ {
792
+ className: cn(
793
+ "flex flex-col space-y-1.5 text-center sm:text-left",
794
+ className
795
+ ),
796
+ ...props
797
+ }
798
+ );
799
+ DialogHeader.displayName = "DialogHeader";
800
+ var DialogFooter = ({
801
+ className,
802
+ ...props
803
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
804
+ "div",
805
+ {
806
+ className: cn(
807
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
808
+ className
809
+ ),
810
+ ...props
811
+ }
812
+ );
813
+ DialogFooter.displayName = "DialogFooter";
814
+ var DialogTitle = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
815
+ DialogPrimitive__namespace.Title,
816
+ {
817
+ ref,
818
+ className: cn(
819
+ "text-lg font-semibold leading-none tracking-tight",
820
+ className
821
+ ),
822
+ ...props
823
+ }
824
+ ));
825
+ DialogTitle.displayName = DialogPrimitive__namespace.Title.displayName;
826
+ var DialogDescription = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
827
+ DialogPrimitive__namespace.Description,
828
+ {
829
+ ref,
830
+ className: cn("text-sm text-muted-foreground", className),
831
+ ...props
832
+ }
833
+ ));
834
+ DialogDescription.displayName = DialogPrimitive__namespace.Description.displayName;
835
+ var Command = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
836
+ cmdk.Command,
837
+ {
838
+ ref,
839
+ className: cn(
840
+ "flex h-full w-full flex-col overflow-hidden rounded-md bg-popover/80 backdrop-blur-md supports-[backdrop-filter]:bg-popover/70 text-popover-foreground",
841
+ className
842
+ ),
843
+ ...props
844
+ }
845
+ ));
846
+ Command.displayName = cmdk.Command.displayName;
847
+ var CommandDialog = ({ children, ...props }) => {
848
+ return /* @__PURE__ */ jsxRuntime.jsx(Dialog, { ...props, children: /* @__PURE__ */ jsxRuntime.jsx(DialogContent, { className: "overflow-hidden p-0", children: /* @__PURE__ */ jsxRuntime.jsx(Command, { className: "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children }) }) });
849
+ };
850
+ var CommandInput = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: [
851
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
852
+ /* @__PURE__ */ jsxRuntime.jsx(
853
+ cmdk.Command.Input,
854
+ {
855
+ ref,
856
+ className: cn(
857
+ "flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
858
+ className
859
+ ),
860
+ ...props
861
+ }
862
+ )
863
+ ] }));
864
+ CommandInput.displayName = cmdk.Command.Input.displayName;
865
+ var CommandList = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
866
+ cmdk.Command.List,
867
+ {
868
+ ref,
869
+ className: cn("max-h-[300px] overflow-y-auto overflow-x-hidden", className),
870
+ ...props
871
+ }
872
+ ));
873
+ CommandList.displayName = cmdk.Command.List.displayName;
874
+ var CommandEmpty = React23__namespace.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(
875
+ cmdk.Command.Empty,
876
+ {
877
+ ref,
878
+ className: "py-6 text-center text-sm",
879
+ ...props
880
+ }
881
+ ));
882
+ CommandEmpty.displayName = cmdk.Command.Empty.displayName;
883
+ var CommandGroup = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
884
+ cmdk.Command.Group,
885
+ {
886
+ ref,
887
+ className: cn(
888
+ "overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",
889
+ className
890
+ ),
891
+ ...props
892
+ }
893
+ ));
894
+ CommandGroup.displayName = cmdk.Command.Group.displayName;
895
+ var CommandSeparator = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
896
+ cmdk.Command.Separator,
897
+ {
898
+ ref,
899
+ className: cn("-mx-1 h-px bg-border", className),
900
+ ...props
901
+ }
902
+ ));
903
+ CommandSeparator.displayName = cmdk.Command.Separator.displayName;
904
+ var CommandItem = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
905
+ cmdk.Command.Item,
906
+ {
907
+ ref,
908
+ className: cn(
909
+ "relative flex cursor-default gap-2 select-none items-center rounded-md px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-primary/15 data-[selected=true]:text-primary data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
910
+ className
911
+ ),
912
+ ...props
913
+ }
914
+ ));
915
+ CommandItem.displayName = cmdk.Command.Item.displayName;
916
+ var CommandShortcut = ({
917
+ className,
918
+ ...props
919
+ }) => {
920
+ return /* @__PURE__ */ jsxRuntime.jsx(
921
+ "span",
922
+ {
923
+ className: cn(
924
+ "ml-auto text-xs tracking-widest text-muted-foreground",
925
+ className
926
+ ),
927
+ ...props
928
+ }
929
+ );
930
+ };
931
+ CommandShortcut.displayName = "CommandShortcut";
932
+ var DropdownMenu = DropdownMenuPrimitive__namespace.Root;
933
+ var DropdownMenuTrigger = DropdownMenuPrimitive__namespace.Trigger;
934
+ var DropdownMenuGroup = DropdownMenuPrimitive__namespace.Group;
935
+ var DropdownMenuPortal = DropdownMenuPrimitive__namespace.Portal;
936
+ var DropdownMenuSub = DropdownMenuPrimitive__namespace.Sub;
937
+ var DropdownMenuRadioGroup = DropdownMenuPrimitive__namespace.RadioGroup;
938
+ var DropdownMenuSubTrigger = React23__namespace.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
939
+ DropdownMenuPrimitive__namespace.SubTrigger,
940
+ {
941
+ ref,
942
+ className: cn(
943
+ "flex cursor-default gap-2 select-none items-center rounded-md px-2 py-1.5 outline-none focus:bg-primary/15 focus:text-primary data-[state=open]:bg-primary/15 data-[state=open]:text-primary [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
944
+ inset && "pl-8",
945
+ className
946
+ ),
947
+ ...props,
948
+ children: [
949
+ children,
950
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "ml-auto" })
951
+ ]
952
+ }
953
+ ));
954
+ DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive__namespace.SubTrigger.displayName;
955
+ var DropdownMenuSubContent = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
956
+ DropdownMenuPrimitive__namespace.SubContent,
957
+ {
958
+ ref,
959
+ className: cn(
960
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-popover/80 backdrop-blur-md supports-[backdrop-filter]:bg-popover/70 p-1 text-popover-foreground shadow-xl data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
961
+ className
962
+ ),
963
+ ...props
964
+ }
965
+ ));
966
+ DropdownMenuSubContent.displayName = DropdownMenuPrimitive__namespace.SubContent.displayName;
967
+ var DropdownMenuContent = React23__namespace.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
968
+ DropdownMenuPrimitive__namespace.Content,
969
+ {
970
+ ref,
971
+ sideOffset,
972
+ className: cn(
973
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-popover/80 backdrop-blur-md supports-[backdrop-filter]:bg-popover/70 p-1 text-popover-foreground shadow-xl",
974
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
975
+ className
976
+ ),
977
+ ...props
978
+ }
979
+ ) }));
980
+ DropdownMenuContent.displayName = DropdownMenuPrimitive__namespace.Content.displayName;
981
+ var DropdownMenuItem = React23__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
982
+ DropdownMenuPrimitive__namespace.Item,
983
+ {
984
+ ref,
985
+ className: cn(
986
+ "relative flex cursor-default select-none items-center gap-2 rounded-md px-2 py-1.5 outline-none transition-colors focus:bg-primary/15 focus:text-primary hover:bg-primary/10 hover:text-primary data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
987
+ inset && "pl-8",
988
+ className
989
+ ),
990
+ ...props
991
+ }
992
+ ));
993
+ DropdownMenuItem.displayName = DropdownMenuPrimitive__namespace.Item.displayName;
994
+ var DropdownMenuCheckboxItem = React23__namespace.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
995
+ DropdownMenuPrimitive__namespace.CheckboxItem,
996
+ {
997
+ ref,
998
+ className: cn(
999
+ "relative flex cursor-default select-none items-center rounded-md py-1.5 pl-8 pr-2 outline-none transition-colors focus:bg-primary/15 focus:text-primary data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1000
+ className
1001
+ ),
1002
+ checked,
1003
+ ...props,
1004
+ children: [
1005
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-4 w-4" }) }) }),
1006
+ children
1007
+ ]
1008
+ }
1009
+ ));
1010
+ DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive__namespace.CheckboxItem.displayName;
1011
+ var DropdownMenuRadioItem = React23__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
1012
+ DropdownMenuPrimitive__namespace.RadioItem,
1013
+ {
1014
+ ref,
1015
+ className: cn(
1016
+ "relative flex cursor-default select-none items-center rounded-md py-1.5 pl-8 pr-2 outline-none transition-colors focus:bg-primary/15 focus:text-primary data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1017
+ className
1018
+ ),
1019
+ ...props,
1020
+ children: [
1021
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Circle, { className: "h-2 w-2 fill-current" }) }) }),
1022
+ children
1023
+ ]
1024
+ }
1025
+ ));
1026
+ DropdownMenuRadioItem.displayName = DropdownMenuPrimitive__namespace.RadioItem.displayName;
1027
+ var DropdownMenuLabel = React23__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1028
+ DropdownMenuPrimitive__namespace.Label,
1029
+ {
1030
+ ref,
1031
+ className: cn(
1032
+ "px-2 py-1.5 font-semibold",
1033
+ inset && "pl-8",
1034
+ className
1035
+ ),
1036
+ ...props
1037
+ }
1038
+ ));
1039
+ DropdownMenuLabel.displayName = DropdownMenuPrimitive__namespace.Label.displayName;
1040
+ var DropdownMenuSeparator = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1041
+ DropdownMenuPrimitive__namespace.Separator,
1042
+ {
1043
+ ref,
1044
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
1045
+ ...props
1046
+ }
1047
+ ));
1048
+ DropdownMenuSeparator.displayName = DropdownMenuPrimitive__namespace.Separator.displayName;
1049
+ var DropdownMenuShortcut = ({
1050
+ className,
1051
+ ...props
1052
+ }) => {
1053
+ return /* @__PURE__ */ jsxRuntime.jsx(
1054
+ "span",
1055
+ {
1056
+ className: cn("ml-auto text-xs tracking-widest opacity-60", className),
1057
+ ...props
1058
+ }
1059
+ );
1060
+ };
1061
+ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
1062
+ var HoverCard = HoverCardPrimitive__namespace.Root;
1063
+ var HoverCardTrigger = HoverCardPrimitive__namespace.Trigger;
1064
+ var HoverCardContent = React23__namespace.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1065
+ HoverCardPrimitive__namespace.Content,
1066
+ {
1067
+ ref,
1068
+ align,
1069
+ sideOffset,
1070
+ className: cn(
1071
+ "z-50 w-64 rounded-md border border-border bg-popover/80 backdrop-blur-md supports-[backdrop-filter]:bg-popover/70 p-4 text-popover-foreground shadow-xl outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-hover-card-content-transform-origin]",
1072
+ className
1073
+ ),
1074
+ ...props
1075
+ }
1076
+ ));
1077
+ HoverCardContent.displayName = HoverCardPrimitive__namespace.Content.displayName;
1078
+ function ItemGroup({ className, ...props }) {
1079
+ return /* @__PURE__ */ jsxRuntime.jsx(
1080
+ "div",
1081
+ {
1082
+ role: "list",
1083
+ "data-slot": "item-group",
1084
+ className: cn("group/item-group flex flex-col", className),
1085
+ ...props
1086
+ }
1087
+ );
1088
+ }
1089
+ function ItemSeparator({
1090
+ className,
1091
+ ...props
1092
+ }) {
1093
+ return /* @__PURE__ */ jsxRuntime.jsx(
1094
+ Separator,
1095
+ {
1096
+ "data-slot": "item-separator",
1097
+ orientation: "horizontal",
1098
+ className: cn("my-0", className),
1099
+ ...props
1100
+ }
1101
+ );
1102
+ }
1103
+ var itemVariants = classVarianceAuthority.cva(
1104
+ "group/item [a]:hover:bg-accent/50 focus-visible:border-ring focus-visible:ring-ring/50 [a]:transition-colors flex flex-wrap items-center rounded-md border border-transparent text-sm outline-none transition-colors duration-100 focus-visible:ring-[3px]",
1105
+ {
1106
+ variants: {
1107
+ variant: {
1108
+ default: "bg-transparent",
1109
+ outline: "border-border",
1110
+ muted: "bg-muted/50"
1111
+ },
1112
+ size: {
1113
+ default: "gap-4 p-4 ",
1114
+ sm: "gap-2.5 px-4 py-3"
1115
+ }
1116
+ },
1117
+ defaultVariants: {
1118
+ variant: "default",
1119
+ size: "default"
1120
+ }
1121
+ }
1122
+ );
1123
+ function Item3({
1124
+ className,
1125
+ variant = "default",
1126
+ size = "default",
1127
+ asChild = false,
1128
+ ...props
1129
+ }) {
1130
+ const Comp = asChild ? reactSlot.Slot : "div";
1131
+ return /* @__PURE__ */ jsxRuntime.jsx(
1132
+ Comp,
1133
+ {
1134
+ "data-slot": "item",
1135
+ "data-variant": variant,
1136
+ "data-size": size,
1137
+ className: cn(itemVariants({ variant, size, className })),
1138
+ ...props
1139
+ }
1140
+ );
1141
+ }
1142
+ var itemMediaVariants = classVarianceAuthority.cva(
1143
+ "flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:translate-y-0.5 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none",
1144
+ {
1145
+ variants: {
1146
+ variant: {
1147
+ default: "bg-transparent",
1148
+ icon: "bg-muted size-8 rounded-sm border [&_svg:not([class*='size-'])]:size-4",
1149
+ image: "size-10 overflow-hidden rounded-sm [&_img]:size-full [&_img]:object-cover"
1150
+ }
1151
+ },
1152
+ defaultVariants: {
1153
+ variant: "default"
1154
+ }
1155
+ }
1156
+ );
1157
+ function ItemMedia({
1158
+ className,
1159
+ variant = "default",
1160
+ ...props
1161
+ }) {
1162
+ return /* @__PURE__ */ jsxRuntime.jsx(
1163
+ "div",
1164
+ {
1165
+ "data-slot": "item-media",
1166
+ "data-variant": variant,
1167
+ className: cn(itemMediaVariants({ variant, className })),
1168
+ ...props
1169
+ }
1170
+ );
1171
+ }
1172
+ function ItemContent({ className, ...props }) {
1173
+ return /* @__PURE__ */ jsxRuntime.jsx(
1174
+ "div",
1175
+ {
1176
+ "data-slot": "item-content",
1177
+ className: cn(
1178
+ "flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none",
1179
+ className
1180
+ ),
1181
+ ...props
1182
+ }
1183
+ );
1184
+ }
1185
+ function ItemTitle({ className, ...props }) {
1186
+ return /* @__PURE__ */ jsxRuntime.jsx(
1187
+ "div",
1188
+ {
1189
+ "data-slot": "item-title",
1190
+ className: cn(
1191
+ "flex w-fit items-center gap-2 text-sm font-medium leading-snug",
1192
+ className
1193
+ ),
1194
+ ...props
1195
+ }
1196
+ );
1197
+ }
1198
+ function ItemDescription({ className, ...props }) {
1199
+ return /* @__PURE__ */ jsxRuntime.jsx(
1200
+ "p",
1201
+ {
1202
+ "data-slot": "item-description",
1203
+ className: cn(
1204
+ "text-muted-foreground line-clamp-2 text-balance text-sm font-normal leading-normal",
1205
+ "[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4",
1206
+ className
1207
+ ),
1208
+ ...props
1209
+ }
1210
+ );
1211
+ }
1212
+ function ItemActions({ className, ...props }) {
1213
+ return /* @__PURE__ */ jsxRuntime.jsx(
1214
+ "div",
1215
+ {
1216
+ "data-slot": "item-actions",
1217
+ className: cn("flex items-center gap-2", className),
1218
+ ...props
1219
+ }
1220
+ );
1221
+ }
1222
+ function ItemHeader({ className, ...props }) {
1223
+ return /* @__PURE__ */ jsxRuntime.jsx(
1224
+ "div",
1225
+ {
1226
+ "data-slot": "item-header",
1227
+ className: cn(
1228
+ "flex basis-full items-center justify-between gap-2",
1229
+ className
1230
+ ),
1231
+ ...props
1232
+ }
1233
+ );
1234
+ }
1235
+ function ItemFooter({ className, ...props }) {
1236
+ return /* @__PURE__ */ jsxRuntime.jsx(
1237
+ "div",
1238
+ {
1239
+ "data-slot": "item-footer",
1240
+ className: cn(
1241
+ "flex basis-full items-center justify-between gap-2",
1242
+ className
1243
+ ),
1244
+ ...props
1245
+ }
1246
+ );
1247
+ }
1248
+ function Kbd({ className, ...props }) {
1249
+ return /* @__PURE__ */ jsxRuntime.jsx(
1250
+ "kbd",
1251
+ {
1252
+ "data-slot": "kbd",
1253
+ className: cn(
1254
+ "bg-muted text-muted-foreground pointer-events-none inline-flex h-5 w-fit min-w-5 select-none items-center justify-center gap-1 rounded-sm px-1 font-sans text-xs font-medium",
1255
+ "[&_svg:not([class*='size-'])]:size-3",
1256
+ "[[data-slot=tooltip-content]_&]:bg-background/20 [[data-slot=tooltip-content]_&]:text-background dark:[[data-slot=tooltip-content]_&]:bg-background/10",
1257
+ className
1258
+ ),
1259
+ ...props
1260
+ }
1261
+ );
1262
+ }
1263
+ function KbdGroup({ className, ...props }) {
1264
+ return /* @__PURE__ */ jsxRuntime.jsx(
1265
+ "kbd",
1266
+ {
1267
+ "data-slot": "kbd-group",
1268
+ className: cn("inline-flex items-center gap-1", className),
1269
+ ...props
1270
+ }
1271
+ );
1272
+ }
1273
+ function MenubarMenu({
1274
+ ...props
1275
+ }) {
1276
+ return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.Menu, { ...props });
1277
+ }
1278
+ function MenubarGroup({
1279
+ ...props
1280
+ }) {
1281
+ return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.Group, { ...props });
1282
+ }
1283
+ function MenubarPortal({
1284
+ ...props
1285
+ }) {
1286
+ return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.Portal, { ...props });
1287
+ }
1288
+ function MenubarRadioGroup({
1289
+ ...props
1290
+ }) {
1291
+ return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.RadioGroup, { ...props });
1292
+ }
1293
+ function MenubarSub({
1294
+ ...props
1295
+ }) {
1296
+ return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.Sub, { "data-slot": "menubar-sub", ...props });
1297
+ }
1298
+ var Menubar = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1299
+ MenubarPrimitive__namespace.Root,
1300
+ {
1301
+ ref,
1302
+ className: cn(
1303
+ "flex h-10 items-center space-x-1 rounded-md border bg-background p-1",
1304
+ className
1305
+ ),
1306
+ ...props
1307
+ }
1308
+ ));
1309
+ Menubar.displayName = MenubarPrimitive__namespace.Root.displayName;
1310
+ var MenubarTrigger = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1311
+ MenubarPrimitive__namespace.Trigger,
1312
+ {
1313
+ ref,
1314
+ className: cn(
1315
+ "flex cursor-default select-none items-center rounded-sm px-3 py-1.5 font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
1316
+ className
1317
+ ),
1318
+ ...props
1319
+ }
1320
+ ));
1321
+ MenubarTrigger.displayName = MenubarPrimitive__namespace.Trigger.displayName;
1322
+ var MenubarSubTrigger = React23__namespace.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
1323
+ MenubarPrimitive__namespace.SubTrigger,
1324
+ {
1325
+ ref,
1326
+ className: cn(
1327
+ "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
1328
+ inset && "pl-8",
1329
+ className
1330
+ ),
1331
+ ...props,
1332
+ children: [
1333
+ children,
1334
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "ml-auto h-4 w-4" })
1335
+ ]
1336
+ }
1337
+ ));
1338
+ MenubarSubTrigger.displayName = MenubarPrimitive__namespace.SubTrigger.displayName;
1339
+ var MenubarSubContent = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1340
+ MenubarPrimitive__namespace.SubContent,
1341
+ {
1342
+ ref,
1343
+ className: cn(
1344
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-menubar-content-transform-origin]",
1345
+ className
1346
+ ),
1347
+ ...props
1348
+ }
1349
+ ));
1350
+ MenubarSubContent.displayName = MenubarPrimitive__namespace.SubContent.displayName;
1351
+ var MenubarContent = React23__namespace.forwardRef(
1352
+ ({ className, align = "start", alignOffset = -4, sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
1353
+ MenubarPrimitive__namespace.Content,
1354
+ {
1355
+ ref,
1356
+ align,
1357
+ alignOffset,
1358
+ sideOffset,
1359
+ className: cn(
1360
+ "z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-menubar-content-transform-origin]",
1361
+ className
1362
+ ),
1363
+ ...props
1364
+ }
1365
+ ) })
1366
+ );
1367
+ MenubarContent.displayName = MenubarPrimitive__namespace.Content.displayName;
1368
+ var MenubarItem = React23__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1369
+ MenubarPrimitive__namespace.Item,
1370
+ {
1371
+ ref,
1372
+ className: cn(
1373
+ "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1374
+ inset && "pl-8",
1375
+ className
1376
+ ),
1377
+ ...props
1378
+ }
1379
+ ));
1380
+ MenubarItem.displayName = MenubarPrimitive__namespace.Item.displayName;
1381
+ var MenubarCheckboxItem = React23__namespace.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
1382
+ MenubarPrimitive__namespace.CheckboxItem,
1383
+ {
1384
+ ref,
1385
+ className: cn(
1386
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1387
+ className
1388
+ ),
1389
+ checked,
1390
+ ...props,
1391
+ children: [
1392
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-4 w-4" }) }) }),
1393
+ children
1394
+ ]
1395
+ }
1396
+ ));
1397
+ MenubarCheckboxItem.displayName = MenubarPrimitive__namespace.CheckboxItem.displayName;
1398
+ var MenubarRadioItem = React23__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
1399
+ MenubarPrimitive__namespace.RadioItem,
1400
+ {
1401
+ ref,
1402
+ className: cn(
1403
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1404
+ className
1405
+ ),
1406
+ ...props,
1407
+ children: [
1408
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Circle, { className: "h-2 w-2 fill-current" }) }) }),
1409
+ children
1410
+ ]
1411
+ }
1412
+ ));
1413
+ MenubarRadioItem.displayName = MenubarPrimitive__namespace.RadioItem.displayName;
1414
+ var MenubarLabel = React23__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1415
+ MenubarPrimitive__namespace.Label,
1416
+ {
1417
+ ref,
1418
+ className: cn(
1419
+ "px-2 py-1.5 font-semibold",
1420
+ inset && "pl-8",
1421
+ className
1422
+ ),
1423
+ ...props
1424
+ }
1425
+ ));
1426
+ MenubarLabel.displayName = MenubarPrimitive__namespace.Label.displayName;
1427
+ var MenubarSeparator = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1428
+ MenubarPrimitive__namespace.Separator,
1429
+ {
1430
+ ref,
1431
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
1432
+ ...props
1433
+ }
1434
+ ));
1435
+ MenubarSeparator.displayName = MenubarPrimitive__namespace.Separator.displayName;
1436
+ var MenubarShortcut = ({
1437
+ className,
1438
+ ...props
1439
+ }) => {
1440
+ return /* @__PURE__ */ jsxRuntime.jsx(
1441
+ "span",
1442
+ {
1443
+ className: cn(
1444
+ "ml-auto text-xs tracking-widest text-muted-foreground",
1445
+ className
1446
+ ),
1447
+ ...props
1448
+ }
1449
+ );
1450
+ };
1451
+ MenubarShortcut.displayname = "MenubarShortcut";
1452
+ var NavigationMenu = React23__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
1453
+ NavigationMenuPrimitive__namespace.Root,
1454
+ {
1455
+ ref,
1456
+ className: cn(
1457
+ "relative z-10 flex max-w-max flex-1 items-center justify-center",
1458
+ className
1459
+ ),
1460
+ ...props,
1461
+ children: [
1462
+ children,
1463
+ /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuViewport, {})
1464
+ ]
1465
+ }
1466
+ ));
1467
+ NavigationMenu.displayName = NavigationMenuPrimitive__namespace.Root.displayName;
1468
+ var NavigationMenuList = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1469
+ NavigationMenuPrimitive__namespace.List,
1470
+ {
1471
+ ref,
1472
+ className: cn(
1473
+ "group flex flex-1 list-none items-center justify-center space-x-1",
1474
+ className
1475
+ ),
1476
+ ...props
1477
+ }
1478
+ ));
1479
+ NavigationMenuList.displayName = NavigationMenuPrimitive__namespace.List.displayName;
1480
+ var NavigationMenuItem = NavigationMenuPrimitive__namespace.Item;
1481
+ var navigationMenuTriggerStyle = classVarianceAuthority.cva(
1482
+ "group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=open]:text-accent-foreground data-[state=open]:bg-accent/50 data-[state=open]:hover:bg-accent data-[state=open]:focus:bg-accent"
1483
+ );
1484
+ var NavigationMenuTrigger = React23__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
1485
+ NavigationMenuPrimitive__namespace.Trigger,
1486
+ {
1487
+ ref,
1488
+ className: cn(navigationMenuTriggerStyle(), "group", className),
1489
+ ...props,
1490
+ children: [
1491
+ children,
1492
+ " ",
1493
+ /* @__PURE__ */ jsxRuntime.jsx(
1494
+ lucideReact.ChevronDown,
1495
+ {
1496
+ className: "relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180",
1497
+ "aria-hidden": "true"
1498
+ }
1499
+ )
1500
+ ]
1501
+ }
1502
+ ));
1503
+ NavigationMenuTrigger.displayName = NavigationMenuPrimitive__namespace.Trigger.displayName;
1504
+ var NavigationMenuContent = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1505
+ NavigationMenuPrimitive__namespace.Content,
1506
+ {
1507
+ ref,
1508
+ className: cn(
1509
+ "left-0 top-0 w-full 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 md:absolute md:w-auto ",
1510
+ className
1511
+ ),
1512
+ ...props
1513
+ }
1514
+ ));
1515
+ NavigationMenuContent.displayName = NavigationMenuPrimitive__namespace.Content.displayName;
1516
+ var NavigationMenuLink = NavigationMenuPrimitive__namespace.Link;
1517
+ var NavigationMenuViewport = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ jsxRuntime.jsx(
1518
+ NavigationMenuPrimitive__namespace.Viewport,
1519
+ {
1520
+ className: cn(
1521
+ "origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",
1522
+ className
1523
+ ),
1524
+ ref,
1525
+ ...props
1526
+ }
1527
+ ) }));
1528
+ NavigationMenuViewport.displayName = NavigationMenuPrimitive__namespace.Viewport.displayName;
1529
+ var NavigationMenuIndicator = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1530
+ NavigationMenuPrimitive__namespace.Indicator,
1531
+ {
1532
+ ref,
1533
+ className: cn(
1534
+ "top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in",
1535
+ className
1536
+ ),
1537
+ ...props,
1538
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" })
1539
+ }
1540
+ ));
1541
+ NavigationMenuIndicator.displayName = NavigationMenuPrimitive__namespace.Indicator.displayName;
1542
+ var Pagination = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
1543
+ "nav",
1544
+ {
1545
+ role: "navigation",
1546
+ "aria-label": "pagination",
1547
+ className: cn("mx-auto flex w-full justify-center", className),
1548
+ ...props
1549
+ }
1550
+ );
1551
+ Pagination.displayName = "Pagination";
1552
+ var PaginationContent = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1553
+ "ul",
1554
+ {
1555
+ ref,
1556
+ className: cn("flex flex-row items-center gap-1", className),
1557
+ ...props
1558
+ }
1559
+ ));
1560
+ PaginationContent.displayName = "PaginationContent";
1561
+ var PaginationItem = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("li", { ref, className: cn("", className), ...props }));
1562
+ PaginationItem.displayName = "PaginationItem";
1563
+ var PaginationLink = ({
1564
+ className,
1565
+ isActive,
1566
+ size = "icon",
1567
+ ...props
1568
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
1569
+ "a",
1570
+ {
1571
+ "aria-current": isActive ? "page" : void 0,
1572
+ className: cn(
1573
+ buttonVariants({
1574
+ variant: isActive ? "outline" : "ghost",
1575
+ size
1576
+ }),
1577
+ className
1578
+ ),
1579
+ ...props
1580
+ }
1581
+ );
1582
+ PaginationLink.displayName = "PaginationLink";
1583
+ var PaginationPrevious = ({
1584
+ className,
1585
+ ...props
1586
+ }) => /* @__PURE__ */ jsxRuntime.jsxs(
1587
+ PaginationLink,
1588
+ {
1589
+ "aria-label": "Go to previous page",
1590
+ size: "default",
1591
+ className: cn("gap-1 pl-2.5", className),
1592
+ ...props,
1593
+ children: [
1594
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { className: "h-4 w-4" }),
1595
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Previous" })
1596
+ ]
1597
+ }
1598
+ );
1599
+ PaginationPrevious.displayName = "PaginationPrevious";
1600
+ var PaginationNext = ({
1601
+ className,
1602
+ ...props
1603
+ }) => /* @__PURE__ */ jsxRuntime.jsxs(
1604
+ PaginationLink,
1605
+ {
1606
+ "aria-label": "Go to next page",
1607
+ size: "default",
1608
+ className: cn("gap-1 pr-2.5", className),
1609
+ ...props,
1610
+ children: [
1611
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Next" }),
1612
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "h-4 w-4" })
1613
+ ]
1614
+ }
1615
+ );
1616
+ PaginationNext.displayName = "PaginationNext";
1617
+ var PaginationEllipsis = ({
1618
+ className,
1619
+ ...props
1620
+ }) => /* @__PURE__ */ jsxRuntime.jsxs(
1621
+ "span",
1622
+ {
1623
+ "aria-hidden": true,
1624
+ className: cn("flex h-9 w-9 items-center justify-center", className),
1625
+ ...props,
1626
+ children: [
1627
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MoreHorizontal, { className: "h-4 w-4" }),
1628
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "More pages" })
1629
+ ]
1630
+ }
1631
+ );
1632
+ PaginationEllipsis.displayName = "PaginationEllipsis";
1633
+ var Popover = PopoverPrimitive__namespace.Root;
1634
+ var PopoverTrigger = PopoverPrimitive__namespace.Trigger;
1635
+ var PopoverContent = React23__namespace.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
1636
+ PopoverPrimitive__namespace.Content,
1637
+ {
1638
+ ref,
1639
+ align,
1640
+ sideOffset,
1641
+ className: cn(
1642
+ "z-50 w-72 rounded-md border border-border bg-popover/80 backdrop-blur-md supports-[backdrop-filter]:bg-popover/70 p-4 text-popover-foreground shadow-xl outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]",
1643
+ className
1644
+ ),
1645
+ ...props
1646
+ }
1647
+ ) }));
1648
+ PopoverContent.displayName = PopoverPrimitive__namespace.Content.displayName;
1649
+ var Progress = React23__namespace.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1650
+ ProgressPrimitive__namespace.Root,
1651
+ {
1652
+ ref,
1653
+ className: cn(
1654
+ "relative h-4 w-full overflow-hidden rounded-full bg-secondary",
1655
+ className
1656
+ ),
1657
+ ...props,
1658
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1659
+ ProgressPrimitive__namespace.Indicator,
1660
+ {
1661
+ className: "h-full w-full flex-1 bg-primary transition-all",
1662
+ style: { transform: `translateX(-${100 - (value || 0)}%)` }
1663
+ }
1664
+ )
1665
+ }
1666
+ ));
1667
+ Progress.displayName = ProgressPrimitive__namespace.Root.displayName;
1668
+ var ResizablePanelGroup = ({
1669
+ className,
1670
+ ...props
1671
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
1672
+ reactResizablePanels.Group,
1673
+ {
1674
+ className: cn(
1675
+ "flex h-full w-full data-[panel-group-direction=vertical]:flex-col",
1676
+ className
1677
+ ),
1678
+ ...props
1679
+ }
1680
+ );
1681
+ var ResizablePanel = reactResizablePanels.Panel;
1682
+ var ResizableHandle = ({
1683
+ withHandle,
1684
+ className,
1685
+ ...props
1686
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
1687
+ reactResizablePanels.Separator,
1688
+ {
1689
+ className: cn(
1690
+ "relative flex items-center justify-center transition-colors",
1691
+ "data-[panel-group-direction=vertical]:h-2 data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:cursor-row-resize",
1692
+ "data-[panel-group-direction=horizontal]:w-2 data-[panel-group-direction=horizontal]:h-full data-[panel-group-direction=horizontal]:cursor-col-resize",
1693
+ "hover:bg-ring/30 focus:bg-ring/30",
1694
+ "focus-visible:outline-none focus-visible:ring-ring focus-visible:ring-offset-3",
1695
+ "[&[data-panel-group-direction=vertical]>div]:rotate-90",
1696
+ className
1697
+ ),
1698
+ ...props,
1699
+ children: withHandle && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "z-10 flex h-3 w-4 items-center justify-center rounded-sm border bg-border", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.GripHorizontal, {}) })
1700
+ }
1701
+ );
1702
+ var ScrollArea = React23__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
1703
+ ScrollAreaPrimitive__namespace.Root,
1704
+ {
1705
+ ref,
1706
+ className: cn("relative overflow-hidden", className),
1707
+ ...props,
1708
+ children: [
1709
+ /* @__PURE__ */ jsxRuntime.jsx(ScrollAreaPrimitive__namespace.Viewport, { className: "h-full w-full rounded-[inherit]", children }),
1710
+ /* @__PURE__ */ jsxRuntime.jsx(ScrollBar, {}),
1711
+ /* @__PURE__ */ jsxRuntime.jsx(ScrollAreaPrimitive__namespace.Corner, {})
1712
+ ]
1713
+ }
1714
+ ));
1715
+ ScrollArea.displayName = ScrollAreaPrimitive__namespace.Root.displayName;
1716
+ var ScrollBar = React23__namespace.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1717
+ ScrollAreaPrimitive__namespace.ScrollAreaScrollbar,
1718
+ {
1719
+ ref,
1720
+ orientation,
1721
+ className: cn(
1722
+ "flex touch-none select-none transition-colors",
1723
+ orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent p-[1px]",
1724
+ orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-[1px]",
1725
+ className
1726
+ ),
1727
+ ...props,
1728
+ children: /* @__PURE__ */ jsxRuntime.jsx(ScrollAreaPrimitive__namespace.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
1729
+ }
1730
+ ));
1731
+ ScrollBar.displayName = ScrollAreaPrimitive__namespace.ScrollAreaScrollbar.displayName;
1732
+ var Sheet = DialogPrimitive__namespace.Root;
1733
+ var SheetTrigger = DialogPrimitive__namespace.Trigger;
1734
+ var SheetClose = DialogPrimitive__namespace.Close;
1735
+ var SheetPortal = DialogPrimitive__namespace.Portal;
1736
+ var SheetOverlay = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1737
+ DialogPrimitive__namespace.Overlay,
1738
+ {
1739
+ className: cn(
1740
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1741
+ className
1742
+ ),
1743
+ ...props,
1744
+ ref
1745
+ }
1746
+ ));
1747
+ SheetOverlay.displayName = DialogPrimitive__namespace.Overlay.displayName;
1748
+ var sheetVariants = classVarianceAuthority.cva(
1749
+ "fixed z-50 gap-4 bg-background/85 backdrop-blur-md supports-[backdrop-filter]:bg-background/80 p-6 shadow-2xl transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
1750
+ {
1751
+ variants: {
1752
+ side: {
1753
+ top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
1754
+ bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
1755
+ left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
1756
+ right: "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"
1757
+ }
1758
+ },
1759
+ defaultVariants: {
1760
+ side: "right"
1761
+ }
1762
+ }
1763
+ );
1764
+ var SheetContent = React23__namespace.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(SheetPortal, { children: [
1765
+ /* @__PURE__ */ jsxRuntime.jsx(SheetOverlay, {}),
1766
+ /* @__PURE__ */ jsxRuntime.jsxs(
1767
+ DialogPrimitive__namespace.Content,
1768
+ {
1769
+ ref,
1770
+ className: cn(sheetVariants({ side }), className),
1771
+ ...props,
1772
+ children: [
1773
+ children,
1774
+ /* @__PURE__ */ jsxRuntime.jsxs(DialogPrimitive__namespace.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
1775
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" }),
1776
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
1777
+ ] })
1778
+ ]
1779
+ }
1780
+ )
1781
+ ] }));
1782
+ SheetContent.displayName = DialogPrimitive__namespace.Content.displayName;
1783
+ var SheetHeader = ({
1784
+ className,
1785
+ ...props
1786
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
1787
+ "div",
1788
+ {
1789
+ className: cn(
1790
+ "flex flex-col space-y-2 text-center sm:text-left",
1791
+ className
1792
+ ),
1793
+ ...props
1794
+ }
1795
+ );
1796
+ SheetHeader.displayName = "SheetHeader";
1797
+ var SheetFooter = ({
1798
+ className,
1799
+ ...props
1800
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
1801
+ "div",
1802
+ {
1803
+ className: cn(
1804
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
1805
+ className
1806
+ ),
1807
+ ...props
1808
+ }
1809
+ );
1810
+ SheetFooter.displayName = "SheetFooter";
1811
+ var SheetTitle = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1812
+ DialogPrimitive__namespace.Title,
1813
+ {
1814
+ ref,
1815
+ className: cn("text-lg font-semibold text-foreground", className),
1816
+ ...props
1817
+ }
1818
+ ));
1819
+ SheetTitle.displayName = DialogPrimitive__namespace.Title.displayName;
1820
+ var SheetDescription = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1821
+ DialogPrimitive__namespace.Description,
1822
+ {
1823
+ ref,
1824
+ className: cn("text-sm text-muted-foreground", className),
1825
+ ...props
1826
+ }
1827
+ ));
1828
+ SheetDescription.displayName = DialogPrimitive__namespace.Description.displayName;
1829
+ var MOBILE_BREAKPOINT = 768;
1830
+ function useIsMobile() {
1831
+ const [isMobile, setIsMobile] = React23__namespace.useState(void 0);
1832
+ React23__namespace.useEffect(() => {
1833
+ const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
1834
+ const onChange = () => {
1835
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
1836
+ };
1837
+ mql.addEventListener("change", onChange);
1838
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
1839
+ return () => mql.removeEventListener("change", onChange);
1840
+ }, []);
1841
+ return !!isMobile;
1842
+ }
1843
+ function Skeleton({
1844
+ className,
1845
+ ...props
1846
+ }) {
1847
+ return /* @__PURE__ */ jsxRuntime.jsx(
1848
+ "div",
1849
+ {
1850
+ className: cn("animate-pulse rounded-md bg-muted", className),
1851
+ ...props
1852
+ }
1853
+ );
1854
+ }
1855
+ var TooltipProvider = TooltipPrimitive__namespace.Provider;
1856
+ var Tooltip = TooltipPrimitive__namespace.Root;
1857
+ var TooltipTrigger = TooltipPrimitive__namespace.Trigger;
1858
+ var TooltipContent = React23__namespace.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1859
+ TooltipPrimitive__namespace.Content,
1860
+ {
1861
+ ref,
1862
+ sideOffset,
1863
+ className: cn(
1864
+ "z-50 overflow-hidden rounded-md border border-border bg-popover/85 backdrop-blur-md supports-[backdrop-filter]:bg-popover/75 px-3 py-1.5 text-popover-foreground shadow-lg animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",
1865
+ className
1866
+ ),
1867
+ ...props
1868
+ }
1869
+ ));
1870
+ TooltipContent.displayName = TooltipPrimitive__namespace.Content.displayName;
1871
+ var SIDEBAR_COOKIE_NAME = "sidebar_state";
1872
+ var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
1873
+ var SIDEBAR_WIDTH = "16rem";
1874
+ var SIDEBAR_WIDTH_MOBILE = "18rem";
1875
+ var SIDEBAR_WIDTH_ICON = "3rem";
1876
+ var SIDEBAR_KEYBOARD_SHORTCUT = "b";
1877
+ var SidebarContext = React23__namespace.createContext(null);
1878
+ function useSidebar() {
1879
+ const context = React23__namespace.useContext(SidebarContext);
1880
+ if (!context) {
1881
+ throw new Error("useSidebar must be used within a SidebarProvider.");
1882
+ }
1883
+ return context;
1884
+ }
1885
+ var SidebarProvider = React23__namespace.forwardRef(
1886
+ ({
1887
+ defaultOpen = true,
1888
+ open: openProp,
1889
+ onOpenChange: setOpenProp,
1890
+ className,
1891
+ style,
1892
+ children,
1893
+ ...props
1894
+ }, ref) => {
1895
+ const isMobile = useIsMobile();
1896
+ const [openMobile, setOpenMobile] = React23__namespace.useState(false);
1897
+ const [_open, _setOpen] = React23__namespace.useState(defaultOpen);
1898
+ const open = openProp ?? _open;
1899
+ const setOpen = React23__namespace.useCallback(
1900
+ (value) => {
1901
+ const openState = typeof value === "function" ? value(open) : value;
1902
+ if (setOpenProp) {
1903
+ setOpenProp(openState);
1904
+ } else {
1905
+ _setOpen(openState);
1906
+ }
1907
+ document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
1908
+ },
1909
+ [setOpenProp, open]
1910
+ );
1911
+ const toggleSidebar = React23__namespace.useCallback(() => {
1912
+ return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
1913
+ }, [isMobile, setOpen, setOpenMobile]);
1914
+ React23__namespace.useEffect(() => {
1915
+ const handleKeyDown = (event) => {
1916
+ if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
1917
+ event.preventDefault();
1918
+ toggleSidebar();
1919
+ }
1920
+ };
1921
+ window.addEventListener("keydown", handleKeyDown);
1922
+ return () => window.removeEventListener("keydown", handleKeyDown);
1923
+ }, [toggleSidebar]);
1924
+ const state = open ? "expanded" : "collapsed";
1925
+ const contextValue = React23__namespace.useMemo(
1926
+ () => ({
1927
+ state,
1928
+ open,
1929
+ setOpen,
1930
+ isMobile,
1931
+ openMobile,
1932
+ setOpenMobile,
1933
+ toggleSidebar
1934
+ }),
1935
+ [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
1936
+ );
1937
+ return /* @__PURE__ */ jsxRuntime.jsx(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsxRuntime.jsx(
1938
+ "div",
1939
+ {
1940
+ style: {
1941
+ "--sidebar-width": SIDEBAR_WIDTH,
1942
+ "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
1943
+ ...style
1944
+ },
1945
+ className: cn(
1946
+ "group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar",
1947
+ className
1948
+ ),
1949
+ ref,
1950
+ ...props,
1951
+ children
1952
+ }
1953
+ ) }) });
1954
+ }
1955
+ );
1956
+ SidebarProvider.displayName = "SidebarProvider";
1957
+ var Sidebar = React23__namespace.forwardRef(
1958
+ ({
1959
+ side = "left",
1960
+ variant = "sidebar",
1961
+ collapsible = "offcanvas",
1962
+ className,
1963
+ children,
1964
+ ...props
1965
+ }, ref) => {
1966
+ const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
1967
+ if (collapsible === "none") {
1968
+ return /* @__PURE__ */ jsxRuntime.jsx(
1969
+ "div",
1970
+ {
1971
+ className: cn(
1972
+ "flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground",
1973
+ className
1974
+ ),
1975
+ ref,
1976
+ ...props,
1977
+ children
1978
+ }
1979
+ );
1980
+ }
1981
+ if (isMobile) {
1982
+ return /* @__PURE__ */ jsxRuntime.jsx(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxRuntime.jsxs(
1983
+ SheetContent,
1984
+ {
1985
+ "data-sidebar": "sidebar",
1986
+ "data-mobile": "true",
1987
+ className: "w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",
1988
+ style: {
1989
+ "--sidebar-width": SIDEBAR_WIDTH_MOBILE
1990
+ },
1991
+ side,
1992
+ children: [
1993
+ /* @__PURE__ */ jsxRuntime.jsxs(SheetHeader, { className: "sr-only", children: [
1994
+ /* @__PURE__ */ jsxRuntime.jsx(SheetTitle, { children: "Sidebar" }),
1995
+ /* @__PURE__ */ jsxRuntime.jsx(SheetDescription, { children: "Displays the mobile sidebar." })
1996
+ ] }),
1997
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full w-full flex-col", children })
1998
+ ]
1999
+ }
2000
+ ) });
2001
+ }
2002
+ return /* @__PURE__ */ jsxRuntime.jsxs(
2003
+ "div",
2004
+ {
2005
+ ref,
2006
+ className: "group peer hidden text-sidebar-foreground md:block",
2007
+ "data-state": state,
2008
+ "data-collapsible": state === "collapsed" ? collapsible : "",
2009
+ "data-variant": variant,
2010
+ "data-side": side,
2011
+ children: [
2012
+ /* @__PURE__ */ jsxRuntime.jsx(
2013
+ "div",
2014
+ {
2015
+ className: cn(
2016
+ "relative w-[--sidebar-width] bg-transparent transition-[width] duration-200 ease-linear",
2017
+ "group-data-[collapsible=offcanvas]:w-0",
2018
+ "group-data-[side=right]:rotate-180",
2019
+ variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]" : "group-data-[collapsible=icon]:w-[--sidebar-width-icon]"
2020
+ )
2021
+ }
2022
+ ),
2023
+ /* @__PURE__ */ jsxRuntime.jsx(
2024
+ "div",
2025
+ {
2026
+ className: cn(
2027
+ "fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] duration-200 ease-linear md:flex",
2028
+ side === "left" ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",
2029
+ // Adjust the padding for floating and inset variants.
2030
+ variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]" : "group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l",
2031
+ className
2032
+ ),
2033
+ ...props,
2034
+ children: /* @__PURE__ */ jsxRuntime.jsx(
2035
+ "div",
2036
+ {
2037
+ "data-sidebar": "sidebar",
2038
+ className: "flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow",
2039
+ children
2040
+ }
2041
+ )
2042
+ }
2043
+ )
2044
+ ]
2045
+ }
2046
+ );
2047
+ }
2048
+ );
2049
+ Sidebar.displayName = "Sidebar";
2050
+ var SidebarTrigger = React23__namespace.forwardRef(({ className, onClick, ...props }, ref) => {
2051
+ const { toggleSidebar } = useSidebar();
2052
+ return /* @__PURE__ */ jsxRuntime.jsxs(
2053
+ Button,
2054
+ {
2055
+ ref,
2056
+ "data-sidebar": "trigger",
2057
+ variant: "ghost",
2058
+ size: "icon",
2059
+ className: cn("h-7 w-7", className),
2060
+ onClick: (event) => {
2061
+ onClick?.(event);
2062
+ toggleSidebar();
2063
+ },
2064
+ ...props,
2065
+ children: [
2066
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.PanelLeft, {}),
2067
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Toggle Sidebar" })
2068
+ ]
2069
+ }
2070
+ );
2071
+ });
2072
+ SidebarTrigger.displayName = "SidebarTrigger";
2073
+ var SidebarRail = React23__namespace.forwardRef(({ className, ...props }, ref) => {
2074
+ const { toggleSidebar } = useSidebar();
2075
+ return /* @__PURE__ */ jsxRuntime.jsx(
2076
+ "button",
2077
+ {
2078
+ ref,
2079
+ "data-sidebar": "rail",
2080
+ "aria-label": "Toggle Sidebar",
2081
+ tabIndex: -1,
2082
+ onClick: toggleSidebar,
2083
+ title: "Toggle Sidebar",
2084
+ className: cn(
2085
+ "absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex",
2086
+ "[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize",
2087
+ "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
2088
+ "group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar",
2089
+ "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
2090
+ "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
2091
+ className
2092
+ ),
2093
+ ...props
2094
+ }
2095
+ );
2096
+ });
2097
+ SidebarRail.displayName = "SidebarRail";
2098
+ var SidebarInset = React23__namespace.forwardRef(({ className, ...props }, ref) => {
2099
+ return /* @__PURE__ */ jsxRuntime.jsx(
2100
+ "main",
2101
+ {
2102
+ ref,
2103
+ className: cn(
2104
+ "relative flex w-full flex-1 flex-col bg-background",
2105
+ "md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow",
2106
+ className
2107
+ ),
2108
+ ...props
2109
+ }
2110
+ );
2111
+ });
2112
+ SidebarInset.displayName = "SidebarInset";
2113
+ var SidebarInput = React23__namespace.forwardRef(({ className, type, ...props }, ref) => {
2114
+ return /* @__PURE__ */ jsxRuntime.jsx(
2115
+ "input",
2116
+ {
2117
+ ref,
2118
+ type,
2119
+ "data-sidebar": "input",
2120
+ className: cn(
2121
+ // mirrors @invana/forms <Input> styling
2122
+ "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
2123
+ "h-8 w-full shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",
2124
+ className
2125
+ ),
2126
+ ...props
2127
+ }
2128
+ );
2129
+ });
2130
+ SidebarInput.displayName = "SidebarInput";
2131
+ var SidebarHeader = React23__namespace.forwardRef(({ className, ...props }, ref) => {
2132
+ return /* @__PURE__ */ jsxRuntime.jsx(
2133
+ "div",
2134
+ {
2135
+ ref,
2136
+ "data-sidebar": "header",
2137
+ className: cn("flex flex-col gap-2 p-2", className),
2138
+ ...props
2139
+ }
2140
+ );
2141
+ });
2142
+ SidebarHeader.displayName = "SidebarHeader";
2143
+ var SidebarFooter = React23__namespace.forwardRef(({ className, ...props }, ref) => {
2144
+ return /* @__PURE__ */ jsxRuntime.jsx(
2145
+ "div",
2146
+ {
2147
+ ref,
2148
+ "data-sidebar": "footer",
2149
+ className: cn("flex flex-col gap-2 p-2", className),
2150
+ ...props
2151
+ }
2152
+ );
2153
+ });
2154
+ SidebarFooter.displayName = "SidebarFooter";
2155
+ var SidebarSeparator = React23__namespace.forwardRef(({ className, ...props }, ref) => {
2156
+ return /* @__PURE__ */ jsxRuntime.jsx(
2157
+ Separator,
2158
+ {
2159
+ ref,
2160
+ "data-sidebar": "separator",
2161
+ className: cn("mx-2 w-auto bg-sidebar-border", className),
2162
+ ...props
2163
+ }
2164
+ );
2165
+ });
2166
+ SidebarSeparator.displayName = "SidebarSeparator";
2167
+ var SidebarContent = React23__namespace.forwardRef(({ className, ...props }, ref) => {
2168
+ return /* @__PURE__ */ jsxRuntime.jsx(
2169
+ "div",
2170
+ {
2171
+ ref,
2172
+ "data-sidebar": "content",
2173
+ className: cn(
2174
+ "flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",
2175
+ className
2176
+ ),
2177
+ ...props
2178
+ }
2179
+ );
2180
+ });
2181
+ SidebarContent.displayName = "SidebarContent";
2182
+ var SidebarGroup = React23__namespace.forwardRef(({ className, ...props }, ref) => {
2183
+ return /* @__PURE__ */ jsxRuntime.jsx(
2184
+ "div",
2185
+ {
2186
+ ref,
2187
+ "data-sidebar": "group",
2188
+ className: cn("relative flex w-full min-w-0 flex-col p-2", className),
2189
+ ...props
2190
+ }
2191
+ );
2192
+ });
2193
+ SidebarGroup.displayName = "SidebarGroup";
2194
+ var SidebarGroupLabel = React23__namespace.forwardRef(({ className, asChild = false, ...props }, ref) => {
2195
+ const Comp = asChild ? reactSlot.Slot : "div";
2196
+ return /* @__PURE__ */ jsxRuntime.jsx(
2197
+ Comp,
2198
+ {
2199
+ ref,
2200
+ "data-sidebar": "group-label",
2201
+ className: cn(
2202
+ "flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
2203
+ "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",
2204
+ className
2205
+ ),
2206
+ ...props
2207
+ }
2208
+ );
2209
+ });
2210
+ SidebarGroupLabel.displayName = "SidebarGroupLabel";
2211
+ var SidebarGroupAction = React23__namespace.forwardRef(({ className, asChild = false, ...props }, ref) => {
2212
+ const Comp = asChild ? reactSlot.Slot : "button";
2213
+ return /* @__PURE__ */ jsxRuntime.jsx(
2214
+ Comp,
2215
+ {
2216
+ ref,
2217
+ "data-sidebar": "group-action",
2218
+ className: cn(
2219
+ "absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
2220
+ // Increases the hit area of the button on mobile.
2221
+ "after:absolute after:-inset-2 after:md:hidden",
2222
+ "group-data-[collapsible=icon]:hidden",
2223
+ className
2224
+ ),
2225
+ ...props
2226
+ }
2227
+ );
2228
+ });
2229
+ SidebarGroupAction.displayName = "SidebarGroupAction";
2230
+ var SidebarGroupContent = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2231
+ "div",
2232
+ {
2233
+ ref,
2234
+ "data-sidebar": "group-content",
2235
+ className: cn("w-full text-sm", className),
2236
+ ...props
2237
+ }
2238
+ ));
2239
+ SidebarGroupContent.displayName = "SidebarGroupContent";
2240
+ var SidebarMenu = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2241
+ "ul",
2242
+ {
2243
+ ref,
2244
+ "data-sidebar": "menu",
2245
+ className: cn("flex w-full min-w-0 flex-col gap-1", className),
2246
+ ...props
2247
+ }
2248
+ ));
2249
+ SidebarMenu.displayName = "SidebarMenu";
2250
+ var SidebarMenuItem = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2251
+ "li",
2252
+ {
2253
+ ref,
2254
+ "data-sidebar": "menu-item",
2255
+ className: cn("group/menu-item relative", className),
2256
+ ...props
2257
+ }
2258
+ ));
2259
+ SidebarMenuItem.displayName = "SidebarMenuItem";
2260
+ var sidebarMenuButtonVariants = classVarianceAuthority.cva(
2261
+ "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
2262
+ {
2263
+ variants: {
2264
+ variant: {
2265
+ default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
2266
+ outline: "bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"
2267
+ },
2268
+ size: {
2269
+ default: "h-8",
2270
+ sm: "h-7 text-sm",
2271
+ lg: "h-12 text-lg group-data-[collapsible=icon]:!p-0"
2272
+ }
2273
+ },
2274
+ defaultVariants: {
2275
+ variant: "default",
2276
+ size: "default"
2277
+ }
2278
+ }
2279
+ );
2280
+ var SidebarMenuButton = React23__namespace.forwardRef(
2281
+ ({
2282
+ asChild = false,
2283
+ isActive = false,
2284
+ variant = "default",
2285
+ size = "default",
2286
+ tooltip,
2287
+ className,
2288
+ ...props
2289
+ }, ref) => {
2290
+ const Comp = asChild ? reactSlot.Slot : "button";
2291
+ const { isMobile, state } = useSidebar();
2292
+ const button = /* @__PURE__ */ jsxRuntime.jsx(
2293
+ Comp,
2294
+ {
2295
+ ref,
2296
+ "data-sidebar": "menu-button",
2297
+ "data-size": size,
2298
+ "data-active": isActive,
2299
+ className: cn(sidebarMenuButtonVariants({ variant, size }), className),
2300
+ ...props
2301
+ }
2302
+ );
2303
+ if (!tooltip) {
2304
+ return button;
2305
+ }
2306
+ if (typeof tooltip === "string") {
2307
+ tooltip = {
2308
+ children: tooltip
2309
+ };
2310
+ }
2311
+ return /* @__PURE__ */ jsxRuntime.jsxs(Tooltip, { children: [
2312
+ /* @__PURE__ */ jsxRuntime.jsx(TooltipTrigger, { asChild: true, children: button }),
2313
+ /* @__PURE__ */ jsxRuntime.jsx(
2314
+ TooltipContent,
2315
+ {
2316
+ side: "right",
2317
+ align: "center",
2318
+ hidden: state !== "collapsed" || isMobile,
2319
+ ...tooltip
2320
+ }
2321
+ )
2322
+ ] });
2323
+ }
2324
+ );
2325
+ SidebarMenuButton.displayName = "SidebarMenuButton";
2326
+ var SidebarMenuAction = React23__namespace.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
2327
+ const Comp = asChild ? reactSlot.Slot : "button";
2328
+ return /* @__PURE__ */ jsxRuntime.jsx(
2329
+ Comp,
2330
+ {
2331
+ ref,
2332
+ "data-sidebar": "menu-action",
2333
+ className: cn(
2334
+ "absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0",
2335
+ // Increases the hit area of the button on mobile.
2336
+ "after:absolute after:-inset-2 after:md:hidden",
2337
+ "peer-data-[size=sm]/menu-button:top-1",
2338
+ "peer-data-[size=default]/menu-button:top-1.5",
2339
+ "peer-data-[size=lg]/menu-button:top-2.5",
2340
+ "group-data-[collapsible=icon]:hidden",
2341
+ showOnHover && "group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0",
2342
+ className
2343
+ ),
2344
+ ...props
2345
+ }
2346
+ );
2347
+ });
2348
+ SidebarMenuAction.displayName = "SidebarMenuAction";
2349
+ var SidebarMenuBadge = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2350
+ "div",
2351
+ {
2352
+ ref,
2353
+ "data-sidebar": "menu-badge",
2354
+ className: cn(
2355
+ "pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground",
2356
+ "peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground",
2357
+ "peer-data-[size=sm]/menu-button:top-1",
2358
+ "peer-data-[size=default]/menu-button:top-1.5",
2359
+ "peer-data-[size=lg]/menu-button:top-2.5",
2360
+ "group-data-[collapsible=icon]:hidden",
2361
+ className
2362
+ ),
2363
+ ...props
2364
+ }
2365
+ ));
2366
+ SidebarMenuBadge.displayName = "SidebarMenuBadge";
2367
+ var SidebarMenuSkeleton = React23__namespace.forwardRef(({ className, showIcon = false, ...props }, ref) => {
2368
+ const width = React23__namespace.useMemo(() => {
2369
+ return `${Math.floor(Math.random() * 40) + 50}%`;
2370
+ }, []);
2371
+ return /* @__PURE__ */ jsxRuntime.jsxs(
2372
+ "div",
2373
+ {
2374
+ ref,
2375
+ "data-sidebar": "menu-skeleton",
2376
+ className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
2377
+ ...props,
2378
+ children: [
2379
+ showIcon && /* @__PURE__ */ jsxRuntime.jsx(
2380
+ Skeleton,
2381
+ {
2382
+ className: "size-4 rounded-md",
2383
+ "data-sidebar": "menu-skeleton-icon"
2384
+ }
2385
+ ),
2386
+ /* @__PURE__ */ jsxRuntime.jsx(
2387
+ Skeleton,
2388
+ {
2389
+ className: "h-4 max-w-[--skeleton-width] flex-1",
2390
+ "data-sidebar": "menu-skeleton-text",
2391
+ style: {
2392
+ "--skeleton-width": width
2393
+ }
2394
+ }
2395
+ )
2396
+ ]
2397
+ }
2398
+ );
2399
+ });
2400
+ SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
2401
+ var SidebarMenuSub = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2402
+ "ul",
2403
+ {
2404
+ ref,
2405
+ "data-sidebar": "menu-sub",
2406
+ className: cn(
2407
+ "mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5",
2408
+ "group-data-[collapsible=icon]:hidden",
2409
+ className
2410
+ ),
2411
+ ...props
2412
+ }
2413
+ ));
2414
+ SidebarMenuSub.displayName = "SidebarMenuSub";
2415
+ var SidebarMenuSubItem = React23__namespace.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("li", { ref, ...props }));
2416
+ SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
2417
+ var SidebarMenuSubButton = React23__namespace.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
2418
+ const Comp = asChild ? reactSlot.Slot : "a";
2419
+ return /* @__PURE__ */ jsxRuntime.jsx(
2420
+ Comp,
2421
+ {
2422
+ ref,
2423
+ "data-sidebar": "menu-sub-button",
2424
+ "data-size": size,
2425
+ "data-active": isActive,
2426
+ className: cn(
2427
+ "flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground 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 [&>svg]:text-sidebar-accent-foreground",
2428
+ "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",
2429
+ size === "sm" && "text-sm",
2430
+ size === "md" && "text-lg",
2431
+ "group-data-[collapsible=icon]:hidden",
2432
+ className
2433
+ ),
2434
+ ...props
2435
+ }
2436
+ );
2437
+ });
2438
+ SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
2439
+ var Toaster = ({ ...props }) => {
2440
+ return /* @__PURE__ */ jsxRuntime.jsx(
2441
+ sonner.Toaster,
2442
+ {
2443
+ className: cn("toaster group", props.className),
2444
+ icons: {
2445
+ success: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleCheckIcon, { className: "size-4 text-green-500" }),
2446
+ info: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.InfoIcon, { className: "size-4 text-blue-500" }),
2447
+ warning: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.TriangleAlertIcon, { className: "size-4 text-yellow-500" }),
2448
+ error: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.OctagonXIcon, { className: "size-4 text-red-500" }),
2449
+ loading: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2Icon, { className: "size-4 animate-spin text-blue-500" })
2450
+ },
2451
+ toastOptions: {
2452
+ classNames: {
2453
+ toast: cn(
2454
+ "group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground",
2455
+ "group-[.toaster]:border-border group-[.toaster]:shadow-lg"
2456
+ ),
2457
+ description: "group-[.toast]:text-muted-foreground",
2458
+ actionButton: cn(
2459
+ "group-[.toast]:bg-primary group-[.toast]:text-primary-foreground"
2460
+ ),
2461
+ cancelButton: cn(
2462
+ "group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"
2463
+ ),
2464
+ success: "group-[.toast]:border-green-500/50 group-[.toast]:bg-green-500/10",
2465
+ error: "group-[.toast]:border-red-500/50 group-[.toast]:bg-red-500/10",
2466
+ warning: "group-[.toast]:border-yellow-500/50 group-[.toast]:bg-yellow-500/10",
2467
+ info: "group-[.toast]:border-blue-500/50 group-[.toast]:bg-blue-500/10"
2468
+ },
2469
+ ...props.toastOptions
2470
+ },
2471
+ ...props
2472
+ }
2473
+ );
2474
+ };
2475
+ function Spinner({ className, ...props }) {
2476
+ return /* @__PURE__ */ jsxRuntime.jsx(
2477
+ lucideReact.Loader2Icon,
2478
+ {
2479
+ role: "status",
2480
+ "aria-label": "Loading",
2481
+ className: cn("size-4 animate-spin", className),
2482
+ ...props
2483
+ }
2484
+ );
2485
+ }
2486
+ var Table = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative w-full overflow-auto border rounded-md", children: /* @__PURE__ */ jsxRuntime.jsx(
2487
+ "table",
2488
+ {
2489
+ ref,
2490
+ className: cn("w-full caption-bottom text-sm", className),
2491
+ ...props
2492
+ }
2493
+ ) }));
2494
+ Table.displayName = "Table";
2495
+ var TableHeader = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
2496
+ TableHeader.displayName = "TableHeader";
2497
+ var TableBody = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2498
+ "tbody",
2499
+ {
2500
+ ref,
2501
+ className: cn("[&_tr:last-child]:border-0", className),
2502
+ ...props
2503
+ }
2504
+ ));
2505
+ TableBody.displayName = "TableBody";
2506
+ var TableFooter = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2507
+ "tfoot",
2508
+ {
2509
+ ref,
2510
+ className: cn(
2511
+ "border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",
2512
+ className
2513
+ ),
2514
+ ...props
2515
+ }
2516
+ ));
2517
+ TableFooter.displayName = "TableFooter";
2518
+ var TableRow = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2519
+ "tr",
2520
+ {
2521
+ ref,
2522
+ className: cn(
2523
+ "border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",
2524
+ className
2525
+ ),
2526
+ ...props
2527
+ }
2528
+ ));
2529
+ TableRow.displayName = "TableRow";
2530
+ var TableHead = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2531
+ "th",
2532
+ {
2533
+ ref,
2534
+ className: cn(
2535
+ "h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
2536
+ className
2537
+ ),
2538
+ ...props
2539
+ }
2540
+ ));
2541
+ TableHead.displayName = "TableHead";
2542
+ var TableCell = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2543
+ "td",
2544
+ {
2545
+ ref,
2546
+ className: cn(
2547
+ "p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
2548
+ className
2549
+ ),
2550
+ ...props
2551
+ }
2552
+ ));
2553
+ TableCell.displayName = "TableCell";
2554
+ var TableCaption = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2555
+ "caption",
2556
+ {
2557
+ ref,
2558
+ className: cn("mt-4 text-muted-foreground", className),
2559
+ ...props
2560
+ }
2561
+ ));
2562
+ TableCaption.displayName = "TableCaption";
2563
+ var Tabs = TabsPrimitive__namespace.Root;
2564
+ var TabsList = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2565
+ TabsPrimitive__namespace.List,
2566
+ {
2567
+ ref,
2568
+ className: cn(
2569
+ "inline-flex items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",
2570
+ className
2571
+ ),
2572
+ ...props
2573
+ }
2574
+ ));
2575
+ TabsList.displayName = TabsPrimitive__namespace.List.displayName;
2576
+ var TabsTrigger = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2577
+ TabsPrimitive__namespace.Trigger,
2578
+ {
2579
+ ref,
2580
+ className: cn(
2581
+ "inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 font-medium ring-offset-background transition-colors text-muted-foreground hover:text-foreground hover:bg-background/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-primary/15 data-[state=active]:text-primary data-[state=active]:ring-1 data-[state=active]:ring-primary/25 data-[state=active]:shadow-sm",
2582
+ className
2583
+ ),
2584
+ ...props
2585
+ }
2586
+ ));
2587
+ TabsTrigger.displayName = TabsPrimitive__namespace.Trigger.displayName;
2588
+ var TabsContent = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2589
+ TabsPrimitive__namespace.Content,
2590
+ {
2591
+ ref,
2592
+ className: cn(
2593
+ "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
2594
+ className
2595
+ ),
2596
+ ...props
2597
+ }
2598
+ ));
2599
+ TabsContent.displayName = TabsPrimitive__namespace.Content.displayName;
2600
+ var toggleVariants = classVarianceAuthority.cva(
2601
+ "inline-flex items-center justify-center rounded-md font-medium ring-offset-background transition-colors text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-primary/15 data-[state=on]:text-primary data-[state=on]:ring-1 data-[state=on]:ring-primary/25 data-[state=on]:shadow-sm [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 gap-2",
2602
+ {
2603
+ variants: {
2604
+ variant: {
2605
+ default: "bg-transparent",
2606
+ outline: "border border-input bg-transparent hover:bg-muted hover:text-foreground data-[state=on]:border-primary/30"
2607
+ },
2608
+ size: {
2609
+ default: "h-10 px-3 min-w-10",
2610
+ sm: "h-9 px-2.5 min-w-9",
2611
+ lg: "h-11 px-5 min-w-11"
2612
+ }
2613
+ },
2614
+ defaultVariants: {
2615
+ variant: "default",
2616
+ size: "default"
2617
+ }
2618
+ }
2619
+ );
2620
+ var Toggle = React23__namespace.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2621
+ TogglePrimitive__namespace.Root,
2622
+ {
2623
+ ref,
2624
+ className: cn(toggleVariants({ variant, size, className })),
2625
+ ...props
2626
+ }
2627
+ ));
2628
+ Toggle.displayName = TogglePrimitive__namespace.Root.displayName;
2629
+ var ToggleGroupContext = React23__namespace.createContext({
2630
+ size: "default",
2631
+ variant: "default"
2632
+ });
2633
+ var ToggleGroup = React23__namespace.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2634
+ ToggleGroupPrimitive__namespace.Root,
2635
+ {
2636
+ ref,
2637
+ className: cn("flex items-center justify-center gap-1", className),
2638
+ ...props,
2639
+ children: /* @__PURE__ */ jsxRuntime.jsx(ToggleGroupContext.Provider, { value: { variant, size }, children })
2640
+ }
2641
+ ));
2642
+ ToggleGroup.displayName = ToggleGroupPrimitive__namespace.Root.displayName;
2643
+ var ToggleGroupItem = React23__namespace.forwardRef(({ className, children, variant, size, ...props }, ref) => {
2644
+ const context = React23__namespace.useContext(ToggleGroupContext);
2645
+ return /* @__PURE__ */ jsxRuntime.jsx(
2646
+ ToggleGroupPrimitive__namespace.Item,
2647
+ {
2648
+ ref,
2649
+ className: cn(
2650
+ toggleVariants({
2651
+ variant: context.variant || variant,
2652
+ size: context.size || size
2653
+ }),
2654
+ className
2655
+ ),
2656
+ ...props,
2657
+ children
2658
+ }
2659
+ );
2660
+ });
2661
+ ToggleGroupItem.displayName = ToggleGroupPrimitive__namespace.Item.displayName;
2662
+ function ButtonWithTooltip(props) {
2663
+ return /* @__PURE__ */ jsxRuntime.jsx(TooltipProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs(Tooltip, { delayDuration: 0, children: [
2664
+ /* @__PURE__ */ jsxRuntime.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", className: cn("hover:bg-transparent", props.className), ...props, children: props.children }) }),
2665
+ /* @__PURE__ */ jsxRuntime.jsx(TooltipContent, { children: props.tooltip })
2666
+ ] }) });
2667
+ }
2668
+ var ErrorBoundary = class extends React23.Component {
2669
+ constructor(props) {
2670
+ super(props);
2671
+ this.state = { hasError: false };
2672
+ }
2673
+ static getDerivedStateFromError(_) {
2674
+ return { hasError: true };
2675
+ }
2676
+ componentDidCatch(error, errorInfo) {
2677
+ console.error("ErrorBoundary caught an error", error, errorInfo);
2678
+ }
2679
+ render() {
2680
+ if (this.state.hasError) {
2681
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col items-center justify-center h-full w-full text-sm", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-center", children: [
2682
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Frown, { className: "mr-1 h-4" }),
2683
+ "Oops ! something went wrong."
2684
+ ] }) });
2685
+ }
2686
+ return this.props.children;
2687
+ }
2688
+ };
2689
+ var MenuItem = ({
2690
+ label,
2691
+ icon: Icon,
2692
+ shortcut,
2693
+ children,
2694
+ className,
2695
+ level = 0,
2696
+ href,
2697
+ onClick
2698
+ }) => {
2699
+ const hasChildren = children && children.length > 0;
2700
+ const ButtonOrLink = href ? "a" : "button";
2701
+ const clickTrigger = href ? { href } : { onClick };
2702
+ return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "relative group/item", children: [
2703
+ /* @__PURE__ */ jsxRuntime.jsxs(
2704
+ ButtonOrLink,
2705
+ {
2706
+ ...clickTrigger,
2707
+ className: cn(
2708
+ "flex w-full items-center justify-between px-4 py-2 ",
2709
+ "hover:bg-accent hover:text-accent-foreground",
2710
+ "focus-visible:bg-accent focus-visible:text-accent-foreground focus-visible:outline-none",
2711
+ className,
2712
+ level === 0 ? "font-medium" : "font-normal"
2713
+ // "group-hover/item:bg-accent/50"
2714
+ ),
2715
+ role: hasChildren ? "menuitem" : void 0,
2716
+ "aria-haspopup": hasChildren ? "true" : void 0,
2717
+ "aria-expanded": hasChildren ? "true" : void 0,
2718
+ children: [
2719
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-2", children: [
2720
+ Icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-4 w-4" }),
2721
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: label })
2722
+ ] }),
2723
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-2", children: [
2724
+ shortcut && /* @__PURE__ */ jsxRuntime.jsx("kbd", { className: "pointer-events-none inline-flex h-5 select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium text-muted-foreground opacity-100", children: shortcut }),
2725
+ hasChildren && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "h-4 w-4" })
2726
+ ] })
2727
+ ]
2728
+ }
2729
+ ),
2730
+ hasChildren && /* @__PURE__ */ jsxRuntime.jsx(
2731
+ "ul",
2732
+ {
2733
+ className: cn(
2734
+ "absolute min-w-[240px] border p-1 bg-card text-card-foreground shadow-md",
2735
+ "invisible opacity-0 translate-x-2",
2736
+ "group-hover/item:visible group-hover/item:opacity-100 group-hover/item:translate-x-0",
2737
+ "transition-all duration-150 ease-in-out",
2738
+ level === 0 ? "left-full top-0" : "left-full top-0"
2739
+ ),
2740
+ style: {
2741
+ zIndex: 50 + level
2742
+ },
2743
+ role: "menu",
2744
+ children: children.map((item) => /* @__PURE__ */ jsxRuntime.jsx(MenuItem, { ...item, level: level + 1 }, item.id))
2745
+ }
2746
+ )
2747
+ ] });
2748
+ };
2749
+ var NavBase = ({ className = "", orientation, sections }) => {
2750
+ const isVertical = orientation === "vertical";
2751
+ const containerClass = isVertical ? `flex flex-col items-center h-full ${className}` : `flex items-center w-full ${className}`;
2752
+ const sectionWrapperClass = isVertical ? "flex flex-col items-center gap-1" : "flex items-center gap-1 ";
2753
+ return /* @__PURE__ */ jsxRuntime.jsxs("nav", { className: containerClass, children: [
2754
+ sections.start?.content && /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${sectionWrapperClass} ${sections.start.className || ""}`, children: sections.start.content }),
2755
+ sections.center?.content ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex-1 ${isVertical ? "" : "flex justify-center items-center gap-1"} ${sections.center.className || ""}`, children: sections.center.content }) : (
2756
+ // Empty spacer to push end section to the bottom/right
2757
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1" })
2758
+ ),
2759
+ sections.end?.content && /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${sectionWrapperClass} ${isVertical ? "" : "ml-auto"} ${sections.end.className || ""}`, children: sections.end.content })
2760
+ ] });
2761
+ };
2762
+ var NavHorizontalItems = ({ items }) => {
2763
+ const [activeItem, setActiveItem] = React23__namespace.default.useState(null);
2764
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(React23__namespace.default.Fragment, { children: [
2765
+ /* @__PURE__ */ jsxRuntime.jsxs(Tooltip, { children: [
2766
+ /* @__PURE__ */ jsxRuntime.jsx(TooltipTrigger, { asChild: true, children: item.href ? /* @__PURE__ */ jsxRuntime.jsxs(
2767
+ "a",
2768
+ {
2769
+ href: item.href,
2770
+ onClick: () => setActiveItem(item.name),
2771
+ className: `flex border-0 items-center justify-center gap-2
2772
+ transition-colors rounded-md h-full whitespace-nowrap
2773
+ hover:bg-muted hover:text-foreground ${item.label ? "px-3" : "px-2"} ${item.className || ""}
2774
+ ${activeItem === item.name ? "bg-primary/15 text-primary ring-1 ring-primary/25" : ""}`,
2775
+ children: [
2776
+ /* @__PURE__ */ jsxRuntime.jsx(
2777
+ item.icon,
2778
+ {
2779
+ strokeWidth: item.iconStroke || 2,
2780
+ className: item.iconClassName || "w-4 h-4 flex-shrink-0"
2781
+ }
2782
+ ),
2783
+ item.label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: item.label })
2784
+ ]
2785
+ }
2786
+ ) : item.onClick ? /* @__PURE__ */ jsxRuntime.jsxs(
2787
+ Button,
2788
+ {
2789
+ size: item.label ? "sm" : "icon",
2790
+ variant: "ghost",
2791
+ onClick: () => {
2792
+ if (item.onClick) item.onClick();
2793
+ setActiveItem(item.name === activeItem ? null : item.name);
2794
+ },
2795
+ className: `h-full gap-2 whitespace-nowrap ${item.label ? "w-auto px-3" : ""} ${item.className || ""}
2796
+ ${activeItem === item.name ? ` ${item?.activeClass || ""}` : ""}`,
2797
+ children: [
2798
+ /* @__PURE__ */ jsxRuntime.jsx(
2799
+ item.icon,
2800
+ {
2801
+ strokeWidth: item.iconStroke || 2,
2802
+ className: item.iconClassName || "w-4 h-4 flex-shrink-0"
2803
+ }
2804
+ ),
2805
+ item.label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: item.label })
2806
+ ]
2807
+ }
2808
+ ) : /* @__PURE__ */ jsxRuntime.jsxs(
2809
+ "div",
2810
+ {
2811
+ className: `flex border-0 items-center justify-center gap-2 h-full whitespace-nowrap
2812
+ transition-colors rounded-md ${item.label ? "px-3" : "px-2"} ${item.className || ""}
2813
+ ${activeItem === item.name ? "bg-primary/15 text-primary ring-1 ring-primary/25" : ""}`,
2814
+ children: [
2815
+ /* @__PURE__ */ jsxRuntime.jsx(
2816
+ item.icon,
2817
+ {
2818
+ strokeWidth: item.iconStroke || 2,
2819
+ className: item.iconClassName || "w-4 h-4 flex-shrink-0"
2820
+ }
2821
+ ),
2822
+ item.label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: item.label })
2823
+ ]
2824
+ }
2825
+ ) }),
2826
+ /* @__PURE__ */ jsxRuntime.jsx(TooltipContent, { side: item.tooltipSide || "bottom", children: item.tooltip || item.name })
2827
+ ] }),
2828
+ item.showSeperator && /* @__PURE__ */ jsxRuntime.jsx(Separator, { orientation: "vertical", className: "h-4" })
2829
+ ] }, item.key || item.name)) });
2830
+ };
2831
+ var NavHorizontal = ({
2832
+ left,
2833
+ leftNavItems,
2834
+ center,
2835
+ centerNavItems,
2836
+ right,
2837
+ rightNavItems,
2838
+ className = ""
2839
+ }) => {
2840
+ return /* @__PURE__ */ jsxRuntime.jsx(
2841
+ NavBase,
2842
+ {
2843
+ orientation: "horizontal",
2844
+ className,
2845
+ sections: {
2846
+ start: left || leftNavItems ? {
2847
+ content: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2848
+ left,
2849
+ leftNavItems && /* @__PURE__ */ jsxRuntime.jsx(NavHorizontalItems, { items: leftNavItems })
2850
+ ] }),
2851
+ className: "text-foreground"
2852
+ } : void 0,
2853
+ center: center || centerNavItems ? {
2854
+ content: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2855
+ center,
2856
+ centerNavItems && /* @__PURE__ */ jsxRuntime.jsx(NavHorizontalItems, { items: centerNavItems })
2857
+ ] })
2858
+ } : void 0,
2859
+ end: right || rightNavItems ? {
2860
+ content: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2861
+ rightNavItems && /* @__PURE__ */ jsxRuntime.jsx(NavHorizontalItems, { items: rightNavItems }),
2862
+ right
2863
+ ] })
2864
+ } : void 0
2865
+ }
2866
+ }
2867
+ );
2868
+ };
2869
+ var NavVerticalItems = ({ items }) => {
2870
+ const [activeItem, setActiveItem] = React23__namespace.default.useState(null);
2871
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(React23__namespace.default.Fragment, { children: [
2872
+ /* @__PURE__ */ jsxRuntime.jsxs(Tooltip, { children: [
2873
+ /* @__PURE__ */ jsxRuntime.jsx(TooltipTrigger, { asChild: true, children: item.href ? /* @__PURE__ */ jsxRuntime.jsx(
2874
+ "a",
2875
+ {
2876
+ href: item.href,
2877
+ onClick: () => setActiveItem(item.name),
2878
+ className: ` flex border-0 items-center justify-center
2879
+ transition-colors rounded-md
2880
+ hover:text-primary/80 px-2 py-2 ${item.className || ""}
2881
+ ${activeItem === item.name ? "bg-accent text-accent-foreground" : ""}`,
2882
+ children: /* @__PURE__ */ jsxRuntime.jsx(item.icon, { strokeWidth: item.iconStroke ? item.iconStroke : 2, className: item.iconClassName ? item.iconClassName : "w-5 h-5" })
2883
+ }
2884
+ ) : item.onClick ? /* @__PURE__ */ jsxRuntime.jsx(
2885
+ Button,
2886
+ {
2887
+ size: "nav-icon",
2888
+ variant: "ghost",
2889
+ onClick: () => {
2890
+ if (item.onClick) item.onClick();
2891
+ setActiveItem(item.name === activeItem ? null : item.name);
2892
+ },
2893
+ className: `${item.className || ""}
2894
+ ${activeItem === item.name ? ` ${item?.activeClass || ""}` : ""}`,
2895
+ children: /* @__PURE__ */ jsxRuntime.jsx(item.icon, { strokeWidth: item.iconStroke ? item.iconStroke : 2, className: item.iconClassName ? item.iconClassName : "w-5 h-5" })
2896
+ }
2897
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
2898
+ "div",
2899
+ {
2900
+ className: ` flex border-0 items-center justify-center
2901
+ transition-colors rounded-md px-2 py-2 ${item.className || ""}
2902
+ ${activeItem === item.name ? "bg-accent text-accent-foreground" : ""}`,
2903
+ children: /* @__PURE__ */ jsxRuntime.jsx(item.icon, { strokeWidth: item.iconStroke ? item.iconStroke : 2, className: item.iconClassName ? item.iconClassName : "w-5 h-5" })
2904
+ }
2905
+ ) }),
2906
+ /* @__PURE__ */ jsxRuntime.jsx(TooltipContent, { side: item.tooltipSide ? item.tooltipSide : "right", children: item.tooltip || item.name })
2907
+ ] }, item.name),
2908
+ item.showSeperator && /* @__PURE__ */ jsxRuntime.jsx(Separator, {})
2909
+ ] }, item.name)) });
2910
+ };
2911
+ var NavVertical = ({
2912
+ className = "",
2913
+ top,
2914
+ topNavItems,
2915
+ middle,
2916
+ bottom,
2917
+ bottomNavItems
2918
+ }) => {
2919
+ return /* @__PURE__ */ jsxRuntime.jsx(
2920
+ NavBase,
2921
+ {
2922
+ orientation: "vertical",
2923
+ className: `w-[45px] h-full flex flex-col items-center ${className}`,
2924
+ sections: {
2925
+ start: top || topNavItems ? {
2926
+ content: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2927
+ top,
2928
+ topNavItems && /* @__PURE__ */ jsxRuntime.jsx(NavVerticalItems, { items: topNavItems })
2929
+ ] })
2930
+ } : void 0,
2931
+ center: middle ? { content: middle } : void 0,
2932
+ end: bottom || bottomNavItems ? {
2933
+ content: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2934
+ bottomNavItems && /* @__PURE__ */ jsxRuntime.jsx(NavVerticalItems, { items: bottomNavItems }),
2935
+ bottom
2936
+ ] })
2937
+ } : void 0
2938
+ }
2939
+ }
2940
+ );
2941
+ };
2942
+ var NestedMenu = (props) => {
2943
+ return /* @__PURE__ */ jsxRuntime.jsx(
2944
+ "nav",
2945
+ {
2946
+ className: cn("w-[220px] !py-0 border bg-card text-card-foreground shadow-sm", props.className),
2947
+ role: "menubar",
2948
+ children: /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-0.5 p-0", role: "menu", children: props.menuItems.map((item) => /* @__PURE__ */ jsxRuntime.jsx(MenuItem, { ...item, className: "px-3 py-1.5" }, item.id)) })
2949
+ }
2950
+ );
2951
+ };
2952
+ function PanelContent({
2953
+ title,
2954
+ titleText,
2955
+ children,
2956
+ onClose,
2957
+ showClose,
2958
+ headerClassName,
2959
+ bodyClassName,
2960
+ footerContent,
2961
+ footerClassName,
2962
+ closeIcon
2963
+ }) {
2964
+ return /* @__PURE__ */ jsxRuntime.jsx(ErrorBoundary, { children: /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: `h-full border-none ${headerClassName}`, children: [
2965
+ /* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: "relative flex flex-row items-center py-0 border-b h-[30px]", children: [
2966
+ title && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "leading-none font-bold ", children: title }),
2967
+ titleText && /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-bold leading-none", children: titleText }),
2968
+ showClose && /* @__PURE__ */ jsxRuntime.jsxs(
2969
+ Button,
2970
+ {
2971
+ variant: "ghost",
2972
+ size: "icon",
2973
+ className: "absolute top-[0px] right-[5px] h-6 w-6 hover:bg-transparent hover:text-primary/80",
2974
+ onClick: onClose,
2975
+ children: [
2976
+ closeIcon ? closeIcon : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-3 w-3" }),
2977
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close panel" })
2978
+ ]
2979
+ }
2980
+ )
2981
+ ] }),
2982
+ /* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: `overflow-y-auto h-full ${bodyClassName}`, children }),
2983
+ footerContent ? /* @__PURE__ */ jsxRuntime.jsx(CardFooter, { className: footerClassName, children: footerContent }) : /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {})
2984
+ ] }) });
2985
+ }
2986
+ function TabbedPanel({
2987
+ tabs,
2988
+ defaultTab,
2989
+ activeTab,
2990
+ onTabChange,
2991
+ headerActions,
2992
+ className,
2993
+ headerClassName,
2994
+ bodyClassName,
2995
+ footerClassName,
2996
+ footerContent,
2997
+ showClose: _showClose,
2998
+ onClose: _onClose,
2999
+ closeIcon: _closeIcon
3000
+ }) {
3001
+ const [internalTab, setInternalTab] = React23__namespace.default.useState(defaultTab || tabs[0]?.value);
3002
+ const currentTab = activeTab !== void 0 ? activeTab : internalTab;
3003
+ const handleTabChange = (value) => {
3004
+ if (activeTab === void 0) {
3005
+ setInternalTab(value);
3006
+ }
3007
+ onTabChange?.(value);
3008
+ };
3009
+ return /* @__PURE__ */ jsxRuntime.jsx(ErrorBoundary, { children: /* @__PURE__ */ jsxRuntime.jsx(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsxRuntime.jsx(Tabs, { value: currentTab, onValueChange: handleTabChange, className: `h-full ${className || ""}`, children: /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "h-full border rounded-none", children: [
3010
+ /* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: `flex flex-row items-center justify-between py-0 border-b h-[30px] px-0 space-y-0 ${headerClassName || ""}`, children: [
3011
+ /* @__PURE__ */ jsxRuntime.jsx(TabsList, { className: "h-full bg-transparent p-0 gap-0 rounded-none", children: tabs.map((tab) => /* @__PURE__ */ jsxRuntime.jsxs(
3012
+ TabsTrigger,
3013
+ {
3014
+ value: tab.value,
3015
+ disabled: tab.disabled,
3016
+ className: "h-full text-muted-foreground hover:text-foreground data-[state=active]:bg-primary/10 data-[state=active]:text-primary data-[state=active]:border-b-2 data-[state=active]:border-primary data-[state=active]:mb-[-1px] rounded-none px-3 py-2",
3017
+ children: [
3018
+ tab.icon && /* @__PURE__ */ jsxRuntime.jsx(tab.icon, { className: "h-3.5 w-3.5 mr-1.5" }),
3019
+ tab.label
3020
+ ]
3021
+ },
3022
+ tab.value
3023
+ )) }),
3024
+ headerActions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center h-full", children: /* @__PURE__ */ jsxRuntime.jsx(
3025
+ NavHorizontal,
3026
+ {
3027
+ className: "h-full",
3028
+ ...headerActions
3029
+ }
3030
+ ) })
3031
+ ] }),
3032
+ tabs.map((tab) => /* @__PURE__ */ jsxRuntime.jsx(
3033
+ TabsContent,
3034
+ {
3035
+ value: tab.value,
3036
+ className: `h-[calc(100%-30px)] m-0 ${bodyClassName || ""}`,
3037
+ children: /* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: "overflow-y-auto h-full p-0", children: tab.content })
3038
+ },
3039
+ tab.value
3040
+ )),
3041
+ footerContent && /* @__PURE__ */ jsxRuntime.jsx(CardFooter, { className: footerClassName, children: footerContent })
3042
+ ] }) }) }) });
3043
+ }
3044
+ var SearchInput = ({ value, onChange, ...props }) => {
3045
+ return /* @__PURE__ */ jsxRuntime.jsx(
3046
+ "input",
3047
+ {
3048
+ type: "text",
3049
+ value,
3050
+ onChange: (e) => onChange(e.target.value),
3051
+ placeholder: "Search...",
3052
+ className: cn(
3053
+ "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
3054
+ "w-full px-2 py-1 border rounded-md dark:bg-neutral-800",
3055
+ props?.className
3056
+ )
3057
+ }
3058
+ );
3059
+ };
3060
+ var Toolbar = () => {
3061
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-5 items-center space-x-2 text-sm", children: [
3062
+ /* @__PURE__ */ jsxRuntime.jsx(
3063
+ ButtonWithTooltip,
3064
+ {
3065
+ variant: "ghost",
3066
+ size: "nav-icon",
3067
+ className: "rounded-none hover:bg-gray-100 active:bg-gray:500",
3068
+ tooltip: /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Unlock Canvas" }),
3069
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Lock, { className: "h-4 w-4" })
3070
+ }
3071
+ ),
3072
+ /* @__PURE__ */ jsxRuntime.jsx(Separator, { orientation: "vertical" }),
3073
+ /* @__PURE__ */ jsxRuntime.jsx("div", { children: "Docs" }),
3074
+ /* @__PURE__ */ jsxRuntime.jsx(Separator, { orientation: "vertical" }),
3075
+ /* @__PURE__ */ jsxRuntime.jsx("div", { children: "Source" })
3076
+ ] });
3077
+ };
3078
+ function useTour(options) {
3079
+ const {
3080
+ steps,
3081
+ initialStep = 0,
3082
+ loop = false,
3083
+ onStepChange,
3084
+ onComplete,
3085
+ onExit
3086
+ } = options;
3087
+ const [current, setCurrent] = React23__namespace.useState(initialStep);
3088
+ const total = steps.length;
3089
+ const lastIndex = Math.max(total - 1, 0);
3090
+ const clamped = Math.min(Math.max(current, 0), lastIndex);
3091
+ const goTo = React23__namespace.useCallback(
3092
+ (index) => {
3093
+ setCurrent((prev2) => {
3094
+ const next2 = Math.min(Math.max(index, 0), lastIndex);
3095
+ if (next2 !== prev2) onStepChange?.(next2);
3096
+ return next2;
3097
+ });
3098
+ },
3099
+ [lastIndex, onStepChange]
3100
+ );
3101
+ const next = React23__namespace.useCallback(() => {
3102
+ setCurrent((prev2) => {
3103
+ if (prev2 >= lastIndex) {
3104
+ if (loop && total > 0) {
3105
+ onStepChange?.(0);
3106
+ return 0;
3107
+ }
3108
+ onComplete?.();
3109
+ return prev2;
3110
+ }
3111
+ onStepChange?.(prev2 + 1);
3112
+ return prev2 + 1;
3113
+ });
3114
+ }, [lastIndex, total, loop, onComplete, onStepChange]);
3115
+ const prev = React23__namespace.useCallback(() => {
3116
+ setCurrent((p) => {
3117
+ if (p <= 0) {
3118
+ if (loop && total > 0) {
3119
+ onStepChange?.(lastIndex);
3120
+ return lastIndex;
3121
+ }
3122
+ return p;
3123
+ }
3124
+ onStepChange?.(p - 1);
3125
+ return p - 1;
3126
+ });
3127
+ }, [lastIndex, total, loop, onStepChange]);
3128
+ const exit = React23__namespace.useCallback(() => {
3129
+ onExit?.();
3130
+ }, [onExit]);
3131
+ return React23__namespace.useMemo(
3132
+ () => ({
3133
+ step: steps[clamped],
3134
+ current: clamped,
3135
+ total,
3136
+ isFirst: clamped <= 0,
3137
+ isLast: clamped >= lastIndex,
3138
+ next,
3139
+ prev,
3140
+ goTo,
3141
+ exit
3142
+ }),
3143
+ [steps, clamped, total, lastIndex, next, prev, goTo, exit]
3144
+ );
3145
+ }
3146
+ var positionClasses = {
3147
+ static: "",
3148
+ "top-left": "fixed left-4 top-4 z-50",
3149
+ "top-right": "fixed right-4 top-4 z-50",
3150
+ "bottom-left": "fixed bottom-4 left-4 z-50",
3151
+ "bottom-right": "fixed bottom-4 right-4 z-50",
3152
+ center: "fixed left-1/2 top-1/2 z-50 -translate-x-1/2 -translate-y-1/2"
3153
+ };
3154
+ function Tour({
3155
+ controller,
3156
+ steps,
3157
+ onExit,
3158
+ onComplete,
3159
+ badgeLabel = "TOUR",
3160
+ prevLabel = "Prev",
3161
+ nextLabel = "Next",
3162
+ finishLabel = "Finish",
3163
+ exitLabel = "Exit Tour",
3164
+ showExit = true,
3165
+ showCounter = true,
3166
+ showProgressBar = false,
3167
+ position = "static",
3168
+ className
3169
+ }) {
3170
+ const internal = useTour({ steps: steps ?? [], onExit, onComplete });
3171
+ const ctrl = controller ?? internal;
3172
+ const { step, current, total, isFirst, isLast } = ctrl;
3173
+ if (!step) return null;
3174
+ const progress = total > 0 ? (current + 1) / total * 100 : 0;
3175
+ return /* @__PURE__ */ jsxRuntime.jsx(ErrorBoundary, { children: /* @__PURE__ */ jsxRuntime.jsxs(
3176
+ Card,
3177
+ {
3178
+ className: cn(
3179
+ "w-80 gap-0 border-border bg-popover p-0 text-popover-foreground shadow-xl",
3180
+ positionClasses[position],
3181
+ className
3182
+ ),
3183
+ role: "dialog",
3184
+ "aria-label": typeof badgeLabel === "string" ? badgeLabel : void 0,
3185
+ children: [
3186
+ /* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: "flex flex-row items-center justify-between space-y-0 p-3", children: [
3187
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
3188
+ /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "soft", className: "tracking-wider", children: badgeLabel }),
3189
+ showCounter && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs text-muted-foreground", children: [
3190
+ current + 1,
3191
+ " / ",
3192
+ total
3193
+ ] })
3194
+ ] }),
3195
+ showExit && /* @__PURE__ */ jsxRuntime.jsxs(
3196
+ Button,
3197
+ {
3198
+ variant: "ghost",
3199
+ size: "sm",
3200
+ className: "-mr-1 h-7 gap-1 px-2 text-xs text-muted-foreground [&_svg]:size-3.5",
3201
+ onClick: ctrl.exit,
3202
+ children: [
3203
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, {}),
3204
+ exitLabel
3205
+ ]
3206
+ }
3207
+ )
3208
+ ] }),
3209
+ showProgressBar && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-3 h-1 overflow-hidden rounded-full bg-muted", children: /* @__PURE__ */ jsxRuntime.jsx(
3210
+ "div",
3211
+ {
3212
+ className: "h-full rounded-full bg-primary transition-all",
3213
+ style: { width: `${progress}%` }
3214
+ }
3215
+ ) }),
3216
+ /* @__PURE__ */ jsxRuntime.jsxs(CardContent, { className: "space-y-4 p-3 pt-2", children: [
3217
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-base font-semibold leading-snug", children: step.title }),
3218
+ step.content ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3219
+ step.body && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm leading-relaxed text-muted-foreground", children: step.body }),
3220
+ step.callout && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-r-md border-l-2 border-primary bg-muted/40 p-3", children: [
3221
+ step.callout.label && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1 text-[10px] font-semibold uppercase tracking-wider text-primary", children: step.callout.label }),
3222
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm leading-relaxed", children: step.callout.content })
3223
+ ] }),
3224
+ step.references && step.references.items.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
3225
+ step.references.label && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[10px] font-semibold uppercase tracking-wider text-muted-foreground", children: step.references.label }),
3226
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: step.references.items.map((item, i) => {
3227
+ const Icon = item.icon;
3228
+ return item.onClick ? /* @__PURE__ */ jsxRuntime.jsxs(
3229
+ "button",
3230
+ {
3231
+ type: "button",
3232
+ onClick: item.onClick,
3233
+ className: cn(
3234
+ badgeVariants({ variant: "secondary" }),
3235
+ "cursor-pointer gap-1 transition-colors hover:bg-accent hover:text-accent-foreground"
3236
+ ),
3237
+ children: [
3238
+ Icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "size-3" }),
3239
+ item.label
3240
+ ]
3241
+ },
3242
+ `${item.label}-${i}`
3243
+ ) : /* @__PURE__ */ jsxRuntime.jsxs(
3244
+ Badge,
3245
+ {
3246
+ variant: "secondary",
3247
+ className: "gap-1",
3248
+ children: [
3249
+ Icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "size-3" }),
3250
+ item.label
3251
+ ]
3252
+ },
3253
+ `${item.label}-${i}`
3254
+ );
3255
+ }) })
3256
+ ] })
3257
+ ] })
3258
+ ] }),
3259
+ /* @__PURE__ */ jsxRuntime.jsx(Separator, {}),
3260
+ /* @__PURE__ */ jsxRuntime.jsxs(CardFooter, { className: "justify-between p-3", children: [
3261
+ /* @__PURE__ */ jsxRuntime.jsxs(
3262
+ Button,
3263
+ {
3264
+ variant: "outline",
3265
+ size: "sm",
3266
+ onClick: ctrl.prev,
3267
+ disabled: isFirst,
3268
+ className: "gap-1 [&_svg]:size-4",
3269
+ children: [
3270
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, {}),
3271
+ prevLabel
3272
+ ]
3273
+ }
3274
+ ),
3275
+ /* @__PURE__ */ jsxRuntime.jsxs(
3276
+ Button,
3277
+ {
3278
+ variant: "default",
3279
+ size: "sm",
3280
+ onClick: ctrl.next,
3281
+ className: "gap-1 [&_svg]:size-4",
3282
+ children: [
3283
+ isLast ? finishLabel : nextLabel,
3284
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, {})
3285
+ ]
3286
+ }
3287
+ )
3288
+ ] })
3289
+ ]
3290
+ }
3291
+ ) });
3292
+ }
3293
+ var TreeView = ({ searchable = false, ...props }) => {
3294
+ const [searchQuery, setSearchQuery] = React23__namespace.useState("");
3295
+ const filterItems = (items, query) => {
3296
+ if (!query) return items;
3297
+ return items.map((item) => ({
3298
+ ...item,
3299
+ children: item.children ? filterItems(item.children, query) : []
3300
+ })).filter((item) => item.label.toLowerCase().includes(query.toLowerCase()) || item.children && item.children.length > 0);
3301
+ };
3302
+ const filteredItems = filterItems(props.items, searchQuery);
3303
+ return /* @__PURE__ */ jsxRuntime.jsx(
3304
+ "div",
3305
+ {
3306
+ className: cn("rounded-lg border bg-card text-card-foreground shadow-sm w-[240px]", props.className),
3307
+ style: props.style,
3308
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-3", children: [
3309
+ props.header && props.header,
3310
+ searchable && /* @__PURE__ */ jsxRuntime.jsx(SearchInput, { value: searchQuery, onChange: setSearchQuery }),
3311
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: filteredItems.map((item) => /* @__PURE__ */ jsxRuntime.jsx(TreeItem, { item }, item.id)) })
3312
+ ] })
3313
+ }
3314
+ );
3315
+ };
3316
+ var TreeItem = ({ item }) => {
3317
+ const [isExpanded, setIsExpanded] = React23__namespace.useState(item.isExpanded || true);
3318
+ const hasChildren = item.children && item.children.length > 0;
3319
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
3320
+ /* @__PURE__ */ jsxRuntime.jsxs(
3321
+ "button",
3322
+ {
3323
+ onClick: () => {
3324
+ if (hasChildren) {
3325
+ setIsExpanded(!isExpanded);
3326
+ }
3327
+ item.onClick?.(item.id, item.label);
3328
+ },
3329
+ className: cn(
3330
+ "flex items-center gap-2 w-full rounded-md px-2 py-1 hover:bg-accent hover:text-accent-foreground",
3331
+ hasChildren && "cursor-pointer font-medium"
3332
+ ),
3333
+ children: [
3334
+ hasChildren && /* @__PURE__ */ jsxRuntime.jsx(
3335
+ lucideReact.ChevronRight,
3336
+ {
3337
+ className: cn(
3338
+ "h-4 w-4 shrink-0 transition-transform",
3339
+ isExpanded && "rotate-90"
3340
+ )
3341
+ }
3342
+ ),
3343
+ item.icon,
3344
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: item.label })
3345
+ ]
3346
+ }
3347
+ ),
3348
+ hasChildren && isExpanded && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-4 pl-4 relative", children: [
3349
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute left-0 top-0 bottom-0 border-l border-muted-foreground/25" }),
3350
+ item.children?.map((child, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
3351
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -left-4 top-[15px] w-4 border-t border-muted-foreground/25" }),
3352
+ /* @__PURE__ */ jsxRuntime.jsx(TreeItem, { item: child }, index)
3353
+ ] }, child.id))
3354
+ ] })
3355
+ ] });
3356
+ };
3357
+ var underDevelopmentVariants = classVarianceAuthority.cva(
3358
+ "flex flex-col items-center justify-center h-full gap-4",
3359
+ {
3360
+ variants: {
3361
+ size: {
3362
+ sm: "gap-2",
3363
+ md: "gap-4",
3364
+ lg: "gap-6"
3365
+ }
3366
+ },
3367
+ defaultVariants: {
3368
+ size: "md"
3369
+ }
3370
+ }
3371
+ );
3372
+ function UnderDevelopment({
3373
+ title = "Under Development",
3374
+ description = "This feature is currently being built.",
3375
+ iconSize = 48,
3376
+ size,
3377
+ className = ""
3378
+ }) {
3379
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(underDevelopmentVariants({ size }), "text-center", className), children: [
3380
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Construction, { size: iconSize, className: "text-primary" }),
3381
+ /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-2xl font-bold", children: title }),
3382
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground max-w-md", children: description }),
3383
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-4 px-3 py-1 bg-yellow-100 text-yellow-800 rounded-full text-sm", children: "Coming Soon" })
3384
+ ] });
3385
+ }
3386
+ var TypographyH1 = React23__namespace.forwardRef(
3387
+ ({ className, ...props }, ref) => {
3388
+ return /* @__PURE__ */ jsxRuntime.jsx(
3389
+ "h1",
3390
+ {
3391
+ ref,
3392
+ className: cn(
3393
+ "scroll-m-20 text-4xl font-extrabold tracking-tight lg:text-5xl",
3394
+ className
3395
+ ),
3396
+ ...props
3397
+ }
3398
+ );
3399
+ }
3400
+ );
3401
+ TypographyH1.displayName = "TypographyH1";
3402
+ var TypographyH2 = React23__namespace.forwardRef(
3403
+ ({ className, ...props }, ref) => {
3404
+ return /* @__PURE__ */ jsxRuntime.jsx(
3405
+ "h2",
3406
+ {
3407
+ ref,
3408
+ className: cn(
3409
+ "scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight first:mt-0",
3410
+ className
3411
+ ),
3412
+ ...props
3413
+ }
3414
+ );
3415
+ }
3416
+ );
3417
+ TypographyH2.displayName = "TypographyH2";
3418
+ var TypographyH3 = React23__namespace.forwardRef(
3419
+ ({ className, ...props }, ref) => {
3420
+ return /* @__PURE__ */ jsxRuntime.jsx(
3421
+ "h3",
3422
+ {
3423
+ ref,
3424
+ className: cn(
3425
+ "scroll-m-20 text-2xl font-semibold tracking-tight",
3426
+ className
3427
+ ),
3428
+ ...props
3429
+ }
3430
+ );
3431
+ }
3432
+ );
3433
+ TypographyH3.displayName = "TypographyH3";
3434
+ var TypographyH4 = React23__namespace.forwardRef(
3435
+ ({ className, ...props }, ref) => {
3436
+ return /* @__PURE__ */ jsxRuntime.jsx(
3437
+ "h4",
3438
+ {
3439
+ ref,
3440
+ className: cn(
3441
+ "scroll-m-20 text-xl font-semibold tracking-tight",
3442
+ className
3443
+ ),
3444
+ ...props
3445
+ }
3446
+ );
3447
+ }
3448
+ );
3449
+ TypographyH4.displayName = "TypographyH4";
3450
+ var TypographyH5 = React23__namespace.forwardRef(
3451
+ ({ className, ...props }, ref) => {
3452
+ return /* @__PURE__ */ jsxRuntime.jsx(
3453
+ "h5",
3454
+ {
3455
+ ref,
3456
+ className: cn(
3457
+ "scroll-m-20 text-lg font-semibold tracking-tight",
3458
+ className
3459
+ ),
3460
+ ...props
3461
+ }
3462
+ );
3463
+ }
3464
+ );
3465
+ TypographyH5.displayName = "TypographyH5";
3466
+ var TypographyH6 = React23__namespace.forwardRef(
3467
+ ({ className, ...props }, ref) => {
3468
+ return /* @__PURE__ */ jsxRuntime.jsx(
3469
+ "h6",
3470
+ {
3471
+ ref,
3472
+ className: cn(
3473
+ "scroll-m-20 text-base font-semibold tracking-tight",
3474
+ className
3475
+ ),
3476
+ ...props
3477
+ }
3478
+ );
3479
+ }
3480
+ );
3481
+ TypographyH6.displayName = "TypographyH6";
3482
+ var TypographyP = React23__namespace.forwardRef(
3483
+ ({ className, ...props }, ref) => {
3484
+ return /* @__PURE__ */ jsxRuntime.jsx(
3485
+ "p",
3486
+ {
3487
+ ref,
3488
+ className: cn(
3489
+ "leading-7 [&:not(:first-child)]:mt-6",
3490
+ className
3491
+ ),
3492
+ ...props
3493
+ }
3494
+ );
3495
+ }
3496
+ );
3497
+ TypographyP.displayName = "TypographyP";
3498
+ var TypographyBlockquote = React23__namespace.forwardRef(
3499
+ ({ className, ...props }, ref) => {
3500
+ return /* @__PURE__ */ jsxRuntime.jsx(
3501
+ "blockquote",
3502
+ {
3503
+ ref,
3504
+ className: cn(
3505
+ "mt-6 border-l-2 pl-6 italic",
3506
+ className
3507
+ ),
3508
+ ...props
3509
+ }
3510
+ );
3511
+ }
3512
+ );
3513
+ TypographyBlockquote.displayName = "TypographyBlockquote";
3514
+ var TypographyInlineCode = React23__namespace.forwardRef(
3515
+ ({ className, ...props }, ref) => {
3516
+ return /* @__PURE__ */ jsxRuntime.jsx(
3517
+ "code",
3518
+ {
3519
+ ref,
3520
+ className: cn(
3521
+ "relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold",
3522
+ className
3523
+ ),
3524
+ ...props
3525
+ }
3526
+ );
3527
+ }
3528
+ );
3529
+ TypographyInlineCode.displayName = "TypographyInlineCode";
3530
+ var TypographyLead = React23__namespace.forwardRef(
3531
+ ({ className, ...props }, ref) => {
3532
+ return /* @__PURE__ */ jsxRuntime.jsx(
3533
+ "p",
3534
+ {
3535
+ ref,
3536
+ className: cn(
3537
+ "text-xl text-muted-foreground",
3538
+ className
3539
+ ),
3540
+ ...props
3541
+ }
3542
+ );
3543
+ }
3544
+ );
3545
+ TypographyLead.displayName = "TypographyLead";
3546
+ var TypographyLarge = React23__namespace.forwardRef(
3547
+ ({ className, ...props }, ref) => {
3548
+ return /* @__PURE__ */ jsxRuntime.jsx(
3549
+ "div",
3550
+ {
3551
+ ref,
3552
+ className: cn(
3553
+ "text-lg font-semibold",
3554
+ className
3555
+ ),
3556
+ ...props
3557
+ }
3558
+ );
3559
+ }
3560
+ );
3561
+ TypographyLarge.displayName = "TypographyLarge";
3562
+ var TypographySmall = React23__namespace.forwardRef(
3563
+ ({ className, ...props }, ref) => {
3564
+ return /* @__PURE__ */ jsxRuntime.jsx(
3565
+ "small",
3566
+ {
3567
+ ref,
3568
+ className: cn(
3569
+ "text-sm font-medium leading-none",
3570
+ className
3571
+ ),
3572
+ ...props
3573
+ }
3574
+ );
3575
+ }
3576
+ );
3577
+ TypographySmall.displayName = "TypographySmall";
3578
+ var TypographyMuted = React23__namespace.forwardRef(
3579
+ ({ className, ...props }, ref) => {
3580
+ return /* @__PURE__ */ jsxRuntime.jsx(
3581
+ "p",
3582
+ {
3583
+ ref,
3584
+ className: cn(
3585
+ "text-sm text-muted-foreground",
3586
+ className
3587
+ ),
3588
+ ...props
3589
+ }
3590
+ );
3591
+ }
3592
+ );
3593
+ TypographyMuted.displayName = "TypographyMuted";
3594
+ var TypographyList = React23__namespace.forwardRef(
3595
+ ({ className, ...props }, ref) => {
3596
+ return /* @__PURE__ */ jsxRuntime.jsx(
3597
+ "ul",
3598
+ {
3599
+ ref,
3600
+ className: cn(
3601
+ "my-6 ml-6 list-disc [&>li]:mt-2",
3602
+ className
3603
+ ),
3604
+ ...props
3605
+ }
3606
+ );
3607
+ }
3608
+ );
3609
+ TypographyList.displayName = "TypographyList";
3610
+ var TypographyPre = React23__namespace.forwardRef(
3611
+ ({ className, ...props }, ref) => {
3612
+ return /* @__PURE__ */ jsxRuntime.jsx(
3613
+ "pre",
3614
+ {
3615
+ ref,
3616
+ className: cn(
3617
+ "mt-6 mb-4 overflow-x-auto rounded-lg border bg-muted p-4",
3618
+ className
3619
+ ),
3620
+ ...props
3621
+ }
3622
+ );
3623
+ }
3624
+ );
3625
+ TypographyPre.displayName = "TypographyPre";
3626
+
3627
+ // src/components/typography/index.ts
3628
+ var Typography = {
3629
+ H1: TypographyH1,
3630
+ H2: TypographyH2,
3631
+ H3: TypographyH3,
3632
+ H4: TypographyH4,
3633
+ H5: TypographyH5,
3634
+ H6: TypographyH6,
3635
+ P: TypographyP,
3636
+ Blockquote: TypographyBlockquote,
3637
+ Code: TypographyInlineCode,
3638
+ Lead: TypographyLead,
3639
+ Large: TypographyLarge,
3640
+ Small: TypographySmall,
3641
+ Muted: TypographyMuted,
3642
+ List: TypographyList,
3643
+ Pre: TypographyPre
3644
+ };
3645
+
3646
+ exports.Accordion = Accordion;
3647
+ exports.AccordionContent = AccordionContent;
3648
+ exports.AccordionItem = AccordionItem;
3649
+ exports.AccordionTrigger = AccordionTrigger;
3650
+ exports.Alert = Alert;
3651
+ exports.AlertDescription = AlertDescription;
3652
+ exports.AlertDialog = AlertDialog;
3653
+ exports.AlertDialogAction = AlertDialogAction;
3654
+ exports.AlertDialogCancel = AlertDialogCancel;
3655
+ exports.AlertDialogContent = AlertDialogContent;
3656
+ exports.AlertDialogDescription = AlertDialogDescription;
3657
+ exports.AlertDialogFooter = AlertDialogFooter;
3658
+ exports.AlertDialogHeader = AlertDialogHeader;
3659
+ exports.AlertDialogOverlay = AlertDialogOverlay;
3660
+ exports.AlertDialogPortal = AlertDialogPortal;
3661
+ exports.AlertDialogTitle = AlertDialogTitle;
3662
+ exports.AlertDialogTrigger = AlertDialogTrigger;
3663
+ exports.AlertTitle = AlertTitle;
3664
+ exports.Avatar = Avatar;
3665
+ exports.AvatarFallback = AvatarFallback;
3666
+ exports.AvatarImage = AvatarImage;
3667
+ exports.Badge = Badge;
3668
+ exports.Breadcrumb = Breadcrumb;
3669
+ exports.BreadcrumbEllipsis = BreadcrumbEllipsis;
3670
+ exports.BreadcrumbItem = BreadcrumbItem;
3671
+ exports.BreadcrumbLink = BreadcrumbLink;
3672
+ exports.BreadcrumbList = BreadcrumbList;
3673
+ exports.BreadcrumbPage = BreadcrumbPage;
3674
+ exports.BreadcrumbSeparator = BreadcrumbSeparator;
3675
+ exports.Button = Button;
3676
+ exports.ButtonGroup = ButtonGroup;
3677
+ exports.ButtonGroupSeparator = ButtonGroupSeparator;
3678
+ exports.ButtonGroupText = ButtonGroupText;
3679
+ exports.ButtonWithTooltip = ButtonWithTooltip;
3680
+ exports.Card = Card;
3681
+ exports.CardContent = CardContent;
3682
+ exports.CardDescription = CardDescription;
3683
+ exports.CardFooter = CardFooter;
3684
+ exports.CardHeader = CardHeader;
3685
+ exports.CardTitle = CardTitle;
3686
+ exports.CardWithHeader = CardWithHeader;
3687
+ exports.Carousel = Carousel;
3688
+ exports.CarouselContent = CarouselContent;
3689
+ exports.CarouselItem = CarouselItem;
3690
+ exports.CarouselNext = CarouselNext;
3691
+ exports.CarouselPrevious = CarouselPrevious;
3692
+ exports.Command = Command;
3693
+ exports.CommandDialog = CommandDialog;
3694
+ exports.CommandEmpty = CommandEmpty;
3695
+ exports.CommandGroup = CommandGroup;
3696
+ exports.CommandInput = CommandInput;
3697
+ exports.CommandItem = CommandItem;
3698
+ exports.CommandList = CommandList;
3699
+ exports.CommandSeparator = CommandSeparator;
3700
+ exports.CommandShortcut = CommandShortcut;
3701
+ exports.Dialog = Dialog;
3702
+ exports.DialogClose = DialogClose;
3703
+ exports.DialogContent = DialogContent;
3704
+ exports.DialogDescription = DialogDescription;
3705
+ exports.DialogFooter = DialogFooter;
3706
+ exports.DialogHeader = DialogHeader;
3707
+ exports.DialogOverlay = DialogOverlay;
3708
+ exports.DialogPortal = DialogPortal;
3709
+ exports.DialogTitle = DialogTitle;
3710
+ exports.DialogTrigger = DialogTrigger;
3711
+ exports.DropdownMenu = DropdownMenu;
3712
+ exports.DropdownMenuCheckboxItem = DropdownMenuCheckboxItem;
3713
+ exports.DropdownMenuContent = DropdownMenuContent;
3714
+ exports.DropdownMenuGroup = DropdownMenuGroup;
3715
+ exports.DropdownMenuItem = DropdownMenuItem;
3716
+ exports.DropdownMenuLabel = DropdownMenuLabel;
3717
+ exports.DropdownMenuPortal = DropdownMenuPortal;
3718
+ exports.DropdownMenuRadioGroup = DropdownMenuRadioGroup;
3719
+ exports.DropdownMenuRadioItem = DropdownMenuRadioItem;
3720
+ exports.DropdownMenuSeparator = DropdownMenuSeparator;
3721
+ exports.DropdownMenuShortcut = DropdownMenuShortcut;
3722
+ exports.DropdownMenuSub = DropdownMenuSub;
3723
+ exports.DropdownMenuSubContent = DropdownMenuSubContent;
3724
+ exports.DropdownMenuSubTrigger = DropdownMenuSubTrigger;
3725
+ exports.DropdownMenuTrigger = DropdownMenuTrigger;
3726
+ exports.ErrorBoundary = ErrorBoundary;
3727
+ exports.HoverCard = HoverCard;
3728
+ exports.HoverCardContent = HoverCardContent;
3729
+ exports.HoverCardTrigger = HoverCardTrigger;
3730
+ exports.Item = Item3;
3731
+ exports.ItemActions = ItemActions;
3732
+ exports.ItemContent = ItemContent;
3733
+ exports.ItemDescription = ItemDescription;
3734
+ exports.ItemFooter = ItemFooter;
3735
+ exports.ItemGroup = ItemGroup;
3736
+ exports.ItemHeader = ItemHeader;
3737
+ exports.ItemMedia = ItemMedia;
3738
+ exports.ItemSeparator = ItemSeparator;
3739
+ exports.ItemTitle = ItemTitle;
3740
+ exports.Kbd = Kbd;
3741
+ exports.KbdGroup = KbdGroup;
3742
+ exports.MenuItem = MenuItem;
3743
+ exports.Menubar = Menubar;
3744
+ exports.MenubarCheckboxItem = MenubarCheckboxItem;
3745
+ exports.MenubarContent = MenubarContent;
3746
+ exports.MenubarGroup = MenubarGroup;
3747
+ exports.MenubarItem = MenubarItem;
3748
+ exports.MenubarLabel = MenubarLabel;
3749
+ exports.MenubarMenu = MenubarMenu;
3750
+ exports.MenubarPortal = MenubarPortal;
3751
+ exports.MenubarRadioGroup = MenubarRadioGroup;
3752
+ exports.MenubarRadioItem = MenubarRadioItem;
3753
+ exports.MenubarSeparator = MenubarSeparator;
3754
+ exports.MenubarShortcut = MenubarShortcut;
3755
+ exports.MenubarSub = MenubarSub;
3756
+ exports.MenubarSubContent = MenubarSubContent;
3757
+ exports.MenubarSubTrigger = MenubarSubTrigger;
3758
+ exports.MenubarTrigger = MenubarTrigger;
3759
+ exports.NavBase = NavBase;
3760
+ exports.NavHorizontal = NavHorizontal;
3761
+ exports.NavHorizontalItems = NavHorizontalItems;
3762
+ exports.NavVertical = NavVertical;
3763
+ exports.NavVerticalItems = NavVerticalItems;
3764
+ exports.NavigationMenu = NavigationMenu;
3765
+ exports.NavigationMenuContent = NavigationMenuContent;
3766
+ exports.NavigationMenuIndicator = NavigationMenuIndicator;
3767
+ exports.NavigationMenuItem = NavigationMenuItem;
3768
+ exports.NavigationMenuLink = NavigationMenuLink;
3769
+ exports.NavigationMenuList = NavigationMenuList;
3770
+ exports.NavigationMenuTrigger = NavigationMenuTrigger;
3771
+ exports.NavigationMenuViewport = NavigationMenuViewport;
3772
+ exports.NestedMenu = NestedMenu;
3773
+ exports.Pagination = Pagination;
3774
+ exports.PaginationContent = PaginationContent;
3775
+ exports.PaginationEllipsis = PaginationEllipsis;
3776
+ exports.PaginationItem = PaginationItem;
3777
+ exports.PaginationLink = PaginationLink;
3778
+ exports.PaginationNext = PaginationNext;
3779
+ exports.PaginationPrevious = PaginationPrevious;
3780
+ exports.PanelContent = PanelContent;
3781
+ exports.Popover = Popover;
3782
+ exports.PopoverContent = PopoverContent;
3783
+ exports.PopoverTrigger = PopoverTrigger;
3784
+ exports.Progress = Progress;
3785
+ exports.ResizableHandle = ResizableHandle;
3786
+ exports.ResizablePanel = ResizablePanel;
3787
+ exports.ResizablePanelGroup = ResizablePanelGroup;
3788
+ exports.ScrollArea = ScrollArea;
3789
+ exports.ScrollBar = ScrollBar;
3790
+ exports.SearchInput = SearchInput;
3791
+ exports.Separator = Separator;
3792
+ exports.Sheet = Sheet;
3793
+ exports.SheetClose = SheetClose;
3794
+ exports.SheetContent = SheetContent;
3795
+ exports.SheetDescription = SheetDescription;
3796
+ exports.SheetFooter = SheetFooter;
3797
+ exports.SheetHeader = SheetHeader;
3798
+ exports.SheetOverlay = SheetOverlay;
3799
+ exports.SheetPortal = SheetPortal;
3800
+ exports.SheetTitle = SheetTitle;
3801
+ exports.SheetTrigger = SheetTrigger;
3802
+ exports.Sidebar = Sidebar;
3803
+ exports.SidebarContent = SidebarContent;
3804
+ exports.SidebarFooter = SidebarFooter;
3805
+ exports.SidebarGroup = SidebarGroup;
3806
+ exports.SidebarGroupAction = SidebarGroupAction;
3807
+ exports.SidebarGroupContent = SidebarGroupContent;
3808
+ exports.SidebarGroupLabel = SidebarGroupLabel;
3809
+ exports.SidebarHeader = SidebarHeader;
3810
+ exports.SidebarInput = SidebarInput;
3811
+ exports.SidebarInset = SidebarInset;
3812
+ exports.SidebarMenu = SidebarMenu;
3813
+ exports.SidebarMenuAction = SidebarMenuAction;
3814
+ exports.SidebarMenuBadge = SidebarMenuBadge;
3815
+ exports.SidebarMenuButton = SidebarMenuButton;
3816
+ exports.SidebarMenuItem = SidebarMenuItem;
3817
+ exports.SidebarMenuSkeleton = SidebarMenuSkeleton;
3818
+ exports.SidebarMenuSub = SidebarMenuSub;
3819
+ exports.SidebarMenuSubButton = SidebarMenuSubButton;
3820
+ exports.SidebarMenuSubItem = SidebarMenuSubItem;
3821
+ exports.SidebarProvider = SidebarProvider;
3822
+ exports.SidebarRail = SidebarRail;
3823
+ exports.SidebarSeparator = SidebarSeparator;
3824
+ exports.SidebarTrigger = SidebarTrigger;
3825
+ exports.Skeleton = Skeleton;
3826
+ exports.Spinner = Spinner;
3827
+ exports.TabbedPanel = TabbedPanel;
3828
+ exports.Table = Table;
3829
+ exports.TableBody = TableBody;
3830
+ exports.TableCaption = TableCaption;
3831
+ exports.TableCell = TableCell;
3832
+ exports.TableFooter = TableFooter;
3833
+ exports.TableHead = TableHead;
3834
+ exports.TableHeader = TableHeader;
3835
+ exports.TableRow = TableRow;
3836
+ exports.Tabs = Tabs;
3837
+ exports.TabsContent = TabsContent;
3838
+ exports.TabsList = TabsList;
3839
+ exports.TabsTrigger = TabsTrigger;
3840
+ exports.Toaster = Toaster;
3841
+ exports.Toggle = Toggle;
3842
+ exports.ToggleGroup = ToggleGroup;
3843
+ exports.ToggleGroupItem = ToggleGroupItem;
3844
+ exports.Toolbar = Toolbar;
3845
+ exports.Tooltip = Tooltip;
3846
+ exports.TooltipContent = TooltipContent;
3847
+ exports.TooltipProvider = TooltipProvider;
3848
+ exports.TooltipTrigger = TooltipTrigger;
3849
+ exports.Tour = Tour;
3850
+ exports.TreeItem = TreeItem;
3851
+ exports.TreeView = TreeView;
3852
+ exports.Typography = Typography;
3853
+ exports.TypographyBlockquote = TypographyBlockquote;
3854
+ exports.TypographyH1 = TypographyH1;
3855
+ exports.TypographyH2 = TypographyH2;
3856
+ exports.TypographyH3 = TypographyH3;
3857
+ exports.TypographyH4 = TypographyH4;
3858
+ exports.TypographyH5 = TypographyH5;
3859
+ exports.TypographyH6 = TypographyH6;
3860
+ exports.TypographyInlineCode = TypographyInlineCode;
3861
+ exports.TypographyLarge = TypographyLarge;
3862
+ exports.TypographyLead = TypographyLead;
3863
+ exports.TypographyList = TypographyList;
3864
+ exports.TypographyMuted = TypographyMuted;
3865
+ exports.TypographyP = TypographyP;
3866
+ exports.TypographyPre = TypographyPre;
3867
+ exports.TypographySmall = TypographySmall;
3868
+ exports.UnderDevelopment = UnderDevelopment;
3869
+ exports.badgeVariants = badgeVariants;
3870
+ exports.buttonGroupVariants = buttonGroupVariants;
3871
+ exports.buttonVariants = buttonVariants;
3872
+ exports.cn = cn;
3873
+ exports.navigationMenuTriggerStyle = navigationMenuTriggerStyle;
3874
+ exports.toggleVariants = toggleVariants;
3875
+ exports.useSidebar = useSidebar;
3876
+ exports.useTour = useTour;
3877
+ //# sourceMappingURL=index.cjs.map
3878
+ //# sourceMappingURL=index.cjs.map