Skip to content

ProStatus

Overview

ProStatus is a lightweight status indicator component that unifies scattered status tag styles (dot/tag/badge) across the project. It maps status values to display via a configurable statusMap.

Basic Usage

vue
<script setup lang="ts">
import ProStatus from '@/components/Pro/ProStatus/index.vue'
import type { ProStatusMap } from '@/types/pro'

const statusMap: ProStatusMap = {
  enabled: { text: 'Enabled', color: '#52c41a' },
  disabled: { text: 'Disabled', color: '#bfbfbf' },
}
</script>

<template>
  <ProStatus value="enabled" :status-map="statusMap" />
  <ProStatus value="disabled" :status-map="statusMap" />
</template>

Props

PropTypeDefaultDescription
valuestring | numberStatus value, required
statusMapProStatusMapStatus mapping configuration, required
mode'dot' | 'tag' | 'badge''dot'Display mode

ProStatusMap

typescript
interface ProStatusMap {
  [key: string]: {
    text: string    // Display text
    color: string   // Color value (supports hex and CSS color names)
    icon?: any      // Optional icon
  }
}

Display Modes

dot mode (default)

A capsule label with a colored dot, suitable for status display in tables and description lists.

vue
<ProStatus value="active" :status-map="map" mode="dot" />

tag mode

Renders using Ant Design's a-tag, suitable for scenarios needing stronger visual weight.

vue
<ProStatus value="active" :status-map="map" mode="tag" />

badge mode

Renders using Ant Design's a-badge, suitable for list item status.

vue
<ProStatus value="active" :status-map="map" mode="badge" />

Common Status Map Examples

typescript
// Enabled/Disabled
const enabledMap: ProStatusMap = {
  enabled: { text: 'Enabled', color: '#52c41a' },
  disabled: { text: 'Disabled', color: '#bfbfbf' },
}

// Success/Fail
const resultMap: ProStatusMap = {
  success: { text: 'Success', color: '#52c41a' },
  fail: { text: 'Failed', color: '#ff4d4f' },
}

// Ticket status
const ticketMap: ProStatusMap = {
  open: { text: 'Open', color: '#1677ff' },
  processing: { text: 'Processing', color: '#faad14' },
  closed: { text: 'Closed', color: '#bfbfbf' },
}

Released under the MIT License.