import Link from "next/link" import { ChevronRight, GraduationCap, PenTool, TriangleAlert } from "lucide-react" import { Avatar, AvatarFallback, AvatarImage } from "@/shared/components/ui/avatar" import { Badge } from "@/shared/components/ui/badge" import { Card, CardContent, CardHeader, CardTitle } from "@/shared/components/ui/card" import type { ChildDashboardData } from "@/modules/parent/types" const getInitials = (name: string | null) => { if (!name) return "S" return name.slice(0, 2).toUpperCase() } export function ChildCard({ child }: { child: ChildDashboardData }) { const { basicInfo, homeworkSummary, gradeTrend } = child const ranking = gradeTrend.ranking const latestGrade = gradeTrend.recent[0] return ( {getInitials(basicInfo.name)}
{basicInfo.name ?? "Unnamed"}
{basicInfo.className ? ( {basicInfo.className} ) : null} {basicInfo.gradeName ? {basicInfo.gradeName} : null} {basicInfo.relation ? ยท {basicInfo.relation} : null}
Pending
{homeworkSummary.pendingCount}
Overdue
0 ? "text-destructive" : "" }`} > {homeworkSummary.overdueCount}
Avg
{ranking ? `${Math.round(ranking.percentage)}%` : "-"}
{latestGrade ? (
Latest:{" "} {latestGrade.score}/{latestGrade.maxScore} {" "} ({latestGrade.assignmentTitle.slice(0, 20)} {latestGrade.assignmentTitle.length > 20 ? "..." : ""})
) : null}
) }