import React, { useState, useRef, useEffect } from 'react'; interface TooltipProps { content: string; children: React.ReactNode; position?: 'top' | 'right' | 'bottom' | 'left'; delay?: number; } export function Tooltip({ content, children, position = 'right', delay = 200 }: TooltipProps) { const [isVisible, setIsVisible] = useState(false); const timeoutRef = useRef>(); const show = () => { timeoutRef.current = setTimeout(() => setIsVisible(true), delay); }; const hide = () => { if (timeoutRef.current) clearTimeout(timeoutRef.current); setIsVisible(false); }; useEffect(() => { return () => { if (timeoutRef.current) clearTimeout(timeoutRef.current); }; }, []); const positionClasses: Record = { top: 'bottom-full left-1/2 -translate-x-1/2 mb-2', right: 'left-full top-1/2 -translate-y-1/2 ml-2', bottom: 'top-full left-1/2 -translate-x-1/2 mt-2', left: 'right-full top-1/2 -translate-y-1/2 mr-2', }; return (
{children} {isVisible && (
{content}
)}
); }