/** * The recursive dispatcher: classifies a single schema node and renders the * matching field component for its model kind (const/number/boolean render * inline; every other kind delegates to a dedicated field component). Object, * array, and union renderers recurse back through here for their children. */ import { type ReactNode } from 'react'; import type { JsonSchema, SchemaFormErrors } from './types'; interface FieldNodeProps { readonly schema: JsonSchema; readonly root: JsonSchema; readonly value: unknown; readonly onChange: (value: unknown) => void; readonly path: string; /** The label to show — a property key, array-item caption, or `undefined` at root. */ readonly label: string | undefined; readonly required: boolean; /** * Append the design system's required marker (a trailing ` *`, the same * convention host forms use on their own labels) to the heading when the * field is required. Opt-in per face: the union variant surface sets it so * the ACTIVE variant's obligations read at a glance. */ readonly markRequired?: boolean; readonly errors: SchemaFormErrors | undefined; readonly idPrefix: string; } /** * A single schema node, dispatched on its classified model kind. Wrapped in * `memo` so a field whose props are unchanged is skipped: the containers hand * each child a referentially-stable `onChange` (see {@link useKeyedCallbacks}) * and the controlled value keeps unedited branches identity-equal, so editing * one field re-renders only that field's subtree, not every sibling. */ declare function FieldNodeImpl(props: FieldNodeProps): ReactNode; export declare const FieldNode: import("react").MemoExoticComponent; export {}; //# sourceMappingURL=field-node.d.ts.map