import React from "react"; import clsx from "clsx"; import { makeStyles } from "@material-ui/core/styles"; import { AppBar, Typography, Toolbar, IconButton, CssBaseline, } from "@material-ui/core"; import MenuIcon from "@material-ui/icons/Menu"; import Sidebar from "./Sidebar"; const drawerWidth = 240; const useStyles = makeStyles((theme) => ({ root: { display: "flex", }, appBar: { zIndex: theme.zIndex.drawer + 1, transition: theme.transitions.create(["width", "margin"], { easing: theme.transitions.easing.sharp, duration: theme.transitions.duration.leavingScreen, }), }, menuButton: { marginRight: 36, }, appBarShift: { marginLeft: drawerWidth, width: `calc(100% - ${drawerWidth}px)`, transition: theme.transitions.create(["width", "margin"], { easing: theme.transitions.easing.sharp, duration: theme.transitions.duration.enteringScreen, }), }, drawer: { width: drawerWidth, flexShrink: 0, whiteSpace: "nowrap", }, drawerOpen: { width: drawerWidth, transition: theme.transitions.create("width", { easing: theme.transitions.easing.sharp, duration: theme.transitions.duration.enteringScreen, }), }, drawerClose: { transition: theme.transitions.create("width", { easing: theme.transitions.easing.sharp, duration: theme.transitions.duration.leavingScreen, }), overflowX: "hidden", width: theme.spacing(7) + 1, [theme.breakpoints.up("sm")]: { width: theme.spacing(9) + 1, }, }, toolbar: { display: "flex", alignItems: "center", paddingTop: theme.spacing(0, 1), paddingBottom: theme.spacing(0, 1), // necessary for content to be below app bar ...theme.mixins.toolbar, }, content: { flexGrow: 1, padding: theme.spacing(3), }, })); const Appbar = (props) => { const classes = useStyles(); const [open, setOpen] = React.useState(false); const handleDrawerState = () => { setOpen(!open); }; return ( <React.Fragment> <div className={classes.root}> <CssBaseline /> <AppBar position="fixed" className={clsx(classes.appBar, { [classes.appBarShift]: open })}> <Toolbar> <IconButton color="inherit" aria-label="handle drawer" onClick={handleDrawerState} edge="start" className={clsx(classes.menuButton, { [classes.hide]: open, })}> <MenuIcon /> </IconButton> <Typography variant="h6" noWrap> Stashed </Typography> </Toolbar> </AppBar> <Sidebar open={open} history={props.history} /> <main className={classes.content}> <div className={classes.toolbar} /> {props.children} </main> </div> </React.Fragment> ); }; export default Appbar;