import { useNavigate } from "react-router-dom"; import type { InternTaskItem } from "../../../../types/project.types"; const formatDate = (dateStr: string) => new Date(dateStr).toLocaleDateString('id-ID', { day: 'numeric', month: 'short', year: 'numeric' }); const formatTime = (dateStr: string) => new Date(dateStr).toLocaleTimeString('id-ID', { hour: '2-digit', minute: '2-digit' }); type DisplayStatus = InternTaskItem["submission_status"] | "overdue"; const statusStyles: Record = { not_submitted: "bg-gray-50 text-gray-700 border-gray-200", submitted: "bg-green-50 text-green-700 border-green-200", overdue: "bg-red-50 text-red-700 border-red-200", }; const statusLabels: Record = { not_submitted: "Pending", submitted: "Submitted", overdue: "Overdue", }; export default function TaskCard({ task }: { task: InternTaskItem }) { const navigate = useNavigate(); const displayStatus: DisplayStatus = task.submission_status === "not_submitted" && new Date(task.deadline_at).getTime() < Date.now() ? "overdue" : task.submission_status; return (
navigate(`/intern/projects/${task.project_slug}/${task.slug}?type=${task.submission_type}`)} >
{statusLabels[displayStatus]}
Deadline : {formatDate(task.deadline_at)} at {formatTime(task.deadline_at)}
{task.title}
{task.description}
Tipe Submission : {task.submission_type === 'file_upload' ? "File" : "Link"}
{statusLabels[task.submission_status]}
); }