
Border Beam
Components
A glossy animated button component for hero CTAs, pricing actions, upgrade prompts, product launches, and conversion sections where the primary action needs a little more pull.
Shiny Button gives a standard CTA a controlled light pass.
The button uses glow, gradient movement, surface shine, and soft edge illumination to create a polished interaction state. The label remains stable while the visual surface moves around it, so the user still reads the action clearly.
Use Shiny Button when a page needs one CTA to feel more desirable than the surrounding interface. It works for SaaS pricing pages, account upgrade flows, premium-access prompts, product launches, checkout starts, waitlist buttons, and hero sections where the primary action needs a stronger visual cue.
The page job is conversion emphasis. The shine should make the button feel active and intentional. It should not make the user wonder whether the CTA is clickable, loading, disabled, or auditioning for a sci-fi dashboard.
// Built using Hyperiux Vault: https://vault.hyperiux.com import ShinyButton from "@/components/effects/shiny-button"; export default function Page() { return ( <> <div className="h-screen w-screen flex items-center justify-center relative"> <ShinyButton /></div> </> );}A SaaS pricing page can use Shiny Button on the paid-plan CTA. The surrounding interface stays calm, while the main action carries a subtle animated gloss that reinforces priority.
The outcome is hierarchy. Visitors understand which button matters most without the page needing another arrow, badge, or desperate “most popular” treatment trying to carry the whole conversion path.
A product launch page can use the same component for a waitlist or early-access CTA where the action should feel alive but still trustworthy.
Not for every button on the page.
Not for destructive actions, legal confirmations, subtle secondary links, dense dashboards, form controls, or navigation items that should stay quiet.
Not for CTAs with unclear copy. Shine can attract attention, but it cannot make “Click here” worth clicking.
Keep the visual layer lightweight. Prefer CSS gradients, masks, opacity, and transform over heavy filters or constant JavaScript-driven animation. Avoid running pointer calculations when the button is offscreen or inactive.
Limit glow blur and animated texture density. A CTA should feel polished, not like it brought its own rendering engine to a checkout flow.
Use real button or anchor semantics, readable labels, visible focus states, and sufficient contrast. The shine should never reduce label clarity.
On touch devices, use a stable active or hover-safe visual state instead of relying on cursor position. For reduced motion, freeze the shine, remove continuous movement, or show a static polished surface.
| Prop | Type | Default | Description |
|---|---|---|---|
label | string | Get Started | Button label text. |
fillColor | color | #000000 | Button fill colour inside the animated border. |
labelColor | color | #ffffff | Label colour. |
accentColor | color | #ff5f00 | Colour of the rotating border arc, inner shimmer, and hover glow. |
accentSoftColor | color | #ff9253 | Shine colour the border eases into while hovered. |
sweepDuration | number | 3 | Seconds for one full rotation of the border gradient. |
easeDuration | number | 0.8 | Seconds for the hover ease into the wider, brighter border. |
arcWidth | number | 5 | Resting width of the bright border arc, as a percentage. |
cornerRadius | number | 32 | Corner radius in pixels; 32 and above render as a full pill at the default height. |
showSpeckle | boolean | true | Shows the masked dot pattern layer. |
showSheen | boolean | true | Shows the rotating inner sheen. |
speckleOpacity | number | 0.4 | Strength of the dot pattern layer. Needs Show Speckle on. |
Shiny Button is a React button component that adds a glossy animated shine, glow, or light-pass treatment to a CTA.
Use it for primary actions that deserve extra visual emphasis, such as pricing CTAs, upgrade buttons, product launch actions, checkout starts, and premium-access prompts.
No. Use it on one or two high-priority actions. Too many shiny buttons weaken hierarchy and make the page feel noisy.
Yes. If the action navigates to another page, render it as an anchor. If it performs an action, render it as a button.
Use semantic elements, readable labels, visible focus styles, sufficient contrast, and decorative shine layers that do not block interaction or duplicate text.
Need a custom effect? Tell us what to create.