Skip to content

Commit 80267e4

Browse files
authored
new conf design — close mobile menu (#2000)
* Close mobile menu on link click * Close navbar menu on escape
1 parent 6f52538 commit 80267e4

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

src/app/conf/2025/components/navbar.tsx

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { Badge } from "../../_components/badge"
1010
import MenuIcon from "../pixelarticons/menu.svg?svgr"
1111
import CloseIcon from "../pixelarticons/close.svg?svgr"
1212
import { GraphQLConfLogoLink } from "./graphql-conf-logo-link"
13+
import { Anchor } from "../../_design-system/anchor"
1314

1415
export 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

Comments
 (0)