import React, { useState } from 'react'; import { motion } from 'framer-motion'; import { Calendar, User, MessageSquare, Paperclip, MoreVertical, CheckCircle, Clock, AlertCircle } from 'lucide-react'; import { tasksAPI } from '../services/api'; import toast from 'react-hot-toast'; const TaskCard = ({ task, onUpdate, onEdit, onDelete }) => { const [isMenuOpen, setIsMenuOpen] = useState(false); const [isUpdating, setIsUpdating] = useState(false); const getStatusIcon = (status) => { switch (status) { case 'completed': return ; case 'in-progress': return ; case 'pending': return ; default: return null; } }; const getPriorityColor = (priority) => { switch (priority) { case 'high': return 'bg-red-100 text-red-800 dark:bg-red-900/20 dark:text-red-400'; case 'medium': return 'bg-yellow-100 text-yellow-800 dark:bg-yellow-900/20 dark:text-yellow-400'; case 'low': return 'bg-green-100 text-green-800 dark:bg-green-900/20 dark:text-green-400'; default: return 'bg-gray-100 text-gray-800 dark:bg-gray-900/20 dark:text-gray-400'; } }; const handleStatusChange = async (newStatus) => { setIsUpdating(true); try { await tasksAPI.updateStatus(task._id, newStatus); onUpdate && onUpdate(task._id, { status: newStatus }); toast.success('Task status updated'); } catch (error) { toast.error('Failed to update status'); } finally { setIsUpdating(false); } }; const formatDate = (date) => { return new Date(date).toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' }); }; return (
{getStatusIcon(task.status)}

{task.title}

{task.priority}
{isMenuOpen && (
)}

{task.description}

{task.assignee && (
{task.assignee.name}
)} {task.deadline && (
{formatDate(task.deadline)}
)}
{task.comments && task.comments.length > 0 && (
{task.comments.length}
)} {task.attachments && task.attachments.length > 0 && (
{task.attachments.length}
)}
); }; export default TaskCard;