1 viewer
Component · Input
Form
Submission boundary that can call CRE8 runtime connections.
- Category
- Input
- Slots
- 6
- States
- 3
- Writer
- Shared
Preview
<Form connection="Account.Create" method="POST">
<Input default="Alpha Operator" label="Account Label" name="name" />
<Select
label="Account Kind"
name="kind"
options={["Operator", "Agent", "Validator"]}
/>
<Button intent="primary" label="Provision Account" type="submit" />
</Form>Anatomy
The named parts of the rendered markup. Recipes style these hooks, and every renderer keeps them stable.
| Slot | DOM class |
|---|---|
| root | .primitive-form |
| header | .primitive-form__header |
| title | .primitive-form__title |
| fields | .primitive-form__fields |
| actions | .primitive-form__actions |
| result | .primitive-form__result |
- Modifier
- primitive-form--{state}
- State attribute
- data-statefrom the state prop
- Hydration markers
- data-cre8-form, data-cre8-form-result
States and platforms
The states the contract publishes, the platforms it declares, and the style recipes that dress it.
States
Platforms
Recipes
Renderers
Every tag in the example above renders through a shared writer.
Declared adapters. A status is the manifest's declaration, not a measured parity result.
| Target | Renderer | Status |
|---|---|---|
| web | react | experimental |
| runtime-node | view-node | ready |
| ssr | html-form-control | ready |
| terminal | terminal-form-control | planned |
Accessibility
Submission state, error feedback, and connection results remain readable without depending on recipe styling.
- Connection-driven forms expose busy, success, and error state through native form and live-region semantics.
- Result payloads stay discoverable as plain structured content after submission.