BrutalButton is a NeoBrutalism style component. It features thick borders, high contrast colors, and a sharp shadow that vanishes on press to create a satisfying physical push effect.

Preview

BrutalButton

Interactive

Custom Variant

You can easily override the default theme-aware colors to create your own flavor of neobrutalism.

Custom Colors

Interactive

Install

Add the item with the shadcn CLI.

npx shadcn@latest add @evilbuttons/brutal-button

Usage

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

export function ButtonDemo() {
  return (
    <BrutalButton>
      Launch
    </BrutalButton>
  );
}

Props

PropTypeDefaultDescription
colorstringvar(--background)Background color of the button.
textColorstringvar(--foreground)Text color of the button.
hasBorderbooleantrueToggle the border.
borderColorstringvar(--foreground)Color of the border.
hasShadowbooleantrueToggle the sharp shadow.
shadowColorstringvar(--foreground)Color of the shadow.
classNamestring-Extra classes passed to the wrapper.
childrenReact.ReactNode-The visible button label or content.

Registry

The registry item includes components/evil-buttons/brutal-button.tsx and installs clsx and tailwind-merge as dependencies. The component imports cn from @/lib/utils.