@pactor-app/ui 1.44.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.
@@ -346,6 +346,8 @@ var ICONS = {
346
346
  "chart-column": import_lucide_react2.ChartColumn,
347
347
  "layout-grid": import_lucide_react2.LayoutGrid,
348
348
  "layout-template": import_lucide_react2.LayoutTemplate,
349
+ "maximize-2": import_lucide_react2.Maximize2,
350
+ "minimize-2": import_lucide_react2.Minimize2,
349
351
  palette: import_lucide_react2.Palette,
350
352
  paintbrush: import_lucide_react2.Paintbrush,
351
353
  funnel: import_lucide_react2.Funnel,
@@ -973,14 +975,174 @@ var import_react6 = require("react");
973
975
  // src/components/components/Menu/index.tsx
974
976
  var import_react5 = require("react");
975
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
+
976
1138
  // src/ui/tooltip.tsx
977
1139
  var import_tooltip = require("@base-ui/react/tooltip");
978
- var import_jsx_runtime6 = require("react/jsx-runtime");
1140
+ var import_jsx_runtime9 = require("react/jsx-runtime");
979
1141
  function TooltipProvider({
980
1142
  delay = 0,
981
1143
  ...props
982
1144
  }) {
983
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1145
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
984
1146
  import_tooltip.Tooltip.Provider,
985
1147
  {
986
1148
  "data-slot": "tooltip-provider",
@@ -992,12 +1154,12 @@ function TooltipProvider({
992
1154
  function Tooltip({
993
1155
  ...props
994
1156
  }) {
995
- 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 }) });
996
1158
  }
997
1159
  function TooltipTrigger({
998
1160
  ...props
999
1161
  }) {
1000
- 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 });
1001
1163
  }
1002
1164
  function TooltipContent({
1003
1165
  className,
@@ -1007,14 +1169,14 @@ function TooltipContent({
1007
1169
  children,
1008
1170
  ...props
1009
1171
  }) {
1010
- 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)(
1011
1173
  import_tooltip.Tooltip.Positioner,
1012
1174
  {
1013
1175
  align,
1014
1176
  side,
1015
1177
  sideOffset,
1016
1178
  className: "isolate z-50",
1017
- children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
1179
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1018
1180
  import_tooltip.Tooltip.Popup,
1019
1181
  {
1020
1182
  "data-slot": "tooltip-content",
@@ -1025,7 +1187,7 @@ function TooltipContent({
1025
1187
  ...props,
1026
1188
  children: [
1027
1189
  children,
1028
- /* @__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" })
1029
1191
  ]
1030
1192
  }
1031
1193
  )
@@ -1034,14 +1196,14 @@ function TooltipContent({
1034
1196
  }
1035
1197
 
1036
1198
  // src/components/components/Sidebar/rail-tooltip.tsx
1037
- var import_jsx_runtime7 = require("react/jsx-runtime");
1199
+ var import_jsx_runtime10 = require("react/jsx-runtime");
1038
1200
  function RailTooltip({
1039
1201
  label,
1040
1202
  children
1041
1203
  }) {
1042
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Tooltip, { children: [
1043
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(TooltipTrigger, { render: children }),
1044
- /* @__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 })
1045
1207
  ] });
1046
1208
  }
1047
1209
 
@@ -1052,7 +1214,7 @@ var import_react4 = require("react");
1052
1214
  // src/ui/sidebar.tsx
1053
1215
  var React = __toESM(require("react"), 1);
1054
1216
  var import_class_variance_authority2 = require("class-variance-authority");
1055
- var import_lucide_react4 = require("lucide-react");
1217
+ var import_lucide_react5 = require("lucide-react");
1056
1218
 
1057
1219
  // src/hooks/use-mobile.ts
1058
1220
  var import_react3 = require("react");
@@ -1078,24 +1240,24 @@ function useIsMobile() {
1078
1240
 
1079
1241
  // src/ui/sheet.tsx
1080
1242
  var import_dialog = require("@base-ui/react/dialog");
1081
- var import_lucide_react3 = require("lucide-react");
1243
+ var import_lucide_react4 = require("lucide-react");
1082
1244
  var import_class_variance_authority = require("class-variance-authority");
1083
- var import_jsx_runtime8 = require("react/jsx-runtime");
1245
+ var import_jsx_runtime11 = require("react/jsx-runtime");
1084
1246
  function Sheet({
1085
1247
  ...props
1086
1248
  }) {
1087
- 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 });
1088
1250
  }
1089
1251
  function SheetPortal({
1090
1252
  ...props
1091
1253
  }) {
1092
- 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 });
1093
1255
  }
1094
1256
  function SheetOverlay({
1095
1257
  className,
1096
1258
  ...props
1097
1259
  }) {
1098
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1260
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1099
1261
  import_dialog.Dialog.Backdrop,
1100
1262
  {
1101
1263
  "data-slot": "sheet-overlay",
@@ -1129,9 +1291,9 @@ function SheetContent({
1129
1291
  side = "right",
1130
1292
  ...props
1131
1293
  }) {
1132
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(SheetPortal, { "data-slot": "sheet-portal", children: [
1133
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(SheetOverlay, {}),
1134
- /* @__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)(
1135
1297
  import_dialog.Dialog.Popup,
1136
1298
  {
1137
1299
  "data-slot": "sheet-content",
@@ -1139,11 +1301,11 @@ function SheetContent({
1139
1301
  ...props,
1140
1302
  children: [
1141
1303
  children,
1142
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
1304
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
1143
1305
  import_dialog.Dialog.Close,
1144
1306
  {
1145
1307
  "data-slot": "sheet-close",
1146
- render: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1308
+ render: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1147
1309
  "button",
1148
1310
  {
1149
1311
  type: "button",
@@ -1151,8 +1313,8 @@ function SheetContent({
1151
1313
  }
1152
1314
  ),
1153
1315
  children: [
1154
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_lucide_react3.XIcon, {}),
1155
- /* @__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" })
1156
1318
  ]
1157
1319
  }
1158
1320
  )
@@ -1162,7 +1324,7 @@ function SheetContent({
1162
1324
  ] });
1163
1325
  }
1164
1326
  function SheetHeader({ className, ...props }) {
1165
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1327
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1166
1328
  "div",
1167
1329
  {
1168
1330
  "data-slot": "sheet-header",
@@ -1175,7 +1337,7 @@ function SheetTitle({
1175
1337
  className,
1176
1338
  ...props
1177
1339
  }) {
1178
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1340
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1179
1341
  import_dialog.Dialog.Title,
1180
1342
  {
1181
1343
  "data-slot": "sheet-title",
@@ -1188,7 +1350,7 @@ function SheetDescription({
1188
1350
  className,
1189
1351
  ...props
1190
1352
  }) {
1191
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1353
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1192
1354
  import_dialog.Dialog.Description,
1193
1355
  {
1194
1356
  "data-slot": "sheet-description",
@@ -1199,7 +1361,7 @@ function SheetDescription({
1199
1361
  }
1200
1362
 
1201
1363
  // src/ui/sidebar.tsx
1202
- var import_jsx_runtime9 = require("react/jsx-runtime");
1364
+ var import_jsx_runtime12 = require("react/jsx-runtime");
1203
1365
  var SIDEBAR_COOKIE_NAME = "sidebar_state";
1204
1366
  var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
1205
1367
  var SIDEBAR_WIDTH_MOBILE = "18rem";
@@ -1263,7 +1425,7 @@ function SidebarProvider({
1263
1425
  }),
1264
1426
  [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
1265
1427
  );
1266
- 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)(
1267
1429
  "div",
1268
1430
  {
1269
1431
  "data-slot": "sidebar-wrapper",
@@ -1287,7 +1449,7 @@ function SidebarRoot({
1287
1449
  }) {
1288
1450
  const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
1289
1451
  if (collapsible === "none") {
1290
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1452
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1291
1453
  "div",
1292
1454
  {
1293
1455
  "data-slot": "sidebar",
@@ -1301,7 +1463,7 @@ function SidebarRoot({
1301
1463
  );
1302
1464
  }
1303
1465
  if (isMobile) {
1304
- 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)(
1305
1467
  SheetContent,
1306
1468
  {
1307
1469
  "data-sidebar": "sidebar",
@@ -1313,16 +1475,16 @@ function SidebarRoot({
1313
1475
  },
1314
1476
  side,
1315
1477
  children: [
1316
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(SheetHeader, { className: "sr-only", children: [
1317
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SheetTitle, { children: "Sidebar" }),
1318
- /* @__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." })
1319
1481
  ] }),
1320
- /* @__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 })
1321
1483
  ]
1322
1484
  }
1323
1485
  ) });
1324
1486
  }
1325
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1487
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
1326
1488
  "div",
1327
1489
  {
1328
1490
  className: "group peer hidden text-sidebar-foreground md:block",
@@ -1332,7 +1494,7 @@ function SidebarRoot({
1332
1494
  "data-side": side,
1333
1495
  "data-slot": "sidebar",
1334
1496
  children: [
1335
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1497
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1336
1498
  "div",
1337
1499
  {
1338
1500
  "data-slot": "sidebar-gap",
@@ -1344,7 +1506,7 @@ function SidebarRoot({
1344
1506
  )
1345
1507
  }
1346
1508
  ),
1347
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1509
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1348
1510
  "div",
1349
1511
  {
1350
1512
  "data-slot": "sidebar-container",
@@ -1360,7 +1522,7 @@ function SidebarRoot({
1360
1522
  className
1361
1523
  ),
1362
1524
  ...props,
1363
- children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1525
+ children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1364
1526
  "div",
1365
1527
  {
1366
1528
  "data-sidebar": "sidebar",
@@ -1376,7 +1538,7 @@ function SidebarRoot({
1376
1538
  );
1377
1539
  }
1378
1540
  function SidebarInset({ className, ...props }) {
1379
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1541
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1380
1542
  "main",
1381
1543
  {
1382
1544
  "data-slot": "sidebar-inset",
@@ -1392,7 +1554,7 @@ function SidebarInset({ className, ...props }) {
1392
1554
  );
1393
1555
  }
1394
1556
  function SidebarHeader({ className, ...props }) {
1395
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1557
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1396
1558
  "div",
1397
1559
  {
1398
1560
  "data-slot": "sidebar-header",
@@ -1403,7 +1565,7 @@ function SidebarHeader({ className, ...props }) {
1403
1565
  );
1404
1566
  }
1405
1567
  function SidebarFooter({ className, ...props }) {
1406
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1568
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1407
1569
  "div",
1408
1570
  {
1409
1571
  "data-slot": "sidebar-footer",
@@ -1414,7 +1576,7 @@ function SidebarFooter({ className, ...props }) {
1414
1576
  );
1415
1577
  }
1416
1578
  function SidebarContent({ className, ...props }) {
1417
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1579
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1418
1580
  "div",
1419
1581
  {
1420
1582
  "data-slot": "sidebar-content",
@@ -1441,7 +1603,7 @@ function renderAsChild(children, dataSlot, className, rest) {
1441
1603
  });
1442
1604
  }
1443
1605
  function SidebarMenu({ className, ...props }) {
1444
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1606
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1445
1607
  "ul",
1446
1608
  {
1447
1609
  "data-slot": "sidebar-menu",
@@ -1452,7 +1614,7 @@ function SidebarMenu({ className, ...props }) {
1452
1614
  );
1453
1615
  }
1454
1616
  function SidebarMenuItem({ className, ...props }) {
1455
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1617
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1456
1618
  "li",
1457
1619
  {
1458
1620
  "data-slot": "sidebar-menu-item",
@@ -1499,7 +1661,7 @@ function SidebarMenuButton({
1499
1661
  "data-size": size,
1500
1662
  "data-active": isActive,
1501
1663
  ...props
1502
- }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1664
+ }) : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1503
1665
  "button",
1504
1666
  {
1505
1667
  "data-slot": "sidebar-menu-button",
@@ -1519,9 +1681,9 @@ function SidebarMenuButton({
1519
1681
  children: tooltip
1520
1682
  };
1521
1683
  }
1522
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Tooltip, { children: [
1523
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TooltipTrigger, { render: button }),
1524
- /* @__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)(
1525
1687
  TooltipContent,
1526
1688
  {
1527
1689
  side: "right",
@@ -1534,7 +1696,7 @@ function SidebarMenuButton({
1534
1696
  }
1535
1697
 
1536
1698
  // src/components/components/Sidebar/index.tsx
1537
- var import_jsx_runtime10 = require("react/jsx-runtime");
1699
+ var import_jsx_runtime13 = require("react/jsx-runtime");
1538
1700
  function useSidebarDrawer() {
1539
1701
  try {
1540
1702
  const ctx = useSidebar();
@@ -1556,9 +1718,9 @@ function useOptionalRenderer() {
1556
1718
  function SidebarContentSlot({ content }) {
1557
1719
  const renderer = useOptionalRenderer();
1558
1720
  if (renderer !== null && typeof content === "object" && content !== null && !("$$typeof" in content) && "type" in content) {
1559
- 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]) });
1560
1722
  }
1561
- 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 });
1562
1724
  }
1563
1725
  function isBrandObject(brand) {
1564
1726
  return typeof brand === "object" && brand !== null && !("$$typeof" in brand) && "title" in brand;
@@ -1568,8 +1730,8 @@ function BrandNode({ brand, collapsed }) {
1568
1730
  return null;
1569
1731
  }
1570
1732
  if (isBrandObject(brand)) {
1571
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
1572
- 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)(
1573
1735
  "img",
1574
1736
  {
1575
1737
  "data-slot": "sidebar-brand-logo",
@@ -1578,27 +1740,27 @@ function BrandNode({ brand, collapsed }) {
1578
1740
  className: "size-6 shrink-0"
1579
1741
  }
1580
1742
  ) : null,
1581
- 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 })
1582
1744
  ] });
1583
1745
  }
1584
- 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 });
1585
1747
  }
1586
1748
  function SidebarNavItems({ items }) {
1587
- 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)) });
1588
1750
  }
1589
1751
  function SidebarNavEntry({ item, depth }) {
1590
- 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;
1591
1753
  const labelNode = item.label;
1592
- 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: [
1593
1755
  iconNode,
1594
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { children: labelNode })
1595
- ] }) }) : /* @__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: [
1596
1758
  iconNode,
1597
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { children: labelNode })
1759
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { children: labelNode })
1598
1760
  ] });
1599
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(SidebarMenuItem, { children: [
1761
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(SidebarMenuItem, { children: [
1600
1762
  button,
1601
- 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)(
1602
1764
  SidebarNavEntry,
1603
1765
  {
1604
1766
  item: child,
@@ -1622,13 +1784,13 @@ function Sidebar({
1622
1784
  style,
1623
1785
  children
1624
1786
  }) {
1625
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1787
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1626
1788
  SidebarProvider,
1627
1789
  {
1628
1790
  defaultOpen: !defaultCollapsed,
1629
1791
  className,
1630
1792
  style,
1631
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1793
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1632
1794
  SidebarInner,
1633
1795
  {
1634
1796
  brand,
@@ -1673,20 +1835,20 @@ function SidebarInner({
1673
1835
  }
1674
1836
  }, [locationKey, setOpenMobile]);
1675
1837
  const collapsedEffective = collapsible === true && collapsed && !isMobile;
1676
- 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 });
1677
1839
  const collapsedBrandLogo = collapsedEffective && isBrandObject(brand) && brand.logo ? brand.logo : null;
1678
- 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;
1679
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
1680
- /* @__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)(
1681
1843
  SidebarRoot,
1682
1844
  {
1683
1845
  collapsible: collapsible ? "icon" : "offcanvas",
1684
1846
  children: [
1685
- (brand !== void 0 || collapsible) && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1847
+ (brand !== void 0 || collapsible) && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1686
1848
  SidebarHeader,
1687
1849
  {
1688
1850
  className: brand === void 0 ? "h-9" : void 0,
1689
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
1851
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
1690
1852
  "div",
1691
1853
  {
1692
1854
  "data-slot": "sidebar-brand",
@@ -1697,7 +1859,7 @@ function SidebarInner({
1697
1859
  collapsedBrandLogo && "h-auto flex-col gap-1 py-1.5"
1698
1860
  ),
1699
1861
  children: [
1700
- collapsedEffective ? collapsedBrandLogo && isBrandObject(brand) ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1862
+ collapsedEffective ? collapsedBrandLogo && isBrandObject(brand) ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1701
1863
  "img",
1702
1864
  {
1703
1865
  "data-slot": "sidebar-brand-logo",
@@ -1705,8 +1867,8 @@ function SidebarInner({
1705
1867
  alt: brand.title,
1706
1868
  className: "size-6 shrink-0"
1707
1869
  }
1708
- ) : null : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: brandNode }),
1709
- 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)(
1710
1872
  "button",
1711
1873
  {
1712
1874
  type: "button",
@@ -1715,7 +1877,7 @@ function SidebarInner({
1715
1877
  "aria-expanded": !collapsedEffective,
1716
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",
1717
1879
  onClick: toggleSidebar,
1718
- 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 })
1719
1881
  }
1720
1882
  )
1721
1883
  ]
@@ -1723,27 +1885,27 @@ function SidebarInner({
1723
1885
  )
1724
1886
  }
1725
1887
  ),
1726
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SidebarContent, { children: sidebarContent }),
1727
- 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)(
1728
1890
  SidebarFooter,
1729
1891
  {
1730
1892
  className: cn(
1731
1893
  collapsedEffective && "items-center px-0 [&_[data-slot=flex]]:justify-center [&_[data-slot=icon]]:hidden [&_[data-slot=text]]:hidden"
1732
1894
  ),
1733
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SidebarContentSlot, { content: sidebarFooter })
1895
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SidebarContentSlot, { content: sidebarFooter })
1734
1896
  }
1735
1897
  )
1736
1898
  ]
1737
1899
  }
1738
1900
  ),
1739
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(SidebarInset, { children: [
1740
- drawer && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
1901
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(SidebarInset, { children: [
1902
+ drawer && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
1741
1903
  "div",
1742
1904
  {
1743
1905
  "data-slot": "sidebar-topbar",
1744
1906
  className: "flex h-14 items-center gap-2 border-b border-sidebar-border bg-sidebar px-3 md:hidden",
1745
1907
  children: [
1746
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1908
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1747
1909
  "button",
1748
1910
  {
1749
1911
  type: "button",
@@ -1751,7 +1913,7 @@ function SidebarInner({
1751
1913
  "aria-label": t("pactor.layout.openNavigation"),
1752
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",
1753
1915
  onClick: toggleSidebar,
1754
- 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 })
1755
1917
  }
1756
1918
  ),
1757
1919
  brandNode
@@ -1763,8 +1925,17 @@ function SidebarInner({
1763
1925
  ] });
1764
1926
  }
1765
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
+
1766
1937
  // src/components/components/Menu/index.tsx
1767
- var import_jsx_runtime11 = require("react/jsx-runtime");
1938
+ var import_jsx_runtime15 = require("react/jsx-runtime");
1768
1939
  function collectAncestors(items, target, into, trail = []) {
1769
1940
  for (const item of items) {
1770
1941
  if (item.key === target) {
@@ -1784,22 +1955,32 @@ function Menu2({
1784
1955
  collapsible = false,
1785
1956
  collapsed: collapsedProp,
1786
1957
  defaultExpandedKeys,
1958
+ defaultExpandAll = false,
1959
+ chevronPlacement = "right",
1787
1960
  onSelect,
1961
+ onItemAction,
1788
1962
  className,
1789
1963
  style
1790
1964
  }) {
1791
1965
  const drawer = useSidebarDrawer();
1792
1966
  const collapsed = collapsedProp ?? (mode === "inline" && drawer?.collapsed === true);
1793
1967
  const collapsibleOn = collapsible && mode === "inline" && !collapsed;
1794
- const [expandedKeys, setExpandedKeys] = (0, import_react5.useState)(() => {
1968
+ const [baseExpandedKeys] = (0, import_react5.useState)(() => {
1795
1969
  const initial = new Set(defaultExpandedKeys ?? []);
1796
1970
  if (selectedKey !== void 0) {
1797
1971
  collectAncestors(items, selectedKey, initial);
1798
1972
  }
1799
1973
  return initial;
1800
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
+ };
1801
1982
  const toggleExpanded = (key) => {
1802
- setExpandedKeys((prev) => {
1983
+ setToggledKeys((prev) => {
1803
1984
  const next = new Set(prev);
1804
1985
  if (next.has(key)) {
1805
1986
  next.delete(key);
@@ -1810,7 +1991,7 @@ function Menu2({
1810
1991
  });
1811
1992
  };
1812
1993
  let previousGroup;
1813
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1994
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1814
1995
  "nav",
1815
1996
  {
1816
1997
  "data-slot": "menu",
@@ -1827,8 +2008,8 @@ function Menu2({
1827
2008
  groupLabel = item.group;
1828
2009
  }
1829
2010
  previousGroup = item.group;
1830
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { "data-slot": "menu-group-entry", children: [
1831
- 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)(
1832
2013
  "div",
1833
2014
  {
1834
2015
  "data-slot": "menu-group",
@@ -1836,7 +2017,7 @@ function Menu2({
1836
2017
  children: groupLabel
1837
2018
  }
1838
2019
  ),
1839
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2020
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1840
2021
  MenuEntry,
1841
2022
  {
1842
2023
  item,
@@ -1844,9 +2025,11 @@ function Menu2({
1844
2025
  depth: 0,
1845
2026
  selectedKey,
1846
2027
  onSelect,
2028
+ onItemAction,
1847
2029
  collapsed,
1848
2030
  collapsible: collapsibleOn,
1849
- expandedKeys,
2031
+ chevronPlacement,
2032
+ isExpanded,
1850
2033
  onToggle: toggleExpanded
1851
2034
  }
1852
2035
  )
@@ -1861,16 +2044,20 @@ function MenuEntry({
1861
2044
  depth,
1862
2045
  selectedKey,
1863
2046
  onSelect,
2047
+ onItemAction,
1864
2048
  collapsed = false,
1865
2049
  collapsible = false,
1866
- expandedKeys,
2050
+ chevronPlacement = "right",
2051
+ isExpanded,
1867
2052
  onToggle
1868
2053
  }) {
1869
- const selected = item.key === selectedKey;
1870
2054
  const hasChildren = (item.children?.length ?? 0) > 0;
1871
- const isDirectory = collapsible && hasChildren;
1872
- 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;
1873
2059
  const railDirectory = collapsed && hasChildren;
2060
+ const hasRowExtras = !collapsed && (item.trailing !== void 0 || (item.actions?.length ?? 0) > 0);
1874
2061
  const [flyoutOpen, setFlyoutOpen] = (0, import_react5.useState)(false);
1875
2062
  const flyoutTimer = (0, import_react5.useRef)(void 0);
1876
2063
  const flyoutOpenNow = () => {
@@ -1882,20 +2069,37 @@ function MenuEntry({
1882
2069
  flyoutTimer.current = window.setTimeout(() => setFlyoutOpen(false), 200);
1883
2070
  };
1884
2071
  (0, import_react5.useEffect)(() => () => window.clearTimeout(flyoutTimer.current), []);
1885
- 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)(
1886
2084
  "button",
1887
2085
  {
1888
2086
  type: "button",
1889
2087
  "data-slot": "menu-item",
1890
2088
  "aria-current": selected ? "page" : void 0,
1891
- "aria-expanded": isDirectory ? expanded : railDirectory ? flyoutOpen : void 0,
2089
+ "aria-expanded": canToggle ? expanded : railDirectory ? flyoutOpen : void 0,
1892
2090
  disabled: item.disabled,
1893
2091
  className: cn(
1894
- "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",
1895
2095
  mode === "horizontal" ? "px-3 py-2" : "px-3 py-2 text-left",
1896
2096
  collapsed && "justify-center px-0",
1897
- selected ? "bg-(--menu-active-background) font-medium text-(--menu-active-foreground)" : "cursor-pointer text-foreground hover:bg-(--menu-hover-background)/50",
1898
- 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
+ )
1899
2103
  ),
1900
2104
  style: mode === "inline" && depth > 0 && !collapsed ? { paddingLeft: 12 + depth * 16 } : void 0,
1901
2105
  onMouseEnter: railDirectory ? flyoutOpenNow : void 0,
@@ -1904,16 +2108,17 @@ function MenuEntry({
1904
2108
  if (item.disabled) return;
1905
2109
  if (railDirectory) return;
1906
2110
  if (isDirectory) {
1907
- onToggle?.(item.key);
1908
- } else {
1909
- onSelect?.(item.key);
2111
+ if (canToggle) onToggle?.(item.key);
2112
+ return;
1910
2113
  }
2114
+ onSelect?.(item.key);
1911
2115
  },
1912
2116
  children: [
1913
- item.icon ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
1914
- collapsed ? null : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "min-w-0 flex-1 truncate text-left", children: item.label }),
1915
- 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,
1916
- 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)(
1917
2122
  "span",
1918
2123
  {
1919
2124
  "data-slot": "menu-item-badge",
@@ -1921,24 +2126,14 @@ function MenuEntry({
1921
2126
  children: item.badge
1922
2127
  }
1923
2128
  ) : null,
1924
- isDirectory ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1925
- "span",
1926
- {
1927
- "data-slot": "menu-item-chevron",
1928
- className: cn(
1929
- "shrink-0 transition-transform",
1930
- expanded && "rotate-180"
1931
- ),
1932
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Icon, { name: "chevron-down", size: "sm" })
1933
- }
1934
- ) : null
2129
+ chevronPlacement === "left" ? null : chevron
1935
2130
  ]
1936
2131
  }
1937
2132
  );
1938
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { "data-slot": "menu-entry", "data-key": item.key, children: [
1939
- railDirectory ? /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Popover, { open: flyoutOpen, onOpenChange: setFlyoutOpen, children: [
1940
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(PopoverTrigger, { render: button }),
1941
- /* @__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)(
1942
2137
  PopoverContent,
1943
2138
  {
1944
2139
  "data-slot": "menu-flyout",
@@ -1955,23 +2150,67 @@ function MenuEntry({
1955
2150
  }
1956
2151
  },
1957
2152
  children: [
1958
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "px-3 pt-2 pb-1 text-xs font-semibold text-muted-foreground", children: item.label }),
1959
- 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)(
1960
2155
  MenuEntry,
1961
2156
  {
1962
2157
  item: child,
1963
2158
  mode: "inline",
1964
2159
  depth: 0,
1965
2160
  selectedKey,
1966
- onSelect
2161
+ onSelect,
2162
+ onItemAction
1967
2163
  },
1968
2164
  child.key
1969
2165
  ))
1970
2166
  ]
1971
2167
  }
1972
2168
  )
1973
- ] }) : collapsed ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(RailTooltip, { label: item.label, children: button }) : button,
1974
- 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)(
1975
2214
  MenuEntry,
1976
2215
  {
1977
2216
  item: child,
@@ -1979,18 +2218,62 @@ function MenuEntry({
1979
2218
  depth: depth + 1,
1980
2219
  selectedKey,
1981
2220
  onSelect,
2221
+ onItemAction,
1982
2222
  collapsed,
1983
2223
  collapsible,
1984
- expandedKeys,
2224
+ chevronPlacement,
2225
+ isExpanded,
1985
2226
  onToggle
1986
2227
  },
1987
2228
  child.key
1988
2229
  ))
1989
2230
  ] });
1990
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
+ }
1991
2274
 
1992
2275
  // src/layout/chat/ChatLayout.tsx
1993
- var import_jsx_runtime12 = require("react/jsx-runtime");
2276
+ var import_jsx_runtime16 = require("react/jsx-runtime");
1994
2277
  function ChatLayout({
1995
2278
  brand,
1996
2279
  menu,
@@ -2045,7 +2328,7 @@ function ChatLayout({
2045
2328
  bridge.push(item.path);
2046
2329
  }
2047
2330
  };
2048
- 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)(
2049
2332
  Menu2,
2050
2333
  {
2051
2334
  items: menuItems.map((item) => chatMenuItemToUiMenuItem(item)),
@@ -2053,7 +2336,7 @@ function ChatLayout({
2053
2336
  onSelect: handleSelect
2054
2337
  }
2055
2338
  ) : void 0;
2056
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
2339
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2057
2340
  Sidebar,
2058
2341
  {
2059
2342
  brand,
@@ -2061,7 +2344,7 @@ function ChatLayout({
2061
2344
  sidebarFooter,
2062
2345
  collapsible,
2063
2346
  locationKey: routeProp?.path ?? bridgePath,
2064
- children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
2347
+ children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2065
2348
  "div",
2066
2349
  {
2067
2350
  "data-slot": "chat-layout-content",
@@ -2115,7 +2398,7 @@ function menuItemToMenuData(item) {
2115
2398
  }
2116
2399
 
2117
2400
  // src/ui/card.tsx
2118
- var import_jsx_runtime13 = require("react/jsx-runtime");
2401
+ var import_jsx_runtime17 = require("react/jsx-runtime");
2119
2402
  var cardRoundedClasses = {
2120
2403
  none: "rounded-none",
2121
2404
  sm: "rounded-sm",
@@ -2130,7 +2413,7 @@ function Card({
2130
2413
  rounded = "lg",
2131
2414
  ...props
2132
2415
  }) {
2133
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2416
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2134
2417
  "div",
2135
2418
  {
2136
2419
  "data-slot": "card",
@@ -2144,7 +2427,7 @@ function Card({
2144
2427
  );
2145
2428
  }
2146
2429
  function CardHeader({ className, ...props }) {
2147
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2430
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2148
2431
  "div",
2149
2432
  {
2150
2433
  "data-slot": "card-header",
@@ -2157,7 +2440,7 @@ function CardHeader({ className, ...props }) {
2157
2440
  );
2158
2441
  }
2159
2442
  function CardTitle({ className, ...props }) {
2160
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2443
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2161
2444
  "div",
2162
2445
  {
2163
2446
  "data-slot": "card-title",
@@ -2167,7 +2450,7 @@ function CardTitle({ className, ...props }) {
2167
2450
  );
2168
2451
  }
2169
2452
  function CardContent({ className, ...props }) {
2170
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2453
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2171
2454
  "div",
2172
2455
  {
2173
2456
  "data-slot": "card-content",
@@ -2178,26 +2461,26 @@ function CardContent({ className, ...props }) {
2178
2461
  }
2179
2462
 
2180
2463
  // src/layout/basic/LoginLayout.tsx
2181
- var import_jsx_runtime14 = require("react/jsx-runtime");
2464
+ var import_jsx_runtime18 = require("react/jsx-runtime");
2182
2465
  function LoginLayout({
2183
2466
  variant = "center",
2184
2467
  brand,
2185
2468
  children
2186
2469
  }) {
2187
- 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: [
2188
2471
  brand.logo,
2189
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("h1", { className: "text-xl font-semibold", children: brand.title }),
2190
- 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 })
2191
2474
  ] });
2192
2475
  if (variant === "split") {
2193
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
2476
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
2194
2477
  "div",
2195
2478
  {
2196
2479
  "data-slot": "login-layout",
2197
2480
  "data-variant": "split",
2198
2481
  className: "grid min-h-screen grid-cols-2 bg-background text-foreground",
2199
2482
  children: [
2200
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
2483
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
2201
2484
  "div",
2202
2485
  {
2203
2486
  "data-slot": "login-brand-panel",
@@ -2205,7 +2488,7 @@ function LoginLayout({
2205
2488
  children: brandBlock
2206
2489
  }
2207
2490
  ),
2208
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
2491
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
2209
2492
  "div",
2210
2493
  {
2211
2494
  "data-slot": "login-form-panel",
@@ -2217,37 +2500,37 @@ function LoginLayout({
2217
2500
  }
2218
2501
  );
2219
2502
  }
2220
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
2503
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
2221
2504
  "div",
2222
2505
  {
2223
2506
  "data-slot": "login-layout",
2224
2507
  "data-variant": "center",
2225
2508
  className: "flex min-h-screen items-center justify-center bg-muted/40 text-foreground",
2226
- children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(Card, { "data-slot": "login-card", className: "w-full max-w-sm gap-4 py-6", children: [
2227
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(CardHeader, { className: "px-6", children: [
2228
- /* @__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 }),
2229
2512
  brandBlock
2230
2513
  ] }),
2231
- /* @__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 })
2232
2515
  ] })
2233
2516
  }
2234
2517
  );
2235
2518
  }
2236
2519
 
2237
2520
  // src/layout/basic/LandingLayout.tsx
2238
- var import_jsx_runtime15 = require("react/jsx-runtime");
2521
+ var import_jsx_runtime19 = require("react/jsx-runtime");
2239
2522
  function LandingLayout({
2240
2523
  navbar,
2241
2524
  footer,
2242
2525
  children
2243
2526
  }) {
2244
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
2527
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
2245
2528
  "div",
2246
2529
  {
2247
2530
  "data-slot": "landing-layout",
2248
2531
  className: "flex min-h-screen flex-col bg-background text-foreground",
2249
2532
  children: [
2250
- navbar !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2533
+ navbar !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2251
2534
  "header",
2252
2535
  {
2253
2536
  "data-slot": "landing-navbar",
@@ -2255,8 +2538,8 @@ function LandingLayout({
2255
2538
  children: navbar
2256
2539
  }
2257
2540
  ),
2258
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("main", { "data-slot": "landing-content", className: "flex-1", children }),
2259
- 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)(
2260
2543
  "footer",
2261
2544
  {
2262
2545
  "data-slot": "landing-footer",