import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"; import { useAttendance } from "@/hooks/queries"; import { PieChart, Pie, Cell, ResponsiveContainer, Legend, Tooltip } from "recharts"; import AiTipBanner from "@/components/ai/AiTipBanner"; const badgeVariant = (s: string) => s === "present" ? "default" as const : s === "absent" ? "destructive" as const : "secondary" as const; export default function StudentAttendance() { const { data: attendanceRecords = [], isLoading } = useAttendance(); if (isLoading) return
; const counts = { present: 0, absent: 0, late: 0, excused: 0 }; attendanceRecords.forEach(a => counts[a.status]++); const total = attendanceRecords.length; const rate = total > 0 ? ((counts.present + counts.late) / total * 100).toFixed(1) : "0"; const pieData = [ { name: "Present", value: counts.present, color: "hsl(142, 71%, 45%)" }, { name: "Late", value: counts.late, color: "hsl(38, 92%, 50%)" }, { name: "Absent", value: counts.absent, color: "hsl(0, 72%, 51%)" }, { name: "Excused", value: counts.excused, color: "hsl(199, 89%, 48%)" }, ].filter(d => d.value > 0); return (

Attendance

Your attendance record across all courses.

Summary

{rate}%

Attendance Rate

{pieData.map((d, i) => )}
Attendance Records DateCourseStatus {attendanceRecords.map(a => ( {a.date} {a.course_name} {a.status} ))}
); }