Components
Wizard
A multi-step flow built on the stepper. A .ds-stepper trail heads the card, the active step's content fills the .ds-wizard__panel, and a footer set off by a top rule carries Back on the left with Next / Finish on the right.
Interactive
Use Back / Next to move through the steps — earlier markers flip to is-complete, the current one to is-active, and Next becomes Finish on the last step.
- 1Profile
- 2Rates
- 3Review
Step 1 — capture the consultant profile: name, grade and home entity.
Step 2 — set the day rates and target margin per the pricing matrix.
Step 3 — review the figures, then finish to publish the grid.
<div class="ds-wizard">
<div class="ds-wizard__steps">
<ol class="ds-stepper">
<li class="ds-stepper__step is-active" aria-current="step"><span class="ds-stepper__marker">1</span><span class="ds-stepper__label">Profile</span></li>
<li class="ds-stepper__step"><span class="ds-stepper__marker">2</span><span class="ds-stepper__label">Rates</span></li>
<li class="ds-stepper__step"><span class="ds-stepper__marker">3</span><span class="ds-stepper__label">Review</span></li>
</ol>
</div>
<div class="ds-wizard__panel">Step 1 — capture the consultant profile…</div>
<div class="ds-wizard__footer">
<button class="ds-button" type="button" disabled>Back</button>
<div class="ds-wizard__footer-actions">
<button class="ds-button ds-button--primary" type="button">Next</button>
</div>
</div>
</div>
Last step · Finish
On the final step every prior marker is is-complete and the trailing action reads Finish.
- 1Profile
- 2Rates
- 3Review
Everything checks out — finish to publish the grid.
<div class="ds-wizard__footer">
<button class="ds-button" type="button">Back</button>
<div class="ds-wizard__footer-actions">
<button class="ds-button ds-button--primary" type="button">Finish</button>
</div>
</div>
React
Pass steps ({ label, content }); the component renders the stepper, the active panel and the footer. It works controlled (active/onStepChange) or uncontrolled (defaultActive); set disableNext on a step to gate Next, and pass onFinish for the last step.
import { Wizard } from "@diametral/design-system/react";
<Wizard
defaultActive={0}
onFinish={() => publish()}
steps={[
{ label: "Profile", content: <ProfileForm /> },
{ label: "Rates", content: <RatesForm />, disableNext: !ratesValid },
{ label: "Review", content: <ReviewPanel /> },
]}
/>