Cyanotype

Surface study no. 04

Form that refuses to hold still.

A studio for identities that move. We cast brands in liquid metal, then let them settle into something you can hold.

About this component

Cyanotype

A live WebGL sun print: procedurally drawn ferns, grasses, seed heads, veined leaves and flowers lie on brushed watercolor paper while the coating develops from pale chemistry to deep Prussian blue, leaving the plants as white silhouettes with soft lifted edges. The cursor casts shade that holds back the blue and leaves a fading ghost, and every few seconds a wash of water rinses the print and a new arrangement develops. Colors, specimen count, seed, exposure time, wash interval, brushed edge, grain and shade are all props. Fades up softly out of the bare paper on load, adapts its resolution, pauses offscreen, shows a finished print for reduced motion and falls back to a CSS gradient without WebGL.

Usage

The import and the props worth knowing about, in one place.

import { Cyanotype } from "@/components/beste/component/cyanotype";

// As a layer behind content
<section className="relative min-h-[40rem]">
  <Cyanotype className="absolute inset-0" />
  <div className="relative text-white">...</div>
</section>

<Cyanotype
  className="min-h-[32rem]"
  blueColor="#1c3f6e"      // any CSS color
  specimens={7}            // plants per print, 1 to 9
  seed={42}                // same seed, same arrangement
  focus="center"           // "right" (default) | "center" | "full"
  exposureTime={4}         // seconds to develop
  washInterval={0}         // never rinse and redevelop
  shade={0.8}              // how strongly the cursor holds back the blue
/>

Props

Read from the component's own type, so this cannot drift from what it accepts.

PropTypeDefaultDescription
blueColorstring—Deep color the exposed chemistry turns. Any CSS color.
paperColorstring—Color of the watercolor paper around and under the specimens.
chemistryColorstring—Color of the fresh, unexposed coating.
specimensnumber—How many specimens lie on each print, 1 to 9.
seednumber—Seed for the specimen arrangement; the same seed always lays out the same print.
focus"right" | "center" | "full"—Where the specimens gather, leaving the rest of the print open for text.
exposureTimenumber—Seconds until the print is almost fully developed.
washIntervalnumber—Seconds between washes; each wash rinses the print and a new arrangement develops. 0 turns washing off.
brushEdgeboolean—Ragged, brushed edges where the coating stops and bare paper begins.
grainnumber—Paper grain and fiber, 0 to 1.
shadenumber—How much the cursor's shade holds back the exposure, 0 to 1.
interactiveboolean—The cursor casts shade like a hand over the print.
pausedboolean—Freeze the print where it is.
classNamestring—
childrenReactNode—

More Background components

View all Background
A woman with short hair looking back over her shoulder against a clear sky