"use client"; import React, { useState, useRef, useEffect } from "react"; import { Info } from "lucide-react"; import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover"; import { Button } from "@/components/ui/button"; interface InfoPopupProps { text?: string; info?: string; trigger?: React.ReactNode; children?: React.ReactNode; } export function InfoPopup({ text, info, trigger, children }: InfoPopupProps) { const [open, setOpen] = useState(false); const timeoutRef = useRef(null); const handleMouseEnter = () => { if (timeoutRef.current) { clearTimeout(timeoutRef.current); timeoutRef.current = null; } setOpen(true); }; const handleMouseLeave = () => { // Add a small delay to prevent flickering when moving between trigger and content timeoutRef.current = setTimeout(() => { setOpen(false); }, 100); }; useEffect(() => { return () => { if (timeoutRef.current) { clearTimeout(timeoutRef.current); } }; }, []); const defaultTrigger = ( ); const triggerElement = trigger ?? defaultTrigger; return (
{text && {text}} {triggerElement} {children || (info && (

{info}

))}
); }