import { Calculator, Scale, Printer, AlertCircle } from 'lucide-react'; import './ClassDetail.css'; export const ClassDetail = ({ classData, onClose }) => { const majorGrades = classData.assignments.filter(a => a.isMajorGrade); const minorGrades = classData.assignments.filter(a => !a.isMajorGrade); const calculateAverage = (grades) => { if (grades.length === 0) return '0.00%'; const sum = grades.reduce((acc, g) => { const scoreMatch = g.score.match(/[\d.]+/); const score = scoreMatch ? parseFloat(scoreMatch[0]) : 0; return acc + score; }, 0); return `${(sum / grades.length).toFixed(2)}%`; }; const getScoreColor = (score) => { const scoreMatch = score.match(/[\d.]+/); const numScore = scoreMatch ? parseFloat(scoreMatch[0]) : 0; if (numScore >= 90) return 'score-excellent'; if (numScore >= 80) return 'score-good'; if (numScore >= 70) return 'score-average'; return 'score-poor'; }; const hasAlert = (score) => { const scoreMatch = score.match(/[\d.]+/); const numScore = scoreMatch ? parseFloat(scoreMatch[0]) : 0; return numScore < 80; }; return (
e.stopPropagation()}> {/* Header */}

{classData.className}

{classData.teacher} {classData.period} {classData.category}
{classData.finalGrades?.[0]?.grade || 'N/A'}
{/* Action buttons */}
{/* Assignments Table */}
{/* Major Grades */} {majorGrades.length > 0 && ( <> {majorGrades.map((assignment, idx) => ( ))} )} {/* Minor Grades */} {minorGrades.length > 0 && ( <> {minorGrades.map((assignment, idx) => ( ))} )}
Description Due Date Score Attempts
Major Grades {calculateAverage(majorGrades)}
{hasAlert(assignment.score) && ( )} {assignment.name} {assignment.dueDate} {assignment.score} {assignment.attempts}
Minor Grades {calculateAverage(minorGrades)}
{hasAlert(assignment.score) && ( )} {assignment.name} {assignment.dueDate} {assignment.score} {assignment.attempts}
{/* Footer */}
); };