Ficha
- Categoría
- Actions
- Nivel
- molécula
- Estado
- en revisión
- Radix
- no
- Actualizado
- 2026-10-26
- Figma
- 393:9206
- Fuente
design-system/componentes/Button.md
Cuándo usarlo
- primary: la acción principal de la vista («Practicar ahora», «Entrar», «Comprobar»).
- secondary: la alternativa a la primaria («Sugiéreme otra», «Practicar ahora» en el pie de Foco).
- tertiary: acción de poco énfasis o enlace inline («Ver mi ruta», «Pausar», «Finalizar simulación», «Ver la apertura otra vez»).
Cuándo NO usarlo
- Acciones solo con ícono (enviar, micrófono, cerrar) → IconButton.
- Sugerencias que el usuario elige → Chip.
- Navegación entre secciones → RailItem.
Anatomía
<button> píldora: ícono izquierdo opcional (20 / 16) · etiqueta · ícono derecho opcional. Padding 24 (md) / 16 (sm), gap 8.
Props
| Prop | Figma | Valores | Por defecto |
|---|---|---|---|
label | Label | texto | — |
variant | Variant | primary · secondary · tertiary | primary |
size | Size | md · sm | md |
iconLeft | Icon left + Icon left swap | nombre de ícono | — |
iconRight | Icon right + Icon right swap | nombre de ícono | — |
disabled | State=disabled | boolean | false |
onClick, type, … | — | atributos nativos de <button> | type=button |
Estados
default · hover (:hover) · focus (:focus-visible, 2 px borders/brand/focus al borde) · pressed (:active) · disabled (aria-disabled, sin opacidad, no responde al click). En Figma son la variante State; aquí son estados reales del DOM.
Accesibilidad
- role=button nativo; Enter/Espacio.
- Foco visible: 2 px borders/brand/focus por fuera del borde.
- Deshabilitado con
aria-disabled(sigue en el orden de foco) y nunca con opacidad. - La etiqueta es el nombre accesible; los íconos son decorativos (
aria-hidden).
Contenido
Verbo primero, sentence case, sin punto final, 1–3 palabras.
Errores conocidos
- Ninguno medido (test
@DV-25: 44 de alto;aria-disabledsindisabledni opacidad).
Changelog
- 2026-10-26 · nace (T-02). Los dos booleanos + swap de Figma son un solo prop por lado (
iconLeft,iconRight).
Tokens que consume
- surface/brand/primary
- primary-hover
- primary-pressed
- surface/brand/03-soft
- 04-tint
- surface/disabled/04-tint
- borders/brand/primary
- borders/brand/focus
- borders/disabled/04-tint
- text/brand/on-primary
- text/brand/action
- text/neutral/04-tint
- icons/brand/on-primary
- icons/brand/action
- icons/disabled/05-faint
- Size/size-11x
- size-9x
- Space/space-6x
- 4x
- 2x
- Radius/radius-full
- Border/border-1_5
- border-2
- body/md-strong
- body/sm-strong
- label/md
- label/sm