import { useState } from 'react'; import { useAppTranslation } from '@features/localization/renderer'; import { ContextMenu, ContextMenuContent, ContextMenuItem, ContextMenuSeparator, ContextMenuTrigger, } from '@renderer/components/ui/context-menu'; import { Archive, ArchiveRestore, Mail, Pencil, Pin, PinOff, Trash2 } from 'lucide-react'; import type { GlobalTask } from '@shared/types'; export interface TaskContextMenuProps { task: GlobalTask; isPinned: boolean; isArchived: boolean; onTogglePin: () => void; onToggleArchive: () => void; onMarkUnread: () => void; onRename: () => void; onDelete?: () => void; children: React.ReactNode; } type TaskContextMenuContentProps = Pick< TaskContextMenuProps, | 'isPinned' | 'isArchived' | 'onTogglePin' | 'onToggleArchive' | 'onMarkUnread' | 'onRename' | 'onDelete' >; const TaskContextMenuLazyContent = ({ isPinned, isArchived, onTogglePin, onToggleArchive, onMarkUnread, onRename, onDelete, }: TaskContextMenuContentProps): React.JSX.Element => { const { t } = useAppTranslation('common'); return ( e.preventDefault()}> {isPinned ? ( <> {t('taskContextMenu.unpin')} ) : ( <> {t('taskContextMenu.pin')} )} {t('taskContextMenu.rename')} {t('taskContextMenu.markUnread')} {isArchived ? ( <> {t('taskContextMenu.unarchive')} ) : ( <> {t('taskContextMenu.archive')} )} {onDelete && ( <> {t('taskContextMenu.deleteTask')} )} ); }; export const TaskContextMenu = ({ task: _task, isPinned, isArchived, onTogglePin, onToggleArchive, onMarkUnread, onRename, onDelete, children, }: TaskContextMenuProps): React.JSX.Element => { const [open, setOpen] = useState(false); return (
{children}
{open ? ( ) : null}
); };