import { useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { Card } from '@/components/ui/Card'; import { Button } from '@/components/ui/Button'; import { Select } from '@/components/ui/Select'; import styles from '@/pages/UsagePage.module.scss'; export interface ChartLineSelectorProps { chartLines: string[]; modelNames: string[]; maxLines?: number; onChange: (lines: string[]) => void; } export function ChartLineSelector({ chartLines, modelNames, maxLines = 9, onChange }: ChartLineSelectorProps) { const { t } = useTranslation(); const handleAdd = () => { if (chartLines.length >= maxLines) return; const unusedModel = modelNames.find((m) => !chartLines.includes(m)); if (unusedModel) { onChange([...chartLines, unusedModel]); } else { onChange([...chartLines, 'all']); } }; const handleRemove = (index: number) => { if (chartLines.length <= 1) return; const newLines = [...chartLines]; newLines.splice(index, 1); onChange(newLines); }; const handleChange = (index: number, value: string) => { const newLines = [...chartLines]; newLines[index] = value; onChange(newLines); }; const options = useMemo( () => [ { value: 'all', label: t('usage_stats.chart_line_all') }, ...modelNames.map((name) => ({ value: name, label: name })) ], [modelNames, t] ); return ( {chartLines.length}/{maxLines} } >
{chartLines.map((line, index) => (
{t(`usage_stats.chart_line_label_${index + 1}`)}