Ballmac UI home

Split View

A master and detail layout with a keyboard-resizable divider. Panes sit side by side in wide containers and stack with a Back button in narrow ones.

Inbox

Installation

$ pnpm dlx shadcn@latest add @ballmac/split-view

Usage

import { SplitView, SplitViewList, SplitViewDetail, SplitViewBack, useSplitView } from "@/components/ballmac/split-view"

The full example is in the Code tab above.

Examples

Stacked on narrow

API reference

<SplitView>

PropTypeDefault
detailOpen

Controlled: show the detail pane when the container is narrow.

boolean—
defaultDetailOpen

Initial state when uncontrolled.

booleanfalse
onDetailOpenChange

Called when the detail pane opens or closes on narrow screens.

(open: boolean) => void—
listWidth

Initial width of the list pane in pixels when both panes show.

number300
minListWidth

Smallest width the list pane can be dragged to.

number220
maxListWidth

Largest width the list pane can be dragged to.

number520

<SplitViewPane>

PropTypeDefault
label

Accessible name of the pane.

string—

Also accepts the standard attributes of its root element.

Accessibility

KeyAction
ArrowLeft / ArrowRightResize the list from the divider; Shift for larger steps; Home and End for the limits
TabBack button appears only when panes stack
Screen readersPanes are labelled regions; the divider is a separator with value bounds

Use with AI

SplitView > SplitViewList, SplitViewDetail and SplitViewBack. Use useSplitView().setDetailOpen(true) when an item is chosen. Responds to its own width, not the screen's. With the shadcn MCP server set up (guide), ask your agent:

Add the Ballmac UI Split View (@ballmac/split-view) to this project with the shadcn MCP, then use it where it fits.

Use it for

  • Mail, files and settings screens
  • Any list that opens a detail

Not for

  • User-arranged dock panels; use resizable
  • Overlay details; use sheet or drawer

Registry JSON: https://ui.ballmac.com/r/split-view.json

Credits

Free to use in personal and commercial projects.