Skip to content
Back to skills

N Progress

ASecurity

Progress component for displaying operation progress. Invoke when user needs to implement progress bars, loading indicators, or completion status in Naive UI.

  • 8 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 11, 2026
datagovueapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 11, 2026

npx -y skills add jiaiyan/naive-ui-skills --skill n-progress --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of N Progress?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for N Progress
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jiaiyan-n-progress/badge)](https://www.skillsdirectory.com/skills/jiaiyan-n-progress)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: "n-progress"
description: "Progress component for displaying operation progress. Invoke when user needs to implement progress bars, loading indicators, or completion status in Naive UI."
metadata:
  author: jiaiyan
  version: "1.0.0"
---

# Naive UI Progress Component

Progress component displays the completion status of an operation or task.

## When to Use

Use this component when:
- **File operations**: Show upload/download progress
- **Task completion**: Display task or process progress
- **Loading states**: Indicate loading status
- **Data visualization**: Show percentage-based metrics

## When to Invoke

Invoke this skill when:
- User needs to implement progress indicators
- User wants to show completion percentage
- User needs circular or linear progress bars
- User asks about progress customization
- User wants to display multiple progress indicators

## Features

- **Multiple Types**: Line, circle, multiple-circle, and dashboard types
- **Status Indicators**: Default, info, success, warning, error statuses
- **Customizable Appearance**: Control color, height, border-radius
- **Custom Indicator**: Replace default percentage display
- **Gradient Support**: Linear gradient colors for progress

## API Reference

### Progress Props

| Name | Type | Default | Description | Version |
|------|------|---------|-------------|---------|
| border-radius | `number \| string` | `undefined` | Line progress's border-radius. | |
| circle-gap | `number` | `1` | The gap between circles for multiple-circle type. | |
| color | `string \| string[] \| { stops: string[] } \| Array<{ stops: string[] }>` | `undefined` | Progress color. Supports gradient. | `stops` since 2.40.2 |
| fill-border-radius | `number \| string` | `undefined` | Line progress's fill border-radius. | |
| gap-degree | `number` | `75` | The gap degree of half circle, 0 ~ 360. | 2.25.2 |
| gap-offset-degree | `number` | `0` | The gap offset degree. | 2.25.2 |
| height | `number` | `undefined` | Line progress's height. | |
| indicator-placement | `'inside' \| 'outside'` | `'outside'` | Indicator placement. | |
| indicator-text-color | `string` | `undefined` | Indicator text color. | |
| offset-degree | `number` | `0` | Offset degree of circular progress. | 2.24.0 |
| percentage | `number \| number[]` | `0` | Percentage value. | |
| processing | `boolean` | `false` | Processing status. | |
| rail-color | `string \| string[]` | `undefined` | Rail color. | |
| rail-style | `string \| CSS \| Array<string \| CSS>` | `undefined` | Rail style. | |
| show-indicator | `boolean` | `true` | Whether to display indicators. | |
| status | `'default' \| 'success' \| 'error' \| 'warning' \| 'info'` | `'default'` | Progress status. | |
| stroke-width | `number` | `7` | Progress width. | |
| type | `'line' \| 'circle' \| 'multiple-circle' \| 'dashboard'` | `line` | Progress type. | `'dashboard'` 2.25.2 |
| unit | `string` | `%` | Progress unit. | |

### Progress Slots

| Name | Parameters | Description |
|------|------------|-------------|
| default | `()` | Content will replace default indicator content. |

## Basic Usage

### Line Progress

```vue
<template>
  <n-space vertical>
    <n-progress type="line" :percentage="percentage" />
    <n-progress type="line" :percentage="percentage" :show-indicator="false" />
    <n-progress type="line" :percentage="percentage" indicator-placement="inside" />
    <n-space>
      <n-button @click="minus">Minus 10%</n-button>
      <n-button @click="add">Add 10%</n-button>
    </n-space>
  </n-space>
</template>

<script setup>
import { ref } from 'vue'

const percentage = ref(50)

const add = () => {
  percentage.value = Math.min(100, percentage.value + 10)
}

const minus = () => {
  percentage.value = Math.max(0, percentage.value - 10)
}
</script>
```

### Circle Progress

```vue
<template>
  <n-space>
    <n-progress type="circle" :percentage="percentage" />
    <n-progress type="circle" status="info" :percentage="percentage" />
    <n-progress type="circle" status="success" :percentage="percentage" />
    <n-progress type="circle" status="warning" :percentage="percentage" />
    <n-progress type="circle" status="error" :percentage="percentage" />
  </n-space>
</template>

<script setup>
import { ref } from 'vue'

const percentage = ref(75)
</script>
```

## Common Patterns

### Different Statuses

```vue
<template>
  <n-space vertical>
    <n-progress type="line" status="default" :percentage="60" />
    <n-progress type="line" status="info" :percentage="60" />
    <n-progress type="line" status="success" :percentage="60" />
    <n-progress type="line" status="warning" :percentage="60" />
    <n-progress type="line" status="error" :percentage="60" />
  </n-space>
</template>
```

### Dashboard Type

```vue
<template>
  <n-space>
    <n-progress type="dashboard" gap-position="bottom" :percentage="80" />
    <n-progress
      type="dashboard"
      :gap-offset-degree="120"
      :gap-degree="120"
      :percentage="80"
    />
  </n-space>
</template>
```

### Multiple Circle

```vue
<template>
  <n-progress
    type="multiple-circle"
    :stroke-width="6"
    :circle-gap="0.5"
    :percentage="[60, 40, 20]"
    :color="['#2080f0', '#18a058', '#f0a020']"
  />
</template>
```

### Custom Indicator

```vue
<template>
  <n-progress type="circle" :percentage="20">
    <span style="text-align: center">20% is small</span>
  </n-progress>
  <n-progress type="line" status="success" :percentage="20">
    Don't put too much content here.
  </n-progress>
</template>
```

### Custom Colors

```vue
<template>
  <n-progress
    type="circle"
    :percentage="20"
    color="#18a058"
    rail-color="rgba(24, 160, 88, 0.2)"
  />
  <n-progress
    type="line"
    :color="{ stops: ['white', 'pink'] }"
    :percentage="60"
  />
</template>
```

### No Indicator

```vue
<template>
  <n-progress
    type="circle"
    :show-indicator="false"
    :percentage="20"
  />
  <n-progress
    type="line"
    :show-indicator="false"
    :percentage="20"
  />
</template>
```

### Custom Height and Border Radius

```vue
<template>
  <n-space vertical>
    <n-progress
      type="line"
      :percentage="50"
      :height="24"
      :border-radius="4"
      :fill-border-radius="0"
    />
    <n-progress
      type="line"
      status="error"
      :percentage="50"
      :height="24"
      border-radius="12px 0 12px 0"
      fill-border-radius="12px 0 12px 0"
    >
      A Kind of Art
    </n-progress>
  </n-space>
</template>
```

### Processing Animation

```vue
<template>
  <n-progress
    type="line"
    :percentage="60"
    indicator-placement="inside"
    processing
  />
</template>
```

### Offset Degree

```vue
<template>
  <n-progress type="circle" :percentage="80" :offset-degree="120" />
</template>
```

### Linear Gradient

```vue
<template>
  <n-flex vertical>
    <n-progress
      type="line"
      :percentage="percentage"
      :show-indicator="false"
      :color="{ stops: ['white', 'pink'] }"
    />
    <n-flex>
      <n-progress
        type="circle"
        :percentage="percentage"
        :color="{ stops: ['#E3F2FD', '#2080f0'] }"
      />
    </n-flex>
  </n-flex>
</template>

<script setup>
import { ref } from 'vue'

const percentage = ref(70)
</script>
```

## Best Practices

1. **Choose appropriate type**: Use line for horizontal space, circle for compact displays

2. **Use meaningful status**: Match status with operation result (success, error, etc.)

3. **Custom indicator for context**: Replace percentage with meaningful text when appropriate

4. **Consider height**: Adjust height based on visual hierarchy

5. **Use processing for indeterminate**: Enable `processing` for ongoing operations

6. **Multiple circles for comparison**: Use multiple-circle to show related metrics

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.