1- import IconButton from '@components/IconButton' ;
1+ import { FiMenu , FiMoon , FiSun } from 'react-icons/fi' ;
2+ import { HTMLAttributes , useState } from 'react' ;
3+
24import Container from '@components/Container' ;
3- import { FiSun , FiMoon , FiMenu } from 'react-icons/fi ' ;
5+ import IconButton from '@components/IconButton ' ;
46import NextLink from 'next/link' ;
5- import { HTMLAttributes , useState } from 'react' ;
6- import { useDarkMode } from '@utils/dark-mode-provider' ;
77import classnames from 'clsx' ;
8+ import tw from 'tailwind-styled-components' ;
9+ import { useDarkMode } from '@utils/dark-mode-provider' ;
810
911const NavLink : React . FC <
1012 Omit < HTMLAttributes < HTMLAnchorElement > , 'href' > & { href : string ; mobile ?: boolean }
@@ -16,14 +18,53 @@ const NavLink: React.FC<
1618 </ NextLink >
1719) ;
1820
19- export interface HeaderProps { }
21+ const HeaderContainer = tw . div `
22+ py-4
23+ sticky
24+ top-0
25+ left-0
26+ right-0
27+ z-10
28+ bg-gray-50
29+ dark:bg-naturalGray-400
30+ transition-colors
31+ duration-500
32+ ` ;
2033
21- const Header : React . FC < HeaderProps > = ( ) => {
34+ export interface HeaderProps {
35+ bottomNav ?: boolean ;
36+ }
37+
38+ const Header : React . FC < HeaderProps > = ( { bottomNav = false } ) => {
2239 const { mode, toggleMode } = useDarkMode ( ) ;
2340 const [ visible , setVisible ] = useState ( false ) ;
2441
42+ const mobileNav = (
43+ < Container className = { visible ? 'visible' : 'hidden' } >
44+ < div className = { classnames ( 'py-2 flex flex-col space-y-2' , visible ? 'visible' : 'hidden' ) } >
45+ < NavLink href = "/" mobile onClick = { ( ) => setVisible ( false ) } >
46+ Home
47+ </ NavLink >
48+ < NavLink href = "/blog" mobile onClick = { ( ) => setVisible ( false ) } >
49+ Blog
50+ </ NavLink >
51+ < NavLink href = "/resume" mobile onClick = { ( ) => setVisible ( false ) } >
52+ Experience
53+ </ NavLink >
54+ < NavLink href = "/projects" mobile onClick = { ( ) => setVisible ( false ) } >
55+ Projects
56+ </ NavLink >
57+ < NavLink href = "/contact" mobile onClick = { ( ) => setVisible ( false ) } >
58+ Contact
59+ </ NavLink >
60+ </ div >
61+ </ Container >
62+ ) ;
63+
2564 return (
26- < div className = "py-4 sticky top-0 left-0 right-0 z-10 bg-gray-50 dark:bg-gray-800 transition-colors duration-500" >
65+ < HeaderContainer >
66+ { bottomNav && mobileNav }
67+
2768 < Container className = "flex justify-center items-center" >
2869 < IconButton
2970 className = "sm:hidden"
@@ -33,11 +74,11 @@ const Header: React.FC<HeaderProps> = () => {
3374 />
3475
3576 < div className = "hidden sm:flex sm:flex-row sm:space-x-3" >
36- < NavLink href = "/#top " > Home</ NavLink >
37- < NavLink href = "/# blog" > Blog</ NavLink >
38- < NavLink href = "/#experience" > Experience </ NavLink >
39- < NavLink href = "/# projects" > Projects</ NavLink >
40- < NavLink href = "/# contact" > Contact</ NavLink >
77+ < NavLink href = "/" > Home</ NavLink >
78+ < NavLink href = "/blog" > Blog</ NavLink >
79+ < NavLink href = "/resume" > Resume </ NavLink >
80+ < NavLink href = "/projects" > Projects</ NavLink >
81+ < NavLink href = "/contact" > Contact</ NavLink >
4182 </ div >
4283
4384 < div className = "flex-grow" />
@@ -48,26 +89,9 @@ const Header: React.FC<HeaderProps> = () => {
4889 onClick = { toggleMode }
4990 />
5091 </ Container >
51- < Container className = { visible ? 'visible' : 'hidden' } >
52- < div className = { classnames ( 'py-2 flex flex-col space-y-2' , visible ? 'visible' : 'hidden' ) } >
53- < NavLink href = "/" mobile onClick = { ( ) => setVisible ( false ) } >
54- Home
55- </ NavLink >
56- < NavLink href = "/#blog" mobile onClick = { ( ) => setVisible ( false ) } >
57- Blog
58- </ NavLink >
59- < NavLink href = "/#experience" mobile onClick = { ( ) => setVisible ( false ) } >
60- Experience
61- </ NavLink >
62- < NavLink href = "/#projects" mobile onClick = { ( ) => setVisible ( false ) } >
63- Projects
64- </ NavLink >
65- < NavLink href = "/#contact" mobile onClick = { ( ) => setVisible ( false ) } >
66- Contact
67- </ NavLink >
68- </ div >
69- </ Container >
70- </ div >
92+
93+ { ! bottomNav && mobileNav }
94+ </ HeaderContainer >
7195 ) ;
7296} ;
7397
0 commit comments