VVibeFlui

Wizard

Wizard layout is configured with layout.type: "wizard" and layout.steps.

Wizard schema

TS
export const projectSchema = {
  resource: "projects",
  layout: {
    type: "wizard",
    steps: [
      { key: "basic", title: "Basic Information", fields: ["name", "ownerId"] },
      { key: "scope", title: "Scope", fields: ["budget", "startDate", "endDate"] },
      { key: "settings", title: "Settings", fields: ["visibility", "metadata"] }
    ]
  },
  form: {
    mode: "page",
    fields: [
      { name: "name", type: "text", required: true },
      { name: "ownerId", label: "Owner", type: "combobox" },
      { name: "budget", type: "number" },
      { name: "startDate", type: "date" },
      { name: "endDate", type: "date" },
      { name: "visibility", type: "radio-group" },
      { name: "metadata", type: "json" }
    ]
  }
} as const;

Runtime behavior

  • Wizard steps render as numbered pills.
  • Back moves to the previous step.
  • Next validates fields for the active step before moving forward.
  • The final step renders the submit button.
  • Final submit validates the whole form.

Step properties

layout.steps entries use FluiKitFormSection.

PropertyPurpose
keyStable step id.
labelStep label fallback.
titleStep label, preferred by wizard runtime.
fieldsField names rendered in the step.