"use client" import { useState, useRef, useEffect } from "react" import { createPortal } from "react-dom" import Link from "next/link" interface CompareActionsMenuProps { compareId: string onDelete: () => void } export function CompareActionsMenu({ compareId, onDelete }: CompareActionsMenuProps) { const [open, setOpen] = useState(false) const [position, setPosition] = useState({ top: 0, left: 0 }) const triggerRef = useRef(null) const dropdownRef = useRef(null) // Calculate dropdown position useEffect(() => { if (open && triggerRef.current) { const rect = triggerRef.current.getBoundingClientRect() const dropdownWidth = 192 setPosition({ top: rect.bottom + 4, left: rect.right - dropdownWidth, }) } }, [open]) // Click outside handler useEffect(() => { function handleClickOutside(event: MouseEvent) { const target = event.target as Node if (open && triggerRef.current && dropdownRef.current) { if (!triggerRef.current.contains(target) && !dropdownRef.current.contains(target)) { setOpen(false) } } } document.addEventListener("mousedown", handleClickOutside) return () => document.removeEventListener("mousedown", handleClickOutside) }, [open]) return ( <> {/* Dropdown menu */} {open && typeof document !== "undefined" && createPortal(
setOpen(false)} > view details
, document.body )} ) }