Button
Dispara uma ação. O átomo mais comum em qualquer superfície de produto. Acerte este e a maior parte do resto vem junto.
Status: stable · @velon-finance/ui
Visão geral
Variantes
Seis variantes cobrem a hierarquia visual das ações em qualquer tela. Use no máximo uma primary por superfície.
Tamanhos
Com ícone
Estados
Props
| Prop | Tipo | Padrao | Descrição |
|---|---|---|---|
variant | 'primary' | 'secondary' | 'outline' | 'ghost' | 'link' | 'destructive' | 'primary' | Estilo visual |
size | 'sm' | 'md' | 'lg' | 'icon' | 'md' | Escala de tamanho |
asChild | boolean | false | Renderiza como o elemento filho em vez de um <button> (Radix Slot) |
disabled | boolean | false | Desabilita a interação e reduz a opacidade |
…rest | ButtonHTMLAttributes | . | Todas as props nativas de button (onClick, type, aria-*, etc.) |
Acessibilidade
- Sempre renderize um
<button>(padrão), a menos que você realmente precise de um link. UseasChildcom<a>para ações de navegação. - Para botões somente com ícone, defina o
aria-labeldescrevendo a ação. - Botões desabilitados não recebem focus. Se você precisa de um botão com aparência de desabilitado que ainda receba focus (para exibir um tooltip), use
aria-disabledem vez da propdisabled. - O focus ring atende ao contraste WCAG AA tanto no tema claro quanto no escuro.
Faça / Não faça
Faça
Uma ação primary por superfície, acompanhada de um cancelar mais discreto.
Não faça
Dois primaries disputam a atenção. O usuário precisa ler os dois.
Código
import { Button } from '@velon-finance/ui'
<Button variant="primary" onClick={handleSubmit}>
Confirmar
</Button>