@akhatmirzo/ui

Bu eski versiya hujjati

Siz v0.2 hujjatini o'qiyapsiz. Eng so'nggi versiya — v0.3.

Eng so'nggisiga o'tish →

SegmentedControl

Bir nechta variantdan bittasini tanlash: suriluvchi indikator, ikonkalar, Button bilan bir xil o'lchamlar.

Import

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

Qachon ishlatish

  • Ko'rinish rejimi — "Katakli / Ro'yxat / Xarita". Tanlov darhol qo'llanadi.
  • Filtr yoki davr — "Kun / Hafta / Oy", "Hammasi / To'langan / Qarz".
  • Variantlar 2–5 ta va qisqa bo'lsin. Ko'p yoki uzun bo'lsa — Select yoki RadioGroup.
  • Yoqish/o'chirish uchun emas — ikki holatli sozlamaga Switch mos.

Tabs'dan farqi

Ikkalasi ham bir xil ko'rinishi mumkin, lekin vazifasi boshqa:

TabsSegmentedControl
Nima qiladiKontent panellarini almashtiradiQiymat tanlaydi (filtr, rejim, davr)
Semantikatablist / tab / tabpanelradiogroup / radio
NatijaSahifaning boshqa bo'limi ko'rinadiMavjud kontent qayta filtrlanadi yoki chiziladi
FormaYo'qname bilan forma qiymati bo'ladi

Qoida: tanlovdan keyin boshqa kontent paydo bo'lsa — Tabs; o'sha kontent boshqacha ko'rinsa yoki filtrlansa — SegmentedControl.

O'lchamlar

size — sm (32px), md (40px, standart), lg (48px). Balandliklar Button va Input bilan bir xil, shuning uchun bir qatorda tekis turadi.

Ikonkalar

icon — matn oldidagi ikonka. Faqat ikonkali elementda aria-label majburiy — TypeScript uni talab qiladi.

To'liq kenglik

fullWidth — konteyner kengligini egallaydi, elementlar teng bo'linadi. Mobil formalarda qulay.

Boshqariladigan rejim

value + onValueChange — tanlovni o'zingiz saqlaysiz. Tanlangan elementni qayta bosish tanlovni bekor qilmaydi — doim bitta qiymat tanlangan bo'ladi.

Savdo: 8 740 000 so'm

O'chirilgan holat

disabled butun guruhga yoki bitta SegmentedControl.Item ga beriladi. O'chirilgan element bosilmaydi va klaviatura uni o'tkazib yuboradi.

Props

SegmentedControl

Qolgan <div> atributlari va Radix RadioGroup prop'lari (name, required, loop, dir) ham qabul qilinadi; ref ildiz elementga tushadi.

PropTipStandartTavsif
valuestring—Tanlangan qiymat (boshqariladigan rejim)
defaultValuestring—Boshlang'ich qiymat
onValueChange(value: string) => void—Tanlov almashganda
size'sm' | 'md' | 'lg''md'Balandlik: 32 / 40 / 48px
fullWidthbooleanfalseKenglikni egallaydi, elementlar teng bo'linadi
disabledboolean—Butun guruhni o'chiradi
namestring—Forma uchun (yashirin radio input)
aria-labelstring—Guruh nomi (masalan, Davr yoki Ko'rinish)

SegmentedControl.Item

PropTipStandartTavsif
valuemajburiystring—Element qiymati
iconReactNode—Matn oldidagi ikonka
disabledboolean—Elementni o'chiradi
aria-labelstring—Faqat ikonkali elementda majburiy

Data atributlari

AtributQayerdaQiymat
data-sizeildizsm · md · lg
data-full-widthildizfullWidth da mavjud
data-disabledildiz, elemento'chirilganda mavjud
data-stateelementchecked · unchecked
data-slotindikatorsegmented-control-indicator

Klaviatura

TugmaHarakat
TabGuruhga kirish (tanlangan elementga) va guruhdan chiqish
← ↑ / → ↓Oldingi / keyingi element — fokus bilan birga darhol tanlanadi

Accessibility

  • Rollar. Ildiz — role="radiogroup", element — role="radio" (aria-checked). Asosida Radix RadioGroup: bitta tanlov, roving focus — guruh Tab uchun bitta to'xtash joyi.
  • Nom. Guruhga aria-label bering ("Davr"). Field ichida label guruh nomiga aylanadi, izoh aria-describedby ga ulanadi.
  • Faqat ikonkali element — aria-label majburiy (TypeScript tekshiradi).
  • Indikator bezak — aria-hidden. U tanlangan element o'lchamini o'qib, 200ms davomida siljiydi; o'lcham o'zgarsa (oyna kengligi, shrift yuklanishi) qayta hisoblanadi. prefers-reduced-motion da sakrab o'tadi.

Sahifada