import { LinearProgress, useMediaQuery } from "@material-ui/core"; import { useUser } from "@saleor/auth"; import useAppState from "@saleor/hooks/useAppState"; import { SaleorTheme, Sidebar, SidebarDrawer, useActionBar, useBacklink, useTheme, } from "@saleor/macaw-ui"; import { isDarkTheme } from "@saleor/misc"; import clsx from "clsx"; import React from "react"; import { useIntl } from "react-intl"; import useRouter from "use-react-router"; import Container from "../Container"; import Navigator from "../Navigator"; import NavigatorButton from "../NavigatorButton/NavigatorButton"; import UserChip from "../UserChip"; import useAppChannel from "./AppChannelContext"; import AppChannelSelect from "./AppChannelSelect"; import useMenuStructure from "./menuStructure"; import { SidebarLink } from "./SidebarLink"; import { useFullSizeStyles, useStyles } from "./styles"; import { isMenuActive } from "./utils"; interface AppLayoutProps { children: React.ReactNode; fullSize?: boolean; } const AppLayout: React.FC = ({ children, fullSize = false, }) => { const classes = useStyles(); const fullSizeClasses = useFullSizeStyles(); const { themeType, setTheme } = useTheme(); const { anchor: appActionAnchor } = useActionBar(); const appHeaderAnchor = useBacklink(); const { logout, user } = useUser(); const intl = useIntl(); const [appState] = useAppState(); const { location } = useRouter(); const [isNavigatorVisible, setNavigatorVisibility] = React.useState(false); const isMdUp = useMediaQuery((theme: SaleorTheme) => theme.breakpoints.up("md"), ); const { availableChannels, channel, isPickerActive, setChannel, } = useAppChannel(false); const [menuStructure, handleMenuItemClick] = useMenuStructure(intl, user); const activeMenu = menuStructure.find(menuItem => isMenuActive(location.pathname, menuItem), )?.id; const toggleTheme = () => setTheme(isDarkTheme(themeType) ? "light" : "dark"); return ( <>
{isMdUp && ( )}
{appState.loading ? ( ) : (
)}
{!isMdUp && ( )}
setNavigatorVisibility(true)} /> {isPickerActive && ( )}
{children}
); }; export default AppLayout;