import React, { useRef, useCallback } from 'react'; import { useReducedMotion } from '../../hooks/useReducedMotion.ts'; export const MagneticButton: React.FC<{ children: React.ReactNode; className?: string }> = ({ children, className, }) => { const ref = useRef(null); const reduced = useReducedMotion(); const handleMouseMove = useCallback( (e: React.MouseEvent) => { if (reduced || !ref.current) return; const rect = ref.current.getBoundingClientRect(); const x = e.clientX - rect.left - rect.width / 2; const y = e.clientY - rect.top - rect.height / 2; ref.current.style.transform = `translate(${x * 0.2}px, ${y * 0.2}px)`; }, [reduced] ); const handleMouseLeave = useCallback(() => { if (ref.current) { ref.current.style.transform = 'translate(0, 0)'; } }, []); return (
{children}
); };