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 { useGrades } from "@/hooks/queries"; import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer } from "recharts"; import AiGradeExplainer from "@/components/ai/AiGradeExplainer"; import AiReportNarrative from "@/components/ai/AiReportNarrative"; export default function StudentGrades() { const { data: gradeRecords = [], isLoading } = useGrades(); if (isLoading) return
; const avgGrade = gradeRecords.length ? (gradeRecords.reduce((sum, g) => sum + (g.grade / g.maxGrade) * 100, 0) / gradeRecords.length).toFixed(1) : "0"; const highest = gradeRecords.length ? Math.max(...gradeRecords.map(g => (g.grade / g.maxGrade) * 100)).toFixed(1) : "0"; const chartData = gradeRecords.map(g => ({ name: g.assignmentTitle.length > 15 ? g.assignmentTitle.slice(0, 15) + "…" : g.assignmentTitle, grade: Math.round((g.grade / g.maxGrade) * 100), })); return (

Grades

Track your academic performance.

Average

{avgGrade}%

Highest

{highest}%

Graded Items

{gradeRecords.length}

Grade Distribution All Grades Assignment Course Type Date Grade {gradeRecords.map(g => ( {g.assignmentTitle} {g.courseName} {g.type} {g.date} {g.grade}/{g.maxGrade} ))}
); }