"use client"; import { cn } from "@/lib/utils"; import React, { useRef, useState, useEffect } from "react"; export const MouseParallaxImage = ({ image, title, className, }: { image: string; title: string; className?: string; }) => { const ref = useRef(null); const [isMouseEntered, setIsMouseEntered] = useState(false); const handleMouseMove = (e: React.MouseEvent) => { if (!ref.current) return; const { left, top, width, height } = ref.current.getBoundingClientRect(); const x = (e.clientX - left - width / 2) / 25; // Adjust sensitivity const y = (e.clientY - top - height / 2) / 25; // Inverted for natural feel ref.current.style.transform = `rotateY(${x}deg) rotateX(${y}deg)`; }; const handleMouseEnter = () => { setIsMouseEntered(true); if (ref.current) { ref.current.style.transition = 'transform 0.2s ease-out'; } }; const handleMouseLeave = () => { setIsMouseEntered(false); if (ref.current) { ref.current.style.transform = `rotateY(0deg) rotateX(0deg)`; ref.current.style.transition = 'transform 0.2s ease-out'; } }; // Reset transform when mouse leaves useEffect(() => { if (!ref.current) return; if (!isMouseEntered) { ref.current.style.transform = `rotateY(0deg) rotateX(0deg)`; } }, [isMouseEntered]); return (
{title}
); };