Ballmac UI home

Dock

A macOS-style dock whose icons grow with spring physics as the pointer approaches and push their neighbors apart. Labels, running dots, a launch bounce and arrow-key navigation included.

Installation

$ pnpm dlx shadcn@latest add @ballmac/dock

Usage

import { Dock, DockItem, DockSeparator } from "@/components/ballmac/dock"

The full example is in the Code tab above.

Examples

Vertical

Tuesday, September 29

9:41

API reference

<Dock>

PropTypeDefault
size

Resting size of each item in px.

number48
magnification

Size in px of the item right under the pointer (or keyboard focus).

number76
distance

How far in px from the pointer the magnification reaches.

number150
orientation

Lay the dock out in a row (bottom of the screen) or a column (side of the screen).

DockOrientation"horizontal"

<DockItem>

PropTypeDefault
label*

Name shown in the label above the item; also the accessible name.

string—
icon

The icon, drawn centered on the tile at about half its size.

React.ReactNode—
children

Custom tile content instead of `icon`.

React.ReactNode—
active

Shows the running indicator dot under the item.

booleanfalse
activeLabel

Text added to the accessible name when `active`, so the dot isn't the only signal.

string"running"
bounce

Bounce the item when it is clicked, like an app launching.

booleantrue
containerClassName

Classes for the item's outer wrapper, e.g. `max-sm:hidden` to drop an item on small screens. `className` styles the tile.

string—

Also accepts the standard attributes of its root element.

Accessibility

KeyAction
TabMoves focus into the dock (one tab stop) and out again
ArrowLeft / ArrowRight (ArrowUp / ArrowDown when vertical)Moves between items; the focused item magnifies and shows its label
Home / EndJumps to the first or last item
Enter / SpaceActivates the focused item

Use with AI

<Dock> is a role=toolbar row (or column with orientation="vertical") of <DockItem label icon /> buttons with cursor-proximity magnification; <DockSeparator /> draws the divider. Style each tile through DockItem's className (gradients, colors); icons are sized to about half the tile. With the shadcn MCP server set up (guide), ask your agent:

Add the Ballmac UI Dock (@ballmac/dock) to this project with the shadcn MCP, then use it where it fits.

Use it for

  • An app-launcher or quick-links bar on a Mac-flavored landing page or product hero
  • A floating navigation bar for a portfolio or dashboard with a handful of destinations
  • Showing off the apps or integrations a product ships with

Not for

  • Primary navigation with many text links (use a header or sidebar)
  • More than about 12 items, or anywhere it would need to scroll horizontally

Registry JSON: https://ui.ballmac.com/r/dock.json

Credits

Free to use in personal and commercial projects.