import { CalendarClock, FileText, Layers, Maximize2, Sparkles, } from 'lucide-react' import { useTranslation } from 'react-i18next' import { cn } from '@/lib/utils' import { formatTokenCount, formatYearMonth, type ModelMetadata, } from '../lib/model-metadata' import type { Modality } from '../types' import { ModalityIcons } from './model-details-modalities' type QuickStatsProps = { metadata: ModelMetadata } type Stat = { key: string icon: React.ComponentType<{ className?: string }> label: string value: React.ReactNode hint?: string } function buildStats( metadata: ModelMetadata, t: (key: string) => string ): Stat[] { const stats: Stat[] = [ { key: 'context', icon: Layers, label: t('Context'), value: formatTokenCount(metadata.context_length), hint: t('Maximum input window'), }, ] if (metadata.max_output_tokens > 0) { stats.push({ key: 'max-output', icon: Maximize2, label: t('Max output'), value: formatTokenCount(metadata.max_output_tokens), hint: t('Maximum tokens per response'), }) } stats.push({ key: 'modalities', icon: FileText, label: t('Modalities'), value: ( ), }) if (metadata.knowledge_cutoff) { stats.push({ key: 'knowledge', icon: Sparkles, label: t('Knowledge cutoff'), value: formatYearMonth(metadata.knowledge_cutoff), }) } if (metadata.release_date) { stats.push({ key: 'release', icon: CalendarClock, label: t('Released'), value: formatYearMonth(metadata.release_date), }) } return stats } function ModalityFlow(props: { input: Modality[]; output: Modality[] }) { return ( ) } export function ModelDetailsQuickStats(props: QuickStatsProps) { const { t } = useTranslation() const stats = buildStats(props.metadata, t) return (
{stats.map((stat) => { const Icon = stat.icon return (
{stat.label} {stat.value} {stat.hint && ( {stat.hint} )}
) })}
) }