import React, { useState, useEffect } from "react"; import { Loader2, CheckCircle2, Circle, Activity, Cpu, Scan, ShieldCheck, Binary, RefreshCw } from "lucide-react"; import GlassCard from "./GlassCard"; interface Step { label: string; icon: React.ReactNode; } interface ProcessingOverlayProps { isOpen: boolean; type: "diagnosis" | "segmentation"; } const DIAGNOSIS_STEPS: Step[] = [ { label: "Resizing Image", icon: }, { label: "Input to Diagnosis mode", icon: }, { label: "Region identified", icon: }, { label: "Status determined", icon: }, { label: "Stage diagnosed", icon: }, ]; const SEGMENTATION_STEPS: Step[] = [ { label: "Image resizing", icon: }, { label: "Input to model", icon: }, { label: "Reconstructing image and then segmenting cells", icon: }, { label: "Lastly cleaning the mask", icon: }, ]; const ProcessingOverlay: React.FC = ({ isOpen, type }) => { const [currentStep, setCurrentStep] = useState(0); const steps = type === "diagnosis" ? DIAGNOSIS_STEPS : SEGMENTATION_STEPS; useEffect(() => { if (!isOpen) { setCurrentStep(0); return; } const interval = setInterval(() => { setCurrentStep((prev) => { if (prev < steps.length - 1) return prev + 1; return prev; }); }, 2000); // Change step every 2 seconds return () => clearInterval(interval); }, [isOpen, steps.length]); if (!isOpen) return null; return (
{/* Main Loader Icon */}

{type === "diagnosis" ? "Running Diagnosis" : "Generating Segmentation"}

Please wait while our AI models process your sample...

{/* Steps List */}
{steps.map((step, index) => { const isCompleted = index < currentStep; const isCurrent = index === currentStep; return (
{isCompleted ? : step.icon}

{step.label}

{isCurrent && }
); })}
); }; export default ProcessingOverlay;