diff --git a/frontend/src/components/downloadRow.tsx b/frontend/src/components/downloadRow.tsx index 45a918f7..14b3dcca 100644 --- a/frontend/src/components/downloadRow.tsx +++ b/frontend/src/components/downloadRow.tsx @@ -43,12 +43,12 @@ export function StatusPill({ job }: { job: DownloadJob }) { // confused by the bar resetting between the separate video and audio streams. if (job.status === "running" && job.phase && PHASE_KEYS.includes(job.phase)) { return ( - {t(`downloads.phase.${job.phase}`)} + {t(`downloads.phase.${job.phase}`)} ); } const key = job.expired ? "expired" : job.status; return ( - + {t(`downloads.status.${key}`)} ); @@ -145,8 +145,8 @@ function SourceRef({ url }: { url: string }) { } }; return ( -
- +
+ - +
); @@ -173,7 +173,7 @@ function ChannelLine({ job }: { job: DownloadJob }) { const { name, url } = jobChannel(job); if (url) { return ( -
+
); } - return
{name}
; + return
{name}
; } export function DownloadRow({ @@ -206,14 +206,14 @@ export function DownloadRow({
{job.job_kind === "edit" && ( - + {t("downloads.clipBadge")} )} {jobTitle(job)}
-
+
{job.asset?.container ? ( // Concrete container (mp4 / m4a / webm …) — reads as the file format, and its audio-vs-video @@ -231,7 +231,7 @@ export function DownloadRow({ className="text-muted inline-flex items-center gap-1" title={new Date(job.created_at).toLocaleString()} > - · {relativeTime(job.created_at)} + · {relativeTime(job.created_at)} ) : null} {job.status === "error" ? ( @@ -264,7 +264,7 @@ export function DownloadRow({ style={{ width: `${job.progress}%` }} />
-
+
{job.progress}% {job.speed_bps ? {formatSpeed(job.speed_bps)} : null} {job.eta_s ? {formatEta(job.eta_s)} : null} @@ -274,7 +274,12 @@ export function DownloadRow({
)}
-
{children}
+ {/* Row action buttons: grown a step here (bigger tap target + icon) without touching the shared + IconBtn — scoped so the same primitive stays smaller in the modals. `shrink-0` + no wrap keeps + them on the title's line; the text column shrinks instead. */} +
+ {children} +
); }