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} ) }