import { default as React } from 'react'; import { IconSource } from './icon'; export type DropzoneRejectionReason = "type" | "size" | "count"; export interface DropzoneRejection { file: File; reason: DropzoneRejectionReason; } export interface DropzoneProps extends Omit, "type" | "value" | "onChange" | "children"> { /** Bold primary prompt line. */ $prompt?: string; /** Optional "or click to browse" sub-line beneath the prompt. */ $browse?: string; /** Optional smaller hint line (accepted types / limits). */ $hint?: string; /** Icon shown in the rounded-square tile: an imported lucide component, or a rendered element. */ $icon?: IconSource; /** Compact, flush variant: horizontal layout, tighter padding, and a transparent background so it sits on whatever surface it's embedded in (a form row, modal, or list) next to regular inputs. */ $inline?: boolean; /** Maximum number of files kept at once. */ $maxFiles?: number; /** Maximum size per file in bytes. */ $maxBytes?: number; /** Called with the full current file list whenever it changes. */ onFilesChange?: (files: File[]) => void; /** Called with the files that were rejected (wrong type, too big, over the count limit) so the caller can surface an error however it likes. */ onFilesRejected?: (rejections: DropzoneRejection[]) => void; } /** Matches a file against an `accept` string (".pdf,image/*,text/plain"), mirroring the native file-picker filter for dropped files. */ export declare const matchesAccept: (file: File, accept?: string) => boolean; declare const Dropzone: React.ForwardRefExoticComponent>; export { Dropzone };