Badge
Holat, kategoriya va filtr teglari uchun kichik yorliq: 6 rang, 3 variant, olib tashlash tugmasi.
'use client';
import { Badge } from '@akhatmirzo/ui';
export default function BadgeColors() {
return (
<div className="flex flex-wrap items-center gap-2">
<Badge>Qoralama</Badge>
<Badge color="primary">Yangi</Badge>
<Badge color="success">To'langan</Badge>
<Badge color="warning">Kutilmoqda</Badge>
<Badge color="danger">Bekor qilindi</Badge>
<Badge color="info">Yo'lda</Badge>
</div>
);
}
Import
import { Badge } from '@akhatmirzo/ui';Qachon ishlatish
- Holatni ko'rsatish uchun — "To'langan", "Kutilmoqda", "Bekor qilindi". Rang ma'noga mos
bo'lsin:
success— yakunlangan,warning— kutilmoqda,danger— xato yoki bekor. - Faqat rangga tayanmang. Matn har doim holatni o'zi aytsin — rangni ajrata olmaydigan foydalanuvchilar ham tushunsin.
- Filtr teglari uchun —
onRemovebilan ✕ tugmasi chiqadi. - Bosiladigan element emas. Badge — yorliq; harakat uchun
Buttonishlating. - Qisqa yozing — bir-ikki so'z. Uzun matn kesiladi (
truncate).
Ranglar
color: neutral (standart), primary, success, warning, danger, info. Ranglar
tokenlardan olinadi, shuning uchun dark mode'da ham kontrast saqlanadi.
Variantlar
variant: soft (standart) — och fon, solid — to'q fon, ko'proq e'tibor tortadi, outline —
chegara va rangli matn.
'use client';
import { Badge } from '@akhatmirzo/ui';
export default function BadgeVariants() {
return (
<div className="flex flex-col gap-3">
<div className="flex flex-wrap items-center gap-2">
<Badge variant="soft" color="success">
Soft
</Badge>
<Badge variant="solid" color="success">
Solid
</Badge>
<Badge variant="outline" color="success">
Outline
</Badge>
</div>
<div className="flex flex-wrap items-center gap-2">
<Badge variant="soft" color="danger">
Soft
</Badge>
<Badge variant="solid" color="danger">
Solid
</Badge>
<Badge variant="outline" color="danger">
Outline
</Badge>
</div>
</div>
);
}
O'lchamlar
sm — ixcham, jadval qatorlari uchun; md (standart).
'use client';
import { Badge } from '@akhatmirzo/ui';
export default function BadgeSizes() {
return (
<div className="flex flex-wrap items-center gap-2">
<Badge size="sm" color="primary">
Kichik
</Badge>
<Badge size="md" color="primary">
O'rta
</Badge>
</div>
);
}
Nuqta
dot — chap tomonda rangli nuqta. "Onlayn", "Faol" kabi jonli holatlar uchun.
'use client';
import { Badge } from '@akhatmirzo/ui';
export default function BadgeDot() {
return (
<div className="flex flex-wrap items-center gap-2">
<Badge dot color="success">
Onlayn
</Badge>
<Badge dot color="warning" variant="outline">
Tekshirilmoqda
</Badge>
<Badge dot color="danger" variant="solid">
To'xtatilgan
</Badge>
</div>
);
}
Olib tashlash
onRemove berilsa, ✕ tugmasi chiqadi. Tugmaning aria-label ini labels.remove bilan aniq
qiling — "Toshkent filtrini olib tashlash" "Olib tashlash" dan ko'ra tushunarli.
'use client';
import { Badge, Button } from '@akhatmirzo/ui';
import { useState } from 'react';
const initial = ['Toshkent', 'Samarqand', 'Buxoro', "Farg'ona"];
export default function BadgeRemovable() {
const [cities, setCities] = useState(initial);
return (
<div className="flex flex-wrap items-center gap-2">
{cities.map((city) => (
<Badge
key={city}
variant="outline"
onRemove={() => setCities((list) => list.filter((c) => c !== city))}
labels={{ remove: `${city} filtrini olib tashlash` }}
>
{city}
</Badge>
))}
{cities.length < initial.length && (
<Button variant="link" size="sm" onClick={() => setCities(initial)}>
Qaytarish
</Button>
)}
</div>
);
}
Props
Badge qolgan barcha <span> atributlarini qabul qiladi (color dan tashqari — u rang
variantiga band).
| Prop | Tip | Standart | Tavsif |
|---|---|---|---|
color | 'neutral' | 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'neutral' | Rang (ma'no) |
variant | 'soft' | 'solid' | 'outline' | 'soft' | Ko'rinish |
size | 'sm' | 'md' | 'md' | O'lcham |
dot | boolean | false | Chap tomonda rangli nuqta |
onRemove | (event: MouseEvent<HTMLButtonElement>) => void | — | Berilsa — ✕ tugmasi chiqadi |
labels | { remove?: string } | { remove: 'Olib tashlash' } | ✕ tugmasining aria-label matni |
Data atributlari
Ildiz elementda: data-variant, data-color, data-size. Stilni boshqa elementga qo'llash
uchun badgeVariants ham eksport qilinadi.
Accessibility
- Oddiy matn —
<span>, ekran o'quvchi ichidagi matnni o'qiydi. Nuqtaaria-hidden. - ✕ tugmasi — haqiqiy
<button>:Tabbilan fokuslanadi,Enter/Spacebilan bosiladi. Ko'rinishi 16px, lekin bosish maydoni kattaroq. - Teg o'chirilgach fokus yo'qolmasligi uchun uni keyingi tegga yoki qidiruv maydoniga o'zingiz o'tkazing.