docs / atmospheres / kuulto
Kuulto
a sheet of silk far larger than the frame, creased three times and lit by three coloured lamps. everything you see is the lighting: a fold takes the hue of whichever lamp it turns toward, and the ground is black because no light reaches it. nothing is painted.
intensity · roomrsc · client
provenance
authored in usvalayer
atmospheresintensity
room · the whole environment. nothing competes with itcomposition
wraps a hero or a full section; children sit above the drape in normal flowrecolour through colors: the hues are lamps, so it is native to no theme and at home in allnot on savi. light in a void needs a dark ground; reach for kynnös or väre therenever behind dense reading surfaces. it is the room, not a texturea11y
the canvas sits in anaria-hidden wrapper behind the content · reduced motion paints one static frame · no WebGL2, no canvasjest-axedependencies
ogl · atmospheres-core from the same packagelive demo · try it out
colour is a shadow
no palette is sampled here; a fold takes the hue of whichever lamp it turns toward
customize
speeddrift and drape rate
opacitysheet strength, 0 to 1
modeauto reads the ground, or force emit / stain
interactivethe cursor swings the key lamp
keythe main lamp, reads accent
fillthe shadow side, reads accent-2
rimthe grazing lamp on the crests
reliefhow steeply a fold turns through the lamps
creasedepth of the pleats
glossspecular weight, silk vs paper
advanced20
scalefold size, smaller pulls the drape back
creaseWidthpleat width, wide is satin, narrow is foil
drifthow far the pleats travel
drapeweight of the organic wander over the pleats
drapeScalesize of that wander
sheenspecular exponent, high is a tight glint
wraplambert wrap, 0 hard terminator to 1 bled round
contrastpower on the wrapped diffuse, high drives to black
puritygamma on the tint, above 1 keeps lamps from greying
key · xkey lamp direction, x in eye space
key · ykey lamp direction, y in eye space
key · zkey lamp direction, z toward the eye
fill · xfill lamp direction, x in eye space
fill · yfill lamp direction, y in eye space
fill · zfill lamp direction, z toward the eye
rim · xrim lamp direction, x in eye space
rim · yrim lamp direction, y in eye space
rim · zrim lamp direction, z toward the eye
tilthow far the pointer swings the key light
gainoverall brightness of the lit sheet
usage
import { Kuulto } from "@usva-ui/react/atmospheres/kuulto";
<Kuulto
speed={1}
>
<Hero />
</Kuulto>props
| prop | type | default | notes |
|---|---|---|---|
| children | ReactNode | — | rendered above the drape, in normal flow. |
| speed | number | 1 | drift and drape rate multiplier. |
| interactive | boolean | true | the cursor swings the key lamp and the folds re-catch it. |
| opacity | number | 1 | overall opacity of the sheet, 0 to 1. |
| mode | "emissive" | "absorptive" | — | forces the blend. by default a dark ground emits and a light ground stains, the only way this survives a light theme. |
| colors | { key?; fill?; rim? } | — | the three lamps: key reads accent, fill reads accent-2, rim reads accent-alt. omitted lamps read their token. |
| params | Partial<KuultoParams> | — | the drape: scale, relief, crease, creaseWidth, drift, drape, drapeScale, sheen, gloss, wrap, contrast, purity, key, fill, rim, tilt, gain. |
get it
bun add @usva-ui/reactusage
import { Kuulto } from "@usva-ui/react/atmospheres/kuulto";
<Kuulto className="min-h-svh">
<Hero />
</Kuulto>