caliper uidocs

Shader background

Free

A GPU-drawn animated background.

Installs components/ui/shader-background.tsxDepends on none beyond ReactMotion honours reduced motion
pnpm dlx shadcn@latest add https://caliperui.site/r/shader-background.json

Ship day

A background that moves slowly and stays out of the way

When 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.