import React, { useCallback, useRef, useState } from "react"; import Link from "next/link"; export default function BottomFooter() { // Instagram Lava Flood Easter Egg const [lavaActive, setLavaActive] = useState(false); const lavaTimeout = useRef(null); // Instagram sound const earthquakeAudio = useRef(null); // LinkedIn Shake Easter Egg const [shaking, setShaking] = useState(false); const shakeTimeout = useRef(null); // X Logo Full-Page Crack & Spin Easter Egg const [showCracks, setShowCracks] = useState(false); const [crackOverlayActive, setCrackOverlayActive] = useState(false); // Lava flood & sound handler const handleInstagramClick = useCallback((e: React.MouseEvent) => { e.preventDefault(); setLavaActive(true); // Play earthquake sound if (earthquakeAudio.current) { earthquakeAudio.current.currentTime = 0; earthquakeAudio.current.play(); } clearTimeout(lavaTimeout.current); lavaTimeout.current = setTimeout(() => setLavaActive(false), 2000); }, []); // LinkedIn shake handler const handleLinkedInClick = useCallback( (e: React.MouseEvent) => { e.preventDefault(); if (shaking) return; // prevent stacking setShaking(true); const body = document.body; body.classList.remove("shake-screen"); void body.offsetWidth; body.classList.add("shake-screen"); shakeTimeout.current = setTimeout(() => { setShaking(false); body.classList.remove("shake-screen"); }, 1000); }, [shaking] ); // X click = crack, spin page, then reset after 2s const handleXClick = useCallback( (e: React.MouseEvent) => { e.preventDefault(); if (crackOverlayActive) return; setShowCracks(true); setCrackOverlayActive(true); document.body.classList.remove("body-spin-back"); document.body.classList.add("body-cracked"); setTimeout(() => { document.body.classList.remove("body-cracked"); document.body.classList.add("body-spin-back"); setTimeout(() => { setShowCracks(false); setCrackOverlayActive(false); document.body.classList.remove("body-spin-back"); }, 200); }, 2000); }, [crackOverlayActive] ); // Clean up classes and timeouts on unmount React.useEffect(() => { return () => { clearTimeout(lavaTimeout.current); clearTimeout(shakeTimeout.current); document.body.classList.remove("shake-screen"); document.body.classList.remove("body-cracked"); document.body.classList.remove("body-spin-back"); }; }, []); return ( <> {/* Hidden audio element */}