import { createMemo, type Component } from "solid-js" import { getSessionInfo } from "../../stores/sessions" import { formatTokenTotal } from "../../lib/formatters" import { useI18n } from "../../lib/i18n" interface ContextUsagePanelProps { instanceId: string sessionId: string class?: string } const chipClass = "inline-flex items-center gap-1 rounded-full border border-base px-2 py-0.5 text-xs text-primary" const chipLabelClass = "uppercase text-[10px] tracking-wide text-muted" const ContextUsagePanel: Component = (props) => { const { t } = useI18n() const info = createMemo( () => getSessionInfo(props.instanceId, props.sessionId) ?? { cost: 0, contextWindow: 0, isSubscriptionModel: false, inputTokens: 0, outputTokens: 0, reasoningTokens: 0, actualUsageTokens: 0, modelOutputLimit: 0, contextAvailableTokens: null, }, ) const inputTokens = createMemo(() => info().inputTokens ?? 0) const outputTokens = createMemo(() => info().outputTokens ?? 0) const costValue = createMemo(() => { const value = info().isSubscriptionModel ? 0 : info().cost return value > 0 ? value : 0 }) const costDisplay = createMemo(() => `$${costValue().toFixed(2)}`) return (
{t("contextUsagePanel.labels.input")} {formatTokenTotal(inputTokens())}
{t("contextUsagePanel.labels.output")} {formatTokenTotal(outputTokens())}
{t("contextUsagePanel.labels.cost")} {costDisplay()}
) } export default ContextUsagePanel