Ballmac UI home

Mac Window

macOS window chrome: traffic lights whose glyphs appear on hover, a centered title or unified toolbar, an optional translucent sidebar with vibrancy, and active and inactive appearances.

Launch8 notes

September 29, 2026 at 9:41 AM

Launch checklist

Ship Tuesday morning. Keep the changelog short and lead with the menu bar redesign.

Installation

$ pnpm dlx shadcn@latest add @ballmac/mac-window

Usage

import { MacWindow, MacWindowContent, MacWindowControls, MacWindowMain, MacWindowSidebar, MacWindowSidebarItem, MacWindowTitleBar, MacWindowToolbarButton } from "@/components/ballmac/mac-window"

The full example is in the Code tab above.

Examples

Active and inactive

acme — zsh — 80×24

~/acme on main ❯ pnpm release

▸ Building universal binary…

▸ Signing with Developer ID…

✓ Notarized in 48s

✓ Acme-2.4.0.dmg uploaded

~/acme ❯

A

Acme

Version 2.4.0 (2408)

Copyright © 2026 Acme Inc.

API reference

<MacWindow>

PropTypeDefault
active

Active (key) window: colored traffic lights and full-strength title. Inactive windows gray out, as on macOS.

booleantrue
onClose

Called by the red close button. Without a handler the light is drawn but not focusable.

() => void—
onMinimize

Called by the yellow minimize button.

() => void—
onZoom

Called by the green zoom (full screen) button.

() => void—

<MacWindowControls>

PropTypeDefault
labels

Accessible labels for the three buttons.

{ close?: string; minimize?: string; zoom?: string }—
closestring—
minimizestring—
zoomstring—

<MacWindowTitleBar>

PropTypeDefault
title

Window title, centered in the bar.

React.ReactNode—
controls

Draw the traffic lights at the leading edge. Turn off when a MacWindowSidebar already shows them.

booleantrue

<MacWindowSidebar>

PropTypeDefault
controls

Draw the traffic lights at the top of the sidebar.

booleantrue

<MacWindowSidebarItem>

PropTypeDefault
selected

Marks the selected row (sets aria-current).

booleanfalse

Also accepts the standard attributes of its root element.

Accessibility

KeyAction
TabReaches the traffic lights only when onClose, onMinimize or onZoom handlers are set, then toolbar and sidebar buttons
Enter / SpaceActivates the focused traffic light or button

Use with AI

Frame content as a Mac app window. Simple: <MacWindow><MacWindowTitleBar title="…" /><MacWindowContent>…</MacWindowContent></MacWindow>. Sidebar layout: <MacWindow><MacWindowSidebar>rows…</MacWindowSidebar><MacWindowMain><MacWindowTitleBar controls={false} title>toolbar buttons</MacWindowTitleBar><MacWindowContent/></MacWindowMain></MacWindow>. Size the window with className. With the shadcn MCP server set up (guide), ask your agent:

Add the Ballmac UI Mac Window (@ballmac/mac-window) to this project with the shadcn MCP, then use it where it fits.

Use it for

  • Product screenshots and mockups of a Mac app on a landing page
  • Framing a code sample, terminal session or settings panel so it reads as desktop software
  • Interactive app demos where the sidebar and toolbar actually work

Not for

  • Modal dialogs in a web app (use dialog)
  • Browser mockups; this draws native window chrome, not an address bar

Registry JSON: https://ui.ballmac.com/r/mac-window.json

Credits

Free to use in personal and commercial projects.

npm
None