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' && (
)}
)
}