import { type ComponentType, type ReactNode } from "react"; import { type StyleProp, type ViewStyle } from "react-native"; import { type FieldSkin } from "./field.styles.js"; export interface FieldProps { /** * 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, and sets `aria-required` on a delegated control. */ required?: boolean; /** The control. */ children?: ReactNode; /** E2E hook forwarded to the root element. */ testID?: string; /** Outer layout composition only (width/flex within a parent), never a restyle hook. */ style?: StyleProp; } export declare function createField(skin: FieldSkin, labelOwners: ComponentType[]): { (props: FieldProps): import("react").JSX.Element; displayName: string; }; //# sourceMappingURL=field.shared.d.ts.map