# 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. |