"use client"; import { useRef, useEffect, FC, useState } from "react"; import gsap from "gsap"; const GSAPCursor: FC = () => { const cursorRef = useRef(null); const [position, setPosition] = useState({ x: 0, y: 0 }); // For touch devices, return null if (typeof window !== "undefined" && "ontouchstart" in window) return null; useEffect(() => { // Initialize GSAP animation let xTo = gsap.quickTo(cursorRef.current, "x", { duration: 2, ease: "power2.out", }); let yTo = gsap.quickTo(cursorRef.current, "y", { duration: 2, ease: "power2.out", }); const onMouseMove = (e: MouseEvent) => { xTo(e.clientX); yTo(e.clientY); }; window.addEventListener("mousemove", onMouseMove); return () => { window.removeEventListener("mousemove", onMouseMove); }; }, []); useEffect(() => { const handleMouseMove = (e: MouseEvent) => { setPosition({ x: e.clientX, y: e.clientY }); }; window.addEventListener("mousemove", handleMouseMove); return () => window.removeEventListener("mousemove", handleMouseMove); }, []); return (
); }; export default GSAPCursor;