@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.
- package/dist/{chunk-3PQOJRJD.js → chunk-7VDIDB3K.js} +886 -3357
- package/dist/{chunk-SD2XSQIP.js → chunk-B2Y6JC36.js} +285 -84
- package/dist/{chunk-T3TGKYAB.js → chunk-F7GQYNTG.js} +246 -476
- package/dist/{chunk-HU2RFIWH.js → chunk-OBSD66BK.js} +82 -7
- package/dist/{chunk-A6WUHUJL.js → chunk-RLAOCITX.js} +2 -2
- package/dist/{chunk-7OBUSV5S.js → chunk-YHTRCBKF.js} +184 -59
- package/dist/components/index.cjs +1258 -3614
- package/dist/components/index.d.cts +51 -849
- package/dist/components/index.d.ts +51 -849
- package/dist/components/index.js +9 -45
- package/dist/index.cjs +1663 -3944
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +18 -54
- package/dist/interaction/index.cjs +80 -5
- package/dist/interaction/index.d.cts +26 -0
- package/dist/interaction/index.d.ts +26 -0
- package/dist/interaction/index.js +1 -1
- package/dist/layout/index.cjs +437 -154
- package/dist/layout/index.js +3 -3
- package/dist/ui/index.cjs +1138 -560
- package/dist/ui/index.d.cts +219 -16
- package/dist/ui/index.d.ts +219 -16
- package/dist/ui/index.js +730 -53
- package/package.json +10 -8
- package/src/theme-bridge.css +54 -0
- package/styles.css +95 -182
package/dist/layout/index.cjs
CHANGED
|
@@ -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
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
1043
|
-
/* @__PURE__ */ (0,
|
|
1044
|
-
/* @__PURE__ */ (0,
|
|
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
|
|
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
|
|
1243
|
+
var import_lucide_react4 = require("lucide-react");
|
|
1082
1244
|
var import_class_variance_authority = require("class-variance-authority");
|
|
1083
|
-
var
|
|
1245
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
1084
1246
|
function Sheet({
|
|
1085
1247
|
...props
|
|
1086
1248
|
}) {
|
|
1087
|
-
return /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
1133
|
-
/* @__PURE__ */ (0,
|
|
1134
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
1155
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
1317
|
-
/* @__PURE__ */ (0,
|
|
1318
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
1523
|
-
/* @__PURE__ */ (0,
|
|
1524
|
-
/* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
1721
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_jsx_runtime13.Fragment, { children: renderer.renderChildren([content]) });
|
|
1560
1722
|
}
|
|
1561
|
-
return /* @__PURE__ */ (0,
|
|
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,
|
|
1572
|
-
brand.logo ? /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
1595
|
-
] }) }) : /* @__PURE__ */ (0,
|
|
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,
|
|
1759
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { children: labelNode })
|
|
1598
1760
|
] });
|
|
1599
|
-
return /* @__PURE__ */ (0,
|
|
1761
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(SidebarMenuItem, { children: [
|
|
1600
1762
|
button,
|
|
1601
|
-
item.children && item.children.length > 0 && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
1679
|
-
return /* @__PURE__ */ (0,
|
|
1680
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
1709
|
-
collapsible && !isMobile && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
1727
|
-
sidebarFooter !== void 0 && sidebarFooter !== null && /* @__PURE__ */ (0,
|
|
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,
|
|
1895
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SidebarContentSlot, { content: sidebarFooter })
|
|
1734
1896
|
}
|
|
1735
1897
|
)
|
|
1736
1898
|
]
|
|
1737
1899
|
}
|
|
1738
1900
|
),
|
|
1739
|
-
/* @__PURE__ */ (0,
|
|
1740
|
-
drawer && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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
|
|
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 [
|
|
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
|
-
|
|
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,
|
|
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,
|
|
1831
|
-
groupLabel !== void 0 && /* @__PURE__ */ (0,
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
1872
|
-
const
|
|
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
|
|
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":
|
|
2089
|
+
"aria-expanded": canToggle ? expanded : railDirectory ? flyoutOpen : void 0,
|
|
1892
2090
|
disabled: item.disabled,
|
|
1893
2091
|
className: cn(
|
|
1894
|
-
|
|
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
|
-
|
|
1898
|
-
item.disabled
|
|
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
|
-
|
|
1909
|
-
onSelect?.(item.key);
|
|
2111
|
+
if (canToggle) onToggle?.(item.key);
|
|
2112
|
+
return;
|
|
1910
2113
|
}
|
|
2114
|
+
onSelect?.(item.key);
|
|
1911
2115
|
},
|
|
1912
2116
|
children: [
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
|
|
1916
|
-
item.
|
|
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
|
-
|
|
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,
|
|
1939
|
-
railDirectory ? /* @__PURE__ */ (0,
|
|
1940
|
-
/* @__PURE__ */ (0,
|
|
1941
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
1959
|
-
item.children?.map((child) => /* @__PURE__ */ (0,
|
|
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,
|
|
1974
|
-
|
|
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
|
-
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
2190
|
-
brand.description !== void 0 && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
2227
|
-
/* @__PURE__ */ (0,
|
|
2228
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
2259
|
-
footer !== void 0 && /* @__PURE__ */ (0,
|
|
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",
|