1
1
mirror of https://github.com/theoludwig/theoludwig.git synced 2024-09-19 22:15:53 +02:00
.profile/components/Header/HamburgerIcon.tsx
2021-04-18 01:56:23 +02:00

77 lines
2.1 KiB
TypeScript

import classNames from 'classnames'
type HamburgerIconComponent = React.FC<{
isActive: boolean
handleToggleNavbar: () => void
}>
export const HamburgerIcon: HamburgerIconComponent = props => {
return (
<>
<div
onClick={props.handleToggleNavbar}
className={classNames('Header__hamburger', {
'Header__hamburger-active': props.isActive
})}
>
<span />
</div>
<style jsx>
{`
.Header__hamburger {
display: none;
width: 56px;
height: 40px;
cursor: pointer;
background-color: transparent;
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 0.25rem;
position: relative;
}
.Header__hamburger > span,
.Header__hamburger > span::before,
.Header__hamburger > span::after {
position: absolute;
width: 22px;
height: 1.3px;
background-color: rgba(255, 255, 255);
}
.Header__hamburger > span {
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
transition: background-color 0.3s ease-in-out;
}
.Header__hamburger > span::before,
.Header__hamburger > span::after {
content: '';
transition: transform 0.3s ease-in-out;
}
.Header__hamburger > span::before {
transform: translateY(-8px);
}
.Header__hamburger > span::after {
transform: translateY(8px);
}
.Header__hamburger-active span {
background-color: transparent;
}
.Header__hamburger-active > span::before {
transform: translateY(0px) rotateZ(45deg);
}
.Header__hamburger-active > span::after {
transform: translateY(0px) rotateZ(-45deg);
}
/* Hamburger icon on Mobile */
@media (max-width: 992px) {
.Header__hamburger {
display: flex;
}
}
`}
</style>
</>
)
}