1+ import { ReactNode , useState } from "react" ;
12import { useRouter } from "next/router" ;
2- import React , { ReactNode } from "react" ;
3- import { twMerge } from "tailwind-merge" ;
3+ import Bars3Icon from "@heroicons/ react/24/solid/Bars3Icon " ;
4+
45import Link from "./Link" ;
6+ import Button from "../controls/Button" ;
57
68export interface HeaderProps {
79
@@ -11,26 +13,42 @@ const NavLink = ({ href, currentHref, children }: {
1113 href : string ,
1214 currentHref : string ,
1315 children : ReactNode ;
14- } ) => (
15- < Link color = "primary" className = { "text-lg font-bold" + ( currentHref === href ? " text-primary-dark" : "" ) } href = { href } >
16- { children }
17- </ Link >
18- ) ;
16+ } ) => {
17+ const active = currentHref === href ;
18+
19+ return (
20+ < Link
21+ className = "text-lg font-bold py-2 border-y border-primary hover:border-primary-light aria-[current='page']:text-primary-dark aria-[current='page']:border-primary first-of-type:border-t-2 last-of-type:border-b-2 md:border-0 md:first-of-type:border-t-0 md:last-of-type:border-b-0"
22+ aria-current = { active ? "page" : undefined }
23+ color = "primary"
24+ href = { href }
25+ >
26+ { children }
27+ </ Link >
28+ ) ;
29+ } ;
1930
2031const Header = ( { } : HeaderProps ) => {
2132 const router = useRouter ( ) ;
2233
34+ const [ open , setOpen ] = useState ( false ) ;
35+
2336 return (
24- < header className = "flex items-center w-full gap-12 px-8 py-4" >
25- < Link color = "primary" className = { "text-4xl font-bold" } href = "/" >
37+ < header className = "relative flex items-center w-full gap-12 px-8 py-4" >
38+ < Link color = "primary" className = "text-2xl font-bold lg:text-4xl" href = "/" >
2639 Commit Rocket
2740 </ Link >
28- < NavLink href = "/" currentHref = { router . asPath } >
29- Home
30- </ NavLink >
31- < NavLink href = "/about" currentHref = { router . asPath } >
32- About
33- </ NavLink >
41+ < Button color = "secondary" className = "p-2 ml-auto rounded-full md:hidden" onClick = { ( ) => setOpen ( ! open ) } >
42+ < Bars3Icon className = "w-6 h-6" />
43+ </ Button >
44+ < div aria-expanded = { open } className = "absolute flex flex-col bg-fill gap-0 p-4 top-full inset-x-4 rounded-md shadow shadow-primary z-10 aria-[expanded='false']:hidden md:aria-[expanded='false']:flex md:flex-row md:items-center md:p-0 md:shadow-none md:static md:bg-transparent md:gap-12" >
45+ < NavLink href = "/" currentHref = { router . asPath } >
46+ Home
47+ </ NavLink >
48+ < NavLink href = "/about" currentHref = { router . asPath } >
49+ About
50+ </ NavLink >
51+ </ div >
3452 </ header >
3553 ) ;
3654} ;
0 commit comments