@brickslab./ui-web
Bouton d'action polyvalent avec 5 variantes visuelles (dont custom), 3 tailles, support des icônes gauche/droite, état de chargement avec spinner animé, et état désactivé. Hover et focus-visible gérés via CSS natif sans 'use client'.
Variantes
primary · secondary · ghost · danger · custom
Tailles
sm (28px) · md (38px) · lg (44px)
Avec icônes
leftIcon · rightIcon · les deux
État de chargement
isLoading — spinner animé, bouton désactivé (cliquer pour simuler)
État désactivé
disabled — opacité 0.6, curseur not-allowed
Override de style
accès à la prop style pour modifier bordure ou ombre
Pleine largeur
fullWidth — s'étire à 100% du conteneur
Props
| Prop | Type | Défaut | Requis | Description |
|---|---|---|---|---|
children | React.ReactNode | — | ✓ | Contenu du bouton (texte ou éléments React). |
variant | "primary" | "secondary" | "ghost" | "danger" | "custom" | "primary" | — | Variante visuelle du bouton. 'custom' vous permet de fournir vos propres couleurs via customBg/customColor. |
size | "sm" | "md" | "lg" | "md" | — | Taille du bouton (hauteur, padding, taille de police). |
disabled | boolean | false | — | Désactive le bouton (opacité réduite, curseur not-allowed). |
isLoading | boolean | false | — | Affiche un spinner rotatif à la place de l'icône gauche. Désactive aussi le bouton. |
leftIcon | React.ReactNode | — | — | Icône affichée à gauche du texte. Remplacée par le spinner si isLoading. |
rightIcon | React.ReactNode | — | — | Icône affichée à droite du texte. |
fullWidth | boolean | false | — | Étire le bouton à 100% de la largeur du conteneur. |
onClick | () => void | — | — | Callback déclenché au clic. |
type | "button" | "submit" | "reset" | "button" | — | Type HTML natif du bouton. |
customBg | string | — | — | Couleur de fond personnalisée (CSS color) utilisée lorsque variant==='custom'. |
customColor | string | — | — | Couleur de texte personnalisée (CSS color) utilisée lorsque variant==='custom'. |
style | React.CSSProperties | — | — | Style inline supplémentaire pour overrides (bordure, ombres...). Exemple fourni plus bas. |
Override rapide
Tous les paramètres listés dans cette table sont overrideables via les props. Utilisez ce squelette comme point de départ.
<MyComponent
children={<span>...</span>}
variant="primary"
size="md"
disabled={false}
isLoading={false}
leftIcon={<span>...</span>}
rightIcon={<span>...</span>}
fullWidth={false}
// +5 autres props disponibles
/>childrenvariantsizedisabledisLoadingleftIconrightIconfullWidthonClicktypecustomBgcustomColorstyle