import { CheckCircle2, XCircle, ChevronDown, ChevronUp } from "lucide-react"; import { useState } from "react"; import type { AngleSummary } from "@/types"; import { ANGLE_DESCRIPTIONS } from "@/utils/constants"; interface AngleCardProps { summary: AngleSummary; } export function AngleCard({ summary }: AngleCardProps) { const [expanded, setExpanded] = useState(false); const statusColor = summary.detected ? "text-emerald-400 border-emerald-500/30 bg-emerald-500/5" : "text-red-400 border-red-500/30 bg-red-500/5"; const scorePercent = Math.round(summary.bestScore * 100); return (
summary.detected && setExpanded((e) => !e)} >
{/* Icon */}
{summary.detected ? ( ) : ( )}
{/* Info */}
{summary.angle} {summary.detected && ( Detected )} {!summary.detected && ( Missing )}

{ANGLE_DESCRIPTIONS[summary.angle]}

{/* Score bar */} {summary.detected && (
{scorePercent}%
)} {/* Expand toggle */} {summary.detected && summary.detectedIn.length > 0 && (
{expanded ? : }
)}
{/* Expanded — show images and filenames */} {expanded && summary.detectedIn.length > 0 && (

Found in

{summary.previewUrls.length > 0 ? (
{summary.previewUrls.map((url, i) => (
{summary.detectedIn[i]}

{summary.detectedIn[i]}

))}
) : (
{summary.detectedIn.map((fname) => (
{fname}
))}
)}
)}
); }