Atoms · Onda 1 · 01

Button

Cinco variantes, quatro tamanhos. Primary só uma vez por superfície — é a ação mais importante daquela tela. Ghost para tudo que é navegação, secondary para o resto.

Variantes

Cada variante tem um papel único. Não duplique primary numa mesma área — quebra a hierarquia visual.

Primary
Secondary
Ghost
Link
Destructive

Tamanhos

Default em quase tudo. Hero apenas em CTA principal de landing. Compact em toolbars densas e tabelas.

Com ícone

Ícone Lucide à esquerda do label, gap 6px. Ícone-only deve ter aria-label.

Estados

Hover, active, focus, disabled. Loading com spinner inline.

Anatomia

Especificação canônica. Toda variant usa a mesma escala.

TokenCompactDefaultProminentHero
Altura28px32px36px44px
Padding-x10px14px16px22px
Font-size12px13px13.5px14px
Font-weight500500500600
Border-radius--radius-sm · 6px--radius-sm · 6px--radius-sm · 6px--radius-sm · 6px
Gap (com ícone)6px6px6px8px

Regras

DO
Uma única ação primary por superfície. Ela é a ação mais importante daquela tela.
DO
Use destructive apenas para ações irreversíveis — encerrar caso, excluir fonte, revogar acesso.
DO
Em modais de confirmação, primary é a confirmação; ghost é o cancelar.
DON'T
Não use primary para "Cancelar" ou navegação. Cancelar é ghost; navegar é secondary ou link.
DON'T
Não duplique primary numa toolbar. Se há duas ações importantes, escolha uma — a outra vira secondary.
DON'T
Não use destructive para "Limpar filtros" — isso é ghost.

Como usar

<button class="pb pb-primary">Declarar crise</button>
<button class="pb pb-secondary pb-sm">Exportar</button>
<button class="pb pb-ghost pb-icon" aria-label="Atualizar">
  <RefreshIcon size={14} />
</button>