Working menu button with open and closed state.

This commit is contained in:
Daniel Gent 2021-08-27 15:57:48 +02:00
parent f5cb30e4ff
commit dc365b9232
3 changed files with 54 additions and 39 deletions

View File

@ -23,3 +23,11 @@
.menuButton::before { .menuButton::before {
transform: translateY(-5px); transform: translateY(-5px);
} }
.menuButton.isOpen::before {
transform: rotate(45deg);
}
.menuButton.isOpen::after {
transform: rotate(-45deg);
}

View File

@ -1,6 +1,7 @@
import { FC } from 'react' import { FC } from 'react'
import PropTypes from 'prop-types' import PropTypes from 'prop-types'
import s from './MenuButton.module.css' import s from './MenuButton.module.css'
import cn from 'classnames'
interface MenuButtonProps { interface MenuButtonProps {
isOpen: boolean isOpen: boolean
@ -11,7 +12,7 @@ const MenuButton: FC<MenuButtonProps> = ({ isOpen, onClick }) => {
return ( return (
<div <div
onClick={onClick} onClick={onClick}
className={s.menuButton} className={cn(s.menuButton, { [s.isOpen]: isOpen })}
/> />
) )
} }

View File

@ -1,4 +1,4 @@
import { FC } from 'react' import { FC, useState } from 'react'
import Link from 'next/link' import Link from 'next/link'
import s from './Navbar.module.css' import s from './Navbar.module.css'
import NavbarRoot from './NavbarRoot' import NavbarRoot from './NavbarRoot'
@ -14,7 +14,9 @@ interface NavbarProps {
links?: Link[] links?: Link[]
} }
const Navbar: FC<NavbarProps> = ({ links }) => ( const Navbar: FC<NavbarProps> = ({ links }) => {
const [isMenuOpen, setIsMenuOpen] = useState(false)
return (
<NavbarRoot> <NavbarRoot>
<div className={s.navContainer}> <div className={s.navContainer}>
<Container> <Container>
@ -36,7 +38,10 @@ const Navbar: FC<NavbarProps> = ({ links }) => (
))} ))}
</nav> </nav>
</div> </div>
<MenuButton isOpen onClick={() => {}} /> <MenuButton
isOpen={isMenuOpen}
onClick={() => setIsMenuOpen(!isMenuOpen)}
/>
<div className="flex items-center justify-end flex-1 space-x-8"> <div className="flex items-center justify-end flex-1 space-x-8">
<UserNav /> <UserNav />
</div> </div>
@ -51,6 +56,7 @@ const Navbar: FC<NavbarProps> = ({ links }) => (
</div> </div>
)} )}
</NavbarRoot> </NavbarRoot>
) )
}
export default Navbar export default Navbar