import { useTranslation } from 'react-i18next'; import { Loader2, CheckCircle2, AlertCircle, Clock } from 'lucide-react'; interface ProgressBarProps { /** Current task state */ state?: 'PENDING' | 'PROCESSING' | 'SUCCESS' | 'FAILURE' | string; status?: string; // Alternative to state (for compatibility) /** Progress message */ message?: string; /** Progress percentage (0-100) */ progress?: number; /** Show detailed steps */ steps?: Array<{ name: string; status: 'pending' | 'active' | 'complete' | 'error'; message?: string; }>; /** Show a simple indeterminate progress bar */ indeterminate?: boolean; } export default function ProgressBar({ state, status, message, progress, steps, indeterminate = true, }: ProgressBarProps) { const { t } = useTranslation(); const taskState = state || status || 'PROCESSING'; const isActive = taskState === 'PENDING' || taskState === 'PROCESSING'; const isComplete = taskState === 'SUCCESS'; const isError = taskState === 'FAILURE'; return (
{message || t('common.processing', { defaultValue: 'Processing...' })}
{progress !== undefined && ({progress}%
)}{step.name}
{step.message && ({step.message}
)}