Slab Tunnel
image-galleryProA first-person WebGL tunnel of picture and colour slabs that rushes towards you forever. Press and hold to boost, with a pill label that follows the cursor.
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
slab-tunnel.tsxPro
The code is locked
Slab Tunnel 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/slab-tunnelMCP
claude mcp add --transport http manniche-ui https://mikkelmanniche.dk/api/mcp --header "Authorization: Bearer $MANNICHE_PRO_KEY"Props
SlabTunnelProps
| Prop | Type | Default | What it does |
|---|---|---|---|
images | SlabTunnelImage[] | – | Pictures that appear on some slabs. Only the first 16 are used. Without any, the tunnel is solid colour slabs. |
colors | string[] | DEFAULT_COLORS | Colours of the solid slabs (and the tint under a picture while it loads). Any CSS colours. |
background | string | 'var(--background, #0b0b0d)' | Colour the tunnel fades into with distance. Any CSS colour; the default follows the page background. |
gridColor | string | 'currentColor' | Colour of the empty cells, which hint at the grid. Defaults to the page foreground, used very faintly. |
density | number | 4 | Slabs across one wall, 2 to 12. More slabs are smaller and the ride feels faster. |
fill | number | 0.55 | 0 to 1: share of cells that hold a slab. The rest stay empty. |
imageShare | number | 0.5 | 0 to 1: share of slabs that carry a picture (when there are pictures). |
speed | number | 3 | Cruising speed in slabs per second. |
boost | number | 4.5 | Speed multiplier while the pointer or Space is held. The speed eases towards it. |
fade | number | 0.6 | 0 to 1: how early the depth fade starts. Higher fades the far end sooner. |
seed | number | 7 | Changes which slabs show up. The same seed gives the same tunnel. |
label | string | false | 'Hold to speed up' | Text in the pill that follows the cursor. Pass false for no pill. |
pressedLabel | string | – | Text in the pill while pressed. Defaults to label. |
keyboard | boolean | true | Lets Space and Enter boost while the tunnel has keyboard focus. |
ariaLabel | string | 'A tunnel of picture and colour slabs rushing towards you. Hold to speed up.' | Accessible name for the tunnel. |
className | string | – | Size it with this (it fills its parent: absolute inset-0, h-full, a fixed height...). |
style | CSSProperties | – | – |
A11y
No accessibility notes written yet.
The notes come with the source when Pro opens.