Ballmac UI home

HUD

The macOS volume and brightness HUD: a dark frosted square with a big icon and a 16-segment bar, or a slim capsule with a smooth bar. Pops in, restarts its timer when the value changes, fades out and announces the new level.

Installation

$ pnpm dlx shadcn@latest add @ballmac/hud

Usage

import { Hud, useTransientHud } from "@/components/ballmac/hud"

The full example is in the Code tab above.

Examples

Capsule variant

API reference

PropTypeDefault
kind

What is being adjusted. Chooses the icon and the spoken name.

HudKind"volume"
value*

Level from 0 to 100.

number—
muted

Show a muted speaker instead of the level (volume only).

booleanfalse
visible*

Whether the HUD is on screen.

boolean—
onVisibleChange

Called with false when the HUD times out.

(visible: boolean) => void—
duration

How long the HUD stays after the last change, in milliseconds.

number1800
variant

"mac" is the dark square with a segmented bar; "pill" is a slim capsule with a smooth bar.

"mac" | "pill""mac"

Also accepts the standard attributes of its root element.

Accessibility

KeyAction
Screen readersA polite status message says the new level; the visual HUD is hidden from them
Reduced motionFades without scaling

Use with AI

<Hud kind="volume" value={60} visible={visible} onVisibleChange={setVisible} /> inside a relative container. useTransientHud() gives { visible, show, hide, onVisibleChange }. With the shadcn MCP server set up (guide), ask your agent:

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

Use it for

  • Keyboard-driven level changes in desktop UI demos
  • Transient feedback for hardware-style controls

Not for

  • Toasts and messages (toast)
  • Persistent controls (slider)

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

Credits

Free to use in personal and commercial projects.

Registry
shadcn/utils