@pactor-app/ui 1.46.0 → 1.47.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.
@@ -975,14 +975,174 @@ var import_react6 = require("react");
975
975
  // src/components/components/Menu/index.tsx
976
976
  var import_react5 = require("react");
977
977
 
978
+ // src/ui/dropdown-menu.tsx
979
+ var import_menu = require("@base-ui/react/menu");
980
+ var import_lucide_react3 = require("lucide-react");
981
+ var import_jsx_runtime6 = require("react/jsx-runtime");
982
+ function DropdownMenu({
983
+ ...props
984
+ }) {
985
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_menu.Menu.Root, { "data-slot": "dropdown-menu", ...props });
986
+ }
987
+ function DropdownMenuTrigger({
988
+ ...props
989
+ }) {
990
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_menu.Menu.Trigger, { "data-slot": "dropdown-menu-trigger", ...props });
991
+ }
992
+ function DropdownMenuContent({
993
+ className,
994
+ align = "start",
995
+ side = "bottom",
996
+ sideOffset = 4,
997
+ ...props
998
+ }) {
999
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_menu.Menu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1000
+ import_menu.Menu.Positioner,
1001
+ {
1002
+ align,
1003
+ side,
1004
+ sideOffset,
1005
+ className: "isolate z-50",
1006
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1007
+ import_menu.Menu.Popup,
1008
+ {
1009
+ "data-slot": "dropdown-menu-content",
1010
+ className: cn(
1011
+ "z-50 max-h-(--available-height) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md shadow-(color:--shadow-color) duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fill-mode-forwards data-closed:fade-out-0 data-closed:zoom-out-95",
1012
+ className
1013
+ ),
1014
+ ...props
1015
+ }
1016
+ )
1017
+ }
1018
+ ) });
1019
+ }
1020
+ function DropdownMenuItem({
1021
+ className,
1022
+ variant = "default",
1023
+ ...props
1024
+ }) {
1025
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1026
+ import_menu.Menu.Item,
1027
+ {
1028
+ "data-slot": "dropdown-menu-item",
1029
+ "data-variant": variant,
1030
+ className: cn(
1031
+ "relative flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-(--menu-hover-background) focus:text-(--menu-hover-foreground) data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
1032
+ className
1033
+ ),
1034
+ ...props
1035
+ }
1036
+ );
1037
+ }
1038
+ function DropdownMenuSeparator({
1039
+ className,
1040
+ ...props
1041
+ }) {
1042
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1043
+ import_menu.Menu.Separator,
1044
+ {
1045
+ "data-slot": "dropdown-menu-separator",
1046
+ className: cn("-mx-1 my-1 h-px bg-border", className),
1047
+ ...props
1048
+ }
1049
+ );
1050
+ }
1051
+ function DropdownMenuSub({
1052
+ ...props
1053
+ }) {
1054
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_menu.Menu.SubmenuRoot, { "data-slot": "dropdown-menu-sub", ...props });
1055
+ }
1056
+ function DropdownMenuSubTrigger({
1057
+ className,
1058
+ children,
1059
+ ...props
1060
+ }) {
1061
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
1062
+ import_menu.Menu.SubmenuTrigger,
1063
+ {
1064
+ "data-slot": "dropdown-menu-sub-trigger",
1065
+ className: cn(
1066
+ "flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-(--menu-hover-background) focus:text-(--menu-hover-foreground) data-open:bg-(--menu-active-background) data-open:text-(--menu-active-foreground) [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
1067
+ className
1068
+ ),
1069
+ ...props,
1070
+ children: [
1071
+ children,
1072
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react3.ChevronRightIcon, { className: "ml-auto" })
1073
+ ]
1074
+ }
1075
+ );
1076
+ }
1077
+ function DropdownMenuSubContent({
1078
+ className,
1079
+ sideOffset = 2,
1080
+ ...props
1081
+ }) {
1082
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_menu.Menu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_menu.Menu.Positioner, { sideOffset, className: "isolate z-50", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1083
+ import_menu.Menu.Popup,
1084
+ {
1085
+ "data-slot": "dropdown-menu-sub-content",
1086
+ className: cn(
1087
+ "z-50 min-w-32 origin-(--transform-origin) overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md shadow-(color:--shadow-color) duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fill-mode-forwards data-closed:fade-out-0 data-closed:zoom-out-95",
1088
+ className
1089
+ ),
1090
+ ...props
1091
+ }
1092
+ ) }) });
1093
+ }
1094
+
1095
+ // src/components/components/trigger-render.tsx
1096
+ var import_jsx_runtime7 = require("react/jsx-runtime");
1097
+ function triggerWrapper(slot) {
1098
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { "data-slot": slot });
1099
+ }
1100
+
1101
+ // src/components/components/DropdownMenu/index.tsx
1102
+ var import_jsx_runtime8 = require("react/jsx-runtime");
1103
+ function renderDropdownItems(items, onSelect) {
1104
+ const checkable = items.some((i) => i.selected);
1105
+ return items.map((item, index) => {
1106
+ const key = item.value ?? `item-${index}`;
1107
+ if (item.separator) {
1108
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(DropdownMenuSeparator, {}, `separator-${index}`);
1109
+ }
1110
+ const leading = item.selected ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Icon, { name: "check", size: "sm" }) : item.icon ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Icon, { name: item.icon, size: "sm" }) : checkable ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "size-4 shrink-0" }) : null;
1111
+ if (item.children && item.children.length > 0) {
1112
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(DropdownMenuSub, { children: [
1113
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(DropdownMenuSubTrigger, { disabled: item.disabled, children: [
1114
+ leading,
1115
+ item.label,
1116
+ item.trailing ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "ml-auto pl-4 text-xs text-muted-foreground", children: item.trailing }) : null
1117
+ ] }),
1118
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(DropdownMenuSubContent, { children: renderDropdownItems(item.children, onSelect) })
1119
+ ] }, key);
1120
+ }
1121
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
1122
+ DropdownMenuItem,
1123
+ {
1124
+ variant: item.danger ? "destructive" : "default",
1125
+ disabled: item.disabled,
1126
+ onClick: () => item.value !== void 0 && onSelect?.(item.value),
1127
+ children: [
1128
+ leading,
1129
+ item.label,
1130
+ item.trailing ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "ml-auto pl-4 text-xs text-muted-foreground", children: item.trailing }) : null
1131
+ ]
1132
+ },
1133
+ key
1134
+ );
1135
+ });
1136
+ }
1137
+
978
1138
  // src/ui/tooltip.tsx
979
1139
  var import_tooltip = require("@base-ui/react/tooltip");
980
- var import_jsx_runtime6 = require("react/jsx-runtime");
1140
+ var import_jsx_runtime9 = require("react/jsx-runtime");
981
1141
  function TooltipProvider({
982
1142
  delay = 0,
983
1143
  ...props
984
1144
  }) {
985
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1145
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
986
1146
  import_tooltip.Tooltip.Provider,
987
1147
  {
988
1148
  "data-slot": "tooltip-provider",
@@ -994,12 +1154,12 @@ function TooltipProvider({
994
1154
  function Tooltip({
995
1155
  ...props
996
1156
  }) {
997
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_tooltip.Tooltip.Root, { "data-slot": "tooltip", ...props }) });
1157
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_tooltip.Tooltip.Root, { "data-slot": "tooltip", ...props }) });
998
1158
  }
999
1159
  function TooltipTrigger({
1000
1160
  ...props
1001
1161
  }) {
1002
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_tooltip.Tooltip.Trigger, { "data-slot": "tooltip-trigger", ...props });
1162
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_tooltip.Tooltip.Trigger, { "data-slot": "tooltip-trigger", ...props });
1003
1163
  }
1004
1164
  function TooltipContent({
1005
1165
  className,
@@ -1009,14 +1169,14 @@ function TooltipContent({
1009
1169
  children,
1010
1170
  ...props
1011
1171
  }) {
1012
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_tooltip.Tooltip.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1172
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_tooltip.Tooltip.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1013
1173
  import_tooltip.Tooltip.Positioner,
1014
1174
  {
1015
1175
  align,
1016
1176
  side,
1017
1177
  sideOffset,
1018
1178
  className: "isolate z-50",
1019
- children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
1179
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1020
1180
  import_tooltip.Tooltip.Popup,
1021
1181
  {
1022
1182
  "data-slot": "tooltip-content",
@@ -1027,7 +1187,7 @@ function TooltipContent({
1027
1187
  ...props,
1028
1188
  children: [
1029
1189
  children,
1030
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_tooltip.Tooltip.Arrow, { className: "z-50 size-2.5 rotate-45 rounded-[2px] bg-primary fill-primary data-[side=top]:-bottom-1 data-[side=bottom]:-top-1 data-[side=left]:-right-1 data-[side=right]:-left-1" })
1190
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_tooltip.Tooltip.Arrow, { className: "z-50 size-2.5 rotate-45 rounded-[2px] bg-primary fill-primary data-[side=top]:-bottom-1 data-[side=bottom]:-top-1 data-[side=left]:-right-1 data-[side=right]:-left-1" })
1031
1191
  ]
1032
1192
  }
1033
1193
  )
@@ -1036,14 +1196,14 @@ function TooltipContent({
1036
1196
  }
1037
1197
 
1038
1198
  // src/components/components/Sidebar/rail-tooltip.tsx
1039
- var import_jsx_runtime7 = require("react/jsx-runtime");
1199
+ var import_jsx_runtime10 = require("react/jsx-runtime");
1040
1200
  function RailTooltip({
1041
1201
  label,
1042
1202
  children
1043
1203
  }) {
1044
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Tooltip, { children: [
1045
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(TooltipTrigger, { render: children }),
1046
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(TooltipContent, { side: "right", sideOffset: 8, children: label })
1204
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Tooltip, { children: [
1205
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(TooltipTrigger, { render: children }),
1206
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(TooltipContent, { side: "right", sideOffset: 8, children: label })
1047
1207
  ] });
1048
1208
  }
1049
1209
 
@@ -1054,7 +1214,7 @@ var import_react4 = require("react");
1054
1214
  // src/ui/sidebar.tsx
1055
1215
  var React = __toESM(require("react"), 1);
1056
1216
  var import_class_variance_authority2 = require("class-variance-authority");
1057
- var import_lucide_react4 = require("lucide-react");
1217
+ var import_lucide_react5 = require("lucide-react");
1058
1218
 
1059
1219
  // src/hooks/use-mobile.ts
1060
1220
  var import_react3 = require("react");
@@ -1080,24 +1240,24 @@ function useIsMobile() {
1080
1240
 
1081
1241
  // src/ui/sheet.tsx
1082
1242
  var import_dialog = require("@base-ui/react/dialog");
1083
- var import_lucide_react3 = require("lucide-react");
1243
+ var import_lucide_react4 = require("lucide-react");
1084
1244
  var import_class_variance_authority = require("class-variance-authority");
1085
- var import_jsx_runtime8 = require("react/jsx-runtime");
1245
+ var import_jsx_runtime11 = require("react/jsx-runtime");
1086
1246
  function Sheet({
1087
1247
  ...props
1088
1248
  }) {
1089
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_dialog.Dialog.Root, { "data-slot": "sheet", ...props });
1249
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_dialog.Dialog.Root, { "data-slot": "sheet", ...props });
1090
1250
  }
1091
1251
  function SheetPortal({
1092
1252
  ...props
1093
1253
  }) {
1094
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_dialog.Dialog.Portal, { "data-slot": "sheet-portal", ...props });
1254
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_dialog.Dialog.Portal, { "data-slot": "sheet-portal", ...props });
1095
1255
  }
1096
1256
  function SheetOverlay({
1097
1257
  className,
1098
1258
  ...props
1099
1259
  }) {
1100
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1260
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1101
1261
  import_dialog.Dialog.Backdrop,
1102
1262
  {
1103
1263
  "data-slot": "sheet-overlay",
@@ -1131,9 +1291,9 @@ function SheetContent({
1131
1291
  side = "right",
1132
1292
  ...props
1133
1293
  }) {
1134
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(SheetPortal, { "data-slot": "sheet-portal", children: [
1135
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(SheetOverlay, {}),
1136
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
1294
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(SheetPortal, { "data-slot": "sheet-portal", children: [
1295
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(SheetOverlay, {}),
1296
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
1137
1297
  import_dialog.Dialog.Popup,
1138
1298
  {
1139
1299
  "data-slot": "sheet-content",
@@ -1141,11 +1301,11 @@ function SheetContent({
1141
1301
  ...props,
1142
1302
  children: [
1143
1303
  children,
1144
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
1304
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
1145
1305
  import_dialog.Dialog.Close,
1146
1306
  {
1147
1307
  "data-slot": "sheet-close",
1148
- render: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1308
+ render: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1149
1309
  "button",
1150
1310
  {
1151
1311
  type: "button",
@@ -1153,8 +1313,8 @@ function SheetContent({
1153
1313
  }
1154
1314
  ),
1155
1315
  children: [
1156
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_lucide_react3.XIcon, {}),
1157
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "sr-only", children: "Close" })
1316
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react4.XIcon, {}),
1317
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "sr-only", children: "Close" })
1158
1318
  ]
1159
1319
  }
1160
1320
  )
@@ -1164,7 +1324,7 @@ function SheetContent({
1164
1324
  ] });
1165
1325
  }
1166
1326
  function SheetHeader({ className, ...props }) {
1167
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1327
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1168
1328
  "div",
1169
1329
  {
1170
1330
  "data-slot": "sheet-header",
@@ -1177,7 +1337,7 @@ function SheetTitle({
1177
1337
  className,
1178
1338
  ...props
1179
1339
  }) {
1180
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1340
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1181
1341
  import_dialog.Dialog.Title,
1182
1342
  {
1183
1343
  "data-slot": "sheet-title",
@@ -1190,7 +1350,7 @@ function SheetDescription({
1190
1350
  className,
1191
1351
  ...props
1192
1352
  }) {
1193
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1353
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1194
1354
  import_dialog.Dialog.Description,
1195
1355
  {
1196
1356
  "data-slot": "sheet-description",
@@ -1201,7 +1361,7 @@ function SheetDescription({
1201
1361
  }
1202
1362
 
1203
1363
  // src/ui/sidebar.tsx
1204
- var import_jsx_runtime9 = require("react/jsx-runtime");
1364
+ var import_jsx_runtime12 = require("react/jsx-runtime");
1205
1365
  var SIDEBAR_COOKIE_NAME = "sidebar_state";
1206
1366
  var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
1207
1367
  var SIDEBAR_WIDTH_MOBILE = "18rem";
@@ -1265,7 +1425,7 @@ function SidebarProvider({
1265
1425
  }),
1266
1426
  [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
1267
1427
  );
1268
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TooltipProvider, { delay: 0, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1428
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(TooltipProvider, { delay: 0, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1269
1429
  "div",
1270
1430
  {
1271
1431
  "data-slot": "sidebar-wrapper",
@@ -1289,7 +1449,7 @@ function SidebarRoot({
1289
1449
  }) {
1290
1450
  const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
1291
1451
  if (collapsible === "none") {
1292
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1452
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1293
1453
  "div",
1294
1454
  {
1295
1455
  "data-slot": "sidebar",
@@ -1303,7 +1463,7 @@ function SidebarRoot({
1303
1463
  );
1304
1464
  }
1305
1465
  if (isMobile) {
1306
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1466
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
1307
1467
  SheetContent,
1308
1468
  {
1309
1469
  "data-sidebar": "sidebar",
@@ -1315,16 +1475,16 @@ function SidebarRoot({
1315
1475
  },
1316
1476
  side,
1317
1477
  children: [
1318
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(SheetHeader, { className: "sr-only", children: [
1319
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SheetTitle, { children: "Sidebar" }),
1320
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SheetDescription, { children: "Displays the mobile sidebar." })
1478
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(SheetHeader, { className: "sr-only", children: [
1479
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SheetTitle, { children: "Sidebar" }),
1480
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SheetDescription, { children: "Displays the mobile sidebar." })
1321
1481
  ] }),
1322
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "flex h-full w-full flex-col", children })
1482
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "flex h-full w-full flex-col", children })
1323
1483
  ]
1324
1484
  }
1325
1485
  ) });
1326
1486
  }
1327
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1487
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
1328
1488
  "div",
1329
1489
  {
1330
1490
  className: "group peer hidden text-sidebar-foreground md:block",
@@ -1334,7 +1494,7 @@ function SidebarRoot({
1334
1494
  "data-side": side,
1335
1495
  "data-slot": "sidebar",
1336
1496
  children: [
1337
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1497
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1338
1498
  "div",
1339
1499
  {
1340
1500
  "data-slot": "sidebar-gap",
@@ -1346,7 +1506,7 @@ function SidebarRoot({
1346
1506
  )
1347
1507
  }
1348
1508
  ),
1349
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1509
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1350
1510
  "div",
1351
1511
  {
1352
1512
  "data-slot": "sidebar-container",
@@ -1362,7 +1522,7 @@ function SidebarRoot({
1362
1522
  className
1363
1523
  ),
1364
1524
  ...props,
1365
- children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1525
+ children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1366
1526
  "div",
1367
1527
  {
1368
1528
  "data-sidebar": "sidebar",
@@ -1378,7 +1538,7 @@ function SidebarRoot({
1378
1538
  );
1379
1539
  }
1380
1540
  function SidebarInset({ className, ...props }) {
1381
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1541
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1382
1542
  "main",
1383
1543
  {
1384
1544
  "data-slot": "sidebar-inset",
@@ -1394,7 +1554,7 @@ function SidebarInset({ className, ...props }) {
1394
1554
  );
1395
1555
  }
1396
1556
  function SidebarHeader({ className, ...props }) {
1397
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1557
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1398
1558
  "div",
1399
1559
  {
1400
1560
  "data-slot": "sidebar-header",
@@ -1405,7 +1565,7 @@ function SidebarHeader({ className, ...props }) {
1405
1565
  );
1406
1566
  }
1407
1567
  function SidebarFooter({ className, ...props }) {
1408
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1568
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1409
1569
  "div",
1410
1570
  {
1411
1571
  "data-slot": "sidebar-footer",
@@ -1416,7 +1576,7 @@ function SidebarFooter({ className, ...props }) {
1416
1576
  );
1417
1577
  }
1418
1578
  function SidebarContent({ className, ...props }) {
1419
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1579
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1420
1580
  "div",
1421
1581
  {
1422
1582
  "data-slot": "sidebar-content",
@@ -1443,7 +1603,7 @@ function renderAsChild(children, dataSlot, className, rest) {
1443
1603
  });
1444
1604
  }
1445
1605
  function SidebarMenu({ className, ...props }) {
1446
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1606
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1447
1607
  "ul",
1448
1608
  {
1449
1609
  "data-slot": "sidebar-menu",
@@ -1454,7 +1614,7 @@ function SidebarMenu({ className, ...props }) {
1454
1614
  );
1455
1615
  }
1456
1616
  function SidebarMenuItem({ className, ...props }) {
1457
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1617
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1458
1618
  "li",
1459
1619
  {
1460
1620
  "data-slot": "sidebar-menu-item",
@@ -1501,7 +1661,7 @@ function SidebarMenuButton({
1501
1661
  "data-size": size,
1502
1662
  "data-active": isActive,
1503
1663
  ...props
1504
- }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1664
+ }) : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1505
1665
  "button",
1506
1666
  {
1507
1667
  "data-slot": "sidebar-menu-button",
@@ -1521,9 +1681,9 @@ function SidebarMenuButton({
1521
1681
  children: tooltip
1522
1682
  };
1523
1683
  }
1524
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Tooltip, { children: [
1525
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TooltipTrigger, { render: button }),
1526
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1684
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(Tooltip, { children: [
1685
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(TooltipTrigger, { render: button }),
1686
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1527
1687
  TooltipContent,
1528
1688
  {
1529
1689
  side: "right",
@@ -1536,7 +1696,7 @@ function SidebarMenuButton({
1536
1696
  }
1537
1697
 
1538
1698
  // src/components/components/Sidebar/index.tsx
1539
- var import_jsx_runtime10 = require("react/jsx-runtime");
1699
+ var import_jsx_runtime13 = require("react/jsx-runtime");
1540
1700
  function useSidebarDrawer() {
1541
1701
  try {
1542
1702
  const ctx = useSidebar();
@@ -1558,9 +1718,9 @@ function useOptionalRenderer() {
1558
1718
  function SidebarContentSlot({ content }) {
1559
1719
  const renderer = useOptionalRenderer();
1560
1720
  if (renderer !== null && typeof content === "object" && content !== null && !("$$typeof" in content) && "type" in content) {
1561
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_jsx_runtime10.Fragment, { children: renderer.renderChildren([content]) });
1721
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_jsx_runtime13.Fragment, { children: renderer.renderChildren([content]) });
1562
1722
  }
1563
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_jsx_runtime10.Fragment, { children: content });
1723
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_jsx_runtime13.Fragment, { children: content });
1564
1724
  }
1565
1725
  function isBrandObject(brand) {
1566
1726
  return typeof brand === "object" && brand !== null && !("$$typeof" in brand) && "title" in brand;
@@ -1570,8 +1730,8 @@ function BrandNode({ brand, collapsed }) {
1570
1730
  return null;
1571
1731
  }
1572
1732
  if (isBrandObject(brand)) {
1573
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
1574
- brand.logo ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1733
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
1734
+ brand.logo ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1575
1735
  "img",
1576
1736
  {
1577
1737
  "data-slot": "sidebar-brand-logo",
@@ -1580,27 +1740,27 @@ function BrandNode({ brand, collapsed }) {
1580
1740
  className: "size-6 shrink-0"
1581
1741
  }
1582
1742
  ) : null,
1583
- collapsed ? null : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "truncate text-sm font-semibold", children: brand.title })
1743
+ collapsed ? null : /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "truncate text-sm font-semibold", children: brand.title })
1584
1744
  ] });
1585
1745
  }
1586
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_jsx_runtime10.Fragment, { children: brand });
1746
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_jsx_runtime13.Fragment, { children: brand });
1587
1747
  }
1588
1748
  function SidebarNavItems({ items }) {
1589
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SidebarMenu, { children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SidebarNavEntry, { item, depth: 0 }, item.href ?? item.label ?? index)) });
1749
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SidebarMenu, { children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SidebarNavEntry, { item, depth: 0 }, item.href ?? item.label ?? index)) });
1590
1750
  }
1591
1751
  function SidebarNavEntry({ item, depth }) {
1592
- const iconNode = item.icon ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Icon, { name: item.icon, size: "sm" }) : null;
1752
+ const iconNode = item.icon ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: item.icon, size: "sm" }) : null;
1593
1753
  const labelNode = item.label;
1594
- const button = item.href ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SidebarMenuButton, { asChild: true, tooltip: item.label, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("a", { href: item.href, children: [
1754
+ const button = item.href ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SidebarMenuButton, { asChild: true, tooltip: item.label, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("a", { href: item.href, children: [
1595
1755
  iconNode,
1596
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { children: labelNode })
1597
- ] }) }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(SidebarMenuButton, { tooltip: item.label, children: [
1756
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { children: labelNode })
1757
+ ] }) }) : /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(SidebarMenuButton, { tooltip: item.label, children: [
1598
1758
  iconNode,
1599
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { children: labelNode })
1759
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { children: labelNode })
1600
1760
  ] });
1601
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(SidebarMenuItem, { children: [
1761
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(SidebarMenuItem, { children: [
1602
1762
  button,
1603
- item.children && item.children.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: cn("ml-4"), children: item.children.map((child, index) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1763
+ item.children && item.children.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: cn("ml-4"), children: item.children.map((child, index) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1604
1764
  SidebarNavEntry,
1605
1765
  {
1606
1766
  item: child,
@@ -1624,13 +1784,13 @@ function Sidebar({
1624
1784
  style,
1625
1785
  children
1626
1786
  }) {
1627
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1787
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1628
1788
  SidebarProvider,
1629
1789
  {
1630
1790
  defaultOpen: !defaultCollapsed,
1631
1791
  className,
1632
1792
  style,
1633
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1793
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1634
1794
  SidebarInner,
1635
1795
  {
1636
1796
  brand,
@@ -1675,20 +1835,20 @@ function SidebarInner({
1675
1835
  }
1676
1836
  }, [locationKey, setOpenMobile]);
1677
1837
  const collapsedEffective = collapsible === true && collapsed && !isMobile;
1678
- const brandNode = /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(BrandNode, { brand, collapsed: collapsedEffective });
1838
+ const brandNode = /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(BrandNode, { brand, collapsed: collapsedEffective });
1679
1839
  const collapsedBrandLogo = collapsedEffective && isBrandObject(brand) && brand.logo ? brand.logo : null;
1680
- const sidebarContent = content !== void 0 && content !== null ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SidebarContentSlot, { content }) : items.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SidebarNavItems, { items }) : null;
1681
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
1682
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
1840
+ const sidebarContent = content !== void 0 && content !== null ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SidebarContentSlot, { content }) : items.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SidebarNavItems, { items }) : null;
1841
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
1842
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
1683
1843
  SidebarRoot,
1684
1844
  {
1685
1845
  collapsible: collapsible ? "icon" : "offcanvas",
1686
1846
  children: [
1687
- (brand !== void 0 || collapsible) && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1847
+ (brand !== void 0 || collapsible) && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1688
1848
  SidebarHeader,
1689
1849
  {
1690
1850
  className: brand === void 0 ? "h-9" : void 0,
1691
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
1851
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
1692
1852
  "div",
1693
1853
  {
1694
1854
  "data-slot": "sidebar-brand",
@@ -1699,7 +1859,7 @@ function SidebarInner({
1699
1859
  collapsedBrandLogo && "h-auto flex-col gap-1 py-1.5"
1700
1860
  ),
1701
1861
  children: [
1702
- collapsedEffective ? collapsedBrandLogo && isBrandObject(brand) ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1862
+ collapsedEffective ? collapsedBrandLogo && isBrandObject(brand) ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1703
1863
  "img",
1704
1864
  {
1705
1865
  "data-slot": "sidebar-brand-logo",
@@ -1707,8 +1867,8 @@ function SidebarInner({
1707
1867
  alt: brand.title,
1708
1868
  className: "size-6 shrink-0"
1709
1869
  }
1710
- ) : null : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: brandNode }),
1711
- collapsible && !isMobile && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1870
+ ) : null : /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: brandNode }),
1871
+ collapsible && !isMobile && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1712
1872
  "button",
1713
1873
  {
1714
1874
  type: "button",
@@ -1717,7 +1877,7 @@ function SidebarInner({
1717
1877
  "aria-expanded": !collapsedEffective,
1718
1878
  className: "flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md text-sidebar-foreground/60 transition-colors hover:bg-sidebar-accent hover:text-sidebar-foreground",
1719
1879
  onClick: toggleSidebar,
1720
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Icon, { name: collapsedEffective ? "chevron-right" : "chevron-left", size: 16 })
1880
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: collapsedEffective ? "chevron-right" : "chevron-left", size: 16 })
1721
1881
  }
1722
1882
  )
1723
1883
  ]
@@ -1725,27 +1885,27 @@ function SidebarInner({
1725
1885
  )
1726
1886
  }
1727
1887
  ),
1728
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SidebarContent, { children: sidebarContent }),
1729
- sidebarFooter !== void 0 && sidebarFooter !== null && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1888
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SidebarContent, { children: sidebarContent }),
1889
+ sidebarFooter !== void 0 && sidebarFooter !== null && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1730
1890
  SidebarFooter,
1731
1891
  {
1732
1892
  className: cn(
1733
1893
  collapsedEffective && "items-center px-0 [&_[data-slot=flex]]:justify-center [&_[data-slot=icon]]:hidden [&_[data-slot=text]]:hidden"
1734
1894
  ),
1735
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SidebarContentSlot, { content: sidebarFooter })
1895
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SidebarContentSlot, { content: sidebarFooter })
1736
1896
  }
1737
1897
  )
1738
1898
  ]
1739
1899
  }
1740
1900
  ),
1741
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(SidebarInset, { children: [
1742
- drawer && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
1901
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(SidebarInset, { children: [
1902
+ drawer && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
1743
1903
  "div",
1744
1904
  {
1745
1905
  "data-slot": "sidebar-topbar",
1746
1906
  className: "flex h-14 items-center gap-2 border-b border-sidebar-border bg-sidebar px-3 md:hidden",
1747
1907
  children: [
1748
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1908
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1749
1909
  "button",
1750
1910
  {
1751
1911
  type: "button",
@@ -1753,7 +1913,7 @@ function SidebarInner({
1753
1913
  "aria-label": t("pactor.layout.openNavigation"),
1754
1914
  className: "flex size-8 items-center justify-center rounded-md text-sidebar-foreground/60 transition-colors hover:bg-sidebar-accent hover:text-sidebar-foreground",
1755
1915
  onClick: toggleSidebar,
1756
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Icon, { name: "menu", size: 18 })
1916
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: "menu", size: 18 })
1757
1917
  }
1758
1918
  ),
1759
1919
  brandNode
@@ -1765,8 +1925,17 @@ function SidebarInner({
1765
1925
  ] });
1766
1926
  }
1767
1927
 
1928
+ // src/components/components/Tooltip/index.tsx
1929
+ var import_jsx_runtime14 = require("react/jsx-runtime");
1930
+ function Tooltip2({ content, side, children, className, style }) {
1931
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(Tooltip, { children: [
1932
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(TooltipTrigger, { render: triggerWrapper("tooltip-trigger-wrap"), children }),
1933
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(TooltipContent, { side, className, style, children: content })
1934
+ ] });
1935
+ }
1936
+
1768
1937
  // src/components/components/Menu/index.tsx
1769
- var import_jsx_runtime11 = require("react/jsx-runtime");
1938
+ var import_jsx_runtime15 = require("react/jsx-runtime");
1770
1939
  function collectAncestors(items, target, into, trail = []) {
1771
1940
  for (const item of items) {
1772
1941
  if (item.key === target) {
@@ -1786,22 +1955,32 @@ function Menu2({
1786
1955
  collapsible = false,
1787
1956
  collapsed: collapsedProp,
1788
1957
  defaultExpandedKeys,
1958
+ defaultExpandAll = false,
1959
+ chevronPlacement = "right",
1789
1960
  onSelect,
1961
+ onItemAction,
1790
1962
  className,
1791
1963
  style
1792
1964
  }) {
1793
1965
  const drawer = useSidebarDrawer();
1794
1966
  const collapsed = collapsedProp ?? (mode === "inline" && drawer?.collapsed === true);
1795
1967
  const collapsibleOn = collapsible && mode === "inline" && !collapsed;
1796
- const [expandedKeys, setExpandedKeys] = (0, import_react5.useState)(() => {
1968
+ const [baseExpandedKeys] = (0, import_react5.useState)(() => {
1797
1969
  const initial = new Set(defaultExpandedKeys ?? []);
1798
1970
  if (selectedKey !== void 0) {
1799
1971
  collectAncestors(items, selectedKey, initial);
1800
1972
  }
1801
1973
  return initial;
1802
1974
  });
1975
+ const [toggledKeys, setToggledKeys] = (0, import_react5.useState)(
1976
+ () => /* @__PURE__ */ new Set()
1977
+ );
1978
+ const isExpanded = (key) => {
1979
+ const base = defaultExpandAll || baseExpandedKeys.has(key);
1980
+ return toggledKeys.has(key) ? !base : base;
1981
+ };
1803
1982
  const toggleExpanded = (key) => {
1804
- setExpandedKeys((prev) => {
1983
+ setToggledKeys((prev) => {
1805
1984
  const next = new Set(prev);
1806
1985
  if (next.has(key)) {
1807
1986
  next.delete(key);
@@ -1812,7 +1991,7 @@ function Menu2({
1812
1991
  });
1813
1992
  };
1814
1993
  let previousGroup;
1815
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1994
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1816
1995
  "nav",
1817
1996
  {
1818
1997
  "data-slot": "menu",
@@ -1829,8 +2008,8 @@ function Menu2({
1829
2008
  groupLabel = item.group;
1830
2009
  }
1831
2010
  previousGroup = item.group;
1832
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { "data-slot": "menu-group-entry", children: [
1833
- groupLabel !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2011
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { "data-slot": "menu-group-entry", children: [
2012
+ groupLabel !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1834
2013
  "div",
1835
2014
  {
1836
2015
  "data-slot": "menu-group",
@@ -1838,7 +2017,7 @@ function Menu2({
1838
2017
  children: groupLabel
1839
2018
  }
1840
2019
  ),
1841
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2020
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1842
2021
  MenuEntry,
1843
2022
  {
1844
2023
  item,
@@ -1846,9 +2025,11 @@ function Menu2({
1846
2025
  depth: 0,
1847
2026
  selectedKey,
1848
2027
  onSelect,
2028
+ onItemAction,
1849
2029
  collapsed,
1850
2030
  collapsible: collapsibleOn,
1851
- expandedKeys,
2031
+ chevronPlacement,
2032
+ isExpanded,
1852
2033
  onToggle: toggleExpanded
1853
2034
  }
1854
2035
  )
@@ -1863,16 +2044,20 @@ function MenuEntry({
1863
2044
  depth,
1864
2045
  selectedKey,
1865
2046
  onSelect,
2047
+ onItemAction,
1866
2048
  collapsed = false,
1867
2049
  collapsible = false,
1868
- expandedKeys,
2050
+ chevronPlacement = "right",
2051
+ isExpanded,
1869
2052
  onToggle
1870
2053
  }) {
1871
- const selected = item.key === selectedKey;
1872
2054
  const hasChildren = (item.children?.length ?? 0) > 0;
1873
- const isDirectory = collapsible && hasChildren;
1874
- const expanded = isDirectory && expandedKeys?.has(item.key) === true;
2055
+ const isDirectory = item.children !== void 0 && mode === "inline" && !collapsed;
2056
+ const canToggle = collapsible && isDirectory && hasChildren;
2057
+ const expanded = canToggle && isExpanded?.(item.key) === true;
2058
+ const selected = !isDirectory && item.key === selectedKey;
1875
2059
  const railDirectory = collapsed && hasChildren;
2060
+ const hasRowExtras = !collapsed && (item.trailing !== void 0 || (item.actions?.length ?? 0) > 0);
1876
2061
  const [flyoutOpen, setFlyoutOpen] = (0, import_react5.useState)(false);
1877
2062
  const flyoutTimer = (0, import_react5.useRef)(void 0);
1878
2063
  const flyoutOpenNow = () => {
@@ -1884,20 +2069,37 @@ function MenuEntry({
1884
2069
  flyoutTimer.current = window.setTimeout(() => setFlyoutOpen(false), 200);
1885
2070
  };
1886
2071
  (0, import_react5.useEffect)(() => () => window.clearTimeout(flyoutTimer.current), []);
1887
- const button = /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
2072
+ const chevron = canToggle ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2073
+ "span",
2074
+ {
2075
+ "data-slot": "menu-item-chevron",
2076
+ className: cn(
2077
+ "shrink-0 transition-transform",
2078
+ expanded && "rotate-180"
2079
+ ),
2080
+ children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Icon, { name: "chevron-down", size: "sm" })
2081
+ }
2082
+ ) : null;
2083
+ const button = /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
1888
2084
  "button",
1889
2085
  {
1890
2086
  type: "button",
1891
2087
  "data-slot": "menu-item",
1892
2088
  "aria-current": selected ? "page" : void 0,
1893
- "aria-expanded": isDirectory ? expanded : railDirectory ? flyoutOpen : void 0,
2089
+ "aria-expanded": canToggle ? expanded : railDirectory ? flyoutOpen : void 0,
1894
2090
  disabled: item.disabled,
1895
2091
  className: cn(
1896
- "flex w-full items-center gap-2 rounded-md text-sm transition-colors",
2092
+ // w-full 兜底非 flex 父容器(rail / flyout);flex-1 min-w-0 供
2093
+ // 行容器(trailing / actions 与按钮同级)内收缩
2094
+ "flex w-full min-w-0 flex-1 items-center gap-2 text-sm transition-colors",
1897
2095
  mode === "horizontal" ? "px-3 py-2" : "px-3 py-2 text-left",
1898
2096
  collapsed && "justify-center px-0",
1899
- selected ? "bg-(--menu-active-background) font-medium text-(--menu-active-foreground)" : "cursor-pointer text-foreground hover:bg-(--menu-hover-background)/50",
1900
- item.disabled && "cursor-not-allowed opacity-50 hover:bg-transparent hover:text-muted-foreground"
2097
+ // 行容器形态下圆角与悬浮/选中底色由 menu-item-row 承担,按钮本体透明
2098
+ hasRowExtras ? item.disabled ? "cursor-not-allowed" : "cursor-pointer" : cn(
2099
+ "rounded-md",
2100
+ selected ? "bg-(--menu-active-background) font-medium text-(--menu-active-foreground)" : "cursor-pointer text-foreground hover:bg-(--menu-hover-background)/50",
2101
+ item.disabled && "cursor-not-allowed opacity-50 hover:bg-transparent hover:text-muted-foreground"
2102
+ )
1901
2103
  ),
1902
2104
  style: mode === "inline" && depth > 0 && !collapsed ? { paddingLeft: 12 + depth * 16 } : void 0,
1903
2105
  onMouseEnter: railDirectory ? flyoutOpenNow : void 0,
@@ -1906,16 +2108,17 @@ function MenuEntry({
1906
2108
  if (item.disabled) return;
1907
2109
  if (railDirectory) return;
1908
2110
  if (isDirectory) {
1909
- onToggle?.(item.key);
1910
- } else {
1911
- onSelect?.(item.key);
2111
+ if (canToggle) onToggle?.(item.key);
2112
+ return;
1912
2113
  }
2114
+ onSelect?.(item.key);
1913
2115
  },
1914
2116
  children: [
1915
- item.icon ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
1916
- collapsed ? null : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "min-w-0 flex-1 truncate text-left", children: item.label }),
1917
- item.dot && !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { "data-slot": "menu-item-dot", className: "size-1.5 shrink-0 rounded-full bg-destructive" }) : null,
1918
- item.badge !== void 0 && !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2117
+ chevronPlacement === "left" ? chevron : null,
2118
+ item.icon ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
2119
+ collapsed ? null : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "min-w-0 flex-1 truncate text-left", children: item.label }),
2120
+ item.dot && !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { "data-slot": "menu-item-dot", className: "size-1.5 shrink-0 rounded-full bg-destructive" }) : null,
2121
+ item.badge !== void 0 && !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1919
2122
  "span",
1920
2123
  {
1921
2124
  "data-slot": "menu-item-badge",
@@ -1923,24 +2126,14 @@ function MenuEntry({
1923
2126
  children: item.badge
1924
2127
  }
1925
2128
  ) : null,
1926
- isDirectory ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1927
- "span",
1928
- {
1929
- "data-slot": "menu-item-chevron",
1930
- className: cn(
1931
- "shrink-0 transition-transform",
1932
- expanded && "rotate-180"
1933
- ),
1934
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Icon, { name: "chevron-down", size: "sm" })
1935
- }
1936
- ) : null
2129
+ chevronPlacement === "left" ? null : chevron
1937
2130
  ]
1938
2131
  }
1939
2132
  );
1940
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { "data-slot": "menu-entry", "data-key": item.key, children: [
1941
- railDirectory ? /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Popover, { open: flyoutOpen, onOpenChange: setFlyoutOpen, children: [
1942
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(PopoverTrigger, { render: button }),
1943
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
2133
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { "data-slot": "menu-entry", "data-key": item.key, children: [
2134
+ railDirectory ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(Popover, { open: flyoutOpen, onOpenChange: setFlyoutOpen, children: [
2135
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(PopoverTrigger, { render: button }),
2136
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
1944
2137
  PopoverContent,
1945
2138
  {
1946
2139
  "data-slot": "menu-flyout",
@@ -1957,23 +2150,67 @@ function MenuEntry({
1957
2150
  }
1958
2151
  },
1959
2152
  children: [
1960
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "px-3 pt-2 pb-1 text-xs font-semibold text-muted-foreground", children: item.label }),
1961
- item.children?.map((child) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2153
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "px-3 pt-2 pb-1 text-xs font-semibold text-muted-foreground", children: item.label }),
2154
+ item.children?.map((child) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1962
2155
  MenuEntry,
1963
2156
  {
1964
2157
  item: child,
1965
2158
  mode: "inline",
1966
2159
  depth: 0,
1967
2160
  selectedKey,
1968
- onSelect
2161
+ onSelect,
2162
+ onItemAction
1969
2163
  },
1970
2164
  child.key
1971
2165
  ))
1972
2166
  ]
1973
2167
  }
1974
2168
  )
1975
- ] }) : collapsed ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(RailTooltip, { label: item.label, children: button }) : button,
1976
- railDirectory || isDirectory && !expanded ? null : item.children?.map((child) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2169
+ ] }) : collapsed ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(RailTooltip, { label: item.label, children: button }) : hasRowExtras ? (
2170
+ // 行容器:按钮主体 + 右端弱提示文本 / 操作按钮(同级节点,避免按钮
2171
+ // 嵌套按钮;操作点击不冒泡到 onSelect / 目录 toggle)。悬浮/选中
2172
+ // 底色覆盖整行,文字与右端操作不产生割裂感
2173
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
2174
+ "div",
2175
+ {
2176
+ "data-slot": "menu-item-row",
2177
+ className: cn(
2178
+ "flex w-full items-center gap-1 rounded-md pr-1.5 transition-colors",
2179
+ selected ? "bg-(--menu-active-background) font-medium text-(--menu-active-foreground)" : "text-foreground hover:bg-(--menu-hover-background)/50",
2180
+ item.disabled && "opacity-50"
2181
+ ),
2182
+ children: [
2183
+ button,
2184
+ item.trailing !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2185
+ "span",
2186
+ {
2187
+ "data-slot": "menu-item-trailing",
2188
+ className: "shrink-0 text-xs text-muted-foreground",
2189
+ children: item.trailing
2190
+ }
2191
+ ) : null,
2192
+ (item.actions?.length ?? 0) > 0 ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2193
+ "span",
2194
+ {
2195
+ "data-slot": "menu-item-actions",
2196
+ className: "flex shrink-0 items-center gap-0.5",
2197
+ children: item.actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2198
+ MenuItemActionButton,
2199
+ {
2200
+ itemKey: item.key,
2201
+ action,
2202
+ disabled: item.disabled,
2203
+ onItemAction
2204
+ },
2205
+ action.key
2206
+ ))
2207
+ }
2208
+ ) : null
2209
+ ]
2210
+ }
2211
+ )
2212
+ ) : button,
2213
+ railDirectory || canToggle && !expanded ? null : item.children?.map((child) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1977
2214
  MenuEntry,
1978
2215
  {
1979
2216
  item: child,
@@ -1981,18 +2218,62 @@ function MenuEntry({
1981
2218
  depth: depth + 1,
1982
2219
  selectedKey,
1983
2220
  onSelect,
2221
+ onItemAction,
1984
2222
  collapsed,
1985
2223
  collapsible,
1986
- expandedKeys,
2224
+ chevronPlacement,
2225
+ isExpanded,
1987
2226
  onToggle
1988
2227
  },
1989
2228
  child.key
1990
2229
  ))
1991
2230
  ] });
1992
2231
  }
2232
+ function MenuItemActionButton({
2233
+ itemKey,
2234
+ action,
2235
+ disabled,
2236
+ onItemAction
2237
+ }) {
2238
+ const button = /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2239
+ "button",
2240
+ {
2241
+ type: "button",
2242
+ "data-slot": "menu-item-action",
2243
+ "data-action": action.key,
2244
+ disabled,
2245
+ className: "shrink-0 cursor-pointer rounded p-0.5 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50",
2246
+ onClick: (event) => {
2247
+ if (action.menu) return;
2248
+ event.stopPropagation();
2249
+ if (disabled) return;
2250
+ onItemAction?.({ key: itemKey, action: action.key });
2251
+ },
2252
+ children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Icon, { name: action.icon, size: "sm" })
2253
+ }
2254
+ );
2255
+ if (!action.menu) {
2256
+ return action.tooltip ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Tooltip2, { content: action.tooltip, children: button }) : button;
2257
+ }
2258
+ if (disabled) return button;
2259
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(DropdownMenu, { children: [
2260
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2261
+ DropdownMenuTrigger,
2262
+ {
2263
+ nativeButton: false,
2264
+ render: triggerWrapper("menu-item-action-trigger"),
2265
+ children: button
2266
+ }
2267
+ ),
2268
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DropdownMenuContent, { side: "bottom", align: "end", className: "min-w-32", children: renderDropdownItems(
2269
+ action.menu,
2270
+ (value) => onItemAction?.({ key: itemKey, action: `${action.key}:${value}` })
2271
+ ) })
2272
+ ] });
2273
+ }
1993
2274
 
1994
2275
  // src/layout/chat/ChatLayout.tsx
1995
- var import_jsx_runtime12 = require("react/jsx-runtime");
2276
+ var import_jsx_runtime16 = require("react/jsx-runtime");
1996
2277
  function ChatLayout({
1997
2278
  brand,
1998
2279
  menu,
@@ -2047,7 +2328,7 @@ function ChatLayout({
2047
2328
  bridge.push(item.path);
2048
2329
  }
2049
2330
  };
2050
- const sidebarContent = sidebar !== void 0 && sidebar !== null ? sidebar : menuItems.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
2331
+ const sidebarContent = sidebar !== void 0 && sidebar !== null ? sidebar : menuItems.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2051
2332
  Menu2,
2052
2333
  {
2053
2334
  items: menuItems.map((item) => chatMenuItemToUiMenuItem(item)),
@@ -2055,7 +2336,7 @@ function ChatLayout({
2055
2336
  onSelect: handleSelect
2056
2337
  }
2057
2338
  ) : void 0;
2058
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
2339
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2059
2340
  Sidebar,
2060
2341
  {
2061
2342
  brand,
@@ -2063,7 +2344,7 @@ function ChatLayout({
2063
2344
  sidebarFooter,
2064
2345
  collapsible,
2065
2346
  locationKey: routeProp?.path ?? bridgePath,
2066
- children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
2347
+ children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2067
2348
  "div",
2068
2349
  {
2069
2350
  "data-slot": "chat-layout-content",
@@ -2117,7 +2398,7 @@ function menuItemToMenuData(item) {
2117
2398
  }
2118
2399
 
2119
2400
  // src/ui/card.tsx
2120
- var import_jsx_runtime13 = require("react/jsx-runtime");
2401
+ var import_jsx_runtime17 = require("react/jsx-runtime");
2121
2402
  var cardRoundedClasses = {
2122
2403
  none: "rounded-none",
2123
2404
  sm: "rounded-sm",
@@ -2132,7 +2413,7 @@ function Card({
2132
2413
  rounded = "lg",
2133
2414
  ...props
2134
2415
  }) {
2135
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2416
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2136
2417
  "div",
2137
2418
  {
2138
2419
  "data-slot": "card",
@@ -2146,7 +2427,7 @@ function Card({
2146
2427
  );
2147
2428
  }
2148
2429
  function CardHeader({ className, ...props }) {
2149
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2430
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2150
2431
  "div",
2151
2432
  {
2152
2433
  "data-slot": "card-header",
@@ -2159,7 +2440,7 @@ function CardHeader({ className, ...props }) {
2159
2440
  );
2160
2441
  }
2161
2442
  function CardTitle({ className, ...props }) {
2162
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2443
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2163
2444
  "div",
2164
2445
  {
2165
2446
  "data-slot": "card-title",
@@ -2169,7 +2450,7 @@ function CardTitle({ className, ...props }) {
2169
2450
  );
2170
2451
  }
2171
2452
  function CardContent({ className, ...props }) {
2172
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2453
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2173
2454
  "div",
2174
2455
  {
2175
2456
  "data-slot": "card-content",
@@ -2180,26 +2461,26 @@ function CardContent({ className, ...props }) {
2180
2461
  }
2181
2462
 
2182
2463
  // src/layout/basic/LoginLayout.tsx
2183
- var import_jsx_runtime14 = require("react/jsx-runtime");
2464
+ var import_jsx_runtime18 = require("react/jsx-runtime");
2184
2465
  function LoginLayout({
2185
2466
  variant = "center",
2186
2467
  brand,
2187
2468
  children
2188
2469
  }) {
2189
- const brandBlock = /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { "data-slot": "login-brand", className: "flex flex-col items-center gap-2", children: [
2470
+ const brandBlock = /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { "data-slot": "login-brand", className: "flex flex-col items-center gap-2", children: [
2190
2471
  brand.logo,
2191
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("h1", { className: "text-xl font-semibold", children: brand.title }),
2192
- brand.description !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "text-sm text-muted-foreground", children: brand.description })
2472
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h1", { className: "text-xl font-semibold", children: brand.title }),
2473
+ brand.description !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "text-sm text-muted-foreground", children: brand.description })
2193
2474
  ] });
2194
2475
  if (variant === "split") {
2195
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
2476
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
2196
2477
  "div",
2197
2478
  {
2198
2479
  "data-slot": "login-layout",
2199
2480
  "data-variant": "split",
2200
2481
  className: "grid min-h-screen grid-cols-2 bg-background text-foreground",
2201
2482
  children: [
2202
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
2483
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
2203
2484
  "div",
2204
2485
  {
2205
2486
  "data-slot": "login-brand-panel",
@@ -2207,7 +2488,7 @@ function LoginLayout({
2207
2488
  children: brandBlock
2208
2489
  }
2209
2490
  ),
2210
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
2491
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
2211
2492
  "div",
2212
2493
  {
2213
2494
  "data-slot": "login-form-panel",
@@ -2219,37 +2500,37 @@ function LoginLayout({
2219
2500
  }
2220
2501
  );
2221
2502
  }
2222
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
2503
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
2223
2504
  "div",
2224
2505
  {
2225
2506
  "data-slot": "login-layout",
2226
2507
  "data-variant": "center",
2227
2508
  className: "flex min-h-screen items-center justify-center bg-muted/40 text-foreground",
2228
- children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(Card, { "data-slot": "login-card", className: "w-full max-w-sm gap-4 py-6", children: [
2229
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(CardHeader, { className: "px-6", children: [
2230
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(CardTitle, { className: "sr-only", children: brand.title }),
2509
+ children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(Card, { "data-slot": "login-card", className: "w-full max-w-sm gap-4 py-6", children: [
2510
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(CardHeader, { className: "px-6", children: [
2511
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(CardTitle, { className: "sr-only", children: brand.title }),
2231
2512
  brandBlock
2232
2513
  ] }),
2233
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(CardContent, { className: "flex flex-col gap-4 px-6", children })
2514
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(CardContent, { className: "flex flex-col gap-4 px-6", children })
2234
2515
  ] })
2235
2516
  }
2236
2517
  );
2237
2518
  }
2238
2519
 
2239
2520
  // src/layout/basic/LandingLayout.tsx
2240
- var import_jsx_runtime15 = require("react/jsx-runtime");
2521
+ var import_jsx_runtime19 = require("react/jsx-runtime");
2241
2522
  function LandingLayout({
2242
2523
  navbar,
2243
2524
  footer,
2244
2525
  children
2245
2526
  }) {
2246
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
2527
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
2247
2528
  "div",
2248
2529
  {
2249
2530
  "data-slot": "landing-layout",
2250
2531
  className: "flex min-h-screen flex-col bg-background text-foreground",
2251
2532
  children: [
2252
- navbar !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2533
+ navbar !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2253
2534
  "header",
2254
2535
  {
2255
2536
  "data-slot": "landing-navbar",
@@ -2257,8 +2538,8 @@ function LandingLayout({
2257
2538
  children: navbar
2258
2539
  }
2259
2540
  ),
2260
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("main", { "data-slot": "landing-content", className: "flex-1", children }),
2261
- footer !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2541
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("main", { "data-slot": "landing-content", className: "flex-1", children }),
2542
+ footer !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2262
2543
  "footer",
2263
2544
  {
2264
2545
  "data-slot": "landing-footer",