import { useState } from "react"; import { Card, CardContent } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from "@/components/ui/dialog"; import { Textarea } from "@/components/ui/textarea"; import { useCourseAssignments } from "@/hooks/queries"; import { Upload, ClipboardList } from "lucide-react"; import { useToast } from "@/hooks/use-toast"; import AiWritingHelper from "@/components/ai/AiWritingHelper"; import AiTipBanner from "@/components/ai/AiTipBanner"; import type { CourseAssignment } from "@/types"; export default function StudentAssignments() { const [submitOpen, setSubmitOpen] = useState(false); const [selectedAssignment, setSelectedAssignment] = useState(null); const [draftText, setDraftText] = useState(""); const { toast } = useToast(); const { data: assignmentsData, isLoading } = useCourseAssignments(); const assignments: CourseAssignment[] = assignmentsData?.items ?? []; if (isLoading) return
; const handleSubmit = () => { setSubmitOpen(false); setSelectedAssignment(null); toast({ title: "Assignment Submitted", description: "Your work has been submitted successfully." }); }; const stateVariant = (s: string) => s === "finish" ? "default" : s === "cancel" ? "destructive" : "secondary"; const stateLabel = (s: string) => s === "publish" ? "Active" : s === "finish" ? "Completed" : s === "cancel" ? "Cancelled" : "Draft"; const stateFilter = (state: string) => assignments.filter(a => state === "all" ? true : a.state === state); return (

Assignments

View and submit your course assignments.

All ({assignments.length}) Active ({stateFilter("publish").length}) Completed ({stateFilter("finish").length}) {["all", "publish", "finish"].map(tab => ( {stateFilter(tab).length === 0 ? (

No assignments found.

) : stateFilter(tab).map(a => (

{a.name}

{a.course_name} · Due: {a.submission_date}

Marks: {a.marks} · {a.assignment_type_name}

{stateLabel(a.state)} {a.state === "publish" && ( )}
))}
))}
Submit Assignment

Drag & drop your file here or click to browse

PDF, DOC, DOCX up to 10MB