Soft ink that blooms behind the cursor
| Name | Type | Default | Description |
|---|---|---|---|
color | string | "#362E82" | Ink colour. Thin ink shows this colour and dense ink deepens towards black, the way real ink does on paper. In smoke mode the same hue is used in lighter tones. |
mode | "auto" | "ink" | "smoke" | "auto" | Ink stains light pages like real ink on paper. Smoke is its counterpart for dark pages: the same fluid, drawn as soft light smoke in the ink's hue. Auto picks one from the background behind the component and follows theme changes. |
backgroundColor | string | "transparent" | Background of the component. Leave it transparent to lay the cursor over your own page. |
size | number | 56 | Brush radius in pixels, measured where the ink falls to half strength. |
force | number | 1 | How hard the pointer pushes the fluid. Higher values throw the ink further ahead of the cursor. |
intensity | number | 1 | How much ink each movement lays down. Higher values reach the deep core sooner. |
trail | number | 0.6 | Seconds for the ink to fade almost completely once the pointer moves on. |
drift | number | 0.6 | Seconds the fluid keeps moving after it is pushed. |
blur | number | 8 | Softens the ink, in pixels. |
opacity | number | 1 | Overall strength of the ink. |
quality | "low" | "medium" | "high" | "medium" | Resolution of the fluid simulation. The ink is soft by nature, so medium is enough for almost every page. |
autoplay | boolean | true | Until the pointer arrives, and again after it leaves, an invisible cursor wanders around and paints on its own. |
autoplaySpeed | number | 1 | Speed of that invisible cursor. |
idleDelay | number | 1.5 | Seconds after the pointer leaves before the invisible cursor takes over again. |
interactive | boolean | true | Let the pointer and touch paint. The component listens on the window, so content laid over it still stirs the ink. |
paused | boolean | false | Freezes the fluid. Reduced-motion users never get the invisible cursor. |
ref | { splat, clear } | — | Imperative controls: drop ink at a point with an optional push (in pixels from the top-left corner), or clear the canvas. |
children | ReactNode | — | Content rendered above the ink, such as a hero. |
className | string | — | Classes for the root element. It fills its parent, with a 320px minimum height. |
style | CSSProperties | — | Inline styles for the root element. |
colorstringInk colour. Thin ink shows this colour and dense ink deepens towards black, the way real ink does on paper. In smoke mode the same hue is used in lighter tones.
"#362E82"mode"auto" | "ink" | "smoke"Ink stains light pages like real ink on paper. Smoke is its counterpart for dark pages: the same fluid, drawn as soft light smoke in the ink's hue. Auto picks one from the background behind the component and follows theme changes.
"auto"backgroundColorstringBackground of the component. Leave it transparent to lay the cursor over your own page.
"transparent"sizenumberBrush radius in pixels, measured where the ink falls to half strength.
56forcenumberHow hard the pointer pushes the fluid. Higher values throw the ink further ahead of the cursor.
1intensitynumberHow much ink each movement lays down. Higher values reach the deep core sooner.
1trailnumberSeconds for the ink to fade almost completely once the pointer moves on.
0.6driftnumberSeconds the fluid keeps moving after it is pushed.
0.6blurnumberSoftens the ink, in pixels.
8opacitynumberOverall strength of the ink.
1quality"low" | "medium" | "high"Resolution of the fluid simulation. The ink is soft by nature, so medium is enough for almost every page.
"medium"autoplaybooleanUntil the pointer arrives, and again after it leaves, an invisible cursor wanders around and paints on its own.
trueautoplaySpeednumberSpeed of that invisible cursor.
1idleDelaynumberSeconds after the pointer leaves before the invisible cursor takes over again.
1.5interactivebooleanLet the pointer and touch paint. The component listens on the window, so content laid over it still stirs the ink.
truepausedbooleanFreezes the fluid. Reduced-motion users never get the invisible cursor.
falseref{ splat, clear }Imperative controls: drop ink at a point with an optional push (in pixels from the top-left corner), or clear the canvas.
—childrenReactNodeContent rendered above the ink, such as a hero.
—classNamestringClasses for the root element. It fills its parent, with a 320px minimum height.
—styleCSSPropertiesInline styles for the root element.
—