import React, { useState } from 'react'; import { motion, AnimatePresence } from 'motion/react'; import { Plus, Search, Trash2, Clock, CheckCircle, X, ArrowRight, ArrowLeft, FolderOpen } from 'lucide-react'; export default function AssignmentTracker({ assignments, setAssignments, courses, themeColor }) { const [searchTerm, setSearchTerm] = useState(''); const [selectedCourseId, setSelectedCourseId] = useState('All'); const [selectedPriority, setSelectedPriority] = useState('All'); // Custom dialog simulation with modal const [showAddForm, setShowAddForm] = useState(false); const [newTitle, setNewTitle] = useState(''); const [newDescription, setNewDescription] = useState(''); const [newCourseId, setNewCourseId] = useState(courses[0]?.id || ''); const [newPriority, setNewPriority] = useState('Medium'); const [newDueDate, setNewDueDate] = useState('2026-06-15'); const handleMoveStatus = (id, currentStatus, direction) => { const statusOrder = ['Pending', 'In_Progress', 'Completed']; const currentIndex = statusOrder.indexOf(currentStatus); let nextIndex = currentIndex; if (direction === 'forward' && currentIndex < 2) { nextIndex = currentIndex + 1; } else if (direction === 'backward' && currentIndex > 0) { nextIndex = currentIndex - 1; } if (nextIndex !== currentIndex) { const updated = assignments.map(a => { if (a.id === id) { return { ...a, status: statusOrder[nextIndex] }; } return a; }); setAssignments(updated); } }; const handleDeleteAssignment = (id) => { if (confirm('Are you sure you want to delete this task?')) { setAssignments(assignments.filter(a => a.id !== id)); } }; const handleCreateAssignment = (e) => { e.preventDefault(); if (!newTitle.trim()) return; const courseObj = courses.find(c => c.id === newCourseId); const newAss = { id: 'ass-' + Date.now().toString(), title: newTitle, courseId: newCourseId, courseName: courseObj ? courseObj.name : 'General Task', description: newDescription, dueDate: newDueDate, priority: newPriority, status: 'Pending' }; setAssignments([newAss, ...assignments]); // Reset form states setNewTitle(''); setNewDescription(''); setShowAddForm(false); }; // Filter calculations const filteredAssignments = assignments.filter((item) => { const matchesSearch = item.title.toLowerCase().includes(searchTerm.toLowerCase()) || item.description.toLowerCase().includes(searchTerm.toLowerCase()); const matchesPriority = selectedPriority === 'All' ? true : item.priority === selectedPriority; const matchesCourse = selectedCourseId === 'All' ? true : item.courseId === selectedCourseId; return matchesSearch && matchesPriority && matchesCourse; }); const columns = [ { id: 'Pending', title: 'To Do', colorClass: 'border-rose-500', bgClass: 'bg-rose-50/20', textClass: 'text-rose-600' }, { id: 'In_Progress', title: 'In Progress', colorClass: 'border-amber-500', bgClass: 'bg-amber-50/20', textClass: 'text-amber-600' }, { id: 'Completed', title: 'Completed', colorClass: 'border-emerald-500', bgClass: 'bg-emerald-50/20', textClass: 'text-emerald-600' } ]; return (
{/* Overview stats & filter controls header */}
{/* Statistics highlights bar */}

Task Board

Check progress & prioritize assignments dynamically

{/* Dynamic Live Filtering Controls */}
{/* Search bar */}
setSearchTerm(e.target.value)} className="w-full text-xs text-slate-800 pl-10 pr-4 py-2.5 rounded-xl border border-slate-200 outline-none bg-slate-50 focus:border-indigo-400 focus:bg-white transition-all" />
{/* Module course ID filter */}
{/* Priority flag filter */}
{/* Quick Counter label indicator */}
Filtered: {filteredAssignments.length} Assignments
{/* Main Kanban Board block */}
{columns.map((col) => { const colItems = filteredAssignments.filter(item => item.status === col.id); return (
{/* Lane Heading Header */}

{col.title}

{colItems.length}
{/* Lane Items collection */}
{colItems.map((item, idx) => ( {/* Header tags inside cards */}
{item.courseName} {item.priority}
{/* Title and Description */}

{item.title}

{item.description || 'No description provided.'}

{/* Timeline detail */}
Due: {item.dueDate}
{/* Column controls buttons */}
{/* Left control button */} {col.id !== 'Pending' ? ( ) : ( )} {/* Delete icon */} {/* Right control button */} {col.id !== 'Completed' ? ( ) : (
)}
))} {colItems.length === 0 && (

No tasks in this stage.

)}
); })}
{/* Floating Add Assignment Modal/Form overlay */} {showAddForm && (
{/* Modal Head */}

Add New Assignment

{/* Modal Body */}
{/* Title */}
setNewTitle(e.target.value)} className="w-full text-xs text-slate-850 px-3.5 py-2.5 rounded-xl border border-slate-200 focus:outline-none focus:border-indigo-400 bg-slate-50" />
{/* Course Map Selection */}
{/* Priority Selection */}
{/* Due Date */}
setNewDueDate(e.target.value)} className="w-full text-xs text-slate-805 px-3.5 py-2.5 rounded-xl border border-slate-200 focus:outline-none bg-slate-50 font-mono" />
{/* Description Text area */}