Button
Composant bouton polyvalent avec plusieurs variantes, tailles, etat de chargement et pattern asChild.
Apercu
Le composant Button de packages/ui fournit un style de bouton coherent dans toute l'application. Il prend en charge plusieurs variantes visuelles, tailles, un etat de chargement et le pattern asChild pour le rendu sous forme d'elements differents.
Import
import { Button } from "@saas/ui";Variantes
La prop variant controle le style visuel :
<Button variant="default">Primary</Button>
<Button variant="outline">Outline</Button>
<Button variant="destructive">Delete</Button>
<Button variant="ghost">Ghost</Button>
<Button variant="link">Link</Button>
<Button variant="secondary">Secondary</Button>| Variante | Apparence |
|---|---|
default | Fond indigo uni avec texte blanc |
outline | Transparent avec une bordure |
destructive | Fond rouge pour les actions dangereuses |
ghost | Pas de fond, effet de survol subtil |
link | Style de lien texte souligne |
secondary | Fond gris clair |
Tailles
La prop size controle les dimensions et le padding :
<Button size="sm">Small</Button>
<Button size="default">Default</Button>
<Button size="lg">Large</Button>
<Button size="icon">
<TrashIcon className="h-4 w-4" />
</Button>| Taille | Cas d'utilisation |
|---|---|
sm | Actions compactes, lignes de tableau |
default | Boutons standards |
lg | CTA hero, actions prominentes |
icon | Bouton carre pour les actions avec icone uniquement |
Etat de chargement
Passez disabled avec un spinner pour indiquer le chargement :
<Button disabled>
<Loader2 className="mr-2 h-4 w-4 animate-spin" />
Saving...
</Button>Le bouton est automatiquement non interactif lorsque disabled est defini.
Pattern asChild
Utilisez la prop asChild pour appliquer les styles du bouton sur un element different (par ex. un Link Next.js) :
import Link from "next/link";
<Button asChild>
<Link href="/dashboard">Go to Dashboard</Link>
</Button>Cela fusionne les classes du bouton sur l'element enfant sans ajouter un wrapper <button> supplementaire.
Props
| Prop | Type | Defaut | Description |
|---|---|---|---|
variant | "default" | "outline" | "destructive" | "ghost" | "link" | "secondary" | "default" | Style visuel |
size | "sm" | "default" | "lg" | "icon" | "default" | Dimensions du bouton |
asChild | boolean | false | Rendu en tant qu'element enfant |
disabled | boolean | false | Desactive l'interaction |
className | string | — | Classes CSS supplementaires |
Tous les attributs HTML standard de <button> sont egalement acceptes.
Conseils
- Utilisez la variante
destructiveuniquement pour les actions irreversibles (supprimer, retirer). - Associez la variante
ghostaux boutons avec icone uniquement dans les barres d'outils. - Fournissez toujours un texte visible ou un
aria-labelpour les boutons avec icone uniquement.
Fini ? Marquez cette page comme terminée.