@health-ecosystem/file-upload
Version:
File upload library for Health Ecosystem applications with improved Next.js 15+ compatibility
75 lines • 2.6 kB
TypeScript
/**
* React Hook for File Upload
* Production-ready React hook for Health Ecosystem file uploads
*/
import { FileUploadClient } from '../FileUploadClient';
import { FileUploadConfig, UploadOptions, UploadResult, FileUploadState } from '../types';
interface UseFileUploadOptions extends Partial<UploadOptions> {
/** Auto-upload when files are selected */
autoUpload?: boolean;
/** Multiple file selection */
multiple?: boolean;
/** Accept file types (HTML input accept attribute) */
accept?: string;
}
interface UseFileUploadReturn {
/** Current upload state */
state: FileUploadState;
/** Upload files */
upload: (files: File[] | File, options?: Partial<UploadOptions>) => Promise<UploadResult | UploadResult[]>;
/** Cancel current upload */
cancel: () => void;
/** Reset upload state */
reset: () => void;
/** Open file picker */
openFilePicker: () => void;
/** File input props for manual integration */
getInputProps: () => {
type: 'file';
accept?: string;
multiple?: boolean;
onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
style: {
display: 'none';
};
};
/** Upload client instance */
client: FileUploadClient;
}
export declare function useFileUpload(config: FileUploadConfig, options?: UseFileUploadOptions): UseFileUploadReturn;
/**
* Hook for drag and drop file upload
*/
export declare function useDropzone(config: FileUploadConfig, options?: UseFileUploadOptions): {
isDragActive: boolean;
getDropzoneProps: () => {
onDragEnter: (event: React.DragEvent) => void;
onDragLeave: (event: React.DragEvent) => void;
onDragOver: (event: React.DragEvent) => void;
onDrop: (event: React.DragEvent) => void;
};
/** Current upload state */
state: FileUploadState;
/** Upload files */
upload: (files: File[] | File, options?: Partial<UploadOptions>) => Promise<UploadResult | UploadResult[]>;
/** Cancel current upload */
cancel: () => void;
/** Reset upload state */
reset: () => void;
/** Open file picker */
openFilePicker: () => void;
/** File input props for manual integration */
getInputProps: () => {
type: "file";
accept?: string;
multiple?: boolean;
onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
style: {
display: "none";
};
};
/** Upload client instance */
client: FileUploadClient;
};
export {};
//# sourceMappingURL=useFileUpload.d.ts.map