@@ -10,6 +10,7 @@ import { Badge } from "../../_components/badge"
1010import MenuIcon from "../pixelarticons/menu.svg?svgr"
1111import CloseIcon from "../pixelarticons/close.svg?svgr"
1212import { GraphQLConfLogoLink } from "./graphql-conf-logo-link"
13+ import { Anchor } from "../../_design-system/anchor"
1314
1415export interface NavbarProps {
1516 links : { href : string ; children : React . ReactNode ; "aria-disabled" ?: true } [ ]
@@ -30,6 +31,15 @@ export function Navbar({ links, year }: NavbarProps): ReactElement {
3031
3132 useEffect ( ( ) => {
3233 document . body . style . overflow = mobileDrawerOpen ? "hidden" : "auto"
34+ if ( mobileDrawerOpen ) {
35+ const closeOnEscape = ( event : KeyboardEvent ) => {
36+ if ( event . key === "Escape" ) setMobileDrawerOpen ( false )
37+ }
38+ document . addEventListener ( "keydown" , closeOnEscape )
39+ return ( ) => {
40+ document . removeEventListener ( "keydown" , closeOnEscape )
41+ }
42+ }
3343 } , [ mobileDrawerOpen ] )
3444
3545 return (
@@ -79,27 +89,27 @@ export function Navbar({ links, year }: NavbarProps): ReactElement {
7989 < div className = "flex w-full flex-col lg:mt-0 lg:block" >
8090 { links . map (
8191 ( { "aria-disabled" : isDisabled , children, ...link } ) => (
82- < NextLink
92+ < Anchor
8393 aria-disabled = { isDisabled }
8494 key = { link . href }
8595 { ...link }
86- // if external link, open in new tab
87- { ...( link . href . startsWith ( "https" ) && {
88- target : "_blank" ,
89- rel : "noopener noreferrer" ,
90- } ) }
9196 className = { clsx (
9297 "p-5 underline-offset-4 hover:underline aria-disabled:pointer-events-none max-lg:text-base" ,
9398 pathname === link . href && "underline" ,
9499 ) }
100+ onClick = { ( ) => {
101+ if ( mobileDrawerOpen ) {
102+ setMobileDrawerOpen ( false )
103+ }
104+ } }
95105 >
96106 { children }
97107 { isDisabled && (
98108 < sup className = "ml-2" >
99109 < Badge className = "text-white" > Soon</ Badge >
100110 </ sup >
101111 ) }
102- </ NextLink >
112+ </ Anchor >
103113 ) ,
104114 ) }
105115 </ div >
0 commit comments