@akhatmirzo/ui

Rating

Yulduzli baho: klaviatura, yarim qiymatlar, hover'da oldindan ko'rish va sharhlar uchun faqat o'qish rejimi.

Import

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

Qachon ishlatish

  • Mahsulot, xizmat yoki kuryerni baholash — foydalanuvchi bir bosishda fikrini bildiradi.
  • Sharhlar ro'yxatida o'rtacha bahoni ko'rsatish — readOnly (kasr qiymatlar ham aniq chiziladi: 4.3 → 4 ta to'liq va 0.3 qism).
  • Aniq son yoki keng shkala kerak bo'lsa (0–100) — Slider qulayroq.
  • Ma'nosi har xil variantlar ("Yomon / O'rtacha / Yaxshi") — SegmentedControl yoki RadioGroup.

Yarim qiymatlar

allowHalf — har bir yulduzning chap yarmi x.5, o'ng yarmi x qiymatini beradi; strelkalar 0.5 qadam bilan yuradi. Yarim yulduz clip-path bilan chiziladi.

3.5 / 5

Faqat o'qish

readOnly — interaktiv emas: element role="img" va aria-label="4.5 / 5" bilan bitta rasm sifatida o'qiladi. Qiymat yaxlitlanmaydi — 3.7 aniq 3.7 yulduz bo'lib chiziladi.

  • Dilnoza

    Yetkazib berish tez, sifat zo'r.

  • Jasur

    O'lchami biroz katta keldi.

Rang, ikonka va o'lcham

  • color — to'lgan yulduz rangi: warning (standart), primary, danger. Bo'sh yulduzlar — text-muted rangida.
  • icon — ichki yulduz o'rniga istalgan ikonka (currentColor bilan bo'yaladigan SVG).
  • size — sm 16px, md 20px (standart), lg 28px.
  • max — yulduzlar soni (standart 5).

Tozalash va Field

allowClear (standart true) — tanlangan yulduzni qayta bossangiz qiymat 0 bo'ladi. Majburiy baholashda allowClear={false} qo'ying. Field ichida label guruh nomiga, izoh aria-describedby ga aylanadi.

1 dan 5 gacha baholang

Props

Qolgan <div> atributlari ildiz elementga, ref ham shunga tushadi.

PropTipStandartTavsif
valuenumber—Qiymat (boshqariladigan rejim)
defaultValuenumber0Boshlang'ich qiymat
onValueChange(value: number) => void—Qiymat o'zgarganda
maxnumber5Yulduzlar soni
allowHalfbooleanfalse0.5 qadam
allowClearbooleantrueTanlangan qiymatni qayta bosish 0 qiladi
readOnlybooleanfalseFaqat ko'rsatish: role="img" + aria-label
disabledboolean—O'chirilgan holat (fokus olmaydi)
size'sm' | 'md' | 'lg''md'Yulduz o'lchami 16 / 20 / 28px
iconReactNodeyulduz SVGYulduz o'rniga ikonka
color'warning' | 'primary' | 'danger''warning'To'lgan yulduz rangi
labels{ value?: (value: number, max: number) => string; group?: string }'${v} / ${max}', 'Baho'Radio va readOnly nomi; guruh nomi (Field va aria-label bo'lmasa)

Data atributlari

AtributQayerdaQiymat
data-sizeildizsm · md · lg
data-hoverildizsichqoncha yulduzlar ustida bo'lsa
data-readonlyildizreadOnly da mavjud
data-disabledildizo'chirilganda mavjud
data-stateradiochecked · unchecked
data-stateyulduzfull · partial · empty

Klaviatura

TugmaHarakat
TabGuruhga kirish (tanlangan yulduzga)
→ ↑ / ← ↓Bir qadam oshirish / kamaytirish (va tanlash)
Home / EndEng kichik (1 yoki 0.5) / eng katta qiymat
Space / EnterFokusdagi yulduzni tanlash (qayta — tozalash)

Accessibility

  • Interaktiv — role="radiogroup", har bir qiymat role="radio" (aria-checked, aria-label="3 / 5"); allowHalf da har yulduzda ikkita radio. Roving tabindex: guruhda bitta Tab to'xtashi.
  • Nom. Field label'i aria-labelledby orqali, aks holda aria-label yoki labels.group ("Baho").
  • readOnly — role="img" va aria-label (labels.value), yulduzlar aria-hidden.
  • Disabled — aria-disabled, radiolar fokus olmaydi.

Sahifada