import React, { ReactNode } from 'react'; import { ButtonProps } from '../button'; export type UploadFileStatus = 'error' | 'success' | 'done' | 'uploading'; export type FileType = File & { [key: string]: any; }; export interface UploadFile { value: FileType | null; status?: UploadFileStatus; /** * 현재 업로드 진행률 (0-100 사이의 값) */ percent?: number; url?: string; } export interface FileUploadProps { className?: string; label?: ReactNode; /** @default 'vertical' */ direction?: 'vertical' | 'horizontal'; /** @default 'image/*' */ accept?: HTMLInputElement['accept']; disabled?: boolean; loading?: boolean; multiple?: boolean; /** * 최대 업로드 파일 갯수 */ maxCount?: number; /** * FileList내 삭제버튼 사용 유무 * @default true */ showRemoveButton?: boolean; fileList?: UploadFile[]; buttonProps?: Omit; onChange?: (file: File | File[]) => void; /** * 파일 업로드 버튼 클릭시 실행되는 이벤트 */ onClick?: React.MouseEventHandler; /** * FileList 클릭시 인덱스 정보와 함께 전달합니다. */ onClickFile?: (file: UploadFile, index: number) => void; /** * 업로드 시도시 maxCount를 넘길 경우 전달합니다. * @deprecated maxCount 도달하면 disabled 처리되므로 사용하지 않습니다. */ onLimitMaxCount?: () => void; /** * 삭제 버튼 클릭시 인덱스 정보와 함께 전달합니다. */ onClickFileRemove?: (file: UploadFile, index: number) => void; } export declare const FileUpload: ({ className, accept, direction, label, disabled, loading, multiple, maxCount, showRemoveButton, fileList, buttonProps, onChange, onClick, onClickFile, onLimitMaxCount, onClickFileRemove, }: FileUploadProps) => import("@emotion/react/jsx-runtime").JSX.Element;