/* Copyright (C) 2023-2026 QuantumNous This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . For commercial licensing, please contact support@quantumnous.com */ 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} )}
) })}
) }