Skip to main content
Version: 1.0.3

Stepper

The Stepper component helps visualize progress through a multi-step process. It's perfect for forms, wizards, or any sequential workflow in your application. The component includes support for completed states, active states, and optional descriptions for each step.

Installation

ignix add component stepper

Usage

Import the component:

import { Stepper } from '@ignix-ui/stepper';

Basic Usage

function BasicStepper() {
const [currentStep, setCurrentStep] = useState(0);

const steps = [
{ label: 'Step 1' },
{ label: 'Step 2' },
{ label: 'Step 3' },
];

return (
<Stepper
steps={steps}
activeStep={currentStep}
/>
);
}

Examples

Basic Stepper

Step 1
2
Step 2
3
Step 3

With Descriptions

Account
Create account
Profile
Complete profile
3
Verify
Verification
4
Done
Final step

Interactive Example

1
Cart
Review items
2
Shipping
Delivery info
3
Payment
Card details

Customization

Custom Styling

You can customize the appearance using Tailwind CSS classes:

import { Stepper } from '@ignix-ui/stepper';

<Stepper
className="max-w-2xl mx-auto"
steps={[
{ label: 'Start', description: 'Begin here' },
{ label: 'Middle', description: 'Continue' },
{ label: 'End', description: 'Complete' },
]}
activeStep={1}
/>

Form Integration Example

import { useState } from 'react';
import { Stepper } from '@ignix-ui/stepper';

function StepperForm() {
const [currentStep, setCurrentStep] = useState(0);
const [formData, setFormData] = useState({
personal: {},
address: {},
payment: {},
});

const steps = [
{ label: 'Personal', description: 'Basic info' },
{ label: 'Address', description: 'Shipping details' },
{ label: 'Payment', description: 'Payment method' },
];

const renderStepContent = (step: number) => {
switch (step) {
case 0:
return <PersonalInfoForm data={formData.personal} onSave={handleSave} />;
case 1:
return <AddressForm data={formData.address} onSave={handleSave} />;
case 2:
return <PaymentForm data={formData.payment} onSave={handleSave} />;
default:
return null;
}
};

return (
<div className="space-y-6">
<Stepper steps={steps} activeStep={currentStep} />
<div className="mt-8">
{renderStepContent(currentStep)}
</div>
</div>
);
}

Props

PropTypeDefaultDescription
stepsArray<{ label: string; description?: string; }>[]Array of step objects with labels and optional descriptions
activeStepnumber0Current active step (0-based index)
classNamestring-Additional CSS classes