dwysokinski.me/src/components/Layout/Navbar.js

186 lines
5.1 KiB
JavaScript
Raw Normal View History

2020-07-13 12:02:40 +00:00
import React, { useState } from "react"
import classnames from "classnames"
import * as routes from "@config/routes"
import useSmoothScroll from "@libs/useSmoothScroll"
2020-07-13 12:02:40 +00:00
import logo from "@images/logo.svg"
import { HEADER_ID } from "@features/HomePage/components/Header"
import { SECTION_ID as PROJECTS_SECTION_ID } from "@features/HomePage/components/Projects/Projects"
import { SECTION_ID as CONTACT_SECTION_ID } from "@features/HomePage/components/Contact"
2020-07-13 12:02:40 +00:00
import { makeStyles } from "@material-ui/core/styles"
import {
AppBar,
Toolbar,
Container,
Hidden,
Menu,
MenuItem,
Link,
2020-07-13 12:02:40 +00:00
} from "@material-ui/core"
import { Menu as MenuIcon } from "@material-ui/icons"
import { Link as GatsbyLink, IconButton } from "gatsby-theme-material-ui"
2020-07-13 12:02:40 +00:00
const useStyles = makeStyles(theme => ({
appBar: {
backgroundColor: "transparent",
color: "#fff",
boxShadow: "none",
},
hidden: {
"& > *:not(:last-child)": {
marginRight: theme.spacing(1.5),
},
},
logo: {
width: "56px",
height: "auto",
[theme.breakpoints.down("xs")]: {
width: "48px",
},
},
divider: {
flexGrow: 1,
},
link: {
width: "100%",
},
titleContainer: {
display: "flex",
alignItems: "center",
"& > *:not(:last-child)": {
marginRight: theme.spacing(1),
},
},
toolbar: {
padding: theme.spacing(2, 0),
fontSize: "1.25rem",
},
}))
function Navbar({ className, ...rest }) {
2020-07-13 12:02:40 +00:00
const [anchorEl, setAnchorEl] = useState(null)
const classes = useStyles()
const handleLinkClick = useSmoothScroll()
2020-07-13 12:02:40 +00:00
const open = Boolean(anchorEl)
const handleMenuOpen = event => {
setAnchorEl(event.currentTarget)
}
const handleMenuClose = () => {
setAnchorEl(null)
}
return (
<AppBar
component="nav"
position="static"
{...rest}
className={classnames(classes.appBar, className)}
>
<Container>
<Toolbar className={classes.toolbar} disableGutters>
<div className={classes.titleContainer}>
<GatsbyLink title="Strona główna" color="inherit" to={routes.HOME}>
2020-07-13 12:02:40 +00:00
<img className={classes.logo} src={logo} alt="logo" />
</GatsbyLink>
2020-07-13 12:02:40 +00:00
</div>
<div className={classes.divider} />
<div>
<Hidden implementation="css" xsDown className={classes.hidden}>
<Link
title="Start"
color="inherit"
href={"#" + HEADER_ID}
onClick={handleLinkClick(HEADER_ID)}
>
Start
2020-07-13 12:02:40 +00:00
</Link>
<Link
title="Projekty"
color="inherit"
href={"#" + PROJECTS_SECTION_ID}
onClick={handleLinkClick(PROJECTS_SECTION_ID)}
>
2020-07-13 12:02:40 +00:00
Projekty
</Link>
<Link
title="Kontakt"
color="inherit"
href={"#" + CONTACT_SECTION_ID}
onClick={handleLinkClick(CONTACT_SECTION_ID)}
>
Kontakt
</Link>
2020-07-13 12:02:40 +00:00
</Hidden>
<Hidden implementation="css" smUp>
<IconButton
edge="start"
color="inherit"
aria-label="menu"
onClick={handleMenuOpen}
>
<MenuIcon />
</IconButton>
<Menu
anchorEl={anchorEl}
anchorOrigin={{
vertical: "top",
horizontal: "right",
}}
keepMounted
transformOrigin={{
vertical: "top",
horizontal: "right",
}}
open={open}
onClose={handleMenuClose}
disableScrollLock
>
<MenuItem>
<Link
title="Start"
2020-07-13 12:02:40 +00:00
color="inherit"
underline="none"
className={classes.link}
href={"#" + HEADER_ID}
onClick={handleLinkClick(HEADER_ID)}
2020-07-13 12:02:40 +00:00
>
Start
2020-07-13 12:02:40 +00:00
</Link>
</MenuItem>
<MenuItem>
<Link
title="Projekty"
color="inherit"
underline="none"
className={classes.link}
href={"#" + PROJECTS_SECTION_ID}
onClick={handleLinkClick(PROJECTS_SECTION_ID)}
2020-07-13 12:02:40 +00:00
>
Projekty
</Link>
</MenuItem>
<MenuItem>
<Link
title="Kontakt"
color="inherit"
underline="none"
className={classes.link}
href={"#" + CONTACT_SECTION_ID}
onClick={handleLinkClick(CONTACT_SECTION_ID)}
>
Kontakt
</Link>
</MenuItem>
2020-07-13 12:02:40 +00:00
</Menu>
</Hidden>
</div>
</Toolbar>
</Container>
</AppBar>
)
}
export default Navbar