import React, { useState } from 'react'; import { HelpCircle, X } from 'lucide-react'; import gradeImage from '../assets/grade.jpg'; interface AdhesionGrade { value: string; label: string; areaRemoved: string; status: 'approved' | 'warning' | 'rejected' | 'critical'; statusLabel: string; description: string; spriteY: number; } const adhesionGrades: AdhesionGrade[] = [ { value: '5B', label: '5B / 5Y', areaRemoved: '0%', status: 'approved', statusLabel: 'Aprovado', description: 'As bordas dos cortes estão completamente lisas; nenhum quadradinho da grade se soltou. A grade parece intacta, apenas riscos finos.', spriteY: 14 }, { value: '4B', label: '4B / 4Y', areaRemoved: '< 5%', status: 'approved', statusLabel: 'Geralmente Aprovado', description: 'Pequenas lascas de tinta se soltaram nas interseções dos cortes. A área afetada é inferior a 5% da área total da grade.', spriteY: 29 }, { value: '3B', label: '3B / 3Y', areaRemoved: '5 - 15%', status: 'warning', statusLabel: 'Limite Aceitável', description: 'Pequenas lascas se soltaram ao longo das bordas e nas interseções. As linhas de corte parecem irregulares e alguns cantinhos dos quadrados sumiram.', spriteY: 44 }, { value: '2B', label: '2B / 2Y', areaRemoved: '15 - 35%', status: 'rejected', statusLabel: 'Geralmente Reprovado', description: 'A tinta descascou ao longo das bordas e em partes dos quadrados. É visível que a tinta está falhando; faixas inteiras ao lado dos cortes podem ter saído.', spriteY: 59 }, { value: '1B', label: '1B / 1Y', areaRemoved: '35 - 65%', status: 'rejected', statusLabel: 'Reprovado', description: 'A tinta descascou em fitas largas ou quadrados inteiros se soltaram. A grade está muito danificada, com grandes buracos.', spriteY: 74 }, { value: '0B', label: '0B / 0Y', areaRemoved: '> 65%', status: 'critical', statusLabel: 'Reprovado Crítico', description: 'A descamação e remoção é pior que o grau 1B (mais de 65% da área). A maior parte da tinta na área do teste foi arrancada pela fita.', spriteY: 89 } ]; interface AdhesionGradeSelectProps { name: string; label?: string; value: string; onChange: (e: React.ChangeEvent) => void; } export const AdhesionGradeSelect: React.FC = ({ name, label, value, onChange }) => { const [showGuide, setShowGuide] = useState(false); const getStatusColor = (status: AdhesionGrade['status']) => { switch (status) { case 'approved': return 'text-green-400 bg-green-500/20 border-green-500/30'; case 'warning': return 'text-amber-400 bg-amber-500/20 border-amber-500/30'; case 'rejected': return 'text-red-400 bg-red-500/20 border-red-500/30'; case 'critical': return 'text-red-500 bg-red-600/30 border-red-600/40'; default: return 'text-gray-400 bg-gray-500/20 border-gray-500/30'; } }; return (
{/* Label with help button */}
{label && }
{/* Guide Modal */} {showGuide && ( <> {/* Backdrop */}
setShowGuide(false)} /> {/* Modal */}
{/* Header */}

Guia de Classificação ASTM D3359

Método B - Teste de Aderência de Corte em Grade

{/* Content */}
{/* Grade Image */}
Guia Visual ASTM D3359
{/* Grade Cards */}
{adhesionGrades.map((grade) => (
{grade.value} {grade.areaRemoved}

{grade.statusLabel}

{grade.description}

))}
{/* Info Note */}

Nota: A escala ASTM funciona como uma "nota escolar": 5B é a nota máxima (perfeito) e 0B é a nota mínima (reprovado).

)}
); };