import React from 'react'; import useFilesList from '@/hooks/useFilesList'; import Link from 'next/link'; import { Loader2, AlertCircle, Download, Box, Brain } from 'lucide-react'; export default function FilesWidget({ jobID }: { jobID: string }) { const { files, status, refreshFiles } = useFilesList(jobID, 5000); const cleanSize = (size: number) => { if (size < 1024) { return `${size} B`; } else if (size < 1024 * 1024) { return `${(size / 1024).toFixed(1)} KB`; } else if (size < 1024 * 1024 * 1024) { return `${(size / (1024 * 1024)).toFixed(1)} MB`; } else { return `${(size / (1024 * 1024 * 1024)).toFixed(1)} GB`; } }; return (

Checkpoints

{files.length}
{status === 'loading' && (
)} {status === 'error' && (
Error loading checkpoints
)} {['success', 'refreshing'].includes(status) && (
{files.map((file, index) => { const fileName = file.path.split('/').pop() || ''; const nameWithoutExt = fileName.replace('.safetensors', ''); return (
{nameWithoutExt}
.safetensors
{cleanSize(file.size)}
); })}
)} {['success', 'refreshing'].includes(status) && files.length === 0 && (
No checkpoints available
)}
); }