'use client' import React, { useState, useRef, useEffect } from 'react' interface PopoverProps { text: string children: React.ReactNode size?: 'sm' | 'md' | 'lg' | 'xl' } export default function Popover({ text, children, size = 'sm' }: PopoverProps) { const [open, setOpen] = useState(false) const buttonRef = useRef(null) const popoverRef = useRef(null) useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if ( popoverRef.current && !popoverRef.current.contains(event.target as Node) && !buttonRef.current?.contains(event.target as Node) ) { setOpen(false) } } document.addEventListener('mousedown', handleClickOutside) return () => document.removeEventListener('mousedown', handleClickOutside) }, []) const sizeClass = { sm: 'max-w-xs', md: 'max-w-sm', lg: 'max-w-md', xl: 'max-w-lg', }[size] return (
{open && (
{children}
)}
) }