import { CheckCircle2, XCircle, Clock, Loader2, SkipForward, Send, Zap, Square, Eye, } from "lucide-react"; const STATUS_CONFIG = { queued: { icon: Clock, color: "text-[var(--c-text-muted)]", bg: "bg-[var(--c-bg-subtle)]", border: "border-[var(--c-border)]", label: "Queued" }, generating: { icon: Loader2, color: "text-indigo-500 dark:text-indigo-400", bg: "bg-indigo-500/5", border: "border-indigo-500/10", label: "Generating", spin: true }, ready: { icon: Eye, color: "text-amber-600 dark:text-amber-300", bg: "bg-amber-500/10", border: "border-amber-500/20", label: "Ready" }, sending: { icon: Loader2, color: "text-indigo-600 dark:text-indigo-300", bg: "bg-indigo-500/10", border: "border-indigo-500/20", label: "Sending", spin: true }, sent: { icon: CheckCircle2, color: "text-emerald-700 dark:text-emerald-300", bg: "bg-emerald-500/10", border: "border-emerald-500/20", label: "Sent" }, skipped: { icon: SkipForward, color: "text-[var(--c-text-muted)]", bg: "bg-[var(--c-bg-subtle)]", border: "border-[var(--c-border)]", label: "Skipped" }, failed: { icon: XCircle, color: "text-red-500 dark:text-red-400", bg: "bg-red-500/5", border: "border-red-500/10", label: "Failed" }, }; export default function EmailQueue({ queue, currentIndex, stats, batchMode, autoRunning, onSelect, onApprove, onSkip, onAutoRun, onStopAuto }) { if (!queue || queue.length === 0) return null; const total = queue.length; const sent = stats?.sent || 0; const failed = stats?.failed || 0; const skipped = stats?.skipped || 0; const done = sent + failed + skipped; const progress = total > 0 ? (done / total) * 100 : 0; return (
{sent}/{total} sent {skipped > 0 && {skipped} skipped} {failed > 0 && {failed} failed} {autoRunning && Running...}
{batchMode === "auto" && !autoRunning && sent < total && ( )} {autoRunning && ( )}
{queue.map((item, i) => { const config = STATUS_CONFIG[item.status] || STATUS_CONFIG.queued; const Icon = config.icon; const isActive = i === currentIndex; return (
{isActive && item.status === "ready" && batchMode === "manual" && (
)}
); })}
); }