"use client" import { ResponsiveContainer, ComposedChart, CartesianGrid, XAxis, YAxis, Tooltip, Legend, Bar, Line } from 'recharts' import { DailyData, TimeRangeKey } from '@/lib/types' import { buildTokenCompositionData, formatAxisLabel, formatTooltipDate } from './utils' import type { ToolTheme } from '@/app/ai/theme' const formatWithUnit = (value: number): string => { if (value >= 1000) { return `${(value / 1000).toFixed(1)}M` } else if (value >= 1) { return `${value.toFixed(value >= 100 ? 0 : 1)}K` } else { return value.toFixed(2) } } const formatTooltipValue = (value: number, dataKey: string | undefined): string => { if (dataKey === 'cacheTokens') { if (value >= 1000) { return `${(value / 1000).toFixed(2)}B tokens` } else if (value >= 1) { return `${value.toFixed(2)}M tokens` } else { return `${(value * 1000).toFixed(0)}K tokens` } } else { if (value >= 1000) { return `${(value / 1000).toFixed(2)}M tokens` } else if (value >= 1) { return `${value.toFixed(1)}K tokens` } else { return `${(value * 1000).toFixed(0)} tokens` } } } interface TokenCompositionProps { daily: DailyData[] theme: ToolTheme timeRange: TimeRangeKey } export default function TokenComposition({ daily, theme, timeRange }: TokenCompositionProps) { const tokenCompositionData = buildTokenCompositionData(daily) return (

Token Composition

formatAxisLabel(String(value), timeRange)} interval={timeRange === '7d' ? 0 : undefined} tickMargin={12} minTickGap={12} /> formatTooltipValue(value, props?.dataKey)} labelFormatter={(value: string) => formatTooltipDate(String(value))} />
) }