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/control

Text

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.