"use client"; import { FileText, CheckCircle2, XCircle, Loader2 } from "lucide-react"; import { Progress } from "@/components/ui/progress"; import { FileUploadProgress } from "../hooks/use-file-upload-with-progress"; interface FileUploadProgressListProps { fileProgresses: FileUploadProgress[]; } export function FileUploadProgressList({ fileProgresses }: FileUploadProgressListProps) { if (fileProgresses.length === 0) { return null; } return (

파일 업로드 진행 상황 ({fileProgresses.length}개)

{fileProgresses.map((fileProgress, index) => ( ))}
); } interface FileUploadProgressItemProps { fileProgress: FileUploadProgress; } function FileUploadProgressItem({ fileProgress }: FileUploadProgressItemProps) { const { file, progress, status, error } = fileProgress; const getStatusIcon = () => { switch (status) { case "completed": return ; case "error": return ; case "uploading": return ; default: return ; } }; const getStatusColor = () => { switch (status) { case "completed": return "border-green-200 bg-green-50/50"; case "error": return "border-red-200 bg-red-50/50"; case "uploading": return "border-primary/30 bg-primary/5"; default: return "border-muted bg-muted/30"; } }; return (
{getStatusIcon()}

{file.name}

{(file.size / 1024 / 1024).toFixed(2)} MB

{status !== "pending" && (
{status === "completed" ? ( 완료 ) : status === "error" ? ( 실패 ) : ( {Math.round(progress)}% )}
)}
{/* Progress Bar */} {status === "uploading" && ( <> {/* 90% 이상일 때 추가 안내 메시지 */} {progress >= 90 && progress < 100 && (

서버에서 DOLCE API로 전송 중...

)} )} {/* 에러 메시지 */} {status === "error" && error && (

{error}

)}
); }