Ballmac UI home

Artifact Panel

A side panel for things an assistant generates: Preview and Code tabs, version stepping, copy and download, a streaming state and a close button, with the rendered result in your own slot.

Counter button

React component

v3 of 3
Clicked 0 times

Installation

$ pnpm dlx shadcn@latest add @ballmac/artifact-panel

Usage

import { ArtifactPanel } from "@/components/ballmac/artifact-panel"

The full example is in the Code tab above.

Examples

Writing and versions

Release notes

Writing…

release-notes.mdmd

API reference

PropTypeDefault
title*

Name of the generated thing, such as "Pricing table".

string—
kind

Kind of artifact, shown under the title, such as "React component".

string—
icon

Icon in the header tile.

React.ReactNode—
code

Source text. Shown in the Code tab and used for Copy and Download.

string—
filename

File name for Download and the code header, such as "pricing-table.tsx".

string—
language

Language label for the code, such as "tsx".

string—
children

The rendered result. Put an iframe, a component or a document here.

React.ReactNode—
versions

How many versions exist. With more than one, arrows to step through them appear.

number1
version

Which version is shown, starting at 1 (controlled).

number—
onVersionChange

Called when the version changes.

(version: number) => void—
streaming

True while the model is still writing. Shows a progress edge and disables copy and download.

booleanfalse
defaultTab

Tab shown first.

"preview" | "code""preview"
onClose

Adds a close button.

() => void—
onCopy

Called after the code was copied.

() => void—
actions

Extra header actions, placed before Copy.

React.ReactNode—
previewClassName

Classes for the preview canvas.

string—

Also accepts the standard attributes of its root element.

Accessibility

KeyAction
ArrowLeft / ArrowRightSwitches between Preview and Code when the tabs have focus
TabReaches version arrows, copy, download, close, and the scrollable content
Screen readersRegion named by the title; version changes are announced politely

Use with AI

title, kind, icon, code, filename, language and children as the preview. versions > 1 adds steppers (version/onVersionChange). streaming shows a progress edge and disables copy and download. onClose adds a close button. With the shadcn MCP server set up (guide), ask your agent:

Add the Ballmac UI Artifact Panel (@ballmac/artifact-panel) to this project with the shadcn MCP, then use it where it fits.

Use it for

  • Code, documents or designs a model produced next to the chat
  • Anything users iterate on in versions

Not for

  • Showing code in the chat; use code-block
  • Generic tabs; use tabs

Registry JSON: https://ui.ballmac.com/r/artifact-panel.json

Credits

Free to use in personal and commercial projects.