@evinvest/uikit 0.3.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1012,6 +1012,317 @@ function FieldError({
1012
1012
  );
1013
1013
  }
1014
1014
 
1015
+ // src/components/footer.tsx
1016
+ import * as React22 from "react";
1017
+
1018
+ // src/components/container.tsx
1019
+ import "react";
1020
+
1021
+ // src/generated/container.ts
1022
+ var CONTAINER_BASE = "mx-auto w-full max-w-[var(--page-max,90rem)] px-[var(--page-px,1rem)]";
1023
+
1024
+ // src/components/container.tsx
1025
+ import { jsx as jsx11 } from "react/jsx-runtime";
1026
+ function Container({ className, ...props }) {
1027
+ return /* @__PURE__ */ jsx11(
1028
+ "div",
1029
+ {
1030
+ "data-slot": "container",
1031
+ className: cn(CONTAINER_BASE, className),
1032
+ ...props
1033
+ }
1034
+ );
1035
+ }
1036
+
1037
+ // src/components/logo.tsx
1038
+ import "react";
1039
+ import { jsx as jsx12 } from "react/jsx-runtime";
1040
+ var LOGO_DATA_URI = "data:image/svg+xml,%3Csvg width=%22387%22 height=%22335%22 viewBox=%220 0 387 335%22 fill=%22none%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Cpath d=%22M0.120605 130.841L140.84 112.176V61.7481L156.149 65.3501V104.786L163.641 103.662V66.6599L178.625 69.607V102.353L185.791 101.043V61.0932L156.475 48.3224L119.992 60.4383V101.043L0.120605 130.841Z%22 fill=%22black%22/%3E%3Cpath d=%22M213.479 112.176L237.584 114.469L237.258 0.841309L202.078 19.8338V72.8816L213.479 78.1209V112.176Z%22 fill=%22black%22/%3E%3Cpath d=%22M240.841 0.841309L276.347 20.1612V117.743L260.711 115.778V26.3829L240.841 15.9043V0.841309Z%22 fill=%22black%22/%3E%3Cpath d=%22M284.816 118.725L386.121 127.239L304.36 109.884V74.1914L284.816 63.7128V118.725Z%22 fill=%22black%22/%3E%3Cpath d=%22M0.120605 130.841L140.84 112.176V61.7481L156.149 65.3501V104.786L163.641 103.662V66.6599L178.625 69.607V102.353L185.791 101.043V61.0932L156.475 48.3224L119.992 60.4383V101.043L0.120605 130.841Z%22 stroke=%22black%22/%3E%3Cpath d=%22M213.479 112.176L237.584 114.469L237.258 0.841309L202.078 19.8338V72.8816L213.479 78.1209V112.176Z%22 stroke=%22black%22/%3E%3Cpath d=%22M240.841 0.841309L276.347 20.1612V117.743L260.711 115.778V26.3829L240.841 15.9043V0.841309Z%22 stroke=%22black%22/%3E%3Cpath d=%22M284.816 118.725L386.121 127.239L304.36 109.884V74.1914L284.816 63.7128V118.725Z%22 stroke=%22black%22/%3E%3Cpath d=%22M25.1206 333.987H31.6206V306.987H25.1206V333.987Z%22 fill=%22black%22/%3E%3Cpath d=%22M92.6206 333.987H100.121L110.621 307.487H104.621L96.6206 325.987L88.6206 307.487H81.6206L92.6206 333.987Z%22 fill=%22black%22/%3E%3Cpath d=%22M44.6206 333.987H51.6206V318.987L65.1206 333.987H71.6206V307.487H65.1206V322.987L50.6206 307.487H44.6206V333.987Z%22 fill=%22black%22/%3E%3Cpath d=%22M120.621 333.987H142.121V329.487H127.621V322.987H140.121V318.487H127.621V312.487H142.121V307.487H120.621V333.987Z%22 fill=%22black%22/%3E%3Cpath d=%22M152.121 331.987L153.621 327.987C165.659 329.418 167.304 330.676 168.121 326.487C168.937 322.297 152.785 322.989 152.621 313.987C152.456 304.984 165.853 306.198 174.121 308.487L173.121 312.487C162.364 310.724 159.121 310.487 159.121 313.987C159.121 317.487 175.621 318.748 175.621 326.487C175.621 334.225 167.278 335.691 152.121 331.987Z%22 fill=%22black%22/%3E%3Cpath d=%22M192.621 333.987H199.621V312.487H208.621V307.487H183.621V312.487H192.621V333.987Z%22 fill=%22black%22/%3E%3Cpath d=%22M219.121 333.987H225.121V318.987L233.621 329.987H237.621L245.121 318.987V333.987L252.121 333.987V307.487H245.121L235.621 322.487L225.121 307.487H219.121V333.987Z%22 fill=%22black%22/%3E%3Cpath d=%22M265.121 333.987H286.621V329.487H272.121V322.987H284.621V318.487H272.121V312.487H286.621V307.487H265.121V333.987Z%22 fill=%22black%22/%3E%3Cpath d=%22M298.621 333.987H305.621V318.987L319.121 333.987H325.621V307.487H319.121V322.987L304.621 307.487H298.621V333.987Z%22 fill=%22black%22/%3E%3Cpath d=%22M345.121 333.987H352.121V312.487H361.121V307.487H336.121V312.487H345.121V333.987Z%22 fill=%22black%22/%3E%3Cpath d=%22M25.1206 333.987H31.6206V306.987H25.1206V333.987Z%22 stroke=%22black%22/%3E%3Cpath d=%22M92.6206 333.987H100.121L110.621 307.487H104.621L96.6206 325.987L88.6206 307.487H81.6206L92.6206 333.987Z%22 stroke=%22black%22/%3E%3Cpath d=%22M44.6206 333.987H51.6206V318.987L65.1206 333.987H71.6206V307.487H65.1206V322.987L50.6206 307.487H44.6206V333.987Z%22 stroke=%22black%22/%3E%3Cpath d=%22M120.621 333.987H142.121V329.487H127.621V322.987H140.121V318.487H127.621V312.487H142.121V307.487H120.621V333.987Z%22 stroke=%22black%22/%3E%3Cpath d=%22M152.121 331.987L153.621 327.987C165.659 329.418 167.304 330.676 168.121 326.487C168.937 322.297 152.785 322.989 152.621 313.987C152.456 304.984 165.853 306.198 174.121 308.487L173.121 312.487C162.364 310.724 159.121 310.487 159.121 313.987C159.121 317.487 175.621 318.748 175.621 326.487C175.621 334.225 167.278 335.691 152.121 331.987Z%22 stroke=%22black%22/%3E%3Cpath d=%22M192.621 333.987H199.621V312.487H208.621V307.487H183.621V312.487H192.621V333.987Z%22 stroke=%22black%22/%3E%3Cpath d=%22M219.121 333.987H225.121V318.987L233.621 329.987H237.621L245.121 318.987V333.987L252.121 333.987V307.487H245.121L235.621 322.487L225.121 307.487H219.121V333.987Z%22 stroke=%22black%22/%3E%3Cpath d=%22M265.121 333.987H286.621V329.487H272.121V322.987H284.621V318.487H272.121V312.487H286.621V307.487H265.121V333.987Z%22 stroke=%22black%22/%3E%3Cpath d=%22M298.621 333.987H305.621V318.987L319.121 333.987H325.621V307.487H319.121V322.987L304.621 307.487H298.621V333.987Z%22 stroke=%22black%22/%3E%3Cpath d=%22M345.121 333.987H352.121V312.487H361.121V307.487H336.121V312.487H345.121V333.987Z%22 stroke=%22black%22/%3E%3Cpath d=%22M232.621 276.02L166.121 145.841H204.905L255.905 246.341L306.905 145.841H345.905L279.405 276.02H232.621Z%22 fill=%22black%22 stroke=%22black%22/%3E%3Cpath d=%22M41.1206 276.02H208.336L195.73 251.341H74.8362V220.341H179.894L168.144 197.341H74.8362V170.841L154.352 170.341L141.836 145.841H41.1206V276.02Z%22 fill=%22black%22 stroke=%22black%22/%3E%3C/svg%3E";
1041
+ var LOGO_BG = "oklch(0.256 0.1 260)";
1042
+ function Logo({ className, withBackground = false, src }) {
1043
+ const maskUrl = `url("${src ?? LOGO_DATA_URI}")`;
1044
+ const maskStyle = {
1045
+ backgroundColor: "currentColor",
1046
+ maskImage: maskUrl,
1047
+ WebkitMaskImage: maskUrl,
1048
+ maskRepeat: "no-repeat",
1049
+ WebkitMaskRepeat: "no-repeat",
1050
+ maskPosition: "center",
1051
+ WebkitMaskPosition: "center",
1052
+ maskSize: "contain",
1053
+ WebkitMaskSize: "contain"
1054
+ };
1055
+ const mark = /* @__PURE__ */ jsx12(
1056
+ "span",
1057
+ {
1058
+ "data-slot": "logo",
1059
+ role: "img",
1060
+ "aria-label": "EV Investment",
1061
+ style: maskStyle,
1062
+ className: cn("inline-block", withBackground ? "w-3/5 h-3/5" : className)
1063
+ }
1064
+ );
1065
+ if (!withBackground) return mark;
1066
+ return /* @__PURE__ */ jsx12(
1067
+ "span",
1068
+ {
1069
+ "data-slot": "logo-background",
1070
+ className: cn("inline-flex items-center justify-center", className),
1071
+ style: { backgroundColor: LOGO_BG },
1072
+ children: mark
1073
+ }
1074
+ );
1075
+ }
1076
+
1077
+ // src/components/footer.tsx
1078
+ import { Fragment as Fragment2, jsx as jsx13, jsxs as jsxs3 } from "react/jsx-runtime";
1079
+ var DEFAULT_DESCRIPTION = "EV Investment is a registered real estate advisory and investment management fund specializing in premium coastal developments in Quy Nhon, Binh Dinh province, Vietnam.";
1080
+ var DEFAULT_OFFICES = [
1081
+ {
1082
+ name: "Quy Nhon Head Office",
1083
+ address: "102 An Duong Vuong St, Nguyen Van Cu Ward, Quy Nhon City, Vietnam"
1084
+ },
1085
+ {
1086
+ name: "Ho Chi Minh Representative",
1087
+ address: "Deutsches Haus, 33 Le Duan Blvd, District 1, Ho Chi Minh City, Vietnam"
1088
+ }
1089
+ ];
1090
+ var DEFAULT_LEGAL_LINKS = [
1091
+ { label: "Privacy Policy", href: "#hero" },
1092
+ { label: "Terms of Service", href: "#hero" }
1093
+ ];
1094
+ function Footer({
1095
+ nav,
1096
+ description = DEFAULT_DESCRIPTION,
1097
+ offices = DEFAULT_OFFICES,
1098
+ legalLinks = DEFAULT_LEGAL_LINKS,
1099
+ newsletter,
1100
+ newsletterBlurb = "Subscribe, to receive our macro reports",
1101
+ version,
1102
+ commitHref,
1103
+ tagline = "Quy Nhon Fund",
1104
+ linkComponent,
1105
+ children
1106
+ }) {
1107
+ const L = linkComponent ?? "a";
1108
+ return /* @__PURE__ */ jsxs3(
1109
+ "footer",
1110
+ {
1111
+ "data-slot": "footer",
1112
+ className: "bg-main-black border-t border-main-mist/10 py-16",
1113
+ children: [
1114
+ children,
1115
+ /* @__PURE__ */ jsxs3(Container, { children: [
1116
+ /* @__PURE__ */ jsxs3("div", { className: "grid grid-cols-2 gap-x-8 gap-y-8 lg:grid-cols-12 mb-12", children: [
1117
+ /* @__PURE__ */ jsxs3("div", { className: "col-span-2 lg:col-span-3", children: [
1118
+ /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-3 mb-6", children: [
1119
+ /* @__PURE__ */ jsx13(Logo, { className: "w-8 h-8 text-white" }),
1120
+ /* @__PURE__ */ jsxs3("div", { className: "flex flex-col", children: [
1121
+ /* @__PURE__ */ jsx13("span", { className: "font-serif-display font-bold text-base tracking-wider text-white", children: "EV INVESTMENT" }),
1122
+ /* @__PURE__ */ jsx13("span", { className: "text-[8px] font-mono-tech tracking-[0.3em] text-main-accent-t1 uppercase", children: tagline })
1123
+ ] })
1124
+ ] }),
1125
+ /* @__PURE__ */ jsx13("p", { className: "text-main-mist/40 text-xs font-light max-w-sm leading-relaxed mb-6", children: description }),
1126
+ /* @__PURE__ */ jsx13("div", { className: "flex gap-4 text-xs font-mono-tech text-main-accent-t1", children: legalLinks.map((link, i) => /* @__PURE__ */ jsxs3(React22.Fragment, { children: [
1127
+ i > 0 && /* @__PURE__ */ jsx13("span", { className: "text-main-mist/20", children: "|" }),
1128
+ /* @__PURE__ */ jsx13(L, { href: link.href, className: "hover:underline", children: link.label })
1129
+ ] }, link.label)) })
1130
+ ] }),
1131
+ nav.map((group) => /* @__PURE__ */ jsxs3(
1132
+ "nav",
1133
+ {
1134
+ "aria-label": `Footer ${group.heading} links`,
1135
+ className: "lg:col-span-2",
1136
+ children: [
1137
+ /* @__PURE__ */ jsx13("h4", { className: "font-mono-tech text-xs text-white uppercase tracking-widest mb-6", children: group.heading }),
1138
+ /* @__PURE__ */ jsx13("ul", { className: "space-y-3", children: group.links.map((link) => /* @__PURE__ */ jsx13("li", { children: /* @__PURE__ */ jsx13(
1139
+ L,
1140
+ {
1141
+ href: link.href,
1142
+ className: "text-xs font-light text-main-mist/70 hover:text-main-accent-t1 transition-colors",
1143
+ children: link.label
1144
+ }
1145
+ ) }, link.href)) })
1146
+ ]
1147
+ },
1148
+ group.heading
1149
+ )),
1150
+ /* @__PURE__ */ jsxs3("div", { className: "col-span-2 lg:col-span-3", children: [
1151
+ /* @__PURE__ */ jsx13("h4", { className: "font-mono-tech text-xs text-white uppercase tracking-widest mb-6", children: "Offices" }),
1152
+ /* @__PURE__ */ jsx13("ul", { className: "space-y-4 text-xs text-main-mist/70 font-light leading-relaxed", children: offices.map((office) => /* @__PURE__ */ jsxs3("li", { children: [
1153
+ /* @__PURE__ */ jsx13("strong", { className: "text-white block font-mono-tech text-[10px] uppercase tracking-wider mb-1", children: office.name }),
1154
+ office.address
1155
+ ] }, office.name)) })
1156
+ ] }),
1157
+ newsletter && /* @__PURE__ */ jsxs3("div", { className: "col-span-2 lg:col-span-2", children: [
1158
+ /* @__PURE__ */ jsx13("h4", { className: "font-mono-tech text-xs text-white uppercase tracking-widest mb-6", children: "Newsletter" }),
1159
+ /* @__PURE__ */ jsx13("p", { className: "text-sm sm:text-xs font-light leading-relaxed text-main-mist/70 mb-4", children: newsletterBlurb }),
1160
+ newsletter
1161
+ ] })
1162
+ ] }),
1163
+ /* @__PURE__ */ jsx13("div", { className: "border-t border-main-mist/10 pt-8 text-[10px] font-mono-tech text-main-mist/40", children: /* @__PURE__ */ jsxs3("p", { children: [
1164
+ "\xA9 2026 EV Investment. All rights reserved.",
1165
+ version && /* @__PURE__ */ jsxs3(Fragment2, { children: [
1166
+ " ",
1167
+ /* @__PURE__ */ jsx13("a", { href: commitHref, className: "text-main-mist/30", children: version })
1168
+ ] })
1169
+ ] }) })
1170
+ ] })
1171
+ ]
1172
+ }
1173
+ );
1174
+ }
1175
+
1176
+ // src/components/header.tsx
1177
+ import * as React23 from "react";
1178
+ import { jsx as jsx14, jsxs as jsxs4 } from "react/jsx-runtime";
1179
+ function Header({
1180
+ nav,
1181
+ cta,
1182
+ mobileCta,
1183
+ tagline = "Quy Nhon Fund",
1184
+ homeHref = "/",
1185
+ className,
1186
+ linkComponent
1187
+ }) {
1188
+ const L = linkComponent ?? "a";
1189
+ const [hasScrolled, setHasScrolled] = React23.useState(false);
1190
+ React23.useEffect(() => {
1191
+ const handleScroll = () => setHasScrolled(window.scrollY > 50);
1192
+ window.addEventListener("scroll", handleScroll);
1193
+ return () => window.removeEventListener("scroll", handleScroll);
1194
+ }, []);
1195
+ return /* @__PURE__ */ jsx14(
1196
+ "header",
1197
+ {
1198
+ "data-slot": "header",
1199
+ className: cn(
1200
+ "fixed top-0 left-0 w-full z-[60] transition-all duration-500 border-b",
1201
+ hasScrolled ? "bg-main-black/90 backdrop-blur-md border-main-mist/10 py-4" : "bg-transparent border-transparent py-6",
1202
+ className
1203
+ ),
1204
+ children: /* @__PURE__ */ jsxs4(Container, { className: "flex items-center justify-between gap-4", children: [
1205
+ /* @__PURE__ */ jsxs4(
1206
+ L,
1207
+ {
1208
+ href: homeHref,
1209
+ className: "flex items-center gap-3",
1210
+ "aria-label": "EV Investment \u2014 home",
1211
+ children: [
1212
+ /* @__PURE__ */ jsx14(Logo, { className: "w-10 h-10 text-white" }),
1213
+ /* @__PURE__ */ jsxs4("div", { className: "flex flex-col", children: [
1214
+ /* @__PURE__ */ jsx14("span", { className: "font-serif-display font-bold text-lg tracking-wider text-white", children: "EV INVESTMENT" }),
1215
+ /* @__PURE__ */ jsx14("span", { className: "text-[9px] font-mono-tech tracking-[0.3em] text-main-accent-t1 uppercase", children: tagline })
1216
+ ] })
1217
+ ]
1218
+ }
1219
+ ),
1220
+ /* @__PURE__ */ jsx14("nav", { className: "hidden lg:flex items-center gap-6 font-mono-tech text-xs tracking-widest uppercase", children: nav.map((item) => /* @__PURE__ */ jsx14(
1221
+ L,
1222
+ {
1223
+ href: item.href,
1224
+ className: "text-main-mist/80 hover:text-main-accent-t1 transition-colors",
1225
+ children: item.label
1226
+ },
1227
+ item.href
1228
+ )) }),
1229
+ /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-3", children: [
1230
+ cta,
1231
+ /* @__PURE__ */ jsx14(MobileMenu, { nav, cta: mobileCta ?? cta, linkComponent: L })
1232
+ ] })
1233
+ ] })
1234
+ }
1235
+ );
1236
+ }
1237
+ function MobileMenu({
1238
+ nav,
1239
+ cta,
1240
+ linkComponent: L
1241
+ }) {
1242
+ const [open, setOpen] = React23.useState(false);
1243
+ React23.useEffect(() => {
1244
+ if (!open) return;
1245
+ document.body.style.overflow = "hidden";
1246
+ const onKeyDown = (e) => {
1247
+ if (e.key === "Escape") setOpen(false);
1248
+ };
1249
+ window.addEventListener("keydown", onKeyDown);
1250
+ return () => {
1251
+ document.body.style.overflow = "";
1252
+ window.removeEventListener("keydown", onKeyDown);
1253
+ };
1254
+ }, [open]);
1255
+ const closeOnNavigation = (e) => {
1256
+ if (e.target.closest("a, button")) setOpen(false);
1257
+ };
1258
+ return /* @__PURE__ */ jsxs4("div", { className: "lg:hidden", children: [
1259
+ /* @__PURE__ */ jsx14(
1260
+ "button",
1261
+ {
1262
+ type: "button",
1263
+ "aria-label": "Open menu",
1264
+ "aria-expanded": open,
1265
+ "aria-haspopup": "menu",
1266
+ onClick: () => setOpen(true),
1267
+ className: "flex size-10 items-center justify-center text-white",
1268
+ children: /* @__PURE__ */ jsx14(
1269
+ "svg",
1270
+ {
1271
+ className: "size-6",
1272
+ viewBox: "0 0 24 24",
1273
+ fill: "none",
1274
+ stroke: "currentColor",
1275
+ strokeWidth: 2,
1276
+ strokeLinecap: "round",
1277
+ strokeLinejoin: "round",
1278
+ children: /* @__PURE__ */ jsx14("path", { d: "M4 6h16M4 12h16M4 18h16" })
1279
+ }
1280
+ )
1281
+ }
1282
+ ),
1283
+ open && /* @__PURE__ */ jsx14(Portal, { children: /* @__PURE__ */ jsxs4(
1284
+ "div",
1285
+ {
1286
+ onClick: closeOnNavigation,
1287
+ className: "fixed inset-0 z-[70] flex flex-col bg-main-black px-6 pb-10 duration-200 animate-in fade-in lg:hidden",
1288
+ children: [
1289
+ /* @__PURE__ */ jsx14("div", { className: "flex h-20 shrink-0 items-center justify-end", children: /* @__PURE__ */ jsx14(
1290
+ "button",
1291
+ {
1292
+ type: "button",
1293
+ "aria-label": "Close menu",
1294
+ className: "flex size-10 items-center justify-center text-white",
1295
+ children: /* @__PURE__ */ jsx14(
1296
+ "svg",
1297
+ {
1298
+ className: "size-6",
1299
+ viewBox: "0 0 24 24",
1300
+ fill: "none",
1301
+ stroke: "currentColor",
1302
+ strokeWidth: 2,
1303
+ strokeLinecap: "round",
1304
+ strokeLinejoin: "round",
1305
+ children: /* @__PURE__ */ jsx14("path", { d: "M18 6 6 18M6 6l12 12" })
1306
+ }
1307
+ )
1308
+ }
1309
+ ) }),
1310
+ /* @__PURE__ */ jsx14("nav", { className: "flex flex-col font-mono-tech text-sm uppercase tracking-widest duration-300 ease-out animate-in fade-in slide-in-from-top-4", children: nav.map((item) => /* @__PURE__ */ jsx14(
1311
+ L,
1312
+ {
1313
+ href: item.href,
1314
+ className: "border-b border-main-mist/10 py-4 text-main-mist/80 transition-colors hover:text-main-accent-t1",
1315
+ children: item.label
1316
+ },
1317
+ item.href
1318
+ )) }),
1319
+ cta && /* @__PURE__ */ jsx14("div", { className: "mt-8 w-full block", children: cta })
1320
+ ]
1321
+ }
1322
+ ) })
1323
+ ] });
1324
+ }
1325
+
1015
1326
  // src/components/input.tsx
1016
1327
  import "react";
1017
1328
 
@@ -1019,9 +1330,9 @@ import "react";
1019
1330
  var INPUT_BASE = "file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground border-input 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 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 aria-invalid:border-destructive";
1020
1331
 
1021
1332
  // src/components/input.tsx
1022
- import { jsx as jsx11 } from "react/jsx-runtime";
1333
+ import { jsx as jsx15 } from "react/jsx-runtime";
1023
1334
  function Input({ className, type, ...props }) {
1024
- return /* @__PURE__ */ jsx11(
1335
+ return /* @__PURE__ */ jsx15(
1025
1336
  "input",
1026
1337
  {
1027
1338
  type,
@@ -1039,9 +1350,9 @@ import "react";
1039
1350
  var TEXTAREA_BASE = "border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 aria-invalid:border-destructive flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm";
1040
1351
 
1041
1352
  // src/components/textarea.tsx
1042
- import { jsx as jsx12 } from "react/jsx-runtime";
1353
+ import { jsx as jsx16 } from "react/jsx-runtime";
1043
1354
  function Textarea({ className, ...props }) {
1044
- return /* @__PURE__ */ jsx12("textarea", { "data-slot": "textarea", className: cn(TEXTAREA_BASE, className), ...props });
1355
+ return /* @__PURE__ */ jsx16("textarea", { "data-slot": "textarea", className: cn(TEXTAREA_BASE, className), ...props });
1045
1356
  }
1046
1357
 
1047
1358
  // src/components/input-group.tsx
@@ -1068,12 +1379,12 @@ var INPUT_GROUP_INPUT_CONTROL = "flex-1 rounded-none border-0 bg-transparent sha
1068
1379
  var INPUT_GROUP_TEXTAREA_CONTROL = "flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0";
1069
1380
 
1070
1381
  // src/components/input-group.tsx
1071
- import { jsx as jsx13 } from "react/jsx-runtime";
1382
+ import { jsx as jsx17 } from "react/jsx-runtime";
1072
1383
  function InputGroup({
1073
1384
  className,
1074
1385
  ...props
1075
1386
  }) {
1076
- return /* @__PURE__ */ jsx13(
1387
+ return /* @__PURE__ */ jsx17(
1077
1388
  "div",
1078
1389
  {
1079
1390
  "data-slot": "input-group",
@@ -1088,7 +1399,7 @@ function InputGroupAddon({
1088
1399
  align = "inline-start",
1089
1400
  ...props
1090
1401
  }) {
1091
- return /* @__PURE__ */ jsx13(
1402
+ return /* @__PURE__ */ jsx17(
1092
1403
  "div",
1093
1404
  {
1094
1405
  role: "group",
@@ -1114,7 +1425,7 @@ function InputGroupButton({
1114
1425
  size = "xs",
1115
1426
  ...props
1116
1427
  }) {
1117
- return /* @__PURE__ */ jsx13(
1428
+ return /* @__PURE__ */ jsx17(
1118
1429
  Button,
1119
1430
  {
1120
1431
  type,
@@ -1133,7 +1444,7 @@ function InputGroupText({
1133
1444
  className,
1134
1445
  ...props
1135
1446
  }) {
1136
- return /* @__PURE__ */ jsx13(
1447
+ return /* @__PURE__ */ jsx17(
1137
1448
  "span",
1138
1449
  {
1139
1450
  className: cn(INPUT_GROUP_TEXT, className),
@@ -1145,7 +1456,7 @@ function InputGroupInput({
1145
1456
  className,
1146
1457
  ...props
1147
1458
  }) {
1148
- return /* @__PURE__ */ jsx13(
1459
+ return /* @__PURE__ */ jsx17(
1149
1460
  Input,
1150
1461
  {
1151
1462
  "data-slot": "input-group-control",
@@ -1158,7 +1469,7 @@ function InputGroupTextarea({
1158
1469
  className,
1159
1470
  ...props
1160
1471
  }) {
1161
- return /* @__PURE__ */ jsx13(
1472
+ return /* @__PURE__ */ jsx17(
1162
1473
  Textarea,
1163
1474
  {
1164
1475
  "data-slot": "input-group-control",
@@ -1182,13 +1493,13 @@ var separatorOrientations = {
1182
1493
  };
1183
1494
 
1184
1495
  // src/components/separator.tsx
1185
- import { jsx as jsx14 } from "react/jsx-runtime";
1496
+ import { jsx as jsx18 } from "react/jsx-runtime";
1186
1497
  function Separator({
1187
1498
  className,
1188
1499
  orientation = "horizontal",
1189
1500
  ...props
1190
1501
  }) {
1191
- return /* @__PURE__ */ jsx14(
1502
+ return /* @__PURE__ */ jsx18(
1192
1503
  "div",
1193
1504
  {
1194
1505
  role: "separator",
@@ -1231,9 +1542,9 @@ var ITEM_HEADER = "flex basis-full items-center justify-between gap-2";
1231
1542
  var ITEM_FOOTER = "flex basis-full items-center justify-between gap-2";
1232
1543
 
1233
1544
  // src/components/item.tsx
1234
- import { jsx as jsx15 } from "react/jsx-runtime";
1545
+ import { jsx as jsx19 } from "react/jsx-runtime";
1235
1546
  function ItemGroup({ className, ...props }) {
1236
- return /* @__PURE__ */ jsx15(
1547
+ return /* @__PURE__ */ jsx19(
1237
1548
  "div",
1238
1549
  {
1239
1550
  role: "list",
@@ -1247,7 +1558,7 @@ function ItemSeparator({
1247
1558
  className,
1248
1559
  ...props
1249
1560
  }) {
1250
- return /* @__PURE__ */ jsx15(
1561
+ return /* @__PURE__ */ jsx19(
1251
1562
  Separator,
1252
1563
  {
1253
1564
  "data-slot": "item-separator",
@@ -1265,7 +1576,7 @@ function Item({
1265
1576
  ...props
1266
1577
  }) {
1267
1578
  const Comp = asChild ? Slot : "div";
1268
- return /* @__PURE__ */ jsx15(
1579
+ return /* @__PURE__ */ jsx19(
1269
1580
  Comp,
1270
1581
  {
1271
1582
  "data-slot": "item",
@@ -1281,7 +1592,7 @@ function ItemMedia({
1281
1592
  variant = "default",
1282
1593
  ...props
1283
1594
  }) {
1284
- return /* @__PURE__ */ jsx15(
1595
+ return /* @__PURE__ */ jsx19(
1285
1596
  "div",
1286
1597
  {
1287
1598
  "data-slot": "item-media",
@@ -1295,7 +1606,7 @@ function ItemContent({
1295
1606
  className,
1296
1607
  ...props
1297
1608
  }) {
1298
- return /* @__PURE__ */ jsx15(
1609
+ return /* @__PURE__ */ jsx19(
1299
1610
  "div",
1300
1611
  {
1301
1612
  "data-slot": "item-content",
@@ -1305,7 +1616,7 @@ function ItemContent({
1305
1616
  );
1306
1617
  }
1307
1618
  function ItemTitle({ className, ...props }) {
1308
- return /* @__PURE__ */ jsx15(
1619
+ return /* @__PURE__ */ jsx19(
1309
1620
  "div",
1310
1621
  {
1311
1622
  "data-slot": "item-title",
@@ -1318,7 +1629,7 @@ function ItemDescription({
1318
1629
  className,
1319
1630
  ...props
1320
1631
  }) {
1321
- return /* @__PURE__ */ jsx15(
1632
+ return /* @__PURE__ */ jsx19(
1322
1633
  "p",
1323
1634
  {
1324
1635
  "data-slot": "item-description",
@@ -1331,7 +1642,7 @@ function ItemActions({
1331
1642
  className,
1332
1643
  ...props
1333
1644
  }) {
1334
- return /* @__PURE__ */ jsx15(
1645
+ return /* @__PURE__ */ jsx19(
1335
1646
  "div",
1336
1647
  {
1337
1648
  "data-slot": "item-actions",
@@ -1344,7 +1655,7 @@ function ItemHeader({
1344
1655
  className,
1345
1656
  ...props
1346
1657
  }) {
1347
- return /* @__PURE__ */ jsx15(
1658
+ return /* @__PURE__ */ jsx19(
1348
1659
  "div",
1349
1660
  {
1350
1661
  "data-slot": "item-header",
@@ -1357,7 +1668,7 @@ function ItemFooter({
1357
1668
  className,
1358
1669
  ...props
1359
1670
  }) {
1360
- return /* @__PURE__ */ jsx15(
1671
+ return /* @__PURE__ */ jsx19(
1361
1672
  "div",
1362
1673
  {
1363
1674
  "data-slot": "item-footer",
@@ -1375,9 +1686,9 @@ var KBD_BASE = "bg-muted text-muted-foreground pointer-events-none inline-flex h
1375
1686
  var KBD_GROUP_BASE = "inline-flex items-center gap-1";
1376
1687
 
1377
1688
  // src/components/kbd.tsx
1378
- import { jsx as jsx16 } from "react/jsx-runtime";
1689
+ import { jsx as jsx20 } from "react/jsx-runtime";
1379
1690
  function Kbd({ className, ...props }) {
1380
- return /* @__PURE__ */ jsx16(
1691
+ return /* @__PURE__ */ jsx20(
1381
1692
  "kbd",
1382
1693
  {
1383
1694
  "data-slot": "kbd",
@@ -1387,7 +1698,7 @@ function Kbd({ className, ...props }) {
1387
1698
  );
1388
1699
  }
1389
1700
  function KbdGroup({ className, ...props }) {
1390
- return /* @__PURE__ */ jsx16(
1701
+ return /* @__PURE__ */ jsx20(
1391
1702
  "kbd",
1392
1703
  {
1393
1704
  "data-slot": "kbd-group",
@@ -1399,9 +1710,9 @@ function KbdGroup({ className, ...props }) {
1399
1710
 
1400
1711
  // src/components/pagination.tsx
1401
1712
  import "react";
1402
- import { jsx as jsx17, jsxs as jsxs3 } from "react/jsx-runtime";
1713
+ import { jsx as jsx21, jsxs as jsxs5 } from "react/jsx-runtime";
1403
1714
  function Pagination({ className, ...props }) {
1404
- return /* @__PURE__ */ jsx17(
1715
+ return /* @__PURE__ */ jsx21(
1405
1716
  "nav",
1406
1717
  {
1407
1718
  role: "navigation",
@@ -1416,7 +1727,7 @@ function PaginationContent({
1416
1727
  className,
1417
1728
  ...props
1418
1729
  }) {
1419
- return /* @__PURE__ */ jsx17(
1730
+ return /* @__PURE__ */ jsx21(
1420
1731
  "ul",
1421
1732
  {
1422
1733
  "data-slot": "pagination-content",
@@ -1426,7 +1737,7 @@ function PaginationContent({
1426
1737
  );
1427
1738
  }
1428
1739
  function PaginationItem(props) {
1429
- return /* @__PURE__ */ jsx17("li", { "data-slot": "pagination-item", ...props });
1740
+ return /* @__PURE__ */ jsx21("li", { "data-slot": "pagination-item", ...props });
1430
1741
  }
1431
1742
  function PaginationLink({
1432
1743
  className,
@@ -1434,7 +1745,7 @@ function PaginationLink({
1434
1745
  size = "icon",
1435
1746
  ...props
1436
1747
  }) {
1437
- return /* @__PURE__ */ jsx17(
1748
+ return /* @__PURE__ */ jsx21(
1438
1749
  "a",
1439
1750
  {
1440
1751
  "aria-current": isActive ? "page" : void 0,
@@ -1451,9 +1762,9 @@ function PaginationLink({
1451
1762
  }
1452
1763
  );
1453
1764
  }
1454
- var ChevronLeft = () => /* @__PURE__ */ jsx17("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ jsx17("path", { d: "m15 18-6-6 6-6" }) });
1455
- var ChevronRight = () => /* @__PURE__ */ jsx17("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ jsx17("path", { d: "m9 18 6-6-6-6" }) });
1456
- var MoreHorizontal = () => /* @__PURE__ */ jsxs3(
1765
+ var ChevronLeft = () => /* @__PURE__ */ jsx21("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ jsx21("path", { d: "m15 18-6-6 6-6" }) });
1766
+ var ChevronRight = () => /* @__PURE__ */ jsx21("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ jsx21("path", { d: "m9 18 6-6-6-6" }) });
1767
+ var MoreHorizontal = () => /* @__PURE__ */ jsxs5(
1457
1768
  "svg",
1458
1769
  {
1459
1770
  className: "size-4",
@@ -1462,9 +1773,9 @@ var MoreHorizontal = () => /* @__PURE__ */ jsxs3(
1462
1773
  stroke: "currentColor",
1463
1774
  strokeWidth: 2,
1464
1775
  children: [
1465
- /* @__PURE__ */ jsx17("circle", { cx: "12", cy: "12", r: "1" }),
1466
- /* @__PURE__ */ jsx17("circle", { cx: "19", cy: "12", r: "1" }),
1467
- /* @__PURE__ */ jsx17("circle", { cx: "5", cy: "12", r: "1" })
1776
+ /* @__PURE__ */ jsx21("circle", { cx: "12", cy: "12", r: "1" }),
1777
+ /* @__PURE__ */ jsx21("circle", { cx: "19", cy: "12", r: "1" }),
1778
+ /* @__PURE__ */ jsx21("circle", { cx: "5", cy: "12", r: "1" })
1468
1779
  ]
1469
1780
  }
1470
1781
  );
@@ -1472,7 +1783,7 @@ function PaginationPrevious({
1472
1783
  className,
1473
1784
  ...props
1474
1785
  }) {
1475
- return /* @__PURE__ */ jsxs3(
1786
+ return /* @__PURE__ */ jsxs5(
1476
1787
  PaginationLink,
1477
1788
  {
1478
1789
  "aria-label": "Go to previous page",
@@ -1480,8 +1791,8 @@ function PaginationPrevious({
1480
1791
  className: cn("gap-1 px-2.5 sm:pl-2.5", className),
1481
1792
  ...props,
1482
1793
  children: [
1483
- /* @__PURE__ */ jsx17(ChevronLeft, {}),
1484
- /* @__PURE__ */ jsx17("span", { className: "hidden sm:block", children: "Previous" })
1794
+ /* @__PURE__ */ jsx21(ChevronLeft, {}),
1795
+ /* @__PURE__ */ jsx21("span", { className: "hidden sm:block", children: "Previous" })
1485
1796
  ]
1486
1797
  }
1487
1798
  );
@@ -1490,7 +1801,7 @@ function PaginationNext({
1490
1801
  className,
1491
1802
  ...props
1492
1803
  }) {
1493
- return /* @__PURE__ */ jsxs3(
1804
+ return /* @__PURE__ */ jsxs5(
1494
1805
  PaginationLink,
1495
1806
  {
1496
1807
  "aria-label": "Go to next page",
@@ -1498,8 +1809,8 @@ function PaginationNext({
1498
1809
  className: cn("gap-1 px-2.5 sm:pr-2.5", className),
1499
1810
  ...props,
1500
1811
  children: [
1501
- /* @__PURE__ */ jsx17("span", { className: "hidden sm:block", children: "Next" }),
1502
- /* @__PURE__ */ jsx17(ChevronRight, {})
1812
+ /* @__PURE__ */ jsx21("span", { className: "hidden sm:block", children: "Next" }),
1813
+ /* @__PURE__ */ jsx21(ChevronRight, {})
1503
1814
  ]
1504
1815
  }
1505
1816
  );
@@ -1508,7 +1819,7 @@ function PaginationEllipsis({
1508
1819
  className,
1509
1820
  ...props
1510
1821
  }) {
1511
- return /* @__PURE__ */ jsxs3(
1822
+ return /* @__PURE__ */ jsxs5(
1512
1823
  "span",
1513
1824
  {
1514
1825
  "aria-hidden": true,
@@ -1516,8 +1827,8 @@ function PaginationEllipsis({
1516
1827
  className: cn("flex size-9 items-center justify-center", className),
1517
1828
  ...props,
1518
1829
  children: [
1519
- /* @__PURE__ */ jsx17(MoreHorizontal, {}),
1520
- /* @__PURE__ */ jsx17("span", { className: "sr-only", children: "More pages" })
1830
+ /* @__PURE__ */ jsx21(MoreHorizontal, {}),
1831
+ /* @__PURE__ */ jsx21("span", { className: "sr-only", children: "More pages" })
1521
1832
  ]
1522
1833
  }
1523
1834
  );
@@ -1531,9 +1842,9 @@ var PROGRESS_TRACK = "bg-primary/20 relative h-2 w-full overflow-hidden rounded-
1531
1842
  var PROGRESS_INDICATOR = "bg-primary h-full w-full flex-1 transition-all";
1532
1843
 
1533
1844
  // src/components/progress.tsx
1534
- import { jsx as jsx18 } from "react/jsx-runtime";
1845
+ import { jsx as jsx22 } from "react/jsx-runtime";
1535
1846
  function Progress({ className, value = 0, ...props }) {
1536
- return /* @__PURE__ */ jsx18(
1847
+ return /* @__PURE__ */ jsx22(
1537
1848
  "div",
1538
1849
  {
1539
1850
  "data-slot": "progress",
@@ -1543,7 +1854,7 @@ function Progress({ className, value = 0, ...props }) {
1543
1854
  "aria-valuemax": 100,
1544
1855
  className: cn(PROGRESS_TRACK, className),
1545
1856
  ...props,
1546
- children: /* @__PURE__ */ jsx18(
1857
+ children: /* @__PURE__ */ jsx22(
1547
1858
  "div",
1548
1859
  {
1549
1860
  "data-slot": "progress-indicator",
@@ -1562,9 +1873,9 @@ import "react";
1562
1873
  var SKELETON_BASE = "bg-accent animate-pulse rounded-md";
1563
1874
 
1564
1875
  // src/components/skeleton.tsx
1565
- import { jsx as jsx19 } from "react/jsx-runtime";
1876
+ import { jsx as jsx23 } from "react/jsx-runtime";
1566
1877
  function Skeleton({ className, ...props }) {
1567
- return /* @__PURE__ */ jsx19(
1878
+ return /* @__PURE__ */ jsx23(
1568
1879
  "div",
1569
1880
  {
1570
1881
  "data-slot": "skeleton",
@@ -1576,9 +1887,9 @@ function Skeleton({ className, ...props }) {
1576
1887
 
1577
1888
  // src/components/spinner.tsx
1578
1889
  import "react";
1579
- import { jsx as jsx20 } from "react/jsx-runtime";
1890
+ import { jsx as jsx24 } from "react/jsx-runtime";
1580
1891
  function Spinner({ className, ...props }) {
1581
- return /* @__PURE__ */ jsx20(
1892
+ return /* @__PURE__ */ jsx24(
1582
1893
  "svg",
1583
1894
  {
1584
1895
  role: "status",
@@ -1589,7 +1900,7 @@ function Spinner({ className, ...props }) {
1589
1900
  stroke: "currentColor",
1590
1901
  strokeWidth: 2,
1591
1902
  ...props,
1592
- children: /* @__PURE__ */ jsx20("path", { d: "M21 12a9 9 0 1 1-6.219-8.56" })
1903
+ children: /* @__PURE__ */ jsx24("path", { d: "M21 12a9 9 0 1 1-6.219-8.56" })
1593
1904
  }
1594
1905
  );
1595
1906
  }
@@ -1609,14 +1920,14 @@ var TABLE_CELL = "p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr
1609
1920
  var TABLE_CAPTION = "text-muted-foreground mt-4 text-sm";
1610
1921
 
1611
1922
  // src/components/table.tsx
1612
- import { jsx as jsx21 } from "react/jsx-runtime";
1923
+ import { jsx as jsx25 } from "react/jsx-runtime";
1613
1924
  function Table({ className, ...props }) {
1614
- return /* @__PURE__ */ jsx21(
1925
+ return /* @__PURE__ */ jsx25(
1615
1926
  "div",
1616
1927
  {
1617
1928
  "data-slot": "table-container",
1618
1929
  className: TABLE_CONTAINER,
1619
- children: /* @__PURE__ */ jsx21(
1930
+ children: /* @__PURE__ */ jsx25(
1620
1931
  "table",
1621
1932
  {
1622
1933
  "data-slot": "table",
@@ -1631,7 +1942,7 @@ function TableHeader({
1631
1942
  className,
1632
1943
  ...props
1633
1944
  }) {
1634
- return /* @__PURE__ */ jsx21(
1945
+ return /* @__PURE__ */ jsx25(
1635
1946
  "thead",
1636
1947
  {
1637
1948
  "data-slot": "table-header",
@@ -1644,7 +1955,7 @@ function TableBody({
1644
1955
  className,
1645
1956
  ...props
1646
1957
  }) {
1647
- return /* @__PURE__ */ jsx21(
1958
+ return /* @__PURE__ */ jsx25(
1648
1959
  "tbody",
1649
1960
  {
1650
1961
  "data-slot": "table-body",
@@ -1657,7 +1968,7 @@ function TableFooter({
1657
1968
  className,
1658
1969
  ...props
1659
1970
  }) {
1660
- return /* @__PURE__ */ jsx21(
1971
+ return /* @__PURE__ */ jsx25(
1661
1972
  "tfoot",
1662
1973
  {
1663
1974
  "data-slot": "table-footer",
@@ -1667,7 +1978,7 @@ function TableFooter({
1667
1978
  );
1668
1979
  }
1669
1980
  function TableRow({ className, ...props }) {
1670
- return /* @__PURE__ */ jsx21(
1981
+ return /* @__PURE__ */ jsx25(
1671
1982
  "tr",
1672
1983
  {
1673
1984
  "data-slot": "table-row",
@@ -1677,7 +1988,7 @@ function TableRow({ className, ...props }) {
1677
1988
  );
1678
1989
  }
1679
1990
  function TableHead({ className, ...props }) {
1680
- return /* @__PURE__ */ jsx21(
1991
+ return /* @__PURE__ */ jsx25(
1681
1992
  "th",
1682
1993
  {
1683
1994
  "data-slot": "table-head",
@@ -1687,7 +1998,7 @@ function TableHead({ className, ...props }) {
1687
1998
  );
1688
1999
  }
1689
2000
  function TableCell({ className, ...props }) {
1690
- return /* @__PURE__ */ jsx21(
2001
+ return /* @__PURE__ */ jsx25(
1691
2002
  "td",
1692
2003
  {
1693
2004
  "data-slot": "table-cell",
@@ -1700,7 +2011,7 @@ function TableCaption({
1700
2011
  className,
1701
2012
  ...props
1702
2013
  }) {
1703
- return /* @__PURE__ */ jsx21(
2014
+ return /* @__PURE__ */ jsx25(
1704
2015
  "caption",
1705
2016
  {
1706
2017
  "data-slot": "table-caption",
@@ -1711,7 +2022,7 @@ function TableCaption({
1711
2022
  }
1712
2023
 
1713
2024
  // src/components/accordion.tsx
1714
- import * as React31 from "react";
2025
+ import * as React35 from "react";
1715
2026
 
1716
2027
  // src/generated/accordion.ts
1717
2028
  var ACCORDION_ITEM = "border-b last:border-b-0";
@@ -1721,16 +2032,16 @@ var ACCORDION_CONTENT = "data-[state=closed]:animate-accordion-up data-[state=op
1721
2032
  var ACCORDION_CONTENT_INNER = "pt-0 pb-4";
1722
2033
 
1723
2034
  // src/components/accordion.tsx
1724
- import { jsx as jsx22, jsxs as jsxs4 } from "react/jsx-runtime";
1725
- var AccordionContext = React31.createContext(null);
2035
+ import { jsx as jsx26, jsxs as jsxs6 } from "react/jsx-runtime";
2036
+ var AccordionContext = React35.createContext(null);
1726
2037
  function useAccordion() {
1727
- const ctx = React31.useContext(AccordionContext);
2038
+ const ctx = React35.useContext(AccordionContext);
1728
2039
  if (!ctx) throw new Error("Accordion parts must be used within <Accordion>");
1729
2040
  return ctx;
1730
2041
  }
1731
- var ItemContext = React31.createContext(null);
2042
+ var ItemContext = React35.createContext(null);
1732
2043
  function useItemValue() {
1733
- const value = React31.useContext(ItemContext);
2044
+ const value = React35.useContext(ItemContext);
1734
2045
  if (value === null)
1735
2046
  throw new Error("AccordionTrigger/Content must be used within <AccordionItem>");
1736
2047
  return value;
@@ -1758,7 +2069,7 @@ function Accordion({
1758
2069
  if (open.includes(v)) setOpen(collapsible ? [] : open);
1759
2070
  else setOpen([v]);
1760
2071
  };
1761
- return /* @__PURE__ */ jsx22(AccordionContext.Provider, { value: { isOpen, toggle }, children: /* @__PURE__ */ jsx22("div", { "data-slot": "accordion", ...props, children }) });
2072
+ return /* @__PURE__ */ jsx26(AccordionContext.Provider, { value: { isOpen, toggle }, children: /* @__PURE__ */ jsx26("div", { "data-slot": "accordion", ...props, children }) });
1762
2073
  }
1763
2074
  function AccordionItem({
1764
2075
  className,
@@ -1766,7 +2077,7 @@ function AccordionItem({
1766
2077
  children,
1767
2078
  ...props
1768
2079
  }) {
1769
- return /* @__PURE__ */ jsx22(ItemContext.Provider, { value, children: /* @__PURE__ */ jsx22(
2080
+ return /* @__PURE__ */ jsx26(ItemContext.Provider, { value, children: /* @__PURE__ */ jsx26(
1770
2081
  "div",
1771
2082
  {
1772
2083
  "data-slot": "accordion-item",
@@ -1785,7 +2096,7 @@ function AccordionTrigger({
1785
2096
  const { isOpen, toggle } = useAccordion();
1786
2097
  const value = useItemValue();
1787
2098
  const open = isOpen(value);
1788
- return /* @__PURE__ */ jsx22("h3", { className: ACCORDION_HEADER, "data-slot": "accordion-header", children: /* @__PURE__ */ jsxs4(
2099
+ return /* @__PURE__ */ jsx26("h3", { className: ACCORDION_HEADER, "data-slot": "accordion-header", children: /* @__PURE__ */ jsxs6(
1789
2100
  "button",
1790
2101
  {
1791
2102
  type: "button",
@@ -1800,7 +2111,7 @@ function AccordionTrigger({
1800
2111
  ...props,
1801
2112
  children: [
1802
2113
  children,
1803
- /* @__PURE__ */ jsx22(
2114
+ /* @__PURE__ */ jsx26(
1804
2115
  "svg",
1805
2116
  {
1806
2117
  xmlns: "http://www.w3.org/2000/svg",
@@ -1813,7 +2124,7 @@ function AccordionTrigger({
1813
2124
  strokeLinecap: "round",
1814
2125
  strokeLinejoin: "round",
1815
2126
  className: "text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200",
1816
- children: /* @__PURE__ */ jsx22("path", { d: "m6 9 6 6 6-6" })
2127
+ children: /* @__PURE__ */ jsx26("path", { d: "m6 9 6 6 6-6" })
1817
2128
  }
1818
2129
  )
1819
2130
  ]
@@ -1828,26 +2139,26 @@ function AccordionContent({
1828
2139
  const { isOpen } = useAccordion();
1829
2140
  const value = useItemValue();
1830
2141
  if (!isOpen(value)) return null;
1831
- return /* @__PURE__ */ jsx22(
2142
+ return /* @__PURE__ */ jsx26(
1832
2143
  "div",
1833
2144
  {
1834
2145
  "data-slot": "accordion-content",
1835
2146
  "data-state": "open",
1836
2147
  className: ACCORDION_CONTENT,
1837
2148
  ...props,
1838
- children: /* @__PURE__ */ jsx22("div", { className: cn(ACCORDION_CONTENT_INNER, className), children })
2149
+ children: /* @__PURE__ */ jsx26("div", { className: cn(ACCORDION_CONTENT_INNER, className), children })
1839
2150
  }
1840
2151
  );
1841
2152
  }
1842
2153
 
1843
2154
  // src/components/collapsible.tsx
1844
- import * as React32 from "react";
1845
- import { jsx as jsx23 } from "react/jsx-runtime";
1846
- var CollapsibleContext = React32.createContext(
2155
+ import * as React36 from "react";
2156
+ import { jsx as jsx27 } from "react/jsx-runtime";
2157
+ var CollapsibleContext = React36.createContext(
1847
2158
  null
1848
2159
  );
1849
2160
  function useCollapsible() {
1850
- const ctx = React32.useContext(CollapsibleContext);
2161
+ const ctx = React36.useContext(CollapsibleContext);
1851
2162
  if (!ctx) throw new Error("Collapsible parts must be used within <Collapsible>");
1852
2163
  return ctx;
1853
2164
  }
@@ -1863,14 +2174,14 @@ function Collapsible({
1863
2174
  defaultValue: defaultOpen,
1864
2175
  ...onOpenChange ? { onChange: onOpenChange } : {}
1865
2176
  });
1866
- return /* @__PURE__ */ jsx23(CollapsibleContext.Provider, { value: { open: isOpen, setOpen }, children: /* @__PURE__ */ jsx23("div", { "data-slot": "collapsible", "data-state": isOpen ? "open" : "closed", ...props, children }) });
2177
+ return /* @__PURE__ */ jsx27(CollapsibleContext.Provider, { value: { open: isOpen, setOpen }, children: /* @__PURE__ */ jsx27("div", { "data-slot": "collapsible", "data-state": isOpen ? "open" : "closed", ...props, children }) });
1867
2178
  }
1868
2179
  function CollapsibleTrigger({
1869
2180
  onClick,
1870
2181
  ...props
1871
2182
  }) {
1872
2183
  const { open, setOpen } = useCollapsible();
1873
- return /* @__PURE__ */ jsx23(
2184
+ return /* @__PURE__ */ jsx27(
1874
2185
  "button",
1875
2186
  {
1876
2187
  type: "button",
@@ -1891,30 +2202,11 @@ function CollapsibleContent({
1891
2202
  }) {
1892
2203
  const { open } = useCollapsible();
1893
2204
  if (!open) return null;
1894
- return /* @__PURE__ */ jsx23("div", { "data-slot": "collapsible-content", "data-state": "open", ...props, children });
1895
- }
1896
-
1897
- // src/components/container.tsx
1898
- import "react";
1899
-
1900
- // src/generated/container.ts
1901
- var CONTAINER_BASE = "mx-auto w-full max-w-[var(--page-max,90rem)] px-[var(--page-px,1rem)]";
1902
-
1903
- // src/components/container.tsx
1904
- import { jsx as jsx24 } from "react/jsx-runtime";
1905
- function Container({ className, ...props }) {
1906
- return /* @__PURE__ */ jsx24(
1907
- "div",
1908
- {
1909
- "data-slot": "container",
1910
- className: cn(CONTAINER_BASE, className),
1911
- ...props
1912
- }
1913
- );
2205
+ return /* @__PURE__ */ jsx27("div", { "data-slot": "collapsible-content", "data-state": "open", ...props, children });
1914
2206
  }
1915
2207
 
1916
2208
  // src/components/tabs.tsx
1917
- import * as React34 from "react";
2209
+ import * as React37 from "react";
1918
2210
 
1919
2211
  // src/generated/tabs.ts
1920
2212
  var TABS_ROOT = "flex flex-col gap-2";
@@ -1923,10 +2215,10 @@ var TABS_TRIGGER = "data-[state=active]:bg-background focus-visible:border-ring
1923
2215
  var TABS_CONTENT = "flex-1 outline-none";
1924
2216
 
1925
2217
  // src/components/tabs.tsx
1926
- import { jsx as jsx25 } from "react/jsx-runtime";
1927
- var TabsContext = React34.createContext(null);
2218
+ import { jsx as jsx28 } from "react/jsx-runtime";
2219
+ var TabsContext = React37.createContext(null);
1928
2220
  function useTabs() {
1929
- const ctx = React34.useContext(TabsContext);
2221
+ const ctx = React37.useContext(TabsContext);
1930
2222
  if (!ctx) throw new Error("Tabs parts must be used within <Tabs>");
1931
2223
  return ctx;
1932
2224
  }
@@ -1944,7 +2236,7 @@ function Tabs({
1944
2236
  defaultValue,
1945
2237
  ...onValueChange ? { onChange: onValueChange } : {}
1946
2238
  });
1947
- return /* @__PURE__ */ jsx25(TabsContext.Provider, { value: { value: active, setValue, orientation }, children: /* @__PURE__ */ jsx25(
2239
+ return /* @__PURE__ */ jsx28(TabsContext.Provider, { value: { value: active, setValue, orientation }, children: /* @__PURE__ */ jsx28(
1948
2240
  "div",
1949
2241
  {
1950
2242
  "data-slot": "tabs",
@@ -1962,12 +2254,12 @@ function TabsList({
1962
2254
  ...props
1963
2255
  }) {
1964
2256
  const { orientation } = useTabs();
1965
- const items = React34.Children.toArray(children);
2257
+ const items = React37.Children.toArray(children);
1966
2258
  const { activeIndex, setActiveIndex, onKeyDown: rovingKeyDown } = useRovingFocus({
1967
2259
  count: items.length,
1968
2260
  orientation: orientation === "vertical" ? "vertical" : "horizontal"
1969
2261
  });
1970
- return /* @__PURE__ */ jsx25(
2262
+ return /* @__PURE__ */ jsx28(
1971
2263
  "div",
1972
2264
  {
1973
2265
  role: "tablist",
@@ -1980,7 +2272,7 @@ function TabsList({
1980
2272
  },
1981
2273
  ...props,
1982
2274
  children: items.map(
1983
- (child, index) => React34.isValidElement(child) ? React34.cloneElement(child, {
2275
+ (child, index) => React37.isValidElement(child) ? React37.cloneElement(child, {
1984
2276
  __index: index,
1985
2277
  __isFocusItem: index === activeIndex,
1986
2278
  __onFocusItem: () => setActiveIndex(index)
@@ -2000,7 +2292,7 @@ function TabsTrigger({
2000
2292
  }) {
2001
2293
  const { value: active, setValue } = useTabs();
2002
2294
  const selected = active === value;
2003
- return /* @__PURE__ */ jsx25(
2295
+ return /* @__PURE__ */ jsx28(
2004
2296
  "button",
2005
2297
  {
2006
2298
  type: "button",
@@ -2031,7 +2323,7 @@ function TabsContent({
2031
2323
  }) {
2032
2324
  const { value: active } = useTabs();
2033
2325
  if (active !== value) return null;
2034
- return /* @__PURE__ */ jsx25(
2326
+ return /* @__PURE__ */ jsx28(
2035
2327
  "div",
2036
2328
  {
2037
2329
  role: "tabpanel",
@@ -2060,7 +2352,7 @@ var toggleSizeClasses = {
2060
2352
  };
2061
2353
 
2062
2354
  // src/components/toggle.tsx
2063
- import { jsx as jsx26 } from "react/jsx-runtime";
2355
+ import { jsx as jsx29 } from "react/jsx-runtime";
2064
2356
  function toggleVariants({
2065
2357
  variant = "default",
2066
2358
  size = "default",
@@ -2083,7 +2375,7 @@ function Toggle({
2083
2375
  defaultValue: defaultPressed,
2084
2376
  ...onPressedChange ? { onChange: onPressedChange } : {}
2085
2377
  });
2086
- return /* @__PURE__ */ jsx26(
2378
+ return /* @__PURE__ */ jsx29(
2087
2379
  "button",
2088
2380
  {
2089
2381
  type: "button",
@@ -2101,9 +2393,9 @@ function Toggle({
2101
2393
  }
2102
2394
 
2103
2395
  // src/components/toggle-group.tsx
2104
- import * as React36 from "react";
2105
- import { jsx as jsx27 } from "react/jsx-runtime";
2106
- var ToggleGroupContext = React36.createContext({
2396
+ import * as React39 from "react";
2397
+ import { jsx as jsx30 } from "react/jsx-runtime";
2398
+ var ToggleGroupContext = React39.createContext({
2107
2399
  variant: "default",
2108
2400
  size: "default",
2109
2401
  value: [],
@@ -2130,7 +2422,7 @@ function ToggleGroup({
2130
2422
  defaultValue: toArray(defaultValue),
2131
2423
  onChange: (next) => onValueChange?.(type === "single" ? next[0] ?? "" : next)
2132
2424
  });
2133
- const toggle = React36.useCallback(
2425
+ const toggle = React39.useCallback(
2134
2426
  (itemValue) => {
2135
2427
  if (type === "single") {
2136
2428
  setSelected(selected.includes(itemValue) ? [] : [itemValue]);
@@ -2142,7 +2434,7 @@ function ToggleGroup({
2142
2434
  },
2143
2435
  [type, selected, setSelected]
2144
2436
  );
2145
- return /* @__PURE__ */ jsx27(
2437
+ return /* @__PURE__ */ jsx30(
2146
2438
  "div",
2147
2439
  {
2148
2440
  "data-slot": "toggle-group",
@@ -2153,7 +2445,7 @@ function ToggleGroup({
2153
2445
  className
2154
2446
  ),
2155
2447
  ...props,
2156
- children: /* @__PURE__ */ jsx27(ToggleGroupContext.Provider, { value: { variant, size, value: selected, toggle }, children })
2448
+ children: /* @__PURE__ */ jsx30(ToggleGroupContext.Provider, { value: { variant, size, value: selected, toggle }, children })
2157
2449
  }
2158
2450
  );
2159
2451
  }
@@ -2166,11 +2458,11 @@ function ToggleGroupItem({
2166
2458
  onClick,
2167
2459
  ...props
2168
2460
  }) {
2169
- const context = React36.useContext(ToggleGroupContext);
2461
+ const context = React39.useContext(ToggleGroupContext);
2170
2462
  const resolvedVariant = context.variant || variant || "default";
2171
2463
  const resolvedSize = context.size || size || "default";
2172
2464
  const on = context.value.includes(value);
2173
- return /* @__PURE__ */ jsx27(
2465
+ return /* @__PURE__ */ jsx30(
2174
2466
  "button",
2175
2467
  {
2176
2468
  type: "button",
@@ -2196,7 +2488,7 @@ function ToggleGroupItem({
2196
2488
 
2197
2489
  // src/components/switch.tsx
2198
2490
  import "react";
2199
- import { jsx as jsx28 } from "react/jsx-runtime";
2491
+ import { jsx as jsx31 } from "react/jsx-runtime";
2200
2492
  function Switch({
2201
2493
  className,
2202
2494
  checked,
@@ -2212,7 +2504,7 @@ function Switch({
2212
2504
  ...onCheckedChange ? { onChange: onCheckedChange } : {}
2213
2505
  });
2214
2506
  const state = on ? "checked" : "unchecked";
2215
- return /* @__PURE__ */ jsx28(
2507
+ return /* @__PURE__ */ jsx31(
2216
2508
  "button",
2217
2509
  {
2218
2510
  type: "button",
@@ -2230,7 +2522,7 @@ function Switch({
2230
2522
  setOn(!on);
2231
2523
  },
2232
2524
  ...props,
2233
- children: /* @__PURE__ */ jsx28(
2525
+ children: /* @__PURE__ */ jsx31(
2234
2526
  "span",
2235
2527
  {
2236
2528
  "data-slot": "switch-thumb",
@@ -2244,7 +2536,7 @@ function Switch({
2244
2536
 
2245
2537
  // src/components/checkbox.tsx
2246
2538
  import "react";
2247
- import { jsx as jsx29 } from "react/jsx-runtime";
2539
+ import { jsx as jsx32 } from "react/jsx-runtime";
2248
2540
  function Checkbox({
2249
2541
  className,
2250
2542
  checked,
@@ -2260,7 +2552,7 @@ function Checkbox({
2260
2552
  ...onCheckedChange ? { onChange: onCheckedChange } : {}
2261
2553
  });
2262
2554
  const state = on ? "checked" : "unchecked";
2263
- return /* @__PURE__ */ jsx29(
2555
+ return /* @__PURE__ */ jsx32(
2264
2556
  "button",
2265
2557
  {
2266
2558
  type: "button",
@@ -2278,12 +2570,12 @@ function Checkbox({
2278
2570
  setOn(!on);
2279
2571
  },
2280
2572
  ...props,
2281
- children: on && /* @__PURE__ */ jsx29(
2573
+ children: on && /* @__PURE__ */ jsx32(
2282
2574
  "span",
2283
2575
  {
2284
2576
  "data-slot": "checkbox-indicator",
2285
2577
  className: "flex items-center justify-center text-current transition-none",
2286
- children: /* @__PURE__ */ jsx29(
2578
+ children: /* @__PURE__ */ jsx32(
2287
2579
  "svg",
2288
2580
  {
2289
2581
  xmlns: "http://www.w3.org/2000/svg",
@@ -2295,7 +2587,7 @@ function Checkbox({
2295
2587
  strokeLinejoin: "round",
2296
2588
  className: "size-3.5",
2297
2589
  "aria-hidden": "true",
2298
- children: /* @__PURE__ */ jsx29("path", { d: "M20 6 9 17l-5-5" })
2590
+ children: /* @__PURE__ */ jsx32("path", { d: "M20 6 9 17l-5-5" })
2299
2591
  }
2300
2592
  )
2301
2593
  }
@@ -2305,15 +2597,15 @@ function Checkbox({
2305
2597
  }
2306
2598
 
2307
2599
  // src/components/radio-group.tsx
2308
- import * as React39 from "react";
2600
+ import * as React42 from "react";
2309
2601
 
2310
2602
  // src/generated/radio-group.ts
2311
2603
  var RADIO_GROUP_ROOT = "grid gap-3";
2312
2604
  var RADIO_GROUP_ITEM = "border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 aria-invalid:border-destructive aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50";
2313
2605
 
2314
2606
  // src/components/radio-group.tsx
2315
- import { jsx as jsx30 } from "react/jsx-runtime";
2316
- var RadioGroupContext = React39.createContext(
2607
+ import { jsx as jsx33 } from "react/jsx-runtime";
2608
+ var RadioGroupContext = React42.createContext(
2317
2609
  null
2318
2610
  );
2319
2611
  function RadioGroup({
@@ -2330,10 +2622,10 @@ function RadioGroup({
2330
2622
  defaultValue,
2331
2623
  ...onValueChange ? { onChange: onValueChange } : {}
2332
2624
  });
2333
- const itemsRef = React39.useRef([]);
2334
- const [count, setCount] = React39.useState(0);
2625
+ const itemsRef = React42.useRef([]);
2626
+ const [count, setCount] = React42.useState(0);
2335
2627
  const { activeIndex, setActiveIndex, onKeyDown: rovingKeyDown } = useRovingFocus({ count, orientation: "vertical", loop: true });
2336
- const register = React39.useCallback((el) => {
2628
+ const register = React42.useCallback((el) => {
2337
2629
  const list = itemsRef.current;
2338
2630
  let index = list.indexOf(el);
2339
2631
  if (index === -1) {
@@ -2343,11 +2635,11 @@ function RadioGroup({
2343
2635
  }
2344
2636
  return index;
2345
2637
  }, []);
2346
- const ctx = React39.useMemo(
2638
+ const ctx = React42.useMemo(
2347
2639
  () => ({ value: current, setValue: setCurrent, register, activeIndex, setActiveIndex }),
2348
2640
  [current, setCurrent, register, activeIndex, setActiveIndex]
2349
2641
  );
2350
- return /* @__PURE__ */ jsx30(RadioGroupContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx30(
2642
+ return /* @__PURE__ */ jsx33(RadioGroupContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx33(
2351
2643
  "div",
2352
2644
  {
2353
2645
  "data-slot": "radio-group",
@@ -2369,14 +2661,14 @@ function RadioGroupItem({
2369
2661
  onClick,
2370
2662
  ...props
2371
2663
  }) {
2372
- const ctx = React39.useContext(RadioGroupContext);
2664
+ const ctx = React42.useContext(RadioGroupContext);
2373
2665
  if (!ctx) throw new Error("RadioGroupItem must be used within a RadioGroup");
2374
- const indexRef = React39.useRef(-1);
2666
+ const indexRef = React42.useRef(-1);
2375
2667
  const checked = ctx.value === value;
2376
- React39.useEffect(() => {
2668
+ React42.useEffect(() => {
2377
2669
  if (checked) ctx.setActiveIndex(indexRef.current);
2378
2670
  }, [checked]);
2379
- return /* @__PURE__ */ jsx30(
2671
+ return /* @__PURE__ */ jsx33(
2380
2672
  "button",
2381
2673
  {
2382
2674
  ref: (el) => {
@@ -2395,18 +2687,18 @@ function RadioGroupItem({
2395
2687
  ctx.setValue(value);
2396
2688
  },
2397
2689
  ...props,
2398
- children: checked ? /* @__PURE__ */ jsx30(
2690
+ children: checked ? /* @__PURE__ */ jsx33(
2399
2691
  "span",
2400
2692
  {
2401
2693
  "data-slot": "radio-group-indicator",
2402
2694
  className: "relative flex items-center justify-center",
2403
- children: /* @__PURE__ */ jsx30(
2695
+ children: /* @__PURE__ */ jsx33(
2404
2696
  "svg",
2405
2697
  {
2406
2698
  className: "fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2",
2407
2699
  viewBox: "0 0 24 24",
2408
2700
  "aria-hidden": "true",
2409
- children: /* @__PURE__ */ jsx30("circle", { cx: "12", cy: "12", r: "10" })
2701
+ children: /* @__PURE__ */ jsx33("circle", { cx: "12", cy: "12", r: "10" })
2410
2702
  }
2411
2703
  )
2412
2704
  }
@@ -2416,7 +2708,7 @@ function RadioGroupItem({
2416
2708
  }
2417
2709
 
2418
2710
  // src/components/slider.tsx
2419
- import * as React40 from "react";
2711
+ import * as React43 from "react";
2420
2712
 
2421
2713
  // src/generated/slider.ts
2422
2714
  var SLIDER_ROOT = "relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col";
@@ -2425,7 +2717,7 @@ var SLIDER_RANGE = "bg-primary absolute data-[orientation=horizontal]:h-full dat
2425
2717
  var SLIDER_THUMB = "border-primary ring-ring/50 block size-4 shrink-0 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50";
2426
2718
 
2427
2719
  // src/components/slider.tsx
2428
- import { jsx as jsx31, jsxs as jsxs5 } from "react/jsx-runtime";
2720
+ import { jsx as jsx34, jsxs as jsxs7 } from "react/jsx-runtime";
2429
2721
  function clampStep(value, min, max, step) {
2430
2722
  const clamped = Math.min(max, Math.max(min, value));
2431
2723
  if (step <= 0) return clamped;
@@ -2452,9 +2744,9 @@ function Slider({
2452
2744
  const current = clampStep(raw, min, max, step);
2453
2745
  const span = Math.max(max - min, Number.EPSILON);
2454
2746
  const percent = Math.min(100, Math.max(0, (current - min) / span * 100));
2455
- const trackRef = React40.useRef(null);
2456
- const draggingRef = React40.useRef(false);
2457
- const valueFromPointer = React40.useCallback(
2747
+ const trackRef = React43.useRef(null);
2748
+ const draggingRef = React43.useRef(false);
2749
+ const valueFromPointer = React43.useCallback(
2458
2750
  (clientX, clientY) => {
2459
2751
  const rect = trackRef.current?.getBoundingClientRect();
2460
2752
  if (!rect) return current;
@@ -2503,7 +2795,7 @@ function Slider({
2503
2795
  };
2504
2796
  const rangeStyle = orientation === "vertical" ? { height: `${percent}%` } : { width: `${percent}%` };
2505
2797
  const thumbStyle = orientation === "vertical" ? { position: "absolute", bottom: `${percent}%`, left: "50%", transform: "translate(-50%, 50%)" } : { position: "absolute", left: `${percent}%`, top: "50%", transform: "translate(-50%, -50%)" };
2506
- return /* @__PURE__ */ jsxs5(
2798
+ return /* @__PURE__ */ jsxs7(
2507
2799
  "span",
2508
2800
  {
2509
2801
  "data-slot": "slider",
@@ -2515,14 +2807,14 @@ function Slider({
2515
2807
  onPointerMove,
2516
2808
  onPointerUp,
2517
2809
  children: [
2518
- /* @__PURE__ */ jsx31(
2810
+ /* @__PURE__ */ jsx34(
2519
2811
  "span",
2520
2812
  {
2521
2813
  ref: trackRef,
2522
2814
  "data-slot": "slider-track",
2523
2815
  "data-orientation": orientation,
2524
2816
  className: SLIDER_TRACK,
2525
- children: /* @__PURE__ */ jsx31(
2817
+ children: /* @__PURE__ */ jsx34(
2526
2818
  "span",
2527
2819
  {
2528
2820
  "data-slot": "slider-range",
@@ -2533,7 +2825,7 @@ function Slider({
2533
2825
  )
2534
2826
  }
2535
2827
  ),
2536
- /* @__PURE__ */ jsx31(
2828
+ /* @__PURE__ */ jsx34(
2537
2829
  "span",
2538
2830
  {
2539
2831
  "data-slot": "slider-thumb",
@@ -2568,15 +2860,15 @@ var scrollBarOrientations = {
2568
2860
  };
2569
2861
 
2570
2862
  // src/components/scroll-area.tsx
2571
- import { jsx as jsx32, jsxs as jsxs6 } from "react/jsx-runtime";
2863
+ import { jsx as jsx35, jsxs as jsxs8 } from "react/jsx-runtime";
2572
2864
  function ScrollArea({
2573
2865
  className,
2574
2866
  children,
2575
2867
  ...props
2576
2868
  }) {
2577
- return /* @__PURE__ */ jsxs6("div", { "data-slot": "scroll-area", className: cn("relative", className), ...props, children: [
2578
- /* @__PURE__ */ jsx32("div", { "data-slot": "scroll-area-viewport", className: SCROLL_AREA_VIEWPORT, children }),
2579
- /* @__PURE__ */ jsx32(ScrollBar, {})
2869
+ return /* @__PURE__ */ jsxs8("div", { "data-slot": "scroll-area", className: cn("relative", className), ...props, children: [
2870
+ /* @__PURE__ */ jsx35("div", { "data-slot": "scroll-area-viewport", className: SCROLL_AREA_VIEWPORT, children }),
2871
+ /* @__PURE__ */ jsx35(ScrollBar, {})
2580
2872
  ] });
2581
2873
  }
2582
2874
  function ScrollBar({
@@ -2584,20 +2876,20 @@ function ScrollBar({
2584
2876
  orientation = "vertical",
2585
2877
  ...props
2586
2878
  }) {
2587
- return /* @__PURE__ */ jsx32(
2879
+ return /* @__PURE__ */ jsx35(
2588
2880
  "div",
2589
2881
  {
2590
2882
  "data-slot": "scroll-area-scrollbar",
2591
2883
  "data-orientation": orientation,
2592
2884
  className: cn(SCROLLBAR_BASE, scrollBarOrientations[orientation], className),
2593
2885
  ...props,
2594
- children: /* @__PURE__ */ jsx32("div", { "data-slot": "scroll-area-thumb", className: SCROLL_AREA_THUMB })
2886
+ children: /* @__PURE__ */ jsx35("div", { "data-slot": "scroll-area-thumb", className: SCROLL_AREA_THUMB })
2595
2887
  }
2596
2888
  );
2597
2889
  }
2598
2890
 
2599
2891
  // src/components/sidebar.tsx
2600
- import * as React42 from "react";
2892
+ import * as React45 from "react";
2601
2893
 
2602
2894
  // src/generated/sidebar.ts
2603
2895
  var SIDEBAR_MENU_BUTTON_BASE = "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";
@@ -2627,12 +2919,12 @@ var SIDEBAR_MENU = "flex w-full min-w-0 flex-col gap-1";
2627
2919
  var SIDEBAR_MENU_ITEM = "group/menu-item relative";
2628
2920
 
2629
2921
  // src/components/sidebar.tsx
2630
- import { jsx as jsx33, jsxs as jsxs7 } from "react/jsx-runtime";
2922
+ import { jsx as jsx36, jsxs as jsxs9 } from "react/jsx-runtime";
2631
2923
  var SIDEBAR_WIDTH = "16rem";
2632
2924
  var SIDEBAR_WIDTH_ICON = "3rem";
2633
- var SidebarContext = React42.createContext(null);
2925
+ var SidebarContext = React45.createContext(null);
2634
2926
  function useSidebar() {
2635
- const ctx = React42.useContext(SidebarContext);
2927
+ const ctx = React45.useContext(SidebarContext);
2636
2928
  if (!ctx) throw new Error("useSidebar must be used within a SidebarProvider.");
2637
2929
  return ctx;
2638
2930
  }
@@ -2650,16 +2942,16 @@ function SidebarProvider({
2650
2942
  defaultValue: defaultOpen,
2651
2943
  ...onOpenChange ? { onChange: onOpenChange } : {}
2652
2944
  });
2653
- const toggleSidebar = React42.useCallback(
2945
+ const toggleSidebar = React45.useCallback(
2654
2946
  () => setOpen(!open),
2655
2947
  [open, setOpen]
2656
2948
  );
2657
2949
  const state = open ? "expanded" : "collapsed";
2658
- const contextValue = React42.useMemo(
2950
+ const contextValue = React45.useMemo(
2659
2951
  () => ({ state, open, setOpen, toggleSidebar }),
2660
2952
  [state, open, setOpen, toggleSidebar]
2661
2953
  );
2662
- return /* @__PURE__ */ jsx33(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx33(
2954
+ return /* @__PURE__ */ jsx36(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx36(
2663
2955
  "div",
2664
2956
  {
2665
2957
  "data-slot": "sidebar-wrapper",
@@ -2684,7 +2976,7 @@ function Sidebar({
2684
2976
  }) {
2685
2977
  const { state } = useSidebar();
2686
2978
  if (collapsible === "none") {
2687
- return /* @__PURE__ */ jsx33(
2979
+ return /* @__PURE__ */ jsx36(
2688
2980
  "div",
2689
2981
  {
2690
2982
  "data-slot": "sidebar",
@@ -2694,7 +2986,7 @@ function Sidebar({
2694
2986
  }
2695
2987
  );
2696
2988
  }
2697
- return /* @__PURE__ */ jsx33(
2989
+ return /* @__PURE__ */ jsx36(
2698
2990
  "div",
2699
2991
  {
2700
2992
  className: "group peer text-sidebar-foreground hidden md:block",
@@ -2703,7 +2995,7 @@ function Sidebar({
2703
2995
  "data-variant": variant,
2704
2996
  "data-side": side,
2705
2997
  "data-slot": "sidebar",
2706
- children: /* @__PURE__ */ jsx33(
2998
+ children: /* @__PURE__ */ jsx36(
2707
2999
  "div",
2708
3000
  {
2709
3001
  "data-slot": "sidebar-inner",
@@ -2722,7 +3014,7 @@ function SidebarTrigger({
2722
3014
  ...props
2723
3015
  }) {
2724
3016
  const { toggleSidebar } = useSidebar();
2725
- return /* @__PURE__ */ jsxs7(
3017
+ return /* @__PURE__ */ jsxs9(
2726
3018
  "button",
2727
3019
  {
2728
3020
  type: "button",
@@ -2737,7 +3029,7 @@ function SidebarTrigger({
2737
3029
  ...props,
2738
3030
  children: [
2739
3031
  children,
2740
- /* @__PURE__ */ jsx33("span", { className: "sr-only", children: "Toggle Sidebar" })
3032
+ /* @__PURE__ */ jsx36("span", { className: "sr-only", children: "Toggle Sidebar" })
2741
3033
  ]
2742
3034
  }
2743
3035
  );
@@ -2747,7 +3039,7 @@ function SidebarRail({
2747
3039
  ...props
2748
3040
  }) {
2749
3041
  const { toggleSidebar } = useSidebar();
2750
- return /* @__PURE__ */ jsx33(
3042
+ return /* @__PURE__ */ jsx36(
2751
3043
  "button",
2752
3044
  {
2753
3045
  type: "button",
@@ -2763,7 +3055,7 @@ function SidebarRail({
2763
3055
  );
2764
3056
  }
2765
3057
  function SidebarInset({ className, ...props }) {
2766
- return /* @__PURE__ */ jsx33(
3058
+ return /* @__PURE__ */ jsx36(
2767
3059
  "main",
2768
3060
  {
2769
3061
  "data-slot": "sidebar-inset",
@@ -2773,7 +3065,7 @@ function SidebarInset({ className, ...props }) {
2773
3065
  );
2774
3066
  }
2775
3067
  function SidebarHeader({ className, ...props }) {
2776
- return /* @__PURE__ */ jsx33(
3068
+ return /* @__PURE__ */ jsx36(
2777
3069
  "div",
2778
3070
  {
2779
3071
  "data-slot": "sidebar-header",
@@ -2784,7 +3076,7 @@ function SidebarHeader({ className, ...props }) {
2784
3076
  );
2785
3077
  }
2786
3078
  function SidebarFooter({ className, ...props }) {
2787
- return /* @__PURE__ */ jsx33(
3079
+ return /* @__PURE__ */ jsx36(
2788
3080
  "div",
2789
3081
  {
2790
3082
  "data-slot": "sidebar-footer",
@@ -2798,7 +3090,7 @@ function SidebarSeparator({
2798
3090
  className,
2799
3091
  ...props
2800
3092
  }) {
2801
- return /* @__PURE__ */ jsx33(
3093
+ return /* @__PURE__ */ jsx36(
2802
3094
  "div",
2803
3095
  {
2804
3096
  "data-slot": "sidebar-separator",
@@ -2810,7 +3102,7 @@ function SidebarSeparator({
2810
3102
  );
2811
3103
  }
2812
3104
  function SidebarContent({ className, ...props }) {
2813
- return /* @__PURE__ */ jsx33(
3105
+ return /* @__PURE__ */ jsx36(
2814
3106
  "div",
2815
3107
  {
2816
3108
  "data-slot": "sidebar-content",
@@ -2821,7 +3113,7 @@ function SidebarContent({ className, ...props }) {
2821
3113
  );
2822
3114
  }
2823
3115
  function SidebarGroup({ className, ...props }) {
2824
- return /* @__PURE__ */ jsx33(
3116
+ return /* @__PURE__ */ jsx36(
2825
3117
  "div",
2826
3118
  {
2827
3119
  "data-slot": "sidebar-group",
@@ -2837,7 +3129,7 @@ function SidebarGroupLabel({
2837
3129
  ...props
2838
3130
  }) {
2839
3131
  const Comp = asChild ? Slot : "div";
2840
- return /* @__PURE__ */ jsx33(
3132
+ return /* @__PURE__ */ jsx36(
2841
3133
  Comp,
2842
3134
  {
2843
3135
  "data-slot": "sidebar-group-label",
@@ -2851,7 +3143,7 @@ function SidebarGroupContent({
2851
3143
  className,
2852
3144
  ...props
2853
3145
  }) {
2854
- return /* @__PURE__ */ jsx33(
3146
+ return /* @__PURE__ */ jsx36(
2855
3147
  "div",
2856
3148
  {
2857
3149
  "data-slot": "sidebar-group-content",
@@ -2862,7 +3154,7 @@ function SidebarGroupContent({
2862
3154
  );
2863
3155
  }
2864
3156
  function SidebarMenu({ className, ...props }) {
2865
- return /* @__PURE__ */ jsx33(
3157
+ return /* @__PURE__ */ jsx36(
2866
3158
  "ul",
2867
3159
  {
2868
3160
  "data-slot": "sidebar-menu",
@@ -2873,7 +3165,7 @@ function SidebarMenu({ className, ...props }) {
2873
3165
  );
2874
3166
  }
2875
3167
  function SidebarMenuItem({ className, ...props }) {
2876
- return /* @__PURE__ */ jsx33(
3168
+ return /* @__PURE__ */ jsx36(
2877
3169
  "li",
2878
3170
  {
2879
3171
  "data-slot": "sidebar-menu-item",
@@ -2892,7 +3184,7 @@ function SidebarMenuButton({
2892
3184
  ...props
2893
3185
  }) {
2894
3186
  const Comp = asChild ? Slot : "button";
2895
- return /* @__PURE__ */ jsx33(
3187
+ return /* @__PURE__ */ jsx36(
2896
3188
  Comp,
2897
3189
  {
2898
3190
  "data-slot": "sidebar-menu-button",
@@ -2911,7 +3203,7 @@ function SidebarMenuButton({
2911
3203
  }
2912
3204
 
2913
3205
  // src/components/carousel.tsx
2914
- import * as React43 from "react";
3206
+ import * as React46 from "react";
2915
3207
 
2916
3208
  // src/generated/carousel.ts
2917
3209
  var CAROUSEL_CONTENT_VIEWPORT = "overflow-hidden";
@@ -2930,10 +3222,10 @@ var CAROUSEL_EDGE_FADE_PREV = "pointer-events-none absolute inset-y-0 left-0 w-2
2930
3222
  var CAROUSEL_EDGE_FADE_NEXT = "pointer-events-none absolute inset-y-0 right-0 w-20 bg-gradient-to-l from-background via-background/60 to-transparent transition-opacity duration-300";
2931
3223
 
2932
3224
  // src/components/carousel.tsx
2933
- import { Fragment, jsx as jsx34, jsxs as jsxs8 } from "react/jsx-runtime";
2934
- var CarouselContext = React43.createContext(null);
3225
+ import { Fragment as Fragment3, jsx as jsx37, jsxs as jsxs10 } from "react/jsx-runtime";
3226
+ var CarouselContext = React46.createContext(null);
2935
3227
  function useCarousel() {
2936
- const context = React43.useContext(CarouselContext);
3228
+ const context = React46.useContext(CarouselContext);
2937
3229
  if (!context) {
2938
3230
  throw new Error("useCarousel must be used within a <Carousel />");
2939
3231
  }
@@ -2954,13 +3246,13 @@ function Carousel({
2954
3246
  defaultValue: defaultIndex,
2955
3247
  onChange: onIndexChange
2956
3248
  });
2957
- const [count, setCount] = React43.useState(0);
3249
+ const [count, setCount] = React46.useState(0);
2958
3250
  const canScrollPrev = index > 0;
2959
3251
  const canScrollNext = index < count - 1;
2960
- const scrollPrev = React43.useCallback(() => {
3252
+ const scrollPrev = React46.useCallback(() => {
2961
3253
  if (index > 0) setIndex(index - 1);
2962
3254
  }, [index, setIndex]);
2963
- const scrollNext = React43.useCallback(() => {
3255
+ const scrollNext = React46.useCallback(() => {
2964
3256
  if (index < count - 1) setIndex(index + 1);
2965
3257
  }, [index, count, setIndex]);
2966
3258
  const handleKeyDown = (event) => {
@@ -2973,7 +3265,7 @@ function Carousel({
2973
3265
  }
2974
3266
  onKeyDown?.(event);
2975
3267
  };
2976
- return /* @__PURE__ */ jsx34(
3268
+ return /* @__PURE__ */ jsx37(
2977
3269
  CarouselContext.Provider,
2978
3270
  {
2979
3271
  value: {
@@ -2986,7 +3278,7 @@ function Carousel({
2986
3278
  canScrollPrev,
2987
3279
  canScrollNext
2988
3280
  },
2989
- children: /* @__PURE__ */ jsx34(
3281
+ children: /* @__PURE__ */ jsx37(
2990
3282
  "div",
2991
3283
  {
2992
3284
  onKeyDownCapture: handleKeyDown,
@@ -3008,12 +3300,12 @@ function CarouselContent({
3008
3300
  ...props
3009
3301
  }) {
3010
3302
  const { orientation, index, setCount } = useCarousel();
3011
- const childCount = React43.Children.count(children);
3012
- React43.useEffect(() => {
3303
+ const childCount = React46.Children.count(children);
3304
+ React46.useEffect(() => {
3013
3305
  setCount(childCount);
3014
3306
  }, [childCount, setCount]);
3015
3307
  const transform = orientation === "horizontal" ? `translate3d(-${index * 100}%, 0, 0)` : `translate3d(0, -${index * 100}%, 0)`;
3016
- return /* @__PURE__ */ jsx34("div", { className: CAROUSEL_CONTENT_VIEWPORT, "data-slot": "carousel-content", children: /* @__PURE__ */ jsx34(
3308
+ return /* @__PURE__ */ jsx37("div", { className: CAROUSEL_CONTENT_VIEWPORT, "data-slot": "carousel-content", children: /* @__PURE__ */ jsx37(
3017
3309
  "div",
3018
3310
  {
3019
3311
  className: cn(
@@ -3032,7 +3324,7 @@ function CarouselItem({
3032
3324
  ...props
3033
3325
  }) {
3034
3326
  const { orientation } = useCarousel();
3035
- return /* @__PURE__ */ jsx34(
3327
+ return /* @__PURE__ */ jsx37(
3036
3328
  "div",
3037
3329
  {
3038
3330
  role: "group",
@@ -3051,8 +3343,8 @@ function CarouselEdgeFade({
3051
3343
  className
3052
3344
  }) {
3053
3345
  const { canScrollPrev, canScrollNext } = useCarousel();
3054
- return /* @__PURE__ */ jsxs8(Fragment, { children: [
3055
- /* @__PURE__ */ jsx34(
3346
+ return /* @__PURE__ */ jsxs10(Fragment3, { children: [
3347
+ /* @__PURE__ */ jsx37(
3056
3348
  "div",
3057
3349
  {
3058
3350
  "aria-hidden": true,
@@ -3063,7 +3355,7 @@ function CarouselEdgeFade({
3063
3355
  )
3064
3356
  }
3065
3357
  ),
3066
- /* @__PURE__ */ jsx34(
3358
+ /* @__PURE__ */ jsx37(
3067
3359
  "div",
3068
3360
  {
3069
3361
  "aria-hidden": true,
@@ -3083,7 +3375,7 @@ function CarouselPrevious({
3083
3375
  ...props
3084
3376
  }) {
3085
3377
  const { orientation, scrollPrev, canScrollPrev } = useCarousel();
3086
- return /* @__PURE__ */ jsxs8(
3378
+ return /* @__PURE__ */ jsxs10(
3087
3379
  Button,
3088
3380
  {
3089
3381
  "data-slot": "carousel-previous",
@@ -3098,7 +3390,7 @@ function CarouselPrevious({
3098
3390
  onClick: scrollPrev,
3099
3391
  ...props,
3100
3392
  children: [
3101
- /* @__PURE__ */ jsx34(
3393
+ /* @__PURE__ */ jsx37(
3102
3394
  "svg",
3103
3395
  {
3104
3396
  xmlns: "http://www.w3.org/2000/svg",
@@ -3109,10 +3401,10 @@ function CarouselPrevious({
3109
3401
  strokeLinecap: "round",
3110
3402
  strokeLinejoin: "round",
3111
3403
  "aria-hidden": "true",
3112
- children: /* @__PURE__ */ jsx34("path", { d: "m15 18-6-6 6-6" })
3404
+ children: /* @__PURE__ */ jsx37("path", { d: "m15 18-6-6 6-6" })
3113
3405
  }
3114
3406
  ),
3115
- /* @__PURE__ */ jsx34("span", { className: "sr-only", children: "Previous slide" })
3407
+ /* @__PURE__ */ jsx37("span", { className: "sr-only", children: "Previous slide" })
3116
3408
  ]
3117
3409
  }
3118
3410
  );
@@ -3124,7 +3416,7 @@ function CarouselNext({
3124
3416
  ...props
3125
3417
  }) {
3126
3418
  const { orientation, scrollNext, canScrollNext } = useCarousel();
3127
- return /* @__PURE__ */ jsxs8(
3419
+ return /* @__PURE__ */ jsxs10(
3128
3420
  Button,
3129
3421
  {
3130
3422
  "data-slot": "carousel-next",
@@ -3139,7 +3431,7 @@ function CarouselNext({
3139
3431
  onClick: scrollNext,
3140
3432
  ...props,
3141
3433
  children: [
3142
- /* @__PURE__ */ jsx34(
3434
+ /* @__PURE__ */ jsx37(
3143
3435
  "svg",
3144
3436
  {
3145
3437
  xmlns: "http://www.w3.org/2000/svg",
@@ -3150,17 +3442,17 @@ function CarouselNext({
3150
3442
  strokeLinecap: "round",
3151
3443
  strokeLinejoin: "round",
3152
3444
  "aria-hidden": "true",
3153
- children: /* @__PURE__ */ jsx34("path", { d: "m9 18 6-6-6-6" })
3445
+ children: /* @__PURE__ */ jsx37("path", { d: "m9 18 6-6-6-6" })
3154
3446
  }
3155
3447
  ),
3156
- /* @__PURE__ */ jsx34("span", { className: "sr-only", children: "Next slide" })
3448
+ /* @__PURE__ */ jsx37("span", { className: "sr-only", children: "Next slide" })
3157
3449
  ]
3158
3450
  }
3159
3451
  );
3160
3452
  }
3161
3453
 
3162
3454
  // src/components/input-otp.tsx
3163
- import * as React44 from "react";
3455
+ import * as React47 from "react";
3164
3456
 
3165
3457
  // src/generated/input-otp.ts
3166
3458
  var INPUT_OTP_CONTAINER = "relative flex items-center gap-2 has-disabled:opacity-50";
@@ -3171,10 +3463,10 @@ var INPUT_OTP_SLOT_CARET_WRAPPER = "pointer-events-none absolute inset-0 flex it
3171
3463
  var INPUT_OTP_SLOT_CARET = "animate-caret-blink bg-foreground h-4 w-px duration-1000";
3172
3464
 
3173
3465
  // src/components/input-otp.tsx
3174
- import { jsx as jsx35, jsxs as jsxs9 } from "react/jsx-runtime";
3175
- var InputOTPContext = React44.createContext(null);
3466
+ import { jsx as jsx38, jsxs as jsxs11 } from "react/jsx-runtime";
3467
+ var InputOTPContext = React47.createContext(null);
3176
3468
  function useInputOTP() {
3177
- const context = React44.useContext(InputOTPContext);
3469
+ const context = React47.useContext(InputOTPContext);
3178
3470
  if (!context) {
3179
3471
  throw new Error("InputOTP slots must be used within an <InputOTP />");
3180
3472
  }
@@ -3196,16 +3488,16 @@ function InputOTP({
3196
3488
  defaultValue,
3197
3489
  onChange
3198
3490
  });
3199
- const [focused, setFocused] = React44.useState(false);
3491
+ const [focused, setFocused] = React47.useState(false);
3200
3492
  const activeIndex = focused ? Math.min(value.length, maxLength - 1) : -1;
3201
- return /* @__PURE__ */ jsx35(InputOTPContext.Provider, { value: { value, maxLength, activeIndex }, children: /* @__PURE__ */ jsxs9(
3493
+ return /* @__PURE__ */ jsx38(InputOTPContext.Provider, { value: { value, maxLength, activeIndex }, children: /* @__PURE__ */ jsxs11(
3202
3494
  "div",
3203
3495
  {
3204
3496
  "data-slot": "input-otp",
3205
3497
  className: cn(INPUT_OTP_CONTAINER, containerClassName),
3206
3498
  children: [
3207
3499
  children,
3208
- /* @__PURE__ */ jsx35(
3500
+ /* @__PURE__ */ jsx38(
3209
3501
  "input",
3210
3502
  {
3211
3503
  inputMode: "numeric",
@@ -3228,7 +3520,7 @@ function InputOTPGroup({
3228
3520
  className,
3229
3521
  ...props
3230
3522
  }) {
3231
- return /* @__PURE__ */ jsx35(
3523
+ return /* @__PURE__ */ jsx38(
3232
3524
  "div",
3233
3525
  {
3234
3526
  "data-slot": "input-otp-group",
@@ -3242,7 +3534,7 @@ function InputOTPSlot({ index, className, ...props }) {
3242
3534
  const char = value[index];
3243
3535
  const isActive = activeIndex === index;
3244
3536
  const hasFakeCaret = isActive && char === void 0;
3245
- return /* @__PURE__ */ jsxs9(
3537
+ return /* @__PURE__ */ jsxs11(
3246
3538
  "div",
3247
3539
  {
3248
3540
  "data-slot": "input-otp-slot",
@@ -3251,13 +3543,13 @@ function InputOTPSlot({ index, className, ...props }) {
3251
3543
  ...props,
3252
3544
  children: [
3253
3545
  char,
3254
- hasFakeCaret && /* @__PURE__ */ jsx35("div", { className: INPUT_OTP_SLOT_CARET_WRAPPER, children: /* @__PURE__ */ jsx35("div", { className: INPUT_OTP_SLOT_CARET }) })
3546
+ hasFakeCaret && /* @__PURE__ */ jsx38("div", { className: INPUT_OTP_SLOT_CARET_WRAPPER, children: /* @__PURE__ */ jsx38("div", { className: INPUT_OTP_SLOT_CARET }) })
3255
3547
  ]
3256
3548
  }
3257
3549
  );
3258
3550
  }
3259
3551
  function InputOTPSeparator({ ...props }) {
3260
- return /* @__PURE__ */ jsx35("div", { "data-slot": "input-otp-separator", role: "separator", ...props, children: /* @__PURE__ */ jsx35(
3552
+ return /* @__PURE__ */ jsx38("div", { "data-slot": "input-otp-separator", role: "separator", ...props, children: /* @__PURE__ */ jsx38(
3261
3553
  "svg",
3262
3554
  {
3263
3555
  xmlns: "http://www.w3.org/2000/svg",
@@ -3268,27 +3560,27 @@ function InputOTPSeparator({ ...props }) {
3268
3560
  strokeLinecap: "round",
3269
3561
  strokeLinejoin: "round",
3270
3562
  "aria-hidden": "true",
3271
- children: /* @__PURE__ */ jsx35("path", { d: "M5 12h14" })
3563
+ children: /* @__PURE__ */ jsx38("path", { d: "M5 12h14" })
3272
3564
  }
3273
3565
  ) });
3274
3566
  }
3275
3567
 
3276
3568
  // src/components/tooltip.tsx
3277
- import * as React45 from "react";
3569
+ import * as React48 from "react";
3278
3570
 
3279
3571
  // src/generated/tooltip.ts
3280
3572
  var TOOLTIP_CONTENT = "bg-foreground text-background 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 rounded-md px-3 py-1.5 text-xs text-balance";
3281
3573
 
3282
3574
  // src/components/tooltip.tsx
3283
- import { Fragment as Fragment2, jsx as jsx36 } from "react/jsx-runtime";
3284
- var TooltipContext = React45.createContext(null);
3575
+ import { Fragment as Fragment4, jsx as jsx39 } from "react/jsx-runtime";
3576
+ var TooltipContext = React48.createContext(null);
3285
3577
  function useTooltip() {
3286
- const ctx = React45.useContext(TooltipContext);
3578
+ const ctx = React48.useContext(TooltipContext);
3287
3579
  if (!ctx) throw new Error("Tooltip parts must be used within <Tooltip>");
3288
3580
  return ctx;
3289
3581
  }
3290
3582
  function TooltipProvider({ children }) {
3291
- return /* @__PURE__ */ jsx36(Fragment2, { children });
3583
+ return /* @__PURE__ */ jsx39(Fragment4, { children });
3292
3584
  }
3293
3585
  function Tooltip({ open, defaultOpen = false, onOpenChange, children }) {
3294
3586
  const [isOpen, setOpen] = useControllableState({
@@ -3296,8 +3588,8 @@ function Tooltip({ open, defaultOpen = false, onOpenChange, children }) {
3296
3588
  defaultValue: defaultOpen,
3297
3589
  ...onOpenChange ? { onChange: onOpenChange } : {}
3298
3590
  });
3299
- const anchorRef = React45.useRef(null);
3300
- return /* @__PURE__ */ jsx36(TooltipProvider, { children: /* @__PURE__ */ jsx36(TooltipContext.Provider, { value: { open: isOpen, setOpen, anchorRef }, children }) });
3591
+ const anchorRef = React48.useRef(null);
3592
+ return /* @__PURE__ */ jsx39(TooltipProvider, { children: /* @__PURE__ */ jsx39(TooltipContext.Provider, { value: { open: isOpen, setOpen, anchorRef }, children }) });
3301
3593
  }
3302
3594
  function TooltipTrigger({
3303
3595
  asChild = false,
@@ -3309,7 +3601,7 @@ function TooltipTrigger({
3309
3601
  }) {
3310
3602
  const { setOpen, anchorRef } = useTooltip();
3311
3603
  const Comp = asChild ? Slot : "button";
3312
- return /* @__PURE__ */ jsx36(
3604
+ return /* @__PURE__ */ jsx39(
3313
3605
  Comp,
3314
3606
  {
3315
3607
  "data-slot": "tooltip-trigger",
@@ -3350,7 +3642,7 @@ function TooltipContent({
3350
3642
  offset: sideOffset
3351
3643
  });
3352
3644
  if (!isPresent) return null;
3353
- return /* @__PURE__ */ jsx36(Portal, { children: /* @__PURE__ */ jsx36(
3645
+ return /* @__PURE__ */ jsx39(Portal, { children: /* @__PURE__ */ jsx39(
3354
3646
  "div",
3355
3647
  {
3356
3648
  "data-slot": "tooltip-content",
@@ -3367,16 +3659,16 @@ function TooltipContent({
3367
3659
  }
3368
3660
 
3369
3661
  // src/components/popover.tsx
3370
- import * as React46 from "react";
3662
+ import * as React49 from "react";
3371
3663
 
3372
3664
  // src/generated/popover.ts
3373
3665
  var POPOVER_CONTENT = "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 shadow-md outline-hidden";
3374
3666
 
3375
3667
  // src/components/popover.tsx
3376
- import { jsx as jsx37 } from "react/jsx-runtime";
3377
- var PopoverContext = React46.createContext(null);
3668
+ import { jsx as jsx40 } from "react/jsx-runtime";
3669
+ var PopoverContext = React49.createContext(null);
3378
3670
  function usePopover() {
3379
- const ctx = React46.useContext(PopoverContext);
3671
+ const ctx = React49.useContext(PopoverContext);
3380
3672
  if (!ctx) throw new Error("Popover parts must be used within <Popover>");
3381
3673
  return ctx;
3382
3674
  }
@@ -3386,13 +3678,13 @@ function Popover({ open, defaultOpen = false, onOpenChange, children }) {
3386
3678
  defaultValue: defaultOpen,
3387
3679
  ...onOpenChange ? { onChange: onOpenChange } : {}
3388
3680
  });
3389
- const anchorRef = React46.useRef(null);
3390
- return /* @__PURE__ */ jsx37(PopoverContext.Provider, { value: { open: isOpen, setOpen, anchorRef }, children });
3681
+ const anchorRef = React49.useRef(null);
3682
+ return /* @__PURE__ */ jsx40(PopoverContext.Provider, { value: { open: isOpen, setOpen, anchorRef }, children });
3391
3683
  }
3392
3684
  function PopoverTrigger({ asChild = false, onClick, ...props }) {
3393
3685
  const { open, setOpen, anchorRef } = usePopover();
3394
3686
  const Comp = asChild ? Slot : "button";
3395
- return /* @__PURE__ */ jsx37(
3687
+ return /* @__PURE__ */ jsx40(
3396
3688
  Comp,
3397
3689
  {
3398
3690
  "data-slot": "popover-trigger",
@@ -3409,7 +3701,7 @@ function PopoverTrigger({ asChild = false, onClick, ...props }) {
3409
3701
  function PopoverAnchor({ asChild = false, ...props }) {
3410
3702
  const { anchorRef } = usePopover();
3411
3703
  const Comp = asChild ? Slot : "div";
3412
- return /* @__PURE__ */ jsx37(
3704
+ return /* @__PURE__ */ jsx40(
3413
3705
  Comp,
3414
3706
  {
3415
3707
  "data-slot": "popover-anchor",
@@ -3441,7 +3733,7 @@ function PopoverContent({
3441
3733
  exclude: [anchorRef]
3442
3734
  });
3443
3735
  if (!isPresent) return null;
3444
- return /* @__PURE__ */ jsx37(Portal, { children: /* @__PURE__ */ jsx37(
3736
+ return /* @__PURE__ */ jsx40(Portal, { children: /* @__PURE__ */ jsx40(
3445
3737
  "div",
3446
3738
  {
3447
3739
  "data-slot": "popover-content",
@@ -3461,16 +3753,16 @@ function PopoverContent({
3461
3753
  }
3462
3754
 
3463
3755
  // src/components/hover-card.tsx
3464
- import * as React47 from "react";
3756
+ import * as React50 from "react";
3465
3757
 
3466
3758
  // src/generated/hover-card.ts
3467
3759
  var HOVER_CARD_CONTENT = "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 rounded-md border p-4 shadow-md outline-hidden";
3468
3760
 
3469
3761
  // src/components/hover-card.tsx
3470
- import { jsx as jsx38 } from "react/jsx-runtime";
3471
- var HoverCardContext = React47.createContext(null);
3762
+ import { jsx as jsx41 } from "react/jsx-runtime";
3763
+ var HoverCardContext = React50.createContext(null);
3472
3764
  function useHoverCard() {
3473
- const ctx = React47.useContext(HoverCardContext);
3765
+ const ctx = React50.useContext(HoverCardContext);
3474
3766
  if (!ctx) throw new Error("HoverCard parts must be used within <HoverCard>");
3475
3767
  return ctx;
3476
3768
  }
@@ -3480,8 +3772,8 @@ function HoverCard({ open, defaultOpen = false, onOpenChange, children }) {
3480
3772
  defaultValue: defaultOpen,
3481
3773
  ...onOpenChange ? { onChange: onOpenChange } : {}
3482
3774
  });
3483
- const anchorRef = React47.useRef(null);
3484
- return /* @__PURE__ */ jsx38(HoverCardContext.Provider, { value: { open: isOpen, setOpen, anchorRef }, children });
3775
+ const anchorRef = React50.useRef(null);
3776
+ return /* @__PURE__ */ jsx41(HoverCardContext.Provider, { value: { open: isOpen, setOpen, anchorRef }, children });
3485
3777
  }
3486
3778
  function HoverCardTrigger({
3487
3779
  asChild = false,
@@ -3491,7 +3783,7 @@ function HoverCardTrigger({
3491
3783
  }) {
3492
3784
  const { setOpen, anchorRef } = useHoverCard();
3493
3785
  const Comp = asChild ? Slot : "a";
3494
- return /* @__PURE__ */ jsx38(
3786
+ return /* @__PURE__ */ jsx41(
3495
3787
  Comp,
3496
3788
  {
3497
3789
  "data-slot": "hover-card-trigger",
@@ -3526,7 +3818,7 @@ function HoverCardContent({
3526
3818
  offset: sideOffset
3527
3819
  });
3528
3820
  if (!isPresent) return null;
3529
- return /* @__PURE__ */ jsx38(Portal, { children: /* @__PURE__ */ jsx38(
3821
+ return /* @__PURE__ */ jsx41(Portal, { children: /* @__PURE__ */ jsx41(
3530
3822
  "div",
3531
3823
  {
3532
3824
  "data-slot": "hover-card-content",
@@ -3543,7 +3835,7 @@ function HoverCardContent({
3543
3835
  }
3544
3836
 
3545
3837
  // src/components/dropdown-menu.tsx
3546
- import * as React48 from "react";
3838
+ import * as React51 from "react";
3547
3839
 
3548
3840
  // src/generated/dropdown-menu.ts
3549
3841
  var DROPDOWN_MENU_CONTENT = "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md";
@@ -3557,12 +3849,12 @@ var DROPDOWN_MENU_SEPARATOR = "bg-border -mx-1 my-1 h-px";
3557
3849
  var DROPDOWN_MENU_SHORTCUT = "text-muted-foreground ml-auto text-xs tracking-widest";
3558
3850
 
3559
3851
  // src/components/dropdown-menu.tsx
3560
- import { jsx as jsx39, jsxs as jsxs10 } from "react/jsx-runtime";
3561
- var DropdownMenuContext = React48.createContext(
3852
+ import { jsx as jsx42, jsxs as jsxs12 } from "react/jsx-runtime";
3853
+ var DropdownMenuContext = React51.createContext(
3562
3854
  null
3563
3855
  );
3564
3856
  function useDropdownMenu() {
3565
- const ctx = React48.useContext(DropdownMenuContext);
3857
+ const ctx = React51.useContext(DropdownMenuContext);
3566
3858
  if (!ctx) throw new Error("DropdownMenu parts must be used within <DropdownMenu>");
3567
3859
  return ctx;
3568
3860
  }
@@ -3572,16 +3864,16 @@ function DropdownMenu({ open, defaultOpen = false, onOpenChange, children }) {
3572
3864
  defaultValue: defaultOpen,
3573
3865
  ...onOpenChange ? { onChange: onOpenChange } : {}
3574
3866
  });
3575
- const anchorRef = React48.useRef(null);
3576
- return /* @__PURE__ */ jsx39(DropdownMenuContext.Provider, { value: { open: isOpen, setOpen, anchorRef }, children: /* @__PURE__ */ jsx39("div", { "data-slot": "dropdown-menu", children }) });
3867
+ const anchorRef = React51.useRef(null);
3868
+ return /* @__PURE__ */ jsx42(DropdownMenuContext.Provider, { value: { open: isOpen, setOpen, anchorRef }, children: /* @__PURE__ */ jsx42("div", { "data-slot": "dropdown-menu", children }) });
3577
3869
  }
3578
3870
  function DropdownMenuPortal({ children }) {
3579
- return /* @__PURE__ */ jsx39(Portal, { children });
3871
+ return /* @__PURE__ */ jsx42(Portal, { children });
3580
3872
  }
3581
3873
  function DropdownMenuTrigger({ asChild = false, onClick, ...props }) {
3582
3874
  const { open, setOpen, anchorRef } = useDropdownMenu();
3583
3875
  const Comp = asChild ? Slot : "button";
3584
- return /* @__PURE__ */ jsx39(
3876
+ return /* @__PURE__ */ jsx42(
3585
3877
  Comp,
3586
3878
  {
3587
3879
  "data-slot": "dropdown-menu-trigger",
@@ -3617,7 +3909,7 @@ function DropdownMenuContent({
3617
3909
  onDismiss: () => setOpen(false),
3618
3910
  exclude: [anchorRef]
3619
3911
  });
3620
- const contentRef = React48.useRef(null);
3912
+ const contentRef = React51.useRef(null);
3621
3913
  const items = () => Array.from(
3622
3914
  contentRef.current?.querySelectorAll("[role^='menuitem']") ?? []
3623
3915
  ).filter((el) => el.getAttribute("data-disabled") === null);
@@ -3626,13 +3918,13 @@ function DropdownMenuContent({
3626
3918
  orientation: "vertical",
3627
3919
  loop: true
3628
3920
  });
3629
- React48.useEffect(() => {
3921
+ React51.useEffect(() => {
3630
3922
  if (!open) return;
3631
3923
  items()[activeIndex]?.focus();
3632
3924
  }, [open, activeIndex]);
3633
- const close = React48.useCallback(() => setOpen(false), [setOpen]);
3925
+ const close = React51.useCallback(() => setOpen(false), [setOpen]);
3634
3926
  if (!isPresent) return null;
3635
- return /* @__PURE__ */ jsx39(Portal, { children: /* @__PURE__ */ jsx39(DropdownMenuCloseContext.Provider, { value: close, children: /* @__PURE__ */ jsx39(
3927
+ return /* @__PURE__ */ jsx42(Portal, { children: /* @__PURE__ */ jsx42(DropdownMenuCloseContext.Provider, { value: close, children: /* @__PURE__ */ jsx42(
3636
3928
  "div",
3637
3929
  {
3638
3930
  "data-slot": "dropdown-menu-content",
@@ -3655,10 +3947,10 @@ function DropdownMenuContent({
3655
3947
  }
3656
3948
  ) }) });
3657
3949
  }
3658
- var DropdownMenuCloseContext = React48.createContext(() => {
3950
+ var DropdownMenuCloseContext = React51.createContext(() => {
3659
3951
  });
3660
3952
  function DropdownMenuGroup({ className, ...props }) {
3661
- return /* @__PURE__ */ jsx39("div", { "data-slot": "dropdown-menu-group", role: "group", className, ...props });
3953
+ return /* @__PURE__ */ jsx42("div", { "data-slot": "dropdown-menu-group", role: "group", className, ...props });
3662
3954
  }
3663
3955
  function DropdownMenuItem({
3664
3956
  className,
@@ -3669,8 +3961,8 @@ function DropdownMenuItem({
3669
3961
  onKeyDown,
3670
3962
  ...props
3671
3963
  }) {
3672
- const close = React48.useContext(DropdownMenuCloseContext);
3673
- return /* @__PURE__ */ jsx39(
3964
+ const close = React51.useContext(DropdownMenuCloseContext);
3965
+ return /* @__PURE__ */ jsx42(
3674
3966
  "div",
3675
3967
  {
3676
3968
  "data-slot": "dropdown-menu-item",
@@ -3707,8 +3999,8 @@ function DropdownMenuCheckboxItem({
3707
3999
  onClick,
3708
4000
  ...props
3709
4001
  }) {
3710
- const close = React48.useContext(DropdownMenuCloseContext);
3711
- return /* @__PURE__ */ jsxs10(
4002
+ const close = React51.useContext(DropdownMenuCloseContext);
4003
+ return /* @__PURE__ */ jsxs12(
3712
4004
  "div",
3713
4005
  {
3714
4006
  "data-slot": "dropdown-menu-checkbox-item",
@@ -3728,13 +4020,13 @@ function DropdownMenuCheckboxItem({
3728
4020
  },
3729
4021
  ...props,
3730
4022
  children: [
3731
- /* @__PURE__ */ jsx39("span", { className: DROPDOWN_MENU_ITEM_INDICATOR, children: checked ? /* @__PURE__ */ jsx39("svg", { className: "size-4", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx39("path", { d: "M20 6 9 17l-5-5" }) }) : null }),
4023
+ /* @__PURE__ */ jsx42("span", { className: DROPDOWN_MENU_ITEM_INDICATOR, children: checked ? /* @__PURE__ */ jsx42("svg", { className: "size-4", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx42("path", { d: "M20 6 9 17l-5-5" }) }) : null }),
3732
4024
  children
3733
4025
  ]
3734
4026
  }
3735
4027
  );
3736
4028
  }
3737
- var DropdownMenuRadioGroupContext = React48.createContext(null);
4029
+ var DropdownMenuRadioGroupContext = React51.createContext(null);
3738
4030
  function DropdownMenuRadioGroup({
3739
4031
  className,
3740
4032
  value,
@@ -3742,11 +4034,11 @@ function DropdownMenuRadioGroup({
3742
4034
  children,
3743
4035
  ...props
3744
4036
  }) {
3745
- const ctx = React48.useMemo(
4037
+ const ctx = React51.useMemo(
3746
4038
  () => ({ value, setValue: (next) => onValueChange?.(next) }),
3747
4039
  [value, onValueChange]
3748
4040
  );
3749
- return /* @__PURE__ */ jsx39(DropdownMenuRadioGroupContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx39("div", { "data-slot": "dropdown-menu-radio-group", role: "group", className, ...props, children }) });
4041
+ return /* @__PURE__ */ jsx42(DropdownMenuRadioGroupContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx42("div", { "data-slot": "dropdown-menu-radio-group", role: "group", className, ...props, children }) });
3750
4042
  }
3751
4043
  function DropdownMenuRadioItem({
3752
4044
  className,
@@ -3756,10 +4048,10 @@ function DropdownMenuRadioItem({
3756
4048
  onClick,
3757
4049
  ...props
3758
4050
  }) {
3759
- const close = React48.useContext(DropdownMenuCloseContext);
3760
- const group = React48.useContext(DropdownMenuRadioGroupContext);
4051
+ const close = React51.useContext(DropdownMenuCloseContext);
4052
+ const group = React51.useContext(DropdownMenuRadioGroupContext);
3761
4053
  const checked = group?.value === value;
3762
- return /* @__PURE__ */ jsxs10(
4054
+ return /* @__PURE__ */ jsxs12(
3763
4055
  "div",
3764
4056
  {
3765
4057
  "data-slot": "dropdown-menu-radio-item",
@@ -3780,14 +4072,14 @@ function DropdownMenuRadioItem({
3780
4072
  },
3781
4073
  ...props,
3782
4074
  children: [
3783
- /* @__PURE__ */ jsx39("span", { className: DROPDOWN_MENU_ITEM_INDICATOR, children: checked ? /* @__PURE__ */ jsx39("svg", { className: "size-2 fill-current", viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ jsx39("circle", { cx: "12", cy: "12", r: "10" }) }) : null }),
4075
+ /* @__PURE__ */ jsx42("span", { className: DROPDOWN_MENU_ITEM_INDICATOR, children: checked ? /* @__PURE__ */ jsx42("svg", { className: "size-2 fill-current", viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ jsx42("circle", { cx: "12", cy: "12", r: "10" }) }) : null }),
3784
4076
  children
3785
4077
  ]
3786
4078
  }
3787
4079
  );
3788
4080
  }
3789
4081
  function DropdownMenuLabel({ className, inset, ...props }) {
3790
- return /* @__PURE__ */ jsx39(
4082
+ return /* @__PURE__ */ jsx42(
3791
4083
  "div",
3792
4084
  {
3793
4085
  "data-slot": "dropdown-menu-label",
@@ -3798,7 +4090,7 @@ function DropdownMenuLabel({ className, inset, ...props }) {
3798
4090
  );
3799
4091
  }
3800
4092
  function DropdownMenuSeparator({ className, ...props }) {
3801
- return /* @__PURE__ */ jsx39(
4093
+ return /* @__PURE__ */ jsx42(
3802
4094
  "div",
3803
4095
  {
3804
4096
  "data-slot": "dropdown-menu-separator",
@@ -3809,7 +4101,7 @@ function DropdownMenuSeparator({ className, ...props }) {
3809
4101
  );
3810
4102
  }
3811
4103
  function DropdownMenuShortcut({ className, ...props }) {
3812
- return /* @__PURE__ */ jsx39(
4104
+ return /* @__PURE__ */ jsx42(
3813
4105
  "span",
3814
4106
  {
3815
4107
  "data-slot": "dropdown-menu-shortcut",
@@ -3818,18 +4110,18 @@ function DropdownMenuShortcut({ className, ...props }) {
3818
4110
  }
3819
4111
  );
3820
4112
  }
3821
- var DropdownMenuSubContext = React48.createContext(null);
4113
+ var DropdownMenuSubContext = React51.createContext(null);
3822
4114
  function DropdownMenuSub({ open, defaultOpen = false, onOpenChange, children }) {
3823
4115
  const [isOpen, setOpen] = useControllableState({
3824
4116
  ...open !== void 0 ? { value: open } : {},
3825
4117
  defaultValue: defaultOpen,
3826
4118
  ...onOpenChange ? { onChange: onOpenChange } : {}
3827
4119
  });
3828
- return /* @__PURE__ */ jsx39(DropdownMenuSubContext.Provider, { value: { open: isOpen, setOpen }, children: /* @__PURE__ */ jsx39("div", { "data-slot": "dropdown-menu-sub", children }) });
4120
+ return /* @__PURE__ */ jsx42(DropdownMenuSubContext.Provider, { value: { open: isOpen, setOpen }, children: /* @__PURE__ */ jsx42("div", { "data-slot": "dropdown-menu-sub", children }) });
3829
4121
  }
3830
4122
  function DropdownMenuSubTrigger({ className, inset, children, onClick, ...props }) {
3831
- const ctx = React48.useContext(DropdownMenuSubContext);
3832
- return /* @__PURE__ */ jsxs10(
4123
+ const ctx = React51.useContext(DropdownMenuSubContext);
4124
+ return /* @__PURE__ */ jsxs12(
3833
4125
  "div",
3834
4126
  {
3835
4127
  "data-slot": "dropdown-menu-sub-trigger",
@@ -3850,15 +4142,15 @@ function DropdownMenuSubTrigger({ className, inset, children, onClick, ...props
3850
4142
  ...props,
3851
4143
  children: [
3852
4144
  children,
3853
- /* @__PURE__ */ jsx39("svg", { className: "ml-auto size-4", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx39("path", { d: "m9 18 6-6-6-6" }) })
4145
+ /* @__PURE__ */ jsx42("svg", { className: "ml-auto size-4", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx42("path", { d: "m9 18 6-6-6-6" }) })
3854
4146
  ]
3855
4147
  }
3856
4148
  );
3857
4149
  }
3858
4150
  function DropdownMenuSubContent({ className, children, ...props }) {
3859
- const ctx = React48.useContext(DropdownMenuSubContext);
4151
+ const ctx = React51.useContext(DropdownMenuSubContext);
3860
4152
  if (!ctx?.open) return null;
3861
- return /* @__PURE__ */ jsx39(
4153
+ return /* @__PURE__ */ jsx42(
3862
4154
  "div",
3863
4155
  {
3864
4156
  "data-slot": "dropdown-menu-sub-content",
@@ -3875,7 +4167,7 @@ function DropdownMenuSubContent({ className, children, ...props }) {
3875
4167
  }
3876
4168
 
3877
4169
  // src/components/context-menu.tsx
3878
- import * as React49 from "react";
4170
+ import * as React52 from "react";
3879
4171
 
3880
4172
  // src/generated/context-menu.ts
3881
4173
  var CONTEXT_MENU_CONTENT = "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md";
@@ -3888,10 +4180,10 @@ var CONTEXT_MENU_SEPARATOR = "bg-border -mx-1 my-1 h-px";
3888
4180
  var CONTEXT_MENU_SHORTCUT = "text-muted-foreground ml-auto text-xs tracking-widest";
3889
4181
 
3890
4182
  // src/components/context-menu.tsx
3891
- import { jsx as jsx40, jsxs as jsxs11 } from "react/jsx-runtime";
3892
- var ContextMenuContext = React49.createContext(null);
4183
+ import { jsx as jsx43, jsxs as jsxs13 } from "react/jsx-runtime";
4184
+ var ContextMenuContext = React52.createContext(null);
3893
4185
  function useContextMenu() {
3894
- const ctx = React49.useContext(ContextMenuContext);
4186
+ const ctx = React52.useContext(ContextMenuContext);
3895
4187
  if (!ctx) throw new Error("ContextMenu parts must be used within <ContextMenu>");
3896
4188
  return ctx;
3897
4189
  }
@@ -3901,16 +4193,16 @@ function ContextMenu({ open, defaultOpen = false, onOpenChange, children }) {
3901
4193
  defaultValue: defaultOpen,
3902
4194
  ...onOpenChange ? { onChange: onOpenChange } : {}
3903
4195
  });
3904
- const [point, setPoint] = React49.useState({ x: 0, y: 0 });
3905
- return /* @__PURE__ */ jsx40(ContextMenuContext.Provider, { value: { open: isOpen, setOpen, point, setPoint }, children: /* @__PURE__ */ jsx40("div", { "data-slot": "context-menu", children }) });
4196
+ const [point, setPoint] = React52.useState({ x: 0, y: 0 });
4197
+ return /* @__PURE__ */ jsx43(ContextMenuContext.Provider, { value: { open: isOpen, setOpen, point, setPoint }, children: /* @__PURE__ */ jsx43("div", { "data-slot": "context-menu", children }) });
3906
4198
  }
3907
4199
  function ContextMenuPortal({ children }) {
3908
- return /* @__PURE__ */ jsx40(Portal, { children });
4200
+ return /* @__PURE__ */ jsx43(Portal, { children });
3909
4201
  }
3910
4202
  function ContextMenuTrigger({ asChild = false, onContextMenu, ...props }) {
3911
4203
  const { setOpen, setPoint } = useContextMenu();
3912
4204
  const Comp = asChild ? Slot : "div";
3913
- return /* @__PURE__ */ jsx40(
4205
+ return /* @__PURE__ */ jsx43(
3914
4206
  Comp,
3915
4207
  {
3916
4208
  "data-slot": "context-menu-trigger",
@@ -3925,9 +4217,9 @@ function ContextMenuTrigger({ asChild = false, onContextMenu, ...props }) {
3925
4217
  );
3926
4218
  }
3927
4219
  function ContextMenuGroup({ className, ...props }) {
3928
- return /* @__PURE__ */ jsx40("div", { "data-slot": "context-menu-group", role: "group", className, ...props });
4220
+ return /* @__PURE__ */ jsx43("div", { "data-slot": "context-menu-group", role: "group", className, ...props });
3929
4221
  }
3930
- var ContextMenuCloseContext = React49.createContext(() => {
4222
+ var ContextMenuCloseContext = React52.createContext(() => {
3931
4223
  });
3932
4224
  function ContextMenuContent({ className, children, ...props }) {
3933
4225
  const { open, setOpen, point } = useContextMenu();
@@ -3936,7 +4228,7 @@ function ContextMenuContent({ className, children, ...props }) {
3936
4228
  enabled: open,
3937
4229
  onDismiss: () => setOpen(false)
3938
4230
  });
3939
- const contentRef = React49.useRef(null);
4231
+ const contentRef = React52.useRef(null);
3940
4232
  const items = () => Array.from(
3941
4233
  contentRef.current?.querySelectorAll("[role^='menuitem']") ?? []
3942
4234
  ).filter((el) => el.getAttribute("data-disabled") === null);
@@ -3945,13 +4237,13 @@ function ContextMenuContent({ className, children, ...props }) {
3945
4237
  orientation: "vertical",
3946
4238
  loop: true
3947
4239
  });
3948
- React49.useEffect(() => {
4240
+ React52.useEffect(() => {
3949
4241
  if (!open) return;
3950
4242
  items()[activeIndex]?.focus();
3951
4243
  }, [open, activeIndex]);
3952
- const close = React49.useCallback(() => setOpen(false), [setOpen]);
4244
+ const close = React52.useCallback(() => setOpen(false), [setOpen]);
3953
4245
  if (!isPresent) return null;
3954
- return /* @__PURE__ */ jsx40(Portal, { children: /* @__PURE__ */ jsx40(ContextMenuCloseContext.Provider, { value: close, children: /* @__PURE__ */ jsx40(
4246
+ return /* @__PURE__ */ jsx43(Portal, { children: /* @__PURE__ */ jsx43(ContextMenuCloseContext.Provider, { value: close, children: /* @__PURE__ */ jsx43(
3955
4247
  "div",
3956
4248
  {
3957
4249
  "data-slot": "context-menu-content",
@@ -3983,8 +4275,8 @@ function ContextMenuItem({
3983
4275
  onKeyDown,
3984
4276
  ...props
3985
4277
  }) {
3986
- const close = React49.useContext(ContextMenuCloseContext);
3987
- return /* @__PURE__ */ jsx40(
4278
+ const close = React52.useContext(ContextMenuCloseContext);
4279
+ return /* @__PURE__ */ jsx43(
3988
4280
  "div",
3989
4281
  {
3990
4282
  "data-slot": "context-menu-item",
@@ -4021,8 +4313,8 @@ function ContextMenuCheckboxItem({
4021
4313
  onClick,
4022
4314
  ...props
4023
4315
  }) {
4024
- const close = React49.useContext(ContextMenuCloseContext);
4025
- return /* @__PURE__ */ jsxs11(
4316
+ const close = React52.useContext(ContextMenuCloseContext);
4317
+ return /* @__PURE__ */ jsxs13(
4026
4318
  "div",
4027
4319
  {
4028
4320
  "data-slot": "context-menu-checkbox-item",
@@ -4042,13 +4334,13 @@ function ContextMenuCheckboxItem({
4042
4334
  },
4043
4335
  ...props,
4044
4336
  children: [
4045
- /* @__PURE__ */ jsx40("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: checked ? /* @__PURE__ */ jsx40("svg", { className: "size-4", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx40("path", { d: "M20 6 9 17l-5-5" }) }) : null }),
4337
+ /* @__PURE__ */ jsx43("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: checked ? /* @__PURE__ */ jsx43("svg", { className: "size-4", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx43("path", { d: "M20 6 9 17l-5-5" }) }) : null }),
4046
4338
  children
4047
4339
  ]
4048
4340
  }
4049
4341
  );
4050
4342
  }
4051
- var ContextMenuRadioGroupContext = React49.createContext(null);
4343
+ var ContextMenuRadioGroupContext = React52.createContext(null);
4052
4344
  function ContextMenuRadioGroup({
4053
4345
  className,
4054
4346
  value,
@@ -4056,11 +4348,11 @@ function ContextMenuRadioGroup({
4056
4348
  children,
4057
4349
  ...props
4058
4350
  }) {
4059
- const ctx = React49.useMemo(
4351
+ const ctx = React52.useMemo(
4060
4352
  () => ({ value, setValue: (next) => onValueChange?.(next) }),
4061
4353
  [value, onValueChange]
4062
4354
  );
4063
- return /* @__PURE__ */ jsx40(ContextMenuRadioGroupContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx40("div", { "data-slot": "context-menu-radio-group", role: "group", className, ...props, children }) });
4355
+ return /* @__PURE__ */ jsx43(ContextMenuRadioGroupContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx43("div", { "data-slot": "context-menu-radio-group", role: "group", className, ...props, children }) });
4064
4356
  }
4065
4357
  function ContextMenuRadioItem({
4066
4358
  className,
@@ -4070,10 +4362,10 @@ function ContextMenuRadioItem({
4070
4362
  onClick,
4071
4363
  ...props
4072
4364
  }) {
4073
- const close = React49.useContext(ContextMenuCloseContext);
4074
- const group = React49.useContext(ContextMenuRadioGroupContext);
4365
+ const close = React52.useContext(ContextMenuCloseContext);
4366
+ const group = React52.useContext(ContextMenuRadioGroupContext);
4075
4367
  const checked = group?.value === value;
4076
- return /* @__PURE__ */ jsxs11(
4368
+ return /* @__PURE__ */ jsxs13(
4077
4369
  "div",
4078
4370
  {
4079
4371
  "data-slot": "context-menu-radio-item",
@@ -4094,14 +4386,14 @@ function ContextMenuRadioItem({
4094
4386
  },
4095
4387
  ...props,
4096
4388
  children: [
4097
- /* @__PURE__ */ jsx40("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: checked ? /* @__PURE__ */ jsx40("svg", { className: "size-2 fill-current", viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ jsx40("circle", { cx: "12", cy: "12", r: "10" }) }) : null }),
4389
+ /* @__PURE__ */ jsx43("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: checked ? /* @__PURE__ */ jsx43("svg", { className: "size-2 fill-current", viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ jsx43("circle", { cx: "12", cy: "12", r: "10" }) }) : null }),
4098
4390
  children
4099
4391
  ]
4100
4392
  }
4101
4393
  );
4102
4394
  }
4103
4395
  function ContextMenuLabel({ className, inset, ...props }) {
4104
- return /* @__PURE__ */ jsx40(
4396
+ return /* @__PURE__ */ jsx43(
4105
4397
  "div",
4106
4398
  {
4107
4399
  "data-slot": "context-menu-label",
@@ -4112,7 +4404,7 @@ function ContextMenuLabel({ className, inset, ...props }) {
4112
4404
  );
4113
4405
  }
4114
4406
  function ContextMenuSeparator({ className, ...props }) {
4115
- return /* @__PURE__ */ jsx40(
4407
+ return /* @__PURE__ */ jsx43(
4116
4408
  "div",
4117
4409
  {
4118
4410
  "data-slot": "context-menu-separator",
@@ -4123,7 +4415,7 @@ function ContextMenuSeparator({ className, ...props }) {
4123
4415
  );
4124
4416
  }
4125
4417
  function ContextMenuShortcut({ className, ...props }) {
4126
- return /* @__PURE__ */ jsx40(
4418
+ return /* @__PURE__ */ jsx43(
4127
4419
  "span",
4128
4420
  {
4129
4421
  "data-slot": "context-menu-shortcut",
@@ -4132,18 +4424,18 @@ function ContextMenuShortcut({ className, ...props }) {
4132
4424
  }
4133
4425
  );
4134
4426
  }
4135
- var ContextMenuSubContext = React49.createContext(null);
4427
+ var ContextMenuSubContext = React52.createContext(null);
4136
4428
  function ContextMenuSub({ open, defaultOpen = false, onOpenChange, children }) {
4137
4429
  const [isOpen, setOpen] = useControllableState({
4138
4430
  ...open !== void 0 ? { value: open } : {},
4139
4431
  defaultValue: defaultOpen,
4140
4432
  ...onOpenChange ? { onChange: onOpenChange } : {}
4141
4433
  });
4142
- return /* @__PURE__ */ jsx40(ContextMenuSubContext.Provider, { value: { open: isOpen, setOpen }, children: /* @__PURE__ */ jsx40("div", { "data-slot": "context-menu-sub", children }) });
4434
+ return /* @__PURE__ */ jsx43(ContextMenuSubContext.Provider, { value: { open: isOpen, setOpen }, children: /* @__PURE__ */ jsx43("div", { "data-slot": "context-menu-sub", children }) });
4143
4435
  }
4144
4436
  function ContextMenuSubTrigger({ className, inset, children, onClick, ...props }) {
4145
- const ctx = React49.useContext(ContextMenuSubContext);
4146
- return /* @__PURE__ */ jsxs11(
4437
+ const ctx = React52.useContext(ContextMenuSubContext);
4438
+ return /* @__PURE__ */ jsxs13(
4147
4439
  "div",
4148
4440
  {
4149
4441
  "data-slot": "context-menu-sub-trigger",
@@ -4164,15 +4456,15 @@ function ContextMenuSubTrigger({ className, inset, children, onClick, ...props }
4164
4456
  ...props,
4165
4457
  children: [
4166
4458
  children,
4167
- /* @__PURE__ */ jsx40("svg", { className: "ml-auto", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx40("path", { d: "m9 18 6-6-6-6" }) })
4459
+ /* @__PURE__ */ jsx43("svg", { className: "ml-auto", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx43("path", { d: "m9 18 6-6-6-6" }) })
4168
4460
  ]
4169
4461
  }
4170
4462
  );
4171
4463
  }
4172
4464
  function ContextMenuSubContent({ className, children, ...props }) {
4173
- const ctx = React49.useContext(ContextMenuSubContext);
4465
+ const ctx = React52.useContext(ContextMenuSubContext);
4174
4466
  if (!ctx?.open) return null;
4175
- return /* @__PURE__ */ jsx40(
4467
+ return /* @__PURE__ */ jsx43(
4176
4468
  "div",
4177
4469
  {
4178
4470
  "data-slot": "context-menu-sub-content",
@@ -4189,7 +4481,7 @@ function ContextMenuSubContent({ className, children, ...props }) {
4189
4481
  }
4190
4482
 
4191
4483
  // src/components/menubar.tsx
4192
- import * as React50 from "react";
4484
+ import * as React53 from "react";
4193
4485
 
4194
4486
  // src/generated/menubar.ts
4195
4487
  var MENUBAR_ROOT = "bg-background flex h-9 items-center gap-1 rounded-md border p-1 shadow-xs";
@@ -4206,16 +4498,16 @@ var MENUBAR_SUB_TRIGGER = "focus:bg-accent focus:text-accent-foreground data-[st
4206
4498
  var MENUBAR_SUB_CONTENT = "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 absolute z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-lg";
4207
4499
 
4208
4500
  // src/components/menubar.tsx
4209
- import { jsx as jsx41, jsxs as jsxs12 } from "react/jsx-runtime";
4210
- var MenubarMenuContext = React50.createContext(null);
4501
+ import { jsx as jsx44, jsxs as jsxs14 } from "react/jsx-runtime";
4502
+ var MenubarMenuContext = React53.createContext(null);
4211
4503
  function useMenu() {
4212
- const ctx = React50.useContext(MenubarMenuContext);
4504
+ const ctx = React53.useContext(MenubarMenuContext);
4213
4505
  if (!ctx) throw new Error("Menubar parts must be used within <MenubarMenu>");
4214
4506
  return ctx;
4215
4507
  }
4216
- var MenubarRadioGroupContext = React50.createContext(null);
4508
+ var MenubarRadioGroupContext = React53.createContext(null);
4217
4509
  function Menubar({ className, ...props }) {
4218
- return /* @__PURE__ */ jsx41(
4510
+ return /* @__PURE__ */ jsx44(
4219
4511
  "div",
4220
4512
  {
4221
4513
  "data-slot": "menubar",
@@ -4231,12 +4523,12 @@ function MenubarMenu({ open, defaultOpen = false, onOpenChange, children }) {
4231
4523
  defaultValue: defaultOpen,
4232
4524
  onChange: onOpenChange
4233
4525
  });
4234
- const triggerRef = React50.useRef(null);
4235
- return /* @__PURE__ */ jsx41(MenubarMenuContext.Provider, { value: { open: isOpen, setOpen, triggerRef }, children: /* @__PURE__ */ jsx41("div", { "data-slot": "menubar-menu", className: "relative", children }) });
4526
+ const triggerRef = React53.useRef(null);
4527
+ return /* @__PURE__ */ jsx44(MenubarMenuContext.Provider, { value: { open: isOpen, setOpen, triggerRef }, children: /* @__PURE__ */ jsx44("div", { "data-slot": "menubar-menu", className: "relative", children }) });
4236
4528
  }
4237
4529
  function MenubarTrigger({ className, onClick, ...props }) {
4238
4530
  const { open, setOpen, triggerRef } = useMenu();
4239
- return /* @__PURE__ */ jsx41(
4531
+ return /* @__PURE__ */ jsx44(
4240
4532
  "button",
4241
4533
  {
4242
4534
  ref: triggerRef,
@@ -4272,10 +4564,10 @@ function MenubarContent({
4272
4564
  onDismiss: () => setOpen(false),
4273
4565
  exclude: [triggerRef]
4274
4566
  });
4275
- const items = React50.Children.toArray(children);
4567
+ const items = React53.Children.toArray(children);
4276
4568
  const { onKeyDown } = useRovingFocus({ count: items.length, orientation: "vertical" });
4277
4569
  if (!isPresent) return null;
4278
- return /* @__PURE__ */ jsx41(Portal, { children: /* @__PURE__ */ jsx41(
4570
+ return /* @__PURE__ */ jsx44(Portal, { children: /* @__PURE__ */ jsx44(
4279
4571
  "div",
4280
4572
  {
4281
4573
  ref: mergeRefs(presenceRef, floatingRef, dismissRef),
@@ -4292,7 +4584,7 @@ function MenubarContent({
4292
4584
  ) });
4293
4585
  }
4294
4586
  function MenubarGroup({ className, ...props }) {
4295
- return /* @__PURE__ */ jsx41("div", { "data-slot": "menubar-group", role: "group", className, ...props });
4587
+ return /* @__PURE__ */ jsx44("div", { "data-slot": "menubar-group", role: "group", className, ...props });
4296
4588
  }
4297
4589
  function MenubarItem({
4298
4590
  className,
@@ -4300,7 +4592,7 @@ function MenubarItem({
4300
4592
  variant = "default",
4301
4593
  ...props
4302
4594
  }) {
4303
- return /* @__PURE__ */ jsx41(
4595
+ return /* @__PURE__ */ jsx44(
4304
4596
  "div",
4305
4597
  {
4306
4598
  "data-slot": "menubar-item",
@@ -4319,7 +4611,7 @@ function MenubarCheckboxItem({
4319
4611
  checked,
4320
4612
  ...props
4321
4613
  }) {
4322
- return /* @__PURE__ */ jsxs12(
4614
+ return /* @__PURE__ */ jsxs14(
4323
4615
  "div",
4324
4616
  {
4325
4617
  "data-slot": "menubar-checkbox-item",
@@ -4329,7 +4621,7 @@ function MenubarCheckboxItem({
4329
4621
  className: cn(MENUBAR_CHECKBOX_ITEM, className),
4330
4622
  ...props,
4331
4623
  children: [
4332
- /* @__PURE__ */ jsx41("span", { className: MENUBAR_ITEM_INDICATOR, children: checked && /* @__PURE__ */ jsx41(
4624
+ /* @__PURE__ */ jsx44("span", { className: MENUBAR_ITEM_INDICATOR, children: checked && /* @__PURE__ */ jsx44(
4333
4625
  "svg",
4334
4626
  {
4335
4627
  className: "size-4",
@@ -4339,7 +4631,7 @@ function MenubarCheckboxItem({
4339
4631
  strokeWidth: "2",
4340
4632
  strokeLinecap: "round",
4341
4633
  strokeLinejoin: "round",
4342
- children: /* @__PURE__ */ jsx41("path", { d: "M20 6 9 17l-5-5" })
4634
+ children: /* @__PURE__ */ jsx44("path", { d: "M20 6 9 17l-5-5" })
4343
4635
  }
4344
4636
  ) }),
4345
4637
  children
@@ -4359,7 +4651,7 @@ function MenubarRadioGroup({
4359
4651
  defaultValue,
4360
4652
  onChange: onValueChange
4361
4653
  });
4362
- return /* @__PURE__ */ jsx41(MenubarRadioGroupContext.Provider, { value: { value: current, onValueChange: setValue }, children: /* @__PURE__ */ jsx41("div", { "data-slot": "menubar-radio-group", role: "group", className, children }) });
4654
+ return /* @__PURE__ */ jsx44(MenubarRadioGroupContext.Provider, { value: { value: current, onValueChange: setValue }, children: /* @__PURE__ */ jsx44("div", { "data-slot": "menubar-radio-group", role: "group", className, children }) });
4363
4655
  }
4364
4656
  function MenubarRadioItem({
4365
4657
  className,
@@ -4367,9 +4659,9 @@ function MenubarRadioItem({
4367
4659
  value,
4368
4660
  ...props
4369
4661
  }) {
4370
- const ctx = React50.useContext(MenubarRadioGroupContext);
4662
+ const ctx = React53.useContext(MenubarRadioGroupContext);
4371
4663
  const checked = ctx?.value === value;
4372
- return /* @__PURE__ */ jsxs12(
4664
+ return /* @__PURE__ */ jsxs14(
4373
4665
  "div",
4374
4666
  {
4375
4667
  "data-slot": "menubar-radio-item",
@@ -4380,7 +4672,7 @@ function MenubarRadioItem({
4380
4672
  onClick: () => ctx?.onValueChange(value),
4381
4673
  ...props,
4382
4674
  children: [
4383
- /* @__PURE__ */ jsx41("span", { className: MENUBAR_ITEM_INDICATOR, children: checked && /* @__PURE__ */ jsx41("svg", { className: "size-2 fill-current", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx41("circle", { cx: "12", cy: "12", r: "10" }) }) }),
4675
+ /* @__PURE__ */ jsx44("span", { className: MENUBAR_ITEM_INDICATOR, children: checked && /* @__PURE__ */ jsx44("svg", { className: "size-2 fill-current", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx44("circle", { cx: "12", cy: "12", r: "10" }) }) }),
4384
4676
  children
4385
4677
  ]
4386
4678
  }
@@ -4391,7 +4683,7 @@ function MenubarLabel({
4391
4683
  inset,
4392
4684
  ...props
4393
4685
  }) {
4394
- return /* @__PURE__ */ jsx41(
4686
+ return /* @__PURE__ */ jsx44(
4395
4687
  "div",
4396
4688
  {
4397
4689
  "data-slot": "menubar-label",
@@ -4402,7 +4694,7 @@ function MenubarLabel({
4402
4694
  );
4403
4695
  }
4404
4696
  function MenubarSeparator({ className, ...props }) {
4405
- return /* @__PURE__ */ jsx41(
4697
+ return /* @__PURE__ */ jsx44(
4406
4698
  "div",
4407
4699
  {
4408
4700
  "data-slot": "menubar-separator",
@@ -4413,7 +4705,7 @@ function MenubarSeparator({ className, ...props }) {
4413
4705
  );
4414
4706
  }
4415
4707
  function MenubarShortcut({ className, ...props }) {
4416
- return /* @__PURE__ */ jsx41(
4708
+ return /* @__PURE__ */ jsx44(
4417
4709
  "span",
4418
4710
  {
4419
4711
  "data-slot": "menubar-shortcut",
@@ -4422,9 +4714,9 @@ function MenubarShortcut({ className, ...props }) {
4422
4714
  }
4423
4715
  );
4424
4716
  }
4425
- var MenubarSubContext = React50.createContext(null);
4717
+ var MenubarSubContext = React53.createContext(null);
4426
4718
  function useSub() {
4427
- const ctx = React50.useContext(MenubarSubContext);
4719
+ const ctx = React53.useContext(MenubarSubContext);
4428
4720
  if (!ctx) throw new Error("MenubarSub parts must be used within <MenubarSub>");
4429
4721
  return ctx;
4430
4722
  }
@@ -4434,7 +4726,7 @@ function MenubarSub({ open, defaultOpen = false, onOpenChange, children }) {
4434
4726
  defaultValue: defaultOpen,
4435
4727
  onChange: onOpenChange
4436
4728
  });
4437
- return /* @__PURE__ */ jsx41(MenubarSubContext.Provider, { value: { open: isOpen, setOpen }, children: /* @__PURE__ */ jsx41("div", { "data-slot": "menubar-sub", className: "relative", children }) });
4729
+ return /* @__PURE__ */ jsx44(MenubarSubContext.Provider, { value: { open: isOpen, setOpen }, children: /* @__PURE__ */ jsx44("div", { "data-slot": "menubar-sub", className: "relative", children }) });
4438
4730
  }
4439
4731
  function MenubarSubTrigger({
4440
4732
  className,
@@ -4444,7 +4736,7 @@ function MenubarSubTrigger({
4444
4736
  ...props
4445
4737
  }) {
4446
4738
  const { open, setOpen } = useSub();
4447
- return /* @__PURE__ */ jsxs12(
4739
+ return /* @__PURE__ */ jsxs14(
4448
4740
  "div",
4449
4741
  {
4450
4742
  "data-slot": "menubar-sub-trigger",
@@ -4460,7 +4752,7 @@ function MenubarSubTrigger({
4460
4752
  ...props,
4461
4753
  children: [
4462
4754
  children,
4463
- /* @__PURE__ */ jsx41(
4755
+ /* @__PURE__ */ jsx44(
4464
4756
  "svg",
4465
4757
  {
4466
4758
  className: "ml-auto h-4 w-4",
@@ -4470,7 +4762,7 @@ function MenubarSubTrigger({
4470
4762
  strokeWidth: "2",
4471
4763
  strokeLinecap: "round",
4472
4764
  strokeLinejoin: "round",
4473
- children: /* @__PURE__ */ jsx41("path", { d: "m9 18 6-6-6-6" })
4765
+ children: /* @__PURE__ */ jsx44("path", { d: "m9 18 6-6-6-6" })
4474
4766
  }
4475
4767
  )
4476
4768
  ]
@@ -4481,7 +4773,7 @@ function MenubarSubContent({ className, children, ...props }) {
4481
4773
  const { open } = useSub();
4482
4774
  const { isPresent, ref } = usePresence(open);
4483
4775
  if (!isPresent) return null;
4484
- return /* @__PURE__ */ jsx41(
4776
+ return /* @__PURE__ */ jsx44(
4485
4777
  "div",
4486
4778
  {
4487
4779
  ref,
@@ -4496,7 +4788,7 @@ function MenubarSubContent({ className, children, ...props }) {
4496
4788
  }
4497
4789
 
4498
4790
  // src/components/navigation-menu.tsx
4499
- import * as React51 from "react";
4791
+ import * as React54 from "react";
4500
4792
 
4501
4793
  // src/generated/navigation-menu.ts
4502
4794
  var NAVIGATION_MENU = "group/navigation-menu relative flex max-w-max flex-1 items-center justify-center";
@@ -4509,13 +4801,13 @@ var NAVIGATION_MENU_INDICATOR = "data-[state=visible]:animate-in data-[state=hid
4509
4801
  var NAVIGATION_MENU_VIEWPORT = "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)]";
4510
4802
 
4511
4803
  // src/components/navigation-menu.tsx
4512
- import { jsx as jsx42, jsxs as jsxs13 } from "react/jsx-runtime";
4804
+ import { jsx as jsx45, jsxs as jsxs15 } from "react/jsx-runtime";
4513
4805
  function navigationMenuTriggerStyle() {
4514
4806
  return NAVIGATION_MENU_TRIGGER_STYLE;
4515
4807
  }
4516
- var NavigationMenuItemContext = React51.createContext(null);
4808
+ var NavigationMenuItemContext = React54.createContext(null);
4517
4809
  function useItem() {
4518
- const ctx = React51.useContext(NavigationMenuItemContext);
4810
+ const ctx = React54.useContext(NavigationMenuItemContext);
4519
4811
  if (!ctx) throw new Error("NavigationMenu parts must be used within <NavigationMenuItem>");
4520
4812
  return ctx;
4521
4813
  }
@@ -4525,7 +4817,7 @@ function NavigationMenu({
4525
4817
  viewport = true,
4526
4818
  ...props
4527
4819
  }) {
4528
- return /* @__PURE__ */ jsxs13(
4820
+ return /* @__PURE__ */ jsxs15(
4529
4821
  "nav",
4530
4822
  {
4531
4823
  "data-slot": "navigation-menu",
@@ -4538,13 +4830,13 @@ function NavigationMenu({
4538
4830
  ...props,
4539
4831
  children: [
4540
4832
  children,
4541
- viewport && /* @__PURE__ */ jsx42(NavigationMenuViewport, {})
4833
+ viewport && /* @__PURE__ */ jsx45(NavigationMenuViewport, {})
4542
4834
  ]
4543
4835
  }
4544
4836
  );
4545
4837
  }
4546
4838
  function NavigationMenuList({ className, ...props }) {
4547
- return /* @__PURE__ */ jsx42(
4839
+ return /* @__PURE__ */ jsx45(
4548
4840
  "ul",
4549
4841
  {
4550
4842
  "data-slot": "navigation-menu-list",
@@ -4570,8 +4862,8 @@ function NavigationMenuItem({
4570
4862
  defaultValue: defaultOpen,
4571
4863
  onChange: onOpenChange
4572
4864
  });
4573
- const triggerRef = React51.useRef(null);
4574
- return /* @__PURE__ */ jsx42(NavigationMenuItemContext.Provider, { value: { open: isOpen, setOpen, triggerRef }, children: /* @__PURE__ */ jsx42("li", { "data-slot": "navigation-menu-item", className: cn(NAVIGATION_MENU_ITEM, className), ...props, children }) });
4865
+ const triggerRef = React54.useRef(null);
4866
+ return /* @__PURE__ */ jsx45(NavigationMenuItemContext.Provider, { value: { open: isOpen, setOpen, triggerRef }, children: /* @__PURE__ */ jsx45("li", { "data-slot": "navigation-menu-item", className: cn(NAVIGATION_MENU_ITEM, className), ...props, children }) });
4575
4867
  }
4576
4868
  function NavigationMenuTrigger({
4577
4869
  className,
@@ -4580,7 +4872,7 @@ function NavigationMenuTrigger({
4580
4872
  ...props
4581
4873
  }) {
4582
4874
  const { open, setOpen, triggerRef } = useItem();
4583
- return /* @__PURE__ */ jsxs13(
4875
+ return /* @__PURE__ */ jsxs15(
4584
4876
  "button",
4585
4877
  {
4586
4878
  ref: triggerRef,
@@ -4596,7 +4888,7 @@ function NavigationMenuTrigger({
4596
4888
  children: [
4597
4889
  children,
4598
4890
  " ",
4599
- /* @__PURE__ */ jsx42(
4891
+ /* @__PURE__ */ jsx45(
4600
4892
  "svg",
4601
4893
  {
4602
4894
  className: "relative top-[1px] ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180",
@@ -4607,7 +4899,7 @@ function NavigationMenuTrigger({
4607
4899
  strokeLinecap: "round",
4608
4900
  strokeLinejoin: "round",
4609
4901
  "aria-hidden": "true",
4610
- children: /* @__PURE__ */ jsx42("path", { d: "m6 9 6 6 6-6" })
4902
+ children: /* @__PURE__ */ jsx45("path", { d: "m6 9 6 6 6-6" })
4611
4903
  }
4612
4904
  )
4613
4905
  ]
@@ -4623,7 +4915,7 @@ function NavigationMenuContent({ className, children, ...props }) {
4623
4915
  exclude: [triggerRef]
4624
4916
  });
4625
4917
  if (!isPresent) return null;
4626
- return /* @__PURE__ */ jsx42(
4918
+ return /* @__PURE__ */ jsx45(
4627
4919
  "div",
4628
4920
  {
4629
4921
  ref: mergeRefs(presenceRef, dismissRef),
@@ -4639,7 +4931,7 @@ function NavigationMenuContent({ className, children, ...props }) {
4639
4931
  );
4640
4932
  }
4641
4933
  function NavigationMenuViewport({ className, ...props }) {
4642
- return /* @__PURE__ */ jsx42("div", { className: "absolute top-full left-0 isolate z-50 flex justify-center", children: /* @__PURE__ */ jsx42(
4934
+ return /* @__PURE__ */ jsx45("div", { className: "absolute top-full left-0 isolate z-50 flex justify-center", children: /* @__PURE__ */ jsx45(
4643
4935
  "div",
4644
4936
  {
4645
4937
  "data-slot": "navigation-menu-viewport",
@@ -4657,7 +4949,7 @@ function NavigationMenuLink({
4657
4949
  ...props
4658
4950
  }) {
4659
4951
  const Comp = asChild ? Slot : "a";
4660
- return /* @__PURE__ */ jsx42(
4952
+ return /* @__PURE__ */ jsx45(
4661
4953
  Comp,
4662
4954
  {
4663
4955
  "data-slot": "navigation-menu-link",
@@ -4670,7 +4962,7 @@ function NavigationMenuLink({
4670
4962
  );
4671
4963
  }
4672
4964
  function NavigationMenuIndicator({ className, ...props }) {
4673
- return /* @__PURE__ */ jsx42(
4965
+ return /* @__PURE__ */ jsx45(
4674
4966
  "div",
4675
4967
  {
4676
4968
  "data-slot": "navigation-menu-indicator",
@@ -4679,13 +4971,13 @@ function NavigationMenuIndicator({ className, ...props }) {
4679
4971
  className
4680
4972
  ),
4681
4973
  ...props,
4682
- children: /* @__PURE__ */ jsx42("div", { className: "bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md" })
4974
+ children: /* @__PURE__ */ jsx45("div", { className: "bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md" })
4683
4975
  }
4684
4976
  );
4685
4977
  }
4686
4978
 
4687
4979
  // src/components/dialog.tsx
4688
- import * as React52 from "react";
4980
+ import * as React55 from "react";
4689
4981
 
4690
4982
  // src/generated/dialog.ts
4691
4983
  var DIALOG_OVERLAY = "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";
@@ -4697,10 +4989,10 @@ var DIALOG_TITLE = "text-lg leading-none font-semibold";
4697
4989
  var DIALOG_DESCRIPTION = "text-muted-foreground text-sm";
4698
4990
 
4699
4991
  // src/components/dialog.tsx
4700
- import { Fragment as Fragment3, jsx as jsx43, jsxs as jsxs14 } from "react/jsx-runtime";
4701
- var DialogContext = React52.createContext(null);
4992
+ import { Fragment as Fragment5, jsx as jsx46, jsxs as jsxs16 } from "react/jsx-runtime";
4993
+ var DialogContext = React55.createContext(null);
4702
4994
  function useDialog() {
4703
- const ctx = React52.useContext(DialogContext);
4995
+ const ctx = React55.useContext(DialogContext);
4704
4996
  if (!ctx) throw new Error("Dialog parts must be used within <Dialog>");
4705
4997
  return ctx;
4706
4998
  }
@@ -4710,13 +5002,13 @@ function Dialog({ open, defaultOpen = false, onOpenChange, children }) {
4710
5002
  defaultValue: defaultOpen,
4711
5003
  ...onOpenChange ? { onChange: onOpenChange } : {}
4712
5004
  });
4713
- const triggerRef = React52.useRef(null);
4714
- return /* @__PURE__ */ jsx43(DialogContext.Provider, { value: { open: isOpen, setOpen, triggerRef }, children });
5005
+ const triggerRef = React55.useRef(null);
5006
+ return /* @__PURE__ */ jsx46(DialogContext.Provider, { value: { open: isOpen, setOpen, triggerRef }, children });
4715
5007
  }
4716
5008
  function DialogTrigger({ asChild = false, onClick, ...props }) {
4717
5009
  const { open, setOpen, triggerRef } = useDialog();
4718
5010
  const Comp = asChild ? Slot : "button";
4719
- return /* @__PURE__ */ jsx43(
5011
+ return /* @__PURE__ */ jsx46(
4720
5012
  Comp,
4721
5013
  {
4722
5014
  "data-slot": "dialog-trigger",
@@ -4731,11 +5023,11 @@ function DialogTrigger({ asChild = false, onClick, ...props }) {
4731
5023
  );
4732
5024
  }
4733
5025
  function DialogPortal({ children }) {
4734
- return /* @__PURE__ */ jsx43(Fragment3, { children });
5026
+ return /* @__PURE__ */ jsx46(Fragment5, { children });
4735
5027
  }
4736
5028
  function DialogOverlay({ className, ...props }) {
4737
5029
  const { open, setOpen } = useDialog();
4738
- return /* @__PURE__ */ jsx43(
5030
+ return /* @__PURE__ */ jsx46(
4739
5031
  "div",
4740
5032
  {
4741
5033
  "data-slot": "dialog-overlay",
@@ -4746,7 +5038,7 @@ function DialogOverlay({ className, ...props }) {
4746
5038
  }
4747
5039
  );
4748
5040
  }
4749
- var XIcon = (props) => /* @__PURE__ */ jsx43(
5041
+ var XIcon = (props) => /* @__PURE__ */ jsx46(
4750
5042
  "svg",
4751
5043
  {
4752
5044
  xmlns: "http://www.w3.org/2000/svg",
@@ -4759,7 +5051,7 @@ var XIcon = (props) => /* @__PURE__ */ jsx43(
4759
5051
  strokeLinecap: "round",
4760
5052
  strokeLinejoin: "round",
4761
5053
  ...props,
4762
- children: /* @__PURE__ */ jsx43("path", { d: "M18 6 6 18M6 6l12 12" })
5054
+ children: /* @__PURE__ */ jsx46("path", { d: "M18 6 6 18M6 6l12 12" })
4763
5055
  }
4764
5056
  );
4765
5057
  function DialogContent({
@@ -4776,7 +5068,7 @@ function DialogContent({
4776
5068
  onDismiss: () => setOpen(false),
4777
5069
  exclude: [triggerRef]
4778
5070
  });
4779
- React52.useEffect(() => {
5071
+ React55.useEffect(() => {
4780
5072
  if (!open) return;
4781
5073
  const prev = document.body.style.overflow;
4782
5074
  document.body.style.overflow = "hidden";
@@ -4785,9 +5077,9 @@ function DialogContent({
4785
5077
  };
4786
5078
  }, [open]);
4787
5079
  if (!isPresent) return null;
4788
- return /* @__PURE__ */ jsxs14(Portal, { children: [
4789
- /* @__PURE__ */ jsx43(DialogOverlay, {}),
4790
- /* @__PURE__ */ jsxs14(
5080
+ return /* @__PURE__ */ jsxs16(Portal, { children: [
5081
+ /* @__PURE__ */ jsx46(DialogOverlay, {}),
5082
+ /* @__PURE__ */ jsxs16(
4791
5083
  "div",
4792
5084
  {
4793
5085
  "data-slot": "dialog-content",
@@ -4799,7 +5091,7 @@ function DialogContent({
4799
5091
  ...props,
4800
5092
  children: [
4801
5093
  children,
4802
- showCloseButton && /* @__PURE__ */ jsxs14(
5094
+ showCloseButton && /* @__PURE__ */ jsxs16(
4803
5095
  "button",
4804
5096
  {
4805
5097
  type: "button",
@@ -4807,8 +5099,8 @@ function DialogContent({
4807
5099
  onClick: () => setOpen(false),
4808
5100
  className: DIALOG_CLOSE,
4809
5101
  children: [
4810
- /* @__PURE__ */ jsx43(XIcon, {}),
4811
- /* @__PURE__ */ jsx43("span", { className: "sr-only", children: "Close" })
5102
+ /* @__PURE__ */ jsx46(XIcon, {}),
5103
+ /* @__PURE__ */ jsx46("span", { className: "sr-only", children: "Close" })
4812
5104
  ]
4813
5105
  }
4814
5106
  )
@@ -4820,7 +5112,7 @@ function DialogContent({
4820
5112
  function DialogClose({ asChild = false, onClick, ...props }) {
4821
5113
  const { setOpen } = useDialog();
4822
5114
  const Comp = asChild ? Slot : "button";
4823
- return /* @__PURE__ */ jsx43(
5115
+ return /* @__PURE__ */ jsx46(
4824
5116
  Comp,
4825
5117
  {
4826
5118
  "data-slot": "dialog-close",
@@ -4833,7 +5125,7 @@ function DialogClose({ asChild = false, onClick, ...props }) {
4833
5125
  );
4834
5126
  }
4835
5127
  function DialogHeader({ className, ...props }) {
4836
- return /* @__PURE__ */ jsx43(
5128
+ return /* @__PURE__ */ jsx46(
4837
5129
  "div",
4838
5130
  {
4839
5131
  "data-slot": "dialog-header",
@@ -4843,7 +5135,7 @@ function DialogHeader({ className, ...props }) {
4843
5135
  );
4844
5136
  }
4845
5137
  function DialogFooter({ className, ...props }) {
4846
- return /* @__PURE__ */ jsx43(
5138
+ return /* @__PURE__ */ jsx46(
4847
5139
  "div",
4848
5140
  {
4849
5141
  "data-slot": "dialog-footer",
@@ -4853,7 +5145,7 @@ function DialogFooter({ className, ...props }) {
4853
5145
  );
4854
5146
  }
4855
5147
  function DialogTitle({ className, ...props }) {
4856
- return /* @__PURE__ */ jsx43(
5148
+ return /* @__PURE__ */ jsx46(
4857
5149
  "h2",
4858
5150
  {
4859
5151
  "data-slot": "dialog-title",
@@ -4863,7 +5155,7 @@ function DialogTitle({ className, ...props }) {
4863
5155
  );
4864
5156
  }
4865
5157
  function DialogDescription({ className, ...props }) {
4866
- return /* @__PURE__ */ jsx43(
5158
+ return /* @__PURE__ */ jsx46(
4867
5159
  "p",
4868
5160
  {
4869
5161
  "data-slot": "dialog-description",
@@ -4874,7 +5166,7 @@ function DialogDescription({ className, ...props }) {
4874
5166
  }
4875
5167
 
4876
5168
  // src/components/alert-dialog.tsx
4877
- import * as React53 from "react";
5169
+ import * as React56 from "react";
4878
5170
 
4879
5171
  // src/generated/alert-dialog.ts
4880
5172
  var ALERT_DIALOG_OVERLAY = "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";
@@ -4885,10 +5177,10 @@ var ALERT_DIALOG_TITLE = "text-lg font-semibold";
4885
5177
  var ALERT_DIALOG_DESCRIPTION = "text-muted-foreground text-sm";
4886
5178
 
4887
5179
  // src/components/alert-dialog.tsx
4888
- import { jsx as jsx44, jsxs as jsxs15 } from "react/jsx-runtime";
4889
- var AlertDialogContext = React53.createContext(null);
5180
+ import { jsx as jsx47, jsxs as jsxs17 } from "react/jsx-runtime";
5181
+ var AlertDialogContext = React56.createContext(null);
4890
5182
  function useAlertDialog() {
4891
- const ctx = React53.useContext(AlertDialogContext);
5183
+ const ctx = React56.useContext(AlertDialogContext);
4892
5184
  if (!ctx) throw new Error("AlertDialog parts must be used within <AlertDialog>");
4893
5185
  return ctx;
4894
5186
  }
@@ -4898,13 +5190,13 @@ function AlertDialog({ open, defaultOpen = false, onOpenChange, children }) {
4898
5190
  defaultValue: defaultOpen,
4899
5191
  ...onOpenChange ? { onChange: onOpenChange } : {}
4900
5192
  });
4901
- const triggerRef = React53.useRef(null);
4902
- return /* @__PURE__ */ jsx44(AlertDialogContext.Provider, { value: { open: isOpen, setOpen, triggerRef }, children });
5193
+ const triggerRef = React56.useRef(null);
5194
+ return /* @__PURE__ */ jsx47(AlertDialogContext.Provider, { value: { open: isOpen, setOpen, triggerRef }, children });
4903
5195
  }
4904
5196
  function AlertDialogTrigger({ asChild = false, onClick, ...props }) {
4905
5197
  const { open, setOpen, triggerRef } = useAlertDialog();
4906
5198
  const Comp = asChild ? Slot : "button";
4907
- return /* @__PURE__ */ jsx44(
5199
+ return /* @__PURE__ */ jsx47(
4908
5200
  Comp,
4909
5201
  {
4910
5202
  "data-slot": "alert-dialog-trigger",
@@ -4920,7 +5212,7 @@ function AlertDialogTrigger({ asChild = false, onClick, ...props }) {
4920
5212
  }
4921
5213
  function AlertDialogOverlay({ className, ...props }) {
4922
5214
  const { open, setOpen } = useAlertDialog();
4923
- return /* @__PURE__ */ jsx44(
5215
+ return /* @__PURE__ */ jsx47(
4924
5216
  "div",
4925
5217
  {
4926
5218
  "data-slot": "alert-dialog-overlay",
@@ -4941,9 +5233,9 @@ function AlertDialogContent({ className, children, ...props }) {
4941
5233
  exclude: [triggerRef]
4942
5234
  });
4943
5235
  if (!isPresent) return null;
4944
- return /* @__PURE__ */ jsxs15(Portal, { children: [
4945
- /* @__PURE__ */ jsx44(AlertDialogOverlay, {}),
4946
- /* @__PURE__ */ jsx44(
5236
+ return /* @__PURE__ */ jsxs17(Portal, { children: [
5237
+ /* @__PURE__ */ jsx47(AlertDialogOverlay, {}),
5238
+ /* @__PURE__ */ jsx47(
4947
5239
  "div",
4948
5240
  {
4949
5241
  "data-slot": "alert-dialog-content",
@@ -4959,7 +5251,7 @@ function AlertDialogContent({ className, children, ...props }) {
4959
5251
  ] });
4960
5252
  }
4961
5253
  function AlertDialogHeader({ className, ...props }) {
4962
- return /* @__PURE__ */ jsx44(
5254
+ return /* @__PURE__ */ jsx47(
4963
5255
  "div",
4964
5256
  {
4965
5257
  "data-slot": "alert-dialog-header",
@@ -4969,7 +5261,7 @@ function AlertDialogHeader({ className, ...props }) {
4969
5261
  );
4970
5262
  }
4971
5263
  function AlertDialogFooter({ className, ...props }) {
4972
- return /* @__PURE__ */ jsx44(
5264
+ return /* @__PURE__ */ jsx47(
4973
5265
  "div",
4974
5266
  {
4975
5267
  "data-slot": "alert-dialog-footer",
@@ -4979,7 +5271,7 @@ function AlertDialogFooter({ className, ...props }) {
4979
5271
  );
4980
5272
  }
4981
5273
  function AlertDialogTitle({ className, ...props }) {
4982
- return /* @__PURE__ */ jsx44(
5274
+ return /* @__PURE__ */ jsx47(
4983
5275
  "h2",
4984
5276
  {
4985
5277
  "data-slot": "alert-dialog-title",
@@ -4989,7 +5281,7 @@ function AlertDialogTitle({ className, ...props }) {
4989
5281
  );
4990
5282
  }
4991
5283
  function AlertDialogDescription({ className, ...props }) {
4992
- return /* @__PURE__ */ jsx44(
5284
+ return /* @__PURE__ */ jsx47(
4993
5285
  "p",
4994
5286
  {
4995
5287
  "data-slot": "alert-dialog-description",
@@ -5000,7 +5292,7 @@ function AlertDialogDescription({ className, ...props }) {
5000
5292
  }
5001
5293
  function AlertDialogAction({ className, onClick, ...props }) {
5002
5294
  const { setOpen } = useAlertDialog();
5003
- return /* @__PURE__ */ jsx44(
5295
+ return /* @__PURE__ */ jsx47(
5004
5296
  "button",
5005
5297
  {
5006
5298
  "data-slot": "alert-dialog-action",
@@ -5015,7 +5307,7 @@ function AlertDialogAction({ className, onClick, ...props }) {
5015
5307
  }
5016
5308
  function AlertDialogCancel({ className, onClick, ...props }) {
5017
5309
  const { setOpen } = useAlertDialog();
5018
- return /* @__PURE__ */ jsx44(
5310
+ return /* @__PURE__ */ jsx47(
5019
5311
  "button",
5020
5312
  {
5021
5313
  "data-slot": "alert-dialog-cancel",
@@ -5030,7 +5322,7 @@ function AlertDialogCancel({ className, onClick, ...props }) {
5030
5322
  }
5031
5323
 
5032
5324
  // src/components/sheet.tsx
5033
- import * as React54 from "react";
5325
+ import * as React57 from "react";
5034
5326
 
5035
5327
  // src/generated/sheet.ts
5036
5328
  var SHEET_OVERLAY = "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";
@@ -5046,10 +5338,10 @@ var SHEET_TITLE = "text-foreground font-semibold";
5046
5338
  var SHEET_DESCRIPTION = "text-muted-foreground text-sm";
5047
5339
 
5048
5340
  // src/components/sheet.tsx
5049
- import { jsx as jsx45, jsxs as jsxs16 } from "react/jsx-runtime";
5050
- var SheetContext = React54.createContext(null);
5341
+ import { jsx as jsx48, jsxs as jsxs18 } from "react/jsx-runtime";
5342
+ var SheetContext = React57.createContext(null);
5051
5343
  function useSheet() {
5052
- const ctx = React54.useContext(SheetContext);
5344
+ const ctx = React57.useContext(SheetContext);
5053
5345
  if (!ctx) throw new Error("Sheet parts must be used within <Sheet>");
5054
5346
  return ctx;
5055
5347
  }
@@ -5059,13 +5351,13 @@ function Sheet({ open, defaultOpen = false, onOpenChange, children }) {
5059
5351
  defaultValue: defaultOpen,
5060
5352
  ...onOpenChange ? { onChange: onOpenChange } : {}
5061
5353
  });
5062
- const triggerRef = React54.useRef(null);
5063
- return /* @__PURE__ */ jsx45(SheetContext.Provider, { value: { open: isOpen, setOpen, triggerRef }, children });
5354
+ const triggerRef = React57.useRef(null);
5355
+ return /* @__PURE__ */ jsx48(SheetContext.Provider, { value: { open: isOpen, setOpen, triggerRef }, children });
5064
5356
  }
5065
5357
  function SheetTrigger({ asChild = false, onClick, ...props }) {
5066
5358
  const { open, setOpen, triggerRef } = useSheet();
5067
5359
  const Comp = asChild ? Slot : "button";
5068
- return /* @__PURE__ */ jsx45(
5360
+ return /* @__PURE__ */ jsx48(
5069
5361
  Comp,
5070
5362
  {
5071
5363
  "data-slot": "sheet-trigger",
@@ -5081,7 +5373,7 @@ function SheetTrigger({ asChild = false, onClick, ...props }) {
5081
5373
  }
5082
5374
  function SheetOverlay({ className, ...props }) {
5083
5375
  const { open, setOpen } = useSheet();
5084
- return /* @__PURE__ */ jsx45(
5376
+ return /* @__PURE__ */ jsx48(
5085
5377
  "div",
5086
5378
  {
5087
5379
  "data-slot": "sheet-overlay",
@@ -5098,7 +5390,7 @@ var sheetSideClasses = {
5098
5390
  top: SHEET_SIDE_TOP,
5099
5391
  bottom: SHEET_SIDE_BOTTOM
5100
5392
  };
5101
- var XIcon2 = (props) => /* @__PURE__ */ jsx45(
5393
+ var XIcon2 = (props) => /* @__PURE__ */ jsx48(
5102
5394
  "svg",
5103
5395
  {
5104
5396
  xmlns: "http://www.w3.org/2000/svg",
@@ -5111,7 +5403,7 @@ var XIcon2 = (props) => /* @__PURE__ */ jsx45(
5111
5403
  strokeLinecap: "round",
5112
5404
  strokeLinejoin: "round",
5113
5405
  ...props,
5114
- children: /* @__PURE__ */ jsx45("path", { d: "M18 6 6 18M6 6l12 12" })
5406
+ children: /* @__PURE__ */ jsx48("path", { d: "M18 6 6 18M6 6l12 12" })
5115
5407
  }
5116
5408
  );
5117
5409
  function SheetContent({ className, children, side = "right", ...props }) {
@@ -5124,9 +5416,9 @@ function SheetContent({ className, children, side = "right", ...props }) {
5124
5416
  exclude: [triggerRef]
5125
5417
  });
5126
5418
  if (!isPresent) return null;
5127
- return /* @__PURE__ */ jsxs16(Portal, { children: [
5128
- /* @__PURE__ */ jsx45(SheetOverlay, {}),
5129
- /* @__PURE__ */ jsxs16(
5419
+ return /* @__PURE__ */ jsxs18(Portal, { children: [
5420
+ /* @__PURE__ */ jsx48(SheetOverlay, {}),
5421
+ /* @__PURE__ */ jsxs18(
5130
5422
  "div",
5131
5423
  {
5132
5424
  "data-slot": "sheet-content",
@@ -5138,7 +5430,7 @@ function SheetContent({ className, children, side = "right", ...props }) {
5138
5430
  ...props,
5139
5431
  children: [
5140
5432
  children,
5141
- /* @__PURE__ */ jsxs16(
5433
+ /* @__PURE__ */ jsxs18(
5142
5434
  "button",
5143
5435
  {
5144
5436
  type: "button",
@@ -5146,8 +5438,8 @@ function SheetContent({ className, children, side = "right", ...props }) {
5146
5438
  onClick: () => setOpen(false),
5147
5439
  className: SHEET_CLOSE,
5148
5440
  children: [
5149
- /* @__PURE__ */ jsx45(XIcon2, { className: "size-4" }),
5150
- /* @__PURE__ */ jsx45("span", { className: "sr-only", children: "Close" })
5441
+ /* @__PURE__ */ jsx48(XIcon2, { className: "size-4" }),
5442
+ /* @__PURE__ */ jsx48("span", { className: "sr-only", children: "Close" })
5151
5443
  ]
5152
5444
  }
5153
5445
  )
@@ -5159,7 +5451,7 @@ function SheetContent({ className, children, side = "right", ...props }) {
5159
5451
  function SheetClose({ asChild = false, onClick, ...props }) {
5160
5452
  const { setOpen } = useSheet();
5161
5453
  const Comp = asChild ? Slot : "button";
5162
- return /* @__PURE__ */ jsx45(
5454
+ return /* @__PURE__ */ jsx48(
5163
5455
  Comp,
5164
5456
  {
5165
5457
  "data-slot": "sheet-close",
@@ -5172,7 +5464,7 @@ function SheetClose({ asChild = false, onClick, ...props }) {
5172
5464
  );
5173
5465
  }
5174
5466
  function SheetHeader({ className, ...props }) {
5175
- return /* @__PURE__ */ jsx45(
5467
+ return /* @__PURE__ */ jsx48(
5176
5468
  "div",
5177
5469
  {
5178
5470
  "data-slot": "sheet-header",
@@ -5182,7 +5474,7 @@ function SheetHeader({ className, ...props }) {
5182
5474
  );
5183
5475
  }
5184
5476
  function SheetFooter({ className, ...props }) {
5185
- return /* @__PURE__ */ jsx45(
5477
+ return /* @__PURE__ */ jsx48(
5186
5478
  "div",
5187
5479
  {
5188
5480
  "data-slot": "sheet-footer",
@@ -5192,7 +5484,7 @@ function SheetFooter({ className, ...props }) {
5192
5484
  );
5193
5485
  }
5194
5486
  function SheetTitle({ className, ...props }) {
5195
- return /* @__PURE__ */ jsx45(
5487
+ return /* @__PURE__ */ jsx48(
5196
5488
  "h2",
5197
5489
  {
5198
5490
  "data-slot": "sheet-title",
@@ -5202,7 +5494,7 @@ function SheetTitle({ className, ...props }) {
5202
5494
  );
5203
5495
  }
5204
5496
  function SheetDescription({ className, ...props }) {
5205
- return /* @__PURE__ */ jsx45(
5497
+ return /* @__PURE__ */ jsx48(
5206
5498
  "p",
5207
5499
  {
5208
5500
  "data-slot": "sheet-description",
@@ -5213,7 +5505,7 @@ function SheetDescription({ className, ...props }) {
5213
5505
  }
5214
5506
 
5215
5507
  // src/components/drawer.tsx
5216
- import * as React55 from "react";
5508
+ import * as React58 from "react";
5217
5509
 
5218
5510
  // src/generated/drawer.ts
5219
5511
  var DRAWER_CONTENT_BASE = "bg-background fixed z-50 flex h-auto border";
@@ -5231,10 +5523,10 @@ var DRAWER_TITLE = "text-foreground font-semibold";
5231
5523
  var DRAWER_DESCRIPTION = "text-muted-foreground text-sm";
5232
5524
 
5233
5525
  // src/components/drawer.tsx
5234
- import { jsx as jsx46, jsxs as jsxs17 } from "react/jsx-runtime";
5235
- var DrawerContext = React55.createContext(null);
5526
+ import { jsx as jsx49, jsxs as jsxs19 } from "react/jsx-runtime";
5527
+ var DrawerContext = React58.createContext(null);
5236
5528
  function useDrawer() {
5237
- const ctx = React55.useContext(DrawerContext);
5529
+ const ctx = React58.useContext(DrawerContext);
5238
5530
  if (!ctx) throw new Error("Drawer parts must be used within <Drawer>");
5239
5531
  return ctx;
5240
5532
  }
@@ -5250,12 +5542,12 @@ function Drawer({
5250
5542
  defaultValue: defaultOpen,
5251
5543
  ...onOpenChange ? { onChange: onOpenChange } : {}
5252
5544
  });
5253
- return /* @__PURE__ */ jsx46(DrawerContext.Provider, { value: { open: isOpen, setOpen, direction }, children: /* @__PURE__ */ jsx46("div", { "data-slot": "drawer", children }) });
5545
+ return /* @__PURE__ */ jsx49(DrawerContext.Provider, { value: { open: isOpen, setOpen, direction }, children: /* @__PURE__ */ jsx49("div", { "data-slot": "drawer", children }) });
5254
5546
  }
5255
5547
  function DrawerTrigger({ asChild = false, onClick, ...props }) {
5256
5548
  const { setOpen } = useDrawer();
5257
5549
  const Comp = asChild ? Slot : "button";
5258
- return /* @__PURE__ */ jsx46(
5550
+ return /* @__PURE__ */ jsx49(
5259
5551
  Comp,
5260
5552
  {
5261
5553
  "data-slot": "drawer-trigger",
@@ -5270,7 +5562,7 @@ function DrawerTrigger({ asChild = false, onClick, ...props }) {
5270
5562
  function DrawerClose({ asChild = false, onClick, ...props }) {
5271
5563
  const { setOpen } = useDrawer();
5272
5564
  const Comp = asChild ? Slot : "button";
5273
- return /* @__PURE__ */ jsx46(
5565
+ return /* @__PURE__ */ jsx49(
5274
5566
  Comp,
5275
5567
  {
5276
5568
  "data-slot": "drawer-close",
@@ -5285,7 +5577,7 @@ function DrawerClose({ asChild = false, onClick, ...props }) {
5285
5577
  function DrawerOverlay({ className, ...props }) {
5286
5578
  const { open, setOpen } = useDrawer();
5287
5579
  if (!open) return null;
5288
- return /* @__PURE__ */ jsx46(
5580
+ return /* @__PURE__ */ jsx49(
5289
5581
  "div",
5290
5582
  {
5291
5583
  "data-slot": "drawer-overlay",
@@ -5300,8 +5592,8 @@ function DrawerContent({ className, children, ...props }) {
5300
5592
  const { open, setOpen, direction } = useDrawer();
5301
5593
  const scopeRef = useFocusScope(open);
5302
5594
  if (!open) return null;
5303
- return /* @__PURE__ */ jsxs17(Portal, { children: [
5304
- /* @__PURE__ */ jsx46(
5595
+ return /* @__PURE__ */ jsxs19(Portal, { children: [
5596
+ /* @__PURE__ */ jsx49(
5305
5597
  "div",
5306
5598
  {
5307
5599
  "data-slot": "drawer-overlay",
@@ -5309,7 +5601,7 @@ function DrawerContent({ className, children, ...props }) {
5309
5601
  onClick: () => setOpen(false)
5310
5602
  }
5311
5603
  ),
5312
- /* @__PURE__ */ jsxs17(
5604
+ /* @__PURE__ */ jsxs19(
5313
5605
  "div",
5314
5606
  {
5315
5607
  role: "dialog",
@@ -5324,7 +5616,7 @@ function DrawerContent({ className, children, ...props }) {
5324
5616
  className: cn(DRAWER_CONTENT_BASE, drawerDirectionClasses[direction], className),
5325
5617
  ...props,
5326
5618
  children: [
5327
- direction === "bottom" ? /* @__PURE__ */ jsx46(
5619
+ direction === "bottom" ? /* @__PURE__ */ jsx49(
5328
5620
  "div",
5329
5621
  {
5330
5622
  "data-slot": "drawer-handle",
@@ -5338,7 +5630,7 @@ function DrawerContent({ className, children, ...props }) {
5338
5630
  ] });
5339
5631
  }
5340
5632
  function DrawerHeader({ className, ...props }) {
5341
- return /* @__PURE__ */ jsx46(
5633
+ return /* @__PURE__ */ jsx49(
5342
5634
  "div",
5343
5635
  {
5344
5636
  "data-slot": "drawer-header",
@@ -5348,7 +5640,7 @@ function DrawerHeader({ className, ...props }) {
5348
5640
  );
5349
5641
  }
5350
5642
  function DrawerFooter({ className, ...props }) {
5351
- return /* @__PURE__ */ jsx46(
5643
+ return /* @__PURE__ */ jsx49(
5352
5644
  "div",
5353
5645
  {
5354
5646
  "data-slot": "drawer-footer",
@@ -5358,7 +5650,7 @@ function DrawerFooter({ className, ...props }) {
5358
5650
  );
5359
5651
  }
5360
5652
  function DrawerTitle({ className, ...props }) {
5361
- return /* @__PURE__ */ jsx46(
5653
+ return /* @__PURE__ */ jsx49(
5362
5654
  "div",
5363
5655
  {
5364
5656
  "data-slot": "drawer-title",
@@ -5368,7 +5660,7 @@ function DrawerTitle({ className, ...props }) {
5368
5660
  );
5369
5661
  }
5370
5662
  function DrawerDescription({ className, ...props }) {
5371
- return /* @__PURE__ */ jsx46(
5663
+ return /* @__PURE__ */ jsx49(
5372
5664
  "div",
5373
5665
  {
5374
5666
  "data-slot": "drawer-description",
@@ -5379,11 +5671,11 @@ function DrawerDescription({ className, ...props }) {
5379
5671
  }
5380
5672
 
5381
5673
  // src/components/select.tsx
5382
- import * as React56 from "react";
5383
- import { jsx as jsx47, jsxs as jsxs18 } from "react/jsx-runtime";
5384
- var SelectContext = React56.createContext(null);
5674
+ import * as React59 from "react";
5675
+ import { jsx as jsx50, jsxs as jsxs20 } from "react/jsx-runtime";
5676
+ var SelectContext = React59.createContext(null);
5385
5677
  function useSelect() {
5386
- const ctx = React56.useContext(SelectContext);
5678
+ const ctx = React59.useContext(SelectContext);
5387
5679
  if (!ctx) throw new Error("Select parts must be used within <Select>");
5388
5680
  return ctx;
5389
5681
  }
@@ -5406,8 +5698,8 @@ function Select({
5406
5698
  defaultValue: defaultOpen,
5407
5699
  ...onOpenChange ? { onChange: onOpenChange } : {}
5408
5700
  });
5409
- const anchorRef = React56.useRef(null);
5410
- return /* @__PURE__ */ jsx47(
5701
+ const anchorRef = React59.useRef(null);
5702
+ return /* @__PURE__ */ jsx50(
5411
5703
  SelectContext.Provider,
5412
5704
  {
5413
5705
  value: { value: currentValue, setValue, open: isOpen, setOpen, anchorRef },
@@ -5423,7 +5715,7 @@ function SelectTrigger({
5423
5715
  ...props
5424
5716
  }) {
5425
5717
  const { open, setOpen, anchorRef } = useSelect();
5426
- return /* @__PURE__ */ jsxs18(
5718
+ return /* @__PURE__ */ jsxs20(
5427
5719
  "button",
5428
5720
  {
5429
5721
  type: "button",
@@ -5444,7 +5736,7 @@ function SelectTrigger({
5444
5736
  ...props,
5445
5737
  children: [
5446
5738
  children,
5447
- /* @__PURE__ */ jsx47(
5739
+ /* @__PURE__ */ jsx50(
5448
5740
  "svg",
5449
5741
  {
5450
5742
  xmlns: "http://www.w3.org/2000/svg",
@@ -5458,7 +5750,7 @@ function SelectTrigger({
5458
5750
  strokeLinejoin: "round",
5459
5751
  className: "size-4 opacity-50",
5460
5752
  "aria-hidden": "true",
5461
- children: /* @__PURE__ */ jsx47("path", { d: "m6 9 6 6 6-6" })
5753
+ children: /* @__PURE__ */ jsx50("path", { d: "m6 9 6 6 6-6" })
5462
5754
  }
5463
5755
  )
5464
5756
  ]
@@ -5468,7 +5760,7 @@ function SelectTrigger({
5468
5760
  function SelectValue({ className, placeholder, ...props }) {
5469
5761
  const { value } = useSelect();
5470
5762
  const isEmpty = value === "";
5471
- return /* @__PURE__ */ jsx47(
5763
+ return /* @__PURE__ */ jsx50(
5472
5764
  "span",
5473
5765
  {
5474
5766
  "data-slot": "select-value",
@@ -5501,13 +5793,13 @@ function SelectContent({
5501
5793
  onDismiss: () => setOpen(false),
5502
5794
  exclude: [anchorRef]
5503
5795
  });
5504
- const items = React56.Children.toArray(children).filter(React56.isValidElement);
5796
+ const items = React59.Children.toArray(children).filter(React59.isValidElement);
5505
5797
  const { activeIndex, setActiveIndex, onKeyDown } = useRovingFocus({
5506
5798
  count: items.length,
5507
5799
  orientation: "vertical"
5508
5800
  });
5509
5801
  if (!isPresent) return null;
5510
- return /* @__PURE__ */ jsx47(Portal, { children: /* @__PURE__ */ jsx47(
5802
+ return /* @__PURE__ */ jsx50(Portal, { children: /* @__PURE__ */ jsx50(
5511
5803
  "div",
5512
5804
  {
5513
5805
  role: "listbox",
@@ -5523,8 +5815,8 @@ function SelectContent({
5523
5815
  className
5524
5816
  ),
5525
5817
  ...props,
5526
- children: /* @__PURE__ */ jsx47("div", { className: "p-1", children: items.map(
5527
- (child, index) => React56.cloneElement(child, {
5818
+ children: /* @__PURE__ */ jsx50("div", { className: "p-1", children: items.map(
5819
+ (child, index) => React59.cloneElement(child, {
5528
5820
  __index: index,
5529
5821
  __active: index === activeIndex,
5530
5822
  __setActive: setActiveIndex
@@ -5544,7 +5836,7 @@ function SelectItem({
5544
5836
  }) {
5545
5837
  const { value: selectedValue, setValue, setOpen } = useSelect();
5546
5838
  const selected = selectedValue === value;
5547
- return /* @__PURE__ */ jsxs18(
5839
+ return /* @__PURE__ */ jsxs20(
5548
5840
  "div",
5549
5841
  {
5550
5842
  role: "option",
@@ -5569,7 +5861,7 @@ function SelectItem({
5569
5861
  ),
5570
5862
  ...props,
5571
5863
  children: [
5572
- selected ? /* @__PURE__ */ jsx47("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx47(
5864
+ selected ? /* @__PURE__ */ jsx50("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx50(
5573
5865
  "svg",
5574
5866
  {
5575
5867
  xmlns: "http://www.w3.org/2000/svg",
@@ -5583,19 +5875,19 @@ function SelectItem({
5583
5875
  strokeLinejoin: "round",
5584
5876
  className: "size-4",
5585
5877
  "aria-hidden": "true",
5586
- children: /* @__PURE__ */ jsx47("path", { d: "M20 6 9 17l-5-5" })
5878
+ children: /* @__PURE__ */ jsx50("path", { d: "M20 6 9 17l-5-5" })
5587
5879
  }
5588
5880
  ) }) : null,
5589
- /* @__PURE__ */ jsx47("span", { children })
5881
+ /* @__PURE__ */ jsx50("span", { children })
5590
5882
  ]
5591
5883
  }
5592
5884
  );
5593
5885
  }
5594
5886
  function SelectGroup({ className, ...props }) {
5595
- return /* @__PURE__ */ jsx47("div", { role: "group", "data-slot": "select-group", className, ...props });
5887
+ return /* @__PURE__ */ jsx50("div", { role: "group", "data-slot": "select-group", className, ...props });
5596
5888
  }
5597
5889
  function SelectLabel({ className, ...props }) {
5598
- return /* @__PURE__ */ jsx47(
5890
+ return /* @__PURE__ */ jsx50(
5599
5891
  "div",
5600
5892
  {
5601
5893
  "data-slot": "select-label",
@@ -5605,7 +5897,7 @@ function SelectLabel({ className, ...props }) {
5605
5897
  );
5606
5898
  }
5607
5899
  function SelectSeparator({ className, ...props }) {
5608
- return /* @__PURE__ */ jsx47(
5900
+ return /* @__PURE__ */ jsx50(
5609
5901
  "div",
5610
5902
  {
5611
5903
  "data-slot": "select-separator",
@@ -5616,7 +5908,7 @@ function SelectSeparator({ className, ...props }) {
5616
5908
  }
5617
5909
 
5618
5910
  // src/components/command.tsx
5619
- import * as React57 from "react";
5911
+ import * as React60 from "react";
5620
5912
 
5621
5913
  // src/generated/command.ts
5622
5914
  var COMMAND_ROOT = "bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md";
@@ -5633,10 +5925,10 @@ var COMMAND_SEPARATOR = "bg-border -mx-1 h-px";
5633
5925
  var COMMAND_SHORTCUT = "text-muted-foreground ml-auto text-xs tracking-widest";
5634
5926
 
5635
5927
  // src/components/command.tsx
5636
- import { jsx as jsx48, jsxs as jsxs19 } from "react/jsx-runtime";
5637
- var CommandContext = React57.createContext(null);
5928
+ import { jsx as jsx51, jsxs as jsxs21 } from "react/jsx-runtime";
5929
+ var CommandContext = React60.createContext(null);
5638
5930
  function useCommand() {
5639
- const ctx = React57.useContext(CommandContext);
5931
+ const ctx = React60.useContext(CommandContext);
5640
5932
  if (!ctx) throw new Error("Command parts must be used within <Command>");
5641
5933
  return ctx;
5642
5934
  }
@@ -5653,7 +5945,7 @@ function Command({
5653
5945
  defaultValue: defaultSearch,
5654
5946
  ...onSearchChange ? { onChange: onSearchChange } : {}
5655
5947
  });
5656
- return /* @__PURE__ */ jsx48(CommandContext.Provider, { value: { search: currentSearch, setSearch }, children: /* @__PURE__ */ jsx48(
5948
+ return /* @__PURE__ */ jsx51(CommandContext.Provider, { value: { search: currentSearch, setSearch }, children: /* @__PURE__ */ jsx51(
5657
5949
  "div",
5658
5950
  {
5659
5951
  "data-slot": "command",
@@ -5677,8 +5969,8 @@ function CommandDialog({
5677
5969
  });
5678
5970
  const scopeRef = useFocusScope(isOpen);
5679
5971
  if (!isOpen) return null;
5680
- return /* @__PURE__ */ jsxs19(Portal, { children: [
5681
- /* @__PURE__ */ jsx48(
5972
+ return /* @__PURE__ */ jsxs21(Portal, { children: [
5973
+ /* @__PURE__ */ jsx51(
5682
5974
  "div",
5683
5975
  {
5684
5976
  "data-slot": "command-overlay",
@@ -5686,7 +5978,7 @@ function CommandDialog({
5686
5978
  onClick: () => setOpen(false)
5687
5979
  }
5688
5980
  ),
5689
- /* @__PURE__ */ jsx48(
5981
+ /* @__PURE__ */ jsx51(
5690
5982
  "div",
5691
5983
  {
5692
5984
  role: "dialog",
@@ -5697,7 +5989,7 @@ function CommandDialog({
5697
5989
  if (e.key === "Escape") setOpen(false);
5698
5990
  },
5699
5991
  className: cn(COMMAND_DIALOG_CONTENT, className),
5700
- children: /* @__PURE__ */ jsx48(Command, { className: COMMAND_DIALOG_COMMAND, children })
5992
+ children: /* @__PURE__ */ jsx51(Command, { className: COMMAND_DIALOG_COMMAND, children })
5701
5993
  }
5702
5994
  )
5703
5995
  ] });
@@ -5707,8 +5999,8 @@ function CommandInput({
5707
5999
  ...props
5708
6000
  }) {
5709
6001
  const { search, setSearch } = useCommand();
5710
- return /* @__PURE__ */ jsxs19("div", { className: COMMAND_INPUT_WRAPPER, "data-slot": "command-input-wrapper", children: [
5711
- /* @__PURE__ */ jsxs19(
6002
+ return /* @__PURE__ */ jsxs21("div", { className: COMMAND_INPUT_WRAPPER, "data-slot": "command-input-wrapper", children: [
6003
+ /* @__PURE__ */ jsxs21(
5712
6004
  "svg",
5713
6005
  {
5714
6006
  xmlns: "http://www.w3.org/2000/svg",
@@ -5723,12 +6015,12 @@ function CommandInput({
5723
6015
  className: "size-4 shrink-0 opacity-50",
5724
6016
  "aria-hidden": "true",
5725
6017
  children: [
5726
- /* @__PURE__ */ jsx48("circle", { cx: "11", cy: "11", r: "8" }),
5727
- /* @__PURE__ */ jsx48("path", { d: "m21 21-4.3-4.3" })
6018
+ /* @__PURE__ */ jsx51("circle", { cx: "11", cy: "11", r: "8" }),
6019
+ /* @__PURE__ */ jsx51("path", { d: "m21 21-4.3-4.3" })
5728
6020
  ]
5729
6021
  }
5730
6022
  ),
5731
- /* @__PURE__ */ jsx48(
6023
+ /* @__PURE__ */ jsx51(
5732
6024
  "input",
5733
6025
  {
5734
6026
  type: "text",
@@ -5743,7 +6035,7 @@ function CommandInput({
5743
6035
  ] });
5744
6036
  }
5745
6037
  function CommandList({ className, ...props }) {
5746
- return /* @__PURE__ */ jsx48(
6038
+ return /* @__PURE__ */ jsx51(
5747
6039
  "div",
5748
6040
  {
5749
6041
  role: "listbox",
@@ -5757,7 +6049,7 @@ function CommandEmpty({ className, children, ...props }) {
5757
6049
  const { search } = useCommand();
5758
6050
  const hasQuery = search.trim() !== "";
5759
6051
  if (!hasQuery) return null;
5760
- return /* @__PURE__ */ jsx48(
6052
+ return /* @__PURE__ */ jsx51(
5761
6053
  "div",
5762
6054
  {
5763
6055
  "data-slot": "command-empty",
@@ -5768,7 +6060,7 @@ function CommandEmpty({ className, children, ...props }) {
5768
6060
  );
5769
6061
  }
5770
6062
  function CommandGroup({ className, heading, children, ...props }) {
5771
- return /* @__PURE__ */ jsxs19(
6063
+ return /* @__PURE__ */ jsxs21(
5772
6064
  "div",
5773
6065
  {
5774
6066
  role: "group",
@@ -5776,7 +6068,7 @@ function CommandGroup({ className, heading, children, ...props }) {
5776
6068
  className: cn(COMMAND_GROUP, className),
5777
6069
  ...props,
5778
6070
  children: [
5779
- heading ? /* @__PURE__ */ jsx48("div", { "data-slot": "command-group-heading", children: heading }) : null,
6071
+ heading ? /* @__PURE__ */ jsx51("div", { "data-slot": "command-group-heading", children: heading }) : null,
5780
6072
  children
5781
6073
  ]
5782
6074
  }
@@ -5793,7 +6085,7 @@ function CommandItem({
5793
6085
  const { search } = useCommand();
5794
6086
  const query = search.toLowerCase();
5795
6087
  if (query !== "" && !value.toLowerCase().includes(query)) return null;
5796
- return /* @__PURE__ */ jsx48(
6088
+ return /* @__PURE__ */ jsx51(
5797
6089
  "div",
5798
6090
  {
5799
6091
  role: "option",
@@ -5811,7 +6103,7 @@ function CommandItem({
5811
6103
  );
5812
6104
  }
5813
6105
  function CommandSeparator({ className, ...props }) {
5814
- return /* @__PURE__ */ jsx48(
6106
+ return /* @__PURE__ */ jsx51(
5815
6107
  "div",
5816
6108
  {
5817
6109
  "data-slot": "command-separator",
@@ -5821,7 +6113,7 @@ function CommandSeparator({ className, ...props }) {
5821
6113
  );
5822
6114
  }
5823
6115
  function CommandShortcut({ className, ...props }) {
5824
- return /* @__PURE__ */ jsx48(
6116
+ return /* @__PURE__ */ jsx51(
5825
6117
  "span",
5826
6118
  {
5827
6119
  "data-slot": "command-shortcut",
@@ -5832,7 +6124,7 @@ function CommandShortcut({ className, ...props }) {
5832
6124
  }
5833
6125
 
5834
6126
  // src/components/chart.tsx
5835
- import * as React58 from "react";
6127
+ import * as React61 from "react";
5836
6128
 
5837
6129
  // src/generated/chart.ts
5838
6130
  var CHART_CONTAINER = "flex aspect-video justify-center text-xs [&_.recharts-layer]:outline-hidden [&_.recharts-surface]:outline-hidden [&_svg]:outline-hidden";
@@ -5840,10 +6132,10 @@ var CHART_TOOLTIP = "border-border/50 bg-background grid min-w-[8rem] items-star
5840
6132
  var CHART_LEGEND = "flex items-center justify-center gap-4";
5841
6133
 
5842
6134
  // src/components/chart.tsx
5843
- import { Fragment as Fragment4, jsx as jsx49, jsxs as jsxs20 } from "react/jsx-runtime";
5844
- var ChartContext = React58.createContext(null);
6135
+ import { Fragment as Fragment6, jsx as jsx52, jsxs as jsxs22 } from "react/jsx-runtime";
6136
+ var ChartContext = React61.createContext(null);
5845
6137
  function useChart() {
5846
- const context = React58.useContext(ChartContext);
6138
+ const context = React61.useContext(ChartContext);
5847
6139
  if (!context) {
5848
6140
  throw new Error("useChart must be used within a <ChartContainer />");
5849
6141
  }
@@ -5856,9 +6148,9 @@ function ChartContainer({
5856
6148
  config,
5857
6149
  ...props
5858
6150
  }) {
5859
- const uniqueId = React58.useId();
6151
+ const uniqueId = React61.useId();
5860
6152
  const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
5861
- return /* @__PURE__ */ jsx49(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs20(
6153
+ return /* @__PURE__ */ jsx52(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs22(
5862
6154
  "div",
5863
6155
  {
5864
6156
  "data-slot": "chart",
@@ -5866,7 +6158,7 @@ function ChartContainer({
5866
6158
  className: cn(CHART_CONTAINER, className),
5867
6159
  ...props,
5868
6160
  children: [
5869
- /* @__PURE__ */ jsx49(ChartStyle, { id: chartId, config }),
6161
+ /* @__PURE__ */ jsx52(ChartStyle, { id: chartId, config }),
5870
6162
  children
5871
6163
  ]
5872
6164
  }
@@ -5877,7 +6169,7 @@ var ChartStyle = ({ id, config }) => {
5877
6169
  if (!colorConfig.length) {
5878
6170
  return null;
5879
6171
  }
5880
- return /* @__PURE__ */ jsx49(
6172
+ return /* @__PURE__ */ jsx52(
5881
6173
  "style",
5882
6174
  {
5883
6175
  dangerouslySetInnerHTML: {
@@ -5888,7 +6180,7 @@ ${colorConfig.map(([key, itemConfig]) => ` --color-${key}: ${itemConfig.color};
5888
6180
  }
5889
6181
  );
5890
6182
  };
5891
- var ChartTooltip = ({ children }) => /* @__PURE__ */ jsx49(Fragment4, { children });
6183
+ var ChartTooltip = ({ children }) => /* @__PURE__ */ jsx52(Fragment6, { children });
5892
6184
  function ChartTooltipContent({
5893
6185
  className,
5894
6186
  items = [],
@@ -5901,21 +6193,21 @@ function ChartTooltipContent({
5901
6193
  if (!items.length) {
5902
6194
  return null;
5903
6195
  }
5904
- return /* @__PURE__ */ jsxs20(
6196
+ return /* @__PURE__ */ jsxs22(
5905
6197
  "div",
5906
6198
  {
5907
6199
  "data-slot": "chart-tooltip",
5908
6200
  className: cn(CHART_TOOLTIP, className),
5909
6201
  children: [
5910
- !hideLabel && label ? /* @__PURE__ */ jsx49("div", { className: cn("font-medium", labelClassName), children: label }) : null,
5911
- /* @__PURE__ */ jsx49("div", { className: "grid gap-1.5", children: items.map((item, index) => /* @__PURE__ */ jsxs20(
6202
+ !hideLabel && label ? /* @__PURE__ */ jsx52("div", { className: cn("font-medium", labelClassName), children: label }) : null,
6203
+ /* @__PURE__ */ jsx52("div", { className: "grid gap-1.5", children: items.map((item, index) => /* @__PURE__ */ jsxs22(
5912
6204
  "div",
5913
6205
  {
5914
6206
  className: cn(
5915
6207
  "[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 items-center"
5916
6208
  ),
5917
6209
  children: [
5918
- !hideIndicator && /* @__PURE__ */ jsx49(
6210
+ !hideIndicator && /* @__PURE__ */ jsx52(
5919
6211
  "div",
5920
6212
  {
5921
6213
  className: "shrink-0 rounded-[2px] h-2.5 w-2.5",
@@ -5925,9 +6217,9 @@ function ChartTooltipContent({
5925
6217
  }
5926
6218
  }
5927
6219
  ),
5928
- /* @__PURE__ */ jsxs20("div", { className: "flex flex-1 justify-between leading-none items-center", children: [
5929
- /* @__PURE__ */ jsx49("span", { className: "text-muted-foreground", children: item.label }),
5930
- item.value !== void 0 && /* @__PURE__ */ jsx49("span", { className: "text-foreground font-mono font-medium tabular-nums", children: item.value })
6220
+ /* @__PURE__ */ jsxs22("div", { className: "flex flex-1 justify-between leading-none items-center", children: [
6221
+ /* @__PURE__ */ jsx52("span", { className: "text-muted-foreground", children: item.label }),
6222
+ item.value !== void 0 && /* @__PURE__ */ jsx52("span", { className: "text-foreground font-mono font-medium tabular-nums", children: item.value })
5931
6223
  ] })
5932
6224
  ]
5933
6225
  },
@@ -5937,7 +6229,7 @@ function ChartTooltipContent({
5937
6229
  }
5938
6230
  );
5939
6231
  }
5940
- var ChartLegend = ({ children }) => /* @__PURE__ */ jsx49(Fragment4, { children });
6232
+ var ChartLegend = ({ children }) => /* @__PURE__ */ jsx52(Fragment6, { children });
5941
6233
  function ChartLegendContent({
5942
6234
  className,
5943
6235
  hideIcon = false,
@@ -5951,19 +6243,19 @@ function ChartLegendContent({
5951
6243
  if (!rows.length) {
5952
6244
  return null;
5953
6245
  }
5954
- return /* @__PURE__ */ jsx49(
6246
+ return /* @__PURE__ */ jsx52(
5955
6247
  "div",
5956
6248
  {
5957
6249
  "data-slot": "chart-legend",
5958
6250
  className: cn(CHART_LEGEND, className),
5959
- children: rows.map((item, index) => /* @__PURE__ */ jsxs20(
6251
+ children: rows.map((item, index) => /* @__PURE__ */ jsxs22(
5960
6252
  "div",
5961
6253
  {
5962
6254
  className: cn(
5963
6255
  "[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3"
5964
6256
  ),
5965
6257
  children: [
5966
- !hideIcon && /* @__PURE__ */ jsx49(
6258
+ !hideIcon && /* @__PURE__ */ jsx52(
5967
6259
  "div",
5968
6260
  {
5969
6261
  className: "h-2 w-2 shrink-0 rounded-[2px]",
@@ -5980,7 +6272,7 @@ function ChartLegendContent({
5980
6272
  }
5981
6273
 
5982
6274
  // src/components/calendar.tsx
5983
- import * as React59 from "react";
6275
+ import * as React62 from "react";
5984
6276
 
5985
6277
  // src/generated/calendar.ts
5986
6278
  var CALENDAR_ROOT = "bg-background p-3 w-fit";
@@ -5998,7 +6290,7 @@ var CALENDAR_DAY_SELECTED = "bg-primary text-primary-foreground";
5998
6290
  var CALENDAR_DAY_TODAY = "bg-accent text-accent-foreground rounded-md";
5999
6291
 
6000
6292
  // src/components/calendar.tsx
6001
- import { jsx as jsx50, jsxs as jsxs21 } from "react/jsx-runtime";
6293
+ import { jsx as jsx53, jsxs as jsxs23 } from "react/jsx-runtime";
6002
6294
  var MONTHS = [
6003
6295
  "January",
6004
6296
  "February",
@@ -6017,7 +6309,7 @@ var WEEKDAYS = ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"];
6017
6309
  var CHEVRON_LEFT = "m15 18-6-6 6-6";
6018
6310
  var CHEVRON_RIGHT = "m9 18 6-6-6-6";
6019
6311
  function Chevron({ d }) {
6020
- return /* @__PURE__ */ jsx50(
6312
+ return /* @__PURE__ */ jsx53(
6021
6313
  "svg",
6022
6314
  {
6023
6315
  className: "size-4",
@@ -6031,7 +6323,7 @@ function Chevron({ d }) {
6031
6323
  strokeLinecap: "round",
6032
6324
  strokeLinejoin: "round",
6033
6325
  "aria-hidden": true,
6034
- children: /* @__PURE__ */ jsx50("path", { d })
6326
+ children: /* @__PURE__ */ jsx53("path", { d })
6035
6327
  }
6036
6328
  );
6037
6329
  }
@@ -6053,7 +6345,7 @@ function Calendar({
6053
6345
  today = /* @__PURE__ */ new Date(),
6054
6346
  className
6055
6347
  }) {
6056
- const [internal, setInternal] = React59.useState(
6348
+ const [internal, setInternal] = React62.useState(
6057
6349
  () => startOfMonth(defaultMonth ?? /* @__PURE__ */ new Date())
6058
6350
  );
6059
6351
  const view = month ? startOfMonth(month) : internal;
@@ -6078,38 +6370,38 @@ function Calendar({
6078
6370
  size: "icon",
6079
6371
  className: CALENDAR_NAV_BUTTON
6080
6372
  });
6081
- return /* @__PURE__ */ jsxs21(
6373
+ return /* @__PURE__ */ jsxs23(
6082
6374
  "div",
6083
6375
  {
6084
6376
  "data-slot": "calendar",
6085
6377
  role: "application",
6086
6378
  className: cn(CALENDAR_ROOT, className),
6087
6379
  children: [
6088
- /* @__PURE__ */ jsxs21("div", { className: CALENDAR_NAV, children: [
6089
- /* @__PURE__ */ jsx50(
6380
+ /* @__PURE__ */ jsxs23("div", { className: CALENDAR_NAV, children: [
6381
+ /* @__PURE__ */ jsx53(
6090
6382
  "button",
6091
6383
  {
6092
6384
  type: "button",
6093
6385
  className: navClass,
6094
6386
  "aria-label": "Previous month",
6095
6387
  onClick: () => go(-1),
6096
- children: /* @__PURE__ */ jsx50(Chevron, { d: CHEVRON_LEFT })
6388
+ children: /* @__PURE__ */ jsx53(Chevron, { d: CHEVRON_LEFT })
6097
6389
  }
6098
6390
  ),
6099
- /* @__PURE__ */ jsx50("div", { className: CALENDAR_CAPTION, children: caption }),
6100
- /* @__PURE__ */ jsx50(
6391
+ /* @__PURE__ */ jsx53("div", { className: CALENDAR_CAPTION, children: caption }),
6392
+ /* @__PURE__ */ jsx53(
6101
6393
  "button",
6102
6394
  {
6103
6395
  type: "button",
6104
6396
  className: navClass,
6105
6397
  "aria-label": "Next month",
6106
6398
  onClick: () => go(1),
6107
- children: /* @__PURE__ */ jsx50(Chevron, { d: CHEVRON_RIGHT })
6399
+ children: /* @__PURE__ */ jsx53(Chevron, { d: CHEVRON_RIGHT })
6108
6400
  }
6109
6401
  )
6110
6402
  ] }),
6111
- /* @__PURE__ */ jsxs21("table", { className: CALENDAR_GRID, role: "grid", children: [
6112
- /* @__PURE__ */ jsx50("thead", { children: /* @__PURE__ */ jsx50("tr", { className: CALENDAR_WEEKDAY_ROW, children: WEEKDAYS.map((wd) => /* @__PURE__ */ jsx50(
6403
+ /* @__PURE__ */ jsxs23("table", { className: CALENDAR_GRID, role: "grid", children: [
6404
+ /* @__PURE__ */ jsx53("thead", { children: /* @__PURE__ */ jsx53("tr", { className: CALENDAR_WEEKDAY_ROW, children: WEEKDAYS.map((wd) => /* @__PURE__ */ jsx53(
6113
6405
  "th",
6114
6406
  {
6115
6407
  scope: "col",
@@ -6118,9 +6410,9 @@ function Calendar({
6118
6410
  },
6119
6411
  wd
6120
6412
  )) }) }),
6121
- /* @__PURE__ */ jsx50("tbody", { children: weeks.map((week, wi) => /* @__PURE__ */ jsx50("tr", { className: CALENDAR_WEEK, children: week.map((cell, ci) => {
6413
+ /* @__PURE__ */ jsx53("tbody", { children: weeks.map((week, wi) => /* @__PURE__ */ jsx53("tr", { className: CALENDAR_WEEK, children: week.map((cell, ci) => {
6122
6414
  if (cell === null) {
6123
- return /* @__PURE__ */ jsx50(
6415
+ return /* @__PURE__ */ jsx53(
6124
6416
  "td",
6125
6417
  {
6126
6418
  className: CALENDAR_DAY_EMPTY
@@ -6131,13 +6423,13 @@ function Calendar({
6131
6423
  const date = new Date(year, monthIndex, cell);
6132
6424
  const isSelected = sameDay(selected, date);
6133
6425
  const isToday = sameDay(today, date);
6134
- return /* @__PURE__ */ jsx50(
6426
+ return /* @__PURE__ */ jsx53(
6135
6427
  "td",
6136
6428
  {
6137
6429
  role: "gridcell",
6138
6430
  "aria-selected": isSelected,
6139
6431
  className: CALENDAR_DAY_CELL,
6140
- children: /* @__PURE__ */ jsx50(
6432
+ children: /* @__PURE__ */ jsx53(
6141
6433
  "button",
6142
6434
  {
6143
6435
  type: "button",
@@ -6167,7 +6459,7 @@ function Calendar({
6167
6459
  }
6168
6460
 
6169
6461
  // src/components/sonner.tsx
6170
- import * as React60 from "react";
6462
+ import * as React63 from "react";
6171
6463
 
6172
6464
  // src/generated/sonner.ts
6173
6465
  var TOAST_BASE = "pointer-events-auto flex w-full items-start gap-3 rounded-md border p-4 text-sm shadow-lg";
@@ -6192,7 +6484,7 @@ var TOAST_CONTENT = "flex-1 space-y-1";
6192
6484
  var TOAST_TITLE = "font-medium";
6193
6485
 
6194
6486
  // src/components/sonner.tsx
6195
- import { jsx as jsx51, jsxs as jsxs22 } from "react/jsx-runtime";
6487
+ import { jsx as jsx54, jsxs as jsxs24 } from "react/jsx-runtime";
6196
6488
  var DEFAULT_DURATION = 4e3;
6197
6489
  var SWIPE_THRESHOLD = 45;
6198
6490
  var SWIPE_VELOCITY = 0.11;
@@ -6257,17 +6549,17 @@ function ToastItem({
6257
6549
  reportHeight,
6258
6550
  removeHeight
6259
6551
  }) {
6260
- const ref = React60.useRef(null);
6261
- const [height, setHeight] = React60.useState(0);
6262
- const remainingRef = React60.useRef(t.duration);
6263
- const startedRef = React60.useRef(0);
6264
- const flingRef = React60.useRef(
6552
+ const ref = React63.useRef(null);
6553
+ const [height, setHeight] = React63.useState(0);
6554
+ const remainingRef = React63.useRef(t.duration);
6555
+ const startedRef = React63.useRef(0);
6556
+ const flingRef = React63.useRef(
6265
6557
  void 0
6266
6558
  );
6267
- const dragRef = React60.useRef(
6559
+ const dragRef = React63.useRef(
6268
6560
  null
6269
6561
  );
6270
- React60.useLayoutEffect(() => {
6562
+ React63.useLayoutEffect(() => {
6271
6563
  const el = ref.current;
6272
6564
  if (!el) return;
6273
6565
  el.style.height = "auto";
@@ -6278,8 +6570,8 @@ function ToastItem({
6278
6570
  reportHeight(t.id, h);
6279
6571
  }
6280
6572
  }, [t.id, t.message, t.description, reportHeight]);
6281
- React60.useEffect(() => () => removeHeight(t.id), [t.id, removeHeight]);
6282
- React60.useEffect(() => {
6573
+ React63.useEffect(() => () => removeHeight(t.id), [t.id, removeHeight]);
6574
+ React63.useEffect(() => {
6283
6575
  if (t.duration === Infinity || t.state === "closing" || paused) return;
6284
6576
  startedRef.current = Date.now();
6285
6577
  const id = setTimeout(() => store.dismiss(t.id), remainingRef.current);
@@ -6291,7 +6583,7 @@ function ToastItem({
6291
6583
  );
6292
6584
  };
6293
6585
  }, [paused, t.id, t.duration, t.state]);
6294
- React60.useEffect(
6586
+ React63.useEffect(
6295
6587
  () => () => {
6296
6588
  if (flingRef.current) clearTimeout(flingRef.current);
6297
6589
  },
@@ -6350,7 +6642,7 @@ function ToastItem({
6350
6642
  );
6351
6643
  }
6352
6644
  };
6353
- return /* @__PURE__ */ jsxs22(
6645
+ return /* @__PURE__ */ jsxs24(
6354
6646
  "li",
6355
6647
  {
6356
6648
  ref,
@@ -6378,11 +6670,11 @@ function ToastItem({
6378
6670
  toastVariantClasses[t.variant]
6379
6671
  ),
6380
6672
  children: [
6381
- /* @__PURE__ */ jsxs22("div", { className: TOAST_CONTENT, children: [
6382
- /* @__PURE__ */ jsx51("div", { className: TOAST_TITLE, children: t.message }),
6383
- t.description ? /* @__PURE__ */ jsx51("div", { className: "text-muted-foreground text-sm", children: t.description }) : null
6673
+ /* @__PURE__ */ jsxs24("div", { className: TOAST_CONTENT, children: [
6674
+ /* @__PURE__ */ jsx54("div", { className: TOAST_TITLE, children: t.message }),
6675
+ t.description ? /* @__PURE__ */ jsx54("div", { className: "text-muted-foreground text-sm", children: t.description }) : null
6384
6676
  ] }),
6385
- /* @__PURE__ */ jsx51(
6677
+ /* @__PURE__ */ jsx54(
6386
6678
  "button",
6387
6679
  {
6388
6680
  type: "button",
@@ -6390,7 +6682,7 @@ function ToastItem({
6390
6682
  "data-slot": "toast-close",
6391
6683
  onClick: () => store.dismiss(t.id),
6392
6684
  className: TOAST_CLOSE,
6393
- children: /* @__PURE__ */ jsx51(
6685
+ children: /* @__PURE__ */ jsx54(
6394
6686
  "svg",
6395
6687
  {
6396
6688
  xmlns: "http://www.w3.org/2000/svg",
@@ -6403,7 +6695,7 @@ function ToastItem({
6403
6695
  strokeLinecap: "round",
6404
6696
  strokeLinejoin: "round",
6405
6697
  "aria-hidden": "true",
6406
- children: /* @__PURE__ */ jsx51("path", { d: "M18 6 6 18M6 6l12 12" })
6698
+ children: /* @__PURE__ */ jsx54("path", { d: "M18 6 6 18M6 6l12 12" })
6407
6699
  }
6408
6700
  )
6409
6701
  }
@@ -6417,17 +6709,17 @@ function Toaster({
6417
6709
  className,
6418
6710
  ...props
6419
6711
  }) {
6420
- const [toasts, setToasts] = React60.useState([]);
6421
- const [heights, setHeights] = React60.useState(/* @__PURE__ */ new Map());
6422
- const [paused, setPaused] = React60.useState(false);
6423
- React60.useEffect(() => store.subscribe(setToasts), []);
6712
+ const [toasts, setToasts] = React63.useState([]);
6713
+ const [heights, setHeights] = React63.useState(/* @__PURE__ */ new Map());
6714
+ const [paused, setPaused] = React63.useState(false);
6715
+ React63.useEffect(() => store.subscribe(setToasts), []);
6424
6716
  const onEnter = () => setPaused(true);
6425
6717
  const onLeave = (e) => {
6426
6718
  if (!e.currentTarget.contains(e.relatedTarget)) {
6427
6719
  setPaused(false);
6428
6720
  }
6429
6721
  };
6430
- const reportHeight = React60.useCallback((id, h) => {
6722
+ const reportHeight = React63.useCallback((id, h) => {
6431
6723
  setHeights((prev) => {
6432
6724
  if (prev.get(id) === h) return prev;
6433
6725
  const next = new Map(prev);
@@ -6435,7 +6727,7 @@ function Toaster({
6435
6727
  return next;
6436
6728
  });
6437
6729
  }, []);
6438
- const removeHeight = React60.useCallback((id) => {
6730
+ const removeHeight = React63.useCallback((id) => {
6439
6731
  setHeights((prev) => {
6440
6732
  if (!prev.has(id)) return prev;
6441
6733
  const next = new Map(prev);
@@ -6453,7 +6745,7 @@ function Toaster({
6453
6745
  sum += heights.get(t.id) ?? 0;
6454
6746
  return o;
6455
6747
  });
6456
- return /* @__PURE__ */ jsx51(
6748
+ return /* @__PURE__ */ jsx54(
6457
6749
  "ol",
6458
6750
  {
6459
6751
  "data-slot": "toaster",
@@ -6474,7 +6766,7 @@ function Toaster({
6474
6766
  onPointerOut: onLeave,
6475
6767
  onFocus: onEnter,
6476
6768
  onBlur: onLeave,
6477
- children: ordered.map((t, i) => /* @__PURE__ */ jsx51(
6769
+ children: ordered.map((t, i) => /* @__PURE__ */ jsx54(
6478
6770
  ToastItem,
6479
6771
  {
6480
6772
  toast: t,
@@ -6492,7 +6784,7 @@ function Toaster({
6492
6784
  }
6493
6785
 
6494
6786
  // src/components/form.tsx
6495
- import * as React61 from "react";
6787
+ import * as React64 from "react";
6496
6788
 
6497
6789
  // src/generated/form.ts
6498
6790
  var FORM_ITEM = "grid gap-2";
@@ -6500,21 +6792,21 @@ var FORM_DESCRIPTION = "text-muted-foreground text-sm";
6500
6792
  var FORM_MESSAGE = "text-destructive text-sm";
6501
6793
 
6502
6794
  // src/components/form.tsx
6503
- import { jsx as jsx52 } from "react/jsx-runtime";
6504
- var FormItemContext = React61.createContext(null);
6795
+ import { jsx as jsx55 } from "react/jsx-runtime";
6796
+ var FormItemContext = React64.createContext(null);
6505
6797
  function useFormItem() {
6506
- const ctx = React61.useContext(FormItemContext);
6798
+ const ctx = React64.useContext(FormItemContext);
6507
6799
  if (!ctx) {
6508
6800
  throw new Error("Form parts must be used within <FormItem>");
6509
6801
  }
6510
6802
  return ctx;
6511
6803
  }
6512
6804
  function Form({ ...props }) {
6513
- return /* @__PURE__ */ jsx52("form", { "data-slot": "form", ...props });
6805
+ return /* @__PURE__ */ jsx55("form", { "data-slot": "form", ...props });
6514
6806
  }
6515
6807
  function FormItem({ className, ...props }) {
6516
- const id = React61.useId();
6517
- const value = React61.useMemo(
6808
+ const id = React64.useId();
6809
+ const value = React64.useMemo(
6518
6810
  () => ({
6519
6811
  id,
6520
6812
  formItemId: `${id}-form-item`,
@@ -6523,7 +6815,7 @@ function FormItem({ className, ...props }) {
6523
6815
  }),
6524
6816
  [id]
6525
6817
  );
6526
- return /* @__PURE__ */ jsx52(FormItemContext.Provider, { value, children: /* @__PURE__ */ jsx52("div", { "data-slot": "form-item", className: cn(FORM_ITEM, className), ...props }) });
6818
+ return /* @__PURE__ */ jsx55(FormItemContext.Provider, { value, children: /* @__PURE__ */ jsx55("div", { "data-slot": "form-item", className: cn(FORM_ITEM, className), ...props }) });
6527
6819
  }
6528
6820
  function FormLabel({
6529
6821
  className,
@@ -6531,7 +6823,7 @@ function FormLabel({
6531
6823
  ...props
6532
6824
  }) {
6533
6825
  const { formItemId } = useFormItem();
6534
- return /* @__PURE__ */ jsx52(
6826
+ return /* @__PURE__ */ jsx55(
6535
6827
  Label,
6536
6828
  {
6537
6829
  "data-slot": "form-label",
@@ -6547,7 +6839,7 @@ function FormControl({
6547
6839
  ...props
6548
6840
  }) {
6549
6841
  const { formItemId, formDescriptionId, formMessageId } = useFormItem();
6550
- return /* @__PURE__ */ jsx52(
6842
+ return /* @__PURE__ */ jsx55(
6551
6843
  Slot,
6552
6844
  {
6553
6845
  "data-slot": "form-control",
@@ -6560,7 +6852,7 @@ function FormControl({
6560
6852
  }
6561
6853
  function FormDescription({ className, ...props }) {
6562
6854
  const { formDescriptionId } = useFormItem();
6563
- return /* @__PURE__ */ jsx52(
6855
+ return /* @__PURE__ */ jsx55(
6564
6856
  "p",
6565
6857
  {
6566
6858
  "data-slot": "form-description",
@@ -6575,7 +6867,7 @@ function FormMessage({ className, children, ...props }) {
6575
6867
  if (!children) {
6576
6868
  return null;
6577
6869
  }
6578
- return /* @__PURE__ */ jsx52(
6870
+ return /* @__PURE__ */ jsx55(
6579
6871
  "p",
6580
6872
  {
6581
6873
  "data-slot": "form-message",
@@ -6588,7 +6880,7 @@ function FormMessage({ className, children, ...props }) {
6588
6880
  }
6589
6881
 
6590
6882
  // src/components/resizable.tsx
6591
- import * as React62 from "react";
6883
+ import * as React65 from "react";
6592
6884
 
6593
6885
  // src/generated/resizable.ts
6594
6886
  var RESIZABLE_GROUP = "flex h-full w-full data-[panel-group-direction=vertical]:flex-col";
@@ -6597,10 +6889,10 @@ var RESIZABLE_HANDLE = "bg-border focus-visible:ring-ring relative flex w-px ite
6597
6889
  var RESIZABLE_HANDLE_GRIP = "bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border";
6598
6890
 
6599
6891
  // src/components/resizable.tsx
6600
- import { jsx as jsx53, jsxs as jsxs23 } from "react/jsx-runtime";
6601
- var ResizableContext = React62.createContext(null);
6892
+ import { jsx as jsx56, jsxs as jsxs25 } from "react/jsx-runtime";
6893
+ var ResizableContext = React65.createContext(null);
6602
6894
  function useResizable() {
6603
- const ctx = React62.useContext(ResizableContext);
6895
+ const ctx = React65.useContext(ResizableContext);
6604
6896
  if (!ctx)
6605
6897
  throw new Error("Resizable parts must be used within a ResizablePanelGroup");
6606
6898
  return ctx;
@@ -6623,9 +6915,9 @@ function ResizablePanelGroup({
6623
6915
  children,
6624
6916
  ...props
6625
6917
  }) {
6626
- const [sizes, setSizes] = React62.useState([]);
6627
- const groupRef = React62.useRef(null);
6628
- const register = React62.useCallback((index, defaultSize) => {
6918
+ const [sizes, setSizes] = React65.useState([]);
6919
+ const groupRef = React65.useRef(null);
6920
+ const register = React65.useCallback((index, defaultSize) => {
6629
6921
  setSizes((prev) => {
6630
6922
  if (prev[index] !== void 0) return prev;
6631
6923
  const next = prev.slice();
@@ -6634,14 +6926,14 @@ function ResizablePanelGroup({
6634
6926
  return next;
6635
6927
  });
6636
6928
  }, []);
6637
- React62.useEffect(() => {
6929
+ React65.useEffect(() => {
6638
6930
  if (sizes.length) onLayout?.(sizes);
6639
6931
  }, [sizes, onLayout]);
6640
- const value = React62.useMemo(
6932
+ const value = React65.useMemo(
6641
6933
  () => ({ sizes, setSizes, register, direction, keyboardStep, groupRef }),
6642
6934
  [sizes, register, direction, keyboardStep]
6643
6935
  );
6644
- return /* @__PURE__ */ jsx53(ResizableContext.Provider, { value, children: /* @__PURE__ */ jsx53(
6936
+ return /* @__PURE__ */ jsx56(ResizableContext.Provider, { value, children: /* @__PURE__ */ jsx56(
6645
6937
  "div",
6646
6938
  {
6647
6939
  ref: groupRef,
@@ -6662,11 +6954,11 @@ function ResizablePanel({
6662
6954
  ...props
6663
6955
  }) {
6664
6956
  const { sizes, register } = useResizable();
6665
- React62.useEffect(() => {
6957
+ React65.useEffect(() => {
6666
6958
  register(index, defaultSize);
6667
6959
  }, [register, index, defaultSize]);
6668
6960
  const basis = sizes[index] ?? defaultSize;
6669
- return /* @__PURE__ */ jsx53(
6961
+ return /* @__PURE__ */ jsx56(
6670
6962
  "div",
6671
6963
  {
6672
6964
  "data-slot": "resizable-panel",
@@ -6685,12 +6977,12 @@ function ResizableHandle({
6685
6977
  ...props
6686
6978
  }) {
6687
6979
  const { setSizes, direction, keyboardStep, groupRef } = useResizable();
6688
- const draggingRef = React62.useRef(false);
6689
- const resize = React62.useCallback(
6980
+ const draggingRef = React65.useRef(false);
6981
+ const resize = React65.useCallback(
6690
6982
  (delta) => setSizes((prev) => redistribute(prev, index, delta)),
6691
6983
  [setSizes, index]
6692
6984
  );
6693
- const onPointerMove = React62.useCallback(
6985
+ const onPointerMove = React65.useCallback(
6694
6986
  (event) => {
6695
6987
  if (!draggingRef.current) return;
6696
6988
  const rect = groupRef.current?.getBoundingClientRect();
@@ -6702,7 +6994,7 @@ function ResizableHandle({
6702
6994
  },
6703
6995
  [direction, resize, groupRef]
6704
6996
  );
6705
- const onPointerUp = React62.useCallback(() => {
6997
+ const onPointerUp = React65.useCallback(() => {
6706
6998
  draggingRef.current = false;
6707
6999
  window.removeEventListener("pointermove", onPointerMove);
6708
7000
  window.removeEventListener("pointerup", onPointerUp);
@@ -6713,7 +7005,7 @@ function ResizableHandle({
6713
7005
  window.addEventListener("pointermove", onPointerMove);
6714
7006
  window.addEventListener("pointerup", onPointerUp);
6715
7007
  };
6716
- React62.useEffect(() => () => onPointerUp(), [onPointerUp]);
7008
+ React65.useEffect(() => () => onPointerUp(), [onPointerUp]);
6717
7009
  const onKeyDown = (event) => {
6718
7010
  let delta;
6719
7011
  switch (event.key) {
@@ -6733,7 +7025,7 @@ function ResizableHandle({
6733
7025
  event.preventDefault();
6734
7026
  resize(delta);
6735
7027
  };
6736
- return /* @__PURE__ */ jsxs23(
7028
+ return /* @__PURE__ */ jsxs25(
6737
7029
  "div",
6738
7030
  {
6739
7031
  "data-slot": "resizable-handle",
@@ -6746,7 +7038,7 @@ function ResizableHandle({
6746
7038
  onKeyDown,
6747
7039
  ...props,
6748
7040
  children: [
6749
- withHandle && /* @__PURE__ */ jsx53("div", { className: RESIZABLE_HANDLE_GRIP, children: /* @__PURE__ */ jsxs23(
7041
+ withHandle && /* @__PURE__ */ jsx56("div", { className: RESIZABLE_HANDLE_GRIP, children: /* @__PURE__ */ jsxs25(
6750
7042
  "svg",
6751
7043
  {
6752
7044
  className: "size-2.5",
@@ -6761,12 +7053,12 @@ function ResizableHandle({
6761
7053
  strokeLinejoin: "round",
6762
7054
  "aria-hidden": "true",
6763
7055
  children: [
6764
- /* @__PURE__ */ jsx53("circle", { cx: "9", cy: "12", r: "1" }),
6765
- /* @__PURE__ */ jsx53("circle", { cx: "9", cy: "5", r: "1" }),
6766
- /* @__PURE__ */ jsx53("circle", { cx: "9", cy: "19", r: "1" }),
6767
- /* @__PURE__ */ jsx53("circle", { cx: "15", cy: "12", r: "1" }),
6768
- /* @__PURE__ */ jsx53("circle", { cx: "15", cy: "5", r: "1" }),
6769
- /* @__PURE__ */ jsx53("circle", { cx: "15", cy: "19", r: "1" })
7056
+ /* @__PURE__ */ jsx56("circle", { cx: "9", cy: "12", r: "1" }),
7057
+ /* @__PURE__ */ jsx56("circle", { cx: "9", cy: "5", r: "1" }),
7058
+ /* @__PURE__ */ jsx56("circle", { cx: "9", cy: "19", r: "1" }),
7059
+ /* @__PURE__ */ jsx56("circle", { cx: "15", cy: "12", r: "1" }),
7060
+ /* @__PURE__ */ jsx56("circle", { cx: "15", cy: "5", r: "1" }),
7061
+ /* @__PURE__ */ jsx56("circle", { cx: "15", cy: "19", r: "1" })
6770
7062
  ]
6771
7063
  }
6772
7064
  ) }),
@@ -6907,12 +7199,14 @@ export {
6907
7199
  FieldSeparator,
6908
7200
  FieldSet,
6909
7201
  FieldTitle,
7202
+ Footer,
6910
7203
  Form,
6911
7204
  FormControl,
6912
7205
  FormDescription,
6913
7206
  FormItem,
6914
7207
  FormLabel,
6915
7208
  FormMessage,
7209
+ Header,
6916
7210
  HoverCard,
6917
7211
  HoverCardContent,
6918
7212
  HoverCardTrigger,
@@ -6940,6 +7234,7 @@ export {
6940
7234
  Kbd,
6941
7235
  KbdGroup,
6942
7236
  Label,
7237
+ Logo,
6943
7238
  Menubar,
6944
7239
  MenubarCheckboxItem,
6945
7240
  MenubarContent,