feat: Implement task editing functionality and improve UI components

- Added EditTaskModal component for editing tasks.
- Integrated EditTaskModal into TaskTab for task editing.
- Refactored AddInternsDialog for better UI and functionality.
- Created AddInternsToProjects component for adding interns to projects.
- Enhanced CreateProjectDialog and CreateTaskDialog with improved styling.
- Introduced EditSubmissionTask component for editing submission tasks.
- Added ProtectedRoutes for route protection based on user roles.
- Implemented API utility for handling requests with authorization.
- Removed obsolete InternRoute and MentorRoute files.
- Updated global CSS styles for better responsiveness and aesthetics.
This commit is contained in:
Kemas M. Aryadary Rasyad
2026-06-22 21:01:25 +07:00
parent ff68115fca
commit dc64fadfdd
21 changed files with 785 additions and 190 deletions
+9 -1
View File
@@ -2,10 +2,12 @@ import type { Project, Task } from '../../../lib/mockData';
import { ClipboardList, Pencil, Trash2 } from 'lucide-react';
import { useState } from 'react';
import CreateTaskModal from './components/CreateTaskDialog';
import EditTaskModal from './components/EditTaskDialog';
export default function TaskTab({ project }: { project: Project }) {
const [isModalOpen, setIsModalOpen] = useState(false);
const [editModalOpen, setEditModalOpen] = useState(false);
const handleEditTask = (taskTitle: string) => {
console.log('Edit task:', taskTitle);
@@ -51,7 +53,7 @@ export default function TaskTab({ project }: { project: Project }) {
{/* Action Buttons (Edit & Delete) */}
<div className="flex items-center gap-4 text-slate-600 shrink-0">
<button
onClick={() => handleEditTask(task.title)}
onClick={() => setEditModalOpen(true)}
className="hover:text-blue-600 transition-colors p-1"
title="Edit Task"
>
@@ -79,6 +81,12 @@ export default function TaskTab({ project }: { project: Project }) {
onClose={() => setIsModalOpen(false)}
/>
}
{editModalOpen &&
<EditTaskModal
isOpen={editModalOpen}
onClose={() => setEditModalOpen(false)}
/>
}
</div>
);
}