import dynamic from 'next/dynamic' import type { FolderEntry } from '@/lib/client-types' import { formatBytes } from '@/lib/format-bytes' import { SpinnerIcon, CheckIcon, XIcon, ChevronIcon } from '@/components/ui/icons' import DriveStatusLine from './DriveStatusLine' import WarningBanner from './WarningBanner' const ModelViewer = dynamic(() => import('../ModelViewer'), { ssr: false }) interface FolderCardProps { entry: FolderEntry index: number onToggleViewer: (index: number) => void onRemove: (index: number) => void } export default function FolderCard({ entry, index, onToggleViewer, onRemove }: FolderCardProps) { return (
{entry.status === 'success' ? (
) : entry.status === 'error' ? (
) : entry.status === 'uploading' ? (
) : ( )}
{entry.folderName}/ Dossier
model : {entry.modelFile.name} {entry.status === 'error' && entry.error && ( {entry.error} )} {entry.status === 'success' && entry.filename && ( Drive + Git OK )}
{/* Drive status sub-line (only during upload, not after success) */} {entry.status !== 'success' && entry.driveStatus && entry.driveStatus !== 'pending' && ( )} {entry.status === 'uploading' && (
)}
{entry.status !== 'uploading' && ( )}
{entry.status !== 'success' && ( )} {entry.modelUrl && entry.status !== 'success' && (
)}
) }