@teacharium/ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/README.md +69 -0
  2. package/dist/components/alert-dialog.d.ts +21 -0
  3. package/dist/components/alert-dialog.d.ts.map +1 -0
  4. package/dist/components/alert.d.ts +10 -0
  5. package/dist/components/alert.d.ts.map +1 -0
  6. package/dist/components/avatar.d.ts +7 -0
  7. package/dist/components/avatar.d.ts.map +1 -0
  8. package/dist/components/badge.d.ts +10 -0
  9. package/dist/components/badge.d.ts.map +1 -0
  10. package/dist/components/button.d.ts +12 -0
  11. package/dist/components/button.d.ts.map +1 -0
  12. package/dist/components/card.d.ts +9 -0
  13. package/dist/components/card.d.ts.map +1 -0
  14. package/dist/components/carousel.d.ts +20 -0
  15. package/dist/components/carousel.d.ts.map +1 -0
  16. package/dist/components/checkbox.d.ts +5 -0
  17. package/dist/components/checkbox.d.ts.map +1 -0
  18. package/dist/components/collapsible.d.ts +6 -0
  19. package/dist/components/collapsible.d.ts.map +1 -0
  20. package/dist/components/dialog.d.ts +16 -0
  21. package/dist/components/dialog.d.ts.map +1 -0
  22. package/dist/components/dropdown-menu.d.ts +28 -0
  23. package/dist/components/dropdown-menu.d.ts.map +1 -0
  24. package/dist/components/form.d.ts +25 -0
  25. package/dist/components/form.d.ts.map +1 -0
  26. package/dist/components/hover-card.d.ts +7 -0
  27. package/dist/components/hover-card.d.ts.map +1 -0
  28. package/dist/components/input.d.ts +4 -0
  29. package/dist/components/input.d.ts.map +1 -0
  30. package/dist/components/label.d.ts +6 -0
  31. package/dist/components/label.d.ts.map +1 -0
  32. package/dist/components/pagination.d.ts +14 -0
  33. package/dist/components/pagination.d.ts.map +1 -0
  34. package/dist/components/popover.d.ts +8 -0
  35. package/dist/components/popover.d.ts.map +1 -0
  36. package/dist/components/progress.d.ts +5 -0
  37. package/dist/components/progress.d.ts.map +1 -0
  38. package/dist/components/resizable-panels.d.ts +25 -0
  39. package/dist/components/resizable-panels.d.ts.map +1 -0
  40. package/dist/components/scroll-area.d.ts +6 -0
  41. package/dist/components/scroll-area.d.ts.map +1 -0
  42. package/dist/components/select.d.ts +16 -0
  43. package/dist/components/select.d.ts.map +1 -0
  44. package/dist/components/separator.d.ts +5 -0
  45. package/dist/components/separator.d.ts.map +1 -0
  46. package/dist/components/sheet.d.ts +14 -0
  47. package/dist/components/sheet.d.ts.map +1 -0
  48. package/dist/components/showcase.d.ts +6 -0
  49. package/dist/components/showcase.d.ts.map +1 -0
  50. package/dist/components/skeleton.d.ts +3 -0
  51. package/dist/components/skeleton.d.ts.map +1 -0
  52. package/dist/components/switch.d.ts +5 -0
  53. package/dist/components/switch.d.ts.map +1 -0
  54. package/dist/components/tabs.d.ts +28 -0
  55. package/dist/components/tabs.d.ts.map +1 -0
  56. package/dist/components/textarea.d.ts +4 -0
  57. package/dist/components/textarea.d.ts.map +1 -0
  58. package/dist/components/tooltip.d.ts +8 -0
  59. package/dist/components/tooltip.d.ts.map +1 -0
  60. package/dist/components/typography.d.ts +17 -0
  61. package/dist/components/typography.d.ts.map +1 -0
  62. package/dist/index.d.ts +34 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/lib/utils.d.ts +3 -0
  65. package/dist/lib/utils.d.ts.map +1 -0
  66. package/dist/teacharium-ui.cjs.js +1992 -0
  67. package/dist/teacharium-ui.cjs.js.map +1 -0
  68. package/dist/teacharium-ui.es.js +1961 -0
  69. package/dist/teacharium-ui.es.js.map +1 -0
  70. package/dist/ui.css +1894 -0
  71. package/package.json +86 -0
@@ -0,0 +1,1992 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const clsx = require("clsx");
4
+ const tailwindMerge = require("tailwind-merge");
5
+ const jsxRuntime = require("react/jsx-runtime");
6
+ const classVarianceAuthority = require("class-variance-authority");
7
+ const React = require("react");
8
+ const AlertDialogPrimitive = require("@radix-ui/react-alert-dialog");
9
+ const reactSlot = require("@radix-ui/react-slot");
10
+ const AvatarPrimitive = require("@radix-ui/react-avatar");
11
+ const useEmblaCarousel = require("embla-carousel-react");
12
+ const lucideReact = require("lucide-react");
13
+ const CheckboxPrimitive = require("@radix-ui/react-checkbox");
14
+ const CollapsiblePrimitive = require("@radix-ui/react-collapsible");
15
+ const DialogPrimitive = require("@radix-ui/react-dialog");
16
+ const DropdownMenuPrimitive = require("@radix-ui/react-dropdown-menu");
17
+ const reactHookForm = require("react-hook-form");
18
+ const LabelPrimitive = require("@radix-ui/react-label");
19
+ const HoverCardPrimitive = require("@radix-ui/react-hover-card");
20
+ const PopoverPrimitive = require("@radix-ui/react-popover");
21
+ const ProgressPrimitive = require("@radix-ui/react-progress");
22
+ const ScrollAreaPrimitive = require("@radix-ui/react-scroll-area");
23
+ const SelectPrimitive = require("@radix-ui/react-select");
24
+ const SeparatorPrimitive = require("@radix-ui/react-separator");
25
+ const SwitchPrimitive = require("@radix-ui/react-switch");
26
+ const TooltipPrimitive = require("@radix-ui/react-tooltip");
27
+ function _interopNamespaceDefault(e) {
28
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
29
+ if (e) {
30
+ for (const k in e) {
31
+ if (k !== "default") {
32
+ const d = Object.getOwnPropertyDescriptor(e, k);
33
+ Object.defineProperty(n, k, d.get ? d : {
34
+ enumerable: true,
35
+ get: () => e[k]
36
+ });
37
+ }
38
+ }
39
+ }
40
+ n.default = e;
41
+ return Object.freeze(n);
42
+ }
43
+ const React__namespace = /* @__PURE__ */ _interopNamespaceDefault(React);
44
+ const AlertDialogPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(AlertDialogPrimitive);
45
+ const AvatarPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(AvatarPrimitive);
46
+ const CheckboxPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(CheckboxPrimitive);
47
+ const CollapsiblePrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(CollapsiblePrimitive);
48
+ const DialogPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(DialogPrimitive);
49
+ const DropdownMenuPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(DropdownMenuPrimitive);
50
+ const LabelPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(LabelPrimitive);
51
+ const HoverCardPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(HoverCardPrimitive);
52
+ const PopoverPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(PopoverPrimitive);
53
+ const ProgressPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(ProgressPrimitive);
54
+ const ScrollAreaPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(ScrollAreaPrimitive);
55
+ const SelectPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(SelectPrimitive);
56
+ const SeparatorPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(SeparatorPrimitive);
57
+ const SwitchPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(SwitchPrimitive);
58
+ const TooltipPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(TooltipPrimitive);
59
+ function cn(...inputs) {
60
+ return tailwindMerge.twMerge(clsx.clsx(inputs));
61
+ }
62
+ const alertVariants = classVarianceAuthority.cva(
63
+ "relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
64
+ {
65
+ variants: {
66
+ variant: {
67
+ default: "bg-card text-card-foreground",
68
+ destructive: "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90"
69
+ }
70
+ },
71
+ defaultVariants: {
72
+ variant: "default"
73
+ }
74
+ }
75
+ );
76
+ function Alert({
77
+ className,
78
+ variant,
79
+ ...props
80
+ }) {
81
+ return /* @__PURE__ */ jsxRuntime.jsx(
82
+ "div",
83
+ {
84
+ "data-slot": "alert",
85
+ role: "alert",
86
+ className: cn(alertVariants({ variant }), className),
87
+ ...props
88
+ }
89
+ );
90
+ }
91
+ function AlertTitle({ className, ...props }) {
92
+ return /* @__PURE__ */ jsxRuntime.jsx(
93
+ "div",
94
+ {
95
+ "data-slot": "alert-title",
96
+ className: cn(
97
+ "col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight",
98
+ className
99
+ ),
100
+ ...props
101
+ }
102
+ );
103
+ }
104
+ function AlertDescription({
105
+ className,
106
+ ...props
107
+ }) {
108
+ return /* @__PURE__ */ jsxRuntime.jsx(
109
+ "div",
110
+ {
111
+ "data-slot": "alert-description",
112
+ className: cn(
113
+ "text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",
114
+ className
115
+ ),
116
+ ...props
117
+ }
118
+ );
119
+ }
120
+ const buttonVariants = classVarianceAuthority.cva(
121
+ "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",
122
+ {
123
+ variants: {
124
+ variant: {
125
+ default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
126
+ destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
127
+ outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
128
+ secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
129
+ ghost: "hover:bg-accent hover:text-accent-foreground",
130
+ link: "text-primary underline-offset-4 hover:underline"
131
+ },
132
+ size: {
133
+ default: "h-9 px-4 py-2",
134
+ sm: "h-8 rounded-md px-3 text-xs",
135
+ lg: "h-10 rounded-md px-8",
136
+ icon: "h-9 w-9"
137
+ }
138
+ },
139
+ defaultVariants: {
140
+ variant: "default",
141
+ size: "default"
142
+ }
143
+ }
144
+ );
145
+ const Button = React__namespace.forwardRef(
146
+ ({ className, variant, size, asChild = false, ...props }, ref) => {
147
+ const Comp = asChild ? reactSlot.Slot : "button";
148
+ return /* @__PURE__ */ jsxRuntime.jsx(
149
+ Comp,
150
+ {
151
+ className: cn(buttonVariants({ variant, size, className })),
152
+ ref,
153
+ ...props
154
+ }
155
+ );
156
+ }
157
+ );
158
+ Button.displayName = "Button";
159
+ const AlertDialog = AlertDialogPrimitive__namespace.Root;
160
+ const AlertDialogTrigger = AlertDialogPrimitive__namespace.Trigger;
161
+ const AlertDialogPortal = AlertDialogPrimitive__namespace.Portal;
162
+ const AlertDialogOverlay = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
163
+ AlertDialogPrimitive__namespace.Overlay,
164
+ {
165
+ className: cn(
166
+ "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",
167
+ className
168
+ ),
169
+ ...props,
170
+ ref
171
+ }
172
+ ));
173
+ AlertDialogOverlay.displayName = AlertDialogPrimitive__namespace.Overlay.displayName;
174
+ const AlertDialogContent = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(AlertDialogPortal, { children: [
175
+ /* @__PURE__ */ jsxRuntime.jsx(AlertDialogOverlay, {}),
176
+ /* @__PURE__ */ jsxRuntime.jsx(
177
+ AlertDialogPrimitive__namespace.Content,
178
+ {
179
+ ref,
180
+ className: cn(
181
+ "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",
182
+ className
183
+ ),
184
+ ...props
185
+ }
186
+ )
187
+ ] }));
188
+ AlertDialogContent.displayName = AlertDialogPrimitive__namespace.Content.displayName;
189
+ const AlertDialogHeader = ({
190
+ className,
191
+ ...props
192
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
193
+ "div",
194
+ {
195
+ className: cn(
196
+ "flex flex-col space-y-2 text-center sm:text-left",
197
+ className
198
+ ),
199
+ ...props
200
+ }
201
+ );
202
+ AlertDialogHeader.displayName = "AlertDialogHeader";
203
+ const AlertDialogFooter = ({
204
+ className,
205
+ ...props
206
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
207
+ "div",
208
+ {
209
+ className: cn(
210
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
211
+ className
212
+ ),
213
+ ...props
214
+ }
215
+ );
216
+ AlertDialogFooter.displayName = "AlertDialogFooter";
217
+ const AlertDialogTitle = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
218
+ AlertDialogPrimitive__namespace.Title,
219
+ {
220
+ ref,
221
+ className: cn("text-lg font-semibold", className),
222
+ ...props
223
+ }
224
+ ));
225
+ AlertDialogTitle.displayName = AlertDialogPrimitive__namespace.Title.displayName;
226
+ const AlertDialogDescription = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
227
+ AlertDialogPrimitive__namespace.Description,
228
+ {
229
+ ref,
230
+ className: cn("text-sm text-muted-foreground", className),
231
+ ...props
232
+ }
233
+ ));
234
+ AlertDialogDescription.displayName = AlertDialogPrimitive__namespace.Description.displayName;
235
+ const AlertDialogAction = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
236
+ AlertDialogPrimitive__namespace.Action,
237
+ {
238
+ ref,
239
+ className: cn(buttonVariants(), className),
240
+ ...props
241
+ }
242
+ ));
243
+ AlertDialogAction.displayName = AlertDialogPrimitive__namespace.Action.displayName;
244
+ const AlertDialogCancel = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
245
+ AlertDialogPrimitive__namespace.Cancel,
246
+ {
247
+ ref,
248
+ className: cn(
249
+ buttonVariants({ variant: "outline" }),
250
+ "mt-2 sm:mt-0",
251
+ className
252
+ ),
253
+ ...props
254
+ }
255
+ ));
256
+ AlertDialogCancel.displayName = AlertDialogPrimitive__namespace.Cancel.displayName;
257
+ function Avatar({
258
+ className,
259
+ ...props
260
+ }) {
261
+ return /* @__PURE__ */ jsxRuntime.jsx(
262
+ AvatarPrimitive__namespace.Root,
263
+ {
264
+ "data-slot": "avatar",
265
+ className: cn(
266
+ "relative flex size-8 shrink-0 overflow-hidden rounded-full",
267
+ className
268
+ ),
269
+ ...props
270
+ }
271
+ );
272
+ }
273
+ function AvatarImage({
274
+ className,
275
+ ...props
276
+ }) {
277
+ return /* @__PURE__ */ jsxRuntime.jsx(
278
+ AvatarPrimitive__namespace.Image,
279
+ {
280
+ "data-slot": "avatar-image",
281
+ className: cn("aspect-square size-full", className),
282
+ ...props
283
+ }
284
+ );
285
+ }
286
+ function AvatarFallback({
287
+ className,
288
+ ...props
289
+ }) {
290
+ return /* @__PURE__ */ jsxRuntime.jsx(
291
+ AvatarPrimitive__namespace.Fallback,
292
+ {
293
+ "data-slot": "avatar-fallback",
294
+ className: cn(
295
+ "bg-muted flex size-full items-center justify-center rounded-full",
296
+ className
297
+ ),
298
+ ...props
299
+ }
300
+ );
301
+ }
302
+ const badgeVariants = classVarianceAuthority.cva(
303
+ "inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
304
+ {
305
+ variants: {
306
+ variant: {
307
+ default: "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",
308
+ secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
309
+ destructive: "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",
310
+ outline: "text-foreground"
311
+ }
312
+ },
313
+ defaultVariants: {
314
+ variant: "default"
315
+ }
316
+ }
317
+ );
318
+ function Badge({ className, variant, ...props }) {
319
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(badgeVariants({ variant }), className), ...props });
320
+ }
321
+ const Card = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
322
+ "div",
323
+ {
324
+ ref,
325
+ className: cn(
326
+ "rounded-xl border bg-card text-card-foreground shadow",
327
+ className
328
+ ),
329
+ ...props
330
+ }
331
+ ));
332
+ Card.displayName = "Card";
333
+ const CardHeader = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
334
+ "div",
335
+ {
336
+ ref,
337
+ className: cn("flex flex-col space-y-1.5 p-6", className),
338
+ ...props
339
+ }
340
+ ));
341
+ CardHeader.displayName = "CardHeader";
342
+ const CardTitle = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
343
+ "div",
344
+ {
345
+ ref,
346
+ className: cn("font-semibold leading-none tracking-tight", className),
347
+ ...props
348
+ }
349
+ ));
350
+ CardTitle.displayName = "CardTitle";
351
+ const CardDescription = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
352
+ "div",
353
+ {
354
+ ref,
355
+ className: cn("text-sm text-muted-foreground", className),
356
+ ...props
357
+ }
358
+ ));
359
+ CardDescription.displayName = "CardDescription";
360
+ const CardContent = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cn("p-6 pt-0", className), ...props }));
361
+ CardContent.displayName = "CardContent";
362
+ const CardFooter = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
363
+ "div",
364
+ {
365
+ ref,
366
+ className: cn("flex items-center p-6 pt-0", className),
367
+ ...props
368
+ }
369
+ ));
370
+ CardFooter.displayName = "CardFooter";
371
+ const CarouselContext = React__namespace.createContext(null);
372
+ function useCarousel() {
373
+ const context = React__namespace.useContext(CarouselContext);
374
+ if (!context) {
375
+ throw new Error("useCarousel must be used within a <Carousel />");
376
+ }
377
+ return context;
378
+ }
379
+ function Carousel({
380
+ orientation = "horizontal",
381
+ opts,
382
+ setApi,
383
+ plugins,
384
+ className,
385
+ children,
386
+ ...props
387
+ }) {
388
+ const [carouselRef, api] = useEmblaCarousel(
389
+ {
390
+ ...opts,
391
+ axis: orientation === "horizontal" ? "x" : "y"
392
+ },
393
+ plugins
394
+ );
395
+ const [canScrollPrev, setCanScrollPrev] = React__namespace.useState(false);
396
+ const [canScrollNext, setCanScrollNext] = React__namespace.useState(false);
397
+ const onSelect = React__namespace.useCallback((api2) => {
398
+ if (!api2) return;
399
+ setCanScrollPrev(api2.canScrollPrev());
400
+ setCanScrollNext(api2.canScrollNext());
401
+ }, []);
402
+ const scrollPrev = React__namespace.useCallback(() => {
403
+ api?.scrollPrev();
404
+ }, [api]);
405
+ const scrollNext = React__namespace.useCallback(() => {
406
+ api?.scrollNext();
407
+ }, [api]);
408
+ const handleKeyDown = React__namespace.useCallback(
409
+ (event) => {
410
+ if (event.key === "ArrowLeft") {
411
+ event.preventDefault();
412
+ scrollPrev();
413
+ } else if (event.key === "ArrowRight") {
414
+ event.preventDefault();
415
+ scrollNext();
416
+ }
417
+ },
418
+ [scrollPrev, scrollNext]
419
+ );
420
+ React__namespace.useEffect(() => {
421
+ if (!api || !setApi) return;
422
+ setApi(api);
423
+ }, [api, setApi]);
424
+ React__namespace.useEffect(() => {
425
+ if (!api) return;
426
+ onSelect(api);
427
+ api.on("reInit", onSelect);
428
+ api.on("select", onSelect);
429
+ return () => {
430
+ api?.off("select", onSelect);
431
+ };
432
+ }, [api, onSelect]);
433
+ return /* @__PURE__ */ jsxRuntime.jsx(
434
+ CarouselContext.Provider,
435
+ {
436
+ value: {
437
+ carouselRef,
438
+ api,
439
+ opts,
440
+ orientation: orientation || (opts?.axis === "y" ? "vertical" : "horizontal"),
441
+ scrollPrev,
442
+ scrollNext,
443
+ canScrollPrev,
444
+ canScrollNext
445
+ },
446
+ children: /* @__PURE__ */ jsxRuntime.jsx(
447
+ "div",
448
+ {
449
+ onKeyDownCapture: handleKeyDown,
450
+ className: cn("relative", className),
451
+ role: "region",
452
+ "aria-roledescription": "carousel",
453
+ "data-slot": "carousel",
454
+ ...props,
455
+ children
456
+ }
457
+ )
458
+ }
459
+ );
460
+ }
461
+ function CarouselContent({ className, ...props }) {
462
+ const { carouselRef, orientation } = useCarousel();
463
+ return /* @__PURE__ */ jsxRuntime.jsx(
464
+ "div",
465
+ {
466
+ ref: carouselRef,
467
+ className: "overflow-hidden",
468
+ "data-slot": "carousel-content",
469
+ children: /* @__PURE__ */ jsxRuntime.jsx(
470
+ "div",
471
+ {
472
+ className: cn(
473
+ "flex",
474
+ orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
475
+ className
476
+ ),
477
+ ...props
478
+ }
479
+ )
480
+ }
481
+ );
482
+ }
483
+ function CarouselItem({ className, ...props }) {
484
+ const { orientation } = useCarousel();
485
+ return /* @__PURE__ */ jsxRuntime.jsx(
486
+ "div",
487
+ {
488
+ role: "group",
489
+ "aria-roledescription": "slide",
490
+ "data-slot": "carousel-item",
491
+ className: cn(
492
+ "min-w-0 shrink-0 grow-0 basis-full",
493
+ orientation === "horizontal" ? "pl-4" : "pt-4",
494
+ className
495
+ ),
496
+ ...props
497
+ }
498
+ );
499
+ }
500
+ function CarouselPrevious({
501
+ className,
502
+ variant = "outline",
503
+ size = "icon",
504
+ ...props
505
+ }) {
506
+ const { orientation, scrollPrev, canScrollPrev } = useCarousel();
507
+ return /* @__PURE__ */ jsxRuntime.jsxs(
508
+ Button,
509
+ {
510
+ "data-slot": "carousel-previous",
511
+ variant,
512
+ size,
513
+ className: cn(
514
+ "absolute size-8 rounded-full",
515
+ orientation === "horizontal" ? "top-1/2 -left-12 -translate-y-1/2" : "-top-12 left-1/2 -translate-x-1/2 rotate-90",
516
+ className
517
+ ),
518
+ disabled: !canScrollPrev,
519
+ onClick: scrollPrev,
520
+ ...props,
521
+ children: [
522
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowLeft, {}),
523
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Previous slide" })
524
+ ]
525
+ }
526
+ );
527
+ }
528
+ function CarouselNext({
529
+ className,
530
+ variant = "outline",
531
+ size = "icon",
532
+ ...props
533
+ }) {
534
+ const { orientation, scrollNext, canScrollNext } = useCarousel();
535
+ return /* @__PURE__ */ jsxRuntime.jsxs(
536
+ Button,
537
+ {
538
+ "data-slot": "carousel-next",
539
+ variant,
540
+ size,
541
+ className: cn(
542
+ "absolute size-8 rounded-full",
543
+ orientation === "horizontal" ? "top-1/2 -right-12 -translate-y-1/2" : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90",
544
+ className
545
+ ),
546
+ disabled: !canScrollNext,
547
+ onClick: scrollNext,
548
+ ...props,
549
+ children: [
550
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowRight, {}),
551
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Next slide" })
552
+ ]
553
+ }
554
+ );
555
+ }
556
+ const Checkbox = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
557
+ CheckboxPrimitive__namespace.Root,
558
+ {
559
+ ref,
560
+ className: cn(
561
+ "peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
562
+ className
563
+ ),
564
+ ...props,
565
+ children: /* @__PURE__ */ jsxRuntime.jsx(
566
+ CheckboxPrimitive__namespace.Indicator,
567
+ {
568
+ className: cn("flex items-center justify-center text-current"),
569
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-4 w-4" })
570
+ }
571
+ )
572
+ }
573
+ ));
574
+ Checkbox.displayName = CheckboxPrimitive__namespace.Root.displayName;
575
+ function Collapsible({
576
+ ...props
577
+ }) {
578
+ return /* @__PURE__ */ jsxRuntime.jsx(CollapsiblePrimitive__namespace.Root, { "data-slot": "collapsible", ...props });
579
+ }
580
+ function CollapsibleTrigger({
581
+ ...props
582
+ }) {
583
+ return /* @__PURE__ */ jsxRuntime.jsx(
584
+ CollapsiblePrimitive__namespace.CollapsibleTrigger,
585
+ {
586
+ "data-slot": "collapsible-trigger",
587
+ ...props
588
+ }
589
+ );
590
+ }
591
+ function CollapsibleContent({
592
+ ...props
593
+ }) {
594
+ return /* @__PURE__ */ jsxRuntime.jsx(
595
+ CollapsiblePrimitive__namespace.CollapsibleContent,
596
+ {
597
+ "data-slot": "collapsible-content",
598
+ ...props
599
+ }
600
+ );
601
+ }
602
+ function Dialog({
603
+ ...props
604
+ }) {
605
+ return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Root, { "data-slot": "dialog", ...props });
606
+ }
607
+ function DialogTrigger({
608
+ ...props
609
+ }) {
610
+ return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Trigger, { "data-slot": "dialog-trigger", ...props });
611
+ }
612
+ function DialogPortal({
613
+ ...props
614
+ }) {
615
+ return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Portal, { "data-slot": "dialog-portal", ...props });
616
+ }
617
+ function DialogClose({
618
+ ...props
619
+ }) {
620
+ return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Close, { "data-slot": "dialog-close", ...props });
621
+ }
622
+ function DialogOverlay({
623
+ className,
624
+ ...props
625
+ }) {
626
+ return /* @__PURE__ */ jsxRuntime.jsx(
627
+ DialogPrimitive__namespace.Overlay,
628
+ {
629
+ "data-slot": "dialog-overlay",
630
+ className: cn(
631
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
632
+ className
633
+ ),
634
+ ...props
635
+ }
636
+ );
637
+ }
638
+ function DialogContent({
639
+ className,
640
+ children,
641
+ showCloseButton = true,
642
+ ...props
643
+ }) {
644
+ return /* @__PURE__ */ jsxRuntime.jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [
645
+ /* @__PURE__ */ jsxRuntime.jsx(DialogOverlay, {}),
646
+ /* @__PURE__ */ jsxRuntime.jsxs(
647
+ DialogPrimitive__namespace.Content,
648
+ {
649
+ "data-slot": "dialog-content",
650
+ className: cn(
651
+ "bg-background 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 fixed top-[50%] left-[50%] z-50 grid translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200",
652
+ className
653
+ ),
654
+ ...props,
655
+ children: [
656
+ children,
657
+ showCloseButton && /* @__PURE__ */ jsxRuntime.jsxs(
658
+ DialogPrimitive__namespace.Close,
659
+ {
660
+ "data-slot": "dialog-close",
661
+ className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
662
+ children: [
663
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.XIcon, {}),
664
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
665
+ ]
666
+ }
667
+ )
668
+ ]
669
+ }
670
+ )
671
+ ] });
672
+ }
673
+ function DialogHeader({ className, ...props }) {
674
+ return /* @__PURE__ */ jsxRuntime.jsx(
675
+ "div",
676
+ {
677
+ "data-slot": "dialog-header",
678
+ className: cn("flex flex-col gap-2 text-center sm:text-left", className),
679
+ ...props
680
+ }
681
+ );
682
+ }
683
+ function DialogFooter({ className, ...props }) {
684
+ return /* @__PURE__ */ jsxRuntime.jsx(
685
+ "div",
686
+ {
687
+ "data-slot": "dialog-footer",
688
+ className: cn(
689
+ "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
690
+ className
691
+ ),
692
+ ...props
693
+ }
694
+ );
695
+ }
696
+ function DialogTitle({
697
+ className,
698
+ ...props
699
+ }) {
700
+ return /* @__PURE__ */ jsxRuntime.jsx(
701
+ DialogPrimitive__namespace.Title,
702
+ {
703
+ "data-slot": "dialog-title",
704
+ className: cn("text-lg leading-none font-semibold", className),
705
+ ...props
706
+ }
707
+ );
708
+ }
709
+ function DialogDescription({
710
+ className,
711
+ ...props
712
+ }) {
713
+ return /* @__PURE__ */ jsxRuntime.jsx(
714
+ DialogPrimitive__namespace.Description,
715
+ {
716
+ "data-slot": "dialog-description",
717
+ className: cn("text-muted-foreground text-sm", className),
718
+ ...props
719
+ }
720
+ );
721
+ }
722
+ const DropdownMenu = DropdownMenuPrimitive__namespace.Root;
723
+ const DropdownMenuTrigger = DropdownMenuPrimitive__namespace.Trigger;
724
+ const DropdownMenuGroup = DropdownMenuPrimitive__namespace.Group;
725
+ const DropdownMenuPortal = DropdownMenuPrimitive__namespace.Portal;
726
+ const DropdownMenuSub = DropdownMenuPrimitive__namespace.Sub;
727
+ const DropdownMenuRadioGroup = DropdownMenuPrimitive__namespace.RadioGroup;
728
+ const DropdownMenuSubTrigger = React__namespace.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
729
+ DropdownMenuPrimitive__namespace.SubTrigger,
730
+ {
731
+ ref,
732
+ className: cn(
733
+ "flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
734
+ inset && "pl-8",
735
+ className
736
+ ),
737
+ ...props,
738
+ children: [
739
+ children,
740
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "ml-auto" })
741
+ ]
742
+ }
743
+ ));
744
+ DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive__namespace.SubTrigger.displayName;
745
+ const DropdownMenuSubContent = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
746
+ DropdownMenuPrimitive__namespace.SubContent,
747
+ {
748
+ ref,
749
+ className: cn(
750
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]",
751
+ className
752
+ ),
753
+ ...props
754
+ }
755
+ ));
756
+ DropdownMenuSubContent.displayName = DropdownMenuPrimitive__namespace.SubContent.displayName;
757
+ const DropdownMenuContent = React__namespace.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
758
+ DropdownMenuPrimitive__namespace.Content,
759
+ {
760
+ ref,
761
+ sideOffset,
762
+ className: cn(
763
+ "z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md",
764
+ "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-dropdown-menu-content-transform-origin]",
765
+ className
766
+ ),
767
+ ...props
768
+ }
769
+ ) }));
770
+ DropdownMenuContent.displayName = DropdownMenuPrimitive__namespace.Content.displayName;
771
+ const DropdownMenuItem = React__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
772
+ DropdownMenuPrimitive__namespace.Item,
773
+ {
774
+ ref,
775
+ className: cn(
776
+ "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
777
+ inset && "pl-8",
778
+ className
779
+ ),
780
+ ...props
781
+ }
782
+ ));
783
+ DropdownMenuItem.displayName = DropdownMenuPrimitive__namespace.Item.displayName;
784
+ const DropdownMenuCheckboxItem = React__namespace.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
785
+ DropdownMenuPrimitive__namespace.CheckboxItem,
786
+ {
787
+ ref,
788
+ className: cn(
789
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
790
+ className
791
+ ),
792
+ checked,
793
+ ...props,
794
+ children: [
795
+ /* @__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" }) }) }),
796
+ children
797
+ ]
798
+ }
799
+ ));
800
+ DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive__namespace.CheckboxItem.displayName;
801
+ const DropdownMenuRadioItem = React__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
802
+ DropdownMenuPrimitive__namespace.RadioItem,
803
+ {
804
+ ref,
805
+ className: cn(
806
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
807
+ className
808
+ ),
809
+ ...props,
810
+ children: [
811
+ /* @__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" }) }) }),
812
+ children
813
+ ]
814
+ }
815
+ ));
816
+ DropdownMenuRadioItem.displayName = DropdownMenuPrimitive__namespace.RadioItem.displayName;
817
+ const DropdownMenuLabel = React__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
818
+ DropdownMenuPrimitive__namespace.Label,
819
+ {
820
+ ref,
821
+ className: cn(
822
+ "px-2 py-1.5 text-sm font-semibold",
823
+ inset && "pl-8",
824
+ className
825
+ ),
826
+ ...props
827
+ }
828
+ ));
829
+ DropdownMenuLabel.displayName = DropdownMenuPrimitive__namespace.Label.displayName;
830
+ const DropdownMenuSeparator = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
831
+ DropdownMenuPrimitive__namespace.Separator,
832
+ {
833
+ ref,
834
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
835
+ ...props
836
+ }
837
+ ));
838
+ DropdownMenuSeparator.displayName = DropdownMenuPrimitive__namespace.Separator.displayName;
839
+ const DropdownMenuShortcut = ({
840
+ className,
841
+ ...props
842
+ }) => {
843
+ return /* @__PURE__ */ jsxRuntime.jsx(
844
+ "span",
845
+ {
846
+ className: cn("ml-auto text-xs tracking-widest opacity-60", className),
847
+ ...props
848
+ }
849
+ );
850
+ };
851
+ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
852
+ const labelVariants = classVarianceAuthority.cva(
853
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
854
+ );
855
+ const Label = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
856
+ LabelPrimitive__namespace.Root,
857
+ {
858
+ ref,
859
+ className: cn(labelVariants(), className),
860
+ ...props
861
+ }
862
+ ));
863
+ Label.displayName = LabelPrimitive__namespace.Root.displayName;
864
+ const Form = reactHookForm.FormProvider;
865
+ const FormFieldContext = React__namespace.createContext(
866
+ {}
867
+ );
868
+ const FormField = ({
869
+ ...props
870
+ }) => {
871
+ return /* @__PURE__ */ jsxRuntime.jsx(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsxRuntime.jsx(reactHookForm.Controller, { ...props }) });
872
+ };
873
+ const useFormField = () => {
874
+ const fieldContext = React__namespace.useContext(FormFieldContext);
875
+ const itemContext = React__namespace.useContext(FormItemContext);
876
+ const { getFieldState } = reactHookForm.useFormContext();
877
+ const formState = reactHookForm.useFormState({ name: fieldContext.name });
878
+ const fieldState = getFieldState(fieldContext.name, formState);
879
+ if (!fieldContext) {
880
+ throw new Error("useFormField should be used within <FormField>");
881
+ }
882
+ const { id } = itemContext;
883
+ return {
884
+ id,
885
+ name: fieldContext.name,
886
+ formItemId: `${id}-form-item`,
887
+ formDescriptionId: `${id}-form-item-description`,
888
+ formMessageId: `${id}-form-item-message`,
889
+ ...fieldState
890
+ };
891
+ };
892
+ const FormItemContext = React__namespace.createContext(
893
+ {}
894
+ );
895
+ function FormItem({ className, ...props }) {
896
+ const id = React__namespace.useId();
897
+ return /* @__PURE__ */ jsxRuntime.jsx(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsxRuntime.jsx(
898
+ "div",
899
+ {
900
+ "data-slot": "form-item",
901
+ className: cn("grid gap-2", className),
902
+ ...props
903
+ }
904
+ ) });
905
+ }
906
+ function FormLabel({
907
+ className,
908
+ ...props
909
+ }) {
910
+ const { error, formItemId } = useFormField();
911
+ return /* @__PURE__ */ jsxRuntime.jsx(
912
+ Label,
913
+ {
914
+ "data-slot": "form-label",
915
+ "data-error": !!error,
916
+ className: cn("data-[error=true]:text-destructive", className),
917
+ htmlFor: formItemId,
918
+ ...props
919
+ }
920
+ );
921
+ }
922
+ function FormControl({ ...props }) {
923
+ const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
924
+ return /* @__PURE__ */ jsxRuntime.jsx(
925
+ reactSlot.Slot,
926
+ {
927
+ "data-slot": "form-control",
928
+ id: formItemId,
929
+ "aria-describedby": !error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`,
930
+ "aria-invalid": !!error,
931
+ ...props
932
+ }
933
+ );
934
+ }
935
+ function FormDescription({ className, ...props }) {
936
+ const { formDescriptionId } = useFormField();
937
+ return /* @__PURE__ */ jsxRuntime.jsx(
938
+ "p",
939
+ {
940
+ "data-slot": "form-description",
941
+ id: formDescriptionId,
942
+ className: cn("text-muted-foreground text-sm", className),
943
+ ...props
944
+ }
945
+ );
946
+ }
947
+ function FormMessage({ className, ...props }) {
948
+ const { error, formMessageId } = useFormField();
949
+ const body = error ? String(error?.message ?? "") : props.children;
950
+ if (!body) {
951
+ return null;
952
+ }
953
+ return /* @__PURE__ */ jsxRuntime.jsx(
954
+ "p",
955
+ {
956
+ "data-slot": "form-message",
957
+ id: formMessageId,
958
+ className: cn("text-destructive text-sm", className),
959
+ ...props,
960
+ children: body
961
+ }
962
+ );
963
+ }
964
+ function HoverCard({
965
+ ...props
966
+ }) {
967
+ return /* @__PURE__ */ jsxRuntime.jsx(HoverCardPrimitive__namespace.Root, { "data-slot": "hover-card", ...props });
968
+ }
969
+ function HoverCardTrigger({
970
+ ...props
971
+ }) {
972
+ return /* @__PURE__ */ jsxRuntime.jsx(HoverCardPrimitive__namespace.Trigger, { "data-slot": "hover-card-trigger", ...props });
973
+ }
974
+ function HoverCardContent({
975
+ className,
976
+ align = "center",
977
+ sideOffset = 4,
978
+ ...props
979
+ }) {
980
+ return /* @__PURE__ */ jsxRuntime.jsx(HoverCardPrimitive__namespace.Portal, { "data-slot": "hover-card-portal", children: /* @__PURE__ */ jsxRuntime.jsx(
981
+ HoverCardPrimitive__namespace.Content,
982
+ {
983
+ "data-slot": "hover-card-content",
984
+ align,
985
+ sideOffset,
986
+ className: cn(
987
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",
988
+ className
989
+ ),
990
+ ...props
991
+ }
992
+ ) });
993
+ }
994
+ const Input = React__namespace.forwardRef(
995
+ ({ className, type, ...props }, ref) => {
996
+ return /* @__PURE__ */ jsxRuntime.jsx(
997
+ "input",
998
+ {
999
+ type,
1000
+ className: cn(
1001
+ "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",
1002
+ className
1003
+ ),
1004
+ ref,
1005
+ ...props
1006
+ }
1007
+ );
1008
+ }
1009
+ );
1010
+ Input.displayName = "Input";
1011
+ function Pagination({ className, ...props }) {
1012
+ return /* @__PURE__ */ jsxRuntime.jsx(
1013
+ "nav",
1014
+ {
1015
+ role: "navigation",
1016
+ "aria-label": "pagination",
1017
+ "data-slot": "pagination",
1018
+ className: cn("mx-auto flex w-full justify-center", className),
1019
+ ...props
1020
+ }
1021
+ );
1022
+ }
1023
+ function PaginationContent({
1024
+ className,
1025
+ ...props
1026
+ }) {
1027
+ return /* @__PURE__ */ jsxRuntime.jsx(
1028
+ "ul",
1029
+ {
1030
+ "data-slot": "pagination-content",
1031
+ className: cn("flex flex-row items-center gap-1", className),
1032
+ ...props
1033
+ }
1034
+ );
1035
+ }
1036
+ function PaginationItem({ ...props }) {
1037
+ return /* @__PURE__ */ jsxRuntime.jsx("li", { "data-slot": "pagination-item", ...props });
1038
+ }
1039
+ function PaginationLink({
1040
+ className,
1041
+ isActive,
1042
+ size = "icon",
1043
+ ...props
1044
+ }) {
1045
+ return /* @__PURE__ */ jsxRuntime.jsx(
1046
+ "a",
1047
+ {
1048
+ "aria-current": isActive ? "page" : void 0,
1049
+ "data-slot": "pagination-link",
1050
+ "data-active": isActive,
1051
+ className: cn(
1052
+ buttonVariants({
1053
+ variant: isActive ? "outline" : "ghost",
1054
+ size
1055
+ }),
1056
+ className
1057
+ ),
1058
+ ...props
1059
+ }
1060
+ );
1061
+ }
1062
+ function PaginationPrevious({
1063
+ className,
1064
+ ...props
1065
+ }) {
1066
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1067
+ PaginationLink,
1068
+ {
1069
+ "aria-label": "Go to previous page",
1070
+ size: "default",
1071
+ className: cn("gap-1 px-2.5 sm:pl-2.5", className),
1072
+ ...props,
1073
+ children: [
1074
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeftIcon, {}),
1075
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "hidden sm:block", children: "Previous" })
1076
+ ]
1077
+ }
1078
+ );
1079
+ }
1080
+ function PaginationNext({
1081
+ className,
1082
+ ...props
1083
+ }) {
1084
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1085
+ PaginationLink,
1086
+ {
1087
+ "aria-label": "Go to next page",
1088
+ size: "default",
1089
+ className: cn("gap-1 px-2.5 sm:pr-2.5", className),
1090
+ ...props,
1091
+ children: [
1092
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "hidden sm:block", children: "Next" }),
1093
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRightIcon, {})
1094
+ ]
1095
+ }
1096
+ );
1097
+ }
1098
+ function PaginationEllipsis({
1099
+ className,
1100
+ ...props
1101
+ }) {
1102
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1103
+ "span",
1104
+ {
1105
+ "aria-hidden": true,
1106
+ "data-slot": "pagination-ellipsis",
1107
+ className: cn("flex size-9 items-center justify-center", className),
1108
+ ...props,
1109
+ children: [
1110
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MoreHorizontalIcon, { className: "size-4" }),
1111
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "More pages" })
1112
+ ]
1113
+ }
1114
+ );
1115
+ }
1116
+ function Popover({
1117
+ ...props
1118
+ }) {
1119
+ return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Root, { "data-slot": "popover", ...props });
1120
+ }
1121
+ function PopoverTrigger({
1122
+ ...props
1123
+ }) {
1124
+ return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Trigger, { "data-slot": "popover-trigger", ...props });
1125
+ }
1126
+ function PopoverContent({
1127
+ className,
1128
+ align = "center",
1129
+ sideOffset = 4,
1130
+ ...props
1131
+ }) {
1132
+ return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
1133
+ PopoverPrimitive__namespace.Content,
1134
+ {
1135
+ "data-slot": "popover-content",
1136
+ align,
1137
+ sideOffset,
1138
+ className: cn(
1139
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",
1140
+ className
1141
+ ),
1142
+ ...props
1143
+ }
1144
+ ) });
1145
+ }
1146
+ function PopoverAnchor({
1147
+ ...props
1148
+ }) {
1149
+ return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Anchor, { "data-slot": "popover-anchor", ...props });
1150
+ }
1151
+ function Progress({
1152
+ className,
1153
+ value,
1154
+ ...props
1155
+ }) {
1156
+ return /* @__PURE__ */ jsxRuntime.jsx(
1157
+ ProgressPrimitive__namespace.Root,
1158
+ {
1159
+ "data-slot": "progress",
1160
+ className: cn(
1161
+ "bg-primary/20 relative h-2 w-full overflow-hidden rounded-full",
1162
+ className
1163
+ ),
1164
+ ...props,
1165
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1166
+ ProgressPrimitive__namespace.Indicator,
1167
+ {
1168
+ "data-slot": "progress-indicator",
1169
+ className: "bg-primary h-full w-full flex-1 transition-all",
1170
+ style: { transform: `translateX(-${100 - (value || 0)}%)` }
1171
+ }
1172
+ )
1173
+ }
1174
+ );
1175
+ }
1176
+ const ResizablePanelGroup = React__namespace.forwardRef(({ className, direction = "horizontal", children, ...props }, ref) => {
1177
+ return /* @__PURE__ */ jsxRuntime.jsx(
1178
+ "div",
1179
+ {
1180
+ ref,
1181
+ className: cn(
1182
+ "flex h-full w-full",
1183
+ direction === "horizontal" ? "flex-row" : "flex-col",
1184
+ className
1185
+ ),
1186
+ ...props,
1187
+ children
1188
+ }
1189
+ );
1190
+ });
1191
+ ResizablePanelGroup.displayName = "ResizablePanelGroup";
1192
+ const ResizablePanel = React__namespace.forwardRef(
1193
+ ({
1194
+ className,
1195
+ defaultSize = 50,
1196
+ minSize = 10,
1197
+ maxSize = 90,
1198
+ collapsible = false,
1199
+ collapsed = false,
1200
+ onCollapse,
1201
+ onResize,
1202
+ children,
1203
+ style,
1204
+ ...props
1205
+ }, ref) => {
1206
+ const [size, setSize] = React__namespace.useState(collapsed ? 0 : defaultSize);
1207
+ React__namespace.useEffect(() => {
1208
+ setSize(collapsed ? 0 : defaultSize);
1209
+ }, [collapsed, defaultSize]);
1210
+ return /* @__PURE__ */ jsxRuntime.jsx(
1211
+ "div",
1212
+ {
1213
+ ref,
1214
+ className: cn(
1215
+ "flex flex-col overflow-hidden transition-all duration-200 ease-in-out",
1216
+ collapsed && "min-w-0",
1217
+ className
1218
+ ),
1219
+ style: {
1220
+ ...style,
1221
+ flexBasis: collapsed ? "0px" : `${size}%`,
1222
+ minWidth: collapsed ? "0px" : `${minSize}%`,
1223
+ maxWidth: collapsed ? "0px" : `${maxSize}%`
1224
+ },
1225
+ ...props,
1226
+ children: !collapsed && children
1227
+ }
1228
+ );
1229
+ }
1230
+ );
1231
+ ResizablePanel.displayName = "ResizablePanel";
1232
+ const ResizableHandle = React__namespace.forwardRef(
1233
+ ({ className, direction = "horizontal", disabled = false, onDrag, ...props }, ref) => {
1234
+ const [isDragging, setIsDragging] = React__namespace.useState(false);
1235
+ const [dragStart, setDragStart] = React__namespace.useState({ x: 0, y: 0 });
1236
+ const handleMouseDown = React__namespace.useCallback(
1237
+ (e) => {
1238
+ if (disabled) return;
1239
+ setIsDragging(true);
1240
+ setDragStart({ x: e.clientX, y: e.clientY });
1241
+ e.preventDefault();
1242
+ },
1243
+ [disabled]
1244
+ );
1245
+ const handleMouseMove = React__namespace.useCallback(
1246
+ (e) => {
1247
+ if (!isDragging) return;
1248
+ const delta = direction === "horizontal" ? e.clientX - dragStart.x : e.clientY - dragStart.y;
1249
+ onDrag?.(delta);
1250
+ },
1251
+ [isDragging, direction, dragStart, onDrag]
1252
+ );
1253
+ const handleMouseUp = React__namespace.useCallback(() => {
1254
+ setIsDragging(false);
1255
+ }, []);
1256
+ React__namespace.useEffect(() => {
1257
+ if (isDragging) {
1258
+ document.addEventListener("mousemove", handleMouseMove);
1259
+ document.addEventListener("mouseup", handleMouseUp);
1260
+ return () => {
1261
+ document.removeEventListener("mousemove", handleMouseMove);
1262
+ document.removeEventListener("mouseup", handleMouseUp);
1263
+ };
1264
+ }
1265
+ }, [isDragging, handleMouseMove, handleMouseUp]);
1266
+ return /* @__PURE__ */ jsxRuntime.jsx(
1267
+ "div",
1268
+ {
1269
+ ref,
1270
+ className: cn(
1271
+ "relative flex items-center justify-center bg-border transition-colors",
1272
+ direction === "horizontal" ? "w-1 cursor-col-resize hover:bg-border/80 active:bg-border/60" : "h-1 cursor-row-resize hover:bg-border/80 active:bg-border/60",
1273
+ disabled && "cursor-not-allowed opacity-50",
1274
+ isDragging && "bg-border/60",
1275
+ className
1276
+ ),
1277
+ onMouseDown: handleMouseDown,
1278
+ ...props,
1279
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1280
+ "div",
1281
+ {
1282
+ className: cn(
1283
+ "absolute inset-0 flex items-center justify-center",
1284
+ direction === "horizontal" ? "w-3 -translate-x-1" : "h-3 -translate-y-1"
1285
+ ),
1286
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1287
+ lucideReact.GripVertical,
1288
+ {
1289
+ className: cn(
1290
+ "h-3 w-3 text-muted-foreground/40",
1291
+ direction === "vertical" && "rotate-90"
1292
+ )
1293
+ }
1294
+ )
1295
+ }
1296
+ )
1297
+ }
1298
+ );
1299
+ }
1300
+ );
1301
+ ResizableHandle.displayName = "ResizableHandle";
1302
+ const ScrollArea = React__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
1303
+ ScrollAreaPrimitive__namespace.Root,
1304
+ {
1305
+ ref,
1306
+ className: cn("relative overflow-hidden scroll-smooth", className),
1307
+ ...props,
1308
+ children: [
1309
+ /* @__PURE__ */ jsxRuntime.jsx(ScrollAreaPrimitive__namespace.Viewport, { className: "h-full w-full rounded-[inherit] scroll-smooth", children }),
1310
+ /* @__PURE__ */ jsxRuntime.jsx(ScrollBar, {}),
1311
+ /* @__PURE__ */ jsxRuntime.jsx(ScrollAreaPrimitive__namespace.Corner, {})
1312
+ ]
1313
+ }
1314
+ ));
1315
+ ScrollArea.displayName = ScrollAreaPrimitive__namespace.Root.displayName;
1316
+ const ScrollBar = React__namespace.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1317
+ ScrollAreaPrimitive__namespace.ScrollAreaScrollbar,
1318
+ {
1319
+ ref,
1320
+ orientation,
1321
+ className: cn(
1322
+ "flex touch-none select-none transition-colors",
1323
+ orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent p-[1px]",
1324
+ orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-[1px]",
1325
+ className
1326
+ ),
1327
+ ...props,
1328
+ children: /* @__PURE__ */ jsxRuntime.jsx(ScrollAreaPrimitive__namespace.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
1329
+ }
1330
+ ));
1331
+ ScrollBar.displayName = ScrollAreaPrimitive__namespace.ScrollAreaScrollbar.displayName;
1332
+ function Select({
1333
+ ...props
1334
+ }) {
1335
+ return /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Root, { "data-slot": "select", ...props });
1336
+ }
1337
+ function SelectGroup({
1338
+ ...props
1339
+ }) {
1340
+ return /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Group, { "data-slot": "select-group", ...props });
1341
+ }
1342
+ function SelectValue({
1343
+ ...props
1344
+ }) {
1345
+ return /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Value, { "data-slot": "select-value", ...props });
1346
+ }
1347
+ function SelectTrigger({
1348
+ className,
1349
+ size = "default",
1350
+ children,
1351
+ ...props
1352
+ }) {
1353
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1354
+ SelectPrimitive__namespace.Trigger,
1355
+ {
1356
+ "data-slot": "select-trigger",
1357
+ "data-size": size,
1358
+ className: cn(
1359
+ "border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
1360
+ className
1361
+ ),
1362
+ ...props,
1363
+ children: [
1364
+ children,
1365
+ /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Icon, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDownIcon, { className: "size-4 opacity-50" }) })
1366
+ ]
1367
+ }
1368
+ );
1369
+ }
1370
+ function SelectContent({
1371
+ className,
1372
+ children,
1373
+ position = "popper",
1374
+ ...props
1375
+ }) {
1376
+ return /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsxs(
1377
+ SelectPrimitive__namespace.Content,
1378
+ {
1379
+ "data-slot": "select-content",
1380
+ className: cn(
1381
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md",
1382
+ 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",
1383
+ className
1384
+ ),
1385
+ position,
1386
+ ...props,
1387
+ children: [
1388
+ /* @__PURE__ */ jsxRuntime.jsx(SelectScrollUpButton, {}),
1389
+ /* @__PURE__ */ jsxRuntime.jsx(
1390
+ SelectPrimitive__namespace.Viewport,
1391
+ {
1392
+ className: cn(
1393
+ "p-1",
1394
+ position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"
1395
+ ),
1396
+ children
1397
+ }
1398
+ ),
1399
+ /* @__PURE__ */ jsxRuntime.jsx(SelectScrollDownButton, {})
1400
+ ]
1401
+ }
1402
+ ) });
1403
+ }
1404
+ function SelectLabel({
1405
+ className,
1406
+ ...props
1407
+ }) {
1408
+ return /* @__PURE__ */ jsxRuntime.jsx(
1409
+ SelectPrimitive__namespace.Label,
1410
+ {
1411
+ "data-slot": "select-label",
1412
+ className: cn("text-muted-foreground px-2 py-1.5 text-xs", className),
1413
+ ...props
1414
+ }
1415
+ );
1416
+ }
1417
+ function SelectItem({
1418
+ className,
1419
+ children,
1420
+ ...props
1421
+ }) {
1422
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1423
+ SelectPrimitive__namespace.Item,
1424
+ {
1425
+ "data-slot": "select-item",
1426
+ className: cn(
1427
+ "focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
1428
+ className
1429
+ ),
1430
+ ...props,
1431
+ children: [
1432
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckIcon, { className: "size-4" }) }) }),
1433
+ /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemText, { children })
1434
+ ]
1435
+ }
1436
+ );
1437
+ }
1438
+ function SelectSeparator({
1439
+ className,
1440
+ ...props
1441
+ }) {
1442
+ return /* @__PURE__ */ jsxRuntime.jsx(
1443
+ SelectPrimitive__namespace.Separator,
1444
+ {
1445
+ "data-slot": "select-separator",
1446
+ className: cn("bg-border pointer-events-none -mx-1 my-1 h-px", className),
1447
+ ...props
1448
+ }
1449
+ );
1450
+ }
1451
+ function SelectScrollUpButton({
1452
+ className,
1453
+ ...props
1454
+ }) {
1455
+ return /* @__PURE__ */ jsxRuntime.jsx(
1456
+ SelectPrimitive__namespace.ScrollUpButton,
1457
+ {
1458
+ "data-slot": "select-scroll-up-button",
1459
+ className: cn(
1460
+ "flex cursor-default items-center justify-center py-1",
1461
+ className
1462
+ ),
1463
+ ...props,
1464
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronUpIcon, { className: "size-4" })
1465
+ }
1466
+ );
1467
+ }
1468
+ function SelectScrollDownButton({
1469
+ className,
1470
+ ...props
1471
+ }) {
1472
+ return /* @__PURE__ */ jsxRuntime.jsx(
1473
+ SelectPrimitive__namespace.ScrollDownButton,
1474
+ {
1475
+ "data-slot": "select-scroll-down-button",
1476
+ className: cn(
1477
+ "flex cursor-default items-center justify-center py-1",
1478
+ className
1479
+ ),
1480
+ ...props,
1481
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDownIcon, { className: "size-4" })
1482
+ }
1483
+ );
1484
+ }
1485
+ function Separator({
1486
+ className,
1487
+ orientation = "horizontal",
1488
+ decorative = true,
1489
+ ...props
1490
+ }) {
1491
+ return /* @__PURE__ */ jsxRuntime.jsx(
1492
+ SeparatorPrimitive__namespace.Root,
1493
+ {
1494
+ "data-slot": "separator",
1495
+ decorative,
1496
+ orientation,
1497
+ className: cn(
1498
+ "bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
1499
+ className
1500
+ ),
1501
+ ...props
1502
+ }
1503
+ );
1504
+ }
1505
+ function Sheet({ ...props }) {
1506
+ return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Root, { "data-slot": "sheet", ...props });
1507
+ }
1508
+ function SheetTrigger({
1509
+ ...props
1510
+ }) {
1511
+ return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Trigger, { "data-slot": "sheet-trigger", ...props });
1512
+ }
1513
+ function SheetClose({
1514
+ ...props
1515
+ }) {
1516
+ return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Close, { "data-slot": "sheet-close", ...props });
1517
+ }
1518
+ function SheetPortal({
1519
+ ...props
1520
+ }) {
1521
+ return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Portal, { "data-slot": "sheet-portal", ...props });
1522
+ }
1523
+ function SheetOverlay({
1524
+ className,
1525
+ ...props
1526
+ }) {
1527
+ return /* @__PURE__ */ jsxRuntime.jsx(
1528
+ DialogPrimitive__namespace.Overlay,
1529
+ {
1530
+ "data-slot": "sheet-overlay",
1531
+ className: cn(
1532
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
1533
+ className
1534
+ ),
1535
+ ...props
1536
+ }
1537
+ );
1538
+ }
1539
+ function SheetContent({
1540
+ className,
1541
+ children,
1542
+ side = "right",
1543
+ ...props
1544
+ }) {
1545
+ return /* @__PURE__ */ jsxRuntime.jsxs(SheetPortal, { children: [
1546
+ /* @__PURE__ */ jsxRuntime.jsx(SheetOverlay, {}),
1547
+ /* @__PURE__ */ jsxRuntime.jsxs(
1548
+ DialogPrimitive__namespace.Content,
1549
+ {
1550
+ "data-slot": "sheet-content",
1551
+ className: cn(
1552
+ "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
1553
+ side === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",
1554
+ side === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",
1555
+ side === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",
1556
+ side === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",
1557
+ className
1558
+ ),
1559
+ ...props,
1560
+ children: [
1561
+ children,
1562
+ /* @__PURE__ */ jsxRuntime.jsxs(DialogPrimitive__namespace.Close, { className: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none", children: [
1563
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.XIcon, { className: "size-4" }),
1564
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
1565
+ ] })
1566
+ ]
1567
+ }
1568
+ )
1569
+ ] });
1570
+ }
1571
+ function SheetHeader({ className, ...props }) {
1572
+ return /* @__PURE__ */ jsxRuntime.jsx(
1573
+ "div",
1574
+ {
1575
+ "data-slot": "sheet-header",
1576
+ className: cn("flex flex-col gap-1.5 p-4", className),
1577
+ ...props
1578
+ }
1579
+ );
1580
+ }
1581
+ function SheetFooter({ className, ...props }) {
1582
+ return /* @__PURE__ */ jsxRuntime.jsx(
1583
+ "div",
1584
+ {
1585
+ "data-slot": "sheet-footer",
1586
+ className: cn("mt-auto flex flex-col gap-2 p-4", className),
1587
+ ...props
1588
+ }
1589
+ );
1590
+ }
1591
+ function SheetTitle({
1592
+ className,
1593
+ ...props
1594
+ }) {
1595
+ return /* @__PURE__ */ jsxRuntime.jsx(
1596
+ DialogPrimitive__namespace.Title,
1597
+ {
1598
+ "data-slot": "sheet-title",
1599
+ className: cn("text-foreground font-semibold", className),
1600
+ ...props
1601
+ }
1602
+ );
1603
+ }
1604
+ function SheetDescription({
1605
+ className,
1606
+ ...props
1607
+ }) {
1608
+ return /* @__PURE__ */ jsxRuntime.jsx(
1609
+ DialogPrimitive__namespace.Description,
1610
+ {
1611
+ "data-slot": "sheet-description",
1612
+ className: cn("text-muted-foreground text-sm", className),
1613
+ ...props
1614
+ }
1615
+ );
1616
+ }
1617
+ function Skeleton({ className, ...props }) {
1618
+ return /* @__PURE__ */ jsxRuntime.jsx(
1619
+ "div",
1620
+ {
1621
+ "data-slot": "skeleton",
1622
+ className: cn("bg-accent animate-pulse rounded-md", className),
1623
+ ...props
1624
+ }
1625
+ );
1626
+ }
1627
+ const Switch = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1628
+ SwitchPrimitive__namespace.Root,
1629
+ {
1630
+ className: cn(
1631
+ "peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",
1632
+ className
1633
+ ),
1634
+ ...props,
1635
+ ref,
1636
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1637
+ SwitchPrimitive__namespace.Thumb,
1638
+ {
1639
+ className: cn(
1640
+ "pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0"
1641
+ )
1642
+ }
1643
+ )
1644
+ }
1645
+ ));
1646
+ Switch.displayName = SwitchPrimitive__namespace.Root.displayName;
1647
+ const TabsContext = React.createContext(null);
1648
+ function Tabs({
1649
+ value: controlledValue,
1650
+ defaultValue,
1651
+ onValueChange,
1652
+ children,
1653
+ className
1654
+ }) {
1655
+ const [internalValue, setInternalValue] = React.useState(defaultValue || "");
1656
+ const value = controlledValue ?? internalValue;
1657
+ const handleValueChange = (newValue) => {
1658
+ if (!controlledValue) {
1659
+ setInternalValue(newValue);
1660
+ }
1661
+ onValueChange?.(newValue);
1662
+ };
1663
+ return /* @__PURE__ */ jsxRuntime.jsx(TabsContext.Provider, { value: { value, onValueChange: handleValueChange }, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className, children }) });
1664
+ }
1665
+ function TabsList({ children, className }) {
1666
+ return /* @__PURE__ */ jsxRuntime.jsx(
1667
+ "div",
1668
+ {
1669
+ className: cn(
1670
+ "inline-flex h-10 items-center justify-center rounded-md bg-gray-100 p-1 text-gray-500",
1671
+ className
1672
+ ),
1673
+ children
1674
+ }
1675
+ );
1676
+ }
1677
+ function TabsTrigger({ value, children, className }) {
1678
+ const context = React.useContext(TabsContext);
1679
+ if (!context) {
1680
+ throw new Error("TabsTrigger must be used within Tabs");
1681
+ }
1682
+ const isActive = context.value === value;
1683
+ return /* @__PURE__ */ jsxRuntime.jsx(
1684
+ "button",
1685
+ {
1686
+ type: "button",
1687
+ onClick: () => context.onValueChange(value),
1688
+ className: cn(
1689
+ "inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-white transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-400 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
1690
+ isActive ? "bg-white text-gray-900 shadow-sm" : "text-gray-600 hover:text-gray-900",
1691
+ className
1692
+ ),
1693
+ children
1694
+ }
1695
+ );
1696
+ }
1697
+ function TabsContent({ value, children, className }) {
1698
+ const context = React.useContext(TabsContext);
1699
+ if (!context) {
1700
+ throw new Error("TabsContent must be used within Tabs");
1701
+ }
1702
+ if (context.value !== value) {
1703
+ return null;
1704
+ }
1705
+ return /* @__PURE__ */ jsxRuntime.jsx(
1706
+ "div",
1707
+ {
1708
+ className: cn(
1709
+ "mt-2 ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-400 focus-visible:ring-offset-2",
1710
+ className
1711
+ ),
1712
+ children
1713
+ }
1714
+ );
1715
+ }
1716
+ function Textarea({ className, ...props }) {
1717
+ return /* @__PURE__ */ jsxRuntime.jsx(
1718
+ "textarea",
1719
+ {
1720
+ "data-slot": "textarea",
1721
+ className: cn(
1722
+ "border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
1723
+ className
1724
+ ),
1725
+ ...props
1726
+ }
1727
+ );
1728
+ }
1729
+ function TooltipProvider({
1730
+ delayDuration = 0,
1731
+ ...props
1732
+ }) {
1733
+ return /* @__PURE__ */ jsxRuntime.jsx(
1734
+ TooltipPrimitive__namespace.Provider,
1735
+ {
1736
+ "data-slot": "tooltip-provider",
1737
+ delayDuration,
1738
+ ...props
1739
+ }
1740
+ );
1741
+ }
1742
+ function Tooltip({
1743
+ ...props
1744
+ }) {
1745
+ return /* @__PURE__ */ jsxRuntime.jsx(TooltipProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Root, { "data-slot": "tooltip", ...props }) });
1746
+ }
1747
+ function TooltipTrigger({
1748
+ ...props
1749
+ }) {
1750
+ return /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Trigger, { "data-slot": "tooltip-trigger", ...props });
1751
+ }
1752
+ function TooltipContent({
1753
+ className,
1754
+ sideOffset = 0,
1755
+ children,
1756
+ ...props
1757
+ }) {
1758
+ return /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsxs(
1759
+ TooltipPrimitive__namespace.Content,
1760
+ {
1761
+ "data-slot": "tooltip-content",
1762
+ sideOffset,
1763
+ className: cn(
1764
+ "bg-primary 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 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",
1765
+ className
1766
+ ),
1767
+ ...props,
1768
+ children: [
1769
+ children,
1770
+ /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Arrow, { className: "bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
1771
+ ]
1772
+ }
1773
+ ) });
1774
+ }
1775
+ const createComponent = (tag, defaultClassName, displayName) => {
1776
+ const Component = React.forwardRef((props, ref) => {
1777
+ return React.createElement(
1778
+ tag,
1779
+ { ...props, ref, className: cn(defaultClassName, props.className) },
1780
+ props.children
1781
+ );
1782
+ });
1783
+ Component.displayName = displayName;
1784
+ return Component;
1785
+ };
1786
+ const H1 = createComponent(
1787
+ "h1",
1788
+ "scroll-m-20 text-4xl font-extrabold tracking-normal lg:text-5xl",
1789
+ "H1"
1790
+ );
1791
+ const H2 = createComponent(
1792
+ "h2",
1793
+ "scroll-m-20 border-b py-2 text-3xl font-semibold tracking-tight first:mt-0",
1794
+ "H2"
1795
+ );
1796
+ const H3 = createComponent(
1797
+ "h3",
1798
+ "scroll-m-20 text-2xl font-semibold tracking-tight",
1799
+ "H3"
1800
+ );
1801
+ const H4 = createComponent(
1802
+ "h4",
1803
+ "scroll-m-20 text-xl font-semibold tracking-tight",
1804
+ "H4"
1805
+ );
1806
+ const Lead = createComponent(
1807
+ "p",
1808
+ "text-xl text-muted-foreground",
1809
+ "Lead"
1810
+ );
1811
+ const P = createComponent(
1812
+ "p",
1813
+ "leading-7 [&:not(:first-child)]:mt-6",
1814
+ "P"
1815
+ );
1816
+ const Large = createComponent(
1817
+ "div",
1818
+ "text-lg font-semibold",
1819
+ "Large"
1820
+ );
1821
+ const Small = createComponent(
1822
+ "small",
1823
+ "text-sm font-medium leading-none",
1824
+ "Small"
1825
+ );
1826
+ createComponent(
1827
+ "small",
1828
+ "text-sm text-muted-foreground",
1829
+ "SmallMuted"
1830
+ );
1831
+ const Muted = createComponent(
1832
+ "span",
1833
+ "text-sm text-muted-foreground",
1834
+ "Muted"
1835
+ );
1836
+ createComponent(
1837
+ "code",
1838
+ "relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold",
1839
+ "InlineCode"
1840
+ );
1841
+ createComponent(
1842
+ "pre",
1843
+ "relative rounded bg-muted p-4 font-mono text-sm font-semibold overflow-x-auto",
1844
+ "MultilineCode"
1845
+ );
1846
+ createComponent(
1847
+ "ul",
1848
+ "my-6 ml-6 list-disc [&>li]:mt-2",
1849
+ "List"
1850
+ );
1851
+ createComponent(
1852
+ "li",
1853
+ "my-6 ml-6 list-disc [&>li]:mt-2",
1854
+ "ListItem"
1855
+ );
1856
+ createComponent(
1857
+ "blockquote",
1858
+ "mt-6 border-l-2 pl-6 italic text-muted-foreground",
1859
+ "Quote"
1860
+ );
1861
+ exports.Alert = Alert;
1862
+ exports.AlertDescription = AlertDescription;
1863
+ exports.AlertDialog = AlertDialog;
1864
+ exports.AlertDialogAction = AlertDialogAction;
1865
+ exports.AlertDialogCancel = AlertDialogCancel;
1866
+ exports.AlertDialogContent = AlertDialogContent;
1867
+ exports.AlertDialogDescription = AlertDialogDescription;
1868
+ exports.AlertDialogFooter = AlertDialogFooter;
1869
+ exports.AlertDialogHeader = AlertDialogHeader;
1870
+ exports.AlertDialogOverlay = AlertDialogOverlay;
1871
+ exports.AlertDialogPortal = AlertDialogPortal;
1872
+ exports.AlertDialogTitle = AlertDialogTitle;
1873
+ exports.AlertDialogTrigger = AlertDialogTrigger;
1874
+ exports.AlertTitle = AlertTitle;
1875
+ exports.Avatar = Avatar;
1876
+ exports.AvatarFallback = AvatarFallback;
1877
+ exports.AvatarImage = AvatarImage;
1878
+ exports.Badge = Badge;
1879
+ exports.Button = Button;
1880
+ exports.Card = Card;
1881
+ exports.CardContent = CardContent;
1882
+ exports.CardDescription = CardDescription;
1883
+ exports.CardFooter = CardFooter;
1884
+ exports.CardHeader = CardHeader;
1885
+ exports.CardTitle = CardTitle;
1886
+ exports.Carousel = Carousel;
1887
+ exports.CarouselContent = CarouselContent;
1888
+ exports.CarouselItem = CarouselItem;
1889
+ exports.CarouselNext = CarouselNext;
1890
+ exports.CarouselPrevious = CarouselPrevious;
1891
+ exports.Checkbox = Checkbox;
1892
+ exports.Collapsible = Collapsible;
1893
+ exports.CollapsibleContent = CollapsibleContent;
1894
+ exports.CollapsibleTrigger = CollapsibleTrigger;
1895
+ exports.Dialog = Dialog;
1896
+ exports.DialogClose = DialogClose;
1897
+ exports.DialogContent = DialogContent;
1898
+ exports.DialogDescription = DialogDescription;
1899
+ exports.DialogFooter = DialogFooter;
1900
+ exports.DialogHeader = DialogHeader;
1901
+ exports.DialogOverlay = DialogOverlay;
1902
+ exports.DialogPortal = DialogPortal;
1903
+ exports.DialogTitle = DialogTitle;
1904
+ exports.DialogTrigger = DialogTrigger;
1905
+ exports.DropdownMenu = DropdownMenu;
1906
+ exports.DropdownMenuCheckboxItem = DropdownMenuCheckboxItem;
1907
+ exports.DropdownMenuContent = DropdownMenuContent;
1908
+ exports.DropdownMenuGroup = DropdownMenuGroup;
1909
+ exports.DropdownMenuItem = DropdownMenuItem;
1910
+ exports.DropdownMenuLabel = DropdownMenuLabel;
1911
+ exports.DropdownMenuPortal = DropdownMenuPortal;
1912
+ exports.DropdownMenuRadioGroup = DropdownMenuRadioGroup;
1913
+ exports.DropdownMenuRadioItem = DropdownMenuRadioItem;
1914
+ exports.DropdownMenuSeparator = DropdownMenuSeparator;
1915
+ exports.DropdownMenuShortcut = DropdownMenuShortcut;
1916
+ exports.DropdownMenuSub = DropdownMenuSub;
1917
+ exports.DropdownMenuSubContent = DropdownMenuSubContent;
1918
+ exports.DropdownMenuSubTrigger = DropdownMenuSubTrigger;
1919
+ exports.DropdownMenuTrigger = DropdownMenuTrigger;
1920
+ exports.Form = Form;
1921
+ exports.FormControl = FormControl;
1922
+ exports.FormDescription = FormDescription;
1923
+ exports.FormField = FormField;
1924
+ exports.FormItem = FormItem;
1925
+ exports.FormLabel = FormLabel;
1926
+ exports.FormMessage = FormMessage;
1927
+ exports.H1 = H1;
1928
+ exports.H2 = H2;
1929
+ exports.H3 = H3;
1930
+ exports.H4 = H4;
1931
+ exports.HoverCard = HoverCard;
1932
+ exports.HoverCardContent = HoverCardContent;
1933
+ exports.HoverCardTrigger = HoverCardTrigger;
1934
+ exports.Input = Input;
1935
+ exports.Label = Label;
1936
+ exports.Large = Large;
1937
+ exports.Lead = Lead;
1938
+ exports.Muted = Muted;
1939
+ exports.P = P;
1940
+ exports.Pagination = Pagination;
1941
+ exports.PaginationContent = PaginationContent;
1942
+ exports.PaginationEllipsis = PaginationEllipsis;
1943
+ exports.PaginationItem = PaginationItem;
1944
+ exports.PaginationLink = PaginationLink;
1945
+ exports.PaginationNext = PaginationNext;
1946
+ exports.PaginationPrevious = PaginationPrevious;
1947
+ exports.Popover = Popover;
1948
+ exports.PopoverAnchor = PopoverAnchor;
1949
+ exports.PopoverContent = PopoverContent;
1950
+ exports.PopoverTrigger = PopoverTrigger;
1951
+ exports.Progress = Progress;
1952
+ exports.ResizableHandle = ResizableHandle;
1953
+ exports.ResizablePanel = ResizablePanel;
1954
+ exports.ResizablePanelGroup = ResizablePanelGroup;
1955
+ exports.ScrollArea = ScrollArea;
1956
+ exports.ScrollBar = ScrollBar;
1957
+ exports.Select = Select;
1958
+ exports.SelectContent = SelectContent;
1959
+ exports.SelectGroup = SelectGroup;
1960
+ exports.SelectItem = SelectItem;
1961
+ exports.SelectLabel = SelectLabel;
1962
+ exports.SelectScrollDownButton = SelectScrollDownButton;
1963
+ exports.SelectScrollUpButton = SelectScrollUpButton;
1964
+ exports.SelectSeparator = SelectSeparator;
1965
+ exports.SelectTrigger = SelectTrigger;
1966
+ exports.SelectValue = SelectValue;
1967
+ exports.Separator = Separator;
1968
+ exports.Sheet = Sheet;
1969
+ exports.SheetClose = SheetClose;
1970
+ exports.SheetContent = SheetContent;
1971
+ exports.SheetDescription = SheetDescription;
1972
+ exports.SheetFooter = SheetFooter;
1973
+ exports.SheetHeader = SheetHeader;
1974
+ exports.SheetTitle = SheetTitle;
1975
+ exports.SheetTrigger = SheetTrigger;
1976
+ exports.Skeleton = Skeleton;
1977
+ exports.Small = Small;
1978
+ exports.Switch = Switch;
1979
+ exports.Tabs = Tabs;
1980
+ exports.TabsContent = TabsContent;
1981
+ exports.TabsList = TabsList;
1982
+ exports.TabsTrigger = TabsTrigger;
1983
+ exports.Textarea = Textarea;
1984
+ exports.Tooltip = Tooltip;
1985
+ exports.TooltipContent = TooltipContent;
1986
+ exports.TooltipProvider = TooltipProvider;
1987
+ exports.TooltipTrigger = TooltipTrigger;
1988
+ exports.badgeVariants = badgeVariants;
1989
+ exports.buttonVariants = buttonVariants;
1990
+ exports.cn = cn;
1991
+ exports.useFormField = useFormField;
1992
+ //# sourceMappingURL=teacharium-ui.cjs.js.map