/** * Text-like form controls: `TextInput`, `Textarea`, `NumberInput`. Each is a * thin wrapper over the native element wearing the shared control class, and * each auto-wires to an enclosing `Field` (id + `aria-describedby` + * `aria-invalid`) via `useFieldControl`. * * The wiring is composed with the caller's own attributes rather than spread * before them, because a plain spread let one caller prop silently delete part of * it — see {@link wireToField}. * * A consumer `ref` is FORWARDED to the native control by that same spread, so a * caller that has to focus or measure its own input is not pushed out of the * design system to get at the element. * * WHERE A CALLER'S `aria-label` GOES, stated once for the whole SDK because the * two families answer differently and only one of them said so: * * - NATIVE-ATTRIBUTE PASS-THROUGH — `TextInput`, `Textarea`, `NumberInput`, * `RevealInput`, `TagsInput`. Their props ARE the native element's attributes, * so a caller's `aria-label` reaches the element and WINS over the `Field`'s * `