Saltar al contenido

Button

Beta

La acción principal de una interfaz. Cuatro estilos, cuatro tamaños, dos radios.

Playground

Configurá el botón y copiá el snippet — el código se genera desde el mismo estado que renderiza el preview.

Variant
Size
Radius
Icono
Label
<Button>Inscribirme</Button>

Jerarquía de estilos

Cada sección de una página tiene un solo Fill (la acción principal). El resto acompaña: Stroke para secundarias fuertes, Tonal para secundarias suaves, Text para terciarias y links.

Tamaños

Radius

El radio lo decide el contexto de la página, no el gusto: Full para superficies de marketing y vida estudiantil, Semi para lo institucional. Nunca mezcles radios dentro de una misma sección.

Con iconos

Cuándo usarlo

  • — para acciones: enviar, inscribirse, confirmar, abrir un flujo.
  • — icon-only para acciones de utilidad reconocibles (buscar, cerrar), siempre con aria-label.
  • No — para navegar a otra página dentro del contenido: eso es un link (variant="text" existe justamente para esa zona gris).
  • No — más de un Fill por sección; si todo es principal, nada lo es.

Accesibilidad

  • El focus ring (Primary/8, 2px) viene incluido — no lo quites ni lo tapes.
  • disabled baja la opacidad a 0.38 y bloquea el pointer; si la acción puede volver a habilitarse, explicá cómo cerca del botón.
  • En icon-only el aria-label es obligatorio.

Props

PropTipoDefaultDescripción
variant"fill" | "stroke" | "tonal" | "text""fill"Jerarquía visual del botón.
size"sm" | "md" | "lg" | "xl""md"Altura 32 / 40 / 48 / 64 px, con tipografía y padding acordes.
radius"full" | "semi""full"Full = pill; Semi usa el radius token del tamaño (6–12 px).
iconLeftReactNodeIcono antes del label.
iconRightReactNodeIcono después del label.
iconOnlyReactNodeSolo icono; requiere aria-label. Oculta el label.
disabledbooleanfalseOpacidad 0.38 + pointer-events bloqueados.