"use client" import { cx } from "class-variance-authority" import NextLink from "next/link" import { useRef } from "react" import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon" import { Typography } from "@scandic-hotels/design-system/Typography" import useDropdownStore from "@/stores/main-menu" import useClickOutside from "@/hooks/useClickOutside" import { useHandleKeyUp } from "@/hooks/useHandleKeyUp" import MainMenuButton from "../../MainMenuButton" import MegaMenu from "../MegaMenu" import styles from "./navigationMenuItem.module.css" import { DropdownTypeEnum } from "@/types/components/dropdown/dropdown" import type { NavigationMenuItemProps } from "@/types/components/header/navigationMenuItem" export default function MenuItem({ item, isMobile }: NavigationMenuItemProps) { const { openMegaMenu, toggleMegaMenu, toggleDropdown, isHamburgerMenuOpen } = useDropdownStore() const megaMenuRef = useRef(null) const { submenu, title, link, seeAllLink, card } = item const megaMenuTitle = `${title}-${isMobile ? "mobile" : "desktop"}` const isMegaMenuOpen = openMegaMenu === megaMenuTitle useHandleKeyUp((event: KeyboardEvent) => { if (event.key === "Escape" && isMegaMenuOpen) { toggleMegaMenu(false) } }) useClickOutside(megaMenuRef, isMegaMenuOpen && !isMobile, () => { toggleMegaMenu(false) }) function handleNavigate() { if (isHamburgerMenuOpen) { toggleDropdown(DropdownTypeEnum.HamburgerMenu) } } if (submenu.length) { return ( <> toggleMegaMenu(megaMenuTitle)} className={styles.navigationMenuItem} > {isMobile ? ( <> {title} ) : ( <> {title} )}
) } else if (link?.url) { return ( {title} ) } return null }