@carlonicora/nextjs-jsonapi 0.0.1

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