interface HamburgerMenuState { menuVisible: boolean; setMenuVisible: Dispatch>; hamburgerButtonRef: RefObject; } import { Dispatch, RefObject, SetStateAction, useRef, useState } from "react"; import { twMerge } from "tailwind-merge"; import Link from "next-intl/link"; import { useTranslations } from "next-intl"; import useHamburgerClose from "@/hooks/useHamburgerClose"; const HamburgerMenu = ({ menuVisible, setMenuVisible, hamburgerButtonRef, }: HamburgerMenuState) => { const t = useTranslations("Nav"); const [mouseOverMenu, setMouseOverMenu] = useState(false); const timeoutRef = useRef(); const menuRef = useRef(null); const menuTimeout = () => { timeoutRef.current = setTimeout(() => { setMenuVisible(false); setMouseOverMenu(false); }, 4000); }; const handleMouseEnterMenu = () => { setMouseOverMenu(true); clearTimeout(timeoutRef.current); }; const handleMouseLeaveMenu = () => { setMouseOverMenu(false); clearTimeout(timeoutRef.current); }; useHamburgerClose({ menuVisible, setMenuVisible, menuRef, hamburgerButtonRef, mouseOverMenu, setMouseOverMenu, timeoutRef, menuTimeout, }); return (
  • {t("tournaments")}
  • {t("about")}
  • {t("contact")}
); }; export default HamburgerMenu;