Button
Dispara uma ação: salvar, publicar ou iniciar uma tarefa.
O Button é o controle de ação padrão do Admin. Para navegar entre telas, prefira um Link. A fachada @rastreio-x/ui reexporta o botão do HeroUI v3 com o acabamento Mouve do tema: pílula, foco azul e encolhimento ao pressionar.
import { Button } from "@rastreio-x/ui";
Padrão
O rótulo é um verbo mais o objeto, em Title Case curto: "Publicar Marca", nunca "OK".
Playground
Troque as propriedades e veja o botão e o código mudarem juntos.
Variantes
Sete variantes. A primária marca a ação principal da região; as demais baixam o peso. danger e danger-soft são só para ações destrutivas.
| Variante | Quando usar |
|---|---|
primary | A ação principal da região, uma por vez. |
secondary | Ação alternativa de peso médio, como salvar rascunho. |
tertiary | Ação de apoio, com fundo discreto. |
outline | Ação que precisa de limite visível sobre fundo vazio. |
ghost | Cancelar, voltar e ações de baixa prioridade. |
danger | Ação destrutiva já confirmada, como excluir. |
danger-soft | Ação destrutiva de menor peso, em listas e diálogos. |
Tamanhos
Três tamanhos: sm, md (padrão) e lg. O raio é sempre em pílula.
Com ícone
Ícones entram como filhos, antes ou depois do rótulo, e levam aria-hidden, porque o rótulo já diz a ação. Use os ícones de @rastreio-x/ui/icons.
Só ícone
Com isIconOnly o botão vira um quadrado em pílula e precisa de aria-label.
Estados
Desabilitado
Explique o motivo perto do botão: um botão cinza sem explicação trava a pessoa.
Carregando
isPending bloqueia novos cliques e mantém o tamanho do botão, para o layout não pular. Troque o rótulo para o gerúndio ("Publicando").
Largura total
Em formulários estreitos e no celular, fullWidth faz o botão ocupar a coluna.
No Admin
Na barra de ações do editor de Marca há uma ação primária e as demais descem de peso.
Anatomia
O botão é uma peça só. Ícone opcional à esquerda ou à direita, o rótulo e, durante isPending, o estado de carregamento no lugar do clique.
Propriedades
Animações
O fundo muda de tom no hover; ao pressionar, o botão encolhe um pouco (scale) e o anel de foco azul aparece só com o teclado. Tudo dura entre 150 e 250 ms e usa opacity, transform e cor. Com prefers-reduced-motion, a folha global da fachada reduz transições a 0,01 ms: ficam as trocas de cor, sem encolhimento.
Acessibilidade
- É um
<button>nativo: Tab foca, Enter e Espaço acionam (onPresscobre mouse, toque e teclado). - O anel de foco aparece só com o teclado e mantém 3:1 de contraste contra a superfície.
isDisabledusaaria-disabled;isPendinganuncia o estado ocupado e ignora novos cliques.isIconOnlyexigearia-label; o estado nunca depende só da cor.
Boas práticas
Faça
Evite
- Um botão primário por região da tela; o resto desce de peso.
- Rótulos de verbo no infinitivo e Title Case curto: "Publicar Marca", "Salvar Rascunho".
- Use
dangersó para ação destrutiva, e confirme antes comAlertDialog. - Não desabilite sem explicar: mostre o motivo perto do botão.
- Para navegar, use
Link; botão dispara ação.
Relacionados
- Tooltip para explicar botões só de ícone.
- AlertDialog para confirmar ações destrutivas.
- Modal e Sheet para agrupar ações em torno de uma tarefa.