'use client' import { useEffect, useState } from 'react' export function CursorEffect() { const [position, setPosition] = useState({ x: 0, y: 0 }) const [isHovering, setIsHovering] = useState(false) const [trails, setTrails] = useState>([]) useEffect(() => { let trailId = 0 const handleMouseMove = (e: MouseEvent) => { setPosition({ x: e.clientX, y: e.clientY }) // Add trail const newTrail = { x: e.clientX, y: e.clientY, id: trailId++ } setTrails(prev => [...prev.slice(-8), newTrail]) // Check if hovering over interactive element const target = e.target as HTMLElement const isInteractive = target.closest('a, button, [role="button"]') setIsHovering(!!isInteractive) } window.addEventListener('mousemove', handleMouseMove) return () => window.removeEventListener('mousemove', handleMouseMove) }, []) return ( <> {/* Main cursor */}
{/* Trail effect */} {trails.map((trail, index) => (
))} {/* Outer ring */}
) }