Avatar
Baş harf yedekli kullanıcı fotoğrafları, durum rozetleri ve sayıya daralan yığılmış gruplar.
pnpm dlx shadcn@latest add https://hextaui.com/r/avatar.jsonBileşeni, HextaUI tema token'larını ve bileşenin bağımlı olduğu tüm HextaUI bileşenlerini ekler.
Henüz eklemediyseniz tema token'larını global CSS'inize ekleyin.
Bağımlılıkları yükleyin.
pnpm add @base-ui/react @tabler/icons-react class-variance-authority cnAşağıdaki kodu kopyalayıp projenize yapıştırın.
components/ui/avatar.tsx İçe aktarma yollarını proje yapılandırmanıza uyacak şekilde güncelleyin.
Boyutlar ve şekiller
Daire veya kare olarak beş boyut. Baş harfler ve kullanıcı simgesi kutuyla birlikte ölçeklenir, kare köşeler boyutla birlikte küçülür. Boş bir <AvatarFallback /> kullanıcı simgesini gösterir.
Yükleniyor
Fotoğraf yüklenirken baş harfler görünür, sonra fotoğraf üzerlerinde solarak belirir. Bozuk bir fotoğraf fallback'i korur. Hızlı fotoğraflarda baş harflerin göz kırpmaması için baş harfleri göstermeden önce beklemek üzere delay geçin.
Baş harfler
getInitials() ilk ve son baş harfi seçer. E-posta adreslerini, emojileri, CJK ve RTL adlarını, birleştirici işaretleri ve hiç harf içermeyen adları işler.
Durum
<AvatarBadge /> her boyutta ve şekilde kenar üzerinde durur. Erişilebilir etiketli renkli bir nokta için status ayarlayın veya bir simge geçin. Durumu değiştirmek tek bir nabız oynatır.
Group
<AvatarGroup /> avatarlarını üst üste bindirir ve boyutunu ve şeklini ayarlar. max kalanları bir sayıya daraltır.
Bağlantılı grup
render ile avatarları bağlantı olarak oluşturun ve her birine bir aria-label verin. Odaktaki avatar komşularının üstüne çıkar, böylece halka asla kesilmez. Toplam verinizden geliyorsa <AvatarGroupCount /> bileşenini kendiniz ekleyin.
Yerleşim
Avatarlar dar satırlarda asla küçülmez. size-20 gibi bir boyut sınıfı baş harfleri ve rozeti de ölçekler; uzun baş harfler asla taşmaz.
Sağdan sola
Rozet son köşede kalır; RTL'de bu sol taraftır ve gruplar sağdan üst üste biner.
Avatarlar kendi başlarına odaklanılabilir değildir. Bağlantı veya düğme olarak oluşturulduklarında olağan tuşları alırlar.
| Tuş | Action |
|---|---|
| Tab | Odağı sonraki bağlantılı avatara taşır. |
| Enter | Odaktaki bağlantıyı izler. |
- Kişinin adı zaten avatarın yanındaysa
alt=""kullanın; değilse alt metni olarak adını kullanın. statusiçeren rozetler “Online”, “Away”, “Busy” veya “Offline” olarak duyurulur. Offline bir halka olarak çizilir; böylece durum asla yalnızca renge dayanmaz.- Gruplarda
role="group"bulunur. Sayı “+3” değil, “3 more” olarak okunur. - Azaltılmış hareket açıkken fotoğraflar solmadan görünür ve durum değişiklikleri nabız atmaz.
Base UI avatar üzerine kuruludur. Her parça, oluşturduğu öğenin niteliklerini kabul eder. Stiller avatarVariants ve avatarBadgeVariants olarak dışa aktarılır.
| Prop | Tür | Varsayılan |
|---|---|---|
sizeBelirtilmezse gruptan devralınır. | "xs" | "sm" | "default" | "lg" | "xl" | "default" |
shapeBelirtilmezse gruptan devralınır. | "circle" | "square" | "circle" |
render | ReactElement | (props, state) => ReactElement | <span> |
| Öznitelik | Açıklama |
|---|---|
data-slot="avatar" | CSS'te avatarları hedefleyin. |
data-size | Çözümlenen boyut. |
data-shape | Çözümlenen şekil. |
--avatar-radius | Her katmanın paylaştığı köşe yarıçapı. |
| Prop | Tür | Varsayılan |
|---|---|---|
src | string | – |
alt | string | – |
onLoadingStatusChange | (status: "idle" | "loading" | "loaded" | "error") => void | – |
keepMountedGörseli önceden yüklemek yerine yerinde yükleyin; loading="lazy" veya next/image için. | boolean | false |
render | ReactElement | (props, state) => ReactElement | <img> |
| Öznitelik | Açıklama |
|---|---|
data-slot="avatar-image" | CSS'te görselleri hedefleyin. |
data-loading | Görsel yüklenirken bulunur. |
data-error | Görsel yüklenemediğinde bulunur. |
data-starting-style | Görsel solarak belirirken bulunur. |
data-ending-style | Görsel solarak kaybolurken bulunur. |
| Prop | Tür | Varsayılan |
|---|---|---|
childrenBoş veya yalnızca boşluk olduğunda kullanıcı simgesi gösterilir. | ReactNode | <IconUser /> |
delayGöstermeden önce beklenecek milisaniye. | number | 0 |
render | ReactElement | (props, state) => ReactElement | <span> |
| Öznitelik | Açıklama |
|---|---|
data-slot="avatar-fallback" | CSS'te fallback'leri hedefleyin. |
data-ready | Gecikme geçene kadar false. |
| Prop | Tür | Varsayılan |
|---|---|---|
statusNoktayı renklendirir ve yardımcı teknolojiler için etiketler. Bu olmadan rozet primary rengini kullanır. | "online" | "away" | "busy" | "offline" | – |
childrenRozetin içindeki bir simge. xs ve sm boyutlarında gizlenir. | ReactNode | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="avatar-badge" | CSS'te rozetleri hedefleyin. |
data-status | Geçerli durum. |
data-slot="avatar-badge-pulse" | Durum değişikliğinden sonra oynatılan nabız. |
| Prop | Tür | Varsayılan |
|---|---|---|
size | "xs" | "sm" | "default" | "lg" | "xl" | "default" |
shape | "circle" | "square" | "circle" |
maxSayı dahil kaç öğenin gösterileceği. 2'nin altındaki değerler 2'ye yükseltilir. | number | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="avatar-group" | CSS'te grupları hedefleyin. |
data-size | Grubun boyutu. |
| Prop | Tür | Varsayılan |
|---|---|---|
count+3 olarak, 99'un üzerinde 99+ olarak gösterilir. | number | – |
childrenSayının yerine geçer, örneğin bir simgeyle. | ReactNode | – |
sizeBelirtilmezse gruptan devralınır. | "xs" | "sm" | "default" | "lg" | "xl" | – |
shapeBelirtilmezse gruptan devralınır. | "circle" | "square" | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="avatar-group-count" | CSS'te sayacı hedefleyin. |
data-size | Çözümlenen boyut. |
data-shape | Çözümlenen şekil. |
getInitials(name, max = 2) en fazla max büyük harfli baş harf döndürür: ilk kelimenin ve son kelimenin baş harfi. E-posta adresi için @ öncesindeki kısmı kullanır. Adda harf, sayı veya emoji yoksa boş dize döndürür; böylece fallback kullanıcı simgesini gösterir.
- BadgeRenkli noktalı durum etiketleri, kayarak kapanan kaldırılabilir etiketler ve yeni değerine dönen sayaçlar.
- Cardİçeriği gruplamak için bir yüzey; üç varyant, kenardan kenara medya, eşmerkezli yarıçaplar ve tüm kartı kaplayan bağlantılar içerir.
- ChartTema renkli Recharts grafikleri; etiketleri tek bir yapılandırmadan okuyan bir tooltip ve gösterge, ayrıca görünür odak halkalı klavye gezintisi.
- Data tableGerçek veriler için bir tablo; sıralama, arama, satır seçimi, sabitlenmiş sütunlar, yapışkan başlık ve sayfalama içerir.
- ItemListeler, ayarlar ve seçiciler için medya, metin ve eylemlerden oluşan bir satır; gruplanmış bir yüzey ve satırlar arasında kayan bir hover vurgusu içerir.
- KbdKısayollar için, her platformda doğru simgeleri gösteren, düzgün sesli okunan ve gerçek tuşlar gibi basılan tuş başlıkları.
Kullanıldığı bloklar
Avatar üzerine kurulan bloklar.
- Chat SidebarBir sohbet uygulaması için kenar çubuğu. Üstte logo, arama ve Yeni sohbet, altında kendi bağlantılarınız, sabitlenmiş sohbetler, sohbetlerini göstermek için genişleyen projeler, güne göre gruplanmış son sohbetler ve hover ile sağ tık menüleri, satır içi yeniden adlandırma, geri alınabilir silme ve canlı yanıt durumları olan satırlar.
- Diff ReviewBir ajanın dosyalardaki düzenlemelerini uygulanmadan önce gözden geçirin. Sayaçlı bir dosya ağacı, her değişikliği, her dosyayı ya da hepsini kabul veya reddetme, herhangi bir satıra ya da aralığa ajana geri giden yorumlar, birleşik ve bölünmüş görünümler, kelime düzeyinde vurgular, geri alma, akışla gelen düzenlemeler ve sohbet için bir “4 dosya düzenlendi” özeti.
- ProfileBir yapay zeka ürününün ayarlarındaki Profil bölümü. Fotoğrafı daire içine kırpın, siz yazarken kontrol edilen bir kullanıcı adı seçin, yeni e-postayı 6 haneli bir kodla onaylayın, siteyi tanıyan bağlantılar ekleyin ve başkalarının sizi nasıl gördüğünü canlı bir kartta izleyin.
- SettingsCursor ve Claude gibi düzenlenmiş, bir yapay zeka ürünü için ayarlar. Arama, gruplar ve harici bağlantılı dolu bir kenar çubuğu, sakin seçiciler ve iç içe seçenekler içeren satır kartları, yalnızca bir şey değiştiğinde yükselen koyu bir kaydetme adası, kaydetmek için ⌘S, kontrollerinizden ya da sunucunuzdan gelen alan hataları ve içeriğin şeklini alan yükleme durumları.