import { useState } from 'react' import Badge from '../UI/Badge' import { formatDate } from '../../utils/dateHelpers' import ContextMenu from '../UI/ContextMenu' import { updateDeliverable, deleteDeliverable } from '../../api/deliverables' import useProjectStore from '../../store/useProjectStore' import { STATUS_OPTIONS } from '../../utils/statusHelpers' export default function DeliverableCard({ deliverable, isActive, index, projectColor, onSelect, onEdit }) { const { updateDeliverable: storeUpdate, removeDeliverable } = useProjectStore() const [ctxMenu, setCtxMenu] = useState(null) const handleContextMenu = (e) => { e.preventDefault() e.stopPropagation() setCtxMenu({ x: e.clientX, y: e.clientY, items: [ { icon: '✎', label: 'Edit Deliverable', highlight: true, action: () => onEdit(deliverable) }, { separator: true }, ...STATUS_OPTIONS.map(s => ({ icon: s.value === deliverable.status ? '●' : '○', label: `Mark ${s.label}`, action: async () => { storeUpdate(await updateDeliverable(deliverable.id, { status: s.value })) }, })), { separator: true }, { icon: '✕', label: 'Delete Deliverable', danger: true, action: async () => { if (window.confirm(`Delete "${deliverable.title}"?`)) { await deleteDeliverable(deliverable.id) removeDeliverable(deliverable.id) } }, }, ], }) } return ( <>
{deliverable.title}
{formatDate(deliverable.due_date)}