import { EllipsisVertical } from "lucide-react"; import { type ReactNode, useRef, useState } from "react"; import { useClickOutside } from "../../hooks/use-click-outside.js"; import { Button } from "./button"; export interface OverflowMenuItem { readonly icon: ReactNode; readonly label: string; readonly onClick: () => void; readonly disabled?: boolean; readonly keepOpen?: boolean; } interface OverflowMenuProps { readonly items: readonly OverflowMenuItem[]; } export function OverflowMenu({ items }: OverflowMenuProps) { const [open, setOpen] = useState(false); const ref = useRef(null); useClickOutside(ref, () => setOpen(false), open); return (
{!!open && (
{items.map((item) => ( ))}
)}
); }