File tree Expand file tree Collapse file tree 4 files changed +85
-13
lines changed Expand file tree Collapse file tree 4 files changed +85
-13
lines changed Original file line number Diff line number Diff line change 1
- import React , { ReactNode } from 'react'
1
+ import React , { ReactNode , useState } from 'react'
2
2
import Navbar from './navbar/Navbar'
3
3
4
4
type LayoutProps = {
5
5
sidebarContentLeft ?: ReactNode
6
6
children : ReactNode
7
- sidebarContentRight : ReactNode
7
+ sidebarContentRight ? : ReactNode
8
8
}
9
9
10
10
export default function Layout ( {
11
11
sidebarContentLeft,
12
12
children,
13
13
sidebarContentRight,
14
14
} : LayoutProps ) {
15
+ const [ isDrawerOpen , setIsDrawerOpen ] = useState ( false )
15
16
return (
16
17
< 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-60 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 " >
19
29
{ sidebarContentLeft && (
20
- < aside className = "col-span-2" > { sidebarContentLeft } </ aside >
30
+ < aside className = "col-span-2 hidden md:block" >
31
+ { sidebarContentLeft }
32
+ </ aside >
21
33
) }
22
- < main className = { sidebarContentLeft ? 'col-span-5' : 'col-span-7' } >
34
+ < main
35
+ className = {
36
+ sidebarContentLeft ? 'col-span-9 md:col-span-5' : 'md:col-span-7'
37
+ }
38
+ >
23
39
{ children }
24
40
</ main >
25
- < aside className = "col-span-2" > { sidebarContentRight } </ aside >
41
+ { sidebarContentRight && (
42
+ < aside className = "col-span-2 hidden md:block" >
43
+ { sidebarContentRight }
44
+ </ aside >
45
+ ) }
26
46
</ div >
27
47
< div > </ div >
28
48
</ div >
Original file line number Diff line number Diff line change
1
+ import { useState } from 'react'
2
+
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 ) => {
14
+ const genericHamburgerLine = `h-1 w-6 my-0.5 rounded-full bg-black transition ease transform duration-300`
15
+
16
+ return (
17
+ < button
18
+ className = { `flex flex-col h-10 w-10 rounded justify-center items-center group ${ className } ` }
19
+ onClick = { ( ) => setIsOpen ( ! isOpen ) }
20
+ >
21
+ < div
22
+ className = { `${ genericHamburgerLine } ${
23
+ isOpen
24
+ ? 'rotate-45 translate-y-2 opacity-50 group-hover:opacity-100'
25
+ : 'opacity-50 group-hover:opacity-100'
26
+ } `}
27
+ />
28
+ < div
29
+ className = { `${ genericHamburgerLine } ${
30
+ isOpen ? 'opacity-0' : 'opacity-50 group-hover:opacity-100'
31
+ } `}
32
+ />
33
+ < div
34
+ className = { `${ genericHamburgerLine } ${
35
+ isOpen
36
+ ? '-rotate-45 -translate-y-2 opacity-50 group-hover:opacity-100'
37
+ : 'opacity-50 group-hover:opacity-100'
38
+ } `}
39
+ />
40
+ </ button >
41
+ )
42
+ }
43
+
44
+ export default HamburgerMenu
Original file line number Diff line number Diff line change @@ -3,11 +3,17 @@ import Link from 'next/link'
3
3
import { useRouter } from 'next/router'
4
4
import React from 'react'
5
5
import Button from '../Button'
6
+ import HamburgerMenu from './HamburgerButton'
6
7
const ThemeButton = dynamic ( ( ) => import ( './ThemeButton' ) , {
7
8
ssr : false ,
8
9
} )
9
10
10
- 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 ) {
11
17
const router = useRouter ( )
12
18
const { pathname } = router
13
19
return (
@@ -18,7 +24,7 @@ export default function Navbar() {
18
24
< div className = "logo w-10 h-10" > </ div >
19
25
</ a >
20
26
</ Link >
21
- < div className = "space-x-4" >
27
+ < div className = "space-x-4 flex " >
22
28
< ThemeButton />
23
29
{ pathname !== '/story' && (
24
30
< Button >
@@ -27,6 +33,11 @@ export default function Navbar() {
27
33
</ Link >
28
34
</ Button >
29
35
) }
36
+ < HamburgerMenu
37
+ className = "lg:hidden"
38
+ isOpen = { isDrawerOpen }
39
+ setIsOpen = { setIsDrawerOpen }
40
+ />
30
41
</ div >
31
42
</ div >
32
43
< style jsx > { `
Original file line number Diff line number Diff line change @@ -36,10 +36,7 @@ const Home = ({
36
36
}
37
37
38
38
return (
39
- < Layout
40
- sidebarContentLeft = { leftSidebar }
41
- sidebarContentRight = { < div > Promoted</ div > }
42
- >
39
+ < Layout sidebarContentLeft = { leftSidebar } >
43
40
< >
44
41
< Feed root = { query } />
45
42
</ >
You can’t perform that action at this time.
0 commit comments