Step navigation
Use step navigation when multi-step flows should show progress and the current step.
Live demo
Visitors scan a horizontal strip of steps; the current step is easy to spot so they know what is done and what comes next. Content authors order the steps and set short labels or titles for each link. If the list is empty, nothing appears on the published page (authors see a placeholder while editing).
Anatomy
- Outer wrapper:
div.c-step-navigation__containerwithrole="navigation"andaria-label="Step navigation", plus optionaladditionalClass. - Per step:
div.c-step-navigation__stepwith optional modifiersc-step-navigation__step--active(current page) andc-step-navigation__step--before-active(step immediately before the current one in the list, used for triangle styling). - Link:
a.c-step-navigation__linkcontainingc-step-navigation__link-block(optionalc-step-navigation__link--labelspan, thenc-step-navigation__link--title) andc-step-navigation__triangle.
Content
| Field | Tab | Purpose |
|---|---|---|
| Links | Links | Multifield of simple link items: label (optional), title, path. Empty {} entries are skipped. |
| CSS class | Advanced settings | Optional additionalClass on the container. |
Instances in the codebase
| Location | Notes |
|---|---|
apps/concordia/components/step-navigation/step-navigation.jsp |
Sole rendering script for this component. |
When to use
- Multi-step flows where users should see where they are in a fixed sequence (apply, register, wizard-style subsites).
- When each step is a separate page with a stable URL (not in-page tabs).
When not to use
- In-page section jumps; use Anchor navigation for same-page targets.
- Parallel sections without order; use Secondary navigation or primary nav patterns.
Guidelines
Do
- Keep labels and titles short so the strip does not wrap awkwardly on small screens.
- Ensure link paths match real published pages in the workflow.
Don't
- Don't rely on step order for security; this is wayfinding only.
CRXDE Lite query
Use this query in CRXDE Lite to find instances of this component.
/jcr:root/content//*[@sling:resourceType = 'concordia/components/step-navigation/step-navigation.jsp']
| Item | Location |
|---|---|
| Component script | apps/concordia/components/step-navigation/step-navigation.jsp |
| Dialog | apps/concordia/components/step-navigation/dialog.xml |
Markup pattern: c-step-navigation__container → repeated c-step-navigation__step → c-step-navigation__link with aria-current on the active step.
Path logic: Current page detection compares currentPage.getPath() to each linkPath without .html. Internal content links may have .html appended automatically.