import { type ComponentType, type ReactNode } from "react"; import { type LayoutStyle, type MeasureProps } from "../../style/index.js"; import { type FieldSkin } from "./field.styles.js"; export interface FieldProps extends MeasureProps { /** * Row label. When the lone child is a field-family control (Input, Textarea, Select, * Autocomplete) that carries no `label` of its own, the label and `required` are DELEGATED into * that control so each platform places them per its own contract. Any other control keeps the * static label above. */ label?: string; /** Muted hint under the control. Replaced by `error` when that is set. */ helper?: string; /** * Error text. Setting it puts the row in the error state: the message turns destructive and * replaces `helper` in place, so the row never changes height and nothing below it jumps. */ error?: string; /** * Marks the label with a destructive asterisk (decorative, never in an accessible name). A * delegated control takes `required` and announces itself as required; over any other * control, the label says it in its own name * * on iOS and Android * * ("Notifications, required"). */ required?: boolean; /** The control. */ children?: ReactNode; /** E2E hook forwarded to the root element. */ testID?: string; /** Composition within a parent only, never a restyle hook and never a width: the parent layout container provides the bounds. */ style?: LayoutStyle; } export declare function createField(skin: FieldSkin, labelOwners: ComponentType[]): { (props: FieldProps): import("react").JSX.Element; displayName: string; }; //# sourceMappingURL=field.shared.d.ts.map