Controls
One component per field, picked from the schema. Control reads the zod type and its meta to decide what to render, and every choice it makes can be forced with a prop.
@alepha/ui/components/control/controlText
Inferred from z.string(). `area` forces a textarea, `password` a masked input.
Multi-line.
Number and boolean
z.number() renders a numeric input, z.boolean() a switch.
Select
A z.enum() becomes a select. Above a size threshold it gains a search box.
Date and time
Driven entirely by the JSON-Schema `format`: date, date-time, or time.
Array
z.array() renders a repeatable row with add, remove and reorder.
States
Disabled and read-only are props, not schema.
Helper text falls back to the schema's own description.