Puce
Une petite information : un statut, une étiquette, un filtre qui reste choisi. Elle partage mot pour mot sa table de variantes et de tons avec VButton, et ajoute les deux états qu'un bouton n'a pas.
Utilisation
Exemples
Variantes et tonalités
variant propose trois façons de peindre la puce, soft, solid et outline, et tone cinq sens.
Silhouettes
shape choisit la silhouette : chip prend le rayon d'angle d'un contrôle interactif, pill arrondit complètement les extrémités. Les coins de chip lisent --vectis-radius-chip, qui pointe vers --vectis-radius-interactive depuis :root : redéfinissez-le pour arrondir les puces indépendamment des autres contrôles. Posé sur un sélecteur plus étroit que :root, un override de --vectis-radius-interactive n'atteint pas les puces : donnez alors les deux tokens à ce sélecteur.
Tailles
size définit la hauteur à 24 ou 32 pixels, et compact lui retire 4px.
Couleurs personnalisées
color remplace le ton, toutes les nuances nécessaires en étant dérivées. Elle accepte n'importe quelle couleur CSS.
Avec des icônes
iconStart et iconEnd posent une icône de part et d'autre du libellé, et les slots #start et #end les remplacent. iconFilled dessine les deux icônes pleines. Une puce sans libellé devient carrée et doit recevoir un nom.
Cliquable et liens
clickable rend la puce sous forme de bouton et href sous forme de lien. Sans l'un ni l'autre, c'est du texte simple.
Sélection
selectable transforme la puce en bascule liée à v-model:selected. check ajoute une coche avant le libellé, à la place de l'icône de début, et checkIcon change son glyphe.
Suppression
dismissible ajoute un second bouton qui émet dismiss, le retrait de la liste vous revenant. dismissIcon et dismissLabel changent son glyphe et ses mots. Dans une rangée de puces, donnez à chaque croix un dismissLabel qui nomme ce qu'elle retire, sans quoi toutes sont annoncées avec le même mot.
États
disabled grise la puce par les tokens de couleur. Un lien désactivé voit son adresse retirée, ce qui le laisse ni focalisable ni suivable.
API
Props
| Prop | Type | Défaut |
|---|---|---|
variant | ChipVariant'soft' | 'solid' | 'outline' | 'soft' |
| L'intensité avec laquelle la puce est peinte : un fond teinté, la couleur pleine, ou une bordure seule. | ||
tone | ChipTone'neutral' | 'accent' | 'danger' | 'success' | 'warning' | 'neutral' |
| Ce que la puce signifie, exprimé en couleur. Une puce peut rapporter un état là où un bouton ne le peut pas, et c'est pourquoi elle en propose cinq plutôt que trois. | ||
color | string | aucune |
Une couleur à vous, en hexadécimal, en nom CSS ou en oklch(), qui remplace le ton. Toutes les nuances nécessaires sont dérivées de cette seule couleur, si bien qu'elle suit les deux thèmes sans rien à reconstruire. Seul le contraste du texte sur une puce en couleur pleine reste à votre charge. | ||
shape | ChipShape'chip' | 'pill' | 'chip' |
| La silhouette : des coins doucement arrondis, ou une pilule complète. | ||
size | ChipSize'xs' | 'sm' | 'xs' |
| La hauteur de la puce. | ||
compact | boolean | false |
| Retire 4px à la hauteur, en laissant le rembourrage, le texte et les icônes tels quels. | ||
clickable | boolean | false |
| Fait de la puce un bouton qui réagit au clic, sans retenir d'état. | ||
href | string | aucune |
| Où la puce mène, ce qui en fait un lien. | ||
selectable | boolean | false |
Fait de la puce quelque chose qui reste choisi. Cela l'emporte sur href et clickable. | ||
check | boolean | false |
| Affiche une coche avant le libellé tant que la puce est sélectionnée. Elle remplace l'icône de début qui aurait été donnée, si bien que les deux ne sont jamais montrées ensemble. | ||
checkIcon | IconSource | check |
L'icône de cette coche, une coche intégrée par défaut. iconFilled ne l'atteint pas. | ||
iconStart | IconSource | aucune |
Une icône avant le libellé. Le slot #start la remplace. | ||
iconEnd | IconSource | aucune |
Une icône après le libellé. Le slot #end la remplace. | ||
iconFilled | boolean | false |
Rend iconStart et iconEnd dans leur forme pleine, l'axe FILL de la police. Sans effet sur les slots, ni sur la coche ou la croix de retrait. | ||
dismissible | boolean | false |
| Ajoute un bouton qui demande le retrait de la puce. Il ne fait qu'émettre cette demande : retirer la puce est votre décision. | ||
dismissIcon | IconSource | close |
| L'icône de ce bouton de retrait. | ||
dismissLabel | string | aucune |
| Ce que fait le bouton de retrait, en mots. Il retombe sur le dictionnaire du design system. | ||
disabled | boolean | false |
| Rend la puce inutilisable, grisée par les tokens de couleur. | ||
v-model:selected | boolean | false |
Si la puce est sélectionnée, ce qui est aussi ce qui la rend sélectionnable : la lier transforme la puce en bouton bascule et l'emporte sur href et clickable. | ||
Événements
| Événement | Type |
|---|---|
dismiss | [] |
| Le bouton de retrait a été pressé. La puce est toujours à l'écran : la retirer vous revient. | |
Slots
| Slot | Type |
|---|---|
default | {} |
| Le libellé. Il peut être omis entièrement, ce qui donne une puce faite d'icônes seules. | |
start | {} |
Du contenu avant le libellé, qui prend la place de iconStart. | |
end | {} |
Du contenu après le libellé, qui prend la place de iconEnd. | |
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