interface HamburgerMenuState { menuVisible: boolean; setMenuVisible: Dispatch>; hamburgerButtonRef: RefObject; } import Link from "next/link"; import ThemeSwitcher from "@/components/ThemeSwitcher"; import { Dispatch, RefObject, SetStateAction, useRef, useState } from "react"; import useHamburgerClose from "@/hooks/useHamburgerClose"; const HamburgerMenu = ({ menuVisible, setMenuVisible, hamburgerButtonRef, }: HamburgerMenuState) => { const [mouseOverMenu, setMouseOverMenu] = useState(false); const timeoutRef = useRef(); const menuRef = useRef(null); const menuTimeout = () => { timeoutRef.current = setTimeout(() => { setMenuVisible(false); setMouseOverMenu(false); }, 2000); }; const handleMouseEnterMenu = () => { setMouseOverMenu(true); clearTimeout(timeoutRef.current); }; const handleMouseLeaveMenu = () => { setMouseOverMenu(false); clearTimeout(timeoutRef.current); }; useHamburgerClose({ menuVisible, setMenuVisible, menuRef, hamburgerButtonRef, mouseOverMenu, setMouseOverMenu, timeoutRef, menuTimeout, }); return (
  • Tournois
  • Qui Sommes-Nous
  • Contactez-Nous
); }; export default HamburgerMenu;