Canonical, framework-agnostic forms controllers on @bimetal/headless-core. createFormBuilderController edits the schema (add/reorder/edit fields, undo); createFormRendererController fills the form (transient values, live validation from the schema, submit
The canonical, framework-agnostic forms controllers — instance #9 of the
BIMETAL component family, and the only one that ships two:
createFormBuilderController — edits the SCHEMA (add/reorder/edit/remove
fields, drag reorder, undo). Event-sourced through @bimetal/forms-data.
createFormRendererController — FILLS the form: transient values, live
validation from the schema, submit → onSubmit. It also owns an embedded
picker controller per select field — creating, syncing and destroying it,
so no binding builds a picker lifecycle.
Both share the identity-stable getSnapshot/subscribe contract from
@bimetal/headless-core, and both surface failures as state (lastAction)
rather than throwing into the binding.
RendererFieldView carries the derived a11y facts — required, invalid and
which satellite texts describe the field — so the five bindings agree on what a
screen reader is told.
Canonical, framework-agnostic forms controllers on @bimetal/headless-core. createFormBuilderController edits the schema (add/reorder/edit fields, undo); createFormRendererController fills the form (transient values, live validation from the schema, submit