import Link from "next/link" import { AlertTriangle, ChevronRight, GraduationCap, PenTool, TrendingDown, TrendingUp, Minus, } 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 { cn, getInitials } from "@/shared/lib/utils" import type { ChildDashboardData } from "@/modules/parent/types" type TrendDirection = "up" | "down" | "flat" | "unknown" const computeTrend = (trend: { percentage: number }[]): TrendDirection => { if (trend.length < 2) return "unknown" const latest = trend[trend.length - 1].percentage const prev = trend[trend.length - 2].percentage if (latest > prev) return "up" if (latest < prev) return "down" return "flat" } const TrendIcon = ({ direction }: { direction: TrendDirection }) => { if (direction === "up") { return } if (direction === "down") { return } if (direction === "flat") { return } return null } export function ChildCard({ child }: { child: ChildDashboardData }) { const { basicInfo, homeworkSummary, gradeTrend } = child const ranking = gradeTrend.ranking const latestGrade = gradeTrend.recent[0] const childName = basicInfo.name ?? "Child" const hasOverdue = homeworkSummary.overdueCount > 0 const trendDirection = computeTrend(gradeTrend.trend) return ( {getInitials(basicInfo.name)} {basicInfo.name ?? "Unnamed"} {basicInfo.className ? ( {basicInfo.className} ) : null} {basicInfo.gradeName ? {basicInfo.gradeName} : null} {basicInfo.relation ? ยท {basicInfo.relation} : null} {hasOverdue ? ( ) : ( )} Pending {homeworkSummary.pendingCount} Overdue {homeworkSummary.overdueCount} Avg {ranking ? `${Math.round(ranking.percentage)}%` : "-"} {latestGrade ? ( Latest: {latestGrade.score}/{latestGrade.maxScore} ({latestGrade.assignmentTitle}) ) : null} ) }