@matteoaliano/forest-ui 1.2.3 → 1.2.5
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-NXIZI6F7.mjs → chunk-B5MZMBLL.mjs} +188 -107
- package/dist/chunk-B5MZMBLL.mjs.map +1 -0
- package/dist/index.d.mts +27 -6
- package/dist/index.d.ts +27 -6
- package/dist/index.js +504 -206
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +525 -308
- package/dist/index.mjs.map +1 -1
- package/dist/theme.d.mts +1 -0
- package/dist/theme.d.ts +1 -0
- package/dist/theme.js +187 -106
- package/dist/theme.js.map +1 -1
- package/dist/theme.mjs +1 -1
- package/package.json +1 -1
- package/skills/forest-alkemy-plus/SKILL.md +2 -2
- package/skills/forest-alkemy-plus/references/components.md +3 -3
- package/skills/forest-alkemy-plus/references/patterns.md +2 -1
- package/dist/chunk-NXIZI6F7.mjs.map +0 -1
package/dist/index.mjs
CHANGED
|
@@ -38,7 +38,7 @@ import {
|
|
|
38
38
|
toggleColors,
|
|
39
39
|
warning,
|
|
40
40
|
widths
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-B5MZMBLL.mjs";
|
|
42
42
|
|
|
43
43
|
// src/provider/ForestProvider.tsx
|
|
44
44
|
import { useMemo } from "react";
|
|
@@ -86,7 +86,7 @@ function Button({ variant = "contained", ...props }) {
|
|
|
86
86
|
// src/components/ButtonGroup/index.tsx
|
|
87
87
|
import MuiButtonGroup from "@mui/material/ButtonGroup";
|
|
88
88
|
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
89
|
-
function ButtonGroup({ variant = "
|
|
89
|
+
function ButtonGroup({ variant = "outlined", ...props }) {
|
|
90
90
|
return /* @__PURE__ */ jsx3(MuiButtonGroup, { variant, ...props });
|
|
91
91
|
}
|
|
92
92
|
|
|
@@ -838,15 +838,28 @@ var Logo = forwardRef(
|
|
|
838
838
|
Logo.displayName = "Logo";
|
|
839
839
|
|
|
840
840
|
// src/components/ToggleButton/index.tsx
|
|
841
|
+
import { createContext, useContext } from "react";
|
|
841
842
|
import MuiToggleButton from "@mui/material/ToggleButton";
|
|
842
|
-
import
|
|
843
|
+
import MuiToggleButtonGroup from "@mui/material/ToggleButtonGroup";
|
|
843
844
|
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
845
|
+
var ToggleButtonVariantContext = createContext(
|
|
846
|
+
void 0
|
|
847
|
+
);
|
|
848
|
+
function ToggleButtonGroup({
|
|
849
|
+
variant = "outlined",
|
|
850
|
+
...props
|
|
851
|
+
}) {
|
|
852
|
+
return /* @__PURE__ */ jsx10(ToggleButtonVariantContext.Provider, { value: variant, children: /* @__PURE__ */ jsx10(MuiToggleButtonGroup, { ...props }) });
|
|
853
|
+
}
|
|
844
854
|
function ToggleButton({
|
|
845
|
-
variant
|
|
855
|
+
variant,
|
|
846
856
|
className,
|
|
847
857
|
...props
|
|
848
858
|
}) {
|
|
849
|
-
|
|
859
|
+
var _a;
|
|
860
|
+
const groupVariant = useContext(ToggleButtonVariantContext);
|
|
861
|
+
const resolved = (_a = variant != null ? variant : groupVariant) != null ? _a : "outlined";
|
|
862
|
+
const cls = resolved === "outlined" ? ["ForestToggleButton-outlined", className].filter(Boolean).join(" ") : className;
|
|
850
863
|
return /* @__PURE__ */ jsx10(MuiToggleButton, { className: cls, ...props });
|
|
851
864
|
}
|
|
852
865
|
|
|
@@ -860,31 +873,31 @@ function DatePicker(props) {
|
|
|
860
873
|
}
|
|
861
874
|
|
|
862
875
|
// src/components/FormControl/index.tsx
|
|
863
|
-
import { default as
|
|
864
|
-
import { default as
|
|
865
|
-
import { default as
|
|
866
|
-
import { default as
|
|
867
|
-
import { default as
|
|
876
|
+
import { default as default10 } from "@mui/material/FormControl";
|
|
877
|
+
import { default as default11 } from "@mui/material/FormControlLabel";
|
|
878
|
+
import { default as default12 } from "@mui/material/FormGroup";
|
|
879
|
+
import { default as default13 } from "@mui/material/FormHelperText";
|
|
880
|
+
import { default as default14 } from "@mui/material/FormLabel";
|
|
868
881
|
|
|
869
882
|
// src/components/InputAdornment/index.tsx
|
|
870
|
-
import { default as
|
|
883
|
+
import { default as default15 } from "@mui/material/InputAdornment";
|
|
871
884
|
|
|
872
885
|
// src/components/InputBase/index.tsx
|
|
873
|
-
import { default as
|
|
886
|
+
import { default as default16 } from "@mui/material/InputBase";
|
|
874
887
|
|
|
875
888
|
// src/components/InputLabel/index.tsx
|
|
876
|
-
import { default as
|
|
889
|
+
import { default as default17 } from "@mui/material/InputLabel";
|
|
877
890
|
|
|
878
891
|
// src/components/OutlinedInput/index.tsx
|
|
879
|
-
import { default as
|
|
880
|
-
import { default as
|
|
892
|
+
import { default as default18 } from "@mui/material/OutlinedInput";
|
|
893
|
+
import { default as default19 } from "@mui/material/FilledInput";
|
|
881
894
|
|
|
882
895
|
// src/components/Avatar/index.tsx
|
|
883
|
-
import { default as
|
|
884
|
-
import { default as
|
|
896
|
+
import { default as default20 } from "@mui/material/Avatar";
|
|
897
|
+
import { default as default21 } from "@mui/material/AvatarGroup";
|
|
885
898
|
|
|
886
899
|
// src/components/Badge/index.tsx
|
|
887
|
-
import { default as
|
|
900
|
+
import { default as default22 } from "@mui/material/Badge";
|
|
888
901
|
|
|
889
902
|
// src/components/Chip/index.tsx
|
|
890
903
|
import MuiChip from "@mui/material/Chip";
|
|
@@ -958,36 +971,36 @@ function Chip({ color, deleteIcon = /* @__PURE__ */ jsx12(CloseIcon, {}), sx, ..
|
|
|
958
971
|
}
|
|
959
972
|
|
|
960
973
|
// src/components/Divider/index.tsx
|
|
961
|
-
import { default as
|
|
974
|
+
import { default as default23 } from "@mui/material/Divider";
|
|
962
975
|
|
|
963
976
|
// src/components/ImageList/index.tsx
|
|
964
|
-
import { default as
|
|
965
|
-
import { default as
|
|
966
|
-
import { default as
|
|
977
|
+
import { default as default24 } from "@mui/material/ImageList";
|
|
978
|
+
import { default as default25 } from "@mui/material/ImageListItem";
|
|
979
|
+
import { default as default26 } from "@mui/material/ImageListItemBar";
|
|
967
980
|
|
|
968
981
|
// src/components/List/index.tsx
|
|
969
|
-
import { default as
|
|
970
|
-
import { default as
|
|
971
|
-
import { default as
|
|
972
|
-
import { default as
|
|
973
|
-
import { default as
|
|
974
|
-
import { default as
|
|
975
|
-
import { default as
|
|
976
|
-
import { default as
|
|
982
|
+
import { default as default27 } from "@mui/material/List";
|
|
983
|
+
import { default as default28 } from "@mui/material/ListItem";
|
|
984
|
+
import { default as default29 } from "@mui/material/ListItemButton";
|
|
985
|
+
import { default as default30 } from "@mui/material/ListItemIcon";
|
|
986
|
+
import { default as default31 } from "@mui/material/ListItemText";
|
|
987
|
+
import { default as default32 } from "@mui/material/ListItemAvatar";
|
|
988
|
+
import { default as default33 } from "@mui/material/ListSubheader";
|
|
989
|
+
import { default as default34 } from "@mui/material/ListItemSecondaryAction";
|
|
977
990
|
|
|
978
991
|
// src/components/Rating/index.tsx
|
|
979
|
-
import { default as
|
|
992
|
+
import { default as default35 } from "@mui/material/Rating";
|
|
980
993
|
|
|
981
994
|
// src/components/Table/index.tsx
|
|
982
|
-
import { default as
|
|
983
|
-
import { default as
|
|
984
|
-
import { default as
|
|
985
|
-
import { default as
|
|
986
|
-
import { default as
|
|
987
|
-
import { default as
|
|
988
|
-
import { default as
|
|
989
|
-
import { default as
|
|
990
|
-
import { default as
|
|
995
|
+
import { default as default36 } from "@mui/material/Table";
|
|
996
|
+
import { default as default37 } from "@mui/material/TableBody";
|
|
997
|
+
import { default as default38 } from "@mui/material/TableCell";
|
|
998
|
+
import { default as default39 } from "@mui/material/TableContainer";
|
|
999
|
+
import { default as default40 } from "@mui/material/TableHead";
|
|
1000
|
+
import { default as default41 } from "@mui/material/TableRow";
|
|
1001
|
+
import { default as default42 } from "@mui/material/TableFooter";
|
|
1002
|
+
import { default as default43 } from "@mui/material/TablePagination";
|
|
1003
|
+
import { default as default44 } from "@mui/material/TableSortLabel";
|
|
991
1004
|
|
|
992
1005
|
// src/components/DataGrid/index.tsx
|
|
993
1006
|
import { DataGrid } from "@mui/x-data-grid";
|
|
@@ -1000,18 +1013,18 @@ function Tooltip({ arrow = true, ...props }) {
|
|
|
1000
1013
|
}
|
|
1001
1014
|
|
|
1002
1015
|
// src/components/Typography/index.tsx
|
|
1003
|
-
import { default as
|
|
1016
|
+
import { default as default45 } from "@mui/material/Typography";
|
|
1004
1017
|
|
|
1005
1018
|
// src/components/Accordion/index.tsx
|
|
1006
|
-
import { default as
|
|
1007
|
-
import { default as
|
|
1008
|
-
import { default as
|
|
1009
|
-
import { default as
|
|
1019
|
+
import { default as default46 } from "@mui/material/Accordion";
|
|
1020
|
+
import { default as default47 } from "@mui/material/AccordionSummary";
|
|
1021
|
+
import { default as default48 } from "@mui/material/AccordionDetails";
|
|
1022
|
+
import { default as default49 } from "@mui/material/AccordionActions";
|
|
1010
1023
|
|
|
1011
1024
|
// src/components/AppBar/index.tsx
|
|
1012
1025
|
import MuiButton3 from "@mui/material/Button";
|
|
1013
|
-
import { default as
|
|
1014
|
-
import { default as
|
|
1026
|
+
import { default as default50 } from "@mui/material/AppBar";
|
|
1027
|
+
import { default as default51 } from "@mui/material/Toolbar";
|
|
1015
1028
|
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
1016
1029
|
function AppBarNavItem({
|
|
1017
1030
|
label,
|
|
@@ -1068,10 +1081,10 @@ function AppBarNavItem({
|
|
|
1068
1081
|
|
|
1069
1082
|
// src/components/Card/index.tsx
|
|
1070
1083
|
import MuiCard from "@mui/material/Card";
|
|
1071
|
-
import { default as
|
|
1072
|
-
import { default as
|
|
1073
|
-
import { default as
|
|
1074
|
-
import { default as
|
|
1084
|
+
import { default as default52 } from "@mui/material/CardContent";
|
|
1085
|
+
import { default as default53 } from "@mui/material/CardHeader";
|
|
1086
|
+
import { default as default54 } from "@mui/material/CardActions";
|
|
1087
|
+
import { default as default55 } from "@mui/material/CardMedia";
|
|
1075
1088
|
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
1076
1089
|
function Card({ color = "primary", sx, ...props }) {
|
|
1077
1090
|
return /* @__PURE__ */ jsx15(
|
|
@@ -1079,7 +1092,12 @@ function Card({ color = "primary", sx, ...props }) {
|
|
|
1079
1092
|
{
|
|
1080
1093
|
...props,
|
|
1081
1094
|
sx: [
|
|
1082
|
-
color === "secondary" && {
|
|
1095
|
+
color === "secondary" && {
|
|
1096
|
+
backgroundColor: "background.paper",
|
|
1097
|
+
// Also hand the surface to a wrapped CardActionArea, which paints the
|
|
1098
|
+
// card's background itself (the Card goes transparent around one).
|
|
1099
|
+
"--forest-card-surface": "var(--mui-palette-background-paper)"
|
|
1100
|
+
},
|
|
1083
1101
|
...Array.isArray(sx) ? sx : [sx]
|
|
1084
1102
|
]
|
|
1085
1103
|
}
|
|
@@ -1087,42 +1105,42 @@ function Card({ color = "primary", sx, ...props }) {
|
|
|
1087
1105
|
}
|
|
1088
1106
|
|
|
1089
1107
|
// src/components/CardActionArea/index.tsx
|
|
1090
|
-
import { default as
|
|
1108
|
+
import { default as default56 } from "@mui/material/CardActionArea";
|
|
1091
1109
|
|
|
1092
1110
|
// src/components/Drawer/index.tsx
|
|
1093
1111
|
import MuiDrawer from "@mui/material/Drawer";
|
|
1094
|
-
import { default as
|
|
1112
|
+
import { default as default57 } from "@mui/material/SwipeableDrawer";
|
|
1095
1113
|
import { jsx as jsx16 } from "react/jsx-runtime";
|
|
1096
1114
|
function Drawer({ anchor = "right", hideBackdrop = true, ...props }) {
|
|
1097
1115
|
return /* @__PURE__ */ jsx16(MuiDrawer, { anchor, hideBackdrop, ...props });
|
|
1098
1116
|
}
|
|
1099
1117
|
|
|
1100
1118
|
// src/components/Paper/index.tsx
|
|
1101
|
-
import { default as
|
|
1119
|
+
import { default as default58 } from "@mui/material/Paper";
|
|
1102
1120
|
|
|
1103
1121
|
// src/components/Alert/index.tsx
|
|
1104
|
-
import { default as
|
|
1105
|
-
import { default as
|
|
1122
|
+
import { default as default59 } from "@mui/material/Alert";
|
|
1123
|
+
import { default as default60 } from "@mui/material/AlertTitle";
|
|
1106
1124
|
|
|
1107
1125
|
// src/components/Backdrop/index.tsx
|
|
1108
|
-
import { default as
|
|
1126
|
+
import { default as default61 } from "@mui/material/Backdrop";
|
|
1109
1127
|
|
|
1110
1128
|
// src/components/Dialog/index.tsx
|
|
1111
|
-
import { default as
|
|
1112
|
-
import { default as
|
|
1113
|
-
import { default as
|
|
1114
|
-
import { default as
|
|
1115
|
-
import { default as
|
|
1129
|
+
import { default as default62 } from "@mui/material/Dialog";
|
|
1130
|
+
import { default as default63 } from "@mui/material/DialogTitle";
|
|
1131
|
+
import { default as default64 } from "@mui/material/DialogContent";
|
|
1132
|
+
import { default as default65 } from "@mui/material/DialogActions";
|
|
1133
|
+
import { default as default66 } from "@mui/material/DialogContentText";
|
|
1116
1134
|
|
|
1117
1135
|
// src/components/Progress/index.tsx
|
|
1118
|
-
import { default as
|
|
1119
|
-
import { default as
|
|
1136
|
+
import { default as default67 } from "@mui/material/LinearProgress";
|
|
1137
|
+
import { default as default68 } from "@mui/material/CircularProgress";
|
|
1120
1138
|
|
|
1121
1139
|
// src/components/Skeleton/index.tsx
|
|
1122
|
-
import { default as
|
|
1140
|
+
import { default as default69 } from "@mui/material/Skeleton";
|
|
1123
1141
|
|
|
1124
1142
|
// src/components/Modal/index.tsx
|
|
1125
|
-
import { default as
|
|
1143
|
+
import { default as default70 } from "@mui/material/Modal";
|
|
1126
1144
|
|
|
1127
1145
|
// src/components/Popover/index.tsx
|
|
1128
1146
|
import MuiPopover from "@mui/material/Popover";
|
|
@@ -1144,57 +1162,57 @@ function Popover({ slotProps, ...props }) {
|
|
|
1144
1162
|
}
|
|
1145
1163
|
|
|
1146
1164
|
// src/components/Snackbar/index.tsx
|
|
1147
|
-
import { default as
|
|
1165
|
+
import { default as default71 } from "@mui/material/Snackbar";
|
|
1148
1166
|
|
|
1149
1167
|
// src/components/SnackbarContent/index.tsx
|
|
1150
|
-
import { default as
|
|
1168
|
+
import { default as default72 } from "@mui/material/SnackbarContent";
|
|
1151
1169
|
|
|
1152
1170
|
// src/components/BottomNavigation/index.tsx
|
|
1153
|
-
import { default as
|
|
1154
|
-
import { default as
|
|
1171
|
+
import { default as default73 } from "@mui/material/BottomNavigation";
|
|
1172
|
+
import { default as default74 } from "@mui/material/BottomNavigationAction";
|
|
1155
1173
|
|
|
1156
1174
|
// src/components/Breadcrumbs/index.tsx
|
|
1157
|
-
import { default as
|
|
1175
|
+
import { default as default75 } from "@mui/material/Breadcrumbs";
|
|
1158
1176
|
|
|
1159
1177
|
// src/components/Link/index.tsx
|
|
1160
|
-
import { default as
|
|
1178
|
+
import { default as default76 } from "@mui/material/Link";
|
|
1161
1179
|
|
|
1162
1180
|
// src/components/Menu/index.tsx
|
|
1163
|
-
import { default as
|
|
1164
|
-
import { default as
|
|
1181
|
+
import { default as default77 } from "@mui/material/Menu";
|
|
1182
|
+
import { default as default78 } from "@mui/material/MenuList";
|
|
1165
1183
|
|
|
1166
1184
|
// src/components/MobileStepper/index.tsx
|
|
1167
|
-
import { default as
|
|
1185
|
+
import { default as default79 } from "@mui/material/MobileStepper";
|
|
1168
1186
|
|
|
1169
1187
|
// src/components/Pagination/index.tsx
|
|
1170
|
-
import { default as
|
|
1188
|
+
import { default as default80 } from "@mui/material/Pagination";
|
|
1171
1189
|
|
|
1172
1190
|
// src/components/PaginationItem/index.tsx
|
|
1173
|
-
import { default as
|
|
1191
|
+
import { default as default81 } from "@mui/material/PaginationItem";
|
|
1174
1192
|
|
|
1175
1193
|
// src/components/SpeedDial/index.tsx
|
|
1176
|
-
import { default as
|
|
1177
|
-
import { default as
|
|
1178
|
-
import { default as
|
|
1194
|
+
import { default as default82 } from "@mui/material/SpeedDial";
|
|
1195
|
+
import { default as default83 } from "@mui/material/SpeedDialAction";
|
|
1196
|
+
import { default as default84 } from "@mui/material/SpeedDialIcon";
|
|
1179
1197
|
|
|
1180
1198
|
// src/components/Stepper/index.tsx
|
|
1181
|
-
import { default as
|
|
1182
|
-
import { default as
|
|
1183
|
-
import { default as
|
|
1184
|
-
import { default as
|
|
1185
|
-
import { default as
|
|
1186
|
-
import { default as
|
|
1187
|
-
import { default as
|
|
1199
|
+
import { default as default85 } from "@mui/material/Stepper";
|
|
1200
|
+
import { default as default86 } from "@mui/material/Step";
|
|
1201
|
+
import { default as default87 } from "@mui/material/StepLabel";
|
|
1202
|
+
import { default as default88 } from "@mui/material/StepButton";
|
|
1203
|
+
import { default as default89 } from "@mui/material/StepConnector";
|
|
1204
|
+
import { default as default90 } from "@mui/material/StepContent";
|
|
1205
|
+
import { default as default91 } from "@mui/material/StepIcon";
|
|
1188
1206
|
|
|
1189
1207
|
// src/components/Tabs/index.tsx
|
|
1190
|
-
import { default as
|
|
1191
|
-
import { default as
|
|
1208
|
+
import { default as default92 } from "@mui/material/Tabs";
|
|
1209
|
+
import { default as default93 } from "@mui/material/Tab";
|
|
1192
1210
|
|
|
1193
1211
|
// src/components/TabScrollButton/index.tsx
|
|
1194
|
-
import { default as
|
|
1212
|
+
import { default as default94 } from "@mui/material/TabScrollButton";
|
|
1195
1213
|
|
|
1196
1214
|
// src/components/Sidebar/index.tsx
|
|
1197
|
-
import { createContext, useContext } from "react";
|
|
1215
|
+
import { createContext as createContext2, useContext as useContext2, useEffect, useRef, useState as useState2 } from "react";
|
|
1198
1216
|
import MuiDrawer2 from "@mui/material/Drawer";
|
|
1199
1217
|
import Box2 from "@mui/material/Box";
|
|
1200
1218
|
import ChevronLeftOutlined from "@mui/icons-material/ChevronLeftOutlined";
|
|
@@ -1204,14 +1222,15 @@ import ListItemIcon from "@mui/material/ListItemIcon";
|
|
|
1204
1222
|
import ListItemText from "@mui/material/ListItemText";
|
|
1205
1223
|
import MuiTooltip2 from "@mui/material/Tooltip";
|
|
1206
1224
|
import { jsx as jsx18, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
1207
|
-
var SidebarContext =
|
|
1225
|
+
var SidebarContext = createContext2({
|
|
1208
1226
|
open: true,
|
|
1209
1227
|
collapsedWidth: 48,
|
|
1210
1228
|
expandedWidth: 240
|
|
1211
1229
|
});
|
|
1212
1230
|
function useSidebar() {
|
|
1213
|
-
return
|
|
1231
|
+
return useContext2(SidebarContext);
|
|
1214
1232
|
}
|
|
1233
|
+
var TOGGLE_SIZE = 28;
|
|
1215
1234
|
function SidebarNav({
|
|
1216
1235
|
open,
|
|
1217
1236
|
onOpenChange,
|
|
@@ -1222,6 +1241,7 @@ function SidebarNav({
|
|
|
1222
1241
|
children,
|
|
1223
1242
|
header,
|
|
1224
1243
|
footer,
|
|
1244
|
+
toggleEdgeAllowance = 12,
|
|
1225
1245
|
sx,
|
|
1226
1246
|
...rest
|
|
1227
1247
|
}) {
|
|
@@ -1229,6 +1249,60 @@ function SidebarNav({
|
|
|
1229
1249
|
const drawerWidth = open ? expandedWidth : collapsedWidth;
|
|
1230
1250
|
const layoutWidth = isHover ? collapsedWidth : drawerWidth;
|
|
1231
1251
|
const shouldShowToggle = showToggle != null ? showToggle : !isHover;
|
|
1252
|
+
const wrapperRef = useRef(null);
|
|
1253
|
+
const toggleRef = useRef(null);
|
|
1254
|
+
const edgeYRef = useRef(null);
|
|
1255
|
+
const [edgeActive, setEdgeActive] = useState2(false);
|
|
1256
|
+
const [toggleFocused, setToggleFocused] = useState2(false);
|
|
1257
|
+
const writeY = (y) => {
|
|
1258
|
+
edgeYRef.current = y;
|
|
1259
|
+
if (y === null) return;
|
|
1260
|
+
const el = toggleRef.current;
|
|
1261
|
+
if (!el) return;
|
|
1262
|
+
el.style.top = "0px";
|
|
1263
|
+
el.style.transform = `translate3d(50%, ${y - TOGGLE_SIZE / 2}px, 0)`;
|
|
1264
|
+
};
|
|
1265
|
+
const resetY = () => {
|
|
1266
|
+
edgeYRef.current = null;
|
|
1267
|
+
const el = toggleRef.current;
|
|
1268
|
+
if (!el) return;
|
|
1269
|
+
el.style.top = "";
|
|
1270
|
+
el.style.transform = "";
|
|
1271
|
+
};
|
|
1272
|
+
useEffect(() => {
|
|
1273
|
+
if (!shouldShowToggle) return;
|
|
1274
|
+
const onMove = (e) => {
|
|
1275
|
+
const el = wrapperRef.current;
|
|
1276
|
+
if (!el) return;
|
|
1277
|
+
const r = el.getBoundingClientRect();
|
|
1278
|
+
const withinBand = Math.abs(e.clientX - r.right) <= toggleEdgeAllowance && e.clientY >= r.top && e.clientY <= r.bottom;
|
|
1279
|
+
const half = TOGGLE_SIZE / 2;
|
|
1280
|
+
const cur = edgeYRef.current;
|
|
1281
|
+
const overToggle = cur !== null && Math.abs(e.clientX - r.right) <= half && Math.abs(e.clientY - (r.top + cur)) <= half;
|
|
1282
|
+
let next = null;
|
|
1283
|
+
if (withinBand || overToggle) {
|
|
1284
|
+
const max = Math.max(r.height - half, half);
|
|
1285
|
+
next = Math.min(Math.max(e.clientY - r.top, half), max);
|
|
1286
|
+
}
|
|
1287
|
+
const prev = edgeYRef.current;
|
|
1288
|
+
if (prev === next) return;
|
|
1289
|
+
if (prev !== null && next !== null && Math.abs(prev - next) < 0.5) return;
|
|
1290
|
+
writeY(next);
|
|
1291
|
+
if (prev === null !== (next === null)) setEdgeActive(next !== null);
|
|
1292
|
+
};
|
|
1293
|
+
const onLeave = () => {
|
|
1294
|
+
if (edgeYRef.current === null) return;
|
|
1295
|
+
writeY(null);
|
|
1296
|
+
setEdgeActive(false);
|
|
1297
|
+
};
|
|
1298
|
+
window.addEventListener("pointermove", onMove, { passive: true });
|
|
1299
|
+
document.addEventListener("pointerleave", onLeave);
|
|
1300
|
+
return () => {
|
|
1301
|
+
window.removeEventListener("pointermove", onMove);
|
|
1302
|
+
document.removeEventListener("pointerleave", onLeave);
|
|
1303
|
+
};
|
|
1304
|
+
}, [shouldShowToggle, toggleEdgeAllowance]);
|
|
1305
|
+
const toggleVisible = edgeActive || toggleFocused;
|
|
1232
1306
|
const hoverHandlers = isHover ? {
|
|
1233
1307
|
onMouseEnter: () => onOpenChange(true),
|
|
1234
1308
|
onMouseLeave: () => onOpenChange(false)
|
|
@@ -1236,6 +1310,7 @@ function SidebarNav({
|
|
|
1236
1310
|
return /* @__PURE__ */ jsx18(SidebarContext.Provider, { value: { open, collapsedWidth, expandedWidth }, children: /* @__PURE__ */ jsxs3(
|
|
1237
1311
|
Box2,
|
|
1238
1312
|
{
|
|
1313
|
+
ref: wrapperRef,
|
|
1239
1314
|
sx: {
|
|
1240
1315
|
position: "relative",
|
|
1241
1316
|
width: layoutWidth,
|
|
@@ -1243,7 +1318,13 @@ function SidebarNav({
|
|
|
1243
1318
|
// Match the drawer paper's width animation so the absolutely-
|
|
1244
1319
|
// positioned toggle (pinned to this box's right edge) glides with the
|
|
1245
1320
|
// sidebar instead of jumping. Constant in hover mode → no-op there.
|
|
1246
|
-
transition: "width 200ms ease-in-out"
|
|
1321
|
+
transition: "width 200ms ease-in-out",
|
|
1322
|
+
// A hover-expanded sidebar has to overlay the content, which in
|
|
1323
|
+
// AppShell sits at drawer + 1. This lives on the wrapper rather than
|
|
1324
|
+
// on `& .MuiDrawer-paper` because a consumer's `sx` replaces that
|
|
1325
|
+
// nested key wholesale (AppShell does). Only while expanded, so the
|
|
1326
|
+
// resting rail still takes the content surface's shadow.
|
|
1327
|
+
...isHover && open && { zIndex: (theme) => theme.zIndex.drawer + 2 }
|
|
1247
1328
|
},
|
|
1248
1329
|
children: [
|
|
1249
1330
|
/* @__PURE__ */ jsx18(
|
|
@@ -1259,8 +1340,7 @@ function SidebarNav({
|
|
|
1259
1340
|
width: drawerWidth,
|
|
1260
1341
|
transition: "width 200ms ease-in-out",
|
|
1261
1342
|
overflowX: "hidden",
|
|
1262
|
-
boxSizing: "border-box"
|
|
1263
|
-
...isHover && { zIndex: (theme) => theme.zIndex.drawer + 2 }
|
|
1343
|
+
boxSizing: "border-box"
|
|
1264
1344
|
},
|
|
1265
1345
|
...sx
|
|
1266
1346
|
},
|
|
@@ -1275,53 +1355,113 @@ function SidebarNav({
|
|
|
1275
1355
|
},
|
|
1276
1356
|
children: [
|
|
1277
1357
|
header && /* @__PURE__ */ jsx18(Box2, { sx: { flexShrink: 0 }, children: header }),
|
|
1278
|
-
/* @__PURE__ */ jsx18(
|
|
1358
|
+
/* @__PURE__ */ jsx18(
|
|
1359
|
+
Box2,
|
|
1360
|
+
{
|
|
1361
|
+
sx: {
|
|
1362
|
+
flexGrow: 1,
|
|
1363
|
+
overflowY: "auto",
|
|
1364
|
+
overflowX: "hidden",
|
|
1365
|
+
px: 1,
|
|
1366
|
+
"& > .MuiList-root": { paddingInline: 0 }
|
|
1367
|
+
},
|
|
1368
|
+
children
|
|
1369
|
+
}
|
|
1370
|
+
),
|
|
1279
1371
|
footer && /* @__PURE__ */ jsx18(Box2, { sx: { flexShrink: 0 }, children: footer })
|
|
1280
1372
|
]
|
|
1281
1373
|
}
|
|
1282
1374
|
)
|
|
1283
1375
|
}
|
|
1284
1376
|
),
|
|
1285
|
-
shouldShowToggle && //
|
|
1286
|
-
//
|
|
1287
|
-
//
|
|
1288
|
-
//
|
|
1377
|
+
shouldShowToggle && // Positioning shell: pinned to the wrapper's top-right, moved down the
|
|
1378
|
+
// edge with a transform written by the pointermove handler (see
|
|
1379
|
+
// `writeY`). Only opacity transitions — position snaps to the pointer
|
|
1380
|
+
// so the toggle appears under the cursor and tracks it 1:1.
|
|
1289
1381
|
/* @__PURE__ */ jsx18(
|
|
1290
|
-
|
|
1382
|
+
Box2,
|
|
1291
1383
|
{
|
|
1292
|
-
|
|
1293
|
-
onClick: () => onOpenChange(!open),
|
|
1384
|
+
ref: toggleRef,
|
|
1294
1385
|
sx: (theme) => ({
|
|
1295
1386
|
position: "absolute",
|
|
1296
|
-
top: "50%",
|
|
1297
1387
|
right: 0,
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
//
|
|
1311
|
-
|
|
1312
|
-
"
|
|
1313
|
-
|
|
1388
|
+
width: TOGGLE_SIZE,
|
|
1389
|
+
height: TOGGLE_SIZE,
|
|
1390
|
+
// Resting spot for keyboard focus and touch, where no pointer
|
|
1391
|
+
// sets a transform: vertically centred on the edge. `writeY`
|
|
1392
|
+
// overrides both `top` and `transform` inline while tracking
|
|
1393
|
+
// and leaves them in place on hide so the exit fades in situ.
|
|
1394
|
+
top: "50%",
|
|
1395
|
+
transform: "translate3d(50%, -50%, 0)",
|
|
1396
|
+
// Hidden until the pointer reaches the edge band. Kept mounted so
|
|
1397
|
+
// it stays in the tab order and can be reached by keyboard.
|
|
1398
|
+
opacity: toggleVisible ? 1 : 0,
|
|
1399
|
+
pointerEvents: toggleVisible ? "auto" : "none",
|
|
1400
|
+
// Enter fast with a strong ease-out so it reads as "already
|
|
1401
|
+
// there"; exit a touch shorter — the user has moved on.
|
|
1402
|
+
transition: toggleVisible ? "opacity 120ms cubic-bezier(0.19, 1, 0.22, 1)" : "opacity 100ms ease",
|
|
1403
|
+
"@media (prefers-reduced-motion: reduce)": {
|
|
1404
|
+
transition: "none"
|
|
1314
1405
|
},
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1406
|
+
// No hover on touch: there is no pointer to bring the toggle out,
|
|
1407
|
+
// so it stays visible at its resting position.
|
|
1408
|
+
"@media (hover: none)": {
|
|
1409
|
+
opacity: 1,
|
|
1410
|
+
pointerEvents: "auto"
|
|
1411
|
+
},
|
|
1412
|
+
// Above both the AppShell content surface (drawer + 1, which
|
|
1413
|
+
// paints its shadow over the sidebar) and the hover-expanded
|
|
1414
|
+
// drawer (drawer + 2) — the toggle straddles the seam and has
|
|
1415
|
+
// to stay clickable and whole on top of both.
|
|
1416
|
+
zIndex: theme.zIndex.drawer + 3
|
|
1323
1417
|
}),
|
|
1324
|
-
children:
|
|
1418
|
+
children: /* @__PURE__ */ jsx18(
|
|
1419
|
+
Button,
|
|
1420
|
+
{
|
|
1421
|
+
"aria-label": open ? "Collapse sidebar" : "Expand sidebar",
|
|
1422
|
+
onClick: (e) => {
|
|
1423
|
+
onOpenChange(!open);
|
|
1424
|
+
writeY(null);
|
|
1425
|
+
setEdgeActive(false);
|
|
1426
|
+
if (!e.currentTarget.matches(":focus-visible")) {
|
|
1427
|
+
e.currentTarget.blur();
|
|
1428
|
+
}
|
|
1429
|
+
},
|
|
1430
|
+
onFocus: (e) => {
|
|
1431
|
+
const kb = e.currentTarget.matches(":focus-visible");
|
|
1432
|
+
if (kb) resetY();
|
|
1433
|
+
setToggleFocused(kb);
|
|
1434
|
+
},
|
|
1435
|
+
onBlur: () => setToggleFocused(false),
|
|
1436
|
+
sx: (theme) => ({
|
|
1437
|
+
minWidth: 0,
|
|
1438
|
+
width: TOGGLE_SIZE,
|
|
1439
|
+
height: TOGGLE_SIZE,
|
|
1440
|
+
padding: 0,
|
|
1441
|
+
transition: "background-color 300ms ease",
|
|
1442
|
+
// Match the shell surface (bg.primary = lightest grey) so the
|
|
1443
|
+
// toggle reads as part of the sidebar, not a darker chip.
|
|
1444
|
+
backgroundColor: `var(--mui-palette-bg-primary, ${bg.primary})`,
|
|
1445
|
+
color: `var(--mui-palette-text-primary, ${text.primary})`,
|
|
1446
|
+
// Light-grey standard border instead of the contained bevel's
|
|
1447
|
+
// darker greyscale (fg.tertiary) — the toggle is a light
|
|
1448
|
+
// utility control, so the heavier border read too dark.
|
|
1449
|
+
borderColor: `var(--mui-palette-border-primary, ${border.primary})`,
|
|
1450
|
+
"& .MuiSvgIcon-root": {
|
|
1451
|
+
fontSize: 18
|
|
1452
|
+
},
|
|
1453
|
+
"&:hover": {
|
|
1454
|
+
backgroundColor: `var(--mui-palette-bg-quaternary, ${bg.quaternary})`,
|
|
1455
|
+
// The contained brightness lift assumes a dark face — on the
|
|
1456
|
+
// light-grey light-mode face it would blow out. In dark the
|
|
1457
|
+
// hover token matches the face, so a small lift is the cue.
|
|
1458
|
+
filter: "none",
|
|
1459
|
+
...theme.applyStyles("dark", { filter: "brightness(1.15)" })
|
|
1460
|
+
}
|
|
1461
|
+
}),
|
|
1462
|
+
children: open ? /* @__PURE__ */ jsx18(ChevronLeftOutlined, {}) : /* @__PURE__ */ jsx18(ChevronRightOutlined, {})
|
|
1463
|
+
}
|
|
1464
|
+
)
|
|
1325
1465
|
}
|
|
1326
1466
|
)
|
|
1327
1467
|
]
|
|
@@ -1329,8 +1469,13 @@ function SidebarNav({
|
|
|
1329
1469
|
) });
|
|
1330
1470
|
}
|
|
1331
1471
|
var itemSx = {
|
|
1332
|
-
//
|
|
1333
|
-
|
|
1472
|
+
// Off-scale on purpose: the alkemy+ preset's radius steps run 1→12, so 11px
|
|
1473
|
+
// sits between "3xl" (10) and "4xl" (12) with no token to name it.
|
|
1474
|
+
borderRadius: "11px",
|
|
1475
|
+
// The MuiListItemButton override sets 12px; 8px here absorbs the container's
|
|
1476
|
+
// new 8px gutter so the icon column stays exactly 16px from the sidebar edge,
|
|
1477
|
+
// where it has always been.
|
|
1478
|
+
paddingInline: "8px",
|
|
1334
1479
|
// 4px gap between stacked items, independent of the container (List/flex).
|
|
1335
1480
|
marginBottom: "4px",
|
|
1336
1481
|
"&:last-of-type": { marginBottom: 0 },
|
|
@@ -1392,7 +1537,7 @@ function SidebarItem({
|
|
|
1392
1537
|
}
|
|
1393
1538
|
|
|
1394
1539
|
// src/components/AppShell/index.tsx
|
|
1395
|
-
import { useState as
|
|
1540
|
+
import { useState as useState3 } from "react";
|
|
1396
1541
|
import Box3 from "@mui/material/Box";
|
|
1397
1542
|
import MuiDrawer3 from "@mui/material/Drawer";
|
|
1398
1543
|
import List from "@mui/material/List";
|
|
@@ -1443,8 +1588,8 @@ function AppShell({
|
|
|
1443
1588
|
}) {
|
|
1444
1589
|
const theme = useTheme();
|
|
1445
1590
|
const isMobile = useMediaQuery(theme.breakpoints.down("sm"));
|
|
1446
|
-
const [sidebarOpen, setSidebarOpen] =
|
|
1447
|
-
const [mobileOpen, setMobileOpen] =
|
|
1591
|
+
const [sidebarOpen, setSidebarOpen] = useState3(defaultSidebarOpen);
|
|
1592
|
+
const [mobileOpen, setMobileOpen] = useState3(false);
|
|
1448
1593
|
const navContent = nav != null ? nav : navItems && /* @__PURE__ */ jsx19(List, { children: navItems.map(({ label, icon, active, endAdornment, ...link }) => /* @__PURE__ */ jsx19(
|
|
1449
1594
|
SidebarItem,
|
|
1450
1595
|
{
|
|
@@ -1458,63 +1603,135 @@ function AppShell({
|
|
|
1458
1603
|
)) });
|
|
1459
1604
|
const brandEl = brand != null ? brand : /* @__PURE__ */ jsx19(ShellBrand, { product, logoVariant });
|
|
1460
1605
|
const wrapLogomark = !brand && logoVariant === "logomark" && !isMobile;
|
|
1461
|
-
return
|
|
1462
|
-
|
|
1463
|
-
|
|
1606
|
+
return (
|
|
1607
|
+
// Clipping lives here rather than on the body row below, so the content
|
|
1608
|
+
// surface's shadow can spill up over the AppBar instead of being cut off
|
|
1609
|
+
// at the row's top edge.
|
|
1610
|
+
/* @__PURE__ */ jsxs4(
|
|
1611
|
+
Box3,
|
|
1464
1612
|
{
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1613
|
+
sx: {
|
|
1614
|
+
display: "flex",
|
|
1615
|
+
flexDirection: "column",
|
|
1616
|
+
height: "100vh",
|
|
1617
|
+
overflow: "hidden",
|
|
1618
|
+
// The chrome fill belongs here, not only on the AppBar and Drawer.
|
|
1619
|
+
// `main`'s rounded top-left corner clips its own background, and the
|
|
1620
|
+
// notch between that arc and the square box corner is reached by
|
|
1621
|
+
// neither the bar nor the sidebar — so without this, whatever sits
|
|
1622
|
+
// behind the shell shows through it. Storybook's docs container is
|
|
1623
|
+
// white, which is exactly how it surfaced.
|
|
1624
|
+
backgroundColor: "background.default"
|
|
1625
|
+
},
|
|
1626
|
+
children: [
|
|
1627
|
+
/* @__PURE__ */ jsx19(
|
|
1628
|
+
default50,
|
|
1629
|
+
{
|
|
1630
|
+
position: "sticky",
|
|
1631
|
+
elevation: 0,
|
|
1632
|
+
sx: { zIndex: theme.zIndex.drawer + 1, borderBottom: "none" },
|
|
1633
|
+
children: /* @__PURE__ */ jsxs4(default51, { variant: "dense", sx: { px: { xs: "16px", sm: "16px" } }, children: [
|
|
1634
|
+
/* @__PURE__ */ jsxs4(Box3, { sx: { flex: 1, display: "flex", alignItems: "center", justifyContent: "flex-start", gap: 1 }, children: [
|
|
1635
|
+
isMobile && /* @__PURE__ */ jsx19(
|
|
1636
|
+
IconButton2,
|
|
1637
|
+
{
|
|
1638
|
+
variant: "icon",
|
|
1639
|
+
size: "small",
|
|
1640
|
+
color: "inherit",
|
|
1641
|
+
"aria-label": "Open navigation",
|
|
1642
|
+
onClick: () => setMobileOpen(true),
|
|
1643
|
+
children: /* @__PURE__ */ jsx19(MenuOutlined, { fontSize: "small" })
|
|
1644
|
+
}
|
|
1645
|
+
),
|
|
1646
|
+
wrapLogomark ? /* @__PURE__ */ jsx19(Box3, { sx: { width: 48, ml: "-16px", display: "flex", justifyContent: "center" }, children: brandEl }) : brandEl
|
|
1647
|
+
] }),
|
|
1648
|
+
/* @__PURE__ */ jsx19(Box3, { sx: { flex: 1, display: "flex", justifyContent: "center" }, children: search === true ? /* @__PURE__ */ jsx19(Search, { size: "small", placeholder: "Search\u2026", sx: { width: "100%", maxWidth: 480 } }) : search || null }),
|
|
1649
|
+
/* @__PURE__ */ jsxs4(Box3, { sx: { flex: 1, display: "flex", alignItems: "center", justifyContent: "flex-end", gap: 1 }, children: [
|
|
1650
|
+
/* @__PURE__ */ jsx19(ColorModeToggle, {}),
|
|
1651
|
+
actions
|
|
1652
|
+
] })
|
|
1653
|
+
] })
|
|
1654
|
+
}
|
|
1655
|
+
),
|
|
1656
|
+
/* @__PURE__ */ jsxs4(Box3, { sx: { display: "flex", flexGrow: 1, minHeight: 0 }, children: [
|
|
1657
|
+
!isMobile && navContent && /* @__PURE__ */ jsx19(
|
|
1658
|
+
SidebarNav,
|
|
1472
1659
|
{
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1660
|
+
open: sidebarOpen,
|
|
1661
|
+
onOpenChange: setSidebarOpen,
|
|
1662
|
+
behavior: sidebarBehavior,
|
|
1663
|
+
sx: {
|
|
1664
|
+
height: "100%",
|
|
1665
|
+
"& .MuiDrawer-paper": {
|
|
1666
|
+
position: "relative",
|
|
1667
|
+
height: "100%",
|
|
1668
|
+
// Same reason as the AppBar's border: the chrome is one piece.
|
|
1669
|
+
borderRight: "none"
|
|
1670
|
+
}
|
|
1671
|
+
},
|
|
1672
|
+
children: navContent
|
|
1479
1673
|
}
|
|
1480
1674
|
),
|
|
1481
|
-
|
|
1675
|
+
/* @__PURE__ */ jsx19(
|
|
1676
|
+
Box3,
|
|
1677
|
+
{
|
|
1678
|
+
component: "main",
|
|
1679
|
+
sx: (t) => ({
|
|
1680
|
+
flexGrow: 1,
|
|
1681
|
+
overflow: "auto",
|
|
1682
|
+
backgroundColor: "background.paper",
|
|
1683
|
+
// Lift the surface above the chrome so its shadow lands ON the
|
|
1684
|
+
// sidebar and the AppBar rather than under them. Level with the
|
|
1685
|
+
// AppBar and later in the DOM, so it wins there; the hover
|
|
1686
|
+
// sidebar sits a level higher still and keeps overlaying content.
|
|
1687
|
+
position: "relative",
|
|
1688
|
+
zIndex: t.zIndex.drawer + 1,
|
|
1689
|
+
// Longhands, not `borderTop: "1px solid"` — the shorthand resets
|
|
1690
|
+
// border-*-color to currentColor and the hairline renders as text
|
|
1691
|
+
// black however `borderColor` is ordered around it.
|
|
1692
|
+
borderStyle: "solid",
|
|
1693
|
+
borderColor: "divider",
|
|
1694
|
+
borderTopWidth: "1px",
|
|
1695
|
+
borderRightWidth: 0,
|
|
1696
|
+
borderBottomWidth: 0,
|
|
1697
|
+
borderTopLeftRadius: `${container.shellRadius}px`,
|
|
1698
|
+
// With no sidebar below "sm" a single left corner reads lopsided,
|
|
1699
|
+
// so the surface rounds both top corners and drops the left edge.
|
|
1700
|
+
borderLeftWidth: { xs: 0, sm: "1px" },
|
|
1701
|
+
borderTopRightRadius: { xs: `${container.shellRadius}px`, sm: 0 },
|
|
1702
|
+
// Up-and-left, so the lift falls onto the chrome. In dark the
|
|
1703
|
+
// surface is already a step lighter than the chrome and does most
|
|
1704
|
+
// of the lifting itself, so the shadow only has to seat the edge.
|
|
1705
|
+
// Wide and low-contrast rather than tight and dark — a diffuse
|
|
1706
|
+
// falloff reads as lift without drawing a line.
|
|
1707
|
+
boxShadow: "-2px -2px 20px -16px #1018281a, -1px -1px 6px -3px #1018281c",
|
|
1708
|
+
// Dark keeps the same `divider` hairline as light — gray-900 on
|
|
1709
|
+
// gray-950 is only a ~15-level tonal step, so the line still does
|
|
1710
|
+
// the work of defining the edge. Only the shadow changes: one
|
|
1711
|
+
// contact layer, since the surface being lighter than the chrome
|
|
1712
|
+
// already reads as raised.
|
|
1713
|
+
...t.applyStyles("dark", {
|
|
1714
|
+
boxShadow: "-1px -1px 6px -3px #00000059"
|
|
1715
|
+
})
|
|
1716
|
+
}),
|
|
1717
|
+
children
|
|
1718
|
+
}
|
|
1719
|
+
)
|
|
1482
1720
|
] }),
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
{
|
|
1495
|
-
open: sidebarOpen,
|
|
1496
|
-
onOpenChange: setSidebarOpen,
|
|
1497
|
-
behavior: sidebarBehavior,
|
|
1498
|
-
sx: {
|
|
1499
|
-
height: "100%",
|
|
1500
|
-
"& .MuiDrawer-paper": { position: "relative", height: "100%" }
|
|
1501
|
-
},
|
|
1502
|
-
children: navContent
|
|
1503
|
-
}
|
|
1504
|
-
),
|
|
1505
|
-
/* @__PURE__ */ jsx19(Box3, { component: "main", sx: { flexGrow: 1, overflow: "auto" }, children })
|
|
1506
|
-
] }),
|
|
1507
|
-
isMobile && navContent && /* @__PURE__ */ jsx19(
|
|
1508
|
-
MuiDrawer3,
|
|
1509
|
-
{
|
|
1510
|
-
open: mobileOpen,
|
|
1511
|
-
onClose: () => setMobileOpen(false),
|
|
1512
|
-
onClick: () => setMobileOpen(false),
|
|
1513
|
-
sx: { "& .MuiDrawer-paper": { width: 240 } },
|
|
1514
|
-
children: navContent
|
|
1721
|
+
isMobile && navContent && /* @__PURE__ */ jsx19(
|
|
1722
|
+
MuiDrawer3,
|
|
1723
|
+
{
|
|
1724
|
+
open: mobileOpen,
|
|
1725
|
+
onClose: () => setMobileOpen(false),
|
|
1726
|
+
onClick: () => setMobileOpen(false),
|
|
1727
|
+
sx: { "& .MuiDrawer-paper": { width: 240 } },
|
|
1728
|
+
children: navContent
|
|
1729
|
+
}
|
|
1730
|
+
)
|
|
1731
|
+
]
|
|
1515
1732
|
}
|
|
1516
1733
|
)
|
|
1517
|
-
|
|
1734
|
+
);
|
|
1518
1735
|
}
|
|
1519
1736
|
|
|
1520
1737
|
// src/components/Page/index.tsx
|
|
@@ -1600,58 +1817,58 @@ function Page({
|
|
|
1600
1817
|
}
|
|
1601
1818
|
|
|
1602
1819
|
// src/components/Box/index.tsx
|
|
1603
|
-
import { default as
|
|
1820
|
+
import { default as default95 } from "@mui/material/Box";
|
|
1604
1821
|
|
|
1605
1822
|
// src/components/Stack/index.tsx
|
|
1606
|
-
import { default as
|
|
1823
|
+
import { default as default96 } from "@mui/material/Stack";
|
|
1607
1824
|
|
|
1608
1825
|
// src/components/Grid/index.tsx
|
|
1609
|
-
import { default as
|
|
1826
|
+
import { default as default97 } from "@mui/material/Grid";
|
|
1610
1827
|
|
|
1611
1828
|
// src/components/Container/index.tsx
|
|
1612
|
-
import { default as
|
|
1829
|
+
import { default as default98 } from "@mui/material/Container";
|
|
1613
1830
|
|
|
1614
1831
|
// src/components/Collapse/index.tsx
|
|
1615
|
-
import { default as
|
|
1832
|
+
import { default as default99 } from "@mui/material/Collapse";
|
|
1616
1833
|
|
|
1617
1834
|
// src/components/Fade/index.tsx
|
|
1618
|
-
import { default as
|
|
1835
|
+
import { default as default100 } from "@mui/material/Fade";
|
|
1619
1836
|
|
|
1620
1837
|
// src/components/Grow/index.tsx
|
|
1621
|
-
import { default as
|
|
1838
|
+
import { default as default101 } from "@mui/material/Grow";
|
|
1622
1839
|
|
|
1623
1840
|
// src/components/Slide/index.tsx
|
|
1624
|
-
import { default as
|
|
1841
|
+
import { default as default102 } from "@mui/material/Slide";
|
|
1625
1842
|
|
|
1626
1843
|
// src/components/Zoom/index.tsx
|
|
1627
|
-
import { default as
|
|
1844
|
+
import { default as default103 } from "@mui/material/Zoom";
|
|
1628
1845
|
|
|
1629
1846
|
// src/components/ButtonBase/index.tsx
|
|
1630
|
-
import { default as
|
|
1847
|
+
import { default as default104 } from "@mui/material/ButtonBase";
|
|
1631
1848
|
|
|
1632
1849
|
// src/components/ClickAwayListener/index.tsx
|
|
1633
|
-
import { default as
|
|
1850
|
+
import { default as default105 } from "@mui/material/ClickAwayListener";
|
|
1634
1851
|
|
|
1635
1852
|
// src/components/GlobalStyles/index.tsx
|
|
1636
|
-
import { default as
|
|
1853
|
+
import { default as default106 } from "@mui/material/GlobalStyles";
|
|
1637
1854
|
|
|
1638
1855
|
// src/components/NoSsr/index.tsx
|
|
1639
|
-
import { default as
|
|
1856
|
+
import { default as default107 } from "@mui/material/NoSsr";
|
|
1640
1857
|
|
|
1641
1858
|
// src/components/Popper/index.tsx
|
|
1642
|
-
import { default as
|
|
1859
|
+
import { default as default108 } from "@mui/material/Popper";
|
|
1643
1860
|
|
|
1644
1861
|
// src/components/Portal/index.tsx
|
|
1645
|
-
import { default as
|
|
1862
|
+
import { default as default109 } from "@mui/material/Portal";
|
|
1646
1863
|
|
|
1647
1864
|
// src/components/Slider/index.tsx
|
|
1648
|
-
import { default as
|
|
1865
|
+
import { default as default110 } from "@mui/material/Slider";
|
|
1649
1866
|
|
|
1650
1867
|
// src/components/SvgIcon/index.tsx
|
|
1651
|
-
import { default as
|
|
1868
|
+
import { default as default111 } from "@mui/material/SvgIcon";
|
|
1652
1869
|
|
|
1653
1870
|
// src/components/TextareaAutosize/index.tsx
|
|
1654
|
-
import { default as
|
|
1871
|
+
import { default as default112 } from "@mui/material/TextareaAutosize";
|
|
1655
1872
|
|
|
1656
1873
|
// src/components/Charts/LineChart.tsx
|
|
1657
1874
|
import {
|
|
@@ -2216,43 +2433,43 @@ import { useScrollTrigger } from "@mui/material";
|
|
|
2216
2433
|
import { useFormControl } from "@mui/material";
|
|
2217
2434
|
import { useTheme as useTheme9 } from "@mui/material";
|
|
2218
2435
|
export {
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2436
|
+
default46 as Accordion,
|
|
2437
|
+
default49 as AccordionActions,
|
|
2438
|
+
default48 as AccordionDetails,
|
|
2439
|
+
default47 as AccordionSummary,
|
|
2440
|
+
default59 as Alert,
|
|
2441
|
+
default60 as AlertTitle,
|
|
2225
2442
|
AnimatedArea,
|
|
2226
2443
|
AnimatedLine,
|
|
2227
|
-
|
|
2444
|
+
default50 as AppBar,
|
|
2228
2445
|
AppBarNavItem,
|
|
2229
2446
|
AppShell,
|
|
2230
2447
|
AreaElement,
|
|
2231
2448
|
AreaElementPath,
|
|
2232
2449
|
AreaPlot,
|
|
2233
2450
|
default2 as Autocomplete,
|
|
2234
|
-
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
|
|
2451
|
+
default20 as Avatar,
|
|
2452
|
+
default21 as AvatarGroup,
|
|
2453
|
+
default61 as Backdrop,
|
|
2454
|
+
default22 as Badge,
|
|
2238
2455
|
BarChart,
|
|
2239
2456
|
BarElement,
|
|
2240
2457
|
BarElementPath,
|
|
2241
2458
|
BarLabel,
|
|
2242
2459
|
BarPlot,
|
|
2243
|
-
|
|
2244
|
-
|
|
2245
|
-
|
|
2246
|
-
|
|
2460
|
+
default73 as BottomNavigation,
|
|
2461
|
+
default74 as BottomNavigationAction,
|
|
2462
|
+
default95 as Box,
|
|
2463
|
+
default75 as Breadcrumbs,
|
|
2247
2464
|
Button,
|
|
2248
|
-
|
|
2465
|
+
default104 as ButtonBase,
|
|
2249
2466
|
ButtonGroup,
|
|
2250
2467
|
Card,
|
|
2251
|
-
|
|
2252
|
-
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
|
|
2468
|
+
default56 as CardActionArea,
|
|
2469
|
+
default54 as CardActions,
|
|
2470
|
+
default52 as CardContent,
|
|
2471
|
+
default53 as CardHeader,
|
|
2472
|
+
default55 as CardMedia,
|
|
2256
2473
|
ChartContainer,
|
|
2257
2474
|
ChartsAxis,
|
|
2258
2475
|
ChartsAxisHighlight,
|
|
@@ -2277,81 +2494,81 @@ export {
|
|
|
2277
2494
|
ChartsYAxis,
|
|
2278
2495
|
default3 as Checkbox,
|
|
2279
2496
|
Chip,
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
2283
|
-
|
|
2497
|
+
default68 as CircularProgress,
|
|
2498
|
+
default105 as ClickAwayListener,
|
|
2499
|
+
default99 as Collapse,
|
|
2500
|
+
default98 as Container,
|
|
2284
2501
|
ContinuousColorLegend,
|
|
2285
2502
|
DataGrid,
|
|
2286
2503
|
DatePicker,
|
|
2287
2504
|
DefaultChartsAxisTooltipContent,
|
|
2288
2505
|
DefaultChartsItemTooltipContent,
|
|
2289
2506
|
DefaultChartsLegend,
|
|
2290
|
-
|
|
2291
|
-
|
|
2292
|
-
|
|
2293
|
-
|
|
2294
|
-
|
|
2295
|
-
|
|
2507
|
+
default62 as Dialog,
|
|
2508
|
+
default65 as DialogActions,
|
|
2509
|
+
default64 as DialogContent,
|
|
2510
|
+
default66 as DialogContentText,
|
|
2511
|
+
default63 as DialogTitle,
|
|
2512
|
+
default23 as Divider,
|
|
2296
2513
|
Drawer,
|
|
2297
2514
|
Fab,
|
|
2298
|
-
|
|
2299
|
-
|
|
2515
|
+
default100 as Fade,
|
|
2516
|
+
default19 as FilledInput,
|
|
2300
2517
|
ForestProvider,
|
|
2301
|
-
|
|
2302
|
-
|
|
2303
|
-
|
|
2304
|
-
|
|
2305
|
-
|
|
2518
|
+
default10 as FormControl,
|
|
2519
|
+
default11 as FormControlLabel,
|
|
2520
|
+
default12 as FormGroup,
|
|
2521
|
+
default13 as FormHelperText,
|
|
2522
|
+
default14 as FormLabel,
|
|
2306
2523
|
Gauge,
|
|
2307
2524
|
GaugeContainer,
|
|
2308
2525
|
GaugeReferenceArc,
|
|
2309
2526
|
GaugeValueArc,
|
|
2310
2527
|
GaugeValueText,
|
|
2311
|
-
|
|
2312
|
-
|
|
2313
|
-
|
|
2528
|
+
default106 as GlobalStyles,
|
|
2529
|
+
default97 as Grid,
|
|
2530
|
+
default101 as Grow,
|
|
2314
2531
|
HighlightedProvider,
|
|
2315
2532
|
IconButton2 as IconButton,
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2533
|
+
default24 as ImageList,
|
|
2534
|
+
default25 as ImageListItem,
|
|
2535
|
+
default26 as ImageListItemBar,
|
|
2319
2536
|
InitColorSchemeScript,
|
|
2320
2537
|
default9 as Input,
|
|
2321
|
-
|
|
2322
|
-
|
|
2323
|
-
|
|
2538
|
+
default15 as InputAdornment,
|
|
2539
|
+
default16 as InputBase,
|
|
2540
|
+
default17 as InputLabel,
|
|
2324
2541
|
LineChart,
|
|
2325
2542
|
LineElement,
|
|
2326
2543
|
LineElementPath,
|
|
2327
2544
|
LineHighlightElement,
|
|
2328
2545
|
LineHighlightPlot,
|
|
2329
2546
|
LinePlot,
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
|
|
2335
|
-
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
|
|
2547
|
+
default67 as LinearProgress,
|
|
2548
|
+
default76 as Link,
|
|
2549
|
+
default27 as List,
|
|
2550
|
+
default28 as ListItem,
|
|
2551
|
+
default32 as ListItemAvatar,
|
|
2552
|
+
default29 as ListItemButton,
|
|
2553
|
+
default30 as ListItemIcon,
|
|
2554
|
+
default34 as ListItemSecondaryAction,
|
|
2555
|
+
default31 as ListItemText,
|
|
2556
|
+
default33 as ListSubheader,
|
|
2340
2557
|
Logo,
|
|
2341
2558
|
MarkElement,
|
|
2342
2559
|
MarkPlot,
|
|
2343
|
-
|
|
2560
|
+
default77 as Menu,
|
|
2344
2561
|
default6 as MenuItem,
|
|
2345
|
-
|
|
2346
|
-
|
|
2347
|
-
|
|
2562
|
+
default78 as MenuList,
|
|
2563
|
+
default79 as MobileStepper,
|
|
2564
|
+
default70 as Modal,
|
|
2348
2565
|
MultiSelect,
|
|
2349
|
-
|
|
2350
|
-
|
|
2566
|
+
default107 as NoSsr,
|
|
2567
|
+
default18 as OutlinedInput,
|
|
2351
2568
|
Page,
|
|
2352
|
-
|
|
2353
|
-
|
|
2354
|
-
|
|
2569
|
+
default80 as Pagination,
|
|
2570
|
+
default81 as PaginationItem,
|
|
2571
|
+
default58 as Paper,
|
|
2355
2572
|
PieArc,
|
|
2356
2573
|
PieArcLabel,
|
|
2357
2574
|
PieArcLabelPlot,
|
|
@@ -2360,11 +2577,11 @@ export {
|
|
|
2360
2577
|
PiePlot,
|
|
2361
2578
|
PiecewiseColorLegend,
|
|
2362
2579
|
Popover,
|
|
2363
|
-
|
|
2364
|
-
|
|
2580
|
+
default108 as Popper,
|
|
2581
|
+
default109 as Portal,
|
|
2365
2582
|
default5 as Radio,
|
|
2366
2583
|
default4 as RadioGroup,
|
|
2367
|
-
|
|
2584
|
+
default35 as Rating,
|
|
2368
2585
|
ResponsiveChartContainer,
|
|
2369
2586
|
Scatter,
|
|
2370
2587
|
ScatterChart,
|
|
@@ -2373,46 +2590,46 @@ export {
|
|
|
2373
2590
|
Select,
|
|
2374
2591
|
SidebarItem,
|
|
2375
2592
|
SidebarNav,
|
|
2376
|
-
|
|
2377
|
-
|
|
2378
|
-
|
|
2379
|
-
|
|
2380
|
-
|
|
2593
|
+
default69 as Skeleton,
|
|
2594
|
+
default102 as Slide,
|
|
2595
|
+
default110 as Slider,
|
|
2596
|
+
default71 as Snackbar,
|
|
2597
|
+
default72 as SnackbarContent,
|
|
2381
2598
|
SparkLineChart,
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
|
|
2385
|
-
|
|
2386
|
-
|
|
2387
|
-
|
|
2388
|
-
|
|
2389
|
-
|
|
2390
|
-
|
|
2391
|
-
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
|
|
2599
|
+
default82 as SpeedDial,
|
|
2600
|
+
default83 as SpeedDialAction,
|
|
2601
|
+
default84 as SpeedDialIcon,
|
|
2602
|
+
default96 as Stack,
|
|
2603
|
+
default86 as Step,
|
|
2604
|
+
default88 as StepButton,
|
|
2605
|
+
default89 as StepConnector,
|
|
2606
|
+
default90 as StepContent,
|
|
2607
|
+
default91 as StepIcon,
|
|
2608
|
+
default87 as StepLabel,
|
|
2609
|
+
default85 as Stepper,
|
|
2610
|
+
default111 as SvgIcon,
|
|
2611
|
+
default57 as SwipeableDrawer,
|
|
2395
2612
|
default7 as Switch,
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
|
|
2403
|
-
|
|
2404
|
-
|
|
2405
|
-
|
|
2406
|
-
|
|
2407
|
-
|
|
2613
|
+
default93 as Tab,
|
|
2614
|
+
default94 as TabScrollButton,
|
|
2615
|
+
default36 as Table,
|
|
2616
|
+
default37 as TableBody,
|
|
2617
|
+
default38 as TableCell,
|
|
2618
|
+
default39 as TableContainer,
|
|
2619
|
+
default42 as TableFooter,
|
|
2620
|
+
default40 as TableHead,
|
|
2621
|
+
default43 as TablePagination,
|
|
2622
|
+
default41 as TableRow,
|
|
2623
|
+
default44 as TableSortLabel,
|
|
2624
|
+
default92 as Tabs,
|
|
2408
2625
|
default8 as TextField,
|
|
2409
|
-
|
|
2626
|
+
default112 as TextareaAutosize,
|
|
2410
2627
|
ToggleButton,
|
|
2411
|
-
|
|
2412
|
-
|
|
2628
|
+
ToggleButtonGroup,
|
|
2629
|
+
default51 as Toolbar,
|
|
2413
2630
|
Tooltip,
|
|
2414
|
-
|
|
2415
|
-
|
|
2631
|
+
default45 as Typography,
|
|
2632
|
+
default103 as Zoom,
|
|
2416
2633
|
alpha,
|
|
2417
2634
|
avatarColors,
|
|
2418
2635
|
base,
|