/** * What `FileRow` / `FileUploadProgress` need in order to draw a file — nothing more. `UploadingFile` * from `UploadMediaStore` is structurally assignable, so store-driven lists pass straight through; * a static list writes the literal it actually has (`{ file, status: 'success' }`) with no * placeholder ids, blob ids or preview URLs. */ export type UploadFileView = { file: File; /** 0..1 — only meaningful while queued / uploading. @default 0 */ progress?: number; } & ({ status: 'queued' | 'uploading' | 'success'; } | { status: 'error'; error: string; });