انتقل إلى المحتوى
TopClass UI

مجموعة صور رمزية

صور رمزية متداخلة مع عدّاد +N للبقية. اعرض كل الأعضاء؛ وتُحصر قيمة max بين 1 و20.

server - 0 KB

مجموعة صور رمزية

server - 0 KB

صور رمزية متداخلة مع عدّاد +N للبقية. اعرض كل الأعضاء؛ وتُحصر قيمة max بين 1 و20.

تثبيت

جرّبه

max
size

الشيفرة

avatar-group.tsx
import { AvatarFallback, AvatarRoot } from 'topclassui/avatar'
import { AvatarGroup } from 'topclassui/avatar-group'

<AvatarGroup aria-label="Project team">
  {TEAM.map(([initials, name]) => (
    <AvatarRoot key={initials} size={props.size} role="img" aria-label={name}>
      <AvatarFallback>{initials}</AvatarFallback>
    </AvatarRoot>
  ))}
</AvatarGroup>

تعدّ max العناصر الأبناء، فاعرض كل عضو ودع المجموعة تخفي الفائض.

كل الحالات، بدون تمرير الفأرة

حالة واحدة
Two
Four
Overflow

أو استورده من الحزمة

topclassui/avatar-group
import { AvatarGroup } from 'topclassui/avatar-group'

ثبّت مرة واحدة:npm i topclassui@beta zod

أمثلة

  • تظهر أول max من العناصر الأبناء، وتقول دائرة أخيرة +N. لا يصل size إلا إلى تلك الدائرة، فأعطِ كل صورة رمزية الحجم size نفسه.
  • صورة رمزية لكل عنصر ابن: المصفوفة أو map() تُعدّ واحدًا واحدًا، أما الجزء <>...</> فيُعدّ ابنًا واحدًا، فمرّر المصفوفة نفسها.
  • العدد الأطول من أن تتسع له الدائرة يوسّع العدّاد إلى شكل كبسولة، فيحتفظ +12,345 بعلامة الزائد وبكل رقم.
  • الحلقة بين الصور الرمزية بلون الصفحة. على Card أو داخل Table أو على أي سطح آخر، أعطها لون ذلك السطح: className="*:ring-surface-raised".
  • المجموعة الأعرض من حاويتها تلتف إلى صف آخر؛ أما في خلية جدول فتبقى صفًا واحدًا، فاجعل max صغيرة هناك.
  • لفّ الصورة الرمزية برابط من نوع inline-flex وأعطِ الرابط حلقة تركيز: المجموعة تجعلها دائرية وترفع الوجه الذي عليه التركيز.
max
two
four
Omar AbedSara Khalil
overflow
counts
sizes
linked
on-card

Design team

in-table
Projects
ProjectTeamWith a countIn a boxDue
Billing redesign3 people
12 Mar 2026
Mobile onboarding5 people
4 Apr 2026
Search migration20 people
30 Jun 2026
many
custom-size
بالعربية، من اليمين إلى اليسار

الخصائص

خصائص AvatarGroup
الخاصيةالنوعالافتراضيالحدودالوصف
childrenReactNode--Every member, one avatar per child; the group shows the first max and counts the rest.
labelsLabels--The built-in strings; the counter is named by labels.avatar.more. Defaults to English.
localestring--The BCP 47 tag the count is formatted in. Defaults to en.
maxinteger, min 1, max 204min 1, max 20How many children show before the +N counter takes the rest; clamped to 1-20.
sizexs | sm | md | lg | xl | custom"md"-The size of the +N counter and the depth of the overlap; pass the size the avatars carry. custom leaves the counter unsized.

لوحة المفاتيح وإمكانية الوصول

لوحة مفاتيح AvatarGroup
المفاتيحما يفعله
Tabينتقل إلى الوجه التالي فقط إن كان رابطًا أو زرًا لففته به؛ المجموعة نفسها ليست محطة Tab.
  • أعطِ المجموعة aria-label أو aria-labelledby يقول من هم أصحاب الوجوه؛ فهي تُعرض مع role="group".
  • سمِّ كل صورة رمزية، عبر alt صورتها أو aria-label على AvatarRoot: الأحرف الأولى وحدها صامتة.
  • يُقرأ العدّاد بنص labels.avatar.more ("1 more")؛ وللعربية مرّر labels وlocale من getLabels('ar').

من اليمين إلى اليسار

يبدأ الصف من بداية السطر ويتداخل كل وجه مع الذي قبله، فيبدأ في العربية من اليمين؛ ويبقى +N بعلامة الزائد قبل الأرقام.

الخادم والمتصفح

يُعرض على الخادم ولا يرسل أي JavaScript.

الملفات: index.tsx.

على الشارة: server - 0 KB.