import { Box, LinearProgress, Paper, Typography } from "@mui/material"; import type { LoadProgress } from "../types"; function bytesPretty(n: number): string { if (n < 1024) return `${n} B`; if (n < 1024 * 1024) return `${(n / 1024).toFixed(1)} KB`; if (n < 1024 * 1024 * 1024) return `${(n / (1024 * 1024)).toFixed(1)} MB`; return `${(n / (1024 * 1024 * 1024)).toFixed(2)} GB`; } export function LoadingPanel({ progress }: { progress: LoadProgress }) { const pct = progress.loaded && progress.total ? Math.min(100, Math.round((progress.loaded / progress.total) * 100)) : null; return ( {progress.phase} {progress.message} {progress.loaded !== undefined && ( {bytesPretty(progress.loaded)} {progress.total ? ` / ${bytesPretty(progress.total)}` : ""} )} ); }