Types
All public types are exported from react-upload-kit. Component prop types are exported from react-upload-kit/components.
Adapter
ts
type UploadAdapter<TResponse = unknown> = (
file: File,
context: UploadAdapterContext,
) => Promise<TResponse>;
interface UploadAdapterContext {
onProgress: (percent: number) => void;
signal: AbortSignal;
}File state
ts
type UploadFileStatus =
| 'pending'
| 'uploading'
| 'success'
| 'error'
| 'cancelled';
interface UploadFile<TResponse = unknown> {
id: string;
file: File;
status: UploadFileStatus;
progress: number;
error: Error | null;
response: TResponse | null;
retryCount: number;
}Validation
ts
type AcceptPattern = string;
interface FileRejection {
file: File;
errors: FileError[];
}
interface FileError {
code: FileErrorCode;
message: string;
}
type FileErrorCode =
| 'file-too-large'
| 'file-too-small'
| 'too-many-files'
| 'file-invalid-type'
| 'validation-error';
type FileValidator = (file: File) => FileError | FileError[] | null;Uploader
ts
interface UploaderOptions<TResponse = unknown> { /* see useUploader */ }
interface UploaderInstance<TResponse = unknown> { /* see useUploader */ }Full field lists: useUploader.
Dropzone, paste, preview
ts
interface DropzoneOptions { /* see useDropzone */ }
interface DropzoneState { /* see useDropzone */ }
interface PasteOptions {
onPaste: (files: File[]) => void;
accept?: AcceptPattern[];
enabled?: boolean;
targetRef?: React.RefObject<Element | null>;
}
interface FilePreviewOptions {
maxWidth?: number;
maxHeight?: number;
enabled?: boolean;
}
interface FilePreviewState {
previewUrl: string | null;
isLoading: boolean;
}Components
ts
import type {
DropzoneProps,
FileListProps,
FileListItemContext,
UploadTriggerProps,
UploadTriggerContext,
} from 'react-upload-kit/components';