vaiperui

componentes / button

Button

Todas as props nativas de <button>, mais variante, cor, tamanho, raio, hover e animações prontas.

Como usar

Importe de `vaiperui` e use como um `<button>`: todas as props nativas (`onClick`, `disabled`, `type`, `aria-*`…) continuam funcionando. A aparência é controlada pelas props `variant`, `variantColor`, `size`, `radius`, `hover` e `animation`.

preview
Button.tsx
import { Button } from "vaiperui";
<Button variantColor="primary" hover="lift">
Clique aqui
</Button>
<Button variant="outlined2" variantColor="danger">
Excluir
</Button>

Cores

preview
primary
success
warning
danger
cores.tsx
<Button variantColor="primary">Botão</Button>
<Button variantColor="success">Botão</Button>
<Button variantColor="warning">Botão</Button>
<Button variantColor="danger">Botão</Button>

Estilos

Mesma cor (`primary`) em todos: o que muda é o preenchimento e o contorno.

preview
solid
solid-inverse
outlined
outlined2
transparent
estilos.tsx
<Button variant="solid" variantColor="primary">Botão</Button>
<Button variant="solid-inverse" variantColor="primary">Botão</Button>
<Button variant="outlined" variantColor="primary">Botão</Button>
<Button variant="outlined2" variantColor="primary">Botão</Button>
<Button variant="transparent" variantColor="primary">Botão</Button>

Tamanhos

preview
sm
md
lg
tamanhos.tsx
<Button size="sm">Botão</Button>
<Button size="md">Botão</Button>
<Button size="lg">Botão</Button>

Raio

preview
none
sm
md
lg
full
raio.tsx
<Button radius="none">Botão</Button>
<Button radius="sm">Botão</Button>
<Button radius="md">Botão</Button>
<Button radius="lg">Botão</Button>
<Button radius="full">Botão</Button>

Hover

`glow` usa a cor da variante no brilho. Passe o mouse para ver.

preview
none
lift
scale
glow
hover.tsx
<Button hover="none">Botão</Button>
<Button hover="lift">Botão</Button>
<Button hover="scale">Botão</Button>
<Button hover="glow" variantColor="primary">Botão</Button>

Animações

Respeitam `prefers-reduced-motion`.

preview
float
pulse
shine
wiggle
wobble
nudge
jelly
heartbeat
jump
gradient
glow
animacoes.tsx
<Button animation="float">Float</Button>
<Button animation="pulse">Pulse</Button>
<Button animation="shine">Shine</Button>
<Button animation="jelly">Jelly</Button>
<Button animation="jump">Jump</Button>
<Button animation="gradient">Gradient</Button>

Cor personalizada

`customColor` sobrescreve `variantColor` com uma única cor, ou um objeto `{ light, dark }` com uma cor para cada tema.

preview
laranja
violeta
light/dark
custom-color.tsx
<Button customColor="#ff6600">Laranja</Button>
<Button customColor="#a78bfa" variant="outlined">Violeta</Button>
<Button customColor={{ light: "#a855f7", dark: "#f472b6" }}>Light/dark</Button>

Ripple

`ripple` cria uma onda a partir do ponto do clique. Usa a cor do texto do botão.

preview
solid
outlined
transparent
ripple.tsx
<Button ripple>Solid</Button>
<Button ripple variant="outlined">Outlined</Button>
<Button ripple variant="transparent" variantColor="success">Transparent</Button>

Props

PropValoresPadrãoDescrição
variantsolid | solid-inverse | outlined | outlined2 | transparentsolidsolid: fundo cheio. solid-inverse: fundo cheio com hover mais claro. outlined: borda suave e hover de tinta. outlined2: borda forte e hover preenche. transparent: sem fundo/borda
variantColorprimary | success | warning | dangerprimaryCor semântica do botão
sizesm | md | lgmdAltura, padding e tamanho de fonte
radiusnone | sm | md | lg | fullmdArredondamento das bordas
hovernone | lift | scale | glownoneEfeito extra ao passar o mouse. glow usa a cor da variante
animationnone | float | pulse | shine | wiggle | wobble | nudge | jelly | heartbeat | jump | gradient | glownoneAnimação contínua do botão; respeita prefers-reduced-motion
customColorstring | { light: string; dark: string }—Sobrescreve variantColor com qualquer cor CSS (ou um par claro/escuro); hover, borda e foco derivam dela
ripplebooleanfalseEfeito de onda (ripple) a partir do ponto do clique; também dispara por teclado. Respeita prefers-reduced-motion
iconStart / iconEndReactNode—Ícone/conteúdo antes ou depois do texto
(nativas)ButtonHTMLAttributes<HTMLButtonElement>—onClick, disabled, type, aria-*, className (sobrescreve estilos) etc.