import { default as React } from 'react'; import { FieldWidgetComponentProps } from './types.js'; /** * FileField - File upload widget with drag-and-drop support * Supports single and multiple file uploads with configurable accepted file types. * L2: File size validation, per-file progress indicators, error messages. */ export declare function FileField({ value, onChange, field, readonly, onUploadingChange, error, ...props }: FieldWidgetComponentProps): React.JSX.Element; /** * FileCell — compact upload control for a line-item grid cell (objectui#2360). * * Same value shape and upload pipeline as {@link FileField}, sized for a 32px * grid row: existing files render as removable chips (image thumbnail / file * icon + name) and a small button opens the native file picker. No * drag-and-drop zone — a grid cell has no room for one; the per-row expand * form still offers the full-size FileField. */ export declare function FileCell({ value, onChange, disabled, multiple, accept, maxSize, error, 'aria-label': ariaLabel, 'data-cell': dataCell, }: { value: any; onChange: (value: any) => void; disabled?: boolean; multiple?: boolean; /** Comma-joined accept list for the native picker (e.g. `"image/*,.pdf"`). */ accept?: string; /** Max file size in bytes (oversize picks are rejected with an inline error). */ maxSize?: number; /** * The active validation message for this cell, named as * `@objectstack/spec/ui`'s `FieldWidgetPropsSchema` names it — the same * published slot `FieldWidgetComponentProps` declares and `LookupField` / * `FileField` above already consume (objectui#5431, completing #3318's * per-cell delivery). NOT the per-pick upload `errors` this component * computes itself — this is the HOST's verdict on the cell's value. * * **Producer**: `GridField`, for a required-but-empty `file` cell. * **Consumer**: drives `aria-invalid` on the picker button — the focusable * control assistive tech reads a control state from (objectui#5223; a mark * on the non-focusable wrapper is exactly what the registry sweep forbids). * The message TEXT stays with the cell's `title` in `GridField`; rendering * it here would double-display it. */ error?: string; 'aria-label'?: string; /** Focus-grid coordinate (see GridField keyboard navigation). */ 'data-cell'?: string; }): React.JSX.Element;