import { useEffect, useRef, useState } from "react"; type Props = { text: string }; export default function InfoTip({ text }: Props) { const [hover, setHover] = useState(false); const [sticky, setSticky] = useState(false); const ref = useRef(null); const open = hover || sticky; useEffect(() => { if (!sticky) return; function onDocClick(e: MouseEvent) { if (ref.current && !ref.current.contains(e.target as Node)) { setSticky(false); } } document.addEventListener("mousedown", onDocClick); return () => document.removeEventListener("mousedown", onDocClick); }, [sticky]); return ( {open && ( {text} )} ); }