ButtonGroup

Envoltorio de diseño para agrupar y alinear botones de acción relacionados.

La primitiva ButtonGroup te permite agrupar múltiples botones adyacentes en una sola unidad horizontal o vertical, manejando automáticamente la fusión de bordes y el recorte de radio de esquina.

Inicio RápidoLink

Agrupa botones juntos horizontalmente:

tsx
import { Button, ButtonGroup } from 'boltdocs/primitives'

export default function FilterGroup() {
  return (
    <ButtonGroup className="rounded-lg border border-subtle overflow-hidden">
      <Button className="px-4 py-2 bg-surface hover:bg-soft text-body border-r border-subtle">
        Pestaña 1
      </Button>
      <Button className="px-4 py-2 bg-surface hover:bg-soft text-body border-r border-subtle">
        Pestaña 2
      </Button>
      <Button className="px-4 py-2 bg-surface hover:bg-soft text-body">
        Pestaña 3
      </Button>
    </ButtonGroup>
  )
}

Configuraciones de DiseñoLink

Alineación Horizontal (Predeterminada)Link

Por defecto, <ButtonGroup> alinea los hijos botón en una fila. Elimina los márgenes de borde interno adyacentes y aplica radios de borde izquierdo y derecho correctamente a los bordes exteriores.

Alineación VerticalLink

Establece vertical en true para apilar los hijos botón en una estructura de columna vertical.

tsx
<ButtonGroup vertical className="rounded-md">
  <Button className="px-4 py-2 border-b border-subtle">Apilar Arriba</Button>
  <Button className="px-4 py-2 border-b border-subtle">Apilar Medio</Button>
  <Button className="px-4 py-2">Apilar Abajo</Button>
</ButtonGroup>

Props del ComponenteLink

El componente ButtonGroup acepta estas propiedades de configuración de diseño:

PropiedadTipoPredeterminadoDescripción
verticalbooleanfalseApila los botones verticalmente si se establece en true. De lo contrario, los organiza en una fila flex horizontal.
childrenReactNodeRequeridoLos botones o nodos de lista interactivos a agrupar.
classNamestringundefinedSobrescrituras de clases CSS utilitarias personalizadas.
styleCSSPropertiesundefinedSobrescrituras de estilo en línea.

Personalización y estadosLink

ButtonGroup es puramente de diseño y no tiene estado propio. Solo compone a sus hijos — une botones adyacentes, fusiona sus bordes y recorta los radios de esquina. Toda decisión visual pertenece al tema: los colores, bordes y radios del contenedor mediante className, y la apariencia de cada botón hijo mediante su propio className.

Estado / SlotMecanismo
Propiedad verticalCambia el diseño entre flex-row (predeterminado) y flex-col
classNamePassthrough al contenedor flex (p. ej. rounded-lg border border-subtle)
Primer / último hijoRadios de esquina recortados (rounded-r-none, rounded-l-none); las esquinas exteriores siguen tu rounded-*
Hijos adyacentesBordes compartidos fusionados mediante -ml-px (horizontal) o -mt-px (vertical)
Sin estadoNo hay atributos data-* ni estados de interacción — los hijos son dueños de sus propios estados

Tailwind v4:

tsx
<ButtonGroup className="rounded-lg border border-subtle overflow-hidden">
  <Button className="px-4 py-2 bg-surface hover:bg-soft text-body border-r border-subtle">
    Izquierda
  </Button>
  <Button className="px-4 py-2 bg-surface hover:bg-soft text-body">
    Derecha
  </Button>
</ButtonGroup>
Last updated on October 18, 2026

Was this page helpful?