// FileList.jsx - the table of entries, and the row actions. function FileList({ entries, busy, onOpen, onPreview, onDelete, onRename, onShare, downloadURL }) { if (busy) { return (
Loading…
); } if (!entries.length) return ; return ( {entries.map(e => ( ))}
Name Size Modified
{e.kind === 'folder' ? '—' : humanBytes(e.size)} {whenText(e.updated_at)}
{e.kind === 'file' && ( )} {e.kind === 'file' && ( )}
); } function Breadcrumb({ path, onNavigate }) { const parts = path === '/' ? [] : path.slice(1).split('/'); return ( ); } // One progress row per file in flight. Uploads are the slowest thing here and // the only one worth showing progress for. function Uploads({ items }) { if (!items.length) return null; return (
{items.map(u => (
{u.name}
{Math.round(u.progress * 100)}%
))}
); }