Bar Dock
image-galleryProA row of tall image bars that swell dock-style as the pointer nears; click or Enter opens one into a large square while the others blur and dim.
Pro cannot be bought yet. The page opens when payment is ready.
Preview
Live demo. The theme switches the demo itself.
Code
The code is locked
Bar Dock 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
npx shadcn@latest add @manniche-pro/bar-dockclaude mcp add --transport http manniche-ui https://mikkelmanniche.dk/api/mcp --header "Authorization: Bearer $MANNICHE_PRO_KEY"Props
BarDockProps
| Prop | Type | Default | What it does |
|---|---|---|---|
items required | BarDockItem[] | – | The pictures, one bar each. Roughly 5 to 14 look best. |
barWidth | number | 28 | Width of a resting bar in CSS pixels. Bars shrink together on narrow containers so the whole row always fits. |
barHeight | number | 170 | Height of a resting bar in CSS pixels. |
gap | number | 6 | Space between bars in CSS pixels. |
magnification | number | 2.3 | How much the bar nearest the pointer grows in width (1 = no magnification). Neighbours taper off smoothly. |
heightMagnification | number | 1.3 | How much the nearest bar grows in height (1 = same height). Kept apart from magnification so bars can swell without getting much taller. |
range | number | 180 | Distance in CSS pixels over which the pointer still has an effect. Bars further away stay at rest. |
radius | number | 8 | Corner radius of the bars in CSS pixels. |
openSize | number | 300 | Side of the square a bar opens into, in CSS pixels. It is capped to fit the container. |
showCaption | boolean | true | Show the picture's alt text as a caption on the open bar. |
defaultOpen | number | – | Index of the bar that starts open. Leave out to start with all bars closed. |
onOpenChange | (index: number | null) => void | – | Called when a bar opens (its index) or the open bar closes (null). |
aria-label | string | 'Picture gallery' | Accessible name of the whole row. |
className | string | – | – |
A11y
Keyboard
The bars are one tab stop. Arrow keys, Home and End move between bars, Enter or Space opens a bar, and Escape closes it. While a bar is open the arrows switch picture.
Screen reader
The dock is a group, named when aria-label is set. Each bar is a button named from its alt with aria-expanded. The images are decorative and the captions are aria-hidden.
Reduced motion
Under reduced motion the swelling and opening snap with no easing.
Other
On touch the first tap swells a bar and the second opens it.