bananas-commerce-admin
Version:
What's this, an admin for apes?
68 lines • 2.8 kB
JavaScript
import React, { useMemo } from "react";
import CssBaseline from "@mui/material/CssBaseline";
import { styled, ThemeProvider } from "@mui/material/styles";
import useMediaQuery from "@mui/material/useMediaQuery";
import { MaterialDesignContent, SnackbarProvider } from "notistack";
import { ApiContextProvider } from "./contexts/ApiContext";
import { I18nContextProvider } from "./contexts/I18nContext";
import { UserContextProvider } from "./contexts/UserContext";
import { parentPath } from "./router/routes";
import Admin from "./Admin";
import { createMainTheme } from "./themes";
const StyledSnackbarContent = styled(MaterialDesignContent)(({ theme }) => theme.unstable_sx({
"&.notistack-MuiContent-default": {
bgcolor: "primary.main",
},
"&.notistack-MuiContent-error": {
bgcolor: "error.main",
},
"&.notistack-MuiContent-warning": {
bgcolor: "warning.main",
},
"&.notistack-MuiContent-info": {
bgcolor: "info.main",
},
"&.notistack-MuiContent-success": {
bgcolor: "success.main",
},
}));
export const App = ({ theme: userTheme, api, contrib, ...rest }) => {
const potentialSchema = typeof api === "object" && "schema" in api ? api.schema : api;
let schemaPath;
if (typeof potentialSchema === "string" || potentialSchema instanceof URL) {
try {
schemaPath = new URL(potentialSchema).pathname;
}
catch {
// NOTE: This should always be true, but what do I know?
if (typeof potentialSchema === "string") {
schemaPath = potentialSchema;
}
}
}
if (schemaPath != null) {
rest.basepath ??= parentPath(schemaPath);
}
const themeMode = useMediaQuery("(prefers-color-scheme: dark)") ? "dark" : "light";
const theme = useMemo(() => {
return createMainTheme(themeMode, userTheme);
}, [themeMode]);
return (React.createElement(ThemeProvider, { theme: theme },
React.createElement(CssBaseline, null),
React.createElement(SnackbarProvider, { anchorOrigin: {
vertical: "bottom",
horizontal: "right",
}, Components: {
default: StyledSnackbarContent,
error: StyledSnackbarContent,
warning: StyledSnackbarContent,
info: StyledSnackbarContent,
success: StyledSnackbarContent,
}, maxSnack: 4 },
React.createElement(ApiContextProvider, { api: api, contrib: contrib },
React.createElement(I18nContextProvider, null,
React.createElement(UserContextProvider, null,
React.createElement(Admin, { ...rest })))))));
};
export default App;
//# sourceMappingURL=App.js.map