Halftone Tide
backgroundProA drifting noise colour field drawn as a halftone dot grid over up to ten palette stops.
Opening soon
Pro cannot be bought yet. The page opens when payment is ready.
Preview
The preview could not load.
Live demo. The theme switches the demo itself.
Code
halftone-tide.tsxPro
The code is locked
Halftone Tide is part of Manniche UI Pro. A key unlocks the source of all 60 effects.
Opening soon€49 · Introductory price until 31 December 2026. €79 after that.
- One-off payment
- One developer
- Your key arrives by email straight away
- No VAT (§ 19 UStG)
Have a key? Get the code with the CLI or MCP.
The key lives in MANNICHE_PRO_KEY, never in your code or a URL. How to set it up
CLI
npx shadcn@latest add @manniche-pro/halftone-tideMCP
claude mcp add --transport http manniche-ui https://mikkelmanniche.dk/api/mcp --header "Authorization: Bearer $MANNICHE_PRO_KEY"Props
HalftoneTideProps
| Prop | Type | Default | What it does |
|---|---|---|---|
palette | string[] | DEFAULT_PALETTE | Colour stops of the ramp the dots are coloured from, two to ten of them, dark to light or however you like. Any CSS colour, var() and currentColor included. Extra stops past ten are ignored. |
background | string | '#07050d' | Colour between the dots. Use transparent to let the page show through. Any CSS colour. |
frequency | number | 1.4 | How busy the field is: more islands of big and small dots per screen. 1 is calm, 3 is dense. |
speed | number | 1 | Drift speed of the field. 1 is slow, 0 freezes it, negative runs it backwards. |
contrast | number | 1 | How hard dots swell and shrink. Below 1 is soft and even, above 1 leaves more empty space and fat dots. |
cellSize | number | 14 | Distance between dot centres in CSS pixels, 4 to 40. |
paletteShift | number | 0 | Slides the colour ramp along the field, 0 to 1 is one full cycle. |
interactive | boolean | true | Dots near the pointer swell. A finger works too, while it is down. The box uses touch-action: pan-y, so vertical swipes still scroll the page; touch is never captured. |
children | ReactNode | – | Drawn on top, centred. |
label | string | – | Accessible name. When set, the field is exposed as an image; leave it out for pure decoration. |
className | string | – | Sizes the box. The canvas fills it. |
A11y
No accessibility notes written yet.
The notes come with the source when Pro opens.