diff --git a/src/components/mobile-nav.tsx b/src/components/mobile-nav.tsx index df4a48c1..5341cc3a 100644 --- a/src/components/mobile-nav.tsx +++ b/src/components/mobile-nav.tsx @@ -14,7 +14,7 @@ export function MobileNav({ closeLabel = "Close menu", }: MobileNavProps) { const [open, setOpen] = useState(false); - const panelRef = useRef(null); + const ref = useRef(null); useEffect(() => { if (!open) return; @@ -25,12 +25,23 @@ export function MobileNav({ return () => document.removeEventListener("keydown", onKey); }, [open]); + useEffect(() => { + if (!open) return; + const onClick = (e: MouseEvent) => { + if (ref.current && !ref.current.contains(e.target as Node)) { + setOpen(false); + } + }; + document.addEventListener("mousedown", onClick); + return () => document.removeEventListener("mousedown", onClick); + }, [open]); + return ( - <> +