/** Metadata only, not a real File/Blob — previewUrl is a blob: URL for images; there is no way to recover the original File. */ export type UploadedFile = { /** Random per pick, not derived from the file; the same file re-added gets a new id. */ id: string; /** Original file name with extension; its extension also labels the tile of a non-image file. */ name: string; /** Bytes, while `maxTotalSize` is in MB. */ size: number; /** @deprecated FileUploader never sets it; always undefined. Read the extension from `name`. */ type?: string; /** A blob: URL for images, an empty string for every other file. */ previewUrl?: string; }; /** Same name as FileUpload's own, unrelated props type — this one is not exported from the package; only FileUpload's ships publicly. */ export type FileUploaderProps = { /** Defaults to 10; files past the cap are silently dropped, no toast. */ maxFiles?: number; /** Total MB cap, default 20; an over-limit batch is rejected whole with a toast. */ maxTotalSize?: number; /** Extensions without dots, default jpeg/jpg/png; filters the picker only, drops are never checked. */ acceptTypes?: string[]; /** Whole list after each add or remove; the uploader revokes the blob of a removed or rejected image; revoke the rest yourself when done. */ onFilesChange?: (files: UploadedFile[]) => void; };