# Sandbox
A collapsible container for displaying AI-generated code and output in chat interfaces.
The `Sandbox` component provides a structured way to display AI-generated code alongside its execution output in chat conversations. It features a collapsible container with status indicators and tabbed navigation between code and output views. It's designed to be used with `CodeBlock` for displaying code and `StackTrace` for displaying errors.
See `scripts/sandbox.tsx` for this example.
## Installation
```bash
npx ai-elements@latest add sandbox
```
## Features
- Collapsible container with smooth animations
- Status badges showing execution state (Pending, Running, Completed, Error)
- Tabs for Code and Output views
- Syntax-highlighted code display
- Copy button for easy code sharing
- Works with AI SDK tool state patterns
## Usage with AI SDK
The Sandbox component integrates with the AI SDK's tool state to show code generation progress:
```tsx title="components/code-sandbox.tsx"
"use client";
import type { ToolUIPart } from "ai";
import {
Sandbox,
SandboxContent,
SandboxHeader,
SandboxTabContent,
SandboxTabs,
SandboxTabsBar,
SandboxTabsList,
SandboxTabsTrigger,
} from "@/components/ai-elements/sandbox";
import { CodeBlock } from "@/components/ai-elements/code-block";
type CodeSandboxProps = {
toolPart: ToolUIPart;
};
export const CodeSandbox = ({ toolPart }: CodeSandboxProps) => {
const code = toolPart.input?.code ?? "";
const output = toolPart.output?.logs ?? "";
return (
Code
Output
);
};
```
## Props
### ``
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `...props` | `React.ComponentProps` | - | Any other props are spread to the underlying Collapsible component. |
### ``
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `title` | `string` | `undefined` | The title displayed in the header (e.g., filename). |
| `state` | `ToolUIPart[` | Required | The current execution state, used to display the appropriate status badge. |
| `className` | `string` | - | Additional CSS classes for the header. |
### ``
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `...props` | `React.ComponentProps` | - | Any other props are spread to the CollapsibleContent. |
### ``
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `...props` | `React.ComponentProps` | - | Any other props are spread to the underlying Tabs component. |
### ``
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `...props` | `React.HTMLAttributes` | - | Any other props are spread to the container div. |
### ``
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `...props` | `React.ComponentProps` | - | Any other props are spread to the underlying TabsList component. |
### ``
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `...props` | `React.ComponentProps` | - | Any other props are spread to the underlying TabsTrigger component. |
### ``
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `...props` | `React.ComponentProps` | - | Any other props are spread to the underlying TabsContent component. |