@akhatmirzo/ui

Tabs

Bir sahifadagi bo'limlar orasida almashish: underline, pills va segmented ko'rinishlar.

Ism, telefon va yetkazib berish manzili.
Ism, telefon va yetkazib berish manzili.
Ism, telefon va yetkazib berish manzili.

Import

import { Tabs } from '@akhatmirzo/ui';

Qachon ishlatish

  • Bir mavzuning bir nechta ko'rinishi — mijoz kartasida "Ma'lumot", "Buyurtmalar", "Sharhlar". Foydalanuvchi bir vaqtda faqat bittasini ko'radi.
  • Davr yoki filtrni almashtirish — segmented ("Kun / Hafta / Oy") ixcham va tushunarli.
  • Sahifalar orasida o'tish uchun emas. Har bir bo'lim alohida URL bo'lishi kerak bo'lsa, havolali navigatsiya yasang.
  • Bo'limlarni solishtirish kerak bo'lsa — tablar noqulay: hammasini birdan ko'rsating yoki Accordion dan foydalaning.
  • Tablar soni 2–7 ta bo'lgani ma'qul. Ko'p bo'lsa ham ishlaydi (gorizontal scroll), lekin ko'rinmay qolganlarini topish qiyinroq.

Tuzilishi

QismVazifasi
TabsHolat (value, defaultValue), variant, size, orientation
Tabs.ListTablar qatori va siljuvchi indikator
Tabs.TriggerBitta tab: value, ixtiyoriy badge, disabled
Tabs.ContentTabga mos panel (value bo'yicha bog'lanadi)
<Tabs defaultValue="info">
  <Tabs.List aria-label="Mijoz">
    <Tabs.Trigger value="info">Ma'lumot</Tabs.Trigger>
    <Tabs.Trigger value="orders" badge={12}>
      Buyurtmalar
    </Tabs.Trigger>
  </Tabs.List>
  <Tabs.Content value="info">...</Tabs.Content>
  <Tabs.Content value="orders">...</Tabs.Content>
</Tabs>

Variantlar

VariantKo'rinish
underlineFaol tab ostida 2px chiziq; chiziq tabdan tabga siljib o'tadi (standart)
pillsFaol tab yumaloq primary-soft fonda
segmentedKulrang konteyner ichida faol tab "kartochka" bo'lib ajraladi

Indikator bir tabdan ikkinchisiga 200ms davomida siljiydi.

O'lchamlar

size — sm (32px) yoki md (40px, standart). segmented da ichki tab balandligi 28 / 32px.

Vertikal

orientation="vertical" — tablar chapda ustun bo'lib turadi, kontent o'ngda. Sozlamalar sahifalari uchun qulay. Klaviaturada ↑ ↓ ishlaydi.

Ism, familiya va profil rasmi.

Ko'p tablar

Tablar sig'masa, qator gorizontal suriladi, chetlarida yumshoq "fade" paydo bo'ladi — qolgan tablar borligini ko'rsatadi. Buni o'chirish uchun Tabs.List ga scrollable={false} bering.

Mart oyi bo'yicha savdo hisoboti.

Hisoblagich va o'chirilgan tab

badge — tab yonidagi hisoblagich: raqam yoki istalgan ReactNode (masalan, Badge). disabled tab bosilmaydi va klaviatura uni o'tkazib yuboradi.

Boshqariladigan rejim

value + onValueChange — faol tabni o'zingiz saqlaysiz. Tabs.Content siz, faqat tanlagich sifatida ham ishlatish mumkin.

Savdo: 8 740 000 so'm

Props

Tabs

Qolgan <div> atributlari va Radix Root prop'lari (activationMode, dir) ham qabul qilinadi.

PropTipStandartTavsif
valuestring—Faol tab (boshqariladigan rejim)
defaultValuestring—Boshlang'ich faol tab
onValueChange(value: string) => void—Faol tab almashganda
variant'underline' | 'pills' | 'segmented''underline'Ko'rinish
size'sm' | 'md''md'Balandlik: 32 / 40px
orientation'horizontal' | 'vertical''horizontal'Tablar yo'nalishi

Tabs.List

PropTipStandartTavsif
scrollablebooleantrueSig'masa — gorizontal scroll va chetlarda fade
aria-labelstring—Tablar guruhining nomi (tavsiya etiladi)
loopbooleantrueStrelkalar oxiridan boshiga aylanadi

Tabs.Trigger

PropTipStandartTavsif
valuemajburiystring—Tab qiymati
badgeReactNode—Yonidagi hisoblagich, masalan 12
disabledboolean—Tabni o'chiradi

Tabs.Content

PropTipStandartTavsif
valuemajburiystring—Qaysi tabga tegishli
forceMounttrue—Yashirin paytda ham DOM'da qoldiradi

Data atributlari

AtributQayerdaQiymat
data-variantildiz, ro'yxatunderline · pills · segmented
data-sizeildiz, ro'yxatsm · md
data-orientationbarcha qismlarhorizontal · vertical
data-statetab, panelactive · inactive
data-disabledtabo'chirilganda mavjud
data-tabs-indicatorindikatorsiljuvchi chiziq yoki fon

Klaviatura

TugmaHarakat
← / → (vertikalda ↑ / ↓)Tablar bo'ylab yurish; fokus olgan tab darhol faollashadi
Home / EndBirinchi / oxirgi tab
TabTablar qatoridan faol panelga o'tish

Accessibility

  • Rollar. Ro'yxat — role="tablist" (aria-orientation bilan), tab — role="tab" (aria-selected, aria-controls), panel — role="tabpanel" (aria-labelledby). Asosida Radix Tabs.
  • Nom. Tabs.List ga aria-label bering ("Mijoz", "Davr") — ekran o'quvchi guruhni shu nom bilan e'lon qiladi.
  • Roving focus. Tablar qatori Tab uchun bitta to'xtash joyi; ichida strelkalar bilan yuriladi.
  • Fokus halqasi scroll konteyneri ichida kesilib qolmasligi uchun tab ichiga chiziladi.
  • Indikator bezak — aria-hidden. prefers-reduced-motion da u siljimasdan o'tadi.

Sahifada