"use client" import * as React from "react" import { HelpCircle } from "lucide-react" import { cn } from "@/lib/utils" interface TooltipHelpProps { content: string className?: string } export function TooltipHelp({ content, className = "" }: TooltipHelpProps) { const [isVisible, setIsVisible] = React.useState(false) const [position, setPosition] = React.useState({ top: 0, left: 0 }) const tooltipRef = React.useRef(null) const timeoutRef = React.useRef() const handleMouseEnter = (e: React.MouseEvent) => { timeoutRef.current = setTimeout(() => { const rect = (e.target as HTMLElement).getBoundingClientRect() const tooltipRect = tooltipRef.current?.getBoundingClientRect() if (tooltipRect) { const top = rect.top - tooltipRect.height - 8 const left = rect.left + (rect.width - tooltipRect.width) / 2 setPosition({ top, left }) setIsVisible(true) } }, 200) } const handleMouseLeave = () => { if (timeoutRef.current) { clearTimeout(timeoutRef.current) } setIsVisible(false) } React.useEffect(() => { return () => { if (timeoutRef.current) { clearTimeout(timeoutRef.current) } } }, []) return ( <> {isVisible && (
{content}
)} ) } // 为了兼容性,导出一个简单的 TooltipProvider export const TooltipProvider = ({ children }: { children: React.ReactNode }) => <>{children}