Steps
Display numbered steps for processes, workflows, or how-it-works sections.
The steps component displays numbered cards in a row, perfect for explaining processes, onboarding flows, or how-it-works sections.
Basic Usage
<div class="steps-grid">
<div class="step-card">
<div class="step-number">1</div>
<h3>Sign Up</h3>
<p>Create your free account in seconds.</p>
</div>
<div class="step-card">
<div class="step-number">2</div>
<h3>Configure</h3>
<p>Set up your preferences and integrations.</p>
</div>
<div class="step-card">
<div class="step-number">3</div>
<h3>Launch</h3>
<p>Go live and start seeing results.</p>
</div>
</div>
Complete Section Example
<section id="how-it-works" class="section-gray">
<div class="container">
<div class="text-center">
<span class="section-number">How It Works</span>
<h2 class="section-title">Get started in minutes</h2>
<p class="section-desc">Three simple steps to transform your workflow.</p>
</div>
<div class="steps-grid">
<div class="step-card">
<div class="step-number">1</div>
<h3>Create Account</h3>
<p>Sign up with your email or connect with Google, GitHub, or SSO.</p>
</div>
<div class="step-card">
<div class="step-number">2</div>
<h3>Import Data</h3>
<p>Connect your existing tools or import data from CSV files.</p>
</div>
<div class="step-card">
<div class="step-number">3</div>
<h3>Start Building</h3>
<p>Use our templates or start from scratch. You're ready to go!</p>
</div>
</div>
</div>
</section>
CSS Classes
| Class | Description |
|---|---|
.steps-grid |
Grid container for step cards |
.step-card |
Individual step card |
.step-number |
Numbered badge |
Styling Details
Steps Grid
- 3-column grid on desktop
- 1-column on tablet and mobile
- 2rem gap between cards
- 4rem top margin
Step Card
- Centered text alignment
- 2.5rem top/bottom padding
- 2rem left/right padding
Step Number
- 56px × 56px circle
- Accent color background
- White text
- 1.5rem font size
- 700 font weight
- 14px border radius
- Centered horizontally
- 1.5rem bottom margin
Responsive Behavior
| Breakpoint | Layout |
|---|---|
| Desktop (>992px) | 3 columns |
| Tablet/Mobile (≤992px) | 1 column, stacked vertically |
Variations
Four Steps
Add a fourth step—the grid will wrap appropriately:
<div class="steps-grid">
<div class="step-card">
<div class="step-number">1</div>
<h3>Plan</h3>
<p>Define your goals and requirements.</p>
</div>
<div class="step-card">
<div class="step-number">2</div>
<h3>Design</h3>
<p>Create wireframes and mockups.</p>
</div>
<div class="step-card">
<div class="step-number">3</div>
<h3>Build</h3>
<p>Develop and test your product.</p>
</div>
<div class="step-card">
<div class="step-number">4</div>
<h3>Launch</h3>
<p>Deploy and gather feedback.</p>
</div>
</div>
With Icons Instead of Numbers
You can replace numbers with icons:
<div class="steps-grid">
<div class="step-card">
<div class="step-number"><i class="bi bi-person-plus"></i></div>
<h3>Sign Up</h3>
<p>Create your account.</p>
</div>
<div class="step-card">
<div class="step-number"><i class="bi bi-gear"></i></div>
<h3>Configure</h3>
<p>Set your preferences.</p>
</div>
<div class="step-card">
<div class="step-number"><i class="bi bi-rocket"></i></div>
<h3>Launch</h3>
<p>Go live!</p>
</div>
</div>
Customization
Override the step number styling:
.step-number {
// Different color
background: #10b981;
// Square instead of rounded
border-radius: 8px;
// Different size
width: 48px;
height: 48px;
font-size: 1.25rem;
}
Add connecting lines between steps:
.steps-grid {
position: relative;
}
.step-card {
position: relative;
&:not(:last-child)::after {
content: '';
position: absolute;
top: 28px;
right: -1rem;
width: calc(100% - 56px);
height: 2px;
background: var(--er-gray-200);
}
}
Best Practices
- Keep it concise — Use 3-4 steps maximum for clarity
- Use action verbs — Start step titles with verbs (Sign Up, Configure, Launch)
- Be specific — Descriptions should explain what happens at each step
- Logical order — Ensure steps follow a natural progression