"use client" import { cx } from "class-variance-authority" import { useEffect } from "react" import { Button as ButtonRAC, Dialog, Modal } from "react-aria-components" import { useIntl } from "react-intl" import { useMediaQuery } from "usehooks-ts" import { customerService } from "@scandic-hotels/common/constants/routes/customerService" import { findMyBookingRoutes } from "@scandic-hotels/common/constants/routes/findMyBookingRoutes" import { IconName } from "@scandic-hotels/design-system/Icons/iconName" import useDropdownStore from "@/stores/main-menu" import LanguageSwitcher from "@/components/LanguageSwitcher" import { useHandleKeyUp } from "@/hooks/useHandleKeyUp" import useLang from "@/hooks/useLang" import HeaderLink from "../../HeaderLink" import TopLink from "../../TopLink" 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, topLink, isLoggedIn, }: React.PropsWithChildren) { const lang = useLang() 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]) const closeMsg = intl.formatMessage({ id: "header.closeMenu", defaultMessage: "Close menu", }) const openMsg = intl.formatMessage({ id: "header.openMenu", defaultMessage: "Open menu", }) const findMyBookingUrl = findMyBookingRoutes[lang] function handleLinkClick() { toggleDropdown(DropdownTypeEnum.HamburgerMenu) } return ( <> {children}
{intl.formatMessage({ id: "booking.findBooking", defaultMessage: "Find booking", })} {intl.formatMessage({ id: "common.customerService", defaultMessage: "Customer service", })}
) } export function MobileMenuSkeleton() { const intl = useIntl() return ( ) }