Component gallery

SchemaForm

A form generated from a module's JSON Schema in the kit's one field anatomy: sections, dependent fields, tiers, plain-sentence validation, and a named refusal for anything outside the vocabulary.

The field anatomy

Label above with the required mark, the control, help under it; the chips switch the label tone; widths follow the type, so a number is a third and a short enum is a third
Label tone

The column the module writes to.

Ground the copy in a research pass first.

value
{}

Dependent fields and audience tiers

x-when on a sibling and on $settings; x-tier hides admin and team fields from a customer, no branching in the app
Viewer
Module version
value
{}

Sections

Cards with Kicker labels in the declared order; advanced starts collapsed and counts what changed
ContentWhat the module writes.
Research
Advanced

Validation and messages

Errors after blur or Submit, the first error takes focus, plain sentences per keyword, warnings that never block; the host's button says why it cannot act

Choice lists, radios and fetched options

Checklist with a per-option hint, chips, a multiselect, an acknowledged radio, and options resolved by the app with loading and a fallback
Toggle, then Retry on the model field.
0 of 5 chosen
0 of 4 chosen
value
{}

Part type matching, from its fixture

The first V1 module schema rendered whole; the admin viewer sees the batch size, the customer does not
Viewer
0 of 4 chosen
value
{}

Content generation, from its fixture

A table of sub-forms: short fields as columns, the prompt and its rules in the expanded row, a list of discriminated rules inside; sections with advanced collapsed
Viewer
ContentThe fields the module writes for every item.
Output fields
required0 rows of 24
FieldKindMinimum (chars)Maximum (chars)
No rows yet
Research
value
{}

Image generation, from its fixture

A root mode chooser with two branches; the edit branch nests an operation chooser whose groups appear in place; recolour's swatch and the output field track sticky computed defaults
Viewer
value
{}

Attribute normalization, from its fixture

A table seeded from the file's distinct part types, one fetched multiselect per row with a coverage hint, an acknowledged taxonomy radio
Viewer
Attributes per part type0 rows
Part typeAttributes
Nothing to seed from yet
value
{}

Review, snapshot, presets and loading

The same value read in prose by section with an Edit link back, then frozen; a preset the host picks with dirty tracking and Reset; the shape-matched skeleton
Preset
ContentThe fields the module writes for every item.
Output fields
required1 row of 24
FieldKindMinimum (chars)Maximum (chars)
Research
Advanced

A schema outside the subset

The refusal names the path and the keyword and renders in place of the form; nothing degrades to a text box
This schema cannot be rendered
  • /properties/mode anyOf: anyOf is not in the V1 subset; the only union is a discriminated oneOf with x-discriminator
  • /properties/mode type: every field declares one of string, number, integer, boolean, array, object
  • /properties/size enum: a numeric enum needs x-labels so nobody ships bare numbers as choices

and 2 more; run lintSchema for the full list.

@versable-git/ui · all states, both themes