import * as Tooltip from '@radix-ui/react-tooltip'
import { Check, CopyIcon } from 'lucide-react'
import { useEffect, useState } from 'react'
import { useSettings } from '../../contexts/SettingsContext'
import { t } from '../../lang/helpers'
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 (
{t('chat.reactMarkdown.copyMsg')}
)
}
function LLMResponesInfoButton({ message }: { message: ChatAssistantMessage }) {
const [cost, setCost] = useState(0);
const { settings } = useSettings();
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,
settings: settings,
});
setCost(calculatedCost);
}
calculateCost();
}, [message, settings]);
return (
{t('chat.reactMarkdown.viewDetails')}
)
}
export default function AssistantMessageActions({
message,
}: {
message: ChatAssistantMessage
}) {
return (
)
}