"use client"; import { useTranslations } from "next-intl"; import { ContextMenu, ContextMenuItem, ContextMenuSeparator, } from "@/components/ui/context-menu"; import { Pencil, Copy, Download, ClipboardCopy, Link as LinkIcon, Trash2, } from "lucide-react"; import type { CalendarEvent } from "@/lib/jmap/types"; interface Position { x: number; y: number; } interface EventContextMenuProps { event: CalendarEvent; position: Position; isOpen: boolean; onClose: () => void; menuRef: React.RefObject; onEdit: () => void; onDuplicate: () => void; onExportICS: () => void; onCopyTitle: () => void; onCopyMeetingLink?: () => void; onDelete: () => void; } export function EventContextMenu({ event, position, isOpen, onClose, menuRef, onEdit, onDuplicate, onExportICS, onCopyTitle, onCopyMeetingLink, onDelete, }: EventContextMenuProps) { const t = useTranslations("calendar"); const handle = (fn: () => void) => () => { fn(); onClose(); }; const hasMeetingLink = !!( event.virtualLocations && Object.values(event.virtualLocations).some((v) => v.uri) ); return ( {hasMeetingLink && onCopyMeetingLink && ( )} ); }