import React, { useState, useRef, useEffect } from "react"; import { X } from "lucide-react"; interface PopoverProps { trigger: React.ReactElement; children: React.ReactNode; className?: string; } export function Popover({ trigger, children, className = "" }: PopoverProps) { const [isOpen, setIsOpen] = useState(false); const popoverRef = useRef(null); const triggerRef = useRef(null); useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if ( popoverRef.current && !popoverRef.current.contains(event.target as Node) && !triggerRef.current?.contains(event.target as Node) ) { setIsOpen(false); } }; document.addEventListener("mousedown", handleClickOutside); return () => document.removeEventListener("mousedown", handleClickOutside); }, []); return (
setIsOpen(!isOpen)}> {trigger}
{isOpen && (

Feature Configuration

{children}
)}
); }