完整性更新

现在已经实现了大部分基础功能
This commit is contained in:
SpecialX
2026-01-08 11:14:03 +08:00
parent 0da2eac0b4
commit 57807def37
155 changed files with 26421 additions and 1036 deletions

View File

@@ -0,0 +1,56 @@
import Link from "next/link"
import { PenTool } from "lucide-react"
import { Badge } from "@/shared/components/ui/badge"
import { Button } from "@/shared/components/ui/button"
import { Card, CardContent, CardHeader, CardTitle } from "@/shared/components/ui/card"
import { EmptyState } from "@/shared/components/ui/empty-state"
import type { HomeworkAssignmentListItem } from "@/modules/homework/types"
export function TeacherHomeworkCard({ assignments }: { assignments: HomeworkAssignmentListItem[] }) {
return (
<Card>
<CardHeader className="flex flex-row items-center justify-between">
<CardTitle className="text-base flex items-center gap-2">
<PenTool className="h-4 w-4 text-muted-foreground" />
Homework
</CardTitle>
<div className="flex items-center gap-2">
<Button asChild variant="outline" size="sm">
<Link href="/teacher/homework/assignments">Open list</Link>
</Button>
<Button asChild size="sm">
<Link href="/teacher/homework/assignments/create">New</Link>
</Button>
</div>
</CardHeader>
<CardContent className="grid gap-3">
{assignments.length === 0 ? (
<EmptyState
icon={PenTool}
title="No homework assignments yet"
description="Create an assignment from an exam and publish it to students."
action={{ label: "Create assignment", href: "/teacher/homework/assignments/create" }}
className="border-none h-72"
/>
) : (
assignments.slice(0, 6).map((a) => (
<Link
key={a.id}
href={`/teacher/homework/assignments/${encodeURIComponent(a.id)}`}
className="flex items-center justify-between rounded-md border bg-card px-4 py-3 hover:bg-muted/50"
>
<div className="min-w-0">
<div className="font-medium truncate">{a.title}</div>
<div className="text-sm text-muted-foreground truncate">{a.sourceExamTitle}</div>
</div>
<Badge variant="outline" className="capitalize">
{a.status}
</Badge>
</Link>
))
)}
</CardContent>
</Card>
)
}