FrameButton is a futuristic button with animated corner frames and tactile motion interactions.

Preview

Frame Button

Interactive

Variants

default

Frame Button

Interactive

secondary

Frame Button

Interactive

outline

Frame Button

Interactive

Install

Add the item with the shadcn CLI.

npx shadcn@latest add @evilbuttons/frame-button

Usage

Button

[]txt
import { FrameButton } from "@/components/evil-buttons/frame-button";

export function ButtonDemo() {
  return (
    <FrameButton>
      Get Started
    </FrameButton>
  );
}
[]txt
import { FrameButton } from "@/components/evil-buttons/frame-button";

export function ButtonDemo() {
  return (
    <FrameButton as="link" href="https://github.com/radiumcoders/evil-buttons">
      Star on GitHub
    </FrameButton>
  );
}

Props

The component spreads any <button> HTML attributes.

PropTypeDefaultDescription
childrenReact.ReactNodeThe button content.
variant"default" | "secondary" | "outline""default"Visual style variant of the button.
classNamestringAdditional custom class names.
glowbooleanfalseEnables the glow effect on hover.
sizenumber | string20Size of the frame corner markers.
offsetnumber7.5Distance of the corner markers from the button edges.
hoverOffsetnumber7Movement distance of corner markers on hover.
as"button" | "link""button"Renders the component as a button or link.
hrefRoute | UrlObjectLink destination when as="link" is used.

Registry

The registry item includes components/evil-buttons/frame-button.tsx, installs clsx and tailwind-merge, and motion as a registry dependency.