Artifact

A container component for displaying generated content like code, documents, or other outputs with built-in actions.

The Artifact component provides a structured container for displaying generated content like code, documents, or other outputs with built-in header actions.

See scripts/artifact.tsx for this example.

Installation

npx ai-elements@latest add artifact

Features

  • Structured container with header and content areas
  • Built-in header with title and description support
  • Flexible action buttons with tooltips
  • Customizable styling for all subcomponents
  • Support for close buttons and action groups
  • Clean, modern design with border and shadow
  • Responsive layout that adapts to content
  • TypeScript support with proper type definitions
  • Composable architecture for maximum flexibility

Examples

With Code Display

See scripts/artifact.tsx for this example.

Props

<Artifact />

PropTypeDefaultDescription
...propsReact.HTMLAttributes<HTMLDivElement>-Any other props are spread to the underlying div element.

<ArtifactHeader />

PropTypeDefaultDescription
...propsReact.HTMLAttributes<HTMLDivElement>-Any other props are spread to the underlying div element.

<ArtifactTitle />

PropTypeDefaultDescription
...propsReact.HTMLAttributes<HTMLParagraphElement>-Any other props are spread to the underlying paragraph element.

<ArtifactDescription />

PropTypeDefaultDescription
...propsReact.HTMLAttributes<HTMLParagraphElement>-Any other props are spread to the underlying paragraph element.

<ArtifactActions />

PropTypeDefaultDescription
...propsReact.HTMLAttributes<HTMLDivElement>-Any other props are spread to the underlying div element.

<ArtifactAction />

PropTypeDefaultDescription
tooltipstring-Tooltip text to display on hover.
labelstring-Screen reader label for the action button.
iconLucideIcon-Lucide icon component to display in the button.
...propsReact.ComponentProps<typeof Button>-Any other props are spread to the underlying shadcn/ui Button component.

<ArtifactClose />

PropTypeDefaultDescription
...propsReact.ComponentProps<typeof Button>-Any other props are spread to the underlying shadcn/ui Button component.

<ArtifactContent />

PropTypeDefaultDescription
...propsReact.HTMLAttributes<HTMLDivElement>-Any other props are spread to the underlying div element.