A headline cut from silk that ripples in a slow breeze and billows at your touch
| Name | Type | Default | Description |
|---|---|---|---|
text | string | "Feels like air" | The headline. It wraps onto as many lines as it needs. |
colors | [string, string] | ["#7B61FF", "#FFC4F5"] | The colour of the silk, and the colour of its sheen: the highlights running along the folds and the tint the fabric turns at grazing angles. |
sheen | number | 1 | Strength of the satin highlights, from 0 (matte) to 2. |
gloss | number | 0.6 | Sharpness of the highlights, from 0 (soft, brushed) to 1 (crisp satin streaks). |
iridescence | number | 0.5 | How strongly the silk shifts toward the sheen colour as its folds turn away from you, like shot silk, from 0 to 1. |
wind | number | 1 | Strength of the breeze that keeps the silk billowing, from 0 (still air) to 3. |
windAngle | number | 0 | Direction the breeze travels across the headline, in degrees. 0 runs left to right. |
turbulence | number | 0.5 | How irregular the breeze is, from 0 (long, even swells) to 1 (gusty and uneven). |
flow | number | 1 | Speed of the breeze. |
softness | number | 0.6 | How easily the fabric folds, from 0 (stiff, like taffeta) to 1 (soft and drapey). |
drag | number | 0.5 | Air resistance, from 0 (the silk keeps rippling after a gust) to 1 (it settles quickly). |
hold | number | 0.5 | How firmly the silk is held in place, from 0 (billows freely) to 1 (barely leaves its resting shape). |
fontFamily | string | inherited | Font for the headline. Leave unset to use the page font. |
fontWeight | number | 800 | Font weight. Heavy weights show more of the fabric. |
fontSize | number | 124 | Largest font size in pixels. The headline shrinks to fit the frame when it needs to. |
letterSpacing | number | -0.01 | Letter spacing in em. |
lineHeight | number | 1 | Line height as a multiple of the font size. |
lightAngle | number | -35 | Direction the light comes from, in degrees. 0 is straight above, negative values come from the left. |
lightDrift | number | 1 | Speed of the light slowly wandering over the folds. 0 holds it still. |
interactive | boolean | true | Moving the pointer across the headline sends a soft gust through the silk, stronger the faster you move. |
gustStrength | number | 1 | Strength of the gusts from the pointer, from 0 to 3. |
gustRadius | number | 1.2 | Reach of each gust, as a multiple of the font size. |
clickGust | boolean | true | Clicking or tapping puffs the silk up from underneath at that point. |
intro | boolean | true | The silk lays itself down across the headline from the wind side, fading in along a soft, slanted edge and lifting slightly as it lands. It plays when the headline first comes into view and again whenever the text or font changes. |
introDuration | number | 1.8 | Length of the intro in seconds. |
paused | boolean | false | Freeze the silk in a draped pose. Reduced-motion users always get this still pose, without the intro. |
quality | number | 1 | Resolution scale from 0.25 to 1. |
ref | { gust, replay } | — | gust(x, y, strength) puffs the silk up from a point given as fractions of the headline. replay() plays the intro again. |
children | ReactNode | — | Content placed over the headline. |
className | string | — | Classes for the root element. It fills its parent, with a 240px minimum height. |
style | CSSProperties | — | Inline styles for the root element. |
textstringThe headline. It wraps onto as many lines as it needs.
"Feels like air"colors[string, string]The colour of the silk, and the colour of its sheen: the highlights running along the folds and the tint the fabric turns at grazing angles.
["#7B61FF", "#FFC4F5"]sheennumberStrength of the satin highlights, from 0 (matte) to 2.
1glossnumberSharpness of the highlights, from 0 (soft, brushed) to 1 (crisp satin streaks).
0.6iridescencenumberHow strongly the silk shifts toward the sheen colour as its folds turn away from you, like shot silk, from 0 to 1.
0.5windnumberStrength of the breeze that keeps the silk billowing, from 0 (still air) to 3.
1windAnglenumberDirection the breeze travels across the headline, in degrees. 0 runs left to right.
0turbulencenumberHow irregular the breeze is, from 0 (long, even swells) to 1 (gusty and uneven).
0.5flownumberSpeed of the breeze.
1softnessnumberHow easily the fabric folds, from 0 (stiff, like taffeta) to 1 (soft and drapey).
0.6dragnumberAir resistance, from 0 (the silk keeps rippling after a gust) to 1 (it settles quickly).
0.5holdnumberHow firmly the silk is held in place, from 0 (billows freely) to 1 (barely leaves its resting shape).
0.5fontFamilystringFont for the headline. Leave unset to use the page font.
inheritedfontWeightnumberFont weight. Heavy weights show more of the fabric.
800fontSizenumberLargest font size in pixels. The headline shrinks to fit the frame when it needs to.
124letterSpacingnumberLetter spacing in em.
-0.01lineHeightnumberLine height as a multiple of the font size.
1lightAnglenumberDirection the light comes from, in degrees. 0 is straight above, negative values come from the left.
-35lightDriftnumberSpeed of the light slowly wandering over the folds. 0 holds it still.
1interactivebooleanMoving the pointer across the headline sends a soft gust through the silk, stronger the faster you move.
truegustStrengthnumberStrength of the gusts from the pointer, from 0 to 3.
1gustRadiusnumberReach of each gust, as a multiple of the font size.
1.2clickGustbooleanClicking or tapping puffs the silk up from underneath at that point.
trueintrobooleanThe silk lays itself down across the headline from the wind side, fading in along a soft, slanted edge and lifting slightly as it lands. It plays when the headline first comes into view and again whenever the text or font changes.
trueintroDurationnumberLength of the intro in seconds.
1.8pausedbooleanFreeze the silk in a draped pose. Reduced-motion users always get this still pose, without the intro.
falsequalitynumberResolution scale from 0.25 to 1.
1ref{ gust, replay }gust(x, y, strength) puffs the silk up from a point given as fractions of the headline. replay() plays the intro again.
—childrenReactNodeContent placed over the headline.
—classNamestringClasses for the root element. It fills its parent, with a 240px minimum height.
—styleCSSPropertiesInline styles for the root element.
—