import React from "react"; export interface ProgressData { id: string; percentage: number; speed?: number; label?: string; } interface ProgressBarProps { progress: ProgressData[]; className?: string; size?: "small" | "medium" | "large"; showSpeed?: boolean; showLabel?: boolean; } const ProgressBar: React.FC = ({ progress, className = "", size = "medium", showSpeed = false, showLabel = false, }) => { const sizeClasses = { small: "w-16 h-1", medium: "w-20 h-1.5", large: "w-24 h-2", }; const progressClasses = sizeClasses[size]; if (progress.length === 0) { return null; } if (progress.length === 1) { // Single progress bar const item = progress[0]; const percentage = Math.max(0, Math.min(100, item.percentage)); return (
{(showSpeed || showLabel) && (
{showLabel && item.label && ( {item.label} )} {showSpeed && item.speed !== undefined && item.speed > 0 ? ( {item.speed.toFixed(1)}MB/s ) : showSpeed ? ( Downloading... ) : null}
)}
); } // Multiple progress bars return (
{progress.map((item) => { const percentage = Math.max(0, Math.min(100, item.percentage)); return ( ); })}
{progress.length} downloading...
); }; export default ProgressBar;