@c-rex/ui 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs ADDED
@@ -0,0 +1,1615 @@
1
+ // src/alert.tsx
2
+ import * as React from "react";
3
+ import { cva } from "class-variance-authority";
4
+
5
+ // src/lib/utils.ts
6
+ import { clsx } from "clsx";
7
+ import { twMerge } from "tailwind-merge";
8
+ function cn(...inputs) {
9
+ return twMerge(clsx(inputs));
10
+ }
11
+
12
+ // src/alert.tsx
13
+ import { jsx } from "react/jsx-runtime";
14
+ var alertVariants = cva(
15
+ "relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7",
16
+ {
17
+ variants: {
18
+ variant: {
19
+ default: "bg-background text-foreground",
20
+ destructive: "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"
21
+ }
22
+ },
23
+ defaultVariants: {
24
+ variant: "default"
25
+ }
26
+ }
27
+ );
28
+ var Alert = React.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ jsx(
29
+ "div",
30
+ {
31
+ ref,
32
+ role: "alert",
33
+ className: cn(alertVariants({ variant }), className),
34
+ ...props
35
+ }
36
+ ));
37
+ Alert.displayName = "Alert";
38
+ var AlertTitle = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
39
+ "h5",
40
+ {
41
+ ref,
42
+ className: cn("mb-1 font-medium leading-none tracking-tight", className),
43
+ ...props
44
+ }
45
+ ));
46
+ AlertTitle.displayName = "AlertTitle";
47
+ var AlertDescription = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
48
+ "div",
49
+ {
50
+ ref,
51
+ className: cn("text-sm [&_p]:leading-relaxed", className),
52
+ ...props
53
+ }
54
+ ));
55
+ AlertDescription.displayName = "AlertDescription";
56
+
57
+ // src/breadcrumb.tsx
58
+ import * as React4 from "react";
59
+
60
+ // ../../node_modules/@radix-ui/react-slot/dist/index.mjs
61
+ import * as React3 from "react";
62
+
63
+ // ../../node_modules/@radix-ui/react-compose-refs/dist/index.mjs
64
+ import * as React2 from "react";
65
+ function setRef(ref, value) {
66
+ if (typeof ref === "function") {
67
+ return ref(value);
68
+ } else if (ref !== null && ref !== void 0) {
69
+ ref.current = value;
70
+ }
71
+ }
72
+ function composeRefs(...refs) {
73
+ return (node) => {
74
+ let hasCleanup = false;
75
+ const cleanups = refs.map((ref) => {
76
+ const cleanup = setRef(ref, node);
77
+ if (!hasCleanup && typeof cleanup == "function") {
78
+ hasCleanup = true;
79
+ }
80
+ return cleanup;
81
+ });
82
+ if (hasCleanup) {
83
+ return () => {
84
+ for (let i = 0; i < cleanups.length; i++) {
85
+ const cleanup = cleanups[i];
86
+ if (typeof cleanup == "function") {
87
+ cleanup();
88
+ } else {
89
+ setRef(refs[i], null);
90
+ }
91
+ }
92
+ };
93
+ }
94
+ };
95
+ }
96
+
97
+ // ../../node_modules/@radix-ui/react-slot/dist/index.mjs
98
+ import { Fragment as Fragment2, jsx as jsx2 } from "react/jsx-runtime";
99
+ // @__NO_SIDE_EFFECTS__
100
+ function createSlot(ownerName) {
101
+ const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);
102
+ const Slot2 = React3.forwardRef((props, forwardedRef) => {
103
+ const { children, ...slotProps } = props;
104
+ const childrenArray = React3.Children.toArray(children);
105
+ const slottable = childrenArray.find(isSlottable);
106
+ if (slottable) {
107
+ const newElement = slottable.props.children;
108
+ const newChildren = childrenArray.map((child) => {
109
+ if (child === slottable) {
110
+ if (React3.Children.count(newElement) > 1) return React3.Children.only(null);
111
+ return React3.isValidElement(newElement) ? newElement.props.children : null;
112
+ } else {
113
+ return child;
114
+ }
115
+ });
116
+ return /* @__PURE__ */ jsx2(SlotClone, { ...slotProps, ref: forwardedRef, children: React3.isValidElement(newElement) ? React3.cloneElement(newElement, void 0, newChildren) : null });
117
+ }
118
+ return /* @__PURE__ */ jsx2(SlotClone, { ...slotProps, ref: forwardedRef, children });
119
+ });
120
+ Slot2.displayName = `${ownerName}.Slot`;
121
+ return Slot2;
122
+ }
123
+ var Slot = /* @__PURE__ */ createSlot("Slot");
124
+ // @__NO_SIDE_EFFECTS__
125
+ function createSlotClone(ownerName) {
126
+ const SlotClone = React3.forwardRef((props, forwardedRef) => {
127
+ const { children, ...slotProps } = props;
128
+ if (React3.isValidElement(children)) {
129
+ const childrenRef = getElementRef(children);
130
+ const props2 = mergeProps(slotProps, children.props);
131
+ if (children.type !== React3.Fragment) {
132
+ props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;
133
+ }
134
+ return React3.cloneElement(children, props2);
135
+ }
136
+ return React3.Children.count(children) > 1 ? React3.Children.only(null) : null;
137
+ });
138
+ SlotClone.displayName = `${ownerName}.SlotClone`;
139
+ return SlotClone;
140
+ }
141
+ var SLOTTABLE_IDENTIFIER = Symbol("radix.slottable");
142
+ function isSlottable(child) {
143
+ return React3.isValidElement(child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;
144
+ }
145
+ function mergeProps(slotProps, childProps) {
146
+ const overrideProps = { ...childProps };
147
+ for (const propName in childProps) {
148
+ const slotPropValue = slotProps[propName];
149
+ const childPropValue = childProps[propName];
150
+ const isHandler = /^on[A-Z]/.test(propName);
151
+ if (isHandler) {
152
+ if (slotPropValue && childPropValue) {
153
+ overrideProps[propName] = (...args) => {
154
+ childPropValue(...args);
155
+ slotPropValue(...args);
156
+ };
157
+ } else if (slotPropValue) {
158
+ overrideProps[propName] = slotPropValue;
159
+ }
160
+ } else if (propName === "style") {
161
+ overrideProps[propName] = { ...slotPropValue, ...childPropValue };
162
+ } else if (propName === "className") {
163
+ overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(" ");
164
+ }
165
+ }
166
+ return { ...slotProps, ...overrideProps };
167
+ }
168
+ function getElementRef(element) {
169
+ let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get;
170
+ let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
171
+ if (mayWarn) {
172
+ return element.ref;
173
+ }
174
+ getter = Object.getOwnPropertyDescriptor(element, "ref")?.get;
175
+ mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
176
+ if (mayWarn) {
177
+ return element.props.ref;
178
+ }
179
+ return element.props.ref || element.ref;
180
+ }
181
+
182
+ // src/breadcrumb.tsx
183
+ import { ChevronRight, MoreHorizontal } from "lucide-react";
184
+ import { jsx as jsx3, jsxs } from "react/jsx-runtime";
185
+ var Breadcrumb = React4.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx3("nav", { ref, "aria-label": "breadcrumb", ...props }));
186
+ Breadcrumb.displayName = "Breadcrumb";
187
+ var BreadcrumbList = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx3(
188
+ "ol",
189
+ {
190
+ ref,
191
+ className: cn(
192
+ "flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5",
193
+ className
194
+ ),
195
+ ...props
196
+ }
197
+ ));
198
+ BreadcrumbList.displayName = "BreadcrumbList";
199
+ var BreadcrumbItem = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx3(
200
+ "li",
201
+ {
202
+ ref,
203
+ className: cn("inline-flex items-center gap-1.5", className),
204
+ ...props
205
+ }
206
+ ));
207
+ BreadcrumbItem.displayName = "BreadcrumbItem";
208
+ var BreadcrumbLink = React4.forwardRef(({ asChild, className, ...props }, ref) => {
209
+ const Comp = asChild ? Slot : "a";
210
+ return /* @__PURE__ */ jsx3(
211
+ Comp,
212
+ {
213
+ ref,
214
+ className: cn("transition-colors hover:text-foreground", className),
215
+ ...props
216
+ }
217
+ );
218
+ });
219
+ BreadcrumbLink.displayName = "BreadcrumbLink";
220
+ var BreadcrumbPage = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx3(
221
+ "span",
222
+ {
223
+ ref,
224
+ role: "link",
225
+ "aria-disabled": "true",
226
+ "aria-current": "page",
227
+ className: cn("font-normal text-foreground", className),
228
+ ...props
229
+ }
230
+ ));
231
+ BreadcrumbPage.displayName = "BreadcrumbPage";
232
+ var BreadcrumbSeparator = ({
233
+ children,
234
+ className,
235
+ ...props
236
+ }) => /* @__PURE__ */ jsx3(
237
+ "li",
238
+ {
239
+ role: "presentation",
240
+ "aria-hidden": "true",
241
+ className: cn("[&>svg]:w-3.5 [&>svg]:h-3.5", className),
242
+ ...props,
243
+ children: children ?? /* @__PURE__ */ jsx3(ChevronRight, {})
244
+ }
245
+ );
246
+ BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
247
+ var BreadcrumbEllipsis = ({
248
+ className,
249
+ ...props
250
+ }) => /* @__PURE__ */ jsxs(
251
+ "span",
252
+ {
253
+ role: "presentation",
254
+ "aria-hidden": "true",
255
+ className: cn("flex h-9 w-9 items-center justify-center", className),
256
+ ...props,
257
+ children: [
258
+ /* @__PURE__ */ jsx3(MoreHorizontal, { className: "h-4 w-4" }),
259
+ /* @__PURE__ */ jsx3("span", { className: "sr-only", children: "More" })
260
+ ]
261
+ }
262
+ );
263
+ BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
264
+
265
+ // src/button.tsx
266
+ import * as React5 from "react";
267
+ import { cva as cva2 } from "class-variance-authority";
268
+ import { jsx as jsx4 } from "react/jsx-runtime";
269
+ var buttonVariants = cva2(
270
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
271
+ {
272
+ variants: {
273
+ variant: {
274
+ default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
275
+ destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
276
+ outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
277
+ secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
278
+ ghost: "hover:bg-accent hover:text-accent-foreground",
279
+ link: "text-primary underline-offset-4 hover:underline"
280
+ },
281
+ size: {
282
+ default: "h-9 px-4 py-2",
283
+ sm: "h-8 rounded-md px-3 text-xs",
284
+ lg: "h-10 rounded-md px-8",
285
+ icon: "h-9 w-9"
286
+ },
287
+ rounded: {
288
+ default: "rounded-md",
289
+ sm: "rounded-sm",
290
+ lg: "rounded-lg",
291
+ xl: "rounded-xl",
292
+ "2xl": "rounded-2xl",
293
+ full: "rounded-full"
294
+ }
295
+ },
296
+ defaultVariants: {
297
+ variant: "default",
298
+ size: "default",
299
+ rounded: "default"
300
+ }
301
+ }
302
+ );
303
+ var Button = React5.forwardRef(
304
+ ({ className, variant, size, rounded, asChild = false, ...props }, ref) => {
305
+ const Comp = asChild ? Slot : "button";
306
+ return /* @__PURE__ */ jsx4(
307
+ Comp,
308
+ {
309
+ className: cn(buttonVariants({ variant, size, rounded, className })),
310
+ ref,
311
+ ...props
312
+ }
313
+ );
314
+ }
315
+ );
316
+ Button.displayName = "Button";
317
+
318
+ // src/command.tsx
319
+ import * as React7 from "react";
320
+ import { Command as CommandPrimitive } from "cmdk";
321
+ import { Search } from "lucide-react";
322
+
323
+ // src/dialog.tsx
324
+ import * as React6 from "react";
325
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
326
+ import { X } from "lucide-react";
327
+ import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
328
+ var Dialog = DialogPrimitive.Root;
329
+ var DialogTrigger = DialogPrimitive.Trigger;
330
+ var DialogPortal = DialogPrimitive.Portal;
331
+ var DialogClose = DialogPrimitive.Close;
332
+ var DialogOverlay = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
333
+ DialogPrimitive.Overlay,
334
+ {
335
+ ref,
336
+ className: cn(
337
+ "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",
338
+ className
339
+ ),
340
+ ...props
341
+ }
342
+ ));
343
+ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
344
+ var DialogContent = React6.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs2(DialogPortal, { children: [
345
+ /* @__PURE__ */ jsx5(DialogOverlay, {}),
346
+ /* @__PURE__ */ jsxs2(
347
+ DialogPrimitive.Content,
348
+ {
349
+ ref,
350
+ className: cn(
351
+ "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",
352
+ className
353
+ ),
354
+ ...props,
355
+ children: [
356
+ children,
357
+ /* @__PURE__ */ jsxs2(DialogPrimitive.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-accent data-[state=open]:text-muted-foreground", children: [
358
+ /* @__PURE__ */ jsx5(X, { className: "h-4 w-4" }),
359
+ /* @__PURE__ */ jsx5("span", { className: "sr-only", children: "Close" })
360
+ ] })
361
+ ]
362
+ }
363
+ )
364
+ ] }));
365
+ DialogContent.displayName = DialogPrimitive.Content.displayName;
366
+ var DialogHeader = ({
367
+ className,
368
+ ...props
369
+ }) => /* @__PURE__ */ jsx5(
370
+ "div",
371
+ {
372
+ className: cn(
373
+ "flex flex-col space-y-1.5 text-center sm:text-left",
374
+ className
375
+ ),
376
+ ...props
377
+ }
378
+ );
379
+ DialogHeader.displayName = "DialogHeader";
380
+ var DialogFooter = ({
381
+ className,
382
+ ...props
383
+ }) => /* @__PURE__ */ jsx5(
384
+ "div",
385
+ {
386
+ className: cn(
387
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
388
+ className
389
+ ),
390
+ ...props
391
+ }
392
+ );
393
+ DialogFooter.displayName = "DialogFooter";
394
+ var DialogTitle = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
395
+ DialogPrimitive.Title,
396
+ {
397
+ ref,
398
+ className: cn(
399
+ "text-lg font-semibold leading-none tracking-tight",
400
+ className
401
+ ),
402
+ ...props
403
+ }
404
+ ));
405
+ DialogTitle.displayName = DialogPrimitive.Title.displayName;
406
+ var DialogDescription = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
407
+ DialogPrimitive.Description,
408
+ {
409
+ ref,
410
+ className: cn("text-sm text-muted-foreground", className),
411
+ ...props
412
+ }
413
+ ));
414
+ DialogDescription.displayName = DialogPrimitive.Description.displayName;
415
+
416
+ // src/command.tsx
417
+ import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
418
+ var Command = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx6(
419
+ CommandPrimitive,
420
+ {
421
+ ref,
422
+ className: cn(
423
+ "flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",
424
+ className
425
+ ),
426
+ ...props
427
+ }
428
+ ));
429
+ Command.displayName = CommandPrimitive.displayName;
430
+ var CommandDialog = ({ children, ...props }) => {
431
+ return /* @__PURE__ */ jsx6(Dialog, { ...props, children: /* @__PURE__ */ jsx6(DialogContent, { className: "overflow-hidden p-0", children: /* @__PURE__ */ jsx6(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 }) }) });
432
+ };
433
+ var CommandInput = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs3("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: [
434
+ /* @__PURE__ */ jsx6(Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
435
+ /* @__PURE__ */ jsx6(
436
+ CommandPrimitive.Input,
437
+ {
438
+ ref,
439
+ className: cn(
440
+ "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",
441
+ className
442
+ ),
443
+ ...props
444
+ }
445
+ )
446
+ ] }));
447
+ CommandInput.displayName = CommandPrimitive.Input.displayName;
448
+ var CommandList = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx6(
449
+ CommandPrimitive.List,
450
+ {
451
+ ref,
452
+ className: cn("max-h-[300px] overflow-y-auto overflow-x-hidden", className),
453
+ ...props
454
+ }
455
+ ));
456
+ CommandList.displayName = CommandPrimitive.List.displayName;
457
+ var CommandEmpty = React7.forwardRef((props, ref) => /* @__PURE__ */ jsx6(
458
+ CommandPrimitive.Empty,
459
+ {
460
+ ref,
461
+ className: "py-6 text-center text-sm",
462
+ ...props
463
+ }
464
+ ));
465
+ CommandEmpty.displayName = CommandPrimitive.Empty.displayName;
466
+ var CommandGroup = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx6(
467
+ CommandPrimitive.Group,
468
+ {
469
+ ref,
470
+ className: cn(
471
+ "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",
472
+ className
473
+ ),
474
+ ...props
475
+ }
476
+ ));
477
+ CommandGroup.displayName = CommandPrimitive.Group.displayName;
478
+ var CommandSeparator = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx6(
479
+ CommandPrimitive.Separator,
480
+ {
481
+ ref,
482
+ className: cn("-mx-1 h-px bg-border", className),
483
+ ...props
484
+ }
485
+ ));
486
+ CommandSeparator.displayName = CommandPrimitive.Separator.displayName;
487
+ var CommandItem = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx6(
488
+ CommandPrimitive.Item,
489
+ {
490
+ ref,
491
+ className: cn(
492
+ "relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
493
+ className
494
+ ),
495
+ ...props
496
+ }
497
+ ));
498
+ CommandItem.displayName = CommandPrimitive.Item.displayName;
499
+ var CommandShortcut = ({
500
+ className,
501
+ ...props
502
+ }) => {
503
+ return /* @__PURE__ */ jsx6(
504
+ "span",
505
+ {
506
+ className: cn(
507
+ "ml-auto text-xs tracking-widest text-muted-foreground",
508
+ className
509
+ ),
510
+ ...props
511
+ }
512
+ );
513
+ };
514
+ CommandShortcut.displayName = "CommandShortcut";
515
+
516
+ // src/hooks/use-mobile.tsx
517
+ import { useEffect, useState } from "react";
518
+ var MOBILE_BREAKPOINT = 768;
519
+ function useIsMobile() {
520
+ const [isMobile, setIsMobile] = useState(void 0);
521
+ useEffect(() => {
522
+ const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
523
+ const onChange = () => {
524
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
525
+ };
526
+ mql.addEventListener("change", onChange);
527
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
528
+ return () => mql.removeEventListener("change", onChange);
529
+ }, []);
530
+ return !!isMobile;
531
+ }
532
+
533
+ // src/input.tsx
534
+ import * as React8 from "react";
535
+ import { jsx as jsx7 } from "react/jsx-runtime";
536
+ var Input = React8.forwardRef(
537
+ ({ className, type, ...props }, ref) => {
538
+ return /* @__PURE__ */ jsx7(
539
+ "input",
540
+ {
541
+ type,
542
+ className: cn(
543
+ "flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors 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-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
544
+ className
545
+ ),
546
+ ref,
547
+ ...props
548
+ }
549
+ );
550
+ }
551
+ );
552
+ Input.displayName = "Input";
553
+
554
+ // src/popover.tsx
555
+ import * as React9 from "react";
556
+ import * as PopoverPrimitive from "@radix-ui/react-popover";
557
+ import { jsx as jsx8 } from "react/jsx-runtime";
558
+ var Popover = PopoverPrimitive.Root;
559
+ var PopoverTrigger = PopoverPrimitive.Trigger;
560
+ var PopoverAnchor = PopoverPrimitive.Anchor;
561
+ var PopoverContent = React9.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx8(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx8(
562
+ PopoverPrimitive.Content,
563
+ {
564
+ ref,
565
+ align,
566
+ sideOffset,
567
+ className: cn(
568
+ "z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
569
+ className
570
+ ),
571
+ ...props
572
+ }
573
+ ) }));
574
+ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
575
+
576
+ // src/select.tsx
577
+ import * as React10 from "react";
578
+ import * as SelectPrimitive from "@radix-ui/react-select";
579
+ import { Check, ChevronDown, ChevronUp } from "lucide-react";
580
+ import { jsx as jsx9, jsxs as jsxs4 } from "react/jsx-runtime";
581
+ var Select = SelectPrimitive.Root;
582
+ var SelectGroup = SelectPrimitive.Group;
583
+ var SelectValue = SelectPrimitive.Value;
584
+ var SelectTrigger = React10.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs4(
585
+ SelectPrimitive.Trigger,
586
+ {
587
+ ref,
588
+ className: cn(
589
+ "flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
590
+ className
591
+ ),
592
+ ...props,
593
+ children: [
594
+ children,
595
+ /* @__PURE__ */ jsx9(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx9(ChevronDown, { className: "h-4 w-4 opacity-50" }) })
596
+ ]
597
+ }
598
+ ));
599
+ SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
600
+ var SelectScrollUpButton = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(
601
+ SelectPrimitive.ScrollUpButton,
602
+ {
603
+ ref,
604
+ className: cn(
605
+ "flex cursor-default items-center justify-center py-1",
606
+ className
607
+ ),
608
+ ...props,
609
+ children: /* @__PURE__ */ jsx9(ChevronUp, { className: "h-4 w-4" })
610
+ }
611
+ ));
612
+ SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
613
+ var SelectScrollDownButton = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(
614
+ SelectPrimitive.ScrollDownButton,
615
+ {
616
+ ref,
617
+ className: cn(
618
+ "flex cursor-default items-center justify-center py-1",
619
+ className
620
+ ),
621
+ ...props,
622
+ children: /* @__PURE__ */ jsx9(ChevronDown, { className: "h-4 w-4" })
623
+ }
624
+ ));
625
+ SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
626
+ var SelectContent = React10.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx9(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs4(
627
+ SelectPrimitive.Content,
628
+ {
629
+ ref,
630
+ className: cn(
631
+ "relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md 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",
632
+ position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
633
+ className
634
+ ),
635
+ position,
636
+ ...props,
637
+ children: [
638
+ /* @__PURE__ */ jsx9(SelectScrollUpButton, {}),
639
+ /* @__PURE__ */ jsx9(
640
+ SelectPrimitive.Viewport,
641
+ {
642
+ className: cn(
643
+ "p-1",
644
+ position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
645
+ ),
646
+ children
647
+ }
648
+ ),
649
+ /* @__PURE__ */ jsx9(SelectScrollDownButton, {})
650
+ ]
651
+ }
652
+ ) }));
653
+ SelectContent.displayName = SelectPrimitive.Content.displayName;
654
+ var SelectLabel = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(
655
+ SelectPrimitive.Label,
656
+ {
657
+ ref,
658
+ className: cn("px-2 py-1.5 text-sm font-semibold", className),
659
+ ...props
660
+ }
661
+ ));
662
+ SelectLabel.displayName = SelectPrimitive.Label.displayName;
663
+ var SelectItem = React10.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs4(
664
+ SelectPrimitive.Item,
665
+ {
666
+ ref,
667
+ className: cn(
668
+ "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
669
+ className
670
+ ),
671
+ ...props,
672
+ children: [
673
+ /* @__PURE__ */ jsx9("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx9(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx9(Check, { className: "h-4 w-4" }) }) }),
674
+ /* @__PURE__ */ jsx9(SelectPrimitive.ItemText, { children })
675
+ ]
676
+ }
677
+ ));
678
+ SelectItem.displayName = SelectPrimitive.Item.displayName;
679
+ var SelectSeparator = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(
680
+ SelectPrimitive.Separator,
681
+ {
682
+ ref,
683
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
684
+ ...props
685
+ }
686
+ ));
687
+ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
688
+
689
+ // src/separator.tsx
690
+ import * as React11 from "react";
691
+ import * as SeparatorPrimitive from "@radix-ui/react-separator";
692
+ import { jsx as jsx10 } from "react/jsx-runtime";
693
+ var Separator2 = React11.forwardRef(
694
+ ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx10(
695
+ SeparatorPrimitive.Root,
696
+ {
697
+ ref,
698
+ decorative,
699
+ orientation,
700
+ className: cn(
701
+ "shrink-0 bg-border",
702
+ orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
703
+ className
704
+ ),
705
+ ...props
706
+ }
707
+ )
708
+ );
709
+ Separator2.displayName = SeparatorPrimitive.Root.displayName;
710
+
711
+ // src/sheet.tsx
712
+ import * as React12 from "react";
713
+ import * as SheetPrimitive from "@radix-ui/react-dialog";
714
+ import { cva as cva3 } from "class-variance-authority";
715
+ import { X as X2 } from "lucide-react";
716
+ import { jsx as jsx11, jsxs as jsxs5 } from "react/jsx-runtime";
717
+ var Sheet = SheetPrimitive.Root;
718
+ var SheetTrigger = SheetPrimitive.Trigger;
719
+ var SheetClose = SheetPrimitive.Close;
720
+ var SheetPortal = SheetPrimitive.Portal;
721
+ var SheetOverlay = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
722
+ SheetPrimitive.Overlay,
723
+ {
724
+ className: cn(
725
+ "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",
726
+ className
727
+ ),
728
+ ...props,
729
+ ref
730
+ }
731
+ ));
732
+ SheetOverlay.displayName = SheetPrimitive.Overlay.displayName;
733
+ var sheetVariants = cva3(
734
+ "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out",
735
+ {
736
+ variants: {
737
+ side: {
738
+ top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
739
+ bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
740
+ 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",
741
+ 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"
742
+ }
743
+ },
744
+ defaultVariants: {
745
+ side: "right"
746
+ }
747
+ }
748
+ );
749
+ var SheetContent = React12.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs5(SheetPortal, { children: [
750
+ /* @__PURE__ */ jsx11(SheetOverlay, {}),
751
+ /* @__PURE__ */ jsxs5(
752
+ SheetPrimitive.Content,
753
+ {
754
+ ref,
755
+ className: cn(sheetVariants({ side }), className),
756
+ ...props,
757
+ children: [
758
+ /* @__PURE__ */ jsxs5(SheetPrimitive.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: [
759
+ /* @__PURE__ */ jsx11(X2, { className: "h-4 w-4" }),
760
+ /* @__PURE__ */ jsx11("span", { className: "sr-only", children: "Close" })
761
+ ] }),
762
+ children
763
+ ]
764
+ }
765
+ )
766
+ ] }));
767
+ SheetContent.displayName = SheetPrimitive.Content.displayName;
768
+ var SheetHeader = ({
769
+ className,
770
+ ...props
771
+ }) => /* @__PURE__ */ jsx11(
772
+ "div",
773
+ {
774
+ className: cn(
775
+ "flex flex-col space-y-2 text-center sm:text-left",
776
+ className
777
+ ),
778
+ ...props
779
+ }
780
+ );
781
+ SheetHeader.displayName = "SheetHeader";
782
+ var SheetFooter = ({
783
+ className,
784
+ ...props
785
+ }) => /* @__PURE__ */ jsx11(
786
+ "div",
787
+ {
788
+ className: cn(
789
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
790
+ className
791
+ ),
792
+ ...props
793
+ }
794
+ );
795
+ SheetFooter.displayName = "SheetFooter";
796
+ var SheetTitle = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
797
+ SheetPrimitive.Title,
798
+ {
799
+ ref,
800
+ className: cn("text-lg font-semibold text-foreground", className),
801
+ ...props
802
+ }
803
+ ));
804
+ SheetTitle.displayName = SheetPrimitive.Title.displayName;
805
+ var SheetDescription = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
806
+ SheetPrimitive.Description,
807
+ {
808
+ ref,
809
+ className: cn("text-sm text-muted-foreground", className),
810
+ ...props
811
+ }
812
+ ));
813
+ SheetDescription.displayName = SheetPrimitive.Description.displayName;
814
+
815
+ // src/sidebar.tsx
816
+ import * as React14 from "react";
817
+ import { cva as cva4 } from "class-variance-authority";
818
+ import { PanelLeft } from "lucide-react";
819
+
820
+ // src/skeleton.tsx
821
+ import { jsx as jsx12 } from "react/jsx-runtime";
822
+ function Skeleton({
823
+ className,
824
+ ...props
825
+ }) {
826
+ return /* @__PURE__ */ jsx12(
827
+ "div",
828
+ {
829
+ className: cn("animate-pulse rounded-md bg-primary/10", className),
830
+ ...props
831
+ }
832
+ );
833
+ }
834
+
835
+ // src/tooltip.tsx
836
+ import * as React13 from "react";
837
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
838
+ import { jsx as jsx13 } from "react/jsx-runtime";
839
+ var TooltipProvider = TooltipPrimitive.Provider;
840
+ var Tooltip = TooltipPrimitive.Root;
841
+ var TooltipTrigger = TooltipPrimitive.Trigger;
842
+ var TooltipContent = React13.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx13(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx13(
843
+ TooltipPrimitive.Content,
844
+ {
845
+ ref,
846
+ sideOffset,
847
+ className: cn(
848
+ "z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
849
+ className
850
+ ),
851
+ ...props
852
+ }
853
+ ) }));
854
+ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
855
+
856
+ // src/sidebar.tsx
857
+ import { jsx as jsx14, jsxs as jsxs6 } from "react/jsx-runtime";
858
+ var SIDEBAR_COOKIE_NAME = "sidebar_state";
859
+ var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
860
+ var SIDEBAR_WIDTH = "16rem";
861
+ var SIDEBAR_WIDTH_MOBILE = "18rem";
862
+ var SIDEBAR_WIDTH_ICON = "3rem";
863
+ var SIDEBAR_KEYBOARD_SHORTCUT = "b";
864
+ var SidebarContext = React14.createContext(null);
865
+ function useSidebar() {
866
+ const context = React14.useContext(SidebarContext);
867
+ if (!context) {
868
+ throw new Error("useSidebar must be used within a SidebarProvider.");
869
+ }
870
+ return context;
871
+ }
872
+ var SidebarProvider = React14.forwardRef(
873
+ ({
874
+ defaultOpen = true,
875
+ open: openProp,
876
+ onOpenChange: setOpenProp,
877
+ className,
878
+ style,
879
+ children,
880
+ ...props
881
+ }, ref) => {
882
+ const isMobile = useIsMobile();
883
+ const [openMobile, setOpenMobile] = React14.useState(false);
884
+ const [_open, _setOpen] = React14.useState(defaultOpen);
885
+ const open = openProp ?? _open;
886
+ const setOpen = React14.useCallback(
887
+ (value) => {
888
+ const openState = typeof value === "function" ? value(open) : value;
889
+ if (setOpenProp) {
890
+ setOpenProp(openState);
891
+ } else {
892
+ _setOpen(openState);
893
+ }
894
+ document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
895
+ },
896
+ [setOpenProp, open]
897
+ );
898
+ const toggleSidebar = React14.useCallback(() => {
899
+ return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
900
+ }, [isMobile, setOpen, setOpenMobile]);
901
+ React14.useEffect(() => {
902
+ const handleKeyDown = (event) => {
903
+ if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
904
+ event.preventDefault();
905
+ toggleSidebar();
906
+ }
907
+ };
908
+ window.addEventListener("keydown", handleKeyDown);
909
+ return () => window.removeEventListener("keydown", handleKeyDown);
910
+ }, [toggleSidebar]);
911
+ const state = open ? "expanded" : "collapsed";
912
+ const contextValue = React14.useMemo(
913
+ () => ({
914
+ state,
915
+ open,
916
+ setOpen,
917
+ isMobile,
918
+ openMobile,
919
+ setOpenMobile,
920
+ toggleSidebar
921
+ }),
922
+ [
923
+ state,
924
+ open,
925
+ setOpen,
926
+ isMobile,
927
+ openMobile,
928
+ setOpenMobile,
929
+ toggleSidebar
930
+ ]
931
+ );
932
+ return /* @__PURE__ */ jsx14(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx14(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx14(
933
+ "div",
934
+ {
935
+ style: {
936
+ "--sidebar-width": SIDEBAR_WIDTH,
937
+ "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
938
+ ...style
939
+ },
940
+ className: cn(
941
+ "group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar",
942
+ className
943
+ ),
944
+ ref,
945
+ ...props,
946
+ children
947
+ }
948
+ ) }) });
949
+ }
950
+ );
951
+ SidebarProvider.displayName = "SidebarProvider";
952
+ var Sidebar = React14.forwardRef(
953
+ ({
954
+ side = "left",
955
+ variant = "sidebar",
956
+ collapsible = "offcanvas",
957
+ className,
958
+ children,
959
+ ...props
960
+ }, ref) => {
961
+ const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
962
+ if (collapsible === "none") {
963
+ return /* @__PURE__ */ jsx14(
964
+ "div",
965
+ {
966
+ className: cn(
967
+ "flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground",
968
+ className
969
+ ),
970
+ ref,
971
+ ...props,
972
+ children
973
+ }
974
+ );
975
+ }
976
+ if (isMobile) {
977
+ return /* @__PURE__ */ jsx14(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs6(
978
+ SheetContent,
979
+ {
980
+ "data-sidebar": "sidebar",
981
+ "data-mobile": "true",
982
+ className: "w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",
983
+ style: {
984
+ "--sidebar-width": SIDEBAR_WIDTH_MOBILE
985
+ },
986
+ side,
987
+ children: [
988
+ /* @__PURE__ */ jsxs6(SheetHeader, { className: "sr-only", children: [
989
+ /* @__PURE__ */ jsx14(SheetTitle, { children: "Sidebar" }),
990
+ /* @__PURE__ */ jsx14(SheetDescription, { children: "Displays the mobile sidebar." })
991
+ ] }),
992
+ /* @__PURE__ */ jsx14("div", { className: "flex h-full w-full flex-col", children })
993
+ ]
994
+ }
995
+ ) });
996
+ }
997
+ return /* @__PURE__ */ jsxs6(
998
+ "div",
999
+ {
1000
+ ref,
1001
+ className: "group peer hidden text-sidebar-foreground md:block",
1002
+ "data-state": state,
1003
+ "data-collapsible": state === "collapsed" ? collapsible : "",
1004
+ "data-variant": variant,
1005
+ "data-side": side,
1006
+ children: [
1007
+ /* @__PURE__ */ jsx14(
1008
+ "div",
1009
+ {
1010
+ className: cn(
1011
+ "relative w-[--sidebar-width] bg-transparent transition-[width] duration-200 ease-linear",
1012
+ "group-data-[collapsible=offcanvas]:w-0",
1013
+ "group-data-[side=right]:rotate-180",
1014
+ 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]"
1015
+ )
1016
+ }
1017
+ ),
1018
+ /* @__PURE__ */ jsx14(
1019
+ "div",
1020
+ {
1021
+ className: cn(
1022
+ "fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] duration-200 ease-linear md:flex",
1023
+ 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)]",
1024
+ // Adjust the padding for floating and inset variants.
1025
+ 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",
1026
+ className
1027
+ ),
1028
+ ...props,
1029
+ children: /* @__PURE__ */ jsx14(
1030
+ "div",
1031
+ {
1032
+ "data-sidebar": "sidebar",
1033
+ 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",
1034
+ children
1035
+ }
1036
+ )
1037
+ }
1038
+ )
1039
+ ]
1040
+ }
1041
+ );
1042
+ }
1043
+ );
1044
+ Sidebar.displayName = "Sidebar";
1045
+ var SidebarTrigger = React14.forwardRef(({ className, onClick, ...props }, ref) => {
1046
+ const { toggleSidebar } = useSidebar();
1047
+ return /* @__PURE__ */ jsxs6(
1048
+ Button,
1049
+ {
1050
+ ref,
1051
+ "data-sidebar": "trigger",
1052
+ variant: "ghost",
1053
+ size: "icon",
1054
+ className: cn("h-7 w-7", className),
1055
+ onClick: (event) => {
1056
+ onClick?.(event);
1057
+ toggleSidebar();
1058
+ },
1059
+ ...props,
1060
+ children: [
1061
+ /* @__PURE__ */ jsx14(PanelLeft, {}),
1062
+ /* @__PURE__ */ jsx14("span", { className: "sr-only", children: "Toggle Sidebar" })
1063
+ ]
1064
+ }
1065
+ );
1066
+ });
1067
+ SidebarTrigger.displayName = "SidebarTrigger";
1068
+ var SidebarRail = React14.forwardRef(({ className, ...props }, ref) => {
1069
+ const { toggleSidebar } = useSidebar();
1070
+ return /* @__PURE__ */ jsx14(
1071
+ "button",
1072
+ {
1073
+ ref,
1074
+ "data-sidebar": "rail",
1075
+ "aria-label": "Toggle Sidebar",
1076
+ tabIndex: -1,
1077
+ onClick: toggleSidebar,
1078
+ title: "Toggle Sidebar",
1079
+ className: cn(
1080
+ "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",
1081
+ "[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize",
1082
+ "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
1083
+ "group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar",
1084
+ "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
1085
+ "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
1086
+ className
1087
+ ),
1088
+ ...props
1089
+ }
1090
+ );
1091
+ });
1092
+ SidebarRail.displayName = "SidebarRail";
1093
+ var SidebarInset = React14.forwardRef(({ className, ...props }, ref) => {
1094
+ return /* @__PURE__ */ jsx14(
1095
+ "main",
1096
+ {
1097
+ ref,
1098
+ className: cn(
1099
+ "relative flex w-full flex-1 flex-col bg-background",
1100
+ "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",
1101
+ className
1102
+ ),
1103
+ ...props
1104
+ }
1105
+ );
1106
+ });
1107
+ SidebarInset.displayName = "SidebarInset";
1108
+ var SidebarInput = React14.forwardRef(({ className, ...props }, ref) => {
1109
+ return /* @__PURE__ */ jsx14(
1110
+ Input,
1111
+ {
1112
+ ref,
1113
+ "data-sidebar": "input",
1114
+ className: cn(
1115
+ "h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",
1116
+ className
1117
+ ),
1118
+ ...props
1119
+ }
1120
+ );
1121
+ });
1122
+ SidebarInput.displayName = "SidebarInput";
1123
+ var SidebarHeader = React14.forwardRef(({ className, ...props }, ref) => {
1124
+ return /* @__PURE__ */ jsx14(
1125
+ "div",
1126
+ {
1127
+ ref,
1128
+ "data-sidebar": "header",
1129
+ className: cn("flex flex-col gap-2 p-2", className),
1130
+ ...props
1131
+ }
1132
+ );
1133
+ });
1134
+ SidebarHeader.displayName = "SidebarHeader";
1135
+ var SidebarFooter = React14.forwardRef(({ className, ...props }, ref) => {
1136
+ return /* @__PURE__ */ jsx14(
1137
+ "div",
1138
+ {
1139
+ ref,
1140
+ "data-sidebar": "footer",
1141
+ className: cn("flex flex-col gap-2 p-2", className),
1142
+ ...props
1143
+ }
1144
+ );
1145
+ });
1146
+ SidebarFooter.displayName = "SidebarFooter";
1147
+ var SidebarSeparator = React14.forwardRef(({ className, ...props }, ref) => {
1148
+ return /* @__PURE__ */ jsx14(
1149
+ Separator2,
1150
+ {
1151
+ ref,
1152
+ "data-sidebar": "separator",
1153
+ className: cn("mx-2 w-auto bg-sidebar-border", className),
1154
+ ...props
1155
+ }
1156
+ );
1157
+ });
1158
+ SidebarSeparator.displayName = "SidebarSeparator";
1159
+ var SidebarContent = React14.forwardRef(({ className, ...props }, ref) => {
1160
+ return /* @__PURE__ */ jsx14(
1161
+ "div",
1162
+ {
1163
+ ref,
1164
+ "data-sidebar": "content",
1165
+ className: cn(
1166
+ "flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",
1167
+ className
1168
+ ),
1169
+ ...props
1170
+ }
1171
+ );
1172
+ });
1173
+ SidebarContent.displayName = "SidebarContent";
1174
+ var SidebarGroup = React14.forwardRef(({ className, ...props }, ref) => {
1175
+ return /* @__PURE__ */ jsx14(
1176
+ "div",
1177
+ {
1178
+ ref,
1179
+ "data-sidebar": "group",
1180
+ className: cn("relative flex w-full min-w-0 flex-col p-2", className),
1181
+ ...props
1182
+ }
1183
+ );
1184
+ });
1185
+ SidebarGroup.displayName = "SidebarGroup";
1186
+ var SidebarGroupLabel = React14.forwardRef(({ className, asChild = false, ...props }, ref) => {
1187
+ const Comp = asChild ? Slot : "div";
1188
+ return /* @__PURE__ */ jsx14(
1189
+ Comp,
1190
+ {
1191
+ ref,
1192
+ "data-sidebar": "group-label",
1193
+ className: cn(
1194
+ "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",
1195
+ "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",
1196
+ className
1197
+ ),
1198
+ ...props
1199
+ }
1200
+ );
1201
+ });
1202
+ SidebarGroupLabel.displayName = "SidebarGroupLabel";
1203
+ var SidebarGroupAction = React14.forwardRef(({ className, asChild = false, ...props }, ref) => {
1204
+ const Comp = asChild ? Slot : "button";
1205
+ return /* @__PURE__ */ jsx14(
1206
+ Comp,
1207
+ {
1208
+ ref,
1209
+ "data-sidebar": "group-action",
1210
+ className: cn(
1211
+ "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",
1212
+ // Increases the hit area of the button on mobile.
1213
+ "after:absolute after:-inset-2 after:md:hidden",
1214
+ "group-data-[collapsible=icon]:hidden",
1215
+ className
1216
+ ),
1217
+ ...props
1218
+ }
1219
+ );
1220
+ });
1221
+ SidebarGroupAction.displayName = "SidebarGroupAction";
1222
+ var SidebarGroupContent = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx14(
1223
+ "div",
1224
+ {
1225
+ ref,
1226
+ "data-sidebar": "group-content",
1227
+ className: cn("w-full text-sm", className),
1228
+ ...props
1229
+ }
1230
+ ));
1231
+ SidebarGroupContent.displayName = "SidebarGroupContent";
1232
+ var SidebarMenu = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx14(
1233
+ "ul",
1234
+ {
1235
+ ref,
1236
+ "data-sidebar": "menu",
1237
+ className: cn("flex w-full min-w-0 flex-col gap-1", className),
1238
+ ...props
1239
+ }
1240
+ ));
1241
+ SidebarMenu.displayName = "SidebarMenu";
1242
+ var SidebarMenuItem = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx14(
1243
+ "li",
1244
+ {
1245
+ ref,
1246
+ "data-sidebar": "menu-item",
1247
+ className: cn("group/menu-item relative", className),
1248
+ ...props
1249
+ }
1250
+ ));
1251
+ SidebarMenuItem.displayName = "SidebarMenuItem";
1252
+ var sidebarMenuButtonVariants = cva4(
1253
+ "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm 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]: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",
1254
+ {
1255
+ variants: {
1256
+ variant: {
1257
+ default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
1258
+ 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))]"
1259
+ },
1260
+ size: {
1261
+ default: "text-sm",
1262
+ sm: "text-xs",
1263
+ lg: "text-sm group-data-[collapsible=icon]:!p-0"
1264
+ }
1265
+ },
1266
+ defaultVariants: {
1267
+ variant: "default",
1268
+ size: "default"
1269
+ }
1270
+ }
1271
+ );
1272
+ var SidebarMenuButton = React14.forwardRef(
1273
+ ({
1274
+ asChild = false,
1275
+ isActive = false,
1276
+ variant = "default",
1277
+ size = "default",
1278
+ tooltip,
1279
+ className,
1280
+ ...props
1281
+ }, ref) => {
1282
+ const Comp = asChild ? Slot : "button";
1283
+ const { isMobile, state } = useSidebar();
1284
+ const button = /* @__PURE__ */ jsx14(
1285
+ Comp,
1286
+ {
1287
+ ref,
1288
+ "data-sidebar": "menu-button",
1289
+ "data-size": size,
1290
+ "data-active": isActive,
1291
+ className: cn(
1292
+ isActive && "font-bold",
1293
+ sidebarMenuButtonVariants({ variant, size }),
1294
+ className
1295
+ ),
1296
+ ...props
1297
+ }
1298
+ );
1299
+ if (!tooltip) {
1300
+ return button;
1301
+ }
1302
+ if (typeof tooltip === "string") {
1303
+ tooltip = {
1304
+ children: tooltip
1305
+ };
1306
+ }
1307
+ return /* @__PURE__ */ jsxs6(Tooltip, { children: [
1308
+ /* @__PURE__ */ jsx14(TooltipTrigger, { asChild: true, children: button }),
1309
+ /* @__PURE__ */ jsx14(
1310
+ TooltipContent,
1311
+ {
1312
+ side: "right",
1313
+ align: "center",
1314
+ hidden: state !== "collapsed" || isMobile,
1315
+ ...tooltip
1316
+ }
1317
+ )
1318
+ ] });
1319
+ }
1320
+ );
1321
+ SidebarMenuButton.displayName = "SidebarMenuButton";
1322
+ var SidebarMenuAction = React14.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
1323
+ const Comp = asChild ? Slot : "button";
1324
+ return /* @__PURE__ */ jsx14(
1325
+ Comp,
1326
+ {
1327
+ ref,
1328
+ "data-sidebar": "menu-action",
1329
+ className: cn(
1330
+ "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",
1331
+ // Increases the hit area of the button on mobile.
1332
+ "after:absolute after:-inset-2 after:md:hidden",
1333
+ "peer-data-[size=sm]/menu-button:top-1",
1334
+ "peer-data-[size=default]/menu-button:top-1.5",
1335
+ "peer-data-[size=lg]/menu-button:top-2.5",
1336
+ "group-data-[collapsible=icon]:hidden",
1337
+ 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",
1338
+ className
1339
+ ),
1340
+ ...props
1341
+ }
1342
+ );
1343
+ });
1344
+ SidebarMenuAction.displayName = "SidebarMenuAction";
1345
+ var SidebarMenuBadge = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx14(
1346
+ "div",
1347
+ {
1348
+ ref,
1349
+ "data-sidebar": "menu-badge",
1350
+ className: cn(
1351
+ "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",
1352
+ "peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground",
1353
+ "peer-data-[size=sm]/menu-button:top-1",
1354
+ "peer-data-[size=default]/menu-button:top-1.5",
1355
+ "peer-data-[size=lg]/menu-button:top-2.5",
1356
+ "group-data-[collapsible=icon]:hidden",
1357
+ className
1358
+ ),
1359
+ ...props
1360
+ }
1361
+ ));
1362
+ SidebarMenuBadge.displayName = "SidebarMenuBadge";
1363
+ var SidebarMenuSkeleton = React14.forwardRef(({ className, showIcon = false, ...props }, ref) => {
1364
+ const width = React14.useMemo(() => {
1365
+ return `${Math.floor(Math.random() * 40) + 50}%`;
1366
+ }, []);
1367
+ return /* @__PURE__ */ jsxs6(
1368
+ "div",
1369
+ {
1370
+ ref,
1371
+ "data-sidebar": "menu-skeleton",
1372
+ className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
1373
+ ...props,
1374
+ children: [
1375
+ showIcon && /* @__PURE__ */ jsx14(
1376
+ Skeleton,
1377
+ {
1378
+ className: "size-4 rounded-md",
1379
+ "data-sidebar": "menu-skeleton-icon"
1380
+ }
1381
+ ),
1382
+ /* @__PURE__ */ jsx14(
1383
+ Skeleton,
1384
+ {
1385
+ className: "h-4 max-w-[--skeleton-width] flex-1",
1386
+ "data-sidebar": "menu-skeleton-text",
1387
+ style: {
1388
+ "--skeleton-width": width
1389
+ }
1390
+ }
1391
+ )
1392
+ ]
1393
+ }
1394
+ );
1395
+ });
1396
+ SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
1397
+ var SidebarMenuSub = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx14(
1398
+ "ul",
1399
+ {
1400
+ ref,
1401
+ "data-sidebar": "menu-sub",
1402
+ className: cn(
1403
+ "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",
1404
+ "group-data-[collapsible=icon]:hidden",
1405
+ className
1406
+ ),
1407
+ ...props
1408
+ }
1409
+ ));
1410
+ SidebarMenuSub.displayName = "SidebarMenuSub";
1411
+ var SidebarMenuSubItem = React14.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx14("li", { ref, ...props }));
1412
+ SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
1413
+ var SidebarMenuSubButton = React14.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
1414
+ const Comp = asChild ? Slot : "a";
1415
+ return /* @__PURE__ */ jsx14(
1416
+ Comp,
1417
+ {
1418
+ ref,
1419
+ "data-sidebar": "menu-sub-button",
1420
+ "data-size": size,
1421
+ "data-active": isActive,
1422
+ className: cn(
1423
+ "flex min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md p-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",
1424
+ "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",
1425
+ size === "sm" && "text-xs",
1426
+ size === "md" && "text-sm",
1427
+ isActive && "font-bold",
1428
+ "group-data-[collapsible=icon]:hidden",
1429
+ className
1430
+ ),
1431
+ ...props
1432
+ }
1433
+ );
1434
+ });
1435
+ SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
1436
+
1437
+ // src/table.tsx
1438
+ import * as React15 from "react";
1439
+ import { jsx as jsx15 } from "react/jsx-runtime";
1440
+ var Table = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ jsx15(
1441
+ "table",
1442
+ {
1443
+ ref,
1444
+ className: cn("w-full caption-bottom text-sm", className),
1445
+ ...props
1446
+ }
1447
+ ) }));
1448
+ Table.displayName = "Table";
1449
+ var TableHeader = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
1450
+ TableHeader.displayName = "TableHeader";
1451
+ var TableBody = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15(
1452
+ "tbody",
1453
+ {
1454
+ ref,
1455
+ className: cn("[&_tr:last-child]:border-0", className),
1456
+ ...props
1457
+ }
1458
+ ));
1459
+ TableBody.displayName = "TableBody";
1460
+ var TableFooter = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15(
1461
+ "tfoot",
1462
+ {
1463
+ ref,
1464
+ className: cn(
1465
+ "border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",
1466
+ className
1467
+ ),
1468
+ ...props
1469
+ }
1470
+ ));
1471
+ TableFooter.displayName = "TableFooter";
1472
+ var TableRow = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15(
1473
+ "tr",
1474
+ {
1475
+ ref,
1476
+ className: cn(
1477
+ "border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",
1478
+ className
1479
+ ),
1480
+ ...props
1481
+ }
1482
+ ));
1483
+ TableRow.displayName = "TableRow";
1484
+ var TableHead = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15(
1485
+ "th",
1486
+ {
1487
+ ref,
1488
+ className: cn(
1489
+ "h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
1490
+ className
1491
+ ),
1492
+ ...props
1493
+ }
1494
+ ));
1495
+ TableHead.displayName = "TableHead";
1496
+ var TableCell = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15(
1497
+ "td",
1498
+ {
1499
+ ref,
1500
+ className: cn(
1501
+ "p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
1502
+ className
1503
+ ),
1504
+ ...props
1505
+ }
1506
+ ));
1507
+ TableCell.displayName = "TableCell";
1508
+ var TableCaption = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15(
1509
+ "caption",
1510
+ {
1511
+ ref,
1512
+ className: cn("mt-4 text-sm text-muted-foreground", className),
1513
+ ...props
1514
+ }
1515
+ ));
1516
+ TableCaption.displayName = "TableCaption";
1517
+ export {
1518
+ Alert,
1519
+ AlertDescription,
1520
+ AlertTitle,
1521
+ Breadcrumb,
1522
+ BreadcrumbEllipsis,
1523
+ BreadcrumbItem,
1524
+ BreadcrumbLink,
1525
+ BreadcrumbList,
1526
+ BreadcrumbPage,
1527
+ BreadcrumbSeparator,
1528
+ Button,
1529
+ Command,
1530
+ CommandDialog,
1531
+ CommandEmpty,
1532
+ CommandGroup,
1533
+ CommandInput,
1534
+ CommandItem,
1535
+ CommandList,
1536
+ CommandSeparator,
1537
+ CommandShortcut,
1538
+ Dialog,
1539
+ DialogClose,
1540
+ DialogContent,
1541
+ DialogDescription,
1542
+ DialogFooter,
1543
+ DialogHeader,
1544
+ DialogOverlay,
1545
+ DialogPortal,
1546
+ DialogTitle,
1547
+ DialogTrigger,
1548
+ Input,
1549
+ Popover,
1550
+ PopoverAnchor,
1551
+ PopoverContent,
1552
+ PopoverTrigger,
1553
+ Select,
1554
+ SelectContent,
1555
+ SelectGroup,
1556
+ SelectItem,
1557
+ SelectLabel,
1558
+ SelectScrollDownButton,
1559
+ SelectScrollUpButton,
1560
+ SelectSeparator,
1561
+ SelectTrigger,
1562
+ SelectValue,
1563
+ Separator2 as Separator,
1564
+ Sheet,
1565
+ SheetClose,
1566
+ SheetContent,
1567
+ SheetDescription,
1568
+ SheetFooter,
1569
+ SheetHeader,
1570
+ SheetOverlay,
1571
+ SheetPortal,
1572
+ SheetTitle,
1573
+ SheetTrigger,
1574
+ Sidebar,
1575
+ SidebarContent,
1576
+ SidebarFooter,
1577
+ SidebarGroup,
1578
+ SidebarGroupAction,
1579
+ SidebarGroupContent,
1580
+ SidebarGroupLabel,
1581
+ SidebarHeader,
1582
+ SidebarInput,
1583
+ SidebarInset,
1584
+ SidebarMenu,
1585
+ SidebarMenuAction,
1586
+ SidebarMenuBadge,
1587
+ SidebarMenuButton,
1588
+ SidebarMenuItem,
1589
+ SidebarMenuSkeleton,
1590
+ SidebarMenuSub,
1591
+ SidebarMenuSubButton,
1592
+ SidebarMenuSubItem,
1593
+ SidebarProvider,
1594
+ SidebarRail,
1595
+ SidebarSeparator,
1596
+ SidebarTrigger,
1597
+ Skeleton,
1598
+ Table,
1599
+ TableBody,
1600
+ TableCaption,
1601
+ TableCell,
1602
+ TableFooter,
1603
+ TableHead,
1604
+ TableHeader,
1605
+ TableRow,
1606
+ Tooltip,
1607
+ TooltipContent,
1608
+ TooltipProvider,
1609
+ TooltipTrigger,
1610
+ buttonVariants,
1611
+ cn,
1612
+ useIsMobile,
1613
+ useSidebar
1614
+ };
1615
+ //# sourceMappingURL=index.mjs.map