"use client"; import { analytics, type AnalyticsProperties } from "@/lib/analytics"; import { cn } from "@/lib/utils"; import { CheckIcon, CopyIcon, SparklesIcon, TerminalIcon } from "lucide-react"; import { useState } from "react"; import { Menu } from "@base-ui/react/menu"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, } from "@/components/ui/dropdown-menu"; import { SETUP_PROMPT } from "./setup-prompt"; export function CopyCommandButton({ command = "npx assistant-ui init", analyticsContext, withPromptOption = false, }: { command?: string; analyticsContext?: AnalyticsProperties; withPromptOption?: boolean; }) { const [copied, setCopied] = useState(false); const flash = () => { setCopied(true); setTimeout(() => setCopied(false), 2000); }; const copyCommand = () => { navigator.clipboard.writeText(command); analytics.cta.npmCommandCopied(command, analyticsContext); flash(); }; const copyPrompt = () => { navigator.clipboard.writeText(SETUP_PROMPT); analytics.cta.promptCopied(analyticsContext); flash(); }; const wrapperClassName = "group border-border/60 bg-muted/30 hover:border-border hover:bg-muted/50 inline-flex w-fit items-center gap-1.5 rounded-md border px-3 py-1.5 font-mono text-sm transition-all"; const copyIcon = (
); if (!withPromptOption) { return ( ); } return ( } > $ {command}
{copyIcon}
Copy CLI command Copy coding agent prompt
); }