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}
);
};