"use client" import { Suspense, useEffect } from "react" import { Dialog, Modal } from "react-aria-components" import { useIntl } from "react-intl" import useDropdownStore from "@/stores/main-menu" import { GiftIcon, SearchIcon, ServiceIcon } from "@/components/Icons" import LanguageSwitcher from "@/components/LanguageSwitcher" import { useHandleKeyUp } from "@/hooks/useHandleKeyUp" import useMediaQuery from "@/hooks/useMediaQuery" import HeaderLink from "../../HeaderLink" import styles from "./mobileMenu.module.css" import { DropdownTypeEnum } from "@/types/components/dropdown/dropdown" import type { MobileMenuProps } from "@/types/components/header/mobileMenu" export default function MobileMenu({ children, languageUrls, topLink, }: React.PropsWithChildren) { const intl = useIntl() const { toggleDropdown, isHamburgerMenuOpen, isMyPagesMobileMenuOpen, isHeaderLanguageSwitcherMobileOpen, isFooterLanguageSwitcherOpen, } = useDropdownStore() const isHamburgerExtended = isHamburgerMenuOpen || isMyPagesMobileMenuOpen || isHeaderLanguageSwitcherMobileOpen || isFooterLanguageSwitcherOpen const isAboveMobile = useMediaQuery("(min-width: 768px)") useEffect(() => { if (isAboveMobile && isHamburgerMenuOpen) { toggleDropdown(DropdownTypeEnum.HamburgerMenu) } }, [isAboveMobile, isHamburgerMenuOpen, toggleDropdown]) useHandleKeyUp((event: KeyboardEvent) => { if (event.key === "Escape" && isHamburgerMenuOpen) { toggleDropdown(DropdownTypeEnum.HamburgerMenu) } }) // Making sure the menu is always opened at the top of the page, just below the header. useEffect(() => { if (isHamburgerMenuOpen) { window.scrollTo({ top: 0, behavior: "instant" }) } }, [isHamburgerMenuOpen]) return ( <> {children} ) }