Skip to content

Commit 1fa5b4a

Browse files
committed
use hamburger menu to show/hide drawer in mobile
1 parent 3316fa2 commit 1fa5b4a

File tree

3 files changed

+36
-8
lines changed

3 files changed

+36
-8
lines changed

src/components/Layout.tsx

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { ReactNode } from 'react'
1+
import React, { ReactNode, useState } from 'react'
22
import Navbar from './navbar/Navbar'
33

44
type LayoutProps = {
@@ -12,10 +12,20 @@ export default function Layout({
1212
children,
1313
sidebarContentRight,
1414
}: LayoutProps) {
15+
const [isDrawerOpen, setIsDrawerOpen] = useState(false)
1516
return (
1617
<div className="mx-auto bg-gray-200 dark:bg-dark-800 min-h-screen">
17-
<Navbar />
18-
<div className="grid grid-cols-9 gap-10 mt-10 px-4 md:px-60 md:pt-10 ">
18+
<Navbar isDrawerOpen={isDrawerOpen} setIsDrawerOpen={setIsDrawerOpen} />
19+
{sidebarContentLeft && (
20+
<aside
21+
className={`col-span-2 md:hidden mt-16 ${
22+
isDrawerOpen ? 'block' : 'hidden'
23+
}`}
24+
>
25+
{sidebarContentLeft}
26+
</aside>
27+
)}
28+
<div className="grid grid-cols-9 gap-10 mt-10 px-4 md:px-10 xl:px-60 md:pt-10 ">
1929
{sidebarContentLeft && (
2030
<aside className="col-span-2 hidden md:block">
2131
{sidebarContentLeft}

src/components/navbar/HamburgerButton.tsx

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
11
import { useState } from 'react'
22

3-
const HamburgerMenu = () => {
4-
const [isOpen, setIsOpen] = useState(false)
3+
type HamburgerMenuProps = {
4+
className?: string
5+
isOpen: boolean
6+
setIsOpen: (isOpen: boolean) => void
7+
}
8+
9+
const HamburgerMenu = ({
10+
className,
11+
isOpen,
12+
setIsOpen,
13+
}: HamburgerMenuProps) => {
514
const genericHamburgerLine = `h-1 w-6 my-0.5 rounded-full bg-black transition ease transform duration-300`
615

716
return (
817
<button
9-
className="flex flex-col h-10 w-10 rounded justify-center items-center group"
18+
className={`flex flex-col h-10 w-10 rounded justify-center items-center group ${className}`}
1019
onClick={() => setIsOpen(!isOpen)}
1120
>
1221
<div

src/components/navbar/Navbar.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,12 @@ const ThemeButton = dynamic(() => import('./ThemeButton'), {
88
ssr: false,
99
})
1010

11-
export default function Navbar() {
11+
type NavbarProps = {
12+
isDrawerOpen: boolean
13+
setIsDrawerOpen: (isOpen: boolean) => void
14+
}
15+
16+
export default function Navbar({ isDrawerOpen, setIsDrawerOpen }: NavbarProps) {
1217
const router = useRouter()
1318
const { pathname } = router
1419
return (
@@ -28,7 +33,11 @@ export default function Navbar() {
2833
</Link>
2934
</Button>
3035
)}
31-
<HamburgerMenu />
36+
<HamburgerMenu
37+
className="lg:hidden"
38+
isOpen={isDrawerOpen}
39+
setIsOpen={setIsDrawerOpen}
40+
/>
3241
</div>
3342
</div>
3443
<style jsx>{`

0 commit comments

Comments
 (0)