AvatarStack
Vài người dưới dạng Avatar chồng lên nhau trong một hàng, người đầu tiên nằm trên, rồi một vòng tròn +N cho số còn lại. Dùng cho ai đang soạn tin, ai đã xem tin, ai đang trong cuộc gọi; cho một vòng tròn đại diện cả nhóm, dùng GroupAvatar.
Xem trước
import { Avatar } from "@/components/ui/avatar"
import { AvatarStack } from "@/components/ui/avatar-stack"
<AvatarStack label="Linh, An và Minh">
<Avatar alt="" color="blue">LT</Avatar>
<Avatar alt="" color="green">AP</Avatar>
<Avatar alt="" color="purple">M</Avatar>
</AvatarStack>Cách dùng
Khi nào dùng
- Hiện vài người cùng lúc: ai đang soạn tin, ai đã xem tin, ai đang trong cuộc gọi.
- Gợi ý thành viên của một dự án trong chỗ nhỏ, với +N cho phần còn lại.
Khi nào không dùng
- Một vòng tròn cho cả nhóm hay đội. Dùng GroupAvatar.
- Danh sách người để đọc và chọn. Dùng danh sách với Avatar và tên.
- Một người. Dùng Avatar.
Biến thể
size
Cỡ của các avatar: độ chồng và vòng +N theo cỡ này. Mặc định: cỡ của avatar đầu tiên, nếu không thì md.
import { Avatar } from "@/components/ui/avatar"
import { AvatarStack } from "@/components/ui/avatar-stack"
<AvatarStack label="Linh, An và Minh">
<Avatar alt="" color="blue" size="sm">LT</Avatar>
<Avatar alt="" color="green" size="sm">AP</Avatar>
<Avatar alt="" color="purple" size="sm">M</Avatar>
</AvatarStack>
<AvatarStack label="Linh, An và Minh">
<Avatar alt="" color="blue">LT</Avatar>
<Avatar alt="" color="green">AP</Avatar>
<Avatar alt="" color="purple">M</Avatar>
</AvatarStack>
<AvatarStack label="Linh, An và Minh">
<Avatar alt="" color="blue" size="lg">LT</Avatar>
<Avatar alt="" color="green" size="lg">AP</Avatar>
<Avatar alt="" color="purple" size="lg">M</Avatar>
</AvatarStack>Ví dụ
Ba người
import { Avatar } from "@/components/ui/avatar"
import { AvatarStack } from "@/components/ui/avatar-stack"
<AvatarStack label="Linh, An và Minh">
<Avatar alt="" color="blue">LT</Avatar>
<Avatar alt="" color="green">AP</Avatar>
<Avatar alt="" color="purple">M</Avatar>
</AvatarStack>Nhiều hơn max
Những người vượt quá max gộp thành một vòng +N.
import { Avatar } from "@/components/ui/avatar"
import { AvatarStack } from "@/components/ui/avatar-stack"
<AvatarStack max={3} label="Linh, An, Minh và 2 người khác">
<Avatar alt="" color="blue">LT</Avatar>
<Avatar alt="" color="green">AP</Avatar>
<Avatar alt="" color="purple">M</Avatar>
<Avatar alt="" color="orange">B</Avatar>
<Avatar alt="" color="teal">H</Avatar>
</AvatarStack>Đã xem bởi
Các avatar nhỏ dưới tin nhắn cho biết ai đã đọc nó.
import { Avatar } from "@/components/ui/avatar"
import { AvatarStack } from "@/components/ui/avatar-stack"
<div className="flex items-center gap-xs text-xs text-text-secondary">
<AvatarStack size="sm">
<Avatar alt="" size="sm" color="blue">LT</Avatar>
<Avatar alt="" size="sm" color="green">AP</Avatar>
</AvatarStack>
Linh và An đã xem
</div>Nên và không nên
Nên
- Giữ max ở 3 hoặc 4; vòng +N đếm phần còn lại.
- Cho mọi avatar cùng một cỡ, và truyền cỡ đó.
- Nêu tên mọi người bằng chữ cạnh cụm, hoặc bằng label.
Không nên
- Đừng dùng cụm cho một nhóm; dùng GroupAvatar.
- Đừng trộn nhiều cỡ trong một cụm.
- Đừng biến mỗi avatar thành liên kết; phần chồng khiến chúng quá nhỏ để nhấn.
Props
| Tên | Kiểu | Giá trị | Mặc định | Mô tả |
|---|---|---|---|---|
| children bắt buộc | node | - | - | Các Avatar cùng cỡ, với alt="". |
| max | number | - | 3 | Số avatar hiện trước khi phần còn lại gộp thành +N. |
| size | enum | sm | md | lg | - | Cỡ của các avatar: độ chồng và vòng +N theo cỡ này. Mặc định: cỡ của avatar đầu tiên, nếu không thì md. |
| label | string | - | - | Tên của cụm cho trình đọc màn hình, như Linh, An và 2 người khác. Không có nó, cụm bị ẩn với trình đọc màn hình. |
Cấu tạo
| Phần | Mô tả |
|---|---|
| root | Hàng, được xếp từ cuối lên đầu để avatar đầu tiên được vẽ trên cùng mà không cần z-index. |
| item | Một Avatar, chồng lên avatar kế tiếp một phần tư chiều rộng, với vòng 2px bằng màu phía sau. |
| more | Vòng tròn +N màu xám cho những người vượt quá max, cùng cỡ với các avatar. |
Khả năng truy cập
Role: img
- Với label (EN `Linh, An and 2 others`), cụm là một hình ảnh được đặt tên bằng nó; không có label thì cụm bị ẩn với trình đọc màn hình, dùng khi tên đã được viết cạnh nó.
- Truyền alt="" cho mọi Avatar bên trong: cụm, hoặc chữ bên cạnh, đã nêu tên họ.
- Vòng cắt mỗi avatar là màu phía sau cụm (--ring-offset-color, mặc định là nền trang), nên nó không thêm màu riêng.
- Không tương tác. Để mở danh sách người, đặt cụm trong một nút và đặt tên cho nút.
Cài đặt
npx werewolf-ui add avatar-stackChạy npx werewolf-ui init một lần trong app trước khi thêm component. Init cài token, thêm CSS import và luật cho agent. Add cài component này cùng các dependency và giữ nguyên theme của bạn. Xem Cài đặt để biết yêu cầu và cách cài qua registry.