"use client"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faTriangleExclamation } from "@fortawesome/free-solid-svg-icons"; import type { AnalysisReport, TestResult, TestSeverity, TestStatus } from "../types/analysis"; type AnalysisResultsProps = { report: AnalysisReport; }; const severityStyles: Record = { spam: { label: "Spam", className: "text-spam border-spam/40" }, suspicious: { label: "Suspicious", className: "text-suspicious border-suspicious/40" }, clean: { label: "Clean", className: "text-clean border-clean/40" }, info: { label: "Info", className: "text-accent border-accent/40" }, }; const statusStyles: Record = { success: { label: "Success", className: "text-clean border-clean/40" }, error: { label: "Error", className: "text-spam border-spam/40" }, skipped: { label: "Skipped", className: "text-suspicious border-suspicious/40" }, }; const getErrorMessage = (result: TestResult): string => { const message = result.error?.trim(); return message && message.length > 0 ? message : "Unknown failure."; }; export default function AnalysisResults({ report }: AnalysisResultsProps) { return (
Analysis Report {report.metadata.passedTests} passed / {report.metadata.failedTests} failed
    {report.results.map((result) => { const statusStyle = statusStyles[result.status]; const severityStyle = severityStyles[result.severity]; return (
  • {result.testName} Test #{result.testId} ยท {result.headerName}
    {statusStyle.label} {severityStyle.label}
    {result.analysis ? (

    {result.analysis}

    ) : null} {result.description ? (

    {result.description}

    ) : null} {result.status === "error" ? (
    Error: {getErrorMessage(result)}
    ) : null}
  • ); })}
); }