Gradient Card

A card on a live gradient, with a scrim that keeps white text legible.

Grain

A soft, film-like blend.

Installation

pnpm dlx shadcn@latest add https://gradients.sh/r/gradient-card.json

Usage

import { GradientCard } from "@/components/gradient-card";

<GradientCard className="h-72">
  <p className="text-lg font-semibold">Grain</p>
</GradientCard>;

Content sits at the bottom of the card. The scrim darkens the area behind it so white text stays legible.

Props

PropTypeDefault
children

Card content. It sits at the bottom of the card by default.

ReactNode—
kind

Which gradient fills the component: one of the six free kinds, or any kind registered with the engine.

GradientKind"grain"
scrim

Darken the bottom of the card behind the text.

booleantrue
colors

Two to six colours: hex, oklch(), names or var(--token).

[string, string, ...string[]]["#ffd8b4", "#e0703b", "#8a2c1d", "#2b1015"]
background

Base colour under the gradient.

string"#070505"
speed

0 to 2. How fast the gradient moves. 0 holds it still.

number0.48
loopSeconds

4 to 30. The animation repeats exactly every loopSeconds.

number16
scale

0.25 to 4. Noise frequency: higher means smaller shapes.

number1
warp

0 to 1. Domain-warp strength.

number0.55
grain

0 to 1. Film grain.

number0.5
blur

0 to 1. Softness.

number0.55
seed

Integer seed for the noise field.

number7
dither

Ordered 4×4 Bayer dither.

{ enabled?: boolean; cell?: number; levels?: number }{ enabled: false, cell: 3, levels: 8 }
interaction

0 to 1 influence of the pointer and of scroll velocity.

{ pointer?: number; scroll?: number }{ pointer: 0.15, scroll: 0 }
maxDpr

Device pixel ratio cap for the canvas.

number1.5
reducedMotion

"respect" shows one still frame when the user prefers reduced motion.

"respect" | "ignore""respect"
className

Classes for the outer element. Size it here; the gradient fills it.

string—