Aller au contenu principal

Button

Les boutons prennent en charge plusieurs variantes visuelles, trois tailles, les icones, l'etat de chargement et le rendu polymorphe.

Éditeur en direct
function ButtonExample() {
  const [loading, setLoading] = React.useState(false);

  return (
    <div className="flex flex-wrap items-center gap-3">
      <Button
        loading={loading}
        loadingText="Enregistrement..."
        onClick={() => {
          setLoading(true);
          window.setTimeout(() => setLoading(false), 900);
        }}
      >
        Enregistrer
      </Button>
      <Button variant="secondary">Aperçu</Button>
      <Button variant="outline">Annuler</Button>
      <Button variant="danger">Supprimer</Button>
    </div>
  );
}
Résultat
Loading...
import { Button, Cart } from "niom-parts";

<Button leftIcon={<Cart size={18} />} size="lg">
Ajouter au panier
</Button>

Cas d'utilisation courants​

Les boutons peuvent etre rendus comme des liens, proposer des actions avec une icone seule, remplir un conteneur ou signaler une action indisponible.

Éditeur en direct
function ButtonUseCases() {
  return (
    <div className="grid w-full max-w-sm gap-3">
      <Button leftIcon={<Cart size={18} />} className="w-full">
        Ajouter au panier
      </Button>
      <div className="flex flex-wrap gap-2">
        <Button as="a" href="#props" variant="link">Voir l’API</Button>
        <Button aria-label="Rechercher" variant="ghost"><Search size={18} /></Button>
        <Button disabled variant="secondary">Indisponible</Button>
      </div>
    </div>
  );
}
Résultat
Loading...

Proprietes​

ProprieteTypeValeur par defaut
asElementType"button"
variant"primary" | "secondary" | "tertiary" | "outline" | "ghost" | "danger" | "link" | "accent""primary"
size"sm" | "md" | "lg""md"
leftIconReactNode-
rightIconReactNode-
disabledbooleanfalse
loadingbooleanfalse
loadingTextstring"Chargement..."
classNamestring""