Avatar
Une personne ou une chose, en disque. Une photo quand il y en a une, une icône ou les initiales sinon, sur une couleur dérivée du nom pour que la même personne garde la même partout.
Utilisation
Exemples
Avec une photo
src affiche une photo. name fournit son texte alternatif et les initiales affichées quand le fichier ne peut pas être chargé.
Avec une icône
icon affiche une icône à la place des initiales. alt nomme l'avatar quand aucun name n'est donné.
Initiales et couleur automatique
Sans photo ni icône, le disque affiche les initiales de name sur une couleur dérivée de celui-ci.
Tailles
size définit le diamètre : 24, 32, 40, 48 ou 56 pixels. Le contenu suit.
Compact
compact réduit le diamètre de 4px.
Couleur personnalisée
color remplace la couleur dérivée du nom. L'hexadécimal, un nom de couleur CSS et oklch() sont acceptés.
Boutons et liens
clickable rend un <button> et href un <a>, l'adresse l'emportant quand les deux sont donnés. disabled rend l'avatar inerte.
Avec une infobulle
Une VTooltip a besoin d'un déclencheur focalisable : rendez l'avatar clickable ou lien, puis liez les triggerProps de l'infobulle dessus.
API
Props
| Prop | Type | Défaut |
|---|---|---|
src | string | aucune |
| La photo à afficher. Elle est préférée à tout le reste, et une image qui échoue à se charger passe la main à l'icône ou aux initiales plutôt que de laisser un trou. | ||
icon | IconSource | aucune |
| L'icône à afficher quand il n'y a pas de photo. Elle passe avant les initiales : un avatar à qui on donne une icône et un nom montre l'icône. | ||
name | string | aucune |
| Le nom complet. Il fait trois choses à la fois : il nomme l'avatar pour les technologies d'assistance, ses initiales sont ce qui s'affiche sans photo ni icône, et il est la graine dont la couleur automatique est dérivée. | ||
alt | string | aucune |
Le nom accessible, quand il ne doit pas être simplement le nom : un avatar représentant une équipe plutôt qu'une personne, par exemple. Il l'emporte sur name, et votre propre aria-label l'emporte sur lui. Sur une photo, c'est le texte alt de l'image. | ||
color | string | aucune |
Une couleur à vous, en hexadécimal, en nom CSS ou en oklch(). Elle remplace la teinte autrement dérivée de name, et le texte posé dessus est toujours blanc : une couleur claire reste donc à votre charge. | ||
size | AvatarSize'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'md' |
Le diamètre du disque, tiré de l'échelle de tailles partagée par tous les contrôles. Omise dans un VAvatarGroup, elle prend celle du groupe ; seul, l'avatar est en md. | ||
compact | boolean | false |
| Retire 4px au diamètre, comme sur tous les autres contrôles. Contrairement à la taille, elle se cumule : dans un VAvatarGroup compact, l'avatar est compact quoi que dise cette prop. | ||
href | string | aucune |
Transforme l'avatar en <a> pointant vers cette adresse. Un lien désactivé devient inerte : l'adresse est retirée, si bien qu'il ne peut être ni focalisé ni suivi. | ||
clickable | boolean | false |
Transforme l'avatar en <button>. Cette prop est ignorée dès que href en fait un lien. | ||
disabled | boolean | false |
| Rend un avatar interactif inutilisable : il cesse de répondre, quitte l'ordre de tabulation et se grise. Elle ne dit rien sur un avatar simple, qui n'a jamais été interactif. | ||
Slots
| Slot | Type |
|---|---|
default | {} |
| Du contenu qui remplace les initiales. | |
Types
Les types que les tables ci-dessus nomment, écrits comme la librairie les déclare. Ceux qui portent export s'importent depuis vectis-ui pour typer votre propre code ; les autres décrivent la forme de ce qu'un slot fournit.
export interface BuiltinIcon {
name: string
paths: readonly [string] | readonly [string, string]
}export type IconRender =
| { path: string; viewBox?: string }
| { component: Component; props?: Record<string, unknown> }
| { src: string }
| { text: string; class?: string }
| { class: string }export type IconSource = string | BuiltinIcon | IconRender
Variables CSS
| Token | Valeur |
|---|---|
--vectis-control-size-avatar-ring | 2px |