Button

Composant de bouton d'action utilisé dans l'interface utilisateur PyColors, construit sur shadcn/ui. Comprend les variantes, les tailles, l'accessibilité et les règles d'utilisation du produit.

UIMise à jour 28 avril 2026
UIBouton

Actions auxquelles les utilisateurs peuvent faire confianceLien vers la section

Les Bouton component est la primitive d'action primaire dans PyColors UI.

Utilisez-le pour:

  • Soumettre des formulaires
  • Déclenchement des dialogues
  • ouverture feuilles
  • Débuter le paiement
  • enregistrer les changements
  • Confirmer les actions destructrices
  • naviguer quand un élément doit se comporter visuellement comme un bouton

Cette mise en œuvre étend la primitive de bouton shadcn/ui et est aligné avec le système de conception PyColors: tokens de couleur sémantiques, rayon, ombres et anneaux de focus.

Idée de base

Les boutons communiquent l'intention. Choisissez la variante en fonction de la priorité d'action et non de la décoration.

ImportationLien vers la section

button-import.tsx
import { Button } from "@pycolors/ui";

Utilisation de baseLien vers la section

Le bouton par défaut utilise des tokens sémantiques primaires et s'adapte automatiquement au mode clair et sombre.

Modèle d'action produitLien vers la section

Les boutons sont l'une des primitives d'interaction à la plus haute fréquence dans un produit SaaS.

Ils influencent :

  • clarté de conversion
  • Confiance dans le workflow
  • action destructrice sécurité
  • friction d'embarquement
  • Qualité perçue des produits

Modèle mental

Un bouton n’est pas une décoration. C’est un engagement d’interaction.

Quand utiliser le boutonLien vers la section

Utilisez le bouton lorsque l'utilisateur effectue une action.

Actions principales

Utilisez pour soumettre, enregistrer, continuer, passer à le paiement, créer ou mettre à niveau des actions.

Actions secondaires

Utilisez pour annuler, afficher les détails, en savoir plus ou des chemins alternatifs.

Actions risquées

Utilisez un style destructeur uniquement pour des actions dangereuses ou irréversibles.

Modèle de décisionLien vers la section

Actions principales

Primary buttons represent the highest-priority action inside a product surface.

UpgradeCheckoutContinue

VariantesLien vers la section

Les boutons prennent en charge les variantes de priorité d'action et de signification sémantique.

Variantes disponiblesLien vers la section

VarianteObjet
defaultAction principale, priorité absolue
secondaryAction alternative neutre
outlineAction à moyen terme
ghostAction de faible accentuation dans l'interface utilisateur dense
destructiveAction dangereuse ou irréversible
linkAction en ligne de style texte

Variante de règle

Une page doit généralement avoir une action primaire claire. Utilisez secondaire, contour ou fantôme pour soutenir les actions.

TaillesLien vers la section

Le bouton prend en charge les tailles standard et les tailles d'icônes uniquement.

Tailles disponiblesLien vers la section

TailleObjet
smBoutons compacts pour des interfaces produit denses
defaultTaille standard du bouton
lgPoids visuel plus élevé
iconBouton carré icône seule
icon-smBouton compact icône seule
icon-lgBouton icône seule plus grande

Règle de taille

Gardez les tailles de boutons cohérentes dans la même section. Utilisation lg pour les grands CTA et sm pour des actions de produits denses.

État handicapéLien vers la section

Utilisez l'état désactivé lorsqu'une action n'est pas disponible.

Les boutons désactivés utilisent une opacité réduite et suppriment l'interaction avec le pointeur.

Règle UX

Lorsque vous désactivez un bouton, assurez-vous que l'utilisateur peut comprendre ce qui est nécessaire pour l'activer.

Avec icôneLien vers la section

Utilisez des icônes lorsqu'elles renforcent l'action.

Le bouton applique une valeur par défaut size-4 aux icônes SVG imbriquées qui n'ont pas déjà un size-* classe.

button-leading-icon.tsx
import { Button } from "@pycolors/ui";
import { Plus } from "lucide-react";

export function ButtonLeadingIcon() {
  return (
    <Button>
      <Plus className="mr-2 size-4" aria-hidden="true" />
      Add item
    </Button>
  );
}

Règle d'icône

Les icônes devraient soutenir l'étiquette. Pour les boutons icon-only, toujours fournir un aria-label.

État de validationLien vers la section

Le bouton prend en charge l'état visuel invalide grâce à aria-invalid.

Cela peut être utile pour soumettre des actions lorsque le formulaire associé n'est pas valide.

Avec icôneLien vers la section

Utilisation asChild pour rendre le bouton comme un autre élément tout en préservant le style du bouton.

Ceci est couramment utilisé pour les liens et les composants de routeur.

Règle sémantique

Si l'action navigue, rendez un lien d'ancre ou de routeur. S'il soumet ou mute l'état, rendez un bouton.

UtilisationsLien vers la section

Choisissez la priorité d'action

Utilisation default pour l'action principale, puis choisissez secondaire, contour ou fantôme pour les actions de soutien.

Utiliser l'intention sémantique

Utilisation destructive uniquement lorsque l'action est dangereuse ou irréversible.

Gardez les étiquettes orientées vers l'action

Préférez des verbes clairs tels que Enregistrer, Continuer, Créer un projet, Mettre à niveau, Supprimer.

Coupler le chargement avec l'état

Pendant le travail asynchrone, désactivez le bouton et mettez à jour l'étiquette pour afficher la progression.

Gardez les boutons icon-only accessibles

Toujours fournir aria-label et marquer les icônes décoratives comme aria-hidden.

Guide de décision produitLien vers la section

Mutation

Utiliser le bouton

Les boutons doivent déclencher des actions, des mutations, des soumissions, des confirmations ou la progression du flux de travail.
  • enregistrer les données
  • Soumettre des formulaires
  • overlays ouverts
  • Déclencher des actions async
Navigation

Utiliser Link

Les liens doivent naviguer entre les pages, les routes ou les ressources externes.
  • navigation page
  • docs externes
  • Changements d'route
  • liens de ressources
SituationUtilisation
Soumettre un formulaireBouton
Déclencher une mutationBouton
Ouvrir une boîte de dialogue ou un panneau latéralBouton
Naviguer vers une autre URLLien stylé avec Button asChild
Afficher les métadonnées ou l'étatBadge
Navigation texte en ligneLien
Actions de rangée compactesBouton de déclenchement DropdownMenu

Règle de décision

Le bouton est pour l'intention. Link est pour la navigation. Badge pour les métadonnées.

APILien vers la section

PropTypePar défautDésignation
variantButtonVariant"default"Style visuel
sizeButtonSize"default"Taille du bouton
asChildbooleanfalseRendu avec Radix Slot
disabledbooleanfalseDésactiver l'interaction
classNamestring—Autres classes Tailwind

Button étend les accessoires de bouton HTML standard.

button-props.ts
React.ComponentProps<"button">;

TypeScript typesLien vers la section

button-types.ts
export type ButtonVariant =
  "default" | "secondary" | "outline" | "ghost" | "destructive" | "link";

export type ButtonSize =
  "default" | "sm" | "lg" | "icon" | "icon-sm" | "icon-lg";

AccessibilitéLien vers la section

  • Utilisez des étiquettes claires et descriptives.
  • Préserver les styles de focus clavier.
  • Utilisez des boutons d'icône uniquement avec un aria-label.
  • Marquer les icônes décoratives avec aria-hidden="true".
  • Utilisation disabled pour des actions indisponibles.
  • Ne comptez pas uniquement sur la couleur pour communiquer un état destructeur ou invalide.
  • Utilisez des liens pour la navigation et des boutons pour les actions.

Règle d'accessibilité

Chaque bouton doit avoir un nom accessible. Le texte visible est le meilleur; aria-label est nécessaire pour les boutons icon-only.

Préférez/évitezLien vers la section

Préférez

  • une action primaire claire par section
  • Étiquettes courtes verbe-first
  • Tailles cohérentes dans la même vue
  • asChild pour les liens qui ressemblent à des boutons
  • Étiquettes accessibles pour boutons d'icônes uniquement

Éviter

  • Plusieurs boutons principaux concurrents
  • Style destructeur pour des actions non destructives
  • boutons icon-only sans étiquettes
  • boutons utilisés comme navigation sans sémantique de lien
  • étiquettes vagues comme « OK » ou « Soumettre » lorsque le contexte n’est pas clair

Directives de copie du produitLien vers la section

Les étiquettes de bouton doivent communiquer clairement l'intention et réduire l'hésitation.

Bonnes étiquettes

Strong labels are explicit, action-oriented, and outcome-focused.

Save changesCreate projectUpgrade to ProInvite memberDelete project

Questions courantesLien vers la section