@akhatmirzo/ui

Avatar

Foydalanuvchi rasmi yoki bosh harflari: ismdan doimiy rang, holat nuqtasi va guruh.

Import

import { Avatar, AvatarGroup } from '@akhatmirzo/ui';

Qachon ishlatish

  • Odam yoki tashkilotni ko'rsatish uchun — izohlar, chat, jadval qatorlari, profil menyusi.
  • Har doim name bering, rasm bo'lsa ham: rasm yuklanmasa, bosh harflar va rang ismdan olinadi, ekran o'quvchi esa ismni o'qiydi.
  • Bir ism — doim bir rang. Rang ismdan hisoblanadi, shuning uchun foydalanuvchini ro'yxatda rangidan ham tanish mumkin.
  • Ko'p ishtirokchi bo'lsa — AvatarGroup va max: ortiqchasi "+N" ga yig'iladi.

O'lchamlar va shakl

size: xs 24, sm 32, md 40 (standart), lg 48, xl 64px. shape: circle (standart) — odamlar uchun, square — do'kon, tashkilot, loyiha uchun.

Rasm va zaxira ko'rinish

src berilsa rasm chiqadi; yuklanguncha va yuklanmasa — bosh harflar. Ism ham bo'lmasa, odam ikonkasi (yoki fallback) ko'rsatiladi. Ikkinchi avatarda rasm manzili ataylab noto'g'ri.

Holat

status: online, offline, busy — burchakda rangli nuqta. Holat ekran o'quvchi uchun aria-label ga ham qo'shiladi: "Sarvar Abduxoliqov (onlayn)".

Guruh

AvatarGroup avatarlarni ustma-ust joylaydi. size va shape guruhdan bolalarga o'tadi; max dan ortiqchasi "+N" bo'lib chiqadi.

+3

Props

Avatar

Avatar qolgan barcha <span> atributlarini qabul qiladi (children dan tashqari).

PropTipStandartTavsif
srcstring—Rasm manzili
altstring—Ekran o'quvchi uchun nom (berilmasa — name)
namestring—Bosh harflar va fon rangi shu ismdan olinadi
size'xs' | 'sm' | 'md' | 'lg' | 'xl''md'O'lcham: 24 / 32 / 40 / 48 / 64px (guruh ichida — guruhniki)
shape'circle' | 'square''circle'Shakl (guruh ichida — guruhniki)
status'online' | 'offline' | 'busy'—Burchakdagi holat nuqtasi
fallbackReactNode—Ism ham, rasm ham bo'lmaganda (standart — odam ikonkasi)
labels{ status?: Partial<Record<AvatarStatus, string>> }{ status: { online: 'onlayn', offline: 'oflayn', busy: 'band' } }Holat nomlari (ekran o'quvchi uchun)

AvatarGroup

AvatarGroup qolgan barcha <div> atributlarini (aria-label ...) qabul qiladi.

PropTipStandartTavsif
maxnumber—Ko'pi bilan nechta avatar ko'rsatiladi; qolgani "+N"
size'xs' | 'sm' | 'md' | 'lg' | 'xl''md'Barcha avatarlar o'lchami
shape'circle' | 'square''circle'Barcha avatarlar shakli
labels{ more?: (count: number) => string }—Ekran o'quvchi uchun "+N" matni (standart — "Yana N ta")

Yordamchi funksiyalar

Avatar ishlatadigan mantiq alohida ham eksport qilinadi:

import { getAvatarColor, getInitials } from '@akhatmirzo/ui';

getInitials('Sarvar Abduxoliqov'); // 'SA'
getInitials("o'tkir hoshimov"); // 'OH'
getAvatarColor('Sarvar Abduxoliqov'); // 'bg-danger-soft text-danger-soft-foreground'

Data atributlari

Avatar ildizida: data-size, data-shape, data-status, data-state (loading · loaded · fallback).

Accessibility

  • role="img" va aria-label — alt yoki name dan, holat bo'lsa qavs ichida qo'shiladi. Ichidagi bosh harflar va rasm aria-hidden — ekran o'quvchi "SA" ni emas, to'liq ismni o'qiydi.
  • Nomsiz avatar (na alt, na name) bezak hisoblanadi va butunlay yashiriladi.
  • Guruh role="group"; unga aria-label bering ("Loyiha ishtirokchilari"). "+N" ham role="img" va "Yana N ta" deb o'qiladi.

Sahifada