import React, { useState, useEffect } from 'react'; import { CheckCircle2, Loader2, Circle } from 'lucide-react'; const AIProcessingSteps = ({ steps = [], onComplete, delay = 1200, activeStep = null }) => { const [internalStep, setInternalStep] = useState(0); const currentStep = activeStep !== null ? activeStep : internalStep; useEffect(() => { if (activeStep !== null) return; // Disable internal timer if controlled externally if (internalStep < steps.length) { const timer = setTimeout(() => { setInternalStep(prev => prev + 1); }, delay); return () => clearTimeout(timer); } else if (internalStep === steps.length) { if (onComplete) { const timer = setTimeout(() => { onComplete(); }, 800); return () => clearTimeout(timer); } } }, [currentStep, steps.length, delay, onComplete]); const progressPercentage = Math.min((currentStep / steps.length) * 100, 100); return ( <>
{steps.map((step, index) => { const isCompleted = currentStep > index; const isActive = currentStep === index; const isPending = currentStep < index; return (
{isCompleted ? ( ) : isActive ? ( ) : ( )}
{step}
); })}
{/* Progress Bar */}
); }; export default AIProcessingSteps;