KQ-1433 · DEW/WEB

Dew Web

A background of an orb-weaver's web at first light: radials from a hub to a frame moored off the edges, a capture spiral drooping between them under its own weight, and dew beaded on the silk; a light travels slowly round, droplets whose facets face it flash into small stars and silk lying across it carries a sheen, so bright arcs sweep the web while the anchors sway. Every crossing is a mass on springs tied to its neighbours, so a moving hand brushes the silk into a travelling tremble and a press plucks the nearest thread, which rings through the web — under-damped like the recoil spring, as long as ring asks — and settles; the first time it is seen the capture spiral is spun onto the standing scaffold ring by ring and the dew beads in. Keyboard focus arriving on content inside it gives the web a gentle pluck beside the focused element.

KQ-1433 · DEW/WEB

Fernworks Garden

Open at first light

Dawn walks, Saturdays at six

web spun · brush the silk, press to pluck

Install

One command — the source lands in your repo. Or copy it from the Code tab.

$ pnpm dlx shadcn@latest add @kinetiq/dew-web

Props

children
React.ReactNode
default —
The content above the web: a hero, a heading, a call to action.
density
number
default 0.55
How finely the web is spun, 0 to 1: more radials and more turns of the spiral.
sag
number
default 0.4
How far the capture threads droop between radials under their own weight, 0 to 1.
glint
number
default 0.6
How brightly the dew and the silk catch the moving light, 0 to 1.
dew
number
default 0.55
How much dew has gathered on the silk, 0 to 1.
hub
readonly [number, number]
default [0.68, 0.42]
Where the web's centre sits, as fractions of the box's width and height.
silk
string
default "color-mix(in oklab, var(--foreground) 62%, var(--background))"
The silk's colour, as a CSS colour.
glintColor
string
default "color-mix(in oklab, white 92%, var(--accent-bright))"
The colour of the glints, as a CSS colour.
mist
string
default "color-mix(in oklab, var(--background) 74%, oklch(0.5 0.05 175))"
The morning air behind the web, as a CSS colour.
ring
number
default 0.5
How long the web keeps trembling once disturbed, 0 (it stills at once) to 1 (it rings for about a second).
speed
number
default 1
How fast the light travels round and the anchors sway, 0 to 2.
interactive
boolean
default true
The hand brushes the silk, a press plucks it, and keyboard focus inside plucks it gently.
pointerStrength
number
default 0.6
How hard the hand brushes and plucks, 0 to 1.
seed
number
default 1
Picks the web: the same seed spins the same web with the same dew.
paused
boolean
default false
Holds the sway and the light still; the hand still disturbs the silk.
intro
boolean
default true
Spin the capture spiral onto the web, then bead the dew, the first time it is seen.
dpr
number
default 2
The highest device pixel ratio the web is drawn at, never above 2.
onPluck
() => void
default —
Fires when the web is plucked: by a press, or by keyboard focus arriving inside it.
className
string
default "h-full w-full"
Sizes the box.
contentClassName
string
default —
Classes for the content layer above the web.