{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "artifact",
  "registryDependencies": [
    "https://taki-ui.com/r/button.json",
    "https://taki-ui.com/r/tooltip.json"
  ],
  "files": [
    {
      "path": "registry/new-york/ai-elements/artifact.tsx",
      "content": "\"use client\"\n\nimport type { ComponentProps, HTMLAttributes } from \"react\"\nimport { XIcon, type LucideIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/new-york/ui/button\"\nimport { Tooltip, TooltipTrigger } from \"@/registry/new-york/ui/tooltip\"\n\nexport type ArtifactProps = HTMLAttributes<HTMLDivElement>\n\nexport const Artifact = ({ className, ...props }: ArtifactProps) => (\n  <div\n    className={cn(\n      \"bg-background flex flex-col overflow-hidden rounded-lg border shadow-sm\",\n      className\n    )}\n    {...props}\n  />\n)\n\nexport type ArtifactHeaderProps = HTMLAttributes<HTMLDivElement>\n\nexport const ArtifactHeader = ({\n  className,\n  ...props\n}: ArtifactHeaderProps) => (\n  <div\n    className={cn(\n      \"bg-muted/50 flex items-center justify-between border-b px-4 py-3\",\n      className\n    )}\n    {...props}\n  />\n)\n\nexport type ArtifactCloseProps = ComponentProps<typeof Button>\n\nexport const ArtifactClose = ({\n  className,\n  children,\n  size = \"sm\",\n  variant = \"ghost\",\n  ...props\n}: ArtifactCloseProps) => (\n  <Button\n    className={cn(\n      \"text-muted-foreground hover:text-foreground size-8 p-0\",\n      className\n    )}\n    size={size}\n    type=\"button\"\n    variant={variant}\n    {...props}\n  >\n    {children ?? <XIcon className=\"size-4\" />}\n    <span className=\"sr-only\">Close</span>\n  </Button>\n)\n\nexport type ArtifactTitleProps = HTMLAttributes<HTMLParagraphElement>\n\nexport const ArtifactTitle = ({ className, ...props }: ArtifactTitleProps) => (\n  <p\n    className={cn(\"text-foreground text-sm font-medium\", className)}\n    {...props}\n  />\n)\n\nexport type ArtifactDescriptionProps = HTMLAttributes<HTMLParagraphElement>\n\nexport const ArtifactDescription = ({\n  className,\n  ...props\n}: ArtifactDescriptionProps) => (\n  <p className={cn(\"text-muted-foreground text-sm\", className)} {...props} />\n)\n\nexport type ArtifactActionsProps = HTMLAttributes<HTMLDivElement>\n\nexport const ArtifactActions = ({\n  className,\n  ...props\n}: ArtifactActionsProps) => (\n  <div className={cn(\"flex items-center gap-1\", className)} {...props} />\n)\n\nexport type ArtifactActionProps = ComponentProps<typeof Button> & {\n  tooltip?: string\n  label?: string\n  icon?: LucideIcon\n}\n\nexport const ArtifactAction = ({\n  tooltip,\n  label,\n  icon: Icon,\n  children,\n  className,\n  size = \"sm\",\n  variant = \"ghost\",\n  ...props\n}: ArtifactActionProps) => {\n  const button = (\n    <Button\n      className={cn(\n        \"text-muted-foreground hover:text-foreground size-8 p-0\",\n        className\n      )}\n      size={size}\n      type=\"button\"\n      variant={variant}\n      {...props}\n    >\n      {Icon ? <Icon className=\"size-4\" /> : children}\n      <span className=\"sr-only\">{label || tooltip}</span>\n    </Button>\n  )\n\n  if (tooltip) {\n    return (\n      <TooltipTrigger>\n        {button}\n        <Tooltip>{tooltip}</Tooltip>\n      </TooltipTrigger>\n    )\n  }\n\n  return button\n}\n\nexport type ArtifactContentProps = HTMLAttributes<HTMLDivElement>\n\nexport const ArtifactContent = ({\n  className,\n  ...props\n}: ArtifactContentProps) => (\n  <div className={cn(\"flex-1 overflow-auto p-4\", className)} {...props} />\n)\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}