@chaibuilder/sdk 2.0.0-beta.97 → 2.0.0-beta.98

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 (41) hide show
  1. package/dist/ChaiThemeFn-DcE5RdLQ.cjs +236 -0
  2. package/dist/ChaiThemeFn-DzirXKjI.js +237 -0
  3. package/dist/CodeEditor-C8_JzwHn.cjs +81 -0
  4. package/dist/CodeEditor-DdIk_PEV.js +81 -0
  5. package/dist/Topbar-62QmCKWL.cjs +18 -0
  6. package/dist/Topbar-Cqt0j3Yt.js +18 -0
  7. package/dist/context-menu-DHla8ofZ.js +893 -0
  8. package/dist/context-menu-DawHUIXd.cjs +923 -0
  9. package/dist/core.cjs +11771 -5
  10. package/dist/core.js +6893 -3995
  11. package/dist/getSplitClasses-BuALfSLX.js +54 -0
  12. package/dist/getSplitClasses-mbQmvwI3.cjs +53 -0
  13. package/dist/iconBase-BSrIcOaG.cjs +146 -0
  14. package/dist/iconBase-CWgVxu0A.js +147 -0
  15. package/dist/plugin-BcTnEZwx.cjs +26 -0
  16. package/dist/plugin-DGEKY3uC.js +27 -0
  17. package/dist/render.cjs +247 -2
  18. package/dist/render.js +205 -150
  19. package/dist/runtime.cjs +9 -1
  20. package/dist/sdk.css +1336 -1
  21. package/dist/tailwind.cjs +78 -1
  22. package/dist/tailwind.js +21 -19
  23. package/dist/ui.cjs +378 -1
  24. package/dist/ui.js +254 -244
  25. package/dist/web-blocks.cjs +1679 -2
  26. package/dist/web-blocks.js +747 -518
  27. package/package.json +1 -1
  28. package/dist/ChaiThemeFn-Cort9tch.js +0 -201
  29. package/dist/ChaiThemeFn-DQu-2Eh9.cjs +0 -13
  30. package/dist/CodeEditor-B2x4yruH.cjs +0 -1
  31. package/dist/CodeEditor-VcQsGvTM.js +0 -65
  32. package/dist/Topbar-BQsjWb-A.js +0 -16
  33. package/dist/Topbar-DEw_kBMz.cjs +0 -1
  34. package/dist/context-menu-C4lLV8gP.cjs +0 -1
  35. package/dist/context-menu-D5ViOi6K.js +0 -831
  36. package/dist/getSplitClasses-DodqA_KW.cjs +0 -1
  37. package/dist/getSplitClasses-DphwgQiE.js +0 -48
  38. package/dist/iconBase-Cn2BsTrq.cjs +0 -1
  39. package/dist/iconBase-DHfFLkem.js +0 -124
  40. package/dist/plugin-2xcljWGM.cjs +0 -1
  41. package/dist/plugin-kUMxtQR5.js +0 -24
@@ -0,0 +1,893 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import * as SwitchPrimitives from "@radix-ui/react-switch";
3
+ import * as React from "react";
4
+ import * as AccordionPrimitive from "@radix-ui/react-accordion";
5
+ import { ChevronDownIcon, Cross2Icon, ChevronRightIcon, CheckIcon, DotFilledIcon } from "@radix-ui/react-icons";
6
+ import { cva } from "class-variance-authority";
7
+ import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
8
+ import { Slot } from "@radix-ui/react-slot";
9
+ import * as SheetPrimitive from "@radix-ui/react-dialog";
10
+ import * as LabelPrimitive from "@radix-ui/react-label";
11
+ import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
12
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
13
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
14
+ import * as PopoverPrimitive from "@radix-ui/react-popover";
15
+ import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
16
+ import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
17
+ import * as SeparatorPrimitive from "@radix-ui/react-separator";
18
+ import * as ToastPrimitives from "@radix-ui/react-toast";
19
+ import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
20
+ import { clsx } from "clsx";
21
+ import { twMerge } from "tailwind-merge";
22
+ const cn = (...inputs) => twMerge(clsx(inputs));
23
+ const Switch = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
24
+ SwitchPrimitives.Root,
25
+ {
26
+ className: cn(
27
+ "peer inline-flex h-[24px] w-[44px] 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-slate-400 focus-visible:ring-offset-2 focus-visible:ring-offset-white disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-slate-900 data-[state=unchecked]:bg-slate-200 dark:focus-visible:ring-slate-800 dark:focus-visible:ring-offset-slate-950 dark:data-[state=checked]:bg-slate-50 dark:data-[state=unchecked]:bg-slate-800",
28
+ className
29
+ ),
30
+ ...props,
31
+ ref,
32
+ children: /* @__PURE__ */ jsx(
33
+ SwitchPrimitives.Thumb,
34
+ {
35
+ className: cn(
36
+ "pointer-events-none block h-5 w-5 rounded-full bg-white shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0 dark:bg-slate-950"
37
+ )
38
+ }
39
+ )
40
+ }
41
+ ));
42
+ Switch.displayName = SwitchPrimitives.Root.displayName;
43
+ const buttonVariants = cva(
44
+ "inline-flex items-center justify-center 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",
45
+ {
46
+ variants: {
47
+ variant: {
48
+ default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
49
+ destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
50
+ outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
51
+ secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
52
+ ghost: "hover:bg-accent hover:text-accent-foreground",
53
+ link: "text-primary underline-offset-4 hover:underline"
54
+ },
55
+ size: {
56
+ default: "h-9 px-4 py-2",
57
+ sm: "h-8 rounded-md px-3 text-xs",
58
+ lg: "h-10 rounded-md px-8",
59
+ icon: "h-9 w-9"
60
+ }
61
+ },
62
+ defaultVariants: {
63
+ variant: "default",
64
+ size: "default"
65
+ }
66
+ }
67
+ );
68
+ const Button = React.forwardRef(
69
+ ({ className, variant, size, asChild = false, ...props }, ref) => {
70
+ const Comp = asChild ? Slot : "button";
71
+ return /* @__PURE__ */ jsx(Comp, { className: cn(buttonVariants({ variant, size, className })), ref, ...props });
72
+ }
73
+ );
74
+ Button.displayName = "Button";
75
+ const Accordion = AccordionPrimitive.Root;
76
+ const AccordionItem = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Item, { ref, className: cn("border-b", className), ...props }));
77
+ AccordionItem.displayName = "AccordionItem";
78
+ const AccordionTrigger = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
79
+ AccordionPrimitive.Trigger,
80
+ {
81
+ ref,
82
+ className: cn(
83
+ "flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",
84
+ className
85
+ ),
86
+ ...props,
87
+ children: [
88
+ children,
89
+ props.hideArrow ? null : /* @__PURE__ */ jsx(ChevronDownIcon, { className: "h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200" })
90
+ ]
91
+ }
92
+ ) }));
93
+ AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
94
+ const AccordionContent = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
95
+ AccordionPrimitive.Content,
96
+ {
97
+ ref,
98
+ className: cn(
99
+ "text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
100
+ className
101
+ ),
102
+ ...props,
103
+ children: /* @__PURE__ */ jsx("div", { className: "pb-4 pt-0", children })
104
+ }
105
+ ));
106
+ AccordionContent.displayName = AccordionPrimitive.Content.displayName;
107
+ const badgeVariants = cva(
108
+ "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",
109
+ {
110
+ variants: {
111
+ variant: {
112
+ default: "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",
113
+ secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
114
+ destructive: "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",
115
+ outline: "text-foreground"
116
+ }
117
+ },
118
+ defaultVariants: {
119
+ variant: "default"
120
+ }
121
+ }
122
+ );
123
+ const Badge = ({ className, variant, ...props }) => /* @__PURE__ */ jsx("div", { className: cn(badgeVariants({ variant }), className), ...props });
124
+ const AlertDialog = AlertDialogPrimitive.Root;
125
+ const AlertDialogTrigger = AlertDialogPrimitive.Trigger;
126
+ const AlertDialogPortal = ({ className, ...props }) => /* @__PURE__ */ jsx(AlertDialogPrimitive.Portal, { className: cn(className), ...props });
127
+ AlertDialogPortal.displayName = AlertDialogPrimitive.Portal.displayName;
128
+ const AlertDialogOverlay = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
129
+ AlertDialogPrimitive.Overlay,
130
+ {
131
+ className: cn(
132
+ "fixed inset-0 z-50 bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
133
+ className
134
+ ),
135
+ ...props,
136
+ ref
137
+ }
138
+ ));
139
+ AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
140
+ const AlertDialogContent = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
141
+ /* @__PURE__ */ jsx(AlertDialogOverlay, {}),
142
+ /* @__PURE__ */ jsx(
143
+ AlertDialogPrimitive.Content,
144
+ {
145
+ ref,
146
+ className: cn(
147
+ "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 md:w-full",
148
+ className
149
+ ),
150
+ ...props
151
+ }
152
+ )
153
+ ] }));
154
+ AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
155
+ const AlertDialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { className: cn("flex flex-col space-y-2 text-center sm:text-left", className), ...props });
156
+ AlertDialogHeader.displayName = "AlertDialogHeader";
157
+ const AlertDialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className), ...props });
158
+ AlertDialogFooter.displayName = "AlertDialogFooter";
159
+ const AlertDialogTitle = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(AlertDialogPrimitive.Title, { ref, className: cn("text-lg font-semibold", className), ...props }));
160
+ AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
161
+ const AlertDialogDescription = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(AlertDialogPrimitive.Description, { ref, className: cn("text-sm text-muted-foreground", className), ...props }));
162
+ AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
163
+ const AlertDialogAction = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(AlertDialogPrimitive.Action, { ref, className: cn(buttonVariants(), className), ...props }));
164
+ AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
165
+ const AlertDialogCancel = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
166
+ AlertDialogPrimitive.Cancel,
167
+ {
168
+ ref,
169
+ className: cn(buttonVariants({ variant: "outline" }), "mt-2 sm:mt-0", className),
170
+ ...props
171
+ }
172
+ ));
173
+ AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
174
+ const Dialog = SheetPrimitive.Root;
175
+ const DialogTrigger = SheetPrimitive.Trigger;
176
+ const DialogPortal = ({ className, ...props }) => /* @__PURE__ */ jsx(SheetPrimitive.Portal, { className: cn(className), ...props });
177
+ DialogPortal.displayName = SheetPrimitive.Portal.displayName;
178
+ const DialogOverlay = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
179
+ SheetPrimitive.Overlay,
180
+ {
181
+ ref,
182
+ className: cn(
183
+ "fixed inset-0 z-50 bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
184
+ className
185
+ ),
186
+ ...props
187
+ }
188
+ ));
189
+ DialogOverlay.displayName = SheetPrimitive.Overlay.displayName;
190
+ const DialogContent = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DialogPortal, { children: [
191
+ /* @__PURE__ */ jsx(DialogOverlay, {}),
192
+ /* @__PURE__ */ jsxs(
193
+ SheetPrimitive.Content,
194
+ {
195
+ ref,
196
+ className: cn(
197
+ "fixed left-[50%] top-[50%] z-[999] 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 md:w-full",
198
+ className
199
+ ),
200
+ ...props,
201
+ children: [
202
+ children,
203
+ /* @__PURE__ */ jsxs(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-accent data-[state=open]:text-muted-foreground", children: [
204
+ /* @__PURE__ */ jsx(Cross2Icon, { className: "h-4 w-4" }),
205
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
206
+ ] })
207
+ ]
208
+ }
209
+ )
210
+ ] }));
211
+ DialogContent.displayName = SheetPrimitive.Content.displayName;
212
+ const DialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { className: cn("flex flex-col space-y-1.5 text-center sm:text-left", className), ...props });
213
+ DialogHeader.displayName = "DialogHeader";
214
+ const DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className), ...props });
215
+ DialogFooter.displayName = "DialogFooter";
216
+ const DialogTitle = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
217
+ SheetPrimitive.Title,
218
+ {
219
+ ref,
220
+ className: cn("text-lg font-semibold leading-none tracking-tight", className),
221
+ ...props
222
+ }
223
+ ));
224
+ DialogTitle.displayName = SheetPrimitive.Title.displayName;
225
+ const DialogDescription = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(SheetPrimitive.Description, { ref, className: cn("text-sm text-muted-foreground", className), ...props }));
226
+ DialogDescription.displayName = SheetPrimitive.Description.displayName;
227
+ const Card = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("rounded-xl border bg-card text-card-foreground shadow", className), ...props }));
228
+ Card.displayName = "Card";
229
+ const CardHeader = React.forwardRef(
230
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex flex-col space-y-1.5 p-6", className), ...props })
231
+ );
232
+ CardHeader.displayName = "CardHeader";
233
+ const CardTitle = React.forwardRef(
234
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx("h3", { ref, className: cn("font-semibold leading-none tracking-tight", className), ...props })
235
+ );
236
+ CardTitle.displayName = "CardTitle";
237
+ const CardDescription = React.forwardRef(
238
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx("p", { ref, className: cn("text-sm text-muted-foreground", className), ...props })
239
+ );
240
+ CardDescription.displayName = "CardDescription";
241
+ const CardContent = React.forwardRef(
242
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("p-6 pt-0", className), ...props })
243
+ );
244
+ CardContent.displayName = "CardContent";
245
+ const CardFooter = React.forwardRef(
246
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn(" flex items-center p-6 pt-0", className), ...props })
247
+ );
248
+ CardFooter.displayName = "CardFooter";
249
+ const Input = React.forwardRef(({ className, type, ...props }, ref) => /* @__PURE__ */ jsx(
250
+ "input",
251
+ {
252
+ type,
253
+ className: cn(
254
+ "flex h-9 w-full rounded-md border border-border bg-background px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
255
+ className
256
+ ),
257
+ ref,
258
+ ...props,
259
+ autoCapitalize: "off",
260
+ autoCorrect: "off",
261
+ spellCheck: "false"
262
+ }
263
+ ));
264
+ Input.displayName = "Input";
265
+ const labelVariants = cva("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70");
266
+ const Label = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(LabelPrimitive.Root, { ref, className: cn(labelVariants(), className), ...props }));
267
+ Label.displayName = LabelPrimitive.Root.displayName;
268
+ const Textarea = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
269
+ "textarea",
270
+ {
271
+ className: cn(
272
+ "flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
273
+ className
274
+ ),
275
+ ref,
276
+ ...props,
277
+ autoCapitalize: "off",
278
+ autoCorrect: "off",
279
+ spellCheck: "false"
280
+ }
281
+ ));
282
+ Textarea.displayName = "Textarea";
283
+ const ScrollArea = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(ScrollAreaPrimitive.Root, { ref, className: cn("relative overflow-hidden", className), ...props, children: [
284
+ /* @__PURE__ */ jsx(ScrollAreaPrimitive.Viewport, { className: "h-full w-full rounded-[inherit]", children }),
285
+ /* @__PURE__ */ jsx(ScrollBar, {}),
286
+ /* @__PURE__ */ jsx(ScrollAreaPrimitive.Corner, {})
287
+ ] }));
288
+ ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
289
+ const ScrollBar = React.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx(
290
+ ScrollAreaPrimitive.ScrollAreaScrollbar,
291
+ {
292
+ ref,
293
+ orientation,
294
+ className: cn(
295
+ "flex touch-none select-none transition-colors",
296
+ orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent p-[1px]",
297
+ orientation === "horizontal" && "h-2.5 border-t border-t-transparent p-[1px]",
298
+ className
299
+ ),
300
+ ...props,
301
+ children: /* @__PURE__ */ jsx(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
302
+ }
303
+ ));
304
+ ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
305
+ const Tabs = TabsPrimitive.Root;
306
+ const TabsList = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
307
+ TabsPrimitive.List,
308
+ {
309
+ ref,
310
+ className: cn(
311
+ "inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",
312
+ className
313
+ ),
314
+ ...props
315
+ }
316
+ ));
317
+ TabsList.displayName = TabsPrimitive.List.displayName;
318
+ const TabsTrigger = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
319
+ TabsPrimitive.Trigger,
320
+ {
321
+ ref,
322
+ className: cn(
323
+ "inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",
324
+ className
325
+ ),
326
+ ...props
327
+ }
328
+ ));
329
+ TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
330
+ const TabsContent = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
331
+ TabsPrimitive.Content,
332
+ {
333
+ ref,
334
+ className: cn(
335
+ "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
336
+ className
337
+ ),
338
+ ...props
339
+ }
340
+ ));
341
+ TabsContent.displayName = TabsPrimitive.Content.displayName;
342
+ const TooltipPortal = TooltipPrimitive.Portal;
343
+ const TooltipProvider = TooltipPrimitive.Provider;
344
+ const Tooltip = TooltipPrimitive.Root;
345
+ const TooltipTrigger = TooltipPrimitive.Trigger;
346
+ const TooltipContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(
347
+ TooltipPrimitive.Content,
348
+ {
349
+ ref,
350
+ sideOffset,
351
+ className: cn(
352
+ "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",
353
+ className
354
+ ),
355
+ ...props
356
+ }
357
+ ));
358
+ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
359
+ const Popover = PopoverPrimitive.Root;
360
+ const PopoverTrigger = PopoverPrimitive.Trigger;
361
+ const PopoverContent = React.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
362
+ PopoverPrimitive.Content,
363
+ {
364
+ ref,
365
+ align,
366
+ sideOffset,
367
+ className: cn(
368
+ "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",
369
+ className
370
+ ),
371
+ ...props
372
+ }
373
+ ) }));
374
+ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
375
+ const HoverCard = HoverCardPrimitive.Root;
376
+ const HoverCardTrigger = HoverCardPrimitive.Trigger;
377
+ const HoverCardContent = React.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(
378
+ HoverCardPrimitive.Content,
379
+ {
380
+ ref,
381
+ align,
382
+ sideOffset,
383
+ className: cn(
384
+ "z-50 w-64 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",
385
+ className
386
+ ),
387
+ ...props
388
+ }
389
+ ));
390
+ HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
391
+ const DropdownMenu = DropdownMenuPrimitive.Root;
392
+ const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
393
+ const DropdownMenuGroup = DropdownMenuPrimitive.Group;
394
+ const DropdownMenuPortal = DropdownMenuPrimitive.Portal;
395
+ const DropdownMenuSub = DropdownMenuPrimitive.Sub;
396
+ const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
397
+ const DropdownMenuSubTrigger = React.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
398
+ DropdownMenuPrimitive.SubTrigger,
399
+ {
400
+ ref,
401
+ className: cn(
402
+ "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",
403
+ inset && "pl-8",
404
+ className
405
+ ),
406
+ ...props,
407
+ children: [
408
+ children,
409
+ /* @__PURE__ */ jsx(ChevronRightIcon, { className: "ml-auto h-4 w-4" })
410
+ ]
411
+ }
412
+ ));
413
+ DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
414
+ const DropdownMenuSubContent = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
415
+ DropdownMenuPrimitive.SubContent,
416
+ {
417
+ ref,
418
+ className: cn(
419
+ "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",
420
+ className
421
+ ),
422
+ ...props
423
+ }
424
+ ));
425
+ DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
426
+ const DropdownMenuContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
427
+ DropdownMenuPrimitive.Content,
428
+ {
429
+ ref,
430
+ sideOffset,
431
+ className: cn(
432
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md",
433
+ "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",
434
+ className
435
+ ),
436
+ ...props
437
+ }
438
+ ) }));
439
+ DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
440
+ const DropdownMenuItem = React.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
441
+ DropdownMenuPrimitive.Item,
442
+ {
443
+ ref,
444
+ className: cn(
445
+ "relative flex cursor-default select-none items-center 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",
446
+ inset && "pl-8",
447
+ className
448
+ ),
449
+ ...props
450
+ }
451
+ ));
452
+ DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
453
+ const DropdownMenuCheckboxItem = React.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
454
+ DropdownMenuPrimitive.CheckboxItem,
455
+ {
456
+ ref,
457
+ className: cn(
458
+ "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",
459
+ className
460
+ ),
461
+ checked,
462
+ ...props,
463
+ children: [
464
+ /* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "h-4 w-4" }) }) }),
465
+ children
466
+ ]
467
+ }
468
+ ));
469
+ DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
470
+ const DropdownMenuRadioItem = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
471
+ DropdownMenuPrimitive.RadioItem,
472
+ {
473
+ ref,
474
+ className: cn(
475
+ "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",
476
+ className
477
+ ),
478
+ ...props,
479
+ children: [
480
+ /* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(DotFilledIcon, { className: "h-4 w-4 fill-current" }) }) }),
481
+ children
482
+ ]
483
+ }
484
+ ));
485
+ DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
486
+ const DropdownMenuLabel = React.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
487
+ DropdownMenuPrimitive.Label,
488
+ {
489
+ ref,
490
+ className: cn("px-2 py-1.5 text-sm font-semibold", inset && "pl-8", className),
491
+ ...props
492
+ }
493
+ ));
494
+ DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
495
+ const DropdownMenuSeparator = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Separator, { ref, className: cn("-mx-1 my-1 h-px bg-muted", className), ...props }));
496
+ DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
497
+ const DropdownMenuShortcut = ({ className, ...props }) => /* @__PURE__ */ jsx("span", { className: cn("ml-auto text-xs tracking-widest opacity-60", className), ...props });
498
+ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
499
+ const Separator = React.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx(
500
+ SeparatorPrimitive.Root,
501
+ {
502
+ ref,
503
+ decorative,
504
+ orientation,
505
+ className: cn("shrink-0 bg-border", orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]", className),
506
+ ...props
507
+ }
508
+ ));
509
+ Separator.displayName = SeparatorPrimitive.Root.displayName;
510
+ const TOAST_LIMIT = 1;
511
+ const TOAST_REMOVE_DELAY = 1e6;
512
+ let count = 0;
513
+ function genId() {
514
+ count = (count + 1) % Number.MAX_VALUE;
515
+ return count.toString();
516
+ }
517
+ const toastTimeouts = /* @__PURE__ */ new Map();
518
+ const addToRemoveQueue = (toastId) => {
519
+ if (toastTimeouts.has(toastId)) {
520
+ return;
521
+ }
522
+ const timeout = setTimeout(() => {
523
+ toastTimeouts.delete(toastId);
524
+ dispatch({
525
+ type: "REMOVE_TOAST",
526
+ toastId
527
+ });
528
+ }, TOAST_REMOVE_DELAY);
529
+ toastTimeouts.set(toastId, timeout);
530
+ };
531
+ const reducer = (state, action) => {
532
+ switch (action.type) {
533
+ case "ADD_TOAST":
534
+ return {
535
+ ...state,
536
+ toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT)
537
+ };
538
+ case "UPDATE_TOAST":
539
+ return {
540
+ ...state,
541
+ toasts: state.toasts.map((t) => t.id === action.toast.id ? { ...t, ...action.toast } : t)
542
+ };
543
+ case "DISMISS_TOAST": {
544
+ const { toastId } = action;
545
+ if (toastId) {
546
+ addToRemoveQueue(toastId);
547
+ } else {
548
+ state.toasts.forEach((toast2) => {
549
+ addToRemoveQueue(toast2.id);
550
+ });
551
+ }
552
+ return {
553
+ ...state,
554
+ toasts: state.toasts.map(
555
+ (t) => t.id === toastId || toastId === void 0 ? {
556
+ ...t,
557
+ open: false
558
+ } : t
559
+ )
560
+ };
561
+ }
562
+ case "REMOVE_TOAST":
563
+ if (action.toastId === void 0) {
564
+ return {
565
+ ...state,
566
+ toasts: []
567
+ };
568
+ }
569
+ return {
570
+ ...state,
571
+ toasts: state.toasts.filter((t) => t.id !== action.toastId)
572
+ };
573
+ }
574
+ };
575
+ const listeners = [];
576
+ let memoryState = { toasts: [] };
577
+ function dispatch(action) {
578
+ memoryState = reducer(memoryState, action);
579
+ listeners.forEach((listener) => {
580
+ listener(memoryState);
581
+ });
582
+ }
583
+ function toast({ ...props }) {
584
+ const id = genId();
585
+ const update = (props2) => dispatch({
586
+ type: "UPDATE_TOAST",
587
+ toast: { ...props2, id }
588
+ });
589
+ const dismiss = () => dispatch({ type: "DISMISS_TOAST", toastId: id });
590
+ dispatch({
591
+ type: "ADD_TOAST",
592
+ toast: {
593
+ ...props,
594
+ id,
595
+ open: true,
596
+ onOpenChange: (open) => {
597
+ if (!open) dismiss();
598
+ }
599
+ }
600
+ });
601
+ return {
602
+ id,
603
+ dismiss,
604
+ update
605
+ };
606
+ }
607
+ function useToast() {
608
+ const [state, setState] = React.useState(memoryState);
609
+ React.useEffect(() => {
610
+ listeners.push(setState);
611
+ return () => {
612
+ const index = listeners.indexOf(setState);
613
+ if (index > -1) {
614
+ listeners.splice(index, 1);
615
+ }
616
+ };
617
+ }, [state]);
618
+ return {
619
+ ...state,
620
+ toast,
621
+ dismiss: (toastId) => dispatch({ type: "DISMISS_TOAST", toastId })
622
+ };
623
+ }
624
+ const ToastProvider = ToastPrimitives.Provider;
625
+ const ToastViewport = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
626
+ ToastPrimitives.Viewport,
627
+ {
628
+ ref,
629
+ className: cn(
630
+ "fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",
631
+ className
632
+ ),
633
+ ...props
634
+ }
635
+ ));
636
+ ToastViewport.displayName = ToastPrimitives.Viewport.displayName;
637
+ const toastVariants = cva(
638
+ "group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",
639
+ {
640
+ variants: {
641
+ variant: {
642
+ default: "border bg-background",
643
+ destructive: "destructive group border-destructive bg-destructive text-destructive-foreground"
644
+ }
645
+ },
646
+ defaultVariants: {
647
+ variant: "default"
648
+ }
649
+ }
650
+ );
651
+ const Toast = React.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ jsx(ToastPrimitives.Root, { ref, className: cn(toastVariants({ variant }), className), ...props }));
652
+ Toast.displayName = ToastPrimitives.Root.displayName;
653
+ const ToastAction = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
654
+ ToastPrimitives.Action,
655
+ {
656
+ ref,
657
+ className: cn(
658
+ "inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",
659
+ className
660
+ ),
661
+ ...props
662
+ }
663
+ ));
664
+ ToastAction.displayName = ToastPrimitives.Action.displayName;
665
+ const ToastClose = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
666
+ ToastPrimitives.Close,
667
+ {
668
+ ref,
669
+ className: cn(
670
+ "absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",
671
+ className
672
+ ),
673
+ "toast-close": "",
674
+ ...props,
675
+ children: /* @__PURE__ */ jsx(Cross2Icon, { className: "h-4 w-4" })
676
+ }
677
+ ));
678
+ ToastClose.displayName = ToastPrimitives.Close.displayName;
679
+ const ToastTitle = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(ToastPrimitives.Title, { ref, className: cn("text-sm font-semibold [&+div]:text-xs", className), ...props }));
680
+ ToastTitle.displayName = ToastPrimitives.Title.displayName;
681
+ const ToastDescription = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(ToastPrimitives.Description, { ref, className: cn("text-sm opacity-90", className), ...props }));
682
+ ToastDescription.displayName = ToastPrimitives.Description.displayName;
683
+ function Toaster() {
684
+ const { toasts } = useToast();
685
+ return /* @__PURE__ */ jsxs(ToastProvider, { children: [
686
+ toasts.map(({ id, title, description, action, ...props }) => /* @__PURE__ */ jsxs(Toast, { ...props, children: [
687
+ /* @__PURE__ */ jsxs("div", { className: "grid gap-1", children: [
688
+ title && /* @__PURE__ */ jsx(ToastTitle, { children: title }),
689
+ description && /* @__PURE__ */ jsx(ToastDescription, { children: description })
690
+ ] }),
691
+ action,
692
+ /* @__PURE__ */ jsx(ToastClose, {})
693
+ ] }, id)),
694
+ /* @__PURE__ */ jsx(ToastViewport, {})
695
+ ] });
696
+ }
697
+ const Skeleton = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { className: cn("animate-pulse rounded-md bg-primary/10", className), ...props });
698
+ const ContextMenu = ContextMenuPrimitive.Root;
699
+ const ContextMenuTrigger = ContextMenuPrimitive.Trigger;
700
+ const ContextMenuGroup = ContextMenuPrimitive.Group;
701
+ const ContextMenuPortal = ContextMenuPrimitive.Portal;
702
+ const ContextMenuSub = ContextMenuPrimitive.Sub;
703
+ const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
704
+ const ContextMenuSubTrigger = React.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
705
+ ContextMenuPrimitive.SubTrigger,
706
+ {
707
+ ref,
708
+ className: cn(
709
+ "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
710
+ inset && "pl-8",
711
+ className
712
+ ),
713
+ ...props,
714
+ children: [
715
+ children,
716
+ /* @__PURE__ */ jsx(ChevronRightIcon, { className: "ml-auto h-4 w-4" })
717
+ ]
718
+ }
719
+ ));
720
+ ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
721
+ const ContextMenuSubContent = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
722
+ ContextMenuPrimitive.SubContent,
723
+ {
724
+ ref,
725
+ className: cn(
726
+ "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",
727
+ className
728
+ ),
729
+ ...props
730
+ }
731
+ ));
732
+ ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
733
+ const ContextMenuContent = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
734
+ ContextMenuPrimitive.Content,
735
+ {
736
+ ref,
737
+ className: cn(
738
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 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",
739
+ className
740
+ ),
741
+ ...props
742
+ }
743
+ ) }));
744
+ ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
745
+ const ContextMenuItem = React.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
746
+ ContextMenuPrimitive.Item,
747
+ {
748
+ ref,
749
+ className: cn(
750
+ "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
751
+ inset && "pl-8",
752
+ className
753
+ ),
754
+ ...props
755
+ }
756
+ ));
757
+ ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
758
+ const ContextMenuCheckboxItem = React.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
759
+ ContextMenuPrimitive.CheckboxItem,
760
+ {
761
+ ref,
762
+ className: cn(
763
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
764
+ className
765
+ ),
766
+ checked,
767
+ ...props,
768
+ children: [
769
+ /* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "h-4 w-4" }) }) }),
770
+ children
771
+ ]
772
+ }
773
+ ));
774
+ ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;
775
+ const ContextMenuRadioItem = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
776
+ ContextMenuPrimitive.RadioItem,
777
+ {
778
+ ref,
779
+ className: cn(
780
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
781
+ className
782
+ ),
783
+ ...props,
784
+ children: [
785
+ /* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(DotFilledIcon, { className: "h-4 w-4 fill-current" }) }) }),
786
+ children
787
+ ]
788
+ }
789
+ ));
790
+ ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
791
+ const ContextMenuLabel = React.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
792
+ ContextMenuPrimitive.Label,
793
+ {
794
+ ref,
795
+ className: cn("px-2 py-1.5 text-sm font-semibold text-foreground", inset && "pl-8", className),
796
+ ...props
797
+ }
798
+ ));
799
+ ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
800
+ const ContextMenuSeparator = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Separator, { ref, className: cn("-mx-1 my-1 h-px bg-border", className), ...props }));
801
+ ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;
802
+ const ContextMenuShortcut = ({ className, ...props }) => /* @__PURE__ */ jsx("span", { className: cn("ml-auto text-xs tracking-widest text-muted-foreground", className), ...props });
803
+ ContextMenuShortcut.displayName = "ContextMenuShortcut";
804
+ export {
805
+ DropdownMenu as $,
806
+ Accordion as A,
807
+ Button as B,
808
+ Card as C,
809
+ Dialog as D,
810
+ CardDescription as E,
811
+ CardContent as F,
812
+ ScrollArea as G,
813
+ ScrollBar as H,
814
+ Input as I,
815
+ Tabs as J,
816
+ TabsList as K,
817
+ Label as L,
818
+ TabsTrigger as M,
819
+ TabsContent as N,
820
+ Tooltip as O,
821
+ TooltipTrigger as P,
822
+ TooltipContent as Q,
823
+ TooltipProvider as R,
824
+ Skeleton as S,
825
+ Textarea as T,
826
+ TooltipPortal as U,
827
+ Popover as V,
828
+ PopoverTrigger as W,
829
+ PopoverContent as X,
830
+ HoverCard as Y,
831
+ HoverCardTrigger as Z,
832
+ HoverCardContent as _,
833
+ DialogContent as a,
834
+ DropdownMenuTrigger as a0,
835
+ DropdownMenuContent as a1,
836
+ DropdownMenuItem as a2,
837
+ DropdownMenuCheckboxItem as a3,
838
+ DropdownMenuRadioItem as a4,
839
+ DropdownMenuLabel as a5,
840
+ DropdownMenuSeparator as a6,
841
+ DropdownMenuShortcut as a7,
842
+ DropdownMenuGroup as a8,
843
+ DropdownMenuPortal as a9,
844
+ DropdownMenuSub as aa,
845
+ DropdownMenuSubContent as ab,
846
+ DropdownMenuSubTrigger as ac,
847
+ DropdownMenuRadioGroup as ad,
848
+ Separator as ae,
849
+ reducer as af,
850
+ useToast as ag,
851
+ toast as ah,
852
+ Toaster as ai,
853
+ ContextMenu as aj,
854
+ ContextMenuTrigger as ak,
855
+ ContextMenuContent as al,
856
+ ContextMenuItem as am,
857
+ ContextMenuCheckboxItem as an,
858
+ ContextMenuRadioItem as ao,
859
+ ContextMenuLabel as ap,
860
+ ContextMenuSeparator as aq,
861
+ ContextMenuShortcut as ar,
862
+ ContextMenuGroup as as,
863
+ ContextMenuPortal as at,
864
+ ContextMenuSub as au,
865
+ ContextMenuSubContent as av,
866
+ ContextMenuSubTrigger as aw,
867
+ ContextMenuRadioGroup as ax,
868
+ Switch as b,
869
+ cn as c,
870
+ buttonVariants as d,
871
+ AccordionItem as e,
872
+ AccordionTrigger as f,
873
+ AccordionContent as g,
874
+ Badge as h,
875
+ badgeVariants as i,
876
+ AlertDialog as j,
877
+ AlertDialogTrigger as k,
878
+ AlertDialogContent as l,
879
+ AlertDialogHeader as m,
880
+ AlertDialogFooter as n,
881
+ AlertDialogTitle as o,
882
+ AlertDialogDescription as p,
883
+ AlertDialogAction as q,
884
+ AlertDialogCancel as r,
885
+ DialogTrigger as s,
886
+ DialogHeader as t,
887
+ DialogFooter as u,
888
+ DialogTitle as v,
889
+ DialogDescription as w,
890
+ CardHeader as x,
891
+ CardFooter as y,
892
+ CardTitle as z
893
+ };