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.

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

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

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