import { useEffect, useState } from "react"; import type { RefObject } from "react"; import { cn } from "../../lib/utils"; type SpotlightProps = { parentRef: RefObject; className?: string; }; export const Spotlight = ({ parentRef, className }: SpotlightProps) => { const [pos, setPos] = useState({ x: -9999, y: -9999 }); useEffect(() => { const parent = parentRef.current; if (!parent) return; const handleMove = (e: MouseEvent) => { const rect = parent.getBoundingClientRect(); setPos({ x: e.clientX - rect.left, y: e.clientY - rect.top, }); }; const handleLeave = () => { setPos({ x: -9999, y: -9999 }); }; parent.addEventListener("mousemove", handleMove); parent.addEventListener("mouseleave", handleLeave); return () => { parent.removeEventListener("mousemove", handleMove); parent.removeEventListener("mouseleave", handleLeave); }; }, [parentRef]); return (
); };