Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Nettalco/nettalco-theme/llms.txt

Use this file to discover all available pages before exploring further.

The Stepper component guides users through a sequential workflow by displaying numbered step headers connected by separator lines, with associated panel content below. The Nettalco preset highlights the active step using {primary.color} on the step number and title, while inactive steps use {text.muted.color} — creating a clear visual distinction between visited, current, and upcoming steps.

Usage

<!-- app.component.html -->
<p-stepper value="1">
  <p-step-list>
    <p-step value="1">Personal Info</p-step>
    <p-step value="2">Address</p-step>
    <p-step value="3">Review</p-step>
  </p-step-list>

  <p-step-panels>
    <p-step-panel value="1">
      <ng-template #content let-activateCallback="activateCallback">
        <div class="flex flex-col gap-4 p-4">
          <input pInputText placeholder="Full name" />
          <input pInputText placeholder="Email address" />
          <p-button label="Next" (onClick)="activateCallback('2')" />
        </div>
      </ng-template>
    </p-step-panel>

    <p-step-panel value="2">
      <ng-template #content let-activateCallback="activateCallback">
        <div class="flex flex-col gap-4 p-4">
          <input pInputText placeholder="Street address" />
          <input pInputText placeholder="City" />
          <div class="flex gap-2">
            <p-button label="Back" severity="secondary" (onClick)="activateCallback('1')" />
            <p-button label="Next" (onClick)="activateCallback('3')" />
          </div>
        </div>
      </ng-template>
    </p-step-panel>

    <p-step-panel value="3">
      <ng-template #content let-activateCallback="activateCallback">
        <div class="flex flex-col gap-4 p-4">
          <p>Please review your details before submitting.</p>
          <div class="flex gap-2">
            <p-button label="Back" severity="secondary" (onClick)="activateCallback('2')" />
            <p-button label="Submit" (onClick)="onSubmit()" />
          </div>
        </div>
      </ng-template>
    </p-step-panel>
  </p-step-panels>
</p-stepper>
// app.component.ts
import { Component } from '@angular/core';
import { StepperModule } from 'primeng/stepper';
import { ButtonModule } from 'primeng/button';
import { InputTextModule } from 'primeng/inputtext';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  imports: [StepperModule, ButtonModule, InputTextModule],
})
export class AppComponent {
  onSubmit() {
    console.log('Form submitted');
  }
}

Design Tokens

All tokens are defined in src/lib/theme/stepper/index.ts.

Root

TokenValueDescription
root.transitionDuration{transition.duration}Transition speed for step panel show/hide animations

Separator

TokenValueDescription
separator.background{content.border.color}Color of the connecting line for inactive steps
separator.activeBackground{primary.color}Color of the connecting line for completed steps
separator.margin0 0 0 1.625remLeft offset to align with step number center
separator.size2pxThickness of the separator line

Step

TokenValueDescription
step.padding0.5remOuter padding around each step item
step.gap1remGap between the step header and its content panel

Step Header

TokenValueDescription
stepHeader.padding0No extra padding — step number and title provide spacing
stepHeader.borderRadius{content.border.radius}Focus outline border radius
stepHeader.gap0.5remGap between the number badge and the title text

Step Title

TokenValueDescription
stepTitle.color{text.muted.color}Title color for inactive steps
stepTitle.activeColor{primary.color}Title color for the currently active step
stepTitle.fontWeight500Medium weight for step labels

Step Number

TokenValueDescription
stepNumber.background{content.background}Badge background for inactive steps
stepNumber.activeBackground{content.background}Badge background for the active step
stepNumber.borderColor{content.border.color}Badge border for inactive steps
stepNumber.activeBorderColor{content.border.color}Badge border for the active step
stepNumber.color{text.muted.color}Number text color for inactive steps
stepNumber.activeColor{primary.color}Number text color for the active step
stepNumber.size2remBadge diameter
stepNumber.fontSize1.143remNumber font size inside the badge
stepNumber.fontWeight500Medium weight for numbers
stepNumber.borderRadius50%Circular badge shape
stepNumber.shadow0px 0.5px 0px 0px rgba(0, 0, 0, 0.06), 0px 1px 1px 0px rgba(0, 0, 0, 0.12)Subtle depth on the badge

Step Panels Container

TokenValueDescription
steppanels.padding0.875rem 0.5rem 1.125rem 0.5remPadding around the entire panel group

Step Panel (individual)

TokenValueDescription
steppanel.background{content.background}Panel content background
steppanel.color{content.color}Panel content text color
steppanel.padding0No built-in panel padding — use your own layout padding inside
steppanel.indent1remLeft indent to align panel content under the step title

Theme Notes

  • Active state color — Both stepTitle.activeColor and stepNumber.activeColor use {primary.color}. Changing the global primary palette automatically updates all active step indicators throughout the application.
  • Step number badge — The badge background does not change between active and inactive states ({content.background} for both). The active step is distinguished purely by the border and text color change to {primary.color} and the subtle shadow.
  • Separator alignmentseparator.margin: '0 0 0 1.625rem' is tuned to visually bisect the 2rem step number badge, so the connecting line appears centered on the badge regardless of viewport size.
  • Panel indentsteppanel.indent: '1rem' offsets the content leftward from the number badge, preventing text from starting at the very left edge of the layout.

Build docs developers (and LLMs) love