Animated CTA Buttons

Expressive call-to-action buttons with expanding, hold, and slide interactions.

Expanding Arrow Button

expanding-arrow-button.tsx

An accent tile that expands into a dotted-arrow trail on hover or focus.

Install

$ bunx --bun shadcn add @beui/expanding-arrow-button

API Reference

className?
string
—
accentClassName?
string
—
labelClassName?
string
—

Hold Action Button

hold-action-button.tsx

Hold to complete with a vertical or horizontal liquid fill; release early to cancel.

Release early to cancel

Install

$ bunx --bun shadcn add @beui/hold-action-button

API Reference

className?
string
—
type?
"horizontal" | "vertical"
vertical
labelClassName?
string
—
holdingLabel?
ReactNode
Keep holding
completeLabel?
ReactNode
Done
holdDuration?
number
1600
onHoldComplete?
(() => void)
—
fillClassName?
string
—

Slide Action Button

slide-action-button.tsx

Drag the thumb to the end to confirm an action; release early to spring back.

Drag the arrow to the end

Install

$ bunx --bun shadcn add @beui/slide-action-button

API Reference

completeLabel?
ReactNode
Complete
threshold?
number
0.82
resetDelay?
number
1200
onComplete?
(() => void)
—
thumbClassName?
string
—
fillClassName?
string
—
className?
string
—

Updated