Skip to content
Extensões

Button

Componente de ação principal da interface. Disponível em 4 variantes, 2 tamanhos e com suporte a ícones. Dark mode automático via variáveis semânticas.

components/button.cssAbrir no Figma

Uso

Quando e como utilizar cada variante do botão de acordo com a hierarquia da ação.

  • Filled — Ação principal da tela.
Não use mais de um botão filled na mesma região, pois pode confundir o usuário sobre suas decisões.
  • Outlined — Ação secundária.
  • Ghost — Ação terciária.
  • FAB — Ação flutuante.

Exemplos

Veja abaixo os exemplos interativos de cada variante do botão, com todos os seus estados.

Carregando exemplo...
Carregando exemplo...
Carregando exemplo...
Carregando exemplo...
Carregando exemplo...
Carregando exemplo...

Anatomia

Estrutura interna do componente e seus elementos.

ParteElementoDescrição
Container.btnWrapper com padding, border-radius e estados
Labeltexto diretoTexto da ação, Inter 14px w500
Ícone.btn-icon-content > svgÍcone opcional, antes ou depois do label
Spinnerautomático via .is-loadingSubstitui o ícone durante loading

Propriedades

Classes, estados e atributos disponíveis para configurar o botão.

PropriedadeTipoDefaultDescrição
.btn-filledclasseVariante preenchida. Ação principal.
.btn-outlinedclasseVariante com borda. Ação secundária.
.btn-ghostclasseVariante sem fundo/borda. Ação terciária.
.btn-fabclasseBotão flutuante circular (56px).
.btn-smclasseTamanho pequeno (32px ao invés de 40px).
.btn-iconclasseBotão somente ícone (40x40 ou 32x32 com .btn-sm).
.btn-blockclasseLargura 100%. Uso em mobile e modais.
.is-loadingestadoExibe spinner animado. Adicione aria-busy="true".
.is-disabledestadoDesabilita visualmente via classe (alternativa a disabled).
disabledatributoDesabilita o botão nativamente.

Código

Snippets prontos para copiar e usar no seu projeto.

Ação principal + secundária

html
<div style="display: flex; gap: 12px;">
  <button class="btn btn-filled">Confirmar</button>
  <button class="btn btn-outlined">Cancelar</button>
</div>

Botão com ícone e loading

html
<button class="btn btn-filled">
  <span class="btn-icon-content">
    <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"
      viewBox="0 0 48 48" fill="none" stroke="currentColor"
      stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
      <path d="M24 44V24"/>
      <path d="M24 24V4"/>
      <path d="M4 24H44"/>
    </svg>
  </span>
  Adicionar
</button>

<button class="btn btn-filled is-loading" aria-busy="true">
  Salvando
</button>

Design

Especificações visuais e tokens utilizados no componente.

Especificações

PropriedadeLargeSmall
Altura40px32px
Padding8px 12px4px 12px
Border-radius6px6px
FonteInter 14px w500Inter 14px w500
Gap (ícone)8px8px

Tokens utilizados

VarianteEstadoBackgroundBordaTexto
FilledDefault--surface-base-brand-container-medium--text-base-neutral-white
FilledHover--surface-base-brand-container-low--text-base-neutral-white
FilledDisabled--surface-base-neutral-container-emphasis--text-base-neutral-subtle
OutlinedDefaulttransparent--border-base-neutral-default--text-base-neutral-default
OutlinedHover--surface-base-neutral-container-hover--border-base-neutral-default--text-base-neutral-default
GhostDefaulttransparent--text-base-neutral-default
GhostHover--surface-base-neutral-container-hover--text-base-neutral-default

Design System interno do GALES