Button

Spring-pressed Button plus StatefulButton, MagneticButton, and MetallicButton variants.

Metallic Button

metallic.tsx

A neutral button surface framed by a pronounced chrome rim with a straight traveling reflection.

Install

$ bunx --bun shadcn add @beui/button-metallic

API Reference

className?
string
size?
"sm" | "md" | "lg" | "icon"
md
pressScale?
number
paused?
boolean

Stops the traveling reflection while preserving the chrome rim.

false

Button

base.tsx

Press scale, hover lift, variants and sizes.

Install

$ bunx --bun shadcn add @beui/button-base

API Reference

Button

className?
string
size?
"sm" | "md" | "lg" | "icon"
md
variant?
"outline" | "ghost" | "primary" | "secondary"
primary
pressScale?
number
0.93
ripple?
boolean

Spawn a Material-style ripple from the press point. Off by default.

false

ButtonLink

className?
string
size?
"sm" | "md" | "lg" | "icon"
md
variant?
"outline" | "ghost" | "primary" | "secondary"
primary
pressScale?
number
0.93

Stateful Button

stateful.tsx

Idle → loading → success / error with blur-swap slots and morphing width.

Install

$ bunx --bun shadcn add @beui/button-stateful

API Reference

className?
string
size?
"sm" | "md" | "lg" | "icon"
variant?
"outline" | "ghost" | "primary" | "secondary"
icon?
ReactNode
pressScale?
number
ripple?
boolean

Spawn a Material-style ripple from the press point. Off by default.

state?
"error" | "success" | "loading" | "idle"
idle
loadingText?
ReactNode
Loading
successText?
ReactNode
Done
errorText?
ReactNode
Try again

Magnetic Button

magnetic.tsx

Button composed with the Magnetic wrapper for cursor-attracted pull.

Install

$ bunx --bun shadcn add @beui/button-magnetic

API Reference

className?
string
size?
"sm" | "md" | "lg" | "icon"
variant?
"outline" | "ghost" | "primary" | "secondary"
pressScale?
number
ripple?
boolean

Spawn a Material-style ripple from the press point. Off by default.

strength?
number

Magnetic pull strength. Default 0.25.

0.25
magneticClassName?
string

Class applied to the magnetic wrapper.

Updated