import React from 'react'; import { useTranslation } from 'react-i18next'; import { CalendarIcon, ExclamationTriangleIcon, } from '@heroicons/react/24/outline'; import TaskDueDateSection from '../TaskForm/TaskDueDateSection'; import { Task } from '../../../entities/Task'; import { parseDateString } from '../../../utils/dateUtils'; interface TaskDueDateCardProps { task: Task; isEditing: boolean; editedDueDate: string; onChangeDate: (value: string) => void; onStartEdit: () => void; onSave: () => void; onCancel: () => void; } const TaskDueDateCard: React.FC = ({ task, isEditing, editedDueDate, onChangeDate, onStartEdit, onSave, onCancel, }) => { const { t, i18n } = useTranslation(); const getDueDateDisplay = (dueDate: string) => { const date = parseDateString(dueDate); if (!date) return null; const formattedDate = date.toLocaleDateString(i18n.language, { day: '2-digit', month: '2-digit', year: 'numeric', }); const today = new Date(); today.setHours(0, 0, 0, 0); const target = new Date(date); target.setHours(0, 0, 0, 0); const diffDays = Math.round( (target.getTime() - today.getTime()) / (1000 * 60 * 60 * 24) ); let relativeText = ''; if (diffDays === 0) { relativeText = t('dateIndicators.today', 'today'); } else if (diffDays === 1) { relativeText = t('dateIndicators.tomorrow', 'tomorrow'); } else if (diffDays === -1) { relativeText = t('dateIndicators.yesterday', 'yesterday'); } else if (diffDays > 0) { relativeText = t('task.inDays', 'in {{count}} days', { count: diffDays, }); } else { relativeText = t('task.daysAgo', '{{count}} days ago', { count: Math.abs(diffDays), }); } return { formattedDate, relativeText }; }; return (

{t('task.dueDate', 'Due Date')}

{ const dueDate = parseDateString(task.due_date); if (!dueDate) return false; const today = new Date(); today.setHours(0, 0, 0, 0); dueDate.setHours(0, 0, 0, 0); const isCompleted = task.status === 'done' || task.status === 2 || task.status === 'archived' || task.status === 3 || task.completed_at; return dueDate < today && !isCompleted; })() ? 'border-red-500 dark:border-red-400' : '' }`} > {isEditing ? (
) : ( )}
); }; export default TaskDueDateCard;