import React from 'react'; import type { ReportData, ComplianceItem } from '../types'; import { CheckCircleIcon, XCircleIcon, InfoIcon } from './Icons'; interface ReportDisplayProps { report: ReportData; } const statusClass = (status: 'OK' | 'FALHA' | 'CONFORME' | 'NÃO CONFORME') => { switch (status) { case 'OK': case 'CONFORME': return 'text-emerald-600 bg-emerald-50 dark:bg-emerald-900/20 dark:text-emerald-400 border border-emerald-200 dark:border-emerald-800'; case 'FALHA': case 'NÃO CONFORME': return 'text-red-600 bg-red-50 dark:bg-red-900/20 dark:text-red-400 border border-red-200 dark:border-red-800'; default: return 'text-slate-600 bg-slate-50 dark:bg-slate-800/50 dark:text-slate-400 border border-slate-200 dark:border-slate-700'; } }; const statusIcon = (status: 'OK' | 'FALHA') => { return status === 'OK' ? : ; }; const ComplianceTableRow: React.FC<{ item: ComplianceItem; headerLabel: string }> = ({ item, headerLabel }) => ( {headerLabel} {item.property || item.element || item.test} Norma {item.norm} Certificado {item.certificate} Status {statusIcon(item.status)} {item.status} ); export const ReportDisplay: React.FC = ({ report }) => { const { identification, compliance, overPerformance, equivalents, confidence } = report; return (

Relatório Técnico de Qualidade

Análise de conformidade normativa assistida por IA

Grau de Confiança da Análise

{confidence} %
{/* Identification Section */}

1. Dados de Identificação

    {Object.entries(identification).map(([key, value]) => (
  • {key.replace(/([A-Z])/g, ' $1')} {value}
  • ))}
{/* Compliance Section */}

2. Verificação de Conformidade

{compliance.status}

Análise de Propriedades Mecânicas

{compliance.mechanical.map((item, i) => )}
Propriedade Norma Certificado Status

Análise de Composição Química (%)

{compliance.chemical.map((item, i) => )}
Elemento Norma Certificado Status
{compliance.otherTests.length > 0 && (

Outros Testes

{compliance.otherTests.map((item, i) => )}
Teste Norma Certificado Status
)}
{/* Over-Performance Section */} {compliance.status === 'CONFORME' && overPerformance.length > 0 && (

3. Destaques de Desempenho

Este material excede os requisitos mínimos normativos nos seguintes aspectos:

{overPerformance.map((item, i) => (
{item.property} {item.value} superior ao mínimo.
))}
)} {/* Equivalents Section */}

4. Normas Equivalentes

Equivalências internacionais para {identification.standards}:

{equivalents.map((item, i) => (

{item.system}

{item.norm}

))}
); };