Ballmac UI home

Snippet Tabs

Request examples in several languages with built-in highlighting, a remembered language choice shared across the page, line numbers, copy, and {{variables}} filled with real values.

curl https://api.example.com/v1/customers \  -X POST \  -H "Authorization: Bearer $API_KEY" \  -H "Content-Type: application/json" \  -d '{ "email": "ada@example.com", "plan": "team" }'

Installation

$ pnpm dlx shadcn@latest add @ballmac/snippet-tabs

Usage

import { SnippetTabs } from "@/components/ballmac/snippet-tabs"

The full example is in the Code tab above.

Examples

With your API key filled in

curl https://api.example.com/v1/projects/prj_8f3a1c92e7/deploys \  -H "Authorization: Bearer sk_test_EXAMPLE_NOT_REAL"

API reference

PropTypeDefault
snippets*

One tab per language.

Snippet[]—
title

Heading on the left of the tab bar, such as "Create a customer".

string—
defaultValue

Label of the tab open at first.

string—
value

Controlled open tab (a label).

string—
onValueChange

Called with the label of the newly selected tab.

(label: string) => void—
storageKey

Remember the reader's language in localStorage under this key. Every instance sharing the key switches together.

string—
variables

Values for `{{name}}` placeholders in the code, for example the viewer's API key.

Record<string, string>—
lineNumbers

Show line numbers.

booleanfalse
bodyClassName

Classes for the scrolling code area, for example a max height.

string—

Also accepts the standard attributes of its root element.

Accessibility

KeyAction
ArrowLeft / ArrowRightMoves between languages
TabReaches Copy and the scrollable code, which is a named region
Screen readersTab list named by the title; each panel is a labelled region

Use with AI

snippets is [{ label, code, language? }]. Language comes from the label (cURL, Python, Go, JavaScript). storageKey remembers the reader's pick and syncs every instance. variables replaces {{name}} in code and in what Copy puts on the clipboard. With the shadcn MCP server set up (guide), ask your agent:

Add the Ballmac UI Snippet Tabs (@ballmac/snippet-tabs) to this project with the shadcn MCP, then use it where it fits.

Use it for

  • API docs that show one call in several languages
  • Getting-started pages where code should use the viewer's own key

Not for

  • Package manager commands (install-tabs)
  • One file per tab (code-block tabs)

Registry JSON: https://ui.ballmac.com/r/snippet-tabs.json

Credits

Free to use in personal and commercial projects.