import * as Tooltip from '@radix-ui/react-tooltip' import { Check, CopyIcon } from 'lucide-react' import { useEffect, useState } from 'react' import { ChatAssistantMessage } from '../../types/chat' import { calculateLLMCost } from '../../utils/price-calculator' import LLMResponseInfoPopover from './LLMResponseInfoPopover' function CopyButton({ message }: { message: ChatAssistantMessage }) { const [copied, setCopied] = useState(false) const handleCopy = async () => { await navigator.clipboard.writeText(message.content) setCopied(true) setTimeout(() => { setCopied(false) }, 1500) } return ( Copy message ) } function LLMResponesInfoButton({ message }: { message: ChatAssistantMessage }) { const [cost, setCost] = useState(0); useEffect(() => { async function calculateCost() { if (!message.metadata?.model || !message.metadata?.usage) { setCost(0); return; } const calculatedCost = await calculateLLMCost({ model: message.metadata.model, usage: message.metadata.usage, }); setCost(calculatedCost); } calculateCost(); }, [message]); return (
View details
) } export default function AssistantMessageActions({ message, }: { message: ChatAssistantMessage }) { return (
) }