Steps

free

Steps track progress through a multi-stage flow like checkout or onboarding.

import Steps from '@/components/ui/steps';

export default function UsageDemo() {
  return (

Installation

Add this component with the NateUI CLI.

npx nateui@latest add Steps

Examples

Basic

import Steps from '@/components/ui/steps';

export default function BasicDemo() {
  return (

Title

import Steps from '@/components/ui/steps';

export default function TitleDemo() {
  return (

Custom Icon

import Steps from '@/components/ui/steps';
import Spinner from '@/components/ui/spinner';
import { PiFileMagnifyingGlass, PiSealCheck, PiSignIn } from 'react-icons/pi'

Error

import Steps from '@/components/ui/steps';

export default function ErrorDemo() {
  return (

Vertical

import Steps from '@/components/ui/steps';

export default function VerticalDemo() {
  return (

Description

import Steps from '@/components/ui/steps';

export default function DescriptionDemo() {
  return (

Controlled

Step 1 of 4 — Account
import { useState } from 'react';
import Steps from '@/components/ui/steps';
import Button from '@/components/ui/button';

API

Steps is a compound component. Steps owns the current index and derives each item's status from it, while Steps.Item renders one stage and can override its own status, icon, title, and description.

Steps

PropDescriptionTypeDefault
currentZero-based index of the active step. Earlier steps render as complete, later steps as pending.number0
statusStatus applied to the active step. Use 'error' to flag a failed step in the flow.StepStatus'in-progress'
verticalStack steps vertically instead of in a horizontal row.booleanfalse
onChangeFired with a step index when a step is clicked. Providing it makes steps clickable.(index: number) => void-
classNameExtra classes for the steps container.string-

Steps.Item

PropDescriptionTypeDefault
titleStep label shown beside or below the indicator.string | ReactNode-
descriptionSupporting text under the title. Renders only when Steps is vertical.string | ReactNode-
customIconNode rendered inside the indicator in place of the check, cross, or step number.string | ReactNode-
statusOverrides the status derived from current for this step.StepStatus-
classNameExtra classes for the step item.string-

Types

type StepStatus = 'complete' | 'pending' | 'in-progress' | 'error'