/** * Real-time Score Display * * Shows live interview performance scores. * Updates as the user answers questions. */ import React, { useMemo } from 'react'; import { Brain, MessageCircle, Code2, Eye, TrendingUp, TrendingDown, Minus, } from 'lucide-react'; import { getScoreGrade } from '../services/scoringService'; function ScoreCard({ icon: Icon, label, score, previousScore = null }) { const { grade, label: gradeLabel, color } = getScoreGrade(score); const trend = useMemo(() => { if (previousScore === null) return 'neutral'; if (score > previousScore + 2) return 'up'; if (score < previousScore - 2) return 'down'; return 'neutral'; }, [score, previousScore]); return (
{label} {trend === 'up' && } {trend === 'down' && } {trend === 'neutral' && previousScore !== null && }
{score} {grade}
); } function RealTimeScoreDisplay({ scores = {}, previousScores = null, compact = false }) { const { clarity = 50, confidence = 50, technical = 50, eyeContact = 50, overall = 50, } = scores; const prev = previousScores || {}; const { grade, label, color } = getScoreGrade(overall); if (compact) { return (
Score {overall} {grade}
); } return (
{overall}
{label}
Overall Score
); } export default RealTimeScoreDisplay;