ClickPowerUp

A bracketed button that arms on hover and powers up with an accent flash and bracket burst on every click.

ClickPowerUp is a little arcade cabinet of a button. Hovering arms it: a dark panel wipes across the hatched face and the corner brackets spread out. Pressing snaps the brackets in, and releasing powers it up: an accent flash floods the face, the brackets burst outward, and the label pops.

Preview

Props

Install

Add the item with the shadcn CLI.

npx shadcn@latest add @evilbuttons/click-powerup

Usage

import { ClickPowerUp } from "@/components/evil-buttons/click-powerup";

export function ButtonDemo() {
  return (
    <ClickPowerUp onClick={() => console.log("Powered up")}>
      Launch
    </ClickPowerUp>
  );
}

Variants

Custom accent

Swap the flash color and hold it a little longer.

Props

The component spreads native button props and forwards its ref to the button.

PropTypeDefaultDescription
childrenReact.ReactNode-The button label or content.
tapDurationnumber500Milliseconds the powered-up flash lasts after a click.
accentColorstring"#2CD4BD"Color of the powered-up flash.
onClick(event) => void-Fired on every click.
classNamestring-Extra classes passed to the button.

Notes

  • The brackets, panel, and label all run off one rest / hover / tap / powered variant state, so they stay in sync.
  • The surface and brackets use foreground and background tokens, so it works in light and dark themes.
  • Touch skips the hover state, so a tap goes straight to the press animation.

Registry

The registry item includes components/evil-buttons/click-powerup.tsx and installs motion, clsx, and tailwind-merge as dependencies. The component imports cn from @/lib/utils, matching the project alias in components.json.

Search docs

Jump to a button documentation page