Admin 元件

Stepper

參考API
多步驟進度指示器。目前步驟與整體流程狀態。

安裝

Terminal
pnpm dlx shadcn-vue add @admin/stepper
import {  AdminStepper,  AdminStepperDescription,  AdminStepperIndicator,  AdminStepperItem,  AdminStepperSeparator,  AdminStepperTitle,  AdminStepperTrigger,} from '@/components/admin/stepper'

用法

<script setup lang="ts">import { ref } from 'vue'import {  AdminStepper,  AdminStepperIndicator,  AdminStepperItem,  AdminStepperSeparator,  AdminStepperTitle,  AdminStepperTrigger} from '@/components/admin/stepper'​const step = ref<number | undefined>(1)const steps = [  { value: 1, title: 'Details' },  { value: 2, title: 'Review' },  { value: 3, title: 'Done' }]</script>​<template>  <admin-stepper v-model="step" class="w-full max-w-md">    <admin-stepper-item v-for="s in steps" :key="s.value" :step="s.value">      <admin-stepper-trigger>        <admin-stepper-indicator>{{ s.value }}</admin-stepper-indicator>        <admin-stepper-title>{{ s.title }}</admin-stepper-title>      </admin-stepper-trigger>      <admin-stepper-separator v-if="s.value !== steps.length" />    </admin-stepper-item>  </admin-stepper></template>

場景

線性三步驟

<script setup lang="ts">import { ref } from 'vue'import {  AdminStepper,  AdminStepperIndicator,  AdminStepperItem,  AdminStepperSeparator,  AdminStepperTitle,  AdminStepperTrigger} from '@/components/admin/stepper'​const step = ref<number | undefined>(1)const steps = [  { value: 1, title: '填寫資料' },  { value: 2, title: '確認' },  { value: 3, title: '完成' }]</script>​<template>  <admin-stepper v-model="step" class="w-full max-w-md">    <admin-stepper-item v-for="(s, index) in steps" :key="s.value" :step="s.value">      <admin-stepper-trigger>        <admin-stepper-indicator>{{ s.value }}</admin-stepper-indicator>        <admin-stepper-title>{{ s.title }}</admin-stepper-title>      </admin-stepper-trigger>      <admin-stepper-separator v-if="index < steps.length - 1" />    </admin-stepper-item>  </admin-stepper></template>

停用尚未開放的步驟

<script setup lang="ts">import { ref } from 'vue'import {  AdminStepper,  AdminStepperIndicator,  AdminStepperItem,  AdminStepperSeparator,  AdminStepperTitle,  AdminStepperTrigger} from '@/components/admin/stepper'​const step = ref<number | undefined>(2)</script>​<template>  <admin-stepper v-model="step" class="w-full max-w-md">    <admin-stepper-item :step="1">      <admin-stepper-trigger>        <admin-stepper-indicator>1</admin-stepper-indicator>        <admin-stepper-title>已完成</admin-stepper-title>      </admin-stepper-trigger>      <admin-stepper-separator />    </admin-stepper-item>    <admin-stepper-item :step="2">      <admin-stepper-trigger>        <admin-stepper-indicator>2</admin-stepper-indicator>        <admin-stepper-title>進行中</admin-stepper-title>      </admin-stepper-trigger>      <admin-stepper-separator />    </admin-stepper-item>    <admin-stepper-item disabled :step="3">      <admin-stepper-trigger>        <admin-stepper-indicator>3</admin-stepper-indicator>        <admin-stepper-title>尚未開放</admin-stepper-title>      </admin-stepper-trigger>    </admin-stepper-item>  </admin-stepper></template>

步驟附說明文字

<script setup lang="ts">import { ref } from 'vue'import {  AdminStepper,  AdminStepperDescription,  AdminStepperIndicator,  AdminStepperItem,  AdminStepperSeparator,  AdminStepperTitle,  AdminStepperTrigger} from '@/components/admin/stepper'​const step = ref<number | undefined>(1)const steps = [  { value: 1, title: '帳號', description: '建立登入資訊' },  { value: 2, title: '付款', description: '選擇付款方式' },  { value: 3, title: '完成', description: '確認並送出' }]</script>​<template>  <admin-stepper v-model="step" class="w-full max-w-lg">    <admin-stepper-item v-for="s in steps" :key="s.value" :step="s.value">      <admin-stepper-trigger>        <admin-stepper-indicator>{{ s.value }}</admin-stepper-indicator>        <div class="flex flex-col items-start">          <admin-stepper-title>{{ s.title }}</admin-stepper-title>          <admin-stepper-description>{{ s.description }}</admin-stepper-description>        </div>      </admin-stepper-trigger>      <admin-stepper-separator v-if="s.value !== steps.length" />    </admin-stepper-item>  </admin-stepper></template>

API 參考

組成

<template>  <admin-stepper v-model="currentStep">    <admin-stepper-item :step="1">      <admin-stepper-trigger>        <admin-stepper-indicator>1</admin-stepper-indicator>        <div class="flex flex-col items-start">          <admin-stepper-title>步驟一</admin-stepper-title>          <admin-stepper-description>建立登入資訊</admin-stepper-description>        </div>      </admin-stepper-trigger>    </admin-stepper-item>    <admin-stepper-separator />    <admin-stepper-item :step="2">      <admin-stepper-trigger>        <admin-stepper-indicator>2</admin-stepper-indicator>        <admin-stepper-title>步驟二</admin-stepper-title>      </admin-stepper-trigger>    </admin-stepper-item>  </admin-stepper></template>

admin-stepper

Props

名稱型別預設值說明
defaultValuenumber | undefined—The value of the step that should be active when initially rendered. Use when you do not need to control the state of the steps.
orientationDataOrientation | undefinedhorizontalThe orientation the steps are laid out. Mainly so arrow navigation is done accordingly (left & right vs. up & down).
dirDirection | undefined—The reading direction of the combobox when applicable. If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode.
modelValuenumber | undefined—The controlled value of the step to activate. Can be bound as `v-model`.
linearboolean | undefined—Whether or not the steps must be completed in order.
asChildboolean | undefined—Change the default rendered element for the one passed as a child, merging their props and behavior. Read our [Composition](https://www.reka-ui.com/docs/guides/composition) guide for more details.
asglobalThis.Component | AsTag | undefined"div"The element or component this component should render as. Can be overwritten by `asChild`.
classClassValue—根元素之自訂 class

Events

名稱Payload說明
update:modelValuenumber | undefined—

Slots

名稱Bindings說明
default{}—

admin-stepper-item

Props

名稱型別預設值說明
step*number—A unique value that associates the stepper item with an index
disabledboolean | undefined—When `true`, prevents the user from interacting with the step.
completedboolean | undefined—Shows whether the step is completed.
asChildboolean | undefined—Change the default rendered element for the one passed as a child, merging their props and behavior. Read our [Composition](https://www.reka-ui.com/docs/guides/composition) guide for more details.
asglobalThis.Component | AsTag | undefined"div"The element or component this component should render as. Can be overwritten by `asChild`.
classClassValue—根元素之自訂 class

* 代表必填

Slots

名稱Bindings說明
default{ state: StepperState; }—

admin-stepper-trigger

Props

名稱型別預設值說明
asChildboolean | undefined—Change the default rendered element for the one passed as a child, merging their props and behavior. Read our [Composition](https://www.reka-ui.com/docs/guides/composition) guide for more details.
asglobalThis.Component | AsTag | undefined"div"The element or component this component should render as. Can be overwritten by `asChild`.
classClassValue—根元素之自訂 class

Slots

名稱Bindings說明
default{}—

admin-stepper-indicator

Props

名稱型別預設值說明
asChildboolean | undefined—Change the default rendered element for the one passed as a child, merging their props and behavior. Read our [Composition](https://www.reka-ui.com/docs/guides/composition) guide for more details.
asglobalThis.Component | AsTag | undefined"div"The element or component this component should render as. Can be overwritten by `asChild`.
classClassValue—根元素之自訂 class

Slots

名稱Bindings說明
default{ step: number; }—

admin-stepper-title

Props

名稱型別預設值說明
asChildboolean | undefined—Change the default rendered element for the one passed as a child, merging their props and behavior. Read our [Composition](https://www.reka-ui.com/docs/guides/composition) guide for more details.
asglobalThis.Component | AsTag | undefined"div"The element or component this component should render as. Can be overwritten by `asChild`.
classClassValue—根元素之自訂 class

Slots

名稱Bindings說明
default{}—

admin-stepper-description

Props

名稱型別預設值說明
asChildboolean | undefined—Change the default rendered element for the one passed as a child, merging their props and behavior. Read our [Composition](https://www.reka-ui.com/docs/guides/composition) guide for more details.
asglobalThis.Component | AsTag | undefined"div"The element or component this component should render as. Can be overwritten by `asChild`.
classClassValue—根元素之自訂 class

Slots

名稱Bindings說明
default{}—

admin-stepper-separator

Props

名稱型別預設值說明
orientationDataOrientation | undefined—Orientation of the component. Either `vertical` or `horizontal`. Defaults to `horizontal`.
decorativeboolean | undefined—Whether or not the component is purely decorative. When `true`, accessibility-related attributes are updated so that that the rendered element is removed from the accessibility tree.
asChildboolean | undefined—Change the default rendered element for the one passed as a child, merging their props and behavior. Read our [Composition](https://www.reka-ui.com/docs/guides/composition) guide for more details.
asglobalThis.Component | AsTag | undefined"div"The element or component this component should render as. Can be overwritten by `asChild`.
classClassValue—根元素之自訂 class

更新紀錄

  • feat: 新增 admin-stepper-description 對齊 shadcn-vue 分件b3d703f
  • refactor: 將剩餘 lucide-vue-next icon 遷移至 @tabler/icons-vue 並移除依賴1d9d1e4