Skip to content

Button

Le composant Button affiche un bouton stylisé et réutilisable. Il supporte différentes tailles, variants de couleur, et peut être rendu comme un <button>, un <a> ou un RouterLink.

Les classes sont générées dynamiquement via generateColorClasses et getPaddingSize.


Props

PropTypeDefaultDescription
asString'button'Définit le type de composant (button, a, router-link).
hrefStringnullURL du bouton si as='a'.
toString / ObjectnullDestination pour RouterLink si as='router-link'.
variantString'neutral'Détermine le style du bouton (neutral, primary, secondary, tertiary, error, etc.).
sizeString'md'Détermine la taille du bouton (xs, sm, md, lg, xl).
disabledBooleanfalseDésactive le bouton et applique les styles correspondants.

Tailles disponibles

TailleDescription
xsTrès petit
smPetit
mdMoyen (par défaut)
lgLarge
xlTrès large

Les tailles contrôlent les padding, la taille du texte, et éventuellement la dimension globale via getPaddingSize(size).


Variants disponibles

VariantDescription des styles appliqués
neutralFond neutre, texte blanc, bordure border-strong
primaryFond primaire (bg-primary), texte blanc, bordure border-primary
secondaryFond secondaire, texte blanc, bordure border-secondary
tertiaryFond tertiaire, texte blanc, bordure border-tertiary
errorFond rouge, texte blanc, bordure border-error
infoFond bleu clair, texte blanc, bordure border-info
successFond vert, texte blanc, bordure border-success
warningFond jaune/orange, texte blanc, bordure border-warning
transparentFond transparent avec hover, texte par défaut, bordure par défaut

Slots

  • Contenu par défaut : texte ou éléments à l’intérieur du bouton (<slot />).

Utilisation

Button simple

vue
<Button>Valider</Button>

Button avec variant et taille

vue
<Button variant="primary" size="lg">
  Envoyer
</Button>

Button désactivé

vue
<Button disabled>
  Non cliquable
</Button>

Button en lien <a>

vue
<Button as="a" href="https://example.com" variant="secondary">
  Aller sur le site
</Button>
vue
<Button as="router-link" :to="{ name: 'home' }" variant="tertiary">
  Accueil
</Button>

Fonctionnement interne

  • variantClasses est un computed basé sur generateColorClasses(props.variant) et définit couleur de fond, texte, bordure et focus.
  • sizeClasses est un computed basé sur getPaddingSize(props.size) et définit le padding et taille du texte.
  • Le composant rend dynamiquement <button>, <a> ou RouterLink selon la prop as.
  • Les boutons désactivés appliquent opacity-50, cursor-not-allowed et désactivent les interactions (pointer-events-none).