Forms
Forms describe input surfaces generated from a VibeFlui schema.
VibeFlui forms can render native inputs, custom components, registry field adapters, async options, validation, computed values, transformed submit payloads, grouped sections, tabs, and wizard steps.
Basic form
TS
export const usersSchema = {
resource: "users",
identity: {
key: "id",
param: "id"
},
form: {
enabled: true,
mode: "modal",
fields: [
{ name: "name", label: "Name", type: "text", required: true },
{ name: "email", label: "Email", type: "email", required: true },
{
name: "status",
type: "select",
defaultValue: "active",
options: [
{ label: "Active", value: "active" },
{ label: "Pending", value: "pending" },
{ label: "Suspended", value: "suspended" }
]
}
]
},
actions: {
create: {
enabled: true,
label: "Create user"
},
edit: {
enabled: true,
label: "Edit"
}
}
} as const;Defaults
| Feature | Default |
|---|---|
form.enabled | true |
form.mode | "modal" |
| string field input | inferred from name |
createValueMode | "empty" |
editValueMode | "fromRow" |
| create submit label | Create |
| edit submit label | Update |
| cancel label | Cancel |
| save icon | mdi:content-save-outline |
| cancel icon | mdi:close-circle-outline |
Form surfaces
form.mode controls how the form is shown after create or edit actions:
| Mode | Surface |
|---|---|
modal | Centered modal dialog. |
drawer | Drawer surface. |
page | Full page-like panel inside VibeFlui. |
inline | Inline form area below the table. |
Runtime flow
When the user submits a form:
- VibeFlui applies computed field values.
- Built-in field validation runs.
- Registry validators run.
- Field transformers run.
schema.transform.requestruns when configured.- VibeFlui executes the create or update action flow.
- Feedback and lifecycle events are resolved by the parent
FluiKitruntime.