/** Options for {@link useFileDialog}. */
export interface UseFileDialogOptions {
/** MIME types or extensions to filter (matches ``). */
accept?: string;
/** Allow multiple selection. Default: `false`. */
multiple?: boolean;
/** Restrict to a folder picker (only supported in Chromium). */
directory?: boolean;
/** Camera capture mode for mobile (`"user"` | `"environment"`). */
capture?: "user" | "environment";
/** Called after the user picks files. */
onChange?: (files: File[]) => void;
}
/** Return value of {@link useFileDialog}. */
export interface UseFileDialogReturn {
/** Most recently picked files (empty array if reset/never opened). */
files: File[];
/** Open the native file picker. */
open: () => void;
/** Clear the current selection. */
reset: () => void;
}
/**
* Returns an `open()` trigger that pops the native file picker, plus the
* selected `files`. No DOM rendered by the consumer is required — the hook
* mounts a hidden `` lazily on first call.
*
* @param options - Configuration mirroring `` attributes.
* @returns The selected files and control callbacks.
*/
export declare function useFileDialog(options?: UseFileDialogOptions): UseFileDialogReturn;