import "./inline_files.css"; import type * as React from "react"; import { useRender } from "@base-ui/react/use-render"; import { type DisplayFile } from "./file_thumbnail"; import type { GalleryLabels } from "./file_preview"; import { type StyleProps } from "./style_props"; export interface InlineFilesProps extends StyleProps { files: DisplayFile[]; /** * The host uploads and persists, so `files` changes only when it says so; `multiple` decides what * it must do. A returned promise keeps the CTA busy. Omit for read-only. */ onAdd?: (picked: File[]) => void | Promise; /** A confirmed Remove per row. Omit for add-only. */ onRemove?: (file: DisplayFile) => void; /** A new tab on the frontend, `openExternal` in an app. Omitted, rows still preview. */ onOpenExternal?: (file: DisplayFile) => void; /** The host frontend sends `credentials`. */ onDownload?: (file: DisplayFile) => void; /** * The field's cardinality. Default `true`: a set, CTA reading `addMoreLabel` once filled. * `false`: exactly one, CTA reading `replaceLabel`, and the host must set rather than append in * `onAdd` — silently wrong otherwise. */ multiple?: boolean; /** Nothing attached, adding to a set, replacing the one; each falls back to the one before. */ addLabel?: string; addMoreLabel?: string; replaceLabel?: string; /** Omitted, the CTA just disables, inventing no English. */ busyLabel?: string; /** Replaces the CTA with a sentence stating what unblocks it. */ blockedReason?: string; /** Default "—". */ emptyLabel?: string; /** E.g. `"application/pdf,image/*"`. */ accept?: string; /** Documents want `"open"`; scans the default preview. */ press?: "preview" | "open"; /** Forwarded to `FileRows`. */ labels?: Partial; /** `"include"` for auth-gated proxies; omitted for presigned URLs. */ credentials?: RequestCredentials; onError?: (error: unknown, meta: { fileId: string; mimeType: string; }) => void; testID?: string; ref?: React.Ref; render?: useRender.RenderProp; } /** * The files member of the `Inline*` family, in a `DetailRow`'s value column: the inline grid's * vertical beat, no text inset. A list, since documents are identified by name; no selection, bulk * bar or queue. */ export declare function InlineFiles(props: InlineFilesProps): React.ReactElement>;