组件
Identity 头像与身份
在图片可用、失败和等待时保持稳定的身份位置。
Avatar 按顺序尝试图片,失败后使用姓名首字、显式 fallback 或通用人物图标。AvatarStack 展示少量身份并折叠剩余数量;ThemeImage 允许调用方明确提供深色资源。
安装
pnpm dlx shadcn@4.22.1 add http://127.0.0.1:3040/r/v0.3.0/identity.json首次使用请先完成 Registry 与主题接入。
变体与状态
Avatar 默认方形,可选择圆形。图片懒加载且失败后尝试下一候选;pending 显示占位。组件不解析产品 Logo,也不读取全局主题或业务头像缓存。
Props
| API / 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
Avatar.name | string | — | 姓名首字符回退 |
images | readonly { url: string; fit?: "cover" / "contain" }[] | [] | 有序候选图片 |
fallback | ReactNode | 首字或人物图标 | 全部图片失败时呈现 |
size | number | 24 | 像素尺寸 |
variant | square / circle | square | 形状 |
pending | boolean | false | 等待占位 |
label | string | — | 未提供时按装饰图形处理 |
AvatarStack.items | readonly AvatarStackItem[] | 必填 | 每项有稳定 id |
AvatarStack.max / total | number | 4 / items.length | 可见上限与真实总数 |
ThemeImage.dark | boolean | false | 由应用决定使用深色资源 |
ThemeImage 另接收 src、darkSrc、fallback(必填)、size、label 与 className;Avatar 的 count 用于数量回退。
键盘与约束
头像不可聚焦。与姓名并排时通常保持装饰;头像独自承担身份信息时必须提供 label。图片不应引入布局位移,未知来源地址需由应用验证。
避免这样使用
不要把 Subtic 品牌标识当作通用回退;不要在旁边已有姓名时重复朗读;不要将 total 当作已加载图片数而隐藏真实剩余数量。
来源与版本
0.1.0,来自 Subtic apps/web/components/avatar.tsx 及相关身份呈现。移除了品牌、提供商与资源路径解析。
查看由当前源码生成的类型参考
只展示 Kitseed 自身定义的属性,原生 HTML 与 Base UI 透传属性请参阅对应上游说明。
Avatar
| 属性 | 类型 | 默认值 |
|---|---|---|
name? | string | — |
images? | readonly AvatarImage[] | [] |
fallback? | ReactNode | — |
size? | number | 24 |
variant? | "square" | "circle" | "square" |
pending? | boolean | false |
count? | number | — |
label? | string | — |
className? | string | — |
unstyled? | boolean | false |
slotProps? | AvatarSlots | undefined | — |
renderPending? | () => ReactNode | — |
isImageAllowed? | (image: AvatarImage) => boolean | — |
AvatarStack
| 属性 | 类型 | 默认值 |
|---|---|---|
items | readonly AvatarStackItem[] | — |
max? | number | 4 |
total? | number | items.length |
size? | number | 24 |
pending? | boolean | false |
label? | string | — |
className? | string | — |
ThemeImage
| 属性 | 类型 | 默认值 |
|---|---|---|
src? | string | null | — |
darkSrc? | string | null | — |
dark? | boolean | false |
size? | number | 24 |
fallback | ReactNode | — |
label? | string | — |
className? | string | — |