Registry
Addresses, file locations, dependencies and the JSON format of the @ballmac shadcn registry.
On this page
Ballmac UI is a standard shadcn registry. Everything the shadcn CLI can do with a registry, it can do with @ballmac.
Addresses
Every item has a permanent name and a JSON URL:
pnpm dlx shadcn@latest add @ballmac/button
pnpm dlx shadcn@latest add https://ui.ballmac.com/r/button.jsonnpx shadcn@latest add @ballmac/button
npx shadcn@latest add https://ui.ballmac.com/r/button.jsonyarn dlx shadcn@latest add @ballmac/button
yarn dlx shadcn@latest add https://ui.ballmac.com/r/button.jsonbun x shadcn@latest add @ballmac/button
bun x shadcn@latest add https://ui.ballmac.com/r/button.jsonThe first form uses the namespace: @ballmac is in the official shadcn registry directory, so it needs no setup. The second works anywhere.
Search and inspect
pnpm dlx shadcn@latest search @ballmac -q "chat"
pnpm dlx shadcn@latest view @ballmac/prompt-inputnpx shadcn@latest search @ballmac -q "chat"
npx shadcn@latest view @ballmac/prompt-inputyarn dlx shadcn@latest search @ballmac -q "chat"
yarn dlx shadcn@latest view @ballmac/prompt-inputbun x shadcn@latest search @ballmac -q "chat"
bun x shadcn@latest view @ballmac/prompt-inputsearch lists everything in @ballmac that matches. view shows an item's files, dependencies and docs.
Compare before updating
Components are your code once installed, so updates never happen silently. To see what changed in a newer version, compare before overwriting:
pnpm dlx shadcn@latest add @ballmac/button --diff
pnpm dlx shadcn@latest add @ballmac/button --overwritenpx shadcn@latest add @ballmac/button --diff
npx shadcn@latest add @ballmac/button --overwriteyarn dlx shadcn@latest add @ballmac/button --diff
yarn dlx shadcn@latest add @ballmac/button --overwritebun x shadcn@latest add @ballmac/button --diff
bun x shadcn@latest add @ballmac/button --overwriteTo merge new versions into edited copies instead, see Update components without losing your edits.
Where files go
- Components:
components/ballmac/, which respects yourcomponentsalias andsrc/folder - Blocks:
components/ballmac/blocks/<name>/ - Hooks and helpers:
hooks/ballmac/,lib/ballmac/
Ballmac UI never writes to components/ui, so it can't overwrite your shadcn/ui components.
Dependencies
Each item declares the npm packages it imports and the registry items it builds on, for example @ballmac/motion-presets or shadcn's utils. The CLI installs them for you. Every build checks that declared dependencies match the actual imports.
JSON format
Items follow the official shadcn registry schema. The full index is at ui.ballmac.com/r/registry.json. Each item's meta adds Ballmac fields for tools and agents: tier, tags, version, when to use it, what it composes with, and keyboard notes.
Search
shadcn search @ballmac --query button returns ranked results from our server instead of downloading the whole 1,600-item catalog. The CLI sends q, type, limit and offset to /r/registry.json and gets back the matching items with a pagination object:
curl "https://ui.ballmac.com/r/registry.json?q=data+grid&type=registry:ui&limit=5"curl "https://ui.ballmac.com/r/registry.json?q=data+grid&type=registry:ui&limit=5"curl "https://ui.ballmac.com/r/registry.json?q=data+grid&type=registry:ui&limit=5"curl "https://ui.ballmac.com/r/registry.json?q=data+grid&type=registry:ui&limit=5"Components rank ahead of blocks, and blocks ahead of examples, when two items match equally well. Every word of the query has to match something in the name, title, tags, category or description. Without any of those parameters the response is the full catalog, as before, so older clients are unaffected.
The same data is available as a JSON API, and as llms.txt for assistants.