@yuva-devlab/ui 0.1.2 → 1.0.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 (74) hide show
  1. package/README.md +5 -20
  2. package/dist/index.cjs +4518 -1
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.cts +765 -0
  5. package/dist/index.d.ts +765 -2
  6. package/dist/index.js +4194 -235
  7. package/dist/index.js.map +1 -0
  8. package/package.json +53 -32
  9. package/dist/components/button/button.d.ts +0 -13
  10. package/dist/components/button/button.d.ts.map +0 -1
  11. package/dist/components/button/button.styles.css.d.ts +0 -10
  12. package/dist/components/button/button.styles.css.d.ts.map +0 -1
  13. package/dist/components/button/button.types.d.ts +0 -15
  14. package/dist/components/button/button.types.d.ts.map +0 -1
  15. package/dist/components/button/index.d.ts +0 -3
  16. package/dist/components/button/index.d.ts.map +0 -1
  17. package/dist/components/index.d.ts +0 -5
  18. package/dist/components/index.d.ts.map +0 -1
  19. package/dist/components/input/index.d.ts +0 -3
  20. package/dist/components/input/index.d.ts.map +0 -1
  21. package/dist/components/input/input.css.d.ts +0 -5
  22. package/dist/components/input/input.css.d.ts.map +0 -1
  23. package/dist/components/input/input.d.ts +0 -15
  24. package/dist/components/input/input.d.ts.map +0 -1
  25. package/dist/components/input/input.types.d.ts +0 -13
  26. package/dist/components/input/input.types.d.ts.map +0 -1
  27. package/dist/components/layout/box/box.d.ts +0 -14
  28. package/dist/components/layout/box/box.d.ts.map +0 -1
  29. package/dist/components/layout/box/box.styles.css.d.ts +0 -19
  30. package/dist/components/layout/box/box.styles.css.d.ts.map +0 -1
  31. package/dist/components/layout/box/box.types.d.ts +0 -23
  32. package/dist/components/layout/box/box.types.d.ts.map +0 -1
  33. package/dist/components/layout/box/index.d.ts +0 -3
  34. package/dist/components/layout/box/index.d.ts.map +0 -1
  35. package/dist/components/layout/container/container.d.ts +0 -13
  36. package/dist/components/layout/container/container.d.ts.map +0 -1
  37. package/dist/components/layout/container/container.styles.css.d.ts +0 -3
  38. package/dist/components/layout/container/container.styles.css.d.ts.map +0 -1
  39. package/dist/components/layout/container/container.types.d.ts +0 -5
  40. package/dist/components/layout/container/container.types.d.ts.map +0 -1
  41. package/dist/components/layout/container/index.d.ts +0 -3
  42. package/dist/components/layout/container/index.d.ts.map +0 -1
  43. package/dist/components/layout/flex/flex.d.ts +0 -14
  44. package/dist/components/layout/flex/flex.d.ts.map +0 -1
  45. package/dist/components/layout/flex/flex.styles.css.d.ts +0 -7
  46. package/dist/components/layout/flex/flex.styles.css.d.ts.map +0 -1
  47. package/dist/components/layout/flex/flex.types.d.ts +0 -9
  48. package/dist/components/layout/flex/flex.types.d.ts.map +0 -1
  49. package/dist/components/layout/flex/index.d.ts +0 -3
  50. package/dist/components/layout/flex/index.d.ts.map +0 -1
  51. package/dist/components/layout/grid/grid.d.ts +0 -15
  52. package/dist/components/layout/grid/grid.d.ts.map +0 -1
  53. package/dist/components/layout/grid/grid.styles.css.d.ts +0 -8
  54. package/dist/components/layout/grid/grid.styles.css.d.ts.map +0 -1
  55. package/dist/components/layout/grid/grid.types.d.ts +0 -10
  56. package/dist/components/layout/grid/grid.types.d.ts.map +0 -1
  57. package/dist/components/layout/grid/index.d.ts +0 -3
  58. package/dist/components/layout/grid/index.d.ts.map +0 -1
  59. package/dist/components/layout/index.d.ts +0 -6
  60. package/dist/components/layout/index.d.ts.map +0 -1
  61. package/dist/components/layout/stack/index.d.ts +0 -2
  62. package/dist/components/layout/stack/index.d.ts.map +0 -1
  63. package/dist/components/layout/stack/stack.d.ts +0 -17
  64. package/dist/components/layout/stack/stack.d.ts.map +0 -1
  65. package/dist/components/typography/index.d.ts +0 -2
  66. package/dist/components/typography/index.d.ts.map +0 -1
  67. package/dist/components/typography/typography.css.d.ts +0 -4
  68. package/dist/components/typography/typography.css.d.ts.map +0 -1
  69. package/dist/components/typography/typography.d.ts +0 -13
  70. package/dist/components/typography/typography.d.ts.map +0 -1
  71. package/dist/components/typography/typography.types.d.ts +0 -8
  72. package/dist/components/typography/typography.types.d.ts.map +0 -1
  73. package/dist/index.d.ts.map +0 -1
  74. package/dist/ui.css +0 -1
package/dist/index.js CHANGED
@@ -1,275 +1,4234 @@
1
- import { jsx as e, jsxs as N } from "react/jsx-runtime";
2
- import { ButtonPrimitive as R, TypographyPrimitive as B, InputPrimitive as q, BoxPrimitive as I } from "@yuva-devlab/primitives";
3
- import n from "clsx";
4
- import d from "react";
5
- var E = "vvjlfg0", G = { xs: "vvjlfg1", sm: "vvjlfg2", md: "vvjlfg3", lg: "vvjlfg4", xl: "vvjlfg5" }, P = { round: "vvjlfg6", square: "vvjlfg7" }, F = { round: "vvjlfg8", square: "vvjlfg9" }, T = { narrow: "vvjlfga", default: "vvjlfgb", wide: "vvjlfgc" }, L = { default: "vvjlfgd", primary: "vvjlfge", ghost: "vvjlfgf", link: "vvjlfgg", elevated: "vvjlfgh", filled: "vvjlfgi", tonal: "vvjlfgj", outlined: "vvjlfgk", text: "vvjlfgl", secondary: "vvjlfgm", tertiary: "vvjlfgn" }, C = "vvjlfgo", S = "vvjlfgp", X = "vvjlfgq";
6
- const Y = d.forwardRef(
7
- ({
8
- variant: r = "default",
9
- size: a = "md",
10
- shape: i = "round",
11
- width: l = "default",
12
- danger: x = !1,
13
- block: s = !1,
14
- morph: p = !1,
15
- className: t,
16
- disabled: v,
17
- loading: c,
18
- ...o
19
- }, m) => /* @__PURE__ */ e(
20
- R,
21
- {
22
- ref: m,
23
- loading: c,
24
- disabled: v,
25
- "aria-busy": c,
26
- className: n(
27
- E,
28
- G[a],
29
- P[i],
30
- T[l],
31
- L[r],
32
- p && F[i],
33
- x && C,
34
- s && S,
35
- (v || c) && X,
36
- t
1
+ "use client";
2
+
3
+ // src/lib/utils.ts
4
+ import { clsx } from "clsx";
5
+ import { twMerge } from "tailwind-merge";
6
+ function cn(...inputs) {
7
+ return twMerge(clsx(inputs));
8
+ }
9
+
10
+ // src/theme-provider.tsx
11
+ import { createContext, useContext, useEffect, useState } from "react";
12
+ import { jsx } from "react/jsx-runtime";
13
+ var initialState = {
14
+ theme: "system",
15
+ setTheme: () => null,
16
+ resolvedTheme: "dark"
17
+ };
18
+ var ThemeProviderContext = createContext(initialState);
19
+ function ThemeProvider({
20
+ children,
21
+ defaultTheme = "system",
22
+ storageKey = "yd-theme",
23
+ attribute = "data-theme",
24
+ enableSystem = true,
25
+ ...props
26
+ }) {
27
+ const [theme, setThemeState] = useState(() => {
28
+ if (typeof window !== "undefined") {
29
+ const stored = localStorage.getItem(storageKey);
30
+ if (stored) return stored;
31
+ }
32
+ return defaultTheme;
33
+ });
34
+ const [resolvedTheme, setResolvedTheme] = useState("dark");
35
+ useEffect(() => {
36
+ const root = window.document.documentElement;
37
+ root.classList.remove("light", "dark");
38
+ let activeTheme = theme;
39
+ if (theme === "system" && enableSystem) {
40
+ const systemTheme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
41
+ activeTheme = systemTheme;
42
+ }
43
+ const isDark = activeTheme.includes("dark") || activeTheme === "orchestrai";
44
+ const resolved = isDark ? "dark" : "light";
45
+ setResolvedTheme(resolved);
46
+ root.classList.add(resolved);
47
+ if (attribute) {
48
+ root.setAttribute(attribute, theme);
49
+ }
50
+ }, [theme, enableSystem, attribute]);
51
+ const value = {
52
+ theme,
53
+ setTheme: (newTheme) => {
54
+ localStorage.setItem(storageKey, newTheme);
55
+ setThemeState(newTheme);
56
+ },
57
+ resolvedTheme
58
+ };
59
+ return /* @__PURE__ */ jsx(ThemeProviderContext.Provider, { ...props, value, children });
60
+ }
61
+ var useTheme = () => {
62
+ const context = useContext(ThemeProviderContext);
63
+ if (context === void 0) {
64
+ throw new Error("useTheme must be used within a ThemeProvider");
65
+ }
66
+ return context;
67
+ };
68
+
69
+ // src/hooks/use-mobile.ts
70
+ import * as React2 from "react";
71
+ var MOBILE_BREAKPOINT = 768;
72
+ function useIsMobile() {
73
+ const [isMobile, setIsMobile] = React2.useState(
74
+ void 0
75
+ );
76
+ React2.useEffect(() => {
77
+ const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
78
+ const onChange = () => {
79
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
80
+ };
81
+ mql.addEventListener("change", onChange);
82
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
83
+ return () => mql.removeEventListener("change", onChange);
84
+ }, []);
85
+ return !!isMobile;
86
+ }
87
+
88
+ // src/components/accordion.tsx
89
+ import * as React3 from "react";
90
+ import * as AccordionPrimitive from "@radix-ui/react-accordion";
91
+ import { ChevronDown } from "lucide-react";
92
+ import { jsx as jsx2, jsxs } from "react/jsx-runtime";
93
+ var Accordion = AccordionPrimitive.Root;
94
+ var AccordionItem = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx2(
95
+ AccordionPrimitive.Item,
96
+ {
97
+ ref,
98
+ className: cn("border-b", className),
99
+ ...props
100
+ }
101
+ ));
102
+ AccordionItem.displayName = "AccordionItem";
103
+ var AccordionTrigger = React3.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx2(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
104
+ AccordionPrimitive.Trigger,
105
+ {
106
+ ref,
107
+ className: cn(
108
+ "flex flex-1 items-center justify-between py-4 text-sm font-medium cursor-pointer transition-all hover:underline text-left [&[data-state=open]>svg]:rotate-180",
109
+ className
110
+ ),
111
+ ...props,
112
+ children: [
113
+ children,
114
+ /* @__PURE__ */ jsx2(ChevronDown, { className: "shrink-0 text-muted-foreground transition-transform duration-200 size-4" })
115
+ ]
116
+ }
117
+ ) }));
118
+ AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
119
+ var AccordionContent = React3.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx2(
120
+ AccordionPrimitive.Content,
121
+ {
122
+ ref,
123
+ className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
124
+ ...props,
125
+ children: /* @__PURE__ */ jsx2("div", { className: cn("pb-4 pt-0", className), children })
126
+ }
127
+ ));
128
+ AccordionContent.displayName = AccordionPrimitive.Content.displayName;
129
+
130
+ // src/components/alert-dialog.tsx
131
+ import * as React5 from "react";
132
+ import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
133
+
134
+ // src/components/button.tsx
135
+ import * as React4 from "react";
136
+ import { Slot } from "@radix-ui/react-slot";
137
+ import { cva } from "class-variance-authority";
138
+ import { jsx as jsx3 } from "react/jsx-runtime";
139
+ var buttonVariants = cva(
140
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium cursor-pointer transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
141
+ {
142
+ variants: {
143
+ variant: {
144
+ default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
145
+ destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
146
+ outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
147
+ secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
148
+ ghost: "hover:bg-accent hover:text-accent-foreground",
149
+ link: "text-primary underline-offset-4 hover:underline"
150
+ },
151
+ size: {
152
+ default: "h-9 px-4 py-2",
153
+ sm: "h-8 rounded-md px-3 text-xs",
154
+ lg: "h-10 rounded-md px-8",
155
+ icon: "size-9"
156
+ }
157
+ },
158
+ defaultVariants: {
159
+ variant: "default",
160
+ size: "default"
161
+ }
162
+ }
163
+ );
164
+ var Button = React4.forwardRef(
165
+ ({ className, variant, size, asChild = false, ...props }, ref) => {
166
+ const Comp = asChild ? Slot : "button";
167
+ return /* @__PURE__ */ jsx3(
168
+ Comp,
169
+ {
170
+ className: cn(buttonVariants({ variant, size, className })),
171
+ ref,
172
+ ...props
173
+ }
174
+ );
175
+ }
176
+ );
177
+ Button.displayName = "Button";
178
+
179
+ // src/components/alert-dialog.tsx
180
+ import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
181
+ var AlertDialog = AlertDialogPrimitive.Root;
182
+ var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
183
+ var AlertDialogPortal = AlertDialogPrimitive.Portal;
184
+ var AlertDialogOverlay = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
185
+ AlertDialogPrimitive.Overlay,
186
+ {
187
+ className: cn(
188
+ "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",
189
+ className
190
+ ),
191
+ ...props,
192
+ ref
193
+ }
194
+ ));
195
+ AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
196
+ var AlertDialogContent = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs2(AlertDialogPortal, { children: [
197
+ /* @__PURE__ */ jsx4(AlertDialogOverlay, {}),
198
+ /* @__PURE__ */ jsx4(
199
+ AlertDialogPrimitive.Content,
200
+ {
201
+ ref,
202
+ className: cn(
203
+ "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg 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 sm:rounded-lg translate-[-50%]",
204
+ className
37
205
  ),
38
- ...o
206
+ ...props
39
207
  }
40
208
  )
209
+ ] }));
210
+ AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
211
+ var AlertDialogHeader = ({
212
+ className,
213
+ ...props
214
+ }) => /* @__PURE__ */ jsx4(
215
+ "div",
216
+ {
217
+ className: cn(
218
+ "flex flex-col space-y-2 text-center sm:text-left",
219
+ className
220
+ ),
221
+ ...props
222
+ }
41
223
  );
42
- Y.displayName = "Button";
43
- var D = "xwmau40", A = { h1: "xwmau41", h2: "xwmau42", h3: "xwmau43", h4: "xwmau44", h5: "xwmau45", h6: "xwmau46", body: "xwmau47", caption: "xwmau48", captionError: "xwmau49", label: "xwmau4a" }, H = { normal: "xwmau4b", medium: "xwmau4c", bold: "xwmau4d" };
44
- const J = {
45
- h1: "h1",
46
- h2: "h2",
47
- h3: "h3",
48
- h4: "h4",
49
- h5: "h5",
50
- h6: "h6",
51
- body: "p",
52
- caption: "span",
53
- captionError: "span",
54
- label: "label"
55
- }, j = d.forwardRef(
56
- ({ variant: r = "body", weight: a, className: i, asChild: l, ...x }, s) => {
57
- const p = J[r];
58
- return /* @__PURE__ */ e(
59
- B,
60
- {
61
- ref: s,
62
- asChild: l,
63
- ...!l && { as: p },
64
- className: n(
65
- D,
66
- A[r],
67
- a && H[a],
68
- i
224
+ AlertDialogHeader.displayName = "AlertDialogHeader";
225
+ var AlertDialogFooter = ({
226
+ className,
227
+ ...props
228
+ }) => /* @__PURE__ */ jsx4(
229
+ "div",
230
+ {
231
+ className: cn(
232
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
233
+ className
234
+ ),
235
+ ...props
236
+ }
237
+ );
238
+ AlertDialogFooter.displayName = "AlertDialogFooter";
239
+ var AlertDialogTitle = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
240
+ AlertDialogPrimitive.Title,
241
+ {
242
+ ref,
243
+ className: cn("text-lg font-semibold", className),
244
+ ...props
245
+ }
246
+ ));
247
+ AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
248
+ var AlertDialogDescription = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
249
+ AlertDialogPrimitive.Description,
250
+ {
251
+ ref,
252
+ className: cn("text-sm text-muted-foreground", className),
253
+ ...props
254
+ }
255
+ ));
256
+ AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
257
+ var AlertDialogAction = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
258
+ AlertDialogPrimitive.Action,
259
+ {
260
+ ref,
261
+ className: cn(buttonVariants(), className),
262
+ ...props
263
+ }
264
+ ));
265
+ AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
266
+ var AlertDialogCancel = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
267
+ AlertDialogPrimitive.Cancel,
268
+ {
269
+ ref,
270
+ className: cn(
271
+ buttonVariants({ variant: "outline" }),
272
+ "mt-2 sm:mt-0",
273
+ className
274
+ ),
275
+ ...props
276
+ }
277
+ ));
278
+ AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
279
+
280
+ // src/components/alert.tsx
281
+ import * as React6 from "react";
282
+ import { cva as cva2 } from "class-variance-authority";
283
+ import { jsx as jsx5 } from "react/jsx-runtime";
284
+ var alertVariants = cva2(
285
+ "relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7",
286
+ {
287
+ variants: {
288
+ variant: {
289
+ default: "bg-background text-foreground",
290
+ destructive: "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"
291
+ }
292
+ },
293
+ defaultVariants: {
294
+ variant: "default"
295
+ }
296
+ }
297
+ );
298
+ var Alert = React6.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ jsx5(
299
+ "div",
300
+ {
301
+ ref,
302
+ role: "alert",
303
+ className: cn(alertVariants({ variant }), className),
304
+ ...props
305
+ }
306
+ ));
307
+ Alert.displayName = "Alert";
308
+ var AlertTitle = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
309
+ "h5",
310
+ {
311
+ ref,
312
+ className: cn("mb-1 font-medium leading-none tracking-tight", className),
313
+ ...props
314
+ }
315
+ ));
316
+ AlertTitle.displayName = "AlertTitle";
317
+ var AlertDescription = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
318
+ "div",
319
+ {
320
+ ref,
321
+ className: cn("text-sm [&_p]:leading-relaxed", className),
322
+ ...props
323
+ }
324
+ ));
325
+ AlertDescription.displayName = "AlertDescription";
326
+
327
+ // src/components/aspect-ratio.tsx
328
+ import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio";
329
+ var AspectRatio = AspectRatioPrimitive.Root;
330
+
331
+ // src/components/avatar.tsx
332
+ import * as React7 from "react";
333
+ import * as AvatarPrimitive from "@radix-ui/react-avatar";
334
+ import { jsx as jsx6 } from "react/jsx-runtime";
335
+ var Avatar = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx6(
336
+ AvatarPrimitive.Root,
337
+ {
338
+ ref,
339
+ className: cn(
340
+ "relative flex shrink-0 overflow-hidden rounded-full size-10",
341
+ className
342
+ ),
343
+ ...props
344
+ }
345
+ ));
346
+ Avatar.displayName = AvatarPrimitive.Root.displayName;
347
+ var AvatarImage = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx6(
348
+ AvatarPrimitive.Image,
349
+ {
350
+ ref,
351
+ className: cn("aspect-square size-full", className),
352
+ ...props
353
+ }
354
+ ));
355
+ AvatarImage.displayName = AvatarPrimitive.Image.displayName;
356
+ var AvatarFallback = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx6(
357
+ AvatarPrimitive.Fallback,
358
+ {
359
+ ref,
360
+ className: cn(
361
+ "flex items-center justify-center rounded-full bg-muted size-full",
362
+ className
363
+ ),
364
+ ...props
365
+ }
366
+ ));
367
+ AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
368
+
369
+ // src/components/badge.tsx
370
+ import { cva as cva3 } from "class-variance-authority";
371
+ import { jsx as jsx7 } from "react/jsx-runtime";
372
+ var badgeVariants = cva3(
373
+ "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",
374
+ {
375
+ variants: {
376
+ variant: {
377
+ default: "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",
378
+ secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
379
+ destructive: "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",
380
+ outline: "text-foreground"
381
+ }
382
+ },
383
+ defaultVariants: {
384
+ variant: "default"
385
+ }
386
+ }
387
+ );
388
+ function Badge({ className, variant, ...props }) {
389
+ return /* @__PURE__ */ jsx7("div", { className: cn(badgeVariants({ variant }), className), ...props });
390
+ }
391
+
392
+ // src/components/breadcrumb.tsx
393
+ import * as React8 from "react";
394
+ import { Slot as Slot2 } from "@radix-ui/react-slot";
395
+ import { ChevronRight, MoreHorizontal } from "lucide-react";
396
+ import { jsx as jsx8, jsxs as jsxs3 } from "react/jsx-runtime";
397
+ var Breadcrumb = React8.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx8("nav", { ref, "aria-label": "breadcrumb", ...props }));
398
+ Breadcrumb.displayName = "Breadcrumb";
399
+ var BreadcrumbList = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx8(
400
+ "ol",
401
+ {
402
+ ref,
403
+ className: cn(
404
+ "flex flex-wrap items-center gap-1.5 wrap-break-word text-sm text-muted-foreground sm:gap-2.5",
405
+ className
406
+ ),
407
+ ...props
408
+ }
409
+ ));
410
+ BreadcrumbList.displayName = "BreadcrumbList";
411
+ var BreadcrumbItem = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx8(
412
+ "li",
413
+ {
414
+ ref,
415
+ className: cn("inline-flex items-center gap-1.5", className),
416
+ ...props
417
+ }
418
+ ));
419
+ BreadcrumbItem.displayName = "BreadcrumbItem";
420
+ var BreadcrumbLink = React8.forwardRef(({ asChild, className, ...props }, ref) => {
421
+ const Comp = asChild ? Slot2 : "a";
422
+ return /* @__PURE__ */ jsx8(
423
+ Comp,
424
+ {
425
+ ref,
426
+ className: cn("transition-colors hover:text-foreground", className),
427
+ ...props
428
+ }
429
+ );
430
+ });
431
+ BreadcrumbLink.displayName = "BreadcrumbLink";
432
+ var BreadcrumbPage = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx8(
433
+ "span",
434
+ {
435
+ ref,
436
+ role: "link",
437
+ "aria-disabled": "true",
438
+ "aria-current": "page",
439
+ className: cn("font-normal text-foreground", className),
440
+ ...props
441
+ }
442
+ ));
443
+ BreadcrumbPage.displayName = "BreadcrumbPage";
444
+ var BreadcrumbSeparator = ({
445
+ children,
446
+ className,
447
+ ...props
448
+ }) => /* @__PURE__ */ jsx8(
449
+ "li",
450
+ {
451
+ role: "presentation",
452
+ "aria-hidden": "true",
453
+ className: cn("[&>svg]:size-3.5", className),
454
+ ...props,
455
+ children: children ?? /* @__PURE__ */ jsx8(ChevronRight, {})
456
+ }
457
+ );
458
+ BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
459
+ var BreadcrumbEllipsis = ({
460
+ className,
461
+ ...props
462
+ }) => /* @__PURE__ */ jsxs3(
463
+ "span",
464
+ {
465
+ role: "presentation",
466
+ "aria-hidden": "true",
467
+ className: cn("flex items-center justify-center size-9", className),
468
+ ...props,
469
+ children: [
470
+ /* @__PURE__ */ jsx8(MoreHorizontal, { className: "size-4" }),
471
+ /* @__PURE__ */ jsx8("span", { className: "sr-only", children: "More" })
472
+ ]
473
+ }
474
+ );
475
+ BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
476
+
477
+ // src/components/calendar.tsx
478
+ import * as React9 from "react";
479
+ import {
480
+ ChevronDownIcon,
481
+ ChevronLeftIcon,
482
+ ChevronRightIcon
483
+ } from "lucide-react";
484
+ import { DayPicker, getDefaultClassNames } from "react-day-picker";
485
+ import { jsx as jsx9 } from "react/jsx-runtime";
486
+ function Calendar({
487
+ className,
488
+ classNames,
489
+ showOutsideDays = true,
490
+ captionLayout = "label",
491
+ buttonVariant = "ghost",
492
+ formatters,
493
+ components,
494
+ ...props
495
+ }) {
496
+ const defaultClassNames = getDefaultClassNames();
497
+ return /* @__PURE__ */ jsx9(
498
+ DayPicker,
499
+ {
500
+ showOutsideDays,
501
+ className: cn(
502
+ "group/calendar p-3 [--cell-size:2rem] in-data-[slot=card-content]:bg-transparent",
503
+ String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
504
+ String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
505
+ className
506
+ ),
507
+ captionLayout,
508
+ formatters: {
509
+ formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" }),
510
+ ...formatters
511
+ },
512
+ classNames: {
513
+ root: cn("w-fit", defaultClassNames.root),
514
+ months: cn(
515
+ "relative flex flex-col gap-4 md:flex-row",
516
+ defaultClassNames.months
517
+ ),
518
+ month: cn("flex w-full flex-col gap-4", defaultClassNames.month),
519
+ nav: cn(
520
+ "absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",
521
+ defaultClassNames.nav
69
522
  ),
70
- ...x
523
+ button_previous: cn(
524
+ buttonVariants({ variant: buttonVariant }),
525
+ "select-none p-0 aria-disabled:opacity-50 size-(--cell-size)",
526
+ defaultClassNames.button_previous
527
+ ),
528
+ button_next: cn(
529
+ buttonVariants({ variant: buttonVariant }),
530
+ "select-none p-0 aria-disabled:opacity-50 size-(--cell-size)",
531
+ defaultClassNames.button_next
532
+ ),
533
+ month_caption: cn(
534
+ "flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)",
535
+ defaultClassNames.month_caption
536
+ ),
537
+ dropdowns: cn(
538
+ "flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium",
539
+ defaultClassNames.dropdowns
540
+ ),
541
+ dropdown_root: cn(
542
+ "has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border",
543
+ defaultClassNames.dropdown_root
544
+ ),
545
+ dropdown: cn(
546
+ "bg-popover absolute inset-0 opacity-0",
547
+ defaultClassNames.dropdown
548
+ ),
549
+ caption_label: cn(
550
+ "select-none font-medium",
551
+ captionLayout === "label" ? "text-sm" : "[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5",
552
+ defaultClassNames.caption_label
553
+ ),
554
+ table: "w-full border-collapse",
555
+ weekdays: cn("flex", defaultClassNames.weekdays),
556
+ weekday: cn(
557
+ "text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal",
558
+ defaultClassNames.weekday
559
+ ),
560
+ week: cn("mt-2 flex w-full", defaultClassNames.week),
561
+ week_number_header: cn(
562
+ "w-(--cell-size) select-none",
563
+ defaultClassNames.week_number_header
564
+ ),
565
+ week_number: cn(
566
+ "text-muted-foreground select-none text-[0.8rem]",
567
+ defaultClassNames.week_number
568
+ ),
569
+ day: cn(
570
+ "group/day relative aspect-square select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md size-full",
571
+ defaultClassNames.day
572
+ ),
573
+ range_start: cn(
574
+ "bg-accent rounded-l-md",
575
+ defaultClassNames.range_start
576
+ ),
577
+ range_middle: cn("rounded-none", defaultClassNames.range_middle),
578
+ range_end: cn("bg-accent rounded-r-md", defaultClassNames.range_end),
579
+ today: cn(
580
+ "bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",
581
+ defaultClassNames.today
582
+ ),
583
+ outside: cn(
584
+ "text-muted-foreground aria-selected:text-muted-foreground",
585
+ defaultClassNames.outside
586
+ ),
587
+ disabled: cn(
588
+ "text-muted-foreground opacity-50",
589
+ defaultClassNames.disabled
590
+ ),
591
+ hidden: cn("invisible", defaultClassNames.hidden),
592
+ ...classNames
593
+ },
594
+ components: {
595
+ Root: ({ className: className2, rootRef, ...props2 }) => {
596
+ return /* @__PURE__ */ jsx9(
597
+ "div",
598
+ {
599
+ "data-slot": "calendar",
600
+ ref: rootRef,
601
+ className: cn(className2),
602
+ ...props2
603
+ }
604
+ );
605
+ },
606
+ Chevron: ({ className: className2, orientation, ...props2 }) => {
607
+ if (orientation === "left") {
608
+ return /* @__PURE__ */ jsx9(ChevronLeftIcon, { className: cn("size-4", className2), ...props2 });
609
+ }
610
+ if (orientation === "right") {
611
+ return /* @__PURE__ */ jsx9(
612
+ ChevronRightIcon,
613
+ {
614
+ className: cn("size-4", className2),
615
+ ...props2
616
+ }
617
+ );
618
+ }
619
+ return /* @__PURE__ */ jsx9(ChevronDownIcon, { className: cn("size-4", className2), ...props2 });
620
+ },
621
+ DayButton: CalendarDayButton,
622
+ WeekNumber: ({ children, ...props2 }) => {
623
+ return /* @__PURE__ */ jsx9("td", { ...props2, children: /* @__PURE__ */ jsx9("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children }) });
624
+ },
625
+ ...components
626
+ },
627
+ ...props
628
+ }
629
+ );
630
+ }
631
+ function CalendarDayButton({
632
+ className,
633
+ day,
634
+ modifiers,
635
+ ...props
636
+ }) {
637
+ const defaultClassNames = getDefaultClassNames();
638
+ const ref = React9.useRef(null);
639
+ React9.useEffect(() => {
640
+ if (modifiers["focused"]) ref.current?.focus();
641
+ }, [modifiers]);
642
+ return /* @__PURE__ */ jsx9(
643
+ Button,
644
+ {
645
+ ref,
646
+ variant: "ghost",
647
+ size: "icon",
648
+ "data-day": day.date.toLocaleDateString(),
649
+ "data-selected-single": modifiers["selected"] && !modifiers["range_start"] && !modifiers["range_end"] && !modifiers["range_middle"],
650
+ "data-range-start": modifiers["range_start"],
651
+ "data-range-end": modifiers["range_end"],
652
+ "data-range-middle": modifiers["range_middle"],
653
+ className: cn(
654
+ "data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-(--cell-size) flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70",
655
+ defaultClassNames.day,
656
+ className
657
+ ),
658
+ ...props
659
+ }
660
+ );
661
+ }
662
+
663
+ // src/components/card.tsx
664
+ import * as React10 from "react";
665
+ import { jsx as jsx10 } from "react/jsx-runtime";
666
+ var Card = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
667
+ "div",
668
+ {
669
+ ref,
670
+ className: cn(
671
+ "rounded-xl border bg-card text-card-foreground shadow",
672
+ className
673
+ ),
674
+ ...props
675
+ }
676
+ ));
677
+ Card.displayName = "Card";
678
+ var CardHeader = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
679
+ "div",
680
+ {
681
+ ref,
682
+ className: cn("flex flex-col space-y-1.5 p-6", className),
683
+ ...props
684
+ }
685
+ ));
686
+ CardHeader.displayName = "CardHeader";
687
+ var CardTitle = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
688
+ "div",
689
+ {
690
+ ref,
691
+ className: cn("font-semibold leading-none tracking-tight", className),
692
+ ...props
693
+ }
694
+ ));
695
+ CardTitle.displayName = "CardTitle";
696
+ var CardDescription = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
697
+ "div",
698
+ {
699
+ ref,
700
+ className: cn("text-sm text-muted-foreground", className),
701
+ ...props
702
+ }
703
+ ));
704
+ CardDescription.displayName = "CardDescription";
705
+ var CardContent = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10("div", { ref, className: cn("p-6 pt-0", className), ...props }));
706
+ CardContent.displayName = "CardContent";
707
+ var CardFooter = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
708
+ "div",
709
+ {
710
+ ref,
711
+ className: cn("flex items-center p-6 pt-0", className),
712
+ ...props
713
+ }
714
+ ));
715
+ CardFooter.displayName = "CardFooter";
716
+
717
+ // src/components/carousel.tsx
718
+ import * as React11 from "react";
719
+ import useEmblaCarousel from "embla-carousel-react";
720
+ import { ArrowLeft, ArrowRight } from "lucide-react";
721
+ import { jsx as jsx11, jsxs as jsxs4 } from "react/jsx-runtime";
722
+ var CarouselContext = React11.createContext(null);
723
+ function useCarousel() {
724
+ const context = React11.useContext(CarouselContext);
725
+ if (!context) {
726
+ throw new Error("useCarousel must be used within a <Carousel />");
727
+ }
728
+ return context;
729
+ }
730
+ var Carousel = React11.forwardRef(
731
+ ({
732
+ orientation = "horizontal",
733
+ opts,
734
+ setApi,
735
+ plugins,
736
+ className,
737
+ children,
738
+ ...props
739
+ }, ref) => {
740
+ const [carouselRef, api] = useEmblaCarousel(
741
+ {
742
+ ...opts,
743
+ axis: orientation === "horizontal" ? "x" : "y"
744
+ },
745
+ plugins
746
+ );
747
+ const [canScrollPrev, setCanScrollPrev] = React11.useState(false);
748
+ const [canScrollNext, setCanScrollNext] = React11.useState(false);
749
+ const onSelect = React11.useCallback((api2) => {
750
+ if (!api2) {
751
+ return;
752
+ }
753
+ setCanScrollPrev(api2.canScrollPrev());
754
+ setCanScrollNext(api2.canScrollNext());
755
+ }, []);
756
+ const scrollPrev = React11.useCallback(() => {
757
+ api?.scrollPrev();
758
+ }, [api]);
759
+ const scrollNext = React11.useCallback(() => {
760
+ api?.scrollNext();
761
+ }, [api]);
762
+ const handleKeyDown = React11.useCallback(
763
+ (event) => {
764
+ if (event.key === "ArrowLeft") {
765
+ event.preventDefault();
766
+ scrollPrev();
767
+ } else if (event.key === "ArrowRight") {
768
+ event.preventDefault();
769
+ scrollNext();
770
+ }
771
+ },
772
+ [scrollPrev, scrollNext]
773
+ );
774
+ React11.useEffect(() => {
775
+ if (!api || !setApi) {
776
+ return;
777
+ }
778
+ setApi(api);
779
+ }, [api, setApi]);
780
+ React11.useEffect(() => {
781
+ if (!api) {
782
+ return;
783
+ }
784
+ onSelect(api);
785
+ api.on("reInit", onSelect);
786
+ api.on("select", onSelect);
787
+ return () => {
788
+ api?.off("select", onSelect);
789
+ };
790
+ }, [api, onSelect]);
791
+ return /* @__PURE__ */ jsx11(
792
+ CarouselContext.Provider,
793
+ {
794
+ value: {
795
+ carouselRef,
796
+ api,
797
+ opts,
798
+ orientation: orientation || (opts?.axis === "y" ? "vertical" : "horizontal"),
799
+ scrollPrev,
800
+ scrollNext,
801
+ canScrollPrev,
802
+ canScrollNext
803
+ },
804
+ children: /* @__PURE__ */ jsx11(
805
+ "div",
806
+ {
807
+ ref,
808
+ onKeyDownCapture: handleKeyDown,
809
+ className: cn("relative", className),
810
+ role: "region",
811
+ "aria-roledescription": "carousel",
812
+ ...props,
813
+ children
814
+ }
815
+ )
71
816
  }
72
817
  );
73
818
  }
74
819
  );
75
- j.displayName = "Typography";
76
- var K = "czs3br0", O = { outline: "czs3br1", filled: "czs3br2" }, Q = { xs: "czs3br3", sm: "czs3br4", md: "czs3br5", lg: "czs3br6", xl: "czs3br7" }, U = "czs3br8";
77
- const V = {
78
- style: {
79
- marginBottom: "8px"
820
+ Carousel.displayName = "Carousel";
821
+ var CarouselContent = React11.forwardRef(({ className, ...props }, ref) => {
822
+ const { carouselRef, orientation } = useCarousel();
823
+ return /* @__PURE__ */ jsx11("div", { ref: carouselRef, className: "overflow-hidden", children: /* @__PURE__ */ jsx11(
824
+ "div",
825
+ {
826
+ ref,
827
+ className: cn(
828
+ "flex",
829
+ orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
830
+ className
831
+ ),
832
+ ...props
833
+ }
834
+ ) });
835
+ });
836
+ CarouselContent.displayName = "CarouselContent";
837
+ var CarouselItem = React11.forwardRef(({ className, ...props }, ref) => {
838
+ const { orientation } = useCarousel();
839
+ return /* @__PURE__ */ jsx11(
840
+ "div",
841
+ {
842
+ ref,
843
+ role: "group",
844
+ "aria-roledescription": "slide",
845
+ className: cn(
846
+ "min-w-0 shrink-0 grow-0 basis-full",
847
+ orientation === "horizontal" ? "pl-4" : "pt-4",
848
+ className
849
+ ),
850
+ ...props
851
+ }
852
+ );
853
+ });
854
+ CarouselItem.displayName = "CarouselItem";
855
+ var CarouselPrevious = React11.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
856
+ const { orientation, scrollPrev, canScrollPrev } = useCarousel();
857
+ return /* @__PURE__ */ jsxs4(
858
+ Button,
859
+ {
860
+ ref,
861
+ variant,
862
+ size,
863
+ className: cn(
864
+ "absolute rounded-full size-8",
865
+ orientation === "horizontal" ? "-left-12 top-1/2 -translate-y-1/2" : "-top-12 left-1/2 -translate-x-1/2 rotate-90",
866
+ className
867
+ ),
868
+ disabled: !canScrollPrev,
869
+ onClick: scrollPrev,
870
+ ...props,
871
+ children: [
872
+ /* @__PURE__ */ jsx11(ArrowLeft, { className: "size-4" }),
873
+ /* @__PURE__ */ jsx11("span", { className: "sr-only", children: "Previous slide" })
874
+ ]
875
+ }
876
+ );
877
+ });
878
+ CarouselPrevious.displayName = "CarouselPrevious";
879
+ var CarouselNext = React11.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
880
+ const { orientation, scrollNext, canScrollNext } = useCarousel();
881
+ return /* @__PURE__ */ jsxs4(
882
+ Button,
883
+ {
884
+ ref,
885
+ variant,
886
+ size,
887
+ className: cn(
888
+ "absolute rounded-full size-8",
889
+ orientation === "horizontal" ? "-right-12 top-1/2 -translate-y-1/2" : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90",
890
+ className
891
+ ),
892
+ disabled: !canScrollNext,
893
+ onClick: scrollNext,
894
+ ...props,
895
+ children: [
896
+ /* @__PURE__ */ jsx11(ArrowRight, { className: "size-4" }),
897
+ /* @__PURE__ */ jsx11("span", { className: "sr-only", children: "Next slide" })
898
+ ]
899
+ }
900
+ );
901
+ });
902
+ CarouselNext.displayName = "CarouselNext";
903
+
904
+ // src/components/chart.tsx
905
+ import * as React12 from "react";
906
+ import * as RechartsPrimitive from "recharts";
907
+ import { Fragment, jsx as jsx12, jsxs as jsxs5 } from "react/jsx-runtime";
908
+ var THEMES = { light: "", dark: ".dark" };
909
+ var ChartContext = React12.createContext(null);
910
+ function useChart() {
911
+ const context = React12.useContext(ChartContext);
912
+ if (!context) {
913
+ throw new Error("useChart must be used within a <ChartContainer />");
80
914
  }
81
- }, W = d.forwardRef(
915
+ return context;
916
+ }
917
+ var ChartContainer = React12.forwardRef(({ id, className, children, config, ...props }, ref) => {
918
+ const uniqueId = React12.useId();
919
+ const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
920
+ return /* @__PURE__ */ jsx12(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs5(
921
+ "div",
922
+ {
923
+ "data-chart": chartId,
924
+ ref,
925
+ className: cn(
926
+ "flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-layer]:outline-none",
927
+ className
928
+ ),
929
+ ...props,
930
+ children: [
931
+ /* @__PURE__ */ jsx12(ChartStyle, { id: chartId, config }),
932
+ /* @__PURE__ */ jsx12(RechartsPrimitive.ResponsiveContainer, { children })
933
+ ]
934
+ }
935
+ ) });
936
+ });
937
+ ChartContainer.displayName = "Chart";
938
+ var ChartStyle = ({ id, config }) => {
939
+ const colorConfig = Object.entries(config).filter(
940
+ ([, config2]) => config2.theme || config2.color
941
+ );
942
+ if (!colorConfig.length) {
943
+ return null;
944
+ }
945
+ return /* @__PURE__ */ jsx12(
946
+ "style",
947
+ {
948
+ dangerouslySetInnerHTML: {
949
+ __html: Object.entries(THEMES).map(
950
+ ([theme, prefix]) => `
951
+ ${prefix} [data-chart=${id}] {
952
+ ${colorConfig.map(([key, itemConfig]) => {
953
+ const color = itemConfig.theme?.[theme] || itemConfig.color;
954
+ return color ? ` --color-${key}: ${color};` : null;
955
+ }).join("\n")}
956
+ }
957
+ `
958
+ ).join("\n")
959
+ }
960
+ }
961
+ );
962
+ };
963
+ var ChartTooltip = RechartsPrimitive.Tooltip;
964
+ var ChartTooltipContent = React12.forwardRef(
82
965
  ({
83
- variant: r = "outline",
84
- size: a = "md",
85
- error: i = !1,
86
- label: l,
87
- labelProps: x,
88
- helperText: s,
89
- errorMessage: p,
90
- className: t,
91
- id: v,
92
- ...c
93
- }, o) => {
94
- const m = d.useId(), g = v || m, f = `${g}-helper-text`, u = `${g}-error-message`, _ = n(
95
- c["aria-describedby"],
96
- s && f,
97
- p && u
98
- ), y = /* @__PURE__ */ e(
99
- q,
966
+ active,
967
+ payload,
968
+ className,
969
+ indicator = "dot",
970
+ hideLabel = false,
971
+ hideIndicator = false,
972
+ label,
973
+ labelFormatter,
974
+ labelClassName,
975
+ formatter,
976
+ color,
977
+ nameKey,
978
+ labelKey
979
+ }, ref) => {
980
+ const { config } = useChart();
981
+ const tooltipLabel = React12.useMemo(() => {
982
+ if (hideLabel || !payload?.length) {
983
+ return null;
984
+ }
985
+ const [item] = payload;
986
+ const key = `${labelKey || item?.dataKey || item?.name || "value"}`;
987
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
988
+ const value = !labelKey && typeof label === "string" ? config[label]?.label || label : itemConfig?.label;
989
+ if (labelFormatter) {
990
+ return /* @__PURE__ */ jsx12("div", { className: cn("font-medium", labelClassName), children: labelFormatter(value, payload) });
991
+ }
992
+ if (!value) {
993
+ return null;
994
+ }
995
+ return /* @__PURE__ */ jsx12("div", { className: cn("font-medium", labelClassName), children: value });
996
+ }, [
997
+ label,
998
+ labelFormatter,
999
+ payload,
1000
+ hideLabel,
1001
+ labelClassName,
1002
+ config,
1003
+ labelKey
1004
+ ]);
1005
+ if (!active || !payload?.length) {
1006
+ return null;
1007
+ }
1008
+ const nestLabel = payload.length === 1 && indicator !== "dot";
1009
+ return /* @__PURE__ */ jsxs5(
1010
+ "div",
100
1011
  {
101
- ref: o,
102
- id: g,
103
- "aria-invalid": i || !!p,
104
- "aria-describedby": _ || void 0,
105
- autoComplete: "on",
106
- className: n(
107
- K,
108
- O[r],
109
- Q[a],
110
- (i || !!p) && U,
111
- t
1012
+ ref,
1013
+ className: cn(
1014
+ "grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",
1015
+ className
112
1016
  ),
113
- ...c
1017
+ children: [
1018
+ !nestLabel ? tooltipLabel : null,
1019
+ /* @__PURE__ */ jsx12("div", { className: "grid gap-1.5", children: payload.filter((item) => item.type !== "none").map((item, index) => {
1020
+ const key = `${nameKey || item.name || item.dataKey || "value"}`;
1021
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
1022
+ const indicatorColor = color || item.payload.fill || item.color;
1023
+ return /* @__PURE__ */ jsx12(
1024
+ "div",
1025
+ {
1026
+ className: cn(
1027
+ "flex flex-wrap items-stretch gap-2 [&>svg]:text-muted-foreground [&>svg]:size-2.5",
1028
+ indicator === "dot" && "items-center"
1029
+ ),
1030
+ children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxs5(Fragment, { children: [
1031
+ itemConfig?.icon ? /* @__PURE__ */ jsx12(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx12(
1032
+ "div",
1033
+ {
1034
+ className: cn(
1035
+ "shrink-0 rounded-xs border-border bg-(--color-bg)",
1036
+ {
1037
+ "h-2.5 w-2.5": indicator === "dot",
1038
+ "w-1": indicator === "line",
1039
+ "w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
1040
+ "my-0.5": nestLabel && indicator === "dashed"
1041
+ }
1042
+ ),
1043
+ style: {
1044
+ "--color-bg": indicatorColor,
1045
+ "--color-border": indicatorColor
1046
+ }
1047
+ }
1048
+ ),
1049
+ /* @__PURE__ */ jsxs5(
1050
+ "div",
1051
+ {
1052
+ className: cn(
1053
+ "flex flex-1 justify-between leading-none",
1054
+ nestLabel ? "items-end" : "items-center"
1055
+ ),
1056
+ children: [
1057
+ /* @__PURE__ */ jsxs5("div", { className: "grid gap-1.5", children: [
1058
+ nestLabel ? tooltipLabel : null,
1059
+ /* @__PURE__ */ jsx12("span", { className: "text-muted-foreground", children: itemConfig?.label || item.name })
1060
+ ] }),
1061
+ item.value && /* @__PURE__ */ jsx12("span", { className: "font-mono font-medium tabular-nums text-foreground", children: item.value.toLocaleString() })
1062
+ ]
1063
+ }
1064
+ )
1065
+ ] })
1066
+ },
1067
+ item.dataKey
1068
+ );
1069
+ }) })
1070
+ ]
114
1071
  }
115
1072
  );
116
- return !l && !s && !p ? y : /* @__PURE__ */ N("div", { style: { display: "flex", flexDirection: "column", width: "100%" }, children: [
117
- l && /* @__PURE__ */ e(
118
- j,
119
- {
120
- variant: "label",
121
- htmlFor: g,
122
- ...V,
123
- ...x,
124
- children: l
125
- }
1073
+ }
1074
+ );
1075
+ ChartTooltipContent.displayName = "ChartTooltip";
1076
+ var ChartLegend = RechartsPrimitive.Legend;
1077
+ var ChartLegendContent = React12.forwardRef(
1078
+ ({ className, hideIcon = false, payload, verticalAlign = "bottom", nameKey }, ref) => {
1079
+ const { config } = useChart();
1080
+ if (!payload?.length) {
1081
+ return null;
1082
+ }
1083
+ return /* @__PURE__ */ jsx12(
1084
+ "div",
1085
+ {
1086
+ ref,
1087
+ className: cn(
1088
+ "flex items-center justify-center gap-4",
1089
+ verticalAlign === "top" ? "pb-3" : "pt-3",
1090
+ className
1091
+ ),
1092
+ children: payload.filter((item) => item.type !== "none").map((item) => {
1093
+ const key = `${nameKey || item.dataKey || "value"}`;
1094
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
1095
+ return /* @__PURE__ */ jsxs5(
1096
+ "div",
1097
+ {
1098
+ className: cn(
1099
+ "flex items-center gap-1.5 [&>svg]:text-muted-foreground [&>svg]:size-3"
1100
+ ),
1101
+ children: [
1102
+ itemConfig?.icon && !hideIcon ? /* @__PURE__ */ jsx12(itemConfig.icon, {}) : /* @__PURE__ */ jsx12(
1103
+ "div",
1104
+ {
1105
+ className: "shrink-0 rounded-xs size-2",
1106
+ style: {
1107
+ backgroundColor: item.color
1108
+ }
1109
+ }
1110
+ ),
1111
+ itemConfig?.label
1112
+ ]
1113
+ },
1114
+ item.value
1115
+ );
1116
+ })
1117
+ }
1118
+ );
1119
+ }
1120
+ );
1121
+ ChartLegendContent.displayName = "ChartLegend";
1122
+ function getPayloadConfigFromPayload(config, payload, key) {
1123
+ if (typeof payload !== "object" || payload === null) {
1124
+ return void 0;
1125
+ }
1126
+ const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
1127
+ let configLabelKey = key;
1128
+ if (key in payload && typeof payload[key] === "string") {
1129
+ configLabelKey = payload[key];
1130
+ } else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") {
1131
+ configLabelKey = payloadPayload[key];
1132
+ }
1133
+ return configLabelKey in config ? config[configLabelKey] : config[key];
1134
+ }
1135
+
1136
+ // src/components/checkbox.tsx
1137
+ import * as React13 from "react";
1138
+ import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
1139
+ import { Check } from "lucide-react";
1140
+ import { jsx as jsx13 } from "react/jsx-runtime";
1141
+ var Checkbox = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx13(
1142
+ CheckboxPrimitive.Root,
1143
+ {
1144
+ ref,
1145
+ className: cn(
1146
+ "grid place-content-center peer shrink-0 rounded-sm border border-primary shadow cursor-pointer focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground size-4",
1147
+ className
1148
+ ),
1149
+ ...props,
1150
+ children: /* @__PURE__ */ jsx13(
1151
+ CheckboxPrimitive.Indicator,
1152
+ {
1153
+ className: cn("grid place-content-center text-current"),
1154
+ children: /* @__PURE__ */ jsx13(Check, { className: "size-4" })
1155
+ }
1156
+ )
1157
+ }
1158
+ ));
1159
+ Checkbox.displayName = CheckboxPrimitive.Root.displayName;
1160
+
1161
+ // src/components/collapsible.tsx
1162
+ import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
1163
+ var Collapsible = CollapsiblePrimitive.Root;
1164
+ var CollapsibleTrigger2 = CollapsiblePrimitive.CollapsibleTrigger;
1165
+ var CollapsibleContent2 = CollapsiblePrimitive.CollapsibleContent;
1166
+
1167
+ // src/components/command.tsx
1168
+ import * as React15 from "react";
1169
+ import { Command as CommandPrimitive } from "cmdk";
1170
+ import { Search } from "lucide-react";
1171
+
1172
+ // src/components/dialog.tsx
1173
+ import * as React14 from "react";
1174
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
1175
+ import { X } from "lucide-react";
1176
+ import { jsx as jsx14, jsxs as jsxs6 } from "react/jsx-runtime";
1177
+ var Dialog = DialogPrimitive.Root;
1178
+ var DialogTrigger = DialogPrimitive.Trigger;
1179
+ var DialogPortal = DialogPrimitive.Portal;
1180
+ var DialogClose = DialogPrimitive.Close;
1181
+ var DialogOverlay = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx14(
1182
+ DialogPrimitive.Overlay,
1183
+ {
1184
+ ref,
1185
+ className: cn(
1186
+ "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",
1187
+ className
1188
+ ),
1189
+ ...props
1190
+ }
1191
+ ));
1192
+ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
1193
+ var DialogContent = React14.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs6(DialogPortal, { children: [
1194
+ /* @__PURE__ */ jsx14(DialogOverlay, {}),
1195
+ /* @__PURE__ */ jsxs6(
1196
+ DialogPrimitive.Content,
1197
+ {
1198
+ ref,
1199
+ className: cn(
1200
+ "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg 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 sm:rounded-lg translate-[-50%]",
1201
+ className
126
1202
  ),
127
- y,
128
- p && /* @__PURE__ */ e(
129
- j,
130
- {
131
- variant: "captionError",
132
- id: u,
133
- children: p
134
- }
1203
+ ...props,
1204
+ children: [
1205
+ children,
1206
+ /* @__PURE__ */ jsxs6(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background cursor-pointer 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: [
1207
+ /* @__PURE__ */ jsx14(X, { className: "size-4" }),
1208
+ /* @__PURE__ */ jsx14("span", { className: "sr-only", children: "Close" })
1209
+ ] })
1210
+ ]
1211
+ }
1212
+ )
1213
+ ] }));
1214
+ DialogContent.displayName = DialogPrimitive.Content.displayName;
1215
+ var DialogHeader = ({
1216
+ className,
1217
+ ...props
1218
+ }) => /* @__PURE__ */ jsx14(
1219
+ "div",
1220
+ {
1221
+ className: cn(
1222
+ "flex flex-col space-y-1.5 text-center sm:text-left",
1223
+ className
1224
+ ),
1225
+ ...props
1226
+ }
1227
+ );
1228
+ DialogHeader.displayName = "DialogHeader";
1229
+ var DialogFooter = ({
1230
+ className,
1231
+ ...props
1232
+ }) => /* @__PURE__ */ jsx14(
1233
+ "div",
1234
+ {
1235
+ className: cn(
1236
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
1237
+ className
1238
+ ),
1239
+ ...props
1240
+ }
1241
+ );
1242
+ DialogFooter.displayName = "DialogFooter";
1243
+ var DialogTitle = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx14(
1244
+ DialogPrimitive.Title,
1245
+ {
1246
+ ref,
1247
+ className: cn(
1248
+ "text-lg font-semibold leading-none tracking-tight",
1249
+ className
1250
+ ),
1251
+ ...props
1252
+ }
1253
+ ));
1254
+ DialogTitle.displayName = DialogPrimitive.Title.displayName;
1255
+ var DialogDescription = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx14(
1256
+ DialogPrimitive.Description,
1257
+ {
1258
+ ref,
1259
+ className: cn("text-sm text-muted-foreground", className),
1260
+ ...props
1261
+ }
1262
+ ));
1263
+ DialogDescription.displayName = DialogPrimitive.Description.displayName;
1264
+
1265
+ // src/components/command.tsx
1266
+ import { jsx as jsx15, jsxs as jsxs7 } from "react/jsx-runtime";
1267
+ var Command = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15(
1268
+ CommandPrimitive,
1269
+ {
1270
+ ref,
1271
+ className: cn(
1272
+ "flex flex-col overflow-hidden rounded-md bg-popover text-popover-foreground size-full",
1273
+ className
1274
+ ),
1275
+ ...props
1276
+ }
1277
+ ));
1278
+ Command.displayName = CommandPrimitive.displayName;
1279
+ var CommandDialog = ({ children, ...props }) => {
1280
+ return /* @__PURE__ */ jsx15(Dialog, { ...props, children: /* @__PURE__ */ jsx15(DialogContent, { className: "overflow-hidden p-0", children: /* @__PURE__ */ jsx15(Command, { className: "**:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 **:[[cmdk-item]]:py-3 [&_[cmdk-input-wrapper]_svg]:size-5", children }) }) });
1281
+ };
1282
+ var CommandInput = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs7("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: [
1283
+ /* @__PURE__ */ jsx15(Search, { className: "mr-2 shrink-0 opacity-50 size-4" }),
1284
+ /* @__PURE__ */ jsx15(
1285
+ CommandPrimitive.Input,
1286
+ {
1287
+ ref,
1288
+ className: cn(
1289
+ "flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
1290
+ className
1291
+ ),
1292
+ ...props
1293
+ }
1294
+ )
1295
+ ] }));
1296
+ CommandInput.displayName = CommandPrimitive.Input.displayName;
1297
+ var CommandList = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15(
1298
+ CommandPrimitive.List,
1299
+ {
1300
+ ref,
1301
+ className: cn("max-h-75 overflow-y-auto overflow-x-hidden", className),
1302
+ ...props
1303
+ }
1304
+ ));
1305
+ CommandList.displayName = CommandPrimitive.List.displayName;
1306
+ var CommandEmpty = React15.forwardRef((props, ref) => /* @__PURE__ */ jsx15(
1307
+ CommandPrimitive.Empty,
1308
+ {
1309
+ ref,
1310
+ className: "py-6 text-center text-sm",
1311
+ ...props
1312
+ }
1313
+ ));
1314
+ CommandEmpty.displayName = CommandPrimitive.Empty.displayName;
1315
+ var CommandGroup = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15(
1316
+ CommandPrimitive.Group,
1317
+ {
1318
+ ref,
1319
+ className: cn(
1320
+ "overflow-hidden p-1 **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground",
1321
+ className
1322
+ ),
1323
+ ...props
1324
+ }
1325
+ ));
1326
+ CommandGroup.displayName = CommandPrimitive.Group.displayName;
1327
+ var CommandSeparator = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15(
1328
+ CommandPrimitive.Separator,
1329
+ {
1330
+ ref,
1331
+ className: cn("-mx-1 h-px bg-border", className),
1332
+ ...props
1333
+ }
1334
+ ));
1335
+ CommandSeparator.displayName = CommandPrimitive.Separator.displayName;
1336
+ var CommandItem = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15(
1337
+ CommandPrimitive.Item,
1338
+ {
1339
+ ref,
1340
+ className: cn(
1341
+ "relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0",
1342
+ className
1343
+ ),
1344
+ ...props
1345
+ }
1346
+ ));
1347
+ CommandItem.displayName = CommandPrimitive.Item.displayName;
1348
+ var CommandShortcut = ({
1349
+ className,
1350
+ ...props
1351
+ }) => {
1352
+ return /* @__PURE__ */ jsx15(
1353
+ "span",
1354
+ {
1355
+ className: cn(
1356
+ "ml-auto text-xs tracking-widest text-muted-foreground",
1357
+ className
1358
+ ),
1359
+ ...props
1360
+ }
1361
+ );
1362
+ };
1363
+ CommandShortcut.displayName = "CommandShortcut";
1364
+
1365
+ // src/components/context-menu.tsx
1366
+ import * as React16 from "react";
1367
+ import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
1368
+ import { Check as Check2, ChevronRight as ChevronRight2, Circle } from "lucide-react";
1369
+ import { jsx as jsx16, jsxs as jsxs8 } from "react/jsx-runtime";
1370
+ var ContextMenu = ContextMenuPrimitive.Root;
1371
+ var ContextMenuTrigger = ContextMenuPrimitive.Trigger;
1372
+ var ContextMenuGroup = ContextMenuPrimitive.Group;
1373
+ var ContextMenuPortal = ContextMenuPrimitive.Portal;
1374
+ var ContextMenuSub = ContextMenuPrimitive.Sub;
1375
+ var ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
1376
+ var ContextMenuSubTrigger = React16.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs8(
1377
+ ContextMenuPrimitive.SubTrigger,
1378
+ {
1379
+ ref,
1380
+ className: cn(
1381
+ "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",
1382
+ inset && "pl-8",
1383
+ className
1384
+ ),
1385
+ ...props,
1386
+ children: [
1387
+ children,
1388
+ /* @__PURE__ */ jsx16(ChevronRight2, { className: "ml-auto size-4" })
1389
+ ]
1390
+ }
1391
+ ));
1392
+ ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
1393
+ var ContextMenuSubContent = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx16(
1394
+ ContextMenuPrimitive.SubContent,
1395
+ {
1396
+ ref,
1397
+ className: cn(
1398
+ "z-50 min-w-32 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-context-menu-content-transform-origin)",
1399
+ className
1400
+ ),
1401
+ ...props
1402
+ }
1403
+ ));
1404
+ ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
1405
+ var ContextMenuContent = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx16(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx16(
1406
+ ContextMenuPrimitive.Content,
1407
+ {
1408
+ ref,
1409
+ className: cn(
1410
+ "z-50 max-h-(--radix-context-menu-content-available-height) min-w-32 overflow-y-auto overflow-x-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 origin-(--radix-context-menu-content-transform-origin)",
1411
+ className
1412
+ ),
1413
+ ...props
1414
+ }
1415
+ ) }));
1416
+ ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
1417
+ var ContextMenuItem = React16.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx16(
1418
+ ContextMenuPrimitive.Item,
1419
+ {
1420
+ ref,
1421
+ className: cn(
1422
+ "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",
1423
+ inset && "pl-8",
1424
+ className
1425
+ ),
1426
+ ...props
1427
+ }
1428
+ ));
1429
+ ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
1430
+ var ContextMenuCheckboxItem = React16.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs8(
1431
+ ContextMenuPrimitive.CheckboxItem,
1432
+ {
1433
+ ref,
1434
+ className: cn(
1435
+ "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",
1436
+ className
1437
+ ),
1438
+ ...props,
1439
+ children: [
1440
+ /* @__PURE__ */ jsx16("span", { className: "absolute left-2 flex items-center justify-center size-3.5", children: /* @__PURE__ */ jsx16(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx16(Check2, { className: "size-4" }) }) }),
1441
+ children
1442
+ ]
1443
+ }
1444
+ ));
1445
+ ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;
1446
+ var ContextMenuRadioItem = React16.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs8(
1447
+ ContextMenuPrimitive.RadioItem,
1448
+ {
1449
+ ref,
1450
+ className: cn(
1451
+ "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",
1452
+ className
1453
+ ),
1454
+ ...props,
1455
+ children: [
1456
+ /* @__PURE__ */ jsx16("span", { className: "absolute left-2 flex items-center justify-center size-3.5", children: /* @__PURE__ */ jsx16(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx16(Circle, { className: "fill-current size-4" }) }) }),
1457
+ children
1458
+ ]
1459
+ }
1460
+ ));
1461
+ ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
1462
+ var ContextMenuLabel = React16.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx16(
1463
+ ContextMenuPrimitive.Label,
1464
+ {
1465
+ ref,
1466
+ className: cn(
1467
+ "px-2 py-1.5 text-sm font-semibold text-foreground",
1468
+ inset && "pl-8",
1469
+ className
1470
+ ),
1471
+ ...props
1472
+ }
1473
+ ));
1474
+ ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
1475
+ var ContextMenuSeparator = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx16(
1476
+ ContextMenuPrimitive.Separator,
1477
+ {
1478
+ ref,
1479
+ className: cn("-mx-1 my-1 h-px bg-border", className),
1480
+ ...props
1481
+ }
1482
+ ));
1483
+ ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;
1484
+ var ContextMenuShortcut = ({
1485
+ className,
1486
+ ...props
1487
+ }) => {
1488
+ return /* @__PURE__ */ jsx16(
1489
+ "span",
1490
+ {
1491
+ className: cn(
1492
+ "ml-auto text-xs tracking-widest text-muted-foreground",
1493
+ className
1494
+ ),
1495
+ ...props
1496
+ }
1497
+ );
1498
+ };
1499
+ ContextMenuShortcut.displayName = "ContextMenuShortcut";
1500
+
1501
+ // src/components/drawer.tsx
1502
+ import * as React17 from "react";
1503
+ import { Drawer as DrawerPrimitive } from "vaul";
1504
+ import { jsx as jsx17, jsxs as jsxs9 } from "react/jsx-runtime";
1505
+ var Drawer = ({
1506
+ shouldScaleBackground = true,
1507
+ ...props
1508
+ }) => /* @__PURE__ */ jsx17(
1509
+ DrawerPrimitive.Root,
1510
+ {
1511
+ shouldScaleBackground,
1512
+ ...props
1513
+ }
1514
+ );
1515
+ Drawer.displayName = "Drawer";
1516
+ var DrawerTrigger = DrawerPrimitive.Trigger;
1517
+ var DrawerPortal = DrawerPrimitive.Portal;
1518
+ var DrawerClose = DrawerPrimitive.Close;
1519
+ var DrawerOverlay = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx17(
1520
+ DrawerPrimitive.Overlay,
1521
+ {
1522
+ ref,
1523
+ className: cn("fixed inset-0 z-50 bg-black/80", className),
1524
+ ...props
1525
+ }
1526
+ ));
1527
+ DrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;
1528
+ var DrawerContent = React17.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs9(DrawerPortal, { children: [
1529
+ /* @__PURE__ */ jsx17(DrawerOverlay, {}),
1530
+ /* @__PURE__ */ jsxs9(
1531
+ DrawerPrimitive.Content,
1532
+ {
1533
+ ref,
1534
+ className: cn(
1535
+ "fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background",
1536
+ className
1537
+ ),
1538
+ ...props,
1539
+ children: [
1540
+ /* @__PURE__ */ jsx17("div", { className: "mx-auto mt-4 h-2 w-25 rounded-full bg-muted" }),
1541
+ children
1542
+ ]
1543
+ }
1544
+ )
1545
+ ] }));
1546
+ DrawerContent.displayName = "DrawerContent";
1547
+ var DrawerHeader = ({
1548
+ className,
1549
+ ...props
1550
+ }) => /* @__PURE__ */ jsx17(
1551
+ "div",
1552
+ {
1553
+ className: cn("grid gap-1.5 p-4 text-center sm:text-left", className),
1554
+ ...props
1555
+ }
1556
+ );
1557
+ DrawerHeader.displayName = "DrawerHeader";
1558
+ var DrawerFooter = ({
1559
+ className,
1560
+ ...props
1561
+ }) => /* @__PURE__ */ jsx17(
1562
+ "div",
1563
+ {
1564
+ className: cn("mt-auto flex flex-col gap-2 p-4", className),
1565
+ ...props
1566
+ }
1567
+ );
1568
+ DrawerFooter.displayName = "DrawerFooter";
1569
+ var DrawerTitle = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx17(
1570
+ DrawerPrimitive.Title,
1571
+ {
1572
+ ref,
1573
+ className: cn(
1574
+ "text-lg font-semibold leading-none tracking-tight",
1575
+ className
1576
+ ),
1577
+ ...props
1578
+ }
1579
+ ));
1580
+ DrawerTitle.displayName = DrawerPrimitive.Title.displayName;
1581
+ var DrawerDescription = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx17(
1582
+ DrawerPrimitive.Description,
1583
+ {
1584
+ ref,
1585
+ className: cn("text-sm text-muted-foreground", className),
1586
+ ...props
1587
+ }
1588
+ ));
1589
+ DrawerDescription.displayName = DrawerPrimitive.Description.displayName;
1590
+
1591
+ // src/components/dropdown-menu.tsx
1592
+ import * as React18 from "react";
1593
+ import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
1594
+ import { Check as Check3, ChevronRight as ChevronRight3, Circle as Circle2 } from "lucide-react";
1595
+ import { jsx as jsx18, jsxs as jsxs10 } from "react/jsx-runtime";
1596
+ var DropdownMenu = DropdownMenuPrimitive.Root;
1597
+ var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
1598
+ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
1599
+ var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
1600
+ var DropdownMenuSub = DropdownMenuPrimitive.Sub;
1601
+ var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
1602
+ var DropdownMenuSubTrigger = React18.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs10(
1603
+ DropdownMenuPrimitive.SubTrigger,
1604
+ {
1605
+ ref,
1606
+ className: cn(
1607
+ "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",
1608
+ inset && "pl-8",
1609
+ className
1610
+ ),
1611
+ ...props,
1612
+ children: [
1613
+ children,
1614
+ /* @__PURE__ */ jsx18(ChevronRight3, { className: "ml-auto" })
1615
+ ]
1616
+ }
1617
+ ));
1618
+ DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
1619
+ var DropdownMenuSubContent = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
1620
+ DropdownMenuPrimitive.SubContent,
1621
+ {
1622
+ ref,
1623
+ className: cn(
1624
+ "z-50 min-w-32 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)",
1625
+ className
1626
+ ),
1627
+ ...props
1628
+ }
1629
+ ));
1630
+ DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
1631
+ var DropdownMenuContent = React18.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx18(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx18(
1632
+ DropdownMenuPrimitive.Content,
1633
+ {
1634
+ ref,
1635
+ sideOffset,
1636
+ className: cn(
1637
+ "z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-32 overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md",
1638
+ "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)",
1639
+ className
1640
+ ),
1641
+ ...props
1642
+ }
1643
+ ) }));
1644
+ DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
1645
+ var DropdownMenuItem = React18.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx18(
1646
+ DropdownMenuPrimitive.Item,
1647
+ {
1648
+ ref,
1649
+ className: cn(
1650
+ "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",
1651
+ inset && "pl-8",
1652
+ className
1653
+ ),
1654
+ ...props
1655
+ }
1656
+ ));
1657
+ DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
1658
+ var DropdownMenuCheckboxItem = React18.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs10(
1659
+ DropdownMenuPrimitive.CheckboxItem,
1660
+ {
1661
+ ref,
1662
+ className: cn(
1663
+ "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",
1664
+ className
1665
+ ),
1666
+ ...props,
1667
+ children: [
1668
+ /* @__PURE__ */ jsx18("span", { className: "absolute left-2 flex items-center justify-center size-3.5", children: /* @__PURE__ */ jsx18(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx18(Check3, { className: "size-4" }) }) }),
1669
+ children
1670
+ ]
1671
+ }
1672
+ ));
1673
+ DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
1674
+ var DropdownMenuRadioItem = React18.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs10(
1675
+ DropdownMenuPrimitive.RadioItem,
1676
+ {
1677
+ ref,
1678
+ className: cn(
1679
+ "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",
1680
+ className
1681
+ ),
1682
+ ...props,
1683
+ children: [
1684
+ /* @__PURE__ */ jsx18("span", { className: "absolute left-2 flex items-center justify-center size-3.5", children: /* @__PURE__ */ jsx18(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx18(Circle2, { className: "fill-current size-2" }) }) }),
1685
+ children
1686
+ ]
1687
+ }
1688
+ ));
1689
+ DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
1690
+ var DropdownMenuLabel = React18.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx18(
1691
+ DropdownMenuPrimitive.Label,
1692
+ {
1693
+ ref,
1694
+ className: cn(
1695
+ "px-2 py-1.5 text-sm font-semibold",
1696
+ inset && "pl-8",
1697
+ className
1698
+ ),
1699
+ ...props
1700
+ }
1701
+ ));
1702
+ DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
1703
+ var DropdownMenuSeparator = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
1704
+ DropdownMenuPrimitive.Separator,
1705
+ {
1706
+ ref,
1707
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
1708
+ ...props
1709
+ }
1710
+ ));
1711
+ DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
1712
+ var DropdownMenuShortcut = ({
1713
+ className,
1714
+ ...props
1715
+ }) => {
1716
+ return /* @__PURE__ */ jsx18(
1717
+ "span",
1718
+ {
1719
+ className: cn("ml-auto text-xs tracking-widest opacity-60", className),
1720
+ ...props
1721
+ }
1722
+ );
1723
+ };
1724
+ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
1725
+
1726
+ // src/components/form.tsx
1727
+ import * as React20 from "react";
1728
+ import { Slot as Slot3 } from "@radix-ui/react-slot";
1729
+ import {
1730
+ Controller,
1731
+ FormProvider,
1732
+ useFormContext
1733
+ } from "react-hook-form";
1734
+
1735
+ // src/components/label.tsx
1736
+ import * as React19 from "react";
1737
+ import * as LabelPrimitive from "@radix-ui/react-label";
1738
+ import { cva as cva4 } from "class-variance-authority";
1739
+ import { jsx as jsx19 } from "react/jsx-runtime";
1740
+ var labelVariants = cva4(
1741
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
1742
+ );
1743
+ var Label3 = React19.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx19(
1744
+ LabelPrimitive.Root,
1745
+ {
1746
+ ref,
1747
+ className: cn(labelVariants(), className),
1748
+ ...props
1749
+ }
1750
+ ));
1751
+ Label3.displayName = LabelPrimitive.Root.displayName;
1752
+
1753
+ // src/components/form.tsx
1754
+ import { jsx as jsx20 } from "react/jsx-runtime";
1755
+ var Form = FormProvider;
1756
+ var FormFieldContext = React20.createContext(
1757
+ null
1758
+ );
1759
+ var FormField = ({
1760
+ ...props
1761
+ }) => {
1762
+ return /* @__PURE__ */ jsx20(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx20(Controller, { ...props }) });
1763
+ };
1764
+ var useFormField = () => {
1765
+ const fieldContext = React20.useContext(FormFieldContext);
1766
+ const itemContext = React20.useContext(FormItemContext);
1767
+ const { getFieldState, formState } = useFormContext();
1768
+ if (!fieldContext) {
1769
+ throw new Error("useFormField should be used within <FormField>");
1770
+ }
1771
+ if (!itemContext) {
1772
+ throw new Error("useFormField should be used within <FormItem>");
1773
+ }
1774
+ const fieldState = getFieldState(fieldContext.name, formState);
1775
+ const { id } = itemContext;
1776
+ return {
1777
+ id,
1778
+ name: fieldContext.name,
1779
+ formItemId: `${id}-form-item`,
1780
+ formDescriptionId: `${id}-form-item-description`,
1781
+ formMessageId: `${id}-form-item-message`,
1782
+ ...fieldState
1783
+ };
1784
+ };
1785
+ var FormItemContext = React20.createContext(null);
1786
+ var FormItem = React20.forwardRef(({ className, ...props }, ref) => {
1787
+ const id = React20.useId();
1788
+ return /* @__PURE__ */ jsx20(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx20("div", { ref, className: cn("space-y-2", className), ...props }) });
1789
+ });
1790
+ FormItem.displayName = "FormItem";
1791
+ var FormLabel = React20.forwardRef(({ className, ...props }, ref) => {
1792
+ const { error, formItemId } = useFormField();
1793
+ return /* @__PURE__ */ jsx20(
1794
+ Label3,
1795
+ {
1796
+ ref,
1797
+ className: cn(error && "text-destructive", className),
1798
+ htmlFor: formItemId,
1799
+ ...props
1800
+ }
1801
+ );
1802
+ });
1803
+ FormLabel.displayName = "FormLabel";
1804
+ var FormControl = React20.forwardRef(({ ...props }, ref) => {
1805
+ const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
1806
+ return /* @__PURE__ */ jsx20(
1807
+ Slot3,
1808
+ {
1809
+ ref,
1810
+ id: formItemId,
1811
+ "aria-describedby": !error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`,
1812
+ "aria-invalid": !!error,
1813
+ ...props
1814
+ }
1815
+ );
1816
+ });
1817
+ FormControl.displayName = "FormControl";
1818
+ var FormDescription = React20.forwardRef(({ className, ...props }, ref) => {
1819
+ const { formDescriptionId } = useFormField();
1820
+ return /* @__PURE__ */ jsx20(
1821
+ "p",
1822
+ {
1823
+ ref,
1824
+ id: formDescriptionId,
1825
+ className: cn("text-[0.8rem] text-muted-foreground", className),
1826
+ ...props
1827
+ }
1828
+ );
1829
+ });
1830
+ FormDescription.displayName = "FormDescription";
1831
+ var FormMessage = React20.forwardRef(({ className, children, ...props }, ref) => {
1832
+ const { error, formMessageId } = useFormField();
1833
+ const body = error ? String(error?.message ?? "") : children;
1834
+ if (!body) {
1835
+ return null;
1836
+ }
1837
+ return /* @__PURE__ */ jsx20(
1838
+ "p",
1839
+ {
1840
+ ref,
1841
+ id: formMessageId,
1842
+ className: cn("text-[0.8rem] font-medium text-destructive", className),
1843
+ ...props,
1844
+ children: body
1845
+ }
1846
+ );
1847
+ });
1848
+ FormMessage.displayName = "FormMessage";
1849
+
1850
+ // src/components/hover-card.tsx
1851
+ import * as React21 from "react";
1852
+ import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
1853
+ import { jsx as jsx21 } from "react/jsx-runtime";
1854
+ var HoverCard = HoverCardPrimitive.Root;
1855
+ var HoverCardTrigger = HoverCardPrimitive.Trigger;
1856
+ var HoverCardContent = React21.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx21(
1857
+ HoverCardPrimitive.Content,
1858
+ {
1859
+ ref,
1860
+ align,
1861
+ sideOffset,
1862
+ className: cn(
1863
+ "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 origin-(--radix-hover-card-content-transform-origin)",
1864
+ className
1865
+ ),
1866
+ ...props
1867
+ }
1868
+ ));
1869
+ HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
1870
+
1871
+ // src/components/input-otp.tsx
1872
+ import * as React22 from "react";
1873
+ import { OTPInput, OTPInputContext } from "input-otp";
1874
+ import { Minus } from "lucide-react";
1875
+ import { jsx as jsx22, jsxs as jsxs11 } from "react/jsx-runtime";
1876
+ var InputOTP = React22.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ jsx22(
1877
+ OTPInput,
1878
+ {
1879
+ ref,
1880
+ containerClassName: cn(
1881
+ "flex items-center gap-2 has-disabled:opacity-50",
1882
+ containerClassName
1883
+ ),
1884
+ className: cn("disabled:cursor-not-allowed", className),
1885
+ ...props
1886
+ }
1887
+ ));
1888
+ InputOTP.displayName = "InputOTP";
1889
+ var InputOTPGroup = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx22("div", { ref, className: cn("flex items-center", className), ...props }));
1890
+ InputOTPGroup.displayName = "InputOTPGroup";
1891
+ var InputOTPSlot = React22.forwardRef(({ index, className, ...props }, ref) => {
1892
+ const inputOTPContext = React22.useContext(OTPInputContext);
1893
+ const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index] ?? {
1894
+ char: null,
1895
+ hasFakeCaret: false,
1896
+ isActive: false
1897
+ };
1898
+ return /* @__PURE__ */ jsxs11(
1899
+ "div",
1900
+ {
1901
+ ref,
1902
+ className: cn(
1903
+ "relative flex items-center justify-center border-y border-r border-input text-sm shadow-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md size-9",
1904
+ isActive && "z-10 ring-1 ring-ring",
1905
+ className
1906
+ ),
1907
+ ...props,
1908
+ children: [
1909
+ char,
1910
+ hasFakeCaret && /* @__PURE__ */ jsx22("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx22("div", { className: "h-4 w-px animate-caret-blink bg-foreground duration-1000" }) })
1911
+ ]
1912
+ }
1913
+ );
1914
+ });
1915
+ InputOTPSlot.displayName = "InputOTPSlot";
1916
+ var InputOTPSeparator = React22.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx22("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ jsx22(Minus, {}) }));
1917
+ InputOTPSeparator.displayName = "InputOTPSeparator";
1918
+
1919
+ // src/components/input.tsx
1920
+ import * as React23 from "react";
1921
+ import { jsx as jsx23 } from "react/jsx-runtime";
1922
+ var Input = React23.forwardRef(
1923
+ ({ className, type, ...props }, ref) => {
1924
+ return /* @__PURE__ */ jsx23(
1925
+ "input",
1926
+ {
1927
+ type,
1928
+ className: cn(
1929
+ "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",
1930
+ className
1931
+ ),
1932
+ ref,
1933
+ ...props
1934
+ }
1935
+ );
1936
+ }
1937
+ );
1938
+ Input.displayName = "Input";
1939
+
1940
+ // src/components/menubar.tsx
1941
+ import * as React24 from "react";
1942
+ import * as MenubarPrimitive from "@radix-ui/react-menubar";
1943
+ import { Check as Check4, ChevronRight as ChevronRight4, Circle as Circle3 } from "lucide-react";
1944
+ import { jsx as jsx24, jsxs as jsxs12 } from "react/jsx-runtime";
1945
+ function MenubarMenu({
1946
+ ...props
1947
+ }) {
1948
+ return /* @__PURE__ */ jsx24(MenubarPrimitive.Menu, { ...props });
1949
+ }
1950
+ function MenubarGroup({
1951
+ ...props
1952
+ }) {
1953
+ return /* @__PURE__ */ jsx24(MenubarPrimitive.Group, { ...props });
1954
+ }
1955
+ function MenubarPortal({
1956
+ ...props
1957
+ }) {
1958
+ return /* @__PURE__ */ jsx24(MenubarPrimitive.Portal, { ...props });
1959
+ }
1960
+ function MenubarRadioGroup({
1961
+ ...props
1962
+ }) {
1963
+ return /* @__PURE__ */ jsx24(MenubarPrimitive.RadioGroup, { ...props });
1964
+ }
1965
+ function MenubarSub({
1966
+ ...props
1967
+ }) {
1968
+ return /* @__PURE__ */ jsx24(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
1969
+ }
1970
+ var Menubar = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx24(
1971
+ MenubarPrimitive.Root,
1972
+ {
1973
+ ref,
1974
+ className: cn(
1975
+ "flex h-9 items-center space-x-1 rounded-md border bg-background p-1 shadow-sm",
1976
+ className
1977
+ ),
1978
+ ...props
1979
+ }
1980
+ ));
1981
+ Menubar.displayName = MenubarPrimitive.Root.displayName;
1982
+ var MenubarTrigger = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx24(
1983
+ MenubarPrimitive.Trigger,
1984
+ {
1985
+ ref,
1986
+ className: cn(
1987
+ "flex cursor-default select-none items-center rounded-sm px-3 py-1 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
1988
+ className
1989
+ ),
1990
+ ...props
1991
+ }
1992
+ ));
1993
+ MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;
1994
+ var MenubarSubTrigger = React24.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs12(
1995
+ MenubarPrimitive.SubTrigger,
1996
+ {
1997
+ ref,
1998
+ className: cn(
1999
+ "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",
2000
+ inset && "pl-8",
2001
+ className
2002
+ ),
2003
+ ...props,
2004
+ children: [
2005
+ children,
2006
+ /* @__PURE__ */ jsx24(ChevronRight4, { className: "ml-auto size-4" })
2007
+ ]
2008
+ }
2009
+ ));
2010
+ MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;
2011
+ var MenubarSubContent = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx24(
2012
+ MenubarPrimitive.SubContent,
2013
+ {
2014
+ ref,
2015
+ className: cn(
2016
+ "z-50 min-w-32 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-menubar-content-transform-origin)",
2017
+ className
2018
+ ),
2019
+ ...props
2020
+ }
2021
+ ));
2022
+ MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;
2023
+ var MenubarContent = React24.forwardRef(
2024
+ ({ className, align = "start", alignOffset = -4, sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx24(MenubarPrimitive.Portal, { children: /* @__PURE__ */ jsx24(
2025
+ MenubarPrimitive.Content,
2026
+ {
2027
+ ref,
2028
+ align,
2029
+ alignOffset,
2030
+ sideOffset,
2031
+ className: cn(
2032
+ "z-50 min-w-48 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-(--radix-menubar-content-transform-origin)",
2033
+ className
2034
+ ),
2035
+ ...props
2036
+ }
2037
+ ) })
2038
+ );
2039
+ MenubarContent.displayName = MenubarPrimitive.Content.displayName;
2040
+ var MenubarItem = React24.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx24(
2041
+ MenubarPrimitive.Item,
2042
+ {
2043
+ ref,
2044
+ className: cn(
2045
+ "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",
2046
+ inset && "pl-8",
2047
+ className
2048
+ ),
2049
+ ...props
2050
+ }
2051
+ ));
2052
+ MenubarItem.displayName = MenubarPrimitive.Item.displayName;
2053
+ var MenubarCheckboxItem = React24.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs12(
2054
+ MenubarPrimitive.CheckboxItem,
2055
+ {
2056
+ ref,
2057
+ className: cn(
2058
+ "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",
2059
+ className
2060
+ ),
2061
+ ...props,
2062
+ children: [
2063
+ /* @__PURE__ */ jsx24("span", { className: "absolute left-2 flex items-center justify-center size-3.5", children: /* @__PURE__ */ jsx24(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx24(Check4, { className: "size-4" }) }) }),
2064
+ children
2065
+ ]
2066
+ }
2067
+ ));
2068
+ MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;
2069
+ var MenubarRadioItem = React24.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs12(
2070
+ MenubarPrimitive.RadioItem,
2071
+ {
2072
+ ref,
2073
+ className: cn(
2074
+ "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",
2075
+ className
2076
+ ),
2077
+ ...props,
2078
+ children: [
2079
+ /* @__PURE__ */ jsx24("span", { className: "absolute left-2 flex items-center justify-center size-3.5", children: /* @__PURE__ */ jsx24(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx24(Circle3, { className: "fill-current size-4" }) }) }),
2080
+ children
2081
+ ]
2082
+ }
2083
+ ));
2084
+ MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;
2085
+ var MenubarLabel = React24.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx24(
2086
+ MenubarPrimitive.Label,
2087
+ {
2088
+ ref,
2089
+ className: cn(
2090
+ "px-2 py-1.5 text-sm font-semibold",
2091
+ inset && "pl-8",
2092
+ className
2093
+ ),
2094
+ ...props
2095
+ }
2096
+ ));
2097
+ MenubarLabel.displayName = MenubarPrimitive.Label.displayName;
2098
+ var MenubarSeparator = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx24(
2099
+ MenubarPrimitive.Separator,
2100
+ {
2101
+ ref,
2102
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
2103
+ ...props
2104
+ }
2105
+ ));
2106
+ MenubarSeparator.displayName = MenubarPrimitive.Separator.displayName;
2107
+ var MenubarShortcut = ({
2108
+ className,
2109
+ ...props
2110
+ }) => {
2111
+ return /* @__PURE__ */ jsx24(
2112
+ "span",
2113
+ {
2114
+ className: cn(
2115
+ "ml-auto text-xs tracking-widest text-muted-foreground",
2116
+ className
135
2117
  ),
136
- !p && s && /* @__PURE__ */ e(
137
- j,
2118
+ ...props
2119
+ }
2120
+ );
2121
+ };
2122
+ MenubarShortcut.displayname = "MenubarShortcut";
2123
+
2124
+ // src/components/navigation-menu.tsx
2125
+ import * as React25 from "react";
2126
+ import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
2127
+ import { cva as cva5 } from "class-variance-authority";
2128
+ import { ChevronDown as ChevronDown2 } from "lucide-react";
2129
+ import { jsx as jsx25, jsxs as jsxs13 } from "react/jsx-runtime";
2130
+ var NavigationMenu = React25.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs13(
2131
+ NavigationMenuPrimitive.Root,
2132
+ {
2133
+ ref,
2134
+ className: cn(
2135
+ "relative z-10 flex max-w-max flex-1 items-center justify-center",
2136
+ className
2137
+ ),
2138
+ ...props,
2139
+ children: [
2140
+ children,
2141
+ /* @__PURE__ */ jsx25(NavigationMenuViewport, {})
2142
+ ]
2143
+ }
2144
+ ));
2145
+ NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
2146
+ var NavigationMenuList = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx25(
2147
+ NavigationMenuPrimitive.List,
2148
+ {
2149
+ ref,
2150
+ className: cn(
2151
+ "group flex flex-1 list-none items-center justify-center space-x-1",
2152
+ className
2153
+ ),
2154
+ ...props
2155
+ }
2156
+ ));
2157
+ NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;
2158
+ var NavigationMenuItem = NavigationMenuPrimitive.Item;
2159
+ var navigationMenuTriggerStyle = cva5(
2160
+ "group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium cursor-pointer transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed data-[state=open]:text-accent-foreground data-[state=open]:bg-accent/50 data-[state=open]:hover:bg-accent data-[state=open]:focus:bg-accent"
2161
+ );
2162
+ var NavigationMenuTrigger = React25.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs13(
2163
+ NavigationMenuPrimitive.Trigger,
2164
+ {
2165
+ ref,
2166
+ className: cn(navigationMenuTriggerStyle(), "group", className),
2167
+ ...props,
2168
+ children: [
2169
+ children,
2170
+ " ",
2171
+ /* @__PURE__ */ jsx25(
2172
+ ChevronDown2,
138
2173
  {
139
- variant: "caption",
140
- id: f,
141
- children: s
2174
+ className: "relative top-px ml-1 transition duration-300 group-data-[state=open]:rotate-180 size-3",
2175
+ "aria-hidden": "true"
142
2176
  }
143
2177
  )
144
- ] });
2178
+ ]
2179
+ }
2180
+ ));
2181
+ NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
2182
+ var NavigationMenuContent = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx25(
2183
+ NavigationMenuPrimitive.Content,
2184
+ {
2185
+ ref,
2186
+ className: cn(
2187
+ "left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto ",
2188
+ className
2189
+ ),
2190
+ ...props
2191
+ }
2192
+ ));
2193
+ NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
2194
+ var NavigationMenuLink = NavigationMenuPrimitive.Link;
2195
+ var NavigationMenuViewport = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx25("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ jsx25(
2196
+ NavigationMenuPrimitive.Viewport,
2197
+ {
2198
+ className: cn(
2199
+ "origin-top-center relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-(--radix-navigation-menu-viewport-width)",
2200
+ className
2201
+ ),
2202
+ ref,
2203
+ ...props
2204
+ }
2205
+ ) }));
2206
+ NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;
2207
+ var NavigationMenuIndicator = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx25(
2208
+ NavigationMenuPrimitive.Indicator,
2209
+ {
2210
+ ref,
2211
+ className: cn(
2212
+ "top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in",
2213
+ className
2214
+ ),
2215
+ ...props,
2216
+ children: /* @__PURE__ */ jsx25("div", { className: "relative top-[60%] rotate-45 rounded-tl-sm bg-border shadow-md size-2" })
2217
+ }
2218
+ ));
2219
+ NavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName;
2220
+
2221
+ // src/components/pagination.tsx
2222
+ import * as React26 from "react";
2223
+ import { ChevronLeft, ChevronRight as ChevronRight5, MoreHorizontal as MoreHorizontal2 } from "lucide-react";
2224
+ import { jsx as jsx26, jsxs as jsxs14 } from "react/jsx-runtime";
2225
+ var Pagination = ({ className, ...props }) => /* @__PURE__ */ jsx26(
2226
+ "nav",
2227
+ {
2228
+ role: "navigation",
2229
+ "aria-label": "pagination",
2230
+ className: cn("mx-auto flex w-full justify-center", className),
2231
+ ...props
145
2232
  }
146
2233
  );
147
- W.displayName = "Input";
148
- var Z = "i1r0p60", $ = { "2xs": "i1r0p61", xs: "i1r0p62", sm: "i1r0p63", md: "i1r0p64", lg: "i1r0p65", xl: "i1r0p66", "2xl": "i1r0p67", "3xl": "i1r0p68", "4xl": "i1r0p69", "5xl": "i1r0p6a" }, M = { "2xs": "i1r0p6b", xs: "i1r0p6c", sm: "i1r0p6d", md: "i1r0p6e", lg: "i1r0p6f", xl: "i1r0p6g", "2xl": "i1r0p6h", "3xl": "i1r0p6i", "4xl": "i1r0p6j", "5xl": "i1r0p6k" }, rr = { "2xs": "i1r0p6l", xs: "i1r0p6m", sm: "i1r0p6n", md: "i1r0p6o", lg: "i1r0p6p", xl: "i1r0p6q", "2xl": "i1r0p6r", "3xl": "i1r0p6s", "4xl": "i1r0p6t", "5xl": "i1r0p6u" }, ir = { "2xs": "i1r0p6v", xs: "i1r0p6w", sm: "i1r0p6x", md: "i1r0p6y", lg: "i1r0p6z", xl: "i1r0p610", "2xl": "i1r0p611", "3xl": "i1r0p612", "4xl": "i1r0p613", "5xl": "i1r0p614" }, ar = { "2xs": "i1r0p615", xs: "i1r0p616", sm: "i1r0p617", md: "i1r0p618", lg: "i1r0p619", xl: "i1r0p61a", "2xl": "i1r0p61b", "3xl": "i1r0p61c", "4xl": "i1r0p61d", "5xl": "i1r0p61e" }, lr = { "2xs": "i1r0p61f", xs: "i1r0p61g", sm: "i1r0p61h", md: "i1r0p61i", lg: "i1r0p61j", xl: "i1r0p61k", "2xl": "i1r0p61l", "3xl": "i1r0p61m", "4xl": "i1r0p61n", "5xl": "i1r0p61o" }, pr = { "2xs": "i1r0p61p", xs: "i1r0p61q", sm: "i1r0p61r", md: "i1r0p61s", lg: "i1r0p61t", xl: "i1r0p61u", "2xl": "i1r0p61v", "3xl": "i1r0p61w", "4xl": "i1r0p61x", "5xl": "i1r0p61y" }, sr = { "2xs": "i1r0p61z", xs: "i1r0p620", sm: "i1r0p621", md: "i1r0p622", lg: "i1r0p623", xl: "i1r0p624", "2xl": "i1r0p625", "3xl": "i1r0p626", "4xl": "i1r0p627", "5xl": "i1r0p628" }, xr = { "2xs": "i1r0p629", xs: "i1r0p62a", sm: "i1r0p62b", md: "i1r0p62c", lg: "i1r0p62d", xl: "i1r0p62e", "2xl": "i1r0p62f", "3xl": "i1r0p62g", "4xl": "i1r0p62h", "5xl": "i1r0p62i" }, er = { "2xs": "i1r0p62j", xs: "i1r0p62k", sm: "i1r0p62l", md: "i1r0p62m", lg: "i1r0p62n", xl: "i1r0p62o", "2xl": "i1r0p62p", "3xl": "i1r0p62q", "4xl": "i1r0p62r", "5xl": "i1r0p62s" }, tr = { "2xs": "i1r0p62t", xs: "i1r0p62u", sm: "i1r0p62v", md: "i1r0p62w", lg: "i1r0p62x", xl: "i1r0p62y", "2xl": "i1r0p62z", "3xl": "i1r0p630", "4xl": "i1r0p631", "5xl": "i1r0p632" }, vr = { "2xs": "i1r0p633", xs: "i1r0p634", sm: "i1r0p635", md: "i1r0p636", lg: "i1r0p637", xl: "i1r0p638", "2xl": "i1r0p639", "3xl": "i1r0p63a", "4xl": "i1r0p63b", "5xl": "i1r0p63c" }, cr = { "2xs": "i1r0p63d", xs: "i1r0p63e", sm: "i1r0p63f", md: "i1r0p63g", lg: "i1r0p63h", xl: "i1r0p63i", "2xl": "i1r0p63j", "3xl": "i1r0p63k", "4xl": "i1r0p63l", "5xl": "i1r0p63m" }, dr = { "2xs": "i1r0p63n", xs: "i1r0p63o", sm: "i1r0p63p", md: "i1r0p63q", lg: "i1r0p63r", xl: "i1r0p63s", "2xl": "i1r0p63t", "3xl": "i1r0p63u", "4xl": "i1r0p63v", "5xl": "i1r0p63w" }, nr = { block: "i1r0p63x", flex: "i1r0p63y", grid: "i1r0p63z", inline: "i1r0p640", inlineBlock: "i1r0p641", inlineFlex: "i1r0p642", inlineGrid: "i1r0p643", none: "i1r0p644" }, gr = { static: "i1r0p645", relative: "i1r0p646", absolute: "i1r0p647", fixed: "i1r0p648", sticky: "i1r0p649" }, or = { visible: "i1r0p64a", hidden: "i1r0p64b", scroll: "i1r0p64c", auto: "i1r0p64d" };
149
- const z = d.forwardRef(
150
- ({
151
- p: r,
152
- px: a,
153
- py: i,
154
- pt: l,
155
- pr: x,
156
- pb: s,
157
- pl: p,
158
- m: t,
159
- mx: v,
160
- my: c,
161
- mt: o,
162
- mr: m,
163
- mb: g,
164
- ml: f,
165
- display: u,
166
- position: _,
167
- overflow: y,
168
- className: b,
169
- ...h
170
- }, k) => /* @__PURE__ */ e(
171
- I,
172
- {
173
- ref: k,
174
- className: n(
175
- Z,
176
- r && $[r],
177
- a && M[a],
178
- i && rr[i],
179
- l && ir[l],
180
- x && ar[x],
181
- s && lr[s],
182
- p && pr[p],
183
- t && sr[t],
184
- v && xr[v],
185
- c && er[c],
186
- o && tr[o],
187
- m && vr[m],
188
- g && cr[g],
189
- f && dr[f],
190
- u && nr[u],
191
- _ && gr[_],
192
- y && or[y],
193
- b
2234
+ Pagination.displayName = "Pagination";
2235
+ var PaginationContent = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx26(
2236
+ "ul",
2237
+ {
2238
+ ref,
2239
+ className: cn("flex flex-row items-center gap-1", className),
2240
+ ...props
2241
+ }
2242
+ ));
2243
+ PaginationContent.displayName = "PaginationContent";
2244
+ var PaginationItem = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx26("li", { ref, className: cn("", className), ...props }));
2245
+ PaginationItem.displayName = "PaginationItem";
2246
+ var PaginationLink = ({
2247
+ className,
2248
+ isActive,
2249
+ size = "icon",
2250
+ ...props
2251
+ }) => /* @__PURE__ */ jsx26(
2252
+ "a",
2253
+ {
2254
+ "aria-current": isActive ? "page" : void 0,
2255
+ className: cn(
2256
+ buttonVariants({
2257
+ variant: isActive ? "outline" : "ghost",
2258
+ size
2259
+ }),
2260
+ className
2261
+ ),
2262
+ ...props
2263
+ }
2264
+ );
2265
+ PaginationLink.displayName = "PaginationLink";
2266
+ var PaginationPrevious = ({
2267
+ className,
2268
+ ...props
2269
+ }) => /* @__PURE__ */ jsxs14(
2270
+ PaginationLink,
2271
+ {
2272
+ "aria-label": "Go to previous page",
2273
+ size: "default",
2274
+ className: cn("gap-1 pl-2.5", className),
2275
+ ...props,
2276
+ children: [
2277
+ /* @__PURE__ */ jsx26(ChevronLeft, { className: "size-4" }),
2278
+ /* @__PURE__ */ jsx26("span", { children: "Previous" })
2279
+ ]
2280
+ }
2281
+ );
2282
+ PaginationPrevious.displayName = "PaginationPrevious";
2283
+ var PaginationNext = ({
2284
+ className,
2285
+ ...props
2286
+ }) => /* @__PURE__ */ jsxs14(
2287
+ PaginationLink,
2288
+ {
2289
+ "aria-label": "Go to next page",
2290
+ size: "default",
2291
+ className: cn("gap-1 pr-2.5", className),
2292
+ ...props,
2293
+ children: [
2294
+ /* @__PURE__ */ jsx26("span", { children: "Next" }),
2295
+ /* @__PURE__ */ jsx26(ChevronRight5, { className: "size-4" })
2296
+ ]
2297
+ }
2298
+ );
2299
+ PaginationNext.displayName = "PaginationNext";
2300
+ var PaginationEllipsis = ({
2301
+ className,
2302
+ ...props
2303
+ }) => /* @__PURE__ */ jsxs14(
2304
+ "span",
2305
+ {
2306
+ "aria-hidden": true,
2307
+ className: cn("flex items-center justify-center size-9", className),
2308
+ ...props,
2309
+ children: [
2310
+ /* @__PURE__ */ jsx26(MoreHorizontal2, { className: "size-4" }),
2311
+ /* @__PURE__ */ jsx26("span", { className: "sr-only", children: "More pages" })
2312
+ ]
2313
+ }
2314
+ );
2315
+ PaginationEllipsis.displayName = "PaginationEllipsis";
2316
+
2317
+ // src/components/popover.tsx
2318
+ import * as React27 from "react";
2319
+ import * as PopoverPrimitive from "@radix-ui/react-popover";
2320
+ import { jsx as jsx27 } from "react/jsx-runtime";
2321
+ var Popover = PopoverPrimitive.Root;
2322
+ var PopoverTrigger = PopoverPrimitive.Trigger;
2323
+ var PopoverAnchor = PopoverPrimitive.Anchor;
2324
+ var PopoverContent = React27.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx27(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx27(
2325
+ PopoverPrimitive.Content,
2326
+ {
2327
+ ref,
2328
+ align,
2329
+ sideOffset,
2330
+ className: cn(
2331
+ "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 origin-(--radix-popover-content-transform-origin)",
2332
+ className
2333
+ ),
2334
+ ...props
2335
+ }
2336
+ ) }));
2337
+ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
2338
+
2339
+ // src/components/progress.tsx
2340
+ import * as React28 from "react";
2341
+ import * as ProgressPrimitive from "@radix-ui/react-progress";
2342
+ import { jsx as jsx28 } from "react/jsx-runtime";
2343
+ var Progress = React28.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ jsx28(
2344
+ ProgressPrimitive.Root,
2345
+ {
2346
+ ref,
2347
+ className: cn(
2348
+ "relative h-2 w-full overflow-hidden rounded-full bg-primary/20",
2349
+ className
2350
+ ),
2351
+ ...props,
2352
+ children: /* @__PURE__ */ jsx28(
2353
+ ProgressPrimitive.Indicator,
2354
+ {
2355
+ className: "flex-1 bg-primary transition-all size-full",
2356
+ style: { transform: `translateX(-${100 - (value || 0)}%)` }
2357
+ }
2358
+ )
2359
+ }
2360
+ ));
2361
+ Progress.displayName = ProgressPrimitive.Root.displayName;
2362
+
2363
+ // src/components/radio-group.tsx
2364
+ import * as React29 from "react";
2365
+ import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
2366
+ import { Circle as Circle4 } from "lucide-react";
2367
+ import { jsx as jsx29 } from "react/jsx-runtime";
2368
+ var RadioGroup4 = React29.forwardRef(({ className, ...props }, ref) => {
2369
+ return /* @__PURE__ */ jsx29(
2370
+ RadioGroupPrimitive.Root,
2371
+ {
2372
+ className: cn("grid gap-2", className),
2373
+ ...props,
2374
+ ref
2375
+ }
2376
+ );
2377
+ });
2378
+ RadioGroup4.displayName = RadioGroupPrimitive.Root.displayName;
2379
+ var RadioGroupItem = React29.forwardRef(({ className, ...props }, ref) => {
2380
+ return /* @__PURE__ */ jsx29(
2381
+ RadioGroupPrimitive.Item,
2382
+ {
2383
+ ref,
2384
+ className: cn(
2385
+ "aspect-square rounded-full border border-primary text-primary shadow cursor-pointer focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 size-4",
2386
+ className
194
2387
  ),
195
- ...h
2388
+ ...props,
2389
+ children: /* @__PURE__ */ jsx29(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx29(Circle4, { className: "fill-primary size-3.5" }) })
196
2390
  }
197
- )
2391
+ );
2392
+ });
2393
+ RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
2394
+
2395
+ // src/components/resizable.tsx
2396
+ import { GripVertical } from "lucide-react";
2397
+ import { Group as Group4, Panel, Separator as Separator4 } from "react-resizable-panels";
2398
+ import { jsx as jsx30 } from "react/jsx-runtime";
2399
+ var ResizablePanelGroup = ({
2400
+ className,
2401
+ ...props
2402
+ }) => /* @__PURE__ */ jsx30(
2403
+ Group4,
2404
+ {
2405
+ className: cn(
2406
+ "flex data-[panel-group-direction=vertical]:flex-col size-full",
2407
+ className
2408
+ ),
2409
+ ...props
2410
+ }
198
2411
  );
199
- z.displayName = "Box";
200
- var mr = "_11sjf7u0", fr = { row: "_11sjf7u1", column: "_11sjf7u2", rowReverse: "_11sjf7u3", columnReverse: "_11sjf7u4" }, ur = { start: "_11sjf7u5", center: "_11sjf7u6", end: "_11sjf7u7", baseline: "_11sjf7u8", stretch: "_11sjf7u9" }, yr = { start: "_11sjf7ua", center: "_11sjf7ub", end: "_11sjf7uc", between: "_11sjf7ud", around: "_11sjf7ue", evenly: "_11sjf7uf" }, _r = { nowrap: "_11sjf7ug", wrap: "_11sjf7uh", wrapReverse: "_11sjf7ui" }, jr = { "2xs": "_11sjf7uj", xs: "_11sjf7uk", sm: "_11sjf7ul", md: "_11sjf7um", lg: "_11sjf7un", xl: "_11sjf7uo", "2xl": "_11sjf7up", "3xl": "_11sjf7uq", "4xl": "_11sjf7ur", "5xl": "_11sjf7us" };
201
- const w = d.forwardRef(
202
- ({ direction: r, align: a, justify: i, wrap: l, gap: x, className: s, ...p }, t) => /* @__PURE__ */ e(
203
- z,
204
- {
205
- ref: t,
206
- display: "flex",
207
- className: n(
208
- mr,
209
- r && fr[r],
210
- a && ur[a],
211
- i && yr[i],
212
- l && _r[l],
213
- x && jr[x],
214
- s
2412
+ var ResizablePanel = Panel;
2413
+ var ResizableHandle = ({
2414
+ withHandle,
2415
+ className,
2416
+ ...props
2417
+ }) => /* @__PURE__ */ jsx30(
2418
+ Separator4,
2419
+ {
2420
+ className: cn(
2421
+ "relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90",
2422
+ className
2423
+ ),
2424
+ ...props,
2425
+ children: withHandle && /* @__PURE__ */ jsx30("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border", children: /* @__PURE__ */ jsx30(GripVertical, { className: "size-2.5" }) })
2426
+ }
2427
+ );
2428
+
2429
+ // src/components/scroll-area.tsx
2430
+ import * as React30 from "react";
2431
+ import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
2432
+ import { jsx as jsx31, jsxs as jsxs15 } from "react/jsx-runtime";
2433
+ var ScrollArea = React30.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs15(
2434
+ ScrollAreaPrimitive.Root,
2435
+ {
2436
+ ref,
2437
+ className: cn("relative overflow-hidden", className),
2438
+ ...props,
2439
+ children: [
2440
+ /* @__PURE__ */ jsx31(ScrollAreaPrimitive.Viewport, { className: "rounded-[inherit] size-full", children }),
2441
+ /* @__PURE__ */ jsx31(ScrollBar, {}),
2442
+ /* @__PURE__ */ jsx31(ScrollAreaPrimitive.Corner, {})
2443
+ ]
2444
+ }
2445
+ ));
2446
+ ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
2447
+ var ScrollBar = React30.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx31(
2448
+ ScrollAreaPrimitive.ScrollAreaScrollbar,
2449
+ {
2450
+ ref,
2451
+ orientation,
2452
+ className: cn(
2453
+ "flex touch-none select-none transition-colors",
2454
+ orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent p-px",
2455
+ orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-px",
2456
+ className
2457
+ ),
2458
+ ...props,
2459
+ children: /* @__PURE__ */ jsx31(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
2460
+ }
2461
+ ));
2462
+ ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
2463
+
2464
+ // src/components/select.tsx
2465
+ import * as React31 from "react";
2466
+ import * as SelectPrimitive from "@radix-ui/react-select";
2467
+ import { Check as Check5, ChevronDown as ChevronDown3, ChevronUp } from "lucide-react";
2468
+ import { jsx as jsx32, jsxs as jsxs16 } from "react/jsx-runtime";
2469
+ var Select = SelectPrimitive.Root;
2470
+ var SelectGroup = SelectPrimitive.Group;
2471
+ var SelectValue = SelectPrimitive.Value;
2472
+ var SelectTrigger = React31.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs16(
2473
+ SelectPrimitive.Trigger,
2474
+ {
2475
+ ref,
2476
+ className: cn(
2477
+ "flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background cursor-pointer data-placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
2478
+ className
2479
+ ),
2480
+ ...props,
2481
+ children: [
2482
+ children,
2483
+ /* @__PURE__ */ jsx32(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx32(ChevronDown3, { className: "opacity-50 size-4" }) })
2484
+ ]
2485
+ }
2486
+ ));
2487
+ SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
2488
+ var SelectScrollUpButton = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx32(
2489
+ SelectPrimitive.ScrollUpButton,
2490
+ {
2491
+ ref,
2492
+ className: cn(
2493
+ "flex cursor-default items-center justify-center py-1",
2494
+ className
2495
+ ),
2496
+ ...props,
2497
+ children: /* @__PURE__ */ jsx32(ChevronUp, { className: "size-4" })
2498
+ }
2499
+ ));
2500
+ SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
2501
+ var SelectScrollDownButton = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx32(
2502
+ SelectPrimitive.ScrollDownButton,
2503
+ {
2504
+ ref,
2505
+ className: cn(
2506
+ "flex cursor-default items-center justify-center py-1",
2507
+ className
2508
+ ),
2509
+ ...props,
2510
+ children: /* @__PURE__ */ jsx32(ChevronDown3, { className: "size-4" })
2511
+ }
2512
+ ));
2513
+ SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
2514
+ var SelectContent = React31.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx32(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs16(
2515
+ SelectPrimitive.Content,
2516
+ {
2517
+ ref,
2518
+ className: cn(
2519
+ "relative z-50 max-h-(--radix-select-content-available-height) min-w-32 overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-(--radix-select-content-transform-origin)",
2520
+ 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",
2521
+ className
2522
+ ),
2523
+ position,
2524
+ ...props,
2525
+ children: [
2526
+ /* @__PURE__ */ jsx32(SelectScrollUpButton, {}),
2527
+ /* @__PURE__ */ jsx32(
2528
+ SelectPrimitive.Viewport,
2529
+ {
2530
+ className: cn(
2531
+ "p-1",
2532
+ position === "popper" && "h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width)"
2533
+ ),
2534
+ children
2535
+ }
215
2536
  ),
216
- ...p
2537
+ /* @__PURE__ */ jsx32(SelectScrollDownButton, {})
2538
+ ]
2539
+ }
2540
+ ) }));
2541
+ SelectContent.displayName = SelectPrimitive.Content.displayName;
2542
+ var SelectLabel = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx32(
2543
+ SelectPrimitive.Label,
2544
+ {
2545
+ ref,
2546
+ className: cn("px-2 py-1.5 text-sm font-semibold", className),
2547
+ ...props
2548
+ }
2549
+ ));
2550
+ SelectLabel.displayName = SelectPrimitive.Label.displayName;
2551
+ var SelectItem = React31.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs16(
2552
+ SelectPrimitive.Item,
2553
+ {
2554
+ ref,
2555
+ className: cn(
2556
+ "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
2557
+ className
2558
+ ),
2559
+ ...props,
2560
+ children: [
2561
+ /* @__PURE__ */ jsx32("span", { className: "absolute right-2 flex items-center justify-center size-3.5", children: /* @__PURE__ */ jsx32(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx32(Check5, { className: "size-4" }) }) }),
2562
+ /* @__PURE__ */ jsx32(SelectPrimitive.ItemText, { children })
2563
+ ]
2564
+ }
2565
+ ));
2566
+ SelectItem.displayName = SelectPrimitive.Item.displayName;
2567
+ var SelectSeparator = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx32(
2568
+ SelectPrimitive.Separator,
2569
+ {
2570
+ ref,
2571
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
2572
+ ...props
2573
+ }
2574
+ ));
2575
+ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
2576
+
2577
+ // src/components/separator.tsx
2578
+ import * as React32 from "react";
2579
+ import * as SeparatorPrimitive from "@radix-ui/react-separator";
2580
+ import { jsx as jsx33 } from "react/jsx-runtime";
2581
+ var Separator6 = React32.forwardRef(
2582
+ ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx33(
2583
+ SeparatorPrimitive.Root,
2584
+ {
2585
+ ref,
2586
+ decorative,
2587
+ orientation,
2588
+ className: cn(
2589
+ "shrink-0 bg-border",
2590
+ orientation === "horizontal" ? "h-px w-full" : "h-full w-px",
2591
+ className
2592
+ ),
2593
+ ...props
217
2594
  }
218
2595
  )
219
2596
  );
220
- w.displayName = "Flex";
221
- var zr = "_1cg9azy0", wr = { 1: "_1cg9azy1", 2: "_1cg9azy2", 3: "_1cg9azy3", 4: "_1cg9azy4", 5: "_1cg9azy5", 6: "_1cg9azy6", 12: "_1cg9azy7" }, br = { "2xs": "_1cg9azy8", xs: "_1cg9azy9", sm: "_1cg9azya", md: "_1cg9azyb", lg: "_1cg9azyc", xl: "_1cg9azyd", "2xl": "_1cg9azye", "3xl": "_1cg9azyf", "4xl": "_1cg9azyg", "5xl": "_1cg9azyh" }, hr = { "2xs": "_1cg9azyi", xs: "_1cg9azyj", sm: "_1cg9azyk", md: "_1cg9azyl", lg: "_1cg9azym", xl: "_1cg9azyn", "2xl": "_1cg9azyo", "3xl": "_1cg9azyp", "4xl": "_1cg9azyq", "5xl": "_1cg9azyr" }, kr = { "2xs": "_1cg9azys", xs: "_1cg9azyt", sm: "_1cg9azyu", md: "_1cg9azyv", lg: "_1cg9azyw", xl: "_1cg9azyx", "2xl": "_1cg9azyy", "3xl": "_1cg9azyz", "4xl": "_1cg9azy10", "5xl": "_1cg9azy11" }, Nr = { start: "_1cg9azy12", center: "_1cg9azy13", end: "_1cg9azy14", stretch: "_1cg9azy15" }, Rr = { start: "_1cg9azy16", center: "_1cg9azy17", end: "_1cg9azy18", stretch: "_1cg9azy19" };
222
- const Br = d.forwardRef(
223
- ({ columns: r, gap: a, columnGap: i, rowGap: l, align: x, justify: s, className: p, ...t }, v) => /* @__PURE__ */ e(
224
- z,
225
- {
226
- ref: v,
227
- display: "grid",
228
- className: n(
229
- zr,
230
- r && wr[r],
231
- a && br[a],
232
- i && hr[i],
233
- l && kr[l],
234
- x && Nr[x],
235
- s && Rr[s],
236
- p
237
- ),
238
- ...t
2597
+ Separator6.displayName = SeparatorPrimitive.Root.displayName;
2598
+
2599
+ // src/components/sheet.tsx
2600
+ import * as React33 from "react";
2601
+ import * as SheetPrimitive from "@radix-ui/react-dialog";
2602
+ import { cva as cva6 } from "class-variance-authority";
2603
+ import { X as X2 } from "lucide-react";
2604
+ import { jsx as jsx34, jsxs as jsxs17 } from "react/jsx-runtime";
2605
+ var Sheet = SheetPrimitive.Root;
2606
+ var SheetTrigger = SheetPrimitive.Trigger;
2607
+ var SheetClose = SheetPrimitive.Close;
2608
+ var SheetPortal = SheetPrimitive.Portal;
2609
+ var SheetOverlay = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx34(
2610
+ SheetPrimitive.Overlay,
2611
+ {
2612
+ className: cn(
2613
+ "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",
2614
+ className
2615
+ ),
2616
+ ...props,
2617
+ ref
2618
+ }
2619
+ ));
2620
+ SheetOverlay.displayName = SheetPrimitive.Overlay.displayName;
2621
+ var sheetVariants = cva6(
2622
+ "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out",
2623
+ {
2624
+ variants: {
2625
+ side: {
2626
+ top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
2627
+ bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
2628
+ left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
2629
+ right: "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"
2630
+ }
2631
+ },
2632
+ defaultVariants: {
2633
+ side: "right"
239
2634
  }
240
- )
2635
+ }
241
2636
  );
242
- Br.displayName = "Grid";
243
- var qr = "oflweu0", Ir = { sm: "oflweu1", md: "oflweu2", lg: "oflweu3", xl: "oflweu4", full: "oflweu5" };
244
- const Er = d.forwardRef(
245
- ({ size: r = "lg", className: a, ...i }, l) => /* @__PURE__ */ e(
246
- z,
2637
+ var SheetContent = React33.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs17(SheetPortal, { children: [
2638
+ /* @__PURE__ */ jsx34(SheetOverlay, {}),
2639
+ /* @__PURE__ */ jsxs17(
2640
+ SheetPrimitive.Content,
247
2641
  {
248
- ref: l,
249
- className: n(qr, r && Ir[r], a),
250
- ...i
2642
+ ref,
2643
+ className: cn(sheetVariants({ side }), className),
2644
+ ...props,
2645
+ children: [
2646
+ /* @__PURE__ */ jsxs17(SheetPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background cursor-pointer transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
2647
+ /* @__PURE__ */ jsx34(X2, { className: "size-4" }),
2648
+ /* @__PURE__ */ jsx34("span", { className: "sr-only", children: "Close" })
2649
+ ] }),
2650
+ children
2651
+ ]
251
2652
  }
252
2653
  )
2654
+ ] }));
2655
+ SheetContent.displayName = SheetPrimitive.Content.displayName;
2656
+ var SheetHeader = ({
2657
+ className,
2658
+ ...props
2659
+ }) => /* @__PURE__ */ jsx34(
2660
+ "div",
2661
+ {
2662
+ className: cn(
2663
+ "flex flex-col space-y-2 text-center sm:text-left",
2664
+ className
2665
+ ),
2666
+ ...props
2667
+ }
253
2668
  );
254
- Er.displayName = "Container";
255
- const Gr = d.forwardRef(
256
- ({ direction: r = "vertical", ...a }, i) => /* @__PURE__ */ e(
257
- w,
2669
+ SheetHeader.displayName = "SheetHeader";
2670
+ var SheetFooter = ({
2671
+ className,
2672
+ ...props
2673
+ }) => /* @__PURE__ */ jsx34(
2674
+ "div",
2675
+ {
2676
+ className: cn(
2677
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
2678
+ className
2679
+ ),
2680
+ ...props
2681
+ }
2682
+ );
2683
+ SheetFooter.displayName = "SheetFooter";
2684
+ var SheetTitle = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx34(
2685
+ SheetPrimitive.Title,
2686
+ {
2687
+ ref,
2688
+ className: cn("text-lg font-semibold text-foreground", className),
2689
+ ...props
2690
+ }
2691
+ ));
2692
+ SheetTitle.displayName = SheetPrimitive.Title.displayName;
2693
+ var SheetDescription = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx34(
2694
+ SheetPrimitive.Description,
2695
+ {
2696
+ ref,
2697
+ className: cn("text-sm text-muted-foreground", className),
2698
+ ...props
2699
+ }
2700
+ ));
2701
+ SheetDescription.displayName = SheetPrimitive.Description.displayName;
2702
+
2703
+ // src/components/sidebar.tsx
2704
+ import * as React35 from "react";
2705
+ import { Slot as Slot4 } from "@radix-ui/react-slot";
2706
+ import { cva as cva7 } from "class-variance-authority";
2707
+ import { PanelLeft } from "lucide-react";
2708
+
2709
+ // src/components/skeleton.tsx
2710
+ import { jsx as jsx35 } from "react/jsx-runtime";
2711
+ function Skeleton({
2712
+ className,
2713
+ ...props
2714
+ }) {
2715
+ return /* @__PURE__ */ jsx35(
2716
+ "div",
258
2717
  {
259
- ref: i,
260
- direction: r === "vertical" ? "column" : "row",
261
- ...a
2718
+ className: cn("animate-pulse rounded-md bg-primary/10", className),
2719
+ ...props
262
2720
  }
263
- )
2721
+ );
2722
+ }
2723
+
2724
+ // src/components/tooltip.tsx
2725
+ import * as React34 from "react";
2726
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
2727
+ import { jsx as jsx36 } from "react/jsx-runtime";
2728
+ var TooltipProvider = TooltipPrimitive.Provider;
2729
+ var Tooltip2 = TooltipPrimitive.Root;
2730
+ var TooltipTrigger = TooltipPrimitive.Trigger;
2731
+ var TooltipContent = React34.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx36(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx36(
2732
+ TooltipPrimitive.Content,
2733
+ {
2734
+ ref,
2735
+ sideOffset,
2736
+ className: cn(
2737
+ "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 origin-(--radix-tooltip-content-transform-origin)",
2738
+ className
2739
+ ),
2740
+ ...props
2741
+ }
2742
+ ) }));
2743
+ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
2744
+
2745
+ // src/components/sidebar.tsx
2746
+ import { jsx as jsx37, jsxs as jsxs18 } from "react/jsx-runtime";
2747
+ var SIDEBAR_COOKIE_NAME = "sidebar_state";
2748
+ var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
2749
+ var SIDEBAR_WIDTH = "16rem";
2750
+ var SIDEBAR_WIDTH_MOBILE = "18rem";
2751
+ var SIDEBAR_WIDTH_ICON = "3rem";
2752
+ var SIDEBAR_KEYBOARD_SHORTCUT = "b";
2753
+ var SidebarContext = React35.createContext(null);
2754
+ function useSidebar() {
2755
+ const context = React35.useContext(SidebarContext);
2756
+ if (!context) {
2757
+ throw new Error("useSidebar must be used within a SidebarProvider.");
2758
+ }
2759
+ return context;
2760
+ }
2761
+ var SidebarProvider = React35.forwardRef(
2762
+ ({
2763
+ defaultOpen = true,
2764
+ open: openProp,
2765
+ onOpenChange: setOpenProp,
2766
+ className,
2767
+ style,
2768
+ children,
2769
+ ...props
2770
+ }, ref) => {
2771
+ const isMobile = useIsMobile();
2772
+ const [openMobile, setOpenMobile] = React35.useState(false);
2773
+ const [_open, _setOpen] = React35.useState(defaultOpen);
2774
+ const open = openProp ?? _open;
2775
+ const setOpen = React35.useCallback(
2776
+ (value) => {
2777
+ const openState = typeof value === "function" ? value(open) : value;
2778
+ if (setOpenProp) {
2779
+ setOpenProp(openState);
2780
+ } else {
2781
+ _setOpen(openState);
2782
+ }
2783
+ document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
2784
+ },
2785
+ [setOpenProp, open]
2786
+ );
2787
+ const toggleSidebar = React35.useCallback(() => {
2788
+ return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
2789
+ }, [isMobile, setOpen, setOpenMobile]);
2790
+ React35.useEffect(() => {
2791
+ const handleKeyDown = (event) => {
2792
+ if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
2793
+ event.preventDefault();
2794
+ toggleSidebar();
2795
+ }
2796
+ };
2797
+ window.addEventListener("keydown", handleKeyDown);
2798
+ return () => window.removeEventListener("keydown", handleKeyDown);
2799
+ }, [toggleSidebar]);
2800
+ const state = open ? "expanded" : "collapsed";
2801
+ const contextValue = React35.useMemo(
2802
+ () => ({
2803
+ state,
2804
+ open,
2805
+ setOpen,
2806
+ isMobile,
2807
+ openMobile,
2808
+ setOpenMobile,
2809
+ toggleSidebar
2810
+ }),
2811
+ [
2812
+ state,
2813
+ open,
2814
+ setOpen,
2815
+ isMobile,
2816
+ openMobile,
2817
+ setOpenMobile,
2818
+ toggleSidebar
2819
+ ]
2820
+ );
2821
+ return /* @__PURE__ */ jsx37(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx37(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx37(
2822
+ "div",
2823
+ {
2824
+ style: {
2825
+ "--sidebar-width": SIDEBAR_WIDTH,
2826
+ "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
2827
+ ...style
2828
+ },
2829
+ className: cn(
2830
+ "group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",
2831
+ className
2832
+ ),
2833
+ ref,
2834
+ ...props,
2835
+ children
2836
+ }
2837
+ ) }) });
2838
+ }
264
2839
  );
265
- Gr.displayName = "Stack";
2840
+ SidebarProvider.displayName = "SidebarProvider";
2841
+ var Sidebar = React35.forwardRef(
2842
+ ({
2843
+ side = "left",
2844
+ variant = "sidebar",
2845
+ collapsible = "offcanvas",
2846
+ className,
2847
+ children,
2848
+ ...props
2849
+ }, ref) => {
2850
+ const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
2851
+ if (collapsible === "none") {
2852
+ return /* @__PURE__ */ jsx37(
2853
+ "div",
2854
+ {
2855
+ className: cn(
2856
+ "flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",
2857
+ className
2858
+ ),
2859
+ ref,
2860
+ ...props,
2861
+ children
2862
+ }
2863
+ );
2864
+ }
2865
+ if (isMobile) {
2866
+ return /* @__PURE__ */ jsx37(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs18(
2867
+ SheetContent,
2868
+ {
2869
+ "data-sidebar": "sidebar",
2870
+ "data-mobile": "true",
2871
+ className: "w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",
2872
+ style: {
2873
+ "--sidebar-width": SIDEBAR_WIDTH_MOBILE
2874
+ },
2875
+ side,
2876
+ children: [
2877
+ /* @__PURE__ */ jsxs18(SheetHeader, { className: "sr-only", children: [
2878
+ /* @__PURE__ */ jsx37(SheetTitle, { children: "Sidebar" }),
2879
+ /* @__PURE__ */ jsx37(SheetDescription, { children: "Displays the mobile sidebar." })
2880
+ ] }),
2881
+ /* @__PURE__ */ jsx37("div", { className: "flex flex-col size-full", children })
2882
+ ]
2883
+ }
2884
+ ) });
2885
+ }
2886
+ return /* @__PURE__ */ jsxs18(
2887
+ "div",
2888
+ {
2889
+ ref,
2890
+ className: "group peer hidden text-sidebar-foreground md:block",
2891
+ "data-state": state,
2892
+ "data-collapsible": state === "collapsed" ? collapsible : "",
2893
+ "data-variant": variant,
2894
+ "data-side": side,
2895
+ children: [
2896
+ /* @__PURE__ */ jsx37(
2897
+ "div",
2898
+ {
2899
+ className: cn(
2900
+ "relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear",
2901
+ "group-data-[collapsible=offcanvas]:w-0",
2902
+ "group-data-[side=right]:rotate-180",
2903
+ variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)"
2904
+ )
2905
+ }
2906
+ ),
2907
+ /* @__PURE__ */ jsx37(
2908
+ "div",
2909
+ {
2910
+ className: cn(
2911
+ "fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex",
2912
+ side === "left" ? "left-0 group-data-[collapsible=offcanvas]:-left-(--sidebar-width)" : "right-0 group-data-[collapsible=offcanvas]:-right-(--sidebar-width)",
2913
+ // Adjust the padding for floating and inset variants.
2914
+ variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",
2915
+ className
2916
+ ),
2917
+ ...props,
2918
+ children: /* @__PURE__ */ jsx37(
2919
+ "div",
2920
+ {
2921
+ "data-sidebar": "sidebar",
2922
+ className: "flex flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow size-full",
2923
+ children
2924
+ }
2925
+ )
2926
+ }
2927
+ )
2928
+ ]
2929
+ }
2930
+ );
2931
+ }
2932
+ );
2933
+ Sidebar.displayName = "Sidebar";
2934
+ var SidebarTrigger = React35.forwardRef(({ className, onClick, ...props }, ref) => {
2935
+ const { toggleSidebar } = useSidebar();
2936
+ return /* @__PURE__ */ jsxs18(
2937
+ Button,
2938
+ {
2939
+ ref,
2940
+ "data-sidebar": "trigger",
2941
+ variant: "ghost",
2942
+ size: "icon",
2943
+ className: cn("size-7", className),
2944
+ onClick: (event) => {
2945
+ onClick?.(event);
2946
+ toggleSidebar();
2947
+ },
2948
+ ...props,
2949
+ children: [
2950
+ /* @__PURE__ */ jsx37(PanelLeft, {}),
2951
+ /* @__PURE__ */ jsx37("span", { className: "sr-only", children: "Toggle Sidebar" })
2952
+ ]
2953
+ }
2954
+ );
2955
+ });
2956
+ SidebarTrigger.displayName = "SidebarTrigger";
2957
+ var SidebarRail = React35.forwardRef(({ className, ...props }, ref) => {
2958
+ const { toggleSidebar } = useSidebar();
2959
+ return /* @__PURE__ */ jsx37(
2960
+ "button",
2961
+ {
2962
+ ref,
2963
+ "data-sidebar": "rail",
2964
+ "aria-label": "Toggle Sidebar",
2965
+ tabIndex: -1,
2966
+ onClick: toggleSidebar,
2967
+ title: "Toggle Sidebar",
2968
+ className: cn(
2969
+ "absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex",
2970
+ "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize",
2971
+ "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
2972
+ "group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar",
2973
+ "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
2974
+ "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
2975
+ className
2976
+ ),
2977
+ ...props
2978
+ }
2979
+ );
2980
+ });
2981
+ SidebarRail.displayName = "SidebarRail";
2982
+ var SidebarInset = React35.forwardRef(({ className, ...props }, ref) => {
2983
+ return /* @__PURE__ */ jsx37(
2984
+ "main",
2985
+ {
2986
+ ref,
2987
+ className: cn(
2988
+ "relative flex w-full flex-1 flex-col bg-background",
2989
+ "md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow",
2990
+ className
2991
+ ),
2992
+ ...props
2993
+ }
2994
+ );
2995
+ });
2996
+ SidebarInset.displayName = "SidebarInset";
2997
+ var SidebarInput = React35.forwardRef(({ className, ...props }, ref) => {
2998
+ return /* @__PURE__ */ jsx37(
2999
+ Input,
3000
+ {
3001
+ ref,
3002
+ "data-sidebar": "input",
3003
+ className: cn(
3004
+ "h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",
3005
+ className
3006
+ ),
3007
+ ...props
3008
+ }
3009
+ );
3010
+ });
3011
+ SidebarInput.displayName = "SidebarInput";
3012
+ var SidebarHeader = React35.forwardRef(({ className, ...props }, ref) => {
3013
+ return /* @__PURE__ */ jsx37(
3014
+ "div",
3015
+ {
3016
+ ref,
3017
+ "data-sidebar": "header",
3018
+ className: cn("flex flex-col gap-2 p-2", className),
3019
+ ...props
3020
+ }
3021
+ );
3022
+ });
3023
+ SidebarHeader.displayName = "SidebarHeader";
3024
+ var SidebarFooter = React35.forwardRef(({ className, ...props }, ref) => {
3025
+ return /* @__PURE__ */ jsx37(
3026
+ "div",
3027
+ {
3028
+ ref,
3029
+ "data-sidebar": "footer",
3030
+ className: cn("flex flex-col gap-2 p-2", className),
3031
+ ...props
3032
+ }
3033
+ );
3034
+ });
3035
+ SidebarFooter.displayName = "SidebarFooter";
3036
+ var SidebarSeparator = React35.forwardRef(({ className, ...props }, ref) => {
3037
+ return /* @__PURE__ */ jsx37(
3038
+ Separator6,
3039
+ {
3040
+ ref,
3041
+ "data-sidebar": "separator",
3042
+ className: cn("mx-2 w-auto bg-sidebar-border", className),
3043
+ ...props
3044
+ }
3045
+ );
3046
+ });
3047
+ SidebarSeparator.displayName = "SidebarSeparator";
3048
+ var SidebarContent = React35.forwardRef(({ className, ...props }, ref) => {
3049
+ return /* @__PURE__ */ jsx37(
3050
+ "div",
3051
+ {
3052
+ ref,
3053
+ "data-sidebar": "content",
3054
+ className: cn(
3055
+ "flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",
3056
+ className
3057
+ ),
3058
+ ...props
3059
+ }
3060
+ );
3061
+ });
3062
+ SidebarContent.displayName = "SidebarContent";
3063
+ var SidebarGroup = React35.forwardRef(({ className, ...props }, ref) => {
3064
+ return /* @__PURE__ */ jsx37(
3065
+ "div",
3066
+ {
3067
+ ref,
3068
+ "data-sidebar": "group",
3069
+ className: cn("relative flex w-full min-w-0 flex-col p-2", className),
3070
+ ...props
3071
+ }
3072
+ );
3073
+ });
3074
+ SidebarGroup.displayName = "SidebarGroup";
3075
+ var SidebarGroupLabel = React35.forwardRef(({ className, asChild = false, ...props }, ref) => {
3076
+ const Comp = asChild ? Slot4 : "div";
3077
+ return /* @__PURE__ */ jsx37(
3078
+ Comp,
3079
+ {
3080
+ ref,
3081
+ "data-sidebar": "group-label",
3082
+ className: cn(
3083
+ "flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
3084
+ "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",
3085
+ className
3086
+ ),
3087
+ ...props
3088
+ }
3089
+ );
3090
+ });
3091
+ SidebarGroupLabel.displayName = "SidebarGroupLabel";
3092
+ var SidebarGroupAction = React35.forwardRef(({ className, asChild = false, ...props }, ref) => {
3093
+ const Comp = asChild ? Slot4 : "button";
3094
+ return /* @__PURE__ */ jsx37(
3095
+ Comp,
3096
+ {
3097
+ ref,
3098
+ "data-sidebar": "group-action",
3099
+ className: cn(
3100
+ "absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring cursor-pointer transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
3101
+ // Increases the hit area of the button on mobile.
3102
+ "after:absolute after:-inset-2 after:md:hidden",
3103
+ "group-data-[collapsible=icon]:hidden",
3104
+ className
3105
+ ),
3106
+ ...props
3107
+ }
3108
+ );
3109
+ });
3110
+ SidebarGroupAction.displayName = "SidebarGroupAction";
3111
+ var SidebarGroupContent = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx37(
3112
+ "div",
3113
+ {
3114
+ ref,
3115
+ "data-sidebar": "group-content",
3116
+ className: cn("w-full text-sm", className),
3117
+ ...props
3118
+ }
3119
+ ));
3120
+ SidebarGroupContent.displayName = "SidebarGroupContent";
3121
+ var SidebarMenu = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx37(
3122
+ "ul",
3123
+ {
3124
+ ref,
3125
+ "data-sidebar": "menu",
3126
+ className: cn("flex w-full min-w-0 flex-col gap-1", className),
3127
+ ...props
3128
+ }
3129
+ ));
3130
+ SidebarMenu.displayName = "SidebarMenu";
3131
+ var SidebarMenuItem = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx37(
3132
+ "li",
3133
+ {
3134
+ ref,
3135
+ "data-sidebar": "menu-item",
3136
+ className: cn("group/menu-item relative", className),
3137
+ ...props
3138
+ }
3139
+ ));
3140
+ SidebarMenuItem.displayName = "SidebarMenuItem";
3141
+ var sidebarMenuButtonVariants = cva7(
3142
+ "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring cursor-pointer transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
3143
+ {
3144
+ variants: {
3145
+ variant: {
3146
+ default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
3147
+ outline: "bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]"
3148
+ },
3149
+ size: {
3150
+ default: "h-8 text-sm",
3151
+ sm: "h-7 text-xs",
3152
+ lg: "h-12 text-sm group-data-[collapsible=icon]:p-0!"
3153
+ }
3154
+ },
3155
+ defaultVariants: {
3156
+ variant: "default",
3157
+ size: "default"
3158
+ }
3159
+ }
3160
+ );
3161
+ var SidebarMenuButton = React35.forwardRef(
3162
+ ({
3163
+ asChild = false,
3164
+ isActive = false,
3165
+ variant = "default",
3166
+ size = "default",
3167
+ tooltip,
3168
+ className,
3169
+ ...props
3170
+ }, ref) => {
3171
+ const Comp = asChild ? Slot4 : "button";
3172
+ const { isMobile, state } = useSidebar();
3173
+ const button = /* @__PURE__ */ jsx37(
3174
+ Comp,
3175
+ {
3176
+ ref,
3177
+ "data-sidebar": "menu-button",
3178
+ "data-size": size,
3179
+ "data-active": isActive,
3180
+ className: cn(sidebarMenuButtonVariants({ variant, size }), className),
3181
+ ...props
3182
+ }
3183
+ );
3184
+ if (!tooltip) {
3185
+ return button;
3186
+ }
3187
+ if (typeof tooltip === "string") {
3188
+ tooltip = {
3189
+ children: tooltip
3190
+ };
3191
+ }
3192
+ return /* @__PURE__ */ jsxs18(Tooltip2, { children: [
3193
+ /* @__PURE__ */ jsx37(TooltipTrigger, { asChild: true, children: button }),
3194
+ /* @__PURE__ */ jsx37(
3195
+ TooltipContent,
3196
+ {
3197
+ side: "right",
3198
+ align: "center",
3199
+ hidden: state !== "collapsed" || isMobile,
3200
+ ...tooltip
3201
+ }
3202
+ )
3203
+ ] });
3204
+ }
3205
+ );
3206
+ SidebarMenuButton.displayName = "SidebarMenuButton";
3207
+ var SidebarMenuAction = React35.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
3208
+ const Comp = asChild ? Slot4 : "button";
3209
+ return /* @__PURE__ */ jsx37(
3210
+ Comp,
3211
+ {
3212
+ ref,
3213
+ "data-sidebar": "menu-action",
3214
+ className: cn(
3215
+ "absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring cursor-pointer transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0",
3216
+ // Increases the hit area of the button on mobile.
3217
+ "after:absolute after:-inset-2 after:md:hidden",
3218
+ "peer-data-[size=sm]/menu-button:top-1",
3219
+ "peer-data-[size=default]/menu-button:top-1.5",
3220
+ "peer-data-[size=lg]/menu-button:top-2.5",
3221
+ "group-data-[collapsible=icon]:hidden",
3222
+ showOnHover && "group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0",
3223
+ className
3224
+ ),
3225
+ ...props
3226
+ }
3227
+ );
3228
+ });
3229
+ SidebarMenuAction.displayName = "SidebarMenuAction";
3230
+ var SidebarMenuBadge = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx37(
3231
+ "div",
3232
+ {
3233
+ ref,
3234
+ "data-sidebar": "menu-badge",
3235
+ className: cn(
3236
+ "pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground",
3237
+ "peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground",
3238
+ "peer-data-[size=sm]/menu-button:top-1",
3239
+ "peer-data-[size=default]/menu-button:top-1.5",
3240
+ "peer-data-[size=lg]/menu-button:top-2.5",
3241
+ "group-data-[collapsible=icon]:hidden",
3242
+ className
3243
+ ),
3244
+ ...props
3245
+ }
3246
+ ));
3247
+ SidebarMenuBadge.displayName = "SidebarMenuBadge";
3248
+ var SidebarMenuSkeleton = React35.forwardRef(({ className, showIcon = false, ...props }, ref) => {
3249
+ const width = React35.useMemo(() => {
3250
+ return `${Math.floor(Math.random() * 40) + 50}%`;
3251
+ }, []);
3252
+ return /* @__PURE__ */ jsxs18(
3253
+ "div",
3254
+ {
3255
+ ref,
3256
+ "data-sidebar": "menu-skeleton",
3257
+ className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
3258
+ ...props,
3259
+ children: [
3260
+ showIcon && /* @__PURE__ */ jsx37(
3261
+ Skeleton,
3262
+ {
3263
+ className: "size-4 rounded-md",
3264
+ "data-sidebar": "menu-skeleton-icon"
3265
+ }
3266
+ ),
3267
+ /* @__PURE__ */ jsx37(
3268
+ Skeleton,
3269
+ {
3270
+ className: "h-4 max-w-(--skeleton-width) flex-1",
3271
+ "data-sidebar": "menu-skeleton-text",
3272
+ style: {
3273
+ "--skeleton-width": width
3274
+ }
3275
+ }
3276
+ )
3277
+ ]
3278
+ }
3279
+ );
3280
+ });
3281
+ SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
3282
+ var SidebarMenuSub = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx37(
3283
+ "ul",
3284
+ {
3285
+ ref,
3286
+ "data-sidebar": "menu-sub",
3287
+ className: cn(
3288
+ "mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5",
3289
+ "group-data-[collapsible=icon]:hidden",
3290
+ className
3291
+ ),
3292
+ ...props
3293
+ }
3294
+ ));
3295
+ SidebarMenuSub.displayName = "SidebarMenuSub";
3296
+ var SidebarMenuSubItem = React35.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx37("li", { ref, ...props }));
3297
+ SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
3298
+ var SidebarMenuSubButton = React35.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
3299
+ const Comp = asChild ? Slot4 : "a";
3300
+ return /* @__PURE__ */ jsx37(
3301
+ Comp,
3302
+ {
3303
+ ref,
3304
+ "data-sidebar": "menu-sub-button",
3305
+ "data-size": size,
3306
+ "data-active": isActive,
3307
+ className: cn(
3308
+ "flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring cursor-pointer hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground",
3309
+ "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",
3310
+ size === "sm" && "text-xs",
3311
+ size === "md" && "text-sm",
3312
+ "group-data-[collapsible=icon]:hidden",
3313
+ className
3314
+ ),
3315
+ ...props
3316
+ }
3317
+ );
3318
+ });
3319
+ SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
3320
+
3321
+ // src/components/slider.tsx
3322
+ import * as React36 from "react";
3323
+ import * as SliderPrimitive from "@radix-ui/react-slider";
3324
+ import { jsx as jsx38, jsxs as jsxs19 } from "react/jsx-runtime";
3325
+ var Slider = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs19(
3326
+ SliderPrimitive.Root,
3327
+ {
3328
+ ref,
3329
+ className: cn(
3330
+ "relative flex w-full touch-none select-none items-center",
3331
+ className
3332
+ ),
3333
+ ...props,
3334
+ children: [
3335
+ /* @__PURE__ */ jsx38(SliderPrimitive.Track, { className: "relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20", children: /* @__PURE__ */ jsx38(SliderPrimitive.Range, { className: "absolute h-full bg-primary" }) }),
3336
+ /* @__PURE__ */ jsx38(SliderPrimitive.Thumb, { className: "block rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 size-4" })
3337
+ ]
3338
+ }
3339
+ ));
3340
+ Slider.displayName = SliderPrimitive.Root.displayName;
3341
+
3342
+ // src/components/sonner.tsx
3343
+ import { Toaster as Sonner, toast } from "sonner";
3344
+ import { jsx as jsx39 } from "react/jsx-runtime";
3345
+ var Toaster = ({ ...props }) => {
3346
+ return /* @__PURE__ */ jsx39(
3347
+ Sonner,
3348
+ {
3349
+ className: "toaster group",
3350
+ toastOptions: {
3351
+ classNames: {
3352
+ toast: "group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",
3353
+ description: "group-[.toast]:text-muted-foreground",
3354
+ actionButton: "group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",
3355
+ cancelButton: "group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"
3356
+ }
3357
+ },
3358
+ ...props
3359
+ }
3360
+ );
3361
+ };
3362
+
3363
+ // src/components/switch.tsx
3364
+ import * as React37 from "react";
3365
+ import * as SwitchPrimitives from "@radix-ui/react-switch";
3366
+ import { jsx as jsx40 } from "react/jsx-runtime";
3367
+ var Switch = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx40(
3368
+ SwitchPrimitives.Root,
3369
+ {
3370
+ className: cn(
3371
+ "peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm 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",
3372
+ className
3373
+ ),
3374
+ ...props,
3375
+ ref,
3376
+ children: /* @__PURE__ */ jsx40(
3377
+ SwitchPrimitives.Thumb,
3378
+ {
3379
+ className: cn(
3380
+ "pointer-events-none block rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0 size-4"
3381
+ )
3382
+ }
3383
+ )
3384
+ }
3385
+ ));
3386
+ Switch.displayName = SwitchPrimitives.Root.displayName;
3387
+
3388
+ // src/components/table.tsx
3389
+ import * as React38 from "react";
3390
+ import { jsx as jsx41 } from "react/jsx-runtime";
3391
+ var Table = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx41("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ jsx41(
3392
+ "table",
3393
+ {
3394
+ ref,
3395
+ className: cn("w-full caption-bottom text-sm", className),
3396
+ ...props
3397
+ }
3398
+ ) }));
3399
+ Table.displayName = "Table";
3400
+ var TableHeader = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx41("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
3401
+ TableHeader.displayName = "TableHeader";
3402
+ var TableBody = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
3403
+ "tbody",
3404
+ {
3405
+ ref,
3406
+ className: cn("[&_tr:last-child]:border-0", className),
3407
+ ...props
3408
+ }
3409
+ ));
3410
+ TableBody.displayName = "TableBody";
3411
+ var TableFooter = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
3412
+ "tfoot",
3413
+ {
3414
+ ref,
3415
+ className: cn(
3416
+ "border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",
3417
+ className
3418
+ ),
3419
+ ...props
3420
+ }
3421
+ ));
3422
+ TableFooter.displayName = "TableFooter";
3423
+ var TableRow = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
3424
+ "tr",
3425
+ {
3426
+ ref,
3427
+ className: cn(
3428
+ "border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",
3429
+ className
3430
+ ),
3431
+ ...props
3432
+ }
3433
+ ));
3434
+ TableRow.displayName = "TableRow";
3435
+ var TableHead = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
3436
+ "th",
3437
+ {
3438
+ ref,
3439
+ className: cn(
3440
+ "h-10 px-2 text-left align-middle font-medium text-muted-foreground has-[[role=checkbox]]:pr-0 *:[[role=checkbox]]:translate-y-[2px]",
3441
+ className
3442
+ ),
3443
+ ...props
3444
+ }
3445
+ ));
3446
+ TableHead.displayName = "TableHead";
3447
+ var TableCell = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
3448
+ "td",
3449
+ {
3450
+ ref,
3451
+ className: cn(
3452
+ "p-2 align-middle has-[[role=checkbox]]:pr-0 *:[[role=checkbox]]:translate-y-[2px]",
3453
+ className
3454
+ ),
3455
+ ...props
3456
+ }
3457
+ ));
3458
+ TableCell.displayName = "TableCell";
3459
+ var TableCaption = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
3460
+ "caption",
3461
+ {
3462
+ ref,
3463
+ className: cn("mt-4 text-sm text-muted-foreground", className),
3464
+ ...props
3465
+ }
3466
+ ));
3467
+ TableCaption.displayName = "TableCaption";
3468
+
3469
+ // src/components/tabs.tsx
3470
+ import * as React39 from "react";
3471
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
3472
+ import { jsx as jsx42 } from "react/jsx-runtime";
3473
+ var Tabs = TabsPrimitive.Root;
3474
+ var TabsList = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx42(
3475
+ TabsPrimitive.List,
3476
+ {
3477
+ ref,
3478
+ className: cn(
3479
+ "inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",
3480
+ className
3481
+ ),
3482
+ ...props
3483
+ }
3484
+ ));
3485
+ TabsList.displayName = TabsPrimitive.List.displayName;
3486
+ var TabsTrigger = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx42(
3487
+ TabsPrimitive.Trigger,
3488
+ {
3489
+ ref,
3490
+ className: cn(
3491
+ "inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background cursor-pointer 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 disabled:cursor-not-allowed data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",
3492
+ className
3493
+ ),
3494
+ ...props
3495
+ }
3496
+ ));
3497
+ TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
3498
+ var TabsContent = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx42(
3499
+ TabsPrimitive.Content,
3500
+ {
3501
+ ref,
3502
+ className: cn(
3503
+ "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
3504
+ className
3505
+ ),
3506
+ ...props
3507
+ }
3508
+ ));
3509
+ TabsContent.displayName = TabsPrimitive.Content.displayName;
3510
+
3511
+ // src/components/textarea.tsx
3512
+ import * as React40 from "react";
3513
+ import { jsx as jsx43 } from "react/jsx-runtime";
3514
+ var Textarea = React40.forwardRef(({ className, ...props }, ref) => {
3515
+ return /* @__PURE__ */ jsx43(
3516
+ "textarea",
3517
+ {
3518
+ className: cn(
3519
+ "flex min-h-15 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base 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 md:text-sm",
3520
+ className
3521
+ ),
3522
+ ref,
3523
+ ...props
3524
+ }
3525
+ );
3526
+ });
3527
+ Textarea.displayName = "Textarea";
3528
+
3529
+ // src/components/toggle-group.tsx
3530
+ import * as React42 from "react";
3531
+ import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
3532
+
3533
+ // src/components/toggle.tsx
3534
+ import * as React41 from "react";
3535
+ import * as TogglePrimitive from "@radix-ui/react-toggle";
3536
+ import { cva as cva8 } from "class-variance-authority";
3537
+ import { jsx as jsx44 } from "react/jsx-runtime";
3538
+ var toggleVariants = cva8(
3539
+ "inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium cursor-pointer transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
3540
+ {
3541
+ variants: {
3542
+ variant: {
3543
+ default: "bg-transparent",
3544
+ outline: "border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground"
3545
+ },
3546
+ size: {
3547
+ default: "h-9 px-2 min-w-9",
3548
+ sm: "h-8 px-1.5 min-w-8",
3549
+ lg: "h-10 px-2.5 min-w-10"
3550
+ }
3551
+ },
3552
+ defaultVariants: {
3553
+ variant: "default",
3554
+ size: "default"
3555
+ }
3556
+ }
3557
+ );
3558
+ var Toggle = React41.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx44(
3559
+ TogglePrimitive.Root,
3560
+ {
3561
+ ref,
3562
+ className: cn(toggleVariants({ variant, size, className })),
3563
+ ...props
3564
+ }
3565
+ ));
3566
+ Toggle.displayName = TogglePrimitive.Root.displayName;
3567
+
3568
+ // src/components/toggle-group.tsx
3569
+ import { jsx as jsx45 } from "react/jsx-runtime";
3570
+ var ToggleGroupContext = React42.createContext({
3571
+ size: "default",
3572
+ variant: "default"
3573
+ });
3574
+ var ToggleGroup = React42.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx45(
3575
+ ToggleGroupPrimitive.Root,
3576
+ {
3577
+ ref,
3578
+ className: cn("flex items-center justify-center gap-1", className),
3579
+ ...props,
3580
+ children: /* @__PURE__ */ jsx45(ToggleGroupContext.Provider, { value: { variant, size }, children })
3581
+ }
3582
+ ));
3583
+ ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
3584
+ var ToggleGroupItem = React42.forwardRef(({ className, children, variant, size, ...props }, ref) => {
3585
+ const context = React42.useContext(ToggleGroupContext);
3586
+ return /* @__PURE__ */ jsx45(
3587
+ ToggleGroupPrimitive.Item,
3588
+ {
3589
+ ref,
3590
+ className: cn(
3591
+ toggleVariants({
3592
+ variant: context.variant || variant,
3593
+ size: context.size || size
3594
+ }),
3595
+ className
3596
+ ),
3597
+ ...props,
3598
+ children
3599
+ }
3600
+ );
3601
+ });
3602
+ ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
3603
+
3604
+ // src/components/panel.tsx
3605
+ import * as React43 from "react";
3606
+ import { jsx as jsx46, jsxs as jsxs20 } from "react/jsx-runtime";
3607
+ var Panel2 = React43.forwardRef(
3608
+ ({ title, meta, children, className, ...props }, ref) => {
3609
+ return /* @__PURE__ */ jsxs20(
3610
+ "section",
3611
+ {
3612
+ ref,
3613
+ className: cn("rounded-lg border border-border bg-card p-4", className),
3614
+ ...props,
3615
+ children: [
3616
+ title ? /* @__PURE__ */ jsxs20("div", { className: "mb-3 flex items-center gap-2", children: [
3617
+ /* @__PURE__ */ jsx46("h2", { className: "font-display text-sm font-semibold", children: title }),
3618
+ meta ? /* @__PURE__ */ jsx46("div", { className: "ml-auto font-mono text-[10px] text-muted-foreground", children: meta }) : null
3619
+ ] }) : null,
3620
+ children
3621
+ ]
3622
+ }
3623
+ );
3624
+ }
3625
+ );
3626
+ Panel2.displayName = "Panel";
3627
+
3628
+ // src/components/status-chip.tsx
3629
+ import * as React44 from "react";
3630
+ import { jsx as jsx47, jsxs as jsxs21 } from "react/jsx-runtime";
3631
+ var statusTone = {
3632
+ active: "border-primary/30 bg-primary/10 text-primary",
3633
+ running: "border-primary/30 bg-primary/10 text-primary",
3634
+ completed: "border-border bg-secondary text-muted-foreground",
3635
+ done: "border-border bg-secondary text-muted-foreground",
3636
+ indexed: "border-primary/30 bg-primary/10 text-primary",
3637
+ enabled: "border-primary/30 bg-primary/10 text-primary",
3638
+ available: "border-primary/30 bg-primary/10 text-primary",
3639
+ published: "border-primary/30 bg-primary/10 text-primary",
3640
+ ok: "border-primary/30 bg-primary/10 text-primary",
3641
+ waiting: "border-warning/35 bg-warning/10 text-warning",
3642
+ paused: "border-warning/35 bg-warning/10 text-warning",
3643
+ processing: "border-warning/35 bg-warning/10 text-warning",
3644
+ degraded: "border-warning/35 bg-warning/10 text-warning",
3645
+ warn: "border-warning/35 bg-warning/10 text-warning",
3646
+ "requires-approval": "border-warning/35 bg-warning/10 text-warning",
3647
+ draft: "border-warning/35 bg-warning/10 text-warning",
3648
+ failed: "border-destructive/35 bg-destructive/10 text-destructive",
3649
+ error: "border-destructive/35 bg-destructive/10 text-destructive",
3650
+ offline: "border-destructive/35 bg-destructive/10 text-destructive"
3651
+ };
3652
+ var StatusChip = React44.forwardRef(
3653
+ ({ status, className, ...props }, ref) => {
3654
+ return /* @__PURE__ */ jsxs21(
3655
+ "span",
3656
+ {
3657
+ ref,
3658
+ className: cn(
3659
+ "inline-flex items-center gap-1.5 rounded-md border px-2 py-0.5 font-mono text-[10px]",
3660
+ statusTone[status] ?? "border-border bg-secondary text-muted-foreground",
3661
+ className
3662
+ ),
3663
+ ...props,
3664
+ children: [
3665
+ /* @__PURE__ */ jsx47("span", { className: "size-1.5 rounded-full bg-current" }),
3666
+ status
3667
+ ]
3668
+ }
3669
+ );
3670
+ }
3671
+ );
3672
+ StatusChip.displayName = "StatusChip";
3673
+
3674
+ // src/components/date-picker.tsx
3675
+ import * as React45 from "react";
3676
+ import { format } from "date-fns";
3677
+ import { Calendar as CalendarIcon } from "lucide-react";
3678
+ import { jsx as jsx48, jsxs as jsxs22 } from "react/jsx-runtime";
3679
+ function DatePicker({
3680
+ value,
3681
+ onChange,
3682
+ placeholder = "Pick a date",
3683
+ className,
3684
+ disabled
3685
+ }) {
3686
+ const date = React45.useMemo(() => {
3687
+ if (!value) return void 0;
3688
+ const parts = value.split("-");
3689
+ if (parts.length !== 3) {
3690
+ const d = new Date(value);
3691
+ return isNaN(d.getTime()) ? void 0 : d;
3692
+ }
3693
+ const year = parseInt(parts[0], 10);
3694
+ const month = parseInt(parts[1], 10) - 1;
3695
+ const day = parseInt(parts[2], 10);
3696
+ return new Date(year, month, day, 12, 0, 0);
3697
+ }, [value]);
3698
+ return /* @__PURE__ */ jsxs22(Popover, { children: [
3699
+ /* @__PURE__ */ jsx48(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs22(
3700
+ Button,
3701
+ {
3702
+ variant: "outline",
3703
+ type: "button",
3704
+ disabled,
3705
+ className: cn(
3706
+ "border-border/80 bg-secondary/40 hover:bg-secondary/60 hover:text-foreground h-9 w-full justify-start text-left font-normal",
3707
+ !value && "text-muted-foreground",
3708
+ className
3709
+ ),
3710
+ children: [
3711
+ /* @__PURE__ */ jsx48(CalendarIcon, { className: "mr-2 size-4" }),
3712
+ date && !isNaN(date.getTime()) ? format(date, "PPP") : /* @__PURE__ */ jsx48("span", { children: placeholder })
3713
+ ]
3714
+ }
3715
+ ) }),
3716
+ /* @__PURE__ */ jsx48(PopoverContent, { className: "w-auto p-0", align: "start", children: /* @__PURE__ */ jsx48(
3717
+ Calendar,
3718
+ {
3719
+ mode: "single",
3720
+ selected: date,
3721
+ onSelect: (selectedDate) => onChange?.(selectedDate ? format(selectedDate, "yyyy-MM-dd") : ""),
3722
+ initialFocus: true
3723
+ }
3724
+ ) })
3725
+ ] });
3726
+ }
3727
+
3728
+ // src/components/searchable-select.tsx
3729
+ import * as React46 from "react";
3730
+ import { Search as Search2, Plus, Check as Check6, ChevronDown as ChevronDown4 } from "lucide-react";
3731
+ import { jsx as jsx49, jsxs as jsxs23 } from "react/jsx-runtime";
3732
+ function SearchableSelect({
3733
+ options,
3734
+ value,
3735
+ onChange,
3736
+ placeholder = "Select an option...",
3737
+ searchPlaceholder = "Search...",
3738
+ onAddNew,
3739
+ addNewLabel = "Add new",
3740
+ disabled = false,
3741
+ className,
3742
+ id
3743
+ }) {
3744
+ const [open, setOpen] = React46.useState(false);
3745
+ const [search, setSearch] = React46.useState("");
3746
+ const [highlightedIndex, setHighlightedIndex] = React46.useState(0);
3747
+ const listRef = React46.useRef(null);
3748
+ const selectedOption = React46.useMemo(() => {
3749
+ return options.find((opt) => opt.value === value);
3750
+ }, [options, value]);
3751
+ const filteredOptions = React46.useMemo(() => {
3752
+ if (!search.trim()) return options;
3753
+ const q = search.toLowerCase();
3754
+ return options.filter(
3755
+ (opt) => opt.label.toLowerCase().includes(q) || opt.group && opt.group.toLowerCase().includes(q)
3756
+ );
3757
+ }, [options, search]);
3758
+ const handleOpenChange = (newOpen) => {
3759
+ setOpen(newOpen);
3760
+ if (newOpen) {
3761
+ const idx = filteredOptions.findIndex((opt) => opt.value === value);
3762
+ setHighlightedIndex(idx >= 0 ? idx : 0);
3763
+ } else {
3764
+ setSearch("");
3765
+ }
3766
+ };
3767
+ const handleSearchChange = (newSearch) => {
3768
+ setSearch(newSearch);
3769
+ setHighlightedIndex(0);
3770
+ };
3771
+ React46.useEffect(() => {
3772
+ if (open && listRef.current) {
3773
+ const activeEl = listRef.current.querySelector(
3774
+ "[data-highlighted='true']"
3775
+ );
3776
+ if (activeEl) {
3777
+ activeEl.scrollIntoView({ block: "nearest" });
3778
+ }
3779
+ }
3780
+ }, [highlightedIndex, open]);
3781
+ const groupedOptions = React46.useMemo(() => {
3782
+ const hasGroups = filteredOptions.some((opt) => opt.group);
3783
+ if (!hasGroups) return { Default: filteredOptions };
3784
+ return filteredOptions.reduce(
3785
+ (acc, opt) => {
3786
+ const g = opt.group || "Other";
3787
+ if (!acc[g]) acc[g] = [];
3788
+ acc[g].push(opt);
3789
+ return acc;
3790
+ },
3791
+ {}
3792
+ );
3793
+ }, [filteredOptions]);
3794
+ const handleSelect = (val) => {
3795
+ onChange?.(val);
3796
+ setOpen(false);
3797
+ setSearch("");
3798
+ };
3799
+ const handleAddNew = () => {
3800
+ onAddNew?.(search.trim());
3801
+ setOpen(false);
3802
+ setSearch("");
3803
+ };
3804
+ const handleKeyDown = (e) => {
3805
+ if (!open) {
3806
+ if (e.key === "ArrowDown" || e.key === "Enter" || e.key === " ") {
3807
+ e.preventDefault();
3808
+ handleOpenChange(true);
3809
+ }
3810
+ return;
3811
+ }
3812
+ switch (e.key) {
3813
+ case "ArrowDown":
3814
+ e.preventDefault();
3815
+ setHighlightedIndex(
3816
+ (prev) => prev < filteredOptions.length - 1 ? prev + 1 : prev
3817
+ );
3818
+ break;
3819
+ case "ArrowUp":
3820
+ e.preventDefault();
3821
+ setHighlightedIndex((prev) => prev > 0 ? prev - 1 : 0);
3822
+ break;
3823
+ case "Enter":
3824
+ e.preventDefault();
3825
+ if (filteredOptions.length > 0 && filteredOptions[highlightedIndex]) {
3826
+ handleSelect(filteredOptions[highlightedIndex].value);
3827
+ } else if (onAddNew && search.trim()) {
3828
+ handleAddNew();
3829
+ }
3830
+ break;
3831
+ case "Escape":
3832
+ case "Tab":
3833
+ e.preventDefault();
3834
+ handleOpenChange(false);
3835
+ break;
3836
+ }
3837
+ };
3838
+ let currentIndex = 0;
3839
+ return /* @__PURE__ */ jsxs23(Popover, { open, onOpenChange: handleOpenChange, children: [
3840
+ /* @__PURE__ */ jsx49(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs23(
3841
+ Button,
3842
+ {
3843
+ id,
3844
+ variant: "outline",
3845
+ role: "combobox",
3846
+ "aria-expanded": open,
3847
+ disabled,
3848
+ onKeyDown: handleKeyDown,
3849
+ className: cn(
3850
+ "bg-background border-input hover:bg-accent/50 h-9 w-full justify-between px-3 text-left font-normal",
3851
+ !selectedOption && "text-muted-foreground",
3852
+ className
3853
+ ),
3854
+ children: [
3855
+ /* @__PURE__ */ jsx49("span", { className: "truncate", children: selectedOption ? selectedOption.label : placeholder }),
3856
+ /* @__PURE__ */ jsx49(ChevronDown4, { className: "ml-2 size-4 shrink-0 opacity-50" })
3857
+ ]
3858
+ }
3859
+ ) }),
3860
+ /* @__PURE__ */ jsxs23(
3861
+ PopoverContent,
3862
+ {
3863
+ align: "start",
3864
+ className: "border-border bg-popover w-(--radix-popover-trigger-width) min-w-55 border p-0 shadow-lg",
3865
+ onKeyDown: handleKeyDown,
3866
+ children: [
3867
+ /* @__PURE__ */ jsxs23("div", { className: "border-border flex items-center gap-2 border-b p-2", children: [
3868
+ /* @__PURE__ */ jsx49(Search2, { className: "text-muted-foreground size-4 shrink-0 opacity-50" }),
3869
+ /* @__PURE__ */ jsx49(
3870
+ Input,
3871
+ {
3872
+ placeholder: searchPlaceholder,
3873
+ value: search,
3874
+ onChange: (e) => handleSearchChange(e.target.value),
3875
+ className: "h-8 border-none bg-transparent px-1 text-sm focus-visible:ring-0 focus-visible:ring-offset-0",
3876
+ autoFocus: true
3877
+ }
3878
+ )
3879
+ ] }),
3880
+ /* @__PURE__ */ jsx49(
3881
+ "div",
3882
+ {
3883
+ ref: listRef,
3884
+ onWheel: (e) => e.stopPropagation(),
3885
+ className: "max-h-60 overflow-y-auto overscroll-contain p-1 text-sm",
3886
+ children: Object.keys(groupedOptions).length === 0 || filteredOptions.length === 0 && !onAddNew ? /* @__PURE__ */ jsx49("div", { className: "text-muted-foreground py-6 text-center text-xs", children: "No matching options found." }) : Object.entries(groupedOptions).map(([groupName, groupOpts]) => /* @__PURE__ */ jsxs23("div", { className: "py-1", children: [
3887
+ groupName !== "Default" && /* @__PURE__ */ jsx49("div", { className: "text-muted-foreground/70 px-2 py-1 text-[10px] font-bold tracking-wider uppercase", children: groupName }),
3888
+ groupOpts.map((option) => {
3889
+ const isSelected = option.value === value;
3890
+ const itemIndex = currentIndex++;
3891
+ const isHighlighted = itemIndex === highlightedIndex;
3892
+ return /* @__PURE__ */ jsxs23(
3893
+ "div",
3894
+ {
3895
+ "data-highlighted": isHighlighted,
3896
+ onClick: () => handleSelect(option.value),
3897
+ onMouseEnter: () => setHighlightedIndex(itemIndex),
3898
+ className: cn(
3899
+ "relative flex cursor-pointer items-center rounded-sm px-2.5 py-1.5 text-sm transition-colors outline-none select-none",
3900
+ isHighlighted && "bg-accent text-accent-foreground font-medium",
3901
+ isSelected && !isHighlighted && "bg-accent/40 text-accent-foreground font-medium"
3902
+ ),
3903
+ children: [
3904
+ /* @__PURE__ */ jsx49("span", { className: "flex-1 truncate", children: option.label }),
3905
+ isSelected && /* @__PURE__ */ jsx49(Check6, { className: "text-primary ml-2 size-4 shrink-0" })
3906
+ ]
3907
+ },
3908
+ option.value
3909
+ );
3910
+ })
3911
+ ] }, groupName))
3912
+ }
3913
+ ),
3914
+ onAddNew && /* @__PURE__ */ jsx49("div", { className: "border-border bg-muted/30 border-t p-1", children: /* @__PURE__ */ jsxs23(
3915
+ "button",
3916
+ {
3917
+ type: "button",
3918
+ onClick: handleAddNew,
3919
+ className: "text-primary hover:bg-primary/10 flex w-full items-center gap-2 rounded-sm px-2.5 py-2 text-xs font-semibold transition-colors",
3920
+ children: [
3921
+ /* @__PURE__ */ jsx49(Plus, { className: "size-3.5 shrink-0" }),
3922
+ /* @__PURE__ */ jsx49("span", { className: "truncate", children: search.trim() ? `${addNewLabel} "${search.trim()}"` : `${addNewLabel}` })
3923
+ ]
3924
+ }
3925
+ ) })
3926
+ ]
3927
+ }
3928
+ )
3929
+ ] });
3930
+ }
3931
+
3932
+ // src/components/confirm-dialog.tsx
3933
+ import { jsx as jsx50, jsxs as jsxs24 } from "react/jsx-runtime";
3934
+ function ConfirmDialog({
3935
+ open,
3936
+ onOpenChange,
3937
+ title,
3938
+ description,
3939
+ onConfirm,
3940
+ confirmText = "Confirm",
3941
+ cancelText = "Cancel",
3942
+ destructive = false
3943
+ }) {
3944
+ return /* @__PURE__ */ jsx50(AlertDialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs24(AlertDialogContent, { children: [
3945
+ /* @__PURE__ */ jsxs24(AlertDialogHeader, { children: [
3946
+ /* @__PURE__ */ jsx50(AlertDialogTitle, { children: title }),
3947
+ /* @__PURE__ */ jsx50(AlertDialogDescription, { children: description })
3948
+ ] }),
3949
+ /* @__PURE__ */ jsxs24(AlertDialogFooter, { children: [
3950
+ /* @__PURE__ */ jsx50(AlertDialogCancel, { children: cancelText }),
3951
+ /* @__PURE__ */ jsx50(
3952
+ AlertDialogAction,
3953
+ {
3954
+ onClick: onConfirm,
3955
+ className: destructive ? "bg-destructive text-destructive-foreground hover:bg-destructive/90" : "",
3956
+ children: confirmText
3957
+ }
3958
+ )
3959
+ ] })
3960
+ ] }) });
3961
+ }
3962
+
3963
+ // src/components/loading-state.tsx
3964
+ import { jsx as jsx51, jsxs as jsxs25 } from "react/jsx-runtime";
3965
+ function LoadingState({
3966
+ rows = 3,
3967
+ className,
3968
+ ...props
3969
+ }) {
3970
+ return /* @__PURE__ */ jsxs25("div", { className: cn("w-full space-y-4 p-2", className), ...props, children: [
3971
+ /* @__PURE__ */ jsx51(Skeleton, { className: "h-8 w-1/3" }),
3972
+ /* @__PURE__ */ jsx51("div", { className: "space-y-2", children: Array.from({ length: rows }).map((_, i) => /* @__PURE__ */ jsx51(Skeleton, { className: "h-16 w-full rounded-xl" }, i)) })
3973
+ ] });
3974
+ }
266
3975
  export {
267
- z as Box,
268
- Y as Button,
269
- Er as Container,
270
- w as Flex,
271
- Br as Grid,
272
- W as Input,
273
- Gr as Stack,
274
- j as Typography
3976
+ Accordion,
3977
+ AccordionContent,
3978
+ AccordionItem,
3979
+ AccordionTrigger,
3980
+ Alert,
3981
+ AlertDescription,
3982
+ AlertDialog,
3983
+ AlertDialogAction,
3984
+ AlertDialogCancel,
3985
+ AlertDialogContent,
3986
+ AlertDialogDescription,
3987
+ AlertDialogFooter,
3988
+ AlertDialogHeader,
3989
+ AlertDialogOverlay,
3990
+ AlertDialogPortal,
3991
+ AlertDialogTitle,
3992
+ AlertDialogTrigger,
3993
+ AlertTitle,
3994
+ AspectRatio,
3995
+ Avatar,
3996
+ AvatarFallback,
3997
+ AvatarImage,
3998
+ Badge,
3999
+ Breadcrumb,
4000
+ BreadcrumbEllipsis,
4001
+ BreadcrumbItem,
4002
+ BreadcrumbLink,
4003
+ BreadcrumbList,
4004
+ BreadcrumbPage,
4005
+ BreadcrumbSeparator,
4006
+ Button,
4007
+ Calendar,
4008
+ CalendarDayButton,
4009
+ Card,
4010
+ CardContent,
4011
+ CardDescription,
4012
+ CardFooter,
4013
+ CardHeader,
4014
+ CardTitle,
4015
+ Carousel,
4016
+ CarouselContent,
4017
+ CarouselItem,
4018
+ CarouselNext,
4019
+ CarouselPrevious,
4020
+ ChartContainer,
4021
+ ChartLegend,
4022
+ ChartLegendContent,
4023
+ ChartStyle,
4024
+ ChartTooltip,
4025
+ ChartTooltipContent,
4026
+ Checkbox,
4027
+ Collapsible,
4028
+ CollapsibleContent2 as CollapsibleContent,
4029
+ CollapsibleTrigger2 as CollapsibleTrigger,
4030
+ Command,
4031
+ CommandDialog,
4032
+ CommandEmpty,
4033
+ CommandGroup,
4034
+ CommandInput,
4035
+ CommandItem,
4036
+ CommandList,
4037
+ CommandSeparator,
4038
+ CommandShortcut,
4039
+ ConfirmDialog,
4040
+ ContextMenu,
4041
+ ContextMenuCheckboxItem,
4042
+ ContextMenuContent,
4043
+ ContextMenuGroup,
4044
+ ContextMenuItem,
4045
+ ContextMenuLabel,
4046
+ ContextMenuPortal,
4047
+ ContextMenuRadioGroup,
4048
+ ContextMenuRadioItem,
4049
+ ContextMenuSeparator,
4050
+ ContextMenuShortcut,
4051
+ ContextMenuSub,
4052
+ ContextMenuSubContent,
4053
+ ContextMenuSubTrigger,
4054
+ ContextMenuTrigger,
4055
+ DatePicker,
4056
+ Dialog,
4057
+ DialogClose,
4058
+ DialogContent,
4059
+ DialogDescription,
4060
+ DialogFooter,
4061
+ DialogHeader,
4062
+ DialogOverlay,
4063
+ DialogPortal,
4064
+ DialogTitle,
4065
+ DialogTrigger,
4066
+ Drawer,
4067
+ DrawerClose,
4068
+ DrawerContent,
4069
+ DrawerDescription,
4070
+ DrawerFooter,
4071
+ DrawerHeader,
4072
+ DrawerOverlay,
4073
+ DrawerPortal,
4074
+ DrawerTitle,
4075
+ DrawerTrigger,
4076
+ DropdownMenu,
4077
+ DropdownMenuCheckboxItem,
4078
+ DropdownMenuContent,
4079
+ DropdownMenuGroup,
4080
+ DropdownMenuItem,
4081
+ DropdownMenuLabel,
4082
+ DropdownMenuPortal,
4083
+ DropdownMenuRadioGroup,
4084
+ DropdownMenuRadioItem,
4085
+ DropdownMenuSeparator,
4086
+ DropdownMenuShortcut,
4087
+ DropdownMenuSub,
4088
+ DropdownMenuSubContent,
4089
+ DropdownMenuSubTrigger,
4090
+ DropdownMenuTrigger,
4091
+ Form,
4092
+ FormControl,
4093
+ FormDescription,
4094
+ FormField,
4095
+ FormItem,
4096
+ FormLabel,
4097
+ FormMessage,
4098
+ HoverCard,
4099
+ HoverCardContent,
4100
+ HoverCardTrigger,
4101
+ Input,
4102
+ InputOTP,
4103
+ InputOTPGroup,
4104
+ InputOTPSeparator,
4105
+ InputOTPSlot,
4106
+ Label3 as Label,
4107
+ LoadingState,
4108
+ Menubar,
4109
+ MenubarCheckboxItem,
4110
+ MenubarContent,
4111
+ MenubarGroup,
4112
+ MenubarItem,
4113
+ MenubarLabel,
4114
+ MenubarMenu,
4115
+ MenubarPortal,
4116
+ MenubarRadioGroup,
4117
+ MenubarRadioItem,
4118
+ MenubarSeparator,
4119
+ MenubarShortcut,
4120
+ MenubarSub,
4121
+ MenubarSubContent,
4122
+ MenubarSubTrigger,
4123
+ MenubarTrigger,
4124
+ NavigationMenu,
4125
+ NavigationMenuContent,
4126
+ NavigationMenuIndicator,
4127
+ NavigationMenuItem,
4128
+ NavigationMenuLink,
4129
+ NavigationMenuList,
4130
+ NavigationMenuTrigger,
4131
+ NavigationMenuViewport,
4132
+ Pagination,
4133
+ PaginationContent,
4134
+ PaginationEllipsis,
4135
+ PaginationItem,
4136
+ PaginationLink,
4137
+ PaginationNext,
4138
+ PaginationPrevious,
4139
+ Panel2 as Panel,
4140
+ Popover,
4141
+ PopoverAnchor,
4142
+ PopoverContent,
4143
+ PopoverTrigger,
4144
+ Progress,
4145
+ RadioGroup4 as RadioGroup,
4146
+ RadioGroupItem,
4147
+ ResizableHandle,
4148
+ ResizablePanel,
4149
+ ResizablePanelGroup,
4150
+ ScrollArea,
4151
+ ScrollBar,
4152
+ SearchableSelect,
4153
+ Select,
4154
+ SelectContent,
4155
+ SelectGroup,
4156
+ SelectItem,
4157
+ SelectLabel,
4158
+ SelectScrollDownButton,
4159
+ SelectScrollUpButton,
4160
+ SelectSeparator,
4161
+ SelectTrigger,
4162
+ SelectValue,
4163
+ Separator6 as Separator,
4164
+ Sheet,
4165
+ SheetClose,
4166
+ SheetContent,
4167
+ SheetDescription,
4168
+ SheetFooter,
4169
+ SheetHeader,
4170
+ SheetOverlay,
4171
+ SheetPortal,
4172
+ SheetTitle,
4173
+ SheetTrigger,
4174
+ Sidebar,
4175
+ SidebarContent,
4176
+ SidebarFooter,
4177
+ SidebarGroup,
4178
+ SidebarGroupAction,
4179
+ SidebarGroupContent,
4180
+ SidebarGroupLabel,
4181
+ SidebarHeader,
4182
+ SidebarInput,
4183
+ SidebarInset,
4184
+ SidebarMenu,
4185
+ SidebarMenuAction,
4186
+ SidebarMenuBadge,
4187
+ SidebarMenuButton,
4188
+ SidebarMenuItem,
4189
+ SidebarMenuSkeleton,
4190
+ SidebarMenuSub,
4191
+ SidebarMenuSubButton,
4192
+ SidebarMenuSubItem,
4193
+ SidebarProvider,
4194
+ SidebarRail,
4195
+ SidebarSeparator,
4196
+ SidebarTrigger,
4197
+ Skeleton,
4198
+ Slider,
4199
+ StatusChip,
4200
+ Switch,
4201
+ Table,
4202
+ TableBody,
4203
+ TableCaption,
4204
+ TableCell,
4205
+ TableFooter,
4206
+ TableHead,
4207
+ TableHeader,
4208
+ TableRow,
4209
+ Tabs,
4210
+ TabsContent,
4211
+ TabsList,
4212
+ TabsTrigger,
4213
+ Textarea,
4214
+ ThemeProvider,
4215
+ Toaster,
4216
+ Toggle,
4217
+ ToggleGroup,
4218
+ ToggleGroupItem,
4219
+ Tooltip2 as Tooltip,
4220
+ TooltipContent,
4221
+ TooltipProvider,
4222
+ TooltipTrigger,
4223
+ badgeVariants,
4224
+ buttonVariants,
4225
+ cn,
4226
+ navigationMenuTriggerStyle,
4227
+ toast,
4228
+ toggleVariants,
4229
+ useFormField,
4230
+ useIsMobile,
4231
+ useSidebar,
4232
+ useTheme
275
4233
  };
4234
+ //# sourceMappingURL=index.js.map