Skip to content

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';

Released under the MIT License.