Skip to content

Steps ​

Ko‘p bosqichli ish jarayonlari uchun qadam indikatori komponenti. Gorizontal va vertikal joylashuv, belgilar, tavsiflar, xato holatlar, bosiladigan navigatsiya, bir nechta o‘lchamlar va to‘liq CSS sozlamalarini qo‘llab-quvvatlaydi.

Basic ​

Account
2
Profile
3
Review
4
Done
vue
<script setup>
import { ref } from 'vue'
import { VxSteps } from 'veloxui'

const current = ref(1)

const items = [
  { key: 'account', title: 'Account' },
  { key: 'profile', title: 'Profile' },
  { key: 'review', title: 'Review' },
  { key: 'done', title: 'Done' },
]
</script>

<template>
  <VxSteps :items="items" :current="current" />
</template>

With Descriptions ​

AccountCreate your account credentials
2
ProfileFill in your personal details
3
ReviewVerify all information
4
DoneSetup complete
vue
<VxSteps :items="[
  { key: 'account', title: 'Account', description: 'Create your account credentials' },
  { key: 'profile', title: 'Profile', description: 'Fill in your personal details' },
  { key: 'review', title: 'Review', description: 'Verify all information' },
  { key: 'done', title: 'Done', description: 'Setup complete' },
]" :current="1" />

With Icons ​

Account
Settings
Upload
Complete
vue
<VxSteps :items="[
  { key: 'account', title: 'Account', icon: 'user' },
  { key: 'settings', title: 'Settings', icon: 'settings' },
  { key: 'upload', title: 'Upload', icon: 'upload' },
  { key: 'done', title: 'Complete', icon: 'check' },
]" :current="2" />

Error State ​

Qadam elementini xato holatda ko‘rsatish uchun error: true ni o‘rnating.

Account
Verification
3
Done
vue
<VxSteps :items="[
  { key: 'account', title: 'Account' },
  { key: 'verify', title: 'Verification', error: true },
  { key: 'done', title: 'Done' },
]" :current="1" />

Clickable ​

Har qanday qadamga bosishga ruxsat berish uchun clickableni o‘rnating. Ikki tomonlama bog‘lash uchun v-model:currentdan foydalaning.

AccountCreate your account credentials
2
ProfileFill in your personal details
3
ReviewVerify all information
4
DoneSetup complete
Joriy qadam: 1
vue
<VxSteps v-model:current="current" :items="items" clickable />

Vertical ​

Order PlacedYour order has been submitted
2
ProcessingWe are preparing your order
3
ShippedPackage is on its way
4
DeliveredPackage has arrived
vue
<script setup>
import { ref } from 'vue'
import { VxSteps } from 'veloxui'

const current = ref(1)

const items = [
  { key: 'order', title: 'Order Placed', description: 'Your order has been submitted' },
  { key: 'processing', title: 'Processing', description: 'We are preparing your order' },
  { key: 'shipped', title: 'Shipped', description: 'Package is on its way' },
  { key: 'delivered', title: 'Delivered', description: 'Package has arrived' },
]
</script>

<template>
  <VxSteps :items="items" :current="current" direction="vertical" />
</template>

Sizes ​

Uchta o‘lcham: sm, md (sukut bo‘yicha) va lg.

Account
Profile
3
Review
4
Done
Account
Profile
3
Review
4
Done
Account
Profile
3
Review
4
Done
vue
<VxSteps :items="items" :current="2" size="sm" />
<VxSteps :items="items" :current="2" size="md" />
<VxSteps :items="items" :current="2" size="lg" />

Square Variant ​

Doiralar o‘rniga yumaloq kvadrat indikatorlar uchun variant="square" dan foydalaning.

AccountCreate your account credentials
2
ProfileFill in your personal details
3
ReviewVerify all information
4
DoneSetup complete
AccountCreate your account credentials
ProfileFill in your personal details
3
ReviewVerify all information
4
DoneSetup complete
vue
<VxSteps :items="items" :current="1" variant="square" clickable />
<VxSteps :items="items" :current="2" variant="square" direction="vertical" />

Custom Dot Size & Line Width ​

O‘lcham presetlari qiymatlarini bekor qilish uchun dot-size va line-width proplaridan foydalaning.

Account
2
Profile
3
Review
4
Done
Account
2
Profile
3
Review
4
Done
vue
<VxSteps :items="items" :current="1" :dot-size="40" :line-width="2" />
<VxSteps :items="items" :current="1" :dot-size="20" :line-width="2" />

Custom Colors (CSS Variables) ​

O‘rab oluvchi klass ustidagi CSS custom propertylari orqali har qanday vizual jihatni bekor qiling.

AccountCreate your account credentials
2
ProfileFill in your personal details
3
ReviewVerify all information
4
DoneSetup complete
AccountCreate your account credentials
ProfileFill in your personal details
3
ReviewVerify all information
4
DoneSetup complete
vue
<template>
  <div class="steps-green-theme">
    <VxSteps :items="items" :current="1" clickable />
  </div>
</template>

<style>
.steps-green-theme .vx-steps {
  --vx-steps-active-bg: #16a34a;
  --vx-steps-active-border: #16a34a;
  --vx-steps-active-color: #fff;
  --vx-steps-active-shadow: 0 0 0 3px rgba(22, 163, 74, 0.16);
  --vx-steps-completed-bg: #16a34a;
  --vx-steps-completed-border: #16a34a;
  --vx-steps-completed-color: #fff;
  --vx-steps-line-done-color: #16a34a;
}
</style>

Custom Slots ​

Sarlavhalar, tavsiflar, belgilarni to‘liq sozlash va har bir qadam uchun qo‘shimcha kontent qo‘shish uchun slotlardan foydalaning.

Account Create your account credentials
2
Profile JoriyFill in your personal details
3
Review Verify all information
4
Done Setup complete
vue
<VxSteps :items="items" :current="current" clickable direction="vertical">
  <!-- Custom title for all steps -->
  <template #title="{ item, status }">
    <span :style="{ fontWeight: status === 'active' ? 700 : 400 }">
      {{ item.title }}
      <VxTag v-if="status === 'active'" size="sm">Current</VxTag>
    </span>
  </template>

  <!-- Extra content only for the 'review' step -->
  <template #content-review="{ status }">
    <div v-if="status === 'active'" style="padding: 12px; background: var(--muted); border-radius: 8px;">
      Please review all your information before proceeding.
    </div>
  </template>
</VxSteps>

Content Panel ​

Qadamlar paneli ostida har bir qadamga xos kontentni ko‘rsatish uchun panel-{key} slotlardan foydalaning. Faol qadamning paneli avtomatik ravishda ko‘rsatiladi.

1
Account
2
Profile
3
Confirm
Hisobingizni yarating
vue
<script setup>
import { ref } from 'vue'
import { VxSteps, VxInput, VxButton } from 'veloxui'

const current = ref(0)

const items = [
  { key: 'account', title: 'Account' },
  { key: 'profile', title: 'Profile' },
  { key: 'confirm', title: 'Confirm' },
]

function next() {
  if (current.value < items.length - 1) current.value++
}
function prev() {
  if (current.value > 0) current.value--
}
</script>

<template>
  <VxSteps :items="items" :current="current" clickable>
    <template #panel-account>
      <div style="padding: 20px; border: 1px solid var(--border); border-radius: 10px;">
        <VxInput placeholder="Email address" />
        <VxInput placeholder="Password" type="password" />
        <VxButton size="sm" @click="next">Next</VxButton>
      </div>
    </template>
    <template #panel-profile>
      <div style="padding: 20px; border: 1px solid var(--border); border-radius: 10px;">
        <VxInput placeholder="Full name" />
        <VxButton variant="outline" size="sm" @click="prev">Back</VxButton>
        <VxButton size="sm" @click="next">Next</VxButton>
      </div>
    </template>
    <template #panel-confirm>
      <div style="text-align: center;">All done!</div>
    </template>
  </VxSteps>
</template>

Vertical Content Panel ​

Kontent paneli vertikal yo‘nalish bilan ham ishlaydi — u qadamlar yonida render qilinadi.

1
InformationBasic details
2
AddressShipping address
3
PaymentPayment method
Asosiy ma’lumotlar
vue
<VxSteps :items="items" :current="current" direction="vertical" clickable>
  <template #panel-info>
    <!-- Your form content here -->
  </template>
  <template #panel-address>
    <!-- Address form -->
  </template>
  <template #panel-payment>
    <!-- Payment form -->
  </template>
</VxSteps>

Simple Wizard ​

Faqat Keyingi / Orqaga tugmalari bilan minimal sehrgar (kontent panelisiz).

1
Choose Plan
2
Billing
3
Confirm
vue
<script setup>
import { ref } from 'vue'
import { VxSteps, VxButton } from 'veloxui'

const current = ref(0)

const items = [
  { key: 'plan', title: 'Choose Plan' },
  { key: 'billing', title: 'Billing' },
  { key: 'confirm', title: 'Confirm' },
]

function next() {
  if (current.value < items.length - 1) current.value++
}
function prev() {
  if (current.value > 0) current.value--
}
</script>

<template>
  <VxSteps :items="items" :current="current" />
  <div style="margin-top: 20px; display: flex; gap: 8px; justify-content: flex-end;">
    <VxButton variant="outline" size="sm" :disabled="current === 0" @click="prev">Back</VxButton>
    <VxButton size="sm" @click="next" :disabled="current === items.length - 1">Next</VxButton>
  </div>
</template>

API ​

VxSteps Props ​

PropTypeDefaultDescription
itemsStepItem[][]Qadam elementlari
currentnumber0Faol qadam indeksi (noldan boshlanadi)
direction'horizontal' | 'vertical''horizontal'Joylashuv yo‘nalishi
size'sm' | 'md' | 'lg''md'Qadam indikatori o‘lchami
variant'circle' | 'square''circle'Indikator shakli
clickablebooleanfalseNavigatsiya uchun qadamlarni bosishga ruxsat berish
dot-sizenumber | string—Indikator o‘lchamini bekor qilish (masalan, 40 yoki '40px')
line-widthnumber | string—Chiziq qalinligini bekor qilish (masalan, 2 yoki '2px')
root-classstring | string[] | object—Ildizdagi class

StepItem ​

PropertyTypeRequiredDescription
keystringYesNoyob identifikator
titlestringYesQadam sarlavhasi
descriptionstringNoQadam tavsif matni
iconstring | ComponentNoMoslashtirilgan belgi (raqamni almashtiradi)
disabledbooleanNoBu qadamni o‘chirish
errorbooleanNoXato holatini ko‘rsatish

Slots ​

SlotPropsDescription
icon{ item, status, index }Barcha qadamlar uchun moslashtirilgan indikator
icon-{key}{ item, status, index }Muayyan qadam uchun moslashtirilgan indikator
title{ item, status, index }Barcha qadamlar uchun moslashtirilgan sarlavha
title-{key}{ item, status, index }Muayyan qadam uchun moslashtirilgan sarlavha
description{ item, status, index }Barcha qadamlar uchun moslashtirilgan tavsif
description-{key}{ item, status, index }Muayyan qadam uchun moslashtirilgan tavsif
content-{key}{ item, status, index }Muayyan qadam matni ostidagi qo‘shimcha kontent maydoni
line{ index, status, done }Qadamlar orasidagi moslashtirilgan chiziq ulagichi
panel{ item, status, index }Barcha qadamlar uchun standart kontent paneli
panel-{key}{ item, status, index }Muayyan qadam uchun kontent paneli (faol bo‘lganda ko‘rsatiladi)

Events ​

EventPayloadDescription
update:current(index: number)Qadam o‘zgardi (clickable rejimi)
click(index, item)Qadam bosildi

CSS Custom Properties ​

Ranglar, o‘lchamlar va oraliqni sozlash uchun .vx-steps elementida yoki ota o‘rovchida ularni bekor qiling.

VariableDefaultDescription
--vx-steps-dot-sizeO‘lcham presetiIndikator kengligi/balandligi
--vx-steps-dot-radius50% / 8pxIndikator border-radius qiymati
--vx-steps-dot-font-sizeO‘lcham presetiNuqta ichidagi raqam font-size qiymati
--vx-steps-dot-font-weight600Nuqta ichidagi raqam font-weight qiymati
--vx-steps-dot-bgvar(--background)Keyingi nuqta foni
--vx-steps-dot-bordervar(--border)Keyingi nuqta chegarasi
--vx-steps-dot-colorvar(--muted-foreground)Keyingi nuqta matn rangi
--vx-steps-active-bgvar(--primary)Faol nuqta foni
--vx-steps-active-bordervar(--primary)Faol nuqta chegarasi
--vx-steps-active-colorvar(--primary-foreground)Faol nuqta matn rangi
--vx-steps-active-shadowhalqa yaltirashiFaol nuqta box-shadow qiymati
--vx-steps-completed-bgvar(--primary)Bajarilgan nuqta foni
--vx-steps-completed-bordervar(--primary)Bajarilgan nuqta chegarasi
--vx-steps-completed-colorvar(--primary-foreground)Bajarilgan nuqta matn rangi
--vx-steps-error-bgvar(--background)Xato nuqta foni
--vx-steps-error-bordervar(--destructive)Xato nuqta chegarasi
--vx-steps-error-colorvar(--destructive)Xato nuqta matn rangi
--vx-steps-line-colorvar(--border)Tugallanmagan chiziq rangi
--vx-steps-line-done-colorvar(--primary)Bajarilgan chiziq rangi
--vx-steps-line-width1pxChiziq qalinligi
--vx-steps-title-sizeO‘lcham presetiSarlavha font-size qiymati
--vx-steps-title-weight500Sarlavha font-weight qiymati
--vx-steps-title-colorvar(--foreground)Sarlavha rangi
--vx-steps-title-upcoming-colorvar(--muted-foreground)Keyingi sarlavha rangi
--vx-steps-title-error-colorvar(--destructive)Xato sarlavha rangi
--vx-steps-desc-sizeO‘lcham presetiTavsif font-size qiymati
--vx-steps-desc-colorvar(--muted-foreground)Tavsif rangi
--vx-steps-text-gap8pxIndikator va matn orasidagi oraliq (gorizontal)
--vx-steps-line-gap24pxQadamlar orasidagi vertikal oraliq
--vx-steps-panel-gap24pxQadamlar paneli va kontent paneli orasidagi oraliq
--vx-steps-panel-padding0Kontent paneli padding qiymati