interface FileUploadProps { width?: string // Width of the upload area. height?: string // Height of the upload area. label?: string // Label text displayed above the upload area. labelPosition?: 'top' | 'left' // Position of the label. icon?: string // Icon to display. placeholder?: string // Placeholder text displayed when no files are selected. error?: string // Error message to display when the upload fails. disabled?: boolean // Whether to disable the upload. required?: boolean // Whether to require the upload. multiple?: boolean // Whether to allow multiple files to be selected. accept?: string // File types to accept. maxSize?: number // Maximum file size in MB. uploadUrl?: string // URL to upload the files to. showUploadButton?: boolean // Whether to show the upload button. doUpload?: boolean // Whether to automatically upload files when selected. Also setting it from 'false' to 'true' will trigger the upload. iconColor?: string // Icon color. color?: string // Text color. bgColor?: string // Background color. borderColor?: string // Border color. progressColor?: string // Progress color. activeColor?: string // Active color. uploadCallback?: (formData: FormData) => Promise // Callback function to handle the upload. perFileCallback?: (file: File, ctx: { index: number; total: number }) => Promise // Per-file callback for sequential uploads } interface UploadCallbackResponse { formData: FormData headers: Record } interface UploadStatus { type: 'pending' | 'success' | 'error' | 'processing' message: string response?: unknown } interface FileUploadEmits { (e: 'files-selected', files: File[]): void // Emitted when files are selected. (e: 'start-upload', files: File[]): void // Emitted when user clicks the upload button (manual upload intent). (e: 'upload-started', files: File[]): void // Emitted when the upload actually begins. (e: 'upload-complete', files: File[]): void // Emitted when the upload completes. (e: 'upload-progress', progress: number): void // Emitted when the upload progresses. (e: 'upload-success', status: UploadStatus): void // Emitted when the upload succeeds. (e: 'upload-error', status: UploadStatus): void // Emitted when the upload fails. } export type { FileUploadProps, FileUploadEmits, UploadStatus, UploadCallbackResponse }