Conformance tiers (PF-135): The authoritative L0/L1/L2 wizard conformance model lives in
WIZARD_DEVELOPMENT_GUIDE.md § “Wizard Conformance Tiers”.
This document describes the visual/UX standard a wizard must meet at L0; it does not
restate the tier definitions (PF-135 NFR-maint-1, single-canonical-source rule).
This document defines the standard wizard and multipage form experience across Encore OS, aligned with the v0-multi-form-wizard employee onboarding style.
Quick Reference
Layout variants
Use one of three layout variants viaWizardShell or ModuleWizardRenderer:
- Breakpoint: Use
lg:(1024px) for desktop vs mobile. Consistent withModuleWizardRenderer. - Dialog wizards: Use
DialogWizardShellwithlayout="horizontal"(fixed) anddialogSize:sm|md|lg|xlper dialog-size-standards.
When to use which renderer
Choose the right component based on where the flow is defined:
Wizard config types: FW-31
WizardConfig (platform/forms) and PF-41 WizardConfig (platform/wizards) are intentionally separate. on_next (FW-31) is semantically equivalent to on_advance (PF-41). Do not attempt to unify the two types.
Configurable mode support: useWizardMode supports hr, rh, fa, fw, lo, fm, gr, pf, it, ce, cl, and pm using module settings use_configurable_wizards.
Progress and stepper
- MUST: Show progress (stepper, dots, or progress bar) so the user knows current step and total steps.
- Step states: Completed (checkmark), current (border-2 + icon/label “In progress”), future (muted).
- Semantic tokens:
bg-primary,text-primary,bg-success,text-muted-foreground, etc. No hardcoded colors. - Touch targets: Minimum 44px for step controls and nav buttons.
- Accessibility:
aria-current="step"on current step,aria-labelon step buttons including “(completed)” / “(current)” where relevant.
Step icons
- SHOULD: Provide a Lucide icon for each wizard step to improve visual scanning and user orientation.
- Rendering priority: Completed step shows checkmark. Current/future step shows icon (if provided) or step number (fallback).
- Icon sizing:
size-4(16px) inside the step circle for all layouts. Step circle issize-9(36px) on desktop,size-11(44px) on mobile. - For
WizardShell(presentational): Pass Lucide icon components directly viastep.icon. - For PF-41 templates (JSON config): Use string keys from
WIZARD_STEP_ICONScatalog (e.g."user","calendar","review"). Resolve withresolveStepIcon()from@/platform/wizards. - Consistency: Use the same icon key for semantically equivalent steps across all wizards platform-wide. See WIZARD_DEVELOPMENT_GUIDE.md § Step Icons for the recommended mapping table.
- Anti-patterns:
- Do not use module-level icons (e.g. the HR icon) as step icons — these represent the module, not the step’s purpose.
- Do not repeat the same icon on every step — this defeats the purpose of visual differentiation.
- Do not use decorative icons that don’t relate to the step’s content.
Step content and transitions
- Step transition: Use
StepTransition(150ms fade+slide). Auto-focus firsth2in the new step for keyboard/screen-reader users. - Step content: Clear step title (
h2) and optional description; single main content area (card or equivalent). - Completion step: Use
WizardCompleteStepfor the final success state (icon, title, description, optional next-steps list, optional summary card, action buttons).
Navigation
- MUST: Provide Previous / Next (or Submit on last step). Footer MUST remain visible on the last step so the user can submit.
- MUST: Preserve user input when navigating Back; do not lose step data.
- SHOULD: Optional “Save draft” and “Exit” with confirmation when the wizard has more than one step.
- Validation: Validate before advancing when applicable (e.g.
on_advanceoron_next). - Mobile: Prefer fixed footer for nav on small screens so Back/Next are always visible.
Draft and exit
- MUST: For wizards with more than 3 steps, provide auto-save or “Save draft” so progress is not lost.
- MUST: If the user has unsaved changes and attempts to exit (close dialog, navigate away), prompt to confirm (e.g. “You have unsaved changes. Leave anyway?”).
- Save draft: Optional; show “Saved X ago” and “Save draft” button. Use
min-h-[44px]for buttons. - Exit: Optional “Exit” control; confirm if there are unsaved changes.
- Dialog wizards: Closing the dialog is the exit path; no separate Exit button required unless you want one.
Draft persistence decision guide
For new template-driven wizards, prefer platform wizard draft hooks over module-specific draft implementations.
References
- .cursor/rules/wizard-patterns.md — Quick-reference for AI agents
- .cursor/rules/dialog-size-standards.md — Dialog size tiers
- WIZARD_DEVELOPMENT_GUIDE.md — Full development lifecycle + step icon standards
- ICON_GUIDE.md — Platform icon assignment, sizing, and accessibility rules
src/platform/wizards/components/WizardShell/— Shell implementationsrc/platform/wizards/components/StepTransition.tsx— Step transition componentsrc/platform/wizards/components/WizardCompleteStep.tsx— Completion step componentsrc/platform/wizards/utils/stepIcons.ts— Step icon catalog andresolveStepIcon()utility