('a, button, [tabindex]:not([tabindex="-1"])')
+ first?.focus()
+ }
+ }, 0)
+ } else {
+ // restore focus to previous element or to the toggle button
+ setTimeout(() => {
+ const prev = previousActiveElement.current
+ if (prev) {
+ prev.focus()
+ } else {
+ const toggle = document.getElementById('mobile-menu-toggle') as HTMLElement | null
+ toggle?.focus()
+ }
+ }, 0)
+ }
+
globalThis.addEventListener('resize', handleResize)
globalThis.addEventListener('click', handleOutsideClick)
+ globalThis.addEventListener('keydown', handleKeydown)
return () => {
globalThis.removeEventListener('resize', handleResize)
globalThis.removeEventListener('click', handleOutsideClick)
+ globalThis.removeEventListener('keydown', handleKeydown)
}
}, [mobileMenuOpen])
@@ -139,15 +172,20 @@ export default function Header({ isGitHubAuthEnabled }: { readonly isGitHubAuthE