Botões (Button)

· Padrão Frontend
Juan Kalleo
Juan Kalleo
Senior Fullstack
This page hasn't been translated to English yet — showing the original Portuguese content.

Componente de botão tipado, em shared/ui/sistema/button.tsx. Encapsula as classes do DaisyUI (btn, btn-primary, etc.) via cva, para não espalhar variantes pela aplicação.

import { Button, buttonVariants } from "@/shared/ui/sistema/button";

<Button variant="primary" size="sm">Salvar</Button>
<Button variant="destructive">Excluir</Button>
<a className={buttonVariants({ variant: "link" })} href="/ajuda">Ajuda</a>

Variantes (variant)

ValorClasse aplicadaUso
primarybtn-primaryAção principal (padrão)
secondarybtn-secondaryAção secundária
accentbtn-accentDestaque
neutralbtn-neutralNeutro
outlinebtn-outlineContorno
ghostbtn-ghostDiscreto / toolbar
destructivebtn-ghost text-error hover:bg-error/10Exclusão / perigo
linkbtn-linkLink-estilo

Tamanhos (size)

xs (btn-xs), sm (btn-sm, padrão), md (sem classe extra), lg (btn-lg), icon (btn-square — quadrado para ícones).

Comportamento

  • type sempre "button" por padrão — para submit informe type="submit" explicitamente (evita submit acidental de formulário).
  • Aceita todas as props nativas de <button> (onClick, disabled, aria-*, ...), mais className mesclado via cn.
  • buttonVariants({...}) devolve só a string de classes — útil para transformar um <a>/<Link> em botão sem trocar de elemento.

Leitura de apoio