@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
144 lines (121 loc) • 3.96 kB
Markdown
---
title: 'Wizard'
description: '`Wizard` is a set of components for showing forms with a [StepIndicator](/uilib/components/step-indicator/) for navigation between several wizard. It also includes components for navigating between wizard.'
version: 10.104.0
generatedAt: 2026-04-17T18:46:12.688Z
checksum: 090b7d977ba4be5e2c4c04d199a30a4048416c59f443a56985df2f80629d9c40
---
```tsx
import { Wizard } from '@dnb/eufemia/extensions/forms'
```
`Wizard` is a set of components for showing forms with a [StepIndicator](/uilib/components/step-indicator/) for navigation between several steps. It also includes components for navigating between steps.
```tsx
import { Wizard } from '@dnb/eufemia/extensions/forms'
render(
<Wizard.Container>
<Wizard.Step title="Step 1">...</Wizard.Step>
<Wizard.Step title="Step 2">...</Wizard.Step>
</Wizard.Container>
)
```
- [Source code](https://github.com/dnbexperience/eufemia/tree/main/packages/dnb-eufemia/src/extensions/forms/Wizard)
- [Docs code](https://github.com/dnbexperience/eufemia/tree/main/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Wizard)
```tsx
const MyForm = () => {
// Routers like "react-router" are supported as well
Wizard.useQueryLocator('my-wizard')
return (
<Form.Handler>
<Wizard.Container
id="my-wizard"
variant="drawer"
omitScrollManagement
>
<Wizard.Step title="Step 1">
<Form.MainHeading>Heading</Form.MainHeading>
<Form.Card>
<P>Step 1</P>
</Form.Card>
<Wizard.Buttons />
</Wizard.Step>
<Wizard.Step title="Step 2">
<Form.MainHeading>Heading</Form.MainHeading>
<Form.Card>
<P>Step 2</P>
</Form.Card>
<Wizard.Buttons />
</Wizard.Step>
</Wizard.Container>
</Form.Handler>
)
}
render(<MyForm />)
```
You can use the `Wizard.Step` component to create dynamic steps. The `include` and `includeWhen` properties allow you to show or hide a step based on specific conditions. You find an [example](/uilib/extensions/forms/Wizard/Step/
A wizard needs a summary step at the end. You can use the `Wizard.Step` component for that, including the [Value.SummaryList](/uilib/extensions/forms/Value/SummaryList/) component:
```tsx
import { Form, Wizard, Value } from '@dnb/eufemia/extensions/forms'
const MyForm = () => {
const { summaryTitle } = Form.useLocale().Step
return (
<Form.Handler>
<Wizard.Container>
<Wizard.Step title="Step 1">...</Wizard.Step>
<Wizard.Step title="Step 2">...</Wizard.Step>
<Wizard.Step title={summaryTitle}>
<Value.SummaryList layout="grid">
<Value.String label="Label" path="/myValue" />
</Value.SummaryList>
</Wizard.Step>
</Wizard.Container>
</Form.Handler>
)
}
```
## Components
<ListWizardComponents size="small" />
```json
{
"locales": ["da-DK", "en-GB", "nb-NO", "sv-SE"],
"entries": {
"Step.stepHasError": {
"nb-NO": "Skjemaet inneholder feil.",
"en-GB": "The form contains errors.",
"sv-SE": "Formuläret innehåller fel.",
"da-DK": "Skemaet indeholder fejl."
},
"Step.summaryTitle": {
"nb-NO": "Oppsummering",
"en-GB": "Summary",
"sv-SE": "Sammanfattning",
"da-DK": "Oversigt"
},
"WizardEditButton.text": {
"nb-NO": "Endre",
"en-GB": "Edit",
"sv-SE": "Ändra",
"da-DK": "Rediger"
},
"WizardNextButton.text": {
"nb-NO": "Neste",
"en-GB": "Next",
"sv-SE": "Nästa",
"da-DK": "Næste"
},
"WizardPreviousButton.text": {
"nb-NO": "Tilbake",
"en-GB": "Back",
"sv-SE": "Tillbaka",
"da-DK": "Tilbage"
}
}
}
```