Custom component with useInput
Build a self-contained input by calling useInput inside the component. It reads its name from props and exposes inputProps, so the component registers itself with the form directly — no Field wrapper needed.