Shader background
FreeA GPU-drawn animated background.
pnpm dlx shadcn@latest add https://caliperui.site/r/shader-background.jsonWhen to use #
Use it for
- Hero areas with a living backdrop.
Skip it when
- Text needs strong contrast.
- Low-power devices.
Installation #
terminal
pnpm dlx shadcn@latest add https://caliperui.site/r/shader-background.json
Adds its 2 files to components/ui/, each with its own stylesheet, and installs their packages. No account needed. The first part also adds Caliper UI’s tokens; import them once as in Installation.
Usage #
This is the code behind the preview above.
example.tsx
import { Button } from "@/components/ui/button" import { ShaderBackground } from "@/components/ui/shader-background" export function ShaderBackgroundDemo() { return ( <ShaderBackground className="rounded-overlay border border-border" contentClassName="grid min-h-64 content-center justify-items-start gap-4 p-6 sm:p-10" intensity={0.42}> <p className="text-xs font-medium uppercase tracking-[0.08em]">Ship day</p> <h3 className="max-w-md text-3xl font-semibold tracking-tight sm:text-4xl">A background that moves slowly and stays out of the way</h3> <Button>Get started</Button> </ShaderBackground> ); }
API reference #
ShaderBackground
component
PropTypeDefaultDescription
colorsreadonly [string, string, string, string]["var(--chart-1)", "var(--chart-3)", "var(--chart-2)", "var(--chart-5)"]Four CSS colors blended by the shader. Theme variables work.
intensitynumber0.50 shows the page background, 1 shows the full color field. Keep text legible.
speednumber1
scalenumber1.6Size of the pattern; larger is finer.
childrenReactNode—
classNamestring—
contentClassNamestring—
Accessibility #
It is built on native elements, so roles and focus come from the browser.
No custom key handling; Tab and the native activation keys do the work.
Motion #
It checks prefers-reduced-motion itself and settles immediately instead of travelling. Every state is still reachable.