@mirawision/reactive-hooks
Version:
A comprehensive collection of 50+ React hooks for state management, UI interactions, device APIs, async operations, drag & drop, audio/speech, and more. Full TypeScript support with SSR safety.
31 lines (30 loc) • 887 B
TypeScript
import { RefObject } from 'react';
export interface DropZoneOptions {
onDrop: (files: File[] | DataTransferItemList) => void;
multiple?: boolean;
accept?: string;
}
export interface DropZoneState {
over: boolean;
}
/**
* A hook that provides drop zone functionality for file uploads.
* @param ref React ref object for the drop zone element
* @param opts Configuration options
* @returns Object containing drop zone state
*
* @example
* const ref = useRef(null);
* const { over } = useDropZone(ref, {
* onDrop: (files) => console.log('Dropped files:', files),
* multiple: true,
* accept: 'image/*'
* });
*
* return (
* <div ref={ref} style={{ border: over ? '2px dashed blue' : '2px dashed gray' }}>
* Drop files here
* </div>
* );
*/
export declare function useDropZone(ref: RefObject<HTMLElement>, opts: DropZoneOptions): DropZoneState;