import { ReactNode } from 'react'; export type FileUploadType = 'drag-drop' | 'button'; export type FileUploadRootProps = { /** * Drag & Drop (área tracejada que aceita arrastar ou clicar, para telas em que anexar é a ação * principal) ou Only Button (título, texto de apoio e botão, para formulários e espaços curtos). * Figma: Type. */ type?: FileUploadType; /** Título da área. @default 'Arraste o arquivo ou clique aqui' no Drag & Drop, 'Anexar arquivo' no Only Button. Figma: Title. */ title?: string; /** Esconde o título quando o card ou a seção em volta já diz o que anexar. Figma: Show Title=False. */ hideTitle?: boolean; /** Título mostrado enquanto um arquivo é arrastado sobre a área. @default 'Solte o arquivo para enviar' */ dropTitle?: string; /** Formatos aceitos e tamanho máximo, antes do envio. Sem ele o texto some (Show Helper Text=False). */ helperText?: string; /** * Rótulo do botão Outlined. No Drag & Drop o botão só aparece com ele (Show Button); no Only Button * é o botão principal, com @default 'Anexar arquivo'. */ buttonLabel?: string; /** * `accept` do input de arquivo (`.png,.jpg,.pdf`). Filtra só o diálogo: um arquivo solto na área * chega ao `onChange` seja qual for o tipo, para o app recusar e explicar no Alert de erro abaixo * da área ("Formato não aceito"), como a spec pede. A validação de tipo e tamanho é do consumidor. */ accept?: string; multiple?: boolean; disabled?: boolean; name?: string; id?: string; /** Arquivos escolhidos no diálogo ou soltos na área; com `multiple` desligado, só o primeiro. */ onChange?: (files: File[]) => void; /** As linhas `FileUpload.Preview`, empilhadas logo abaixo da área com 8px entre elas. */ children?: ReactNode; className?: string; 'data-testid'?: string; }; export declare const FileUploadRoot: ({ type, title, hideTitle, dropTitle, helperText, buttonLabel, accept, multiple, disabled, name, id, onChange, children, className, "data-testid": dataTestId, }: FileUploadRootProps) => import("react/jsx-runtime").JSX.Element;