From 01d5d66466a7bcf4a0c0f454f7b4d58f7e1e7801 Mon Sep 17 00:00:00 2001 From: Siddharth Kumar Sah Date: Mon, 23 Mar 2026 01:39:40 +0800 Subject: [PATCH] feat(web): add ProgressCard component --- .../src/components/common/progress-card.tsx | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 apps/web/src/components/common/progress-card.tsx diff --git a/apps/web/src/components/common/progress-card.tsx b/apps/web/src/components/common/progress-card.tsx new file mode 100644 index 00000000..2b9d5cbe --- /dev/null +++ b/apps/web/src/components/common/progress-card.tsx @@ -0,0 +1,57 @@ +import { Upload, Loader2 } from "lucide-react"; + +interface ProgressCardProps { + active: boolean; + phase: "uploading" | "processing" | "complete"; + label: string; + stage?: string; + percent: number; + elapsed: number; +} + +export function ProgressCard({ + active, + phase, + label, + stage, + percent, + elapsed, +}: ProgressCardProps) { + if (!active) return null; + + const icon = + phase === "uploading" ? ( + + ) : ( + + ); + + const sublabel = [stage, `${elapsed}s`].filter(Boolean).join(" \u00b7 "); + + return ( +
+
+
+ {icon} +
+
+
+ {label} +
+
+ {sublabel} +
+
+ + {Math.round(percent)}% + +
+
+
+
+
+ ); +}