import { useState } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import { ShieldCheck, ShieldAlert, AlertTriangle, ChevronDown, Info, Zap, BarChart2 } from 'lucide-react'; import styles from './VerdictCard.module.css'; const VERDICT_CONFIG = { authentic: { label: 'Authentic', sublabel: 'Human-generated content', Icon: ShieldCheck, colorClass: 'authentic', gradient: 'linear-gradient(135deg, #00c67a 0%, #00a064 100%)', ringColor: 'var(--authentic-glow)', }, ai_generated: { label: 'AI-Generated', sublabel: 'Synthetic content detected', Icon: ShieldAlert, colorClass: 'aiGenerated', gradient: 'linear-gradient(135deg, #ff4757 0%, #d63031 100%)', ringColor: 'var(--ai-generated-glow)', }, suspect: { label: 'Suspect', sublabel: 'Inconclusive — manual review advised', Icon: AlertTriangle, colorClass: 'suspect', gradient: 'linear-gradient(135deg, #f59e0b 0%, #d97706 100%)', ringColor: 'var(--suspect-glow)', }, }; function ScoreArc({ score, verdict }) { const radius = 54; const cx = 70; const cy = 70; const circumference = 2 * Math.PI * radius; const dashOffset = circumference - (score / 100) * circumference; const color = verdict === 'authentic' ? 'var(--authentic)' : verdict === 'ai_generated' ? 'var(--ai-generated)' : 'var(--suspect)'; return ( {score.toFixed(1)} % confidence ); } export default function VerdictCard({ result }) { const config = VERDICT_CONFIG[result.verdict]; const { Icon } = config; const [showBreakdown, setShowBreakdown] = useState(false); return ( {/* Verdict header */}

{config.label}

{config.sublabel}

{/* Score arc */}

AI Involvement Score

{/* Model breakdown */} {showBreakdown && (
{result.modelBreakdown.map((m, i) => (
{m.model} {m.score.toFixed(1)}%
))}
)}
{/* Quick stats */}
Processing time {result.processingTime}
Analysis ID {result.analysisId}
{/* Artifacts summary */}

Detected Artifacts

{result.artifacts.map((artifact) => (
{artifact.type} {artifact.severity}
))}
); }