AvatarGroup
複数のアバターをグループに積み重ねる。
使用法
複数のAvatarをAvatarGroup内でラップしてスタックします。
<template>
<UAvatarGroup>
<UAvatar src="https://github.com/benjamincanac.png" alt="Benjamin Canac" />
<UAvatar src="https://github.com/HugoRCD.png" alt="Hugo Richard" />
<UAvatar src="https://github.com/atinux.png" alt="Sébastien Chopin" />
</UAvatarGroup>
</template>サイズ
sizeプロパティを使用して、すべてのアバターのサイズを変更します。
<template>
<UAvatarGroup size="xl">
<UAvatar src="https://github.com/benjamincanac.png" alt="Benjamin Canac" loading="lazy" />
<UAvatar src="https://github.com/HugoRCD.png" alt="Hugo Richard" loading="lazy" />
<UAvatar src="https://github.com/atinux.png" alt="Sébastien Chopin" loading="lazy" />
</UAvatarGroup>
</template>Max
maxプロパティを使用して、表示するアバターの数を制限します。残りは+Xアバターとして表示されます。
+1

<template>
<UAvatarGroup :max="2">
<UAvatar src="https://github.com/benjamincanac.png" alt="Benjamin Canac" loading="lazy" />
<UAvatar src="https://github.com/HugoRCD.png" alt="Hugo Richard" loading="lazy" />
<UAvatar src="https://github.com/atinux.png" alt="Sébastien Chopin" loading="lazy" />
</UAvatarGroup>
</template>Color badge{label="4.8+" class="align-text-top"}
colorプロパティを使用して、すべてのアバターの色を変更します。
SCHRBC
<template>
<UAvatarGroup color="primary">
<UAvatar alt="Benjamin Canac" />
<UAvatar alt="Hugo Richard" />
<UAvatar alt="Sébastien Chopin" />
</UAvatarGroup>
</template>サンプル
ツールチップ付き
各アバターをTooltipでラップし、ホバー時にツールチップを表示します。
<template>
<UAvatarGroup>
<UTooltip text="benjamincanac">
<UAvatar
src="https://github.com/benjamincanac.png"
alt="Benjamin Canac"
loading="lazy"
/>
</UTooltip>
<UTooltip text="HugoRCD">
<UAvatar
src="https://github.com/HugoRCD.png"
alt="Hugo Richard"
loading="lazy"
/>
</UTooltip>
<UTooltip text="atinux">
<UAvatar
src="https://github.com/atinux.png"
alt="Sébastien Chopin"
loading="lazy"
/>
</UTooltip>
</UAvatarGroup>
</template>
Withチップ
各アバターを Chipでラップし、アバターの周りにチップを表示します。
<template>
<UAvatarGroup>
<UAvatar
src="https://github.com/benjamincanac.png"
alt="Benjamin Canac"
loading="lazy"
:chip="{ inset: true, color: 'success' }"
/>
<UAvatar
src="https://github.com/HugoRCD.png"
alt="Hugo Richard"
loading="lazy"
:chip="{ inset: true, color: 'warning' }"
/>
<UAvatar
src="https://github.com/atinux.png"
alt="Sébastien Chopin"
loading="lazy"
:chip="{ inset: true, color: 'error' }"
/>
</UAvatarGroup>
</template>
リンク付き
各アバターをLinkでラップしてクリック可能にします。
<template>
<UAvatarGroup>
<ULink
to="https://github.com/benjamincanac"
target="_blank"
class="hover:ring-primary transition"
raw
>
<UAvatar
src="https://github.com/benjamincanac.png"
alt="Benjamin Canac"
loading="lazy"
/>
</ULink>
<ULink
to="https://github.com/HugoRCD"
target="_blank"
class="hover:ring-primary transition"
raw
>
<UAvatar
src="https://github.com/HugoRCD.png"
alt="Hugo Richard"
loading="lazy"
/>
</ULink>
<ULink
to="https://github.com/atinux"
target="_blank"
class="hover:ring-primary transition"
raw
>
<UAvatar
src="https://github.com/atinux.png"
alt="Sébastien Chopin"
loading="lazy"
/>
</ULink>
</UAvatarGroup>
</template>
マスク付き
アバターをCSSマスクでラップして、カスタム形状で表示します。
<template>
<UAvatarGroup :ui="{ base: 'rounded-none squircle' }">
<UAvatar
src="https://github.com/benjamincanac.png"
alt="Benjamin Canac"
loading="lazy"
class="rounded-none squircle"
/>
<UAvatar
src="https://github.com/HugoRCD.png"
alt="Hugo Richard"
loading="lazy"
class="rounded-none squircle"
/>
<UAvatar
src="https://github.com/atinux.png"
alt="Sébastien Chopin"
loading="lazy"
class="rounded-none squircle"
/>
</UAvatarGroup>
</template>
<style>
.squircle {
mask-image: url("data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M100 0C20 0 0 20 0 100s20 100 100 100 100-20 100-100S180 0 100 0Z'/%3e%3c/svg%3e");
mask-size: contain;
mask-position: center;
mask-repeat: no-repeat;
}
</style>
chipプロパティがマスクを使用すると正しく動作しません。マスクの形状によってはチップがカットされる場合があります。API
Props
| Prop | Default | Type |
|---|---|---|
as | 'div' | anyThe element or component this component should render as. |
size | 'md' | "md" | "xs" | "sm" | "lg" | "xl" | "3xs" | "2xs" | "2xl" | "3xl" |
color | 'neutral' | "error" | "primary" | "secondary" | "success" | "info" | "warning" | "neutral" |
max | string | numberThe maximum number of avatars to display. | |
ui | { root?: SlotClass; base?: SlotClass; } |
スロット
| Slot | Type |
|---|---|
default | {} |
Theme
app.config.ts
export default defineAppConfig({
ui: {
avatarGroup: {
slots: {
root: 'inline-flex flex-row-reverse justify-end',
base: 'relative rounded-full ring-bg first:me-0'
},
variants: {
size: {
'3xs': {
base: 'ring -me-0.5'
},
'2xs': {
base: 'ring -me-0.5'
},
xs: {
base: 'ring -me-0.5'
},
sm: {
base: 'ring-2 -me-1.5'
},
md: {
base: 'ring-2 -me-1.5'
},
lg: {
base: 'ring-2 -me-1.5'
},
xl: {
base: 'ring-3 -me-2'
},
'2xl': {
base: 'ring-3 -me-2'
},
'3xl': {
base: 'ring-3 -me-2'
}
},
color: {
primary: '',
secondary: '',
success: '',
info: '',
warning: '',
error: '',
neutral: ''
}
},
defaultVariants: {
size: 'md',
color: 'neutral'
}
}
}
})vite.config.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import ui from '@nuxt/ui/vite'
export default defineConfig({
plugins: [
vue(),
ui({
ui: {
avatarGroup: {
slots: {
root: 'inline-flex flex-row-reverse justify-end',
base: 'relative rounded-full ring-bg first:me-0'
},
variants: {
size: {
'3xs': {
base: 'ring -me-0.5'
},
'2xs': {
base: 'ring -me-0.5'
},
xs: {
base: 'ring -me-0.5'
},
sm: {
base: 'ring-2 -me-1.5'
},
md: {
base: 'ring-2 -me-1.5'
},
lg: {
base: 'ring-2 -me-1.5'
},
xl: {
base: 'ring-3 -me-2'
},
'2xl': {
base: 'ring-3 -me-2'
},
'3xl': {
base: 'ring-3 -me-2'
}
},
color: {
primary: '',
secondary: '',
success: '',
info: '',
warning: '',
error: '',
neutral: ''
}
},
defaultVariants: {
size: 'md',
color: 'neutral'
}
}
}
})
]
})Changelog
No recent changes