Steps component for showing progress through a sequence. Invoke when user needs to implement step indicators, wizards, or progress tracking in Naive UI.
Scanned 9/11/2026
Install to Claude Code
npx -y skills add jiaiyan/naive-ui-skills --skill n-steps --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of N Steps?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/jiaiyan-n-steps)More formats (shields.io, HTML) on the badges page.
---
name: "n-steps"
description: "Steps component for showing progress through a sequence. Invoke when user needs to implement step indicators, wizards, or progress tracking in Naive UI."
metadata:
author: jiaiyan
version: "1.0.0"
---
# Naive UI Steps Component
1, 2, 3... done! Show progress through a sequence of steps.
## When to Use
Use this component when:
- **Form wizards**: Guide users through multi-step forms
- **Checkout process**: Show progress in e-commerce checkout
- **Onboarding**: Display progress through setup steps
- **Task completion**: Track progress through sequential tasks
## When to Invoke
Invoke this skill when:
- User needs to implement step indicators
- User wants to create a wizard or multi-step form
- User needs to track progress through a sequence
- User wants clickable step navigation
- User asks about step customization
## Features
- **Multiple Sizes**: Small and medium sizes
- **Vertical Layout**: Support for vertical step display
- **Status States**: Process, finish, error, and wait states
- **Custom Icons**: Customize icons for different states
- **Clickable Steps**: Allow clicking to navigate between steps
- **Content Placement**: Control where description appears
## API Reference
### Steps Props
| Name | Type | Default | Description | Version |
|------|------|---------|-------------|---------|
| content-placement | `'right' \| 'bottom'` | `'right'` | Steps content placement (horizontal only). | 2.43.2 |
| current | `number` | `undefined` | Currently active step index. | |
| size | `'small' \| 'medium'` | `'medium'` | Steps size. | |
| status | `'process' \| 'finish' \| 'error' \| 'wait'` | `'process'` | Steps status. | |
| vertical | `boolean` | `false` | Steps vertical. | |
| on-update:current | `(index) => void` | `undefined` | Callback on active step change. | 2.29.1 |
### Step Props
| Name | Type | Default | Description | Version |
|------|------|---------|-------------|---------|
| description | `string` | `undefined` | Step description. | |
| disabled | `boolean` | `false` | Whether it's clickable. | 2.29.1 |
| status | `'process' \| 'finish' \| 'error' \| 'wait'` | `undefined` | Step status. | |
| title | `string` | `undefined` | Step title. | |
### Steps Slots
| Name | Parameters | Description |
|------|------------|-------------|
| default | `()` | Steps content. |
| finish-icon | `()` | Finish status icon. |
| error-icon | `()` | Error status icon. |
### Step Slots
| Name | Parameters | Description | Version |
|------|------------|-------------|---------|
| default | `()` | Step content. | |
| icon | `()` | Step icon. | 2.26.1 |
| title | `()` | Step title. | |
## Basic Usage
### Basic Steps
```vue
<template>
<n-steps :current="current" :status="currentStatus">
<n-step
title="I Me Mine"
description="All through the day, I me mine I me mine, I me mine"
/>
<n-step
title="Let It Be"
description="When I find myself in times of trouble Mother Mary comes to me"
/>
<n-step
title="Come Together"
description="Here come old flat top He come grooving up slowly"
/>
<n-step
title="Something"
description="Something in the way she moves Attracts me like no other lover"
/>
</n-steps>
</template>
<script setup>
import { ref } from 'vue'
const current = ref(1)
const currentStatus = ref('process')
</script>
```
### Vertical Steps
```vue
<template>
<n-steps vertical :current="current" :status="currentStatus">
<n-step
title="I Me Mine"
description="All through the day, I me mine I me mine, I me mine"
/>
<n-step
title="Let It Be"
description="When I find myself in times of trouble Mother Mary comes to me"
/>
<n-step title="Break" />
<n-step
title="Come Together"
description="Here come old flat top He come grooving up slowly"
/>
</n-steps>
</template>
```
## Common Patterns
### Interactive Steps with Navigation
```vue
<template>
<n-space vertical>
<n-steps :current="current" :status="currentStatus">
<n-step title="Step 1" description="First step description" />
<n-step title="Step 2" description="Second step description" />
<n-step title="Step 3" description="Third step description" />
<n-step title="Step 4" description="Final step description" />
</n-steps>
<n-button-group>
<n-button @click="prev">
<template #icon>
<n-icon><ArrowBackIcon /></n-icon>
</template>
Previous
</n-button>
<n-button @click="next">
Next
<template #icon>
<n-icon><ArrowForwardIcon /></n-icon>
</template>
</n-button>
</n-button-group>
</n-space>
</template>
<script setup>
import { ref } from 'vue'
const current = ref(1)
const currentStatus = ref('process')
const prev = () => {
if (current.value > 1) current.value--
}
const next = () => {
if (current.value < 4) current.value++
}
</script>
```
### Clickable Steps
```vue
<template>
<n-steps v-model:current="current">
<n-step
title="I Me Mine"
description="All through the day, I me mine I me mine, I me mine"
/>
<n-step
title="Let It Be"
description="When I find myself in times of trouble Mother Mary comes to me"
/>
<n-step
title="Come Together"
description="Here come old flat top He come grooving up slowly"
/>
<n-step
disabled
title="Something"
description="Something in the way she moves"
/>
</n-steps>
</template>
<script setup>
import { ref } from 'vue'
const current = ref(1)
</script>
```
### Custom Icons
```vue
<template>
<n-steps :current="current" :status="currentStatus">
<template #finish-icon>
<n-icon><CheckIcon /></n-icon>
</template>
<template #error-icon>
<n-icon><CloseIcon /></n-icon>
</template>
<n-step title="Step 1" description="First step" />
<n-step title="Step 2" description="Second step" />
<n-step title="Step 3" description="Third step" />
</n-steps>
</template>
```
### Content Placement
```vue
<template>
<n-steps
:content-placement="contentPlacement"
:current="current"
:status="currentStatus"
>
<n-step title="Step 1" description="First step description" />
<n-step title="Step 2" description="Second step description" />
<n-step title="Step 3" description="Third step description" />
</n-steps>
</template>
<script setup>
import { ref } from 'vue'
const contentPlacement = ref('right')
</script>
```
### Step with Custom Content
```vue
<template>
<n-steps :current="current" :status="currentStatus">
<n-step title="I Me Mine">
<div class="n-step-description">
<p>All through the day, I me mine I me mine, I me mine</p>
<n-button
v-if="current === 1"
type="primary"
size="small"
@click="next"
>
Next
</n-button>
</div>
</n-step>
<n-step title="Let It Be">
<div class="n-step-description">
<p>When I find myself in times of trouble Mother Mary comes to me</p>
<n-button
v-if="current === 2"
type="primary"
size="small"
@click="next"
>
Next
</n-button>
</div>
</n-step>
</n-steps>
</template>
```
### Error State
```vue
<template>
<n-steps :current="2" status="error">
<n-step title="Personal Info" description="Completed" />
<n-step title="Verification" description="Validation failed" />
<n-step title="Complete" description="Waiting" />
</n-steps>
</template>
```
## Best Practices
1. **Limit step count**: Keep steps between 3-7 for best UX
2. **Clear descriptions**: Provide meaningful descriptions for each step
3. **Show progress**: Always indicate current step clearly
4. **Handle errors**: Use error state when a step fails validation
5. **Clickable navigation**: Enable clicking for navigation when appropriate
6. **Consistent sizing**: Use consistent size throughout the application
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!