Skip to content

Instantly share code, notes, and snippets.

@SahanAmarsha
Last active March 15, 2022 18:10
Show Gist options
  • Save SahanAmarsha/b4217ead08aef3e6e4f31c7c4bef692e to your computer and use it in GitHub Desktop.
Save SahanAmarsha/b4217ead08aef3e6e4f31c7c4bef692e to your computer and use it in GitHub Desktop.
Example Navbar Component
// src/components/Navbar.tsx
import React, { FC, ReactElement } from "react";
import {
Box,
Link,
Container,
IconButton,
Menu,
MenuItem,
Toolbar,
Typography,
} from "@mui/material";
import MenuIcon from "@mui/icons-material/Menu";
import { routes } from "../routes";
import { NavLink } from "react-router-dom";
const Navbar: FC = (): ReactElement => {
const [anchorElNav, setAnchorElNav] = React.useState(null);
const handleOpenNavMenu = (event: any) => {
setAnchorElNav(event.currentTarget);
};
const handleCloseNavMenu = () => {
setAnchorElNav(null);
};
return (
<Box
sx={{
width: "100%",
height: "auto",
backgroundColor: "secondary.main",
}}
>
<Container maxWidth="xl">
<Toolbar disableGutters>
<Typography
variant="h6"
noWrap
sx={{
mr: 2,
display: { xs: "none", md: "flex" },
}}
>
Starter App
</Typography>
<Box sx={{ flexGrow: 1, display: { xs: "flex", md: "none" } }}>
<IconButton
size="large"
aria-label="account of current user"
aria-controls="menu-appbar"
aria-haspopup="true"
onClick={handleOpenNavMenu}
color="inherit"
>
<MenuIcon />
</IconButton>
<Menu
id="menu-appbar"
anchorEl={anchorElNav}
anchorOrigin={{
vertical: "bottom",
horizontal: "left",
}}
keepMounted
transformOrigin={{
vertical: "top",
horizontal: "left",
}}
open={Boolean(anchorElNav)}
onClose={handleCloseNavMenu}
sx={{
display: { xs: "block", md: "none" },
}}
>
{routes.map((page) => (
<Link
key={page.key}
component={NavLink}
to={page.path}
color="black"
underline="none"
variant="button"
>
<MenuItem onClick={handleCloseNavMenu}>
<Typography textAlign="center">{page.title}</Typography>
</MenuItem>
</Link>
))}
</Menu>
</Box>
<Typography
variant="h6"
noWrap
component="div"
sx={{ flexGrow: 1, display: { xs: "flex", md: "none" } }}
>
React Starter App
</Typography>
<Box sx={{ flexGrow: 1, display: { xs: "none", md: "flex" } }}>
<Box
sx={{
display: "flex",
flexDirection: "row",
justifyContent: "flex-start",
alignItems: "center",
marginLeft: "1rem",
}}
>
{routes.map((page) => (
<Link
key={page.key}
component={NavLink}
to={page.path}
color="black"
underline="none"
variant="button"
sx={{ fontSize: "large", marginLeft: "2rem" }}
>
{page.title}
</Link>
))}
</Box>
</Box>
</Toolbar>
</Container>
</Box>
);
};
export default Navbar;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment