GrayUI

shadcn, but with taste.

A copy-paste component library built for speed, style, and sovereignty. Dark-first aesthetics, magnetic interactions, and GSAP-powered animations baked into every component.

Buttons

Cartoon-style buttons with offset shadows and bold aesthetic

Default

Gradient teal with cartoon shadow

<Button variant="default">
  Ship It
</Button>

Outline

Transparent with teal border shadow

<Button variant="outline">
  Learn More
</Button>

Ghost

Minimal with no shadow

<Button variant="ghost">
  Cancel
</Button>

Secondary

Light background with dark shadow

<Button variant="secondary">
  Alternative
</Button>

Glow

Teal glow effect with shadow

<Button variant="glow">
  Let's Go
</Button>

Icon Button

Square button for icons

<Button size="icon">
  →
</Button>

Icons

Hugeicons integration with button components

Icon Left

Icon positioned before text

<Button
  iconLeft={<HugeiconsIcon icon={Download01Icon} />}
>
  Download
</Button>

Icon Right

Icon positioned after text

<Button
  iconRight={<HugeiconsIcon icon={ArrowRight01Icon} />}
>
  Next
</Button>

Icon Only

Square buttons with icons

<Button size="icon">
  <HugeiconsIcon icon={Home01Icon} size={20} />
</Button>

Icon Showcase

Popular Hugeicons from the free pack

Home
Search
Settings
User
Mail
Download
Plus
Delete
Heart
Arrow
Sun
Moon

Typography

Syne for display, Manrope for body, JetBrains Mono for code — with Golos Text for Cyrillic support

Display: Syne

Bold, geometric headers and hero text

Aa
Design Systems
Typography Matters
Every Detail Counts

font-family: Syne, system-ui

Sans: Manrope

Clean, readable body text

The quick brown fox jumps over the lazy dog
Pack my box with five dozen liquor jugs
How vexingly quick daft zebras jump!
Sphinx of black quartz, judge my vow

font-family: Manrope, system-ui

Display (Cyrillic): Golos Text

Cyrillic fallback for display text

Дизайн
Типографика важна
Каждая деталь имеет значение

font-family: Syne, Golos Text, system-ui

Mono: Berkeley Mono

Code blocks and technical content

const button = { variant: 'default', size: 'md' };
function greet(name: string): void {
  console.log(`Hello, ${name}`);
}
# Install dependencies
npm install @radix-ui/react-slot class-variance-authority

font-family: Berkeley Mono, JetBrains Mono, monospace

Size Scale

xs (12px) → 7xl (72px) — 11 steps

xs12px - Labels, metadata
sm14px - Small body text
base16px - Body text
lg18px - Large body
xl20px - Subheadings
2xl24px - Section titles
3xl32px - Page titles
4xl40px - Hero H2
5xl48px - Hero H1

Weight Scale

Light (300) → Extrabold (800) — 6 weights

light (300)

Aa

normal (400)

Aa

medium (500)

Aa

semibold (600)

Aa

bold (700)

Aa

extrabold (800)

Aa

Inputs

Text inputs with cartoon shadows and smooth focus transitions

Default

Standard input with cartoon shadow

<Input
  placeholder="Enter text"
  inputSize="md"
/>

Outline

Transparent with teal border

<Input
  variant="outline"
  placeholder="Email"
/>

Ghost

Minimal, appears on hover

<Input
  variant="ghost"
  placeholder="Search"
/>

Solid

Filled background with subtle shadow

<Input
  variant="solid"
  placeholder="Text"
/>

Glow

Accent glow on focus

<Input
  variant="glow"
  placeholder="Email"
/>

With Icons

Left and right icon support

<Input
  iconLeft={<SearchIcon />}
  placeholder="Search"
/>

Floating Label

Animated label that floats on focus

<FloatingInput
  label="Email"
  id="email"
/>

State Variants

Error and success states

<Input error />
<Input success />

Textarea

Multi-line text input

<Textarea
  placeholder="Message"
/>

Dropdown Menus

Context menus with cartoon shadows and smooth animations

Basic Menu

Simple dropdown with items

<DropdownMenu>
  <DropdownMenuTrigger>
    <Button>Menu</Button>
  </DropdownMenuTrigger>
  <DropdownMenuContent>
    <DropdownMenuItem>
      Profile
    </DropdownMenuItem>
  </DropdownMenuContent>
</DropdownMenu>

With Labels

Organized sections with labels

<DropdownMenuContent>
  <DropdownMenuLabel>
    Account
  </DropdownMenuLabel>
  <DropdownMenuItem>
    Profile
  </DropdownMenuItem>
</DropdownMenuContent>

With Shortcuts

Keyboard shortcuts displayed

<DropdownMenuItem>
  Copy
  <DropdownMenuShortcut>
    ⌘C
  </DropdownMenuShortcut>
</DropdownMenuItem>

Checkbox Items

Toggleable menu items

<DropdownMenuCheckboxItem
  checked
>
  Sidebar
</DropdownMenuCheckboxItem>

Radio Group

Single selection from options

<DropdownMenuRadioGroup
  value="dark"
>
  <DropdownMenuRadioItem
    value="light"
  >
    Light
  </DropdownMenuRadioItem>
</DropdownMenuRadioGroup>

Submenu

Nested menu items

<DropdownMenuSub>
  <DropdownMenuSubTrigger>
    Share
  </DropdownMenuSubTrigger>
  <DropdownMenuSubContent>
    <DropdownMenuItem>
      Email
    </DropdownMenuItem>
  </DropdownMenuSubContent>
</DropdownMenuSub>

Cards

Four variants for different content presentations

Default Card

Standard card with dark background

Perfect for general content display with clean borders.

Glass Card

Frosted glass morphism effect

Semi-transparent with backdrop blur for layered interfaces.

Hover Lift

Scales up on hover

Interactive cards that lift on hover for emphasis.

Glow Card

Accent border with glow

Highlights important content with accent glow effect.

Cartoon Card

Standard card with dark background

Perfect for general content display with clean borders.

Design Tokens

Color palette, typography, and spacing system

Color Palette

Dark-first color system

Accent

Gray Scale

Semantic

Success
Error
Warning

Typography

Font sizes and families

Display Heading
Heading
Body text in Inter
Small text for captions
Monospace for code

Why GrayUI?

Built on solid principles with modern tooling

Copy-Paste First

Own your code. No npm bloat, no magic. Copy components directly into your project and customize freely.

Dark-First Design

Built for modern interfaces with a sophisticated dark aesthetic. No compromises, no apologies.

Motion Ready

GSAP animations out of the box. Magnetic effects, smooth transitions, and signature interactions included.

Radix Primitives

Accessibility handled by Radix UI. Focus on design, not ARIA attributes and keyboard navigation.

TypeScript Strict

Fully typed components with strict mode enabled. Catch errors at compile time, not production.

Tailwind Native

Built with Tailwind CSS. Customize with design tokens, no CSS-in-JS complexity to fight.