import React from 'react'; import { useTranslation } from 'react-i18next'; import { ChevronDown, ChevronRight } from 'lucide-react'; import type { ProviderStats } from '@/utils/provider-grouping'; import { clampQuotaPercentage } from '@/utils/quota-display'; interface ProviderGroupProps { stats: ProviderStats; isCollapsed: boolean; onToggleCollapse: () => void; getQuotaTextColorClass: (percentage: number) => string; getQuotaBarColorClass: (percentage: number) => string; formatQuotaLabel: (percentage: number) => string; formatResetTimeLabel: (resetTime?: string) => string; formatResetTimeTitle: (resetTime?: string) => string | undefined; leftLabel: string; } export const ProviderGroup: React.FC = ({ stats, isCollapsed, onToggleCollapse, getQuotaTextColorClass, getQuotaBarColorClass, formatQuotaLabel, formatResetTimeLabel, formatResetTimeTitle, leftLabel, }) => { const { t } = useTranslation(); const { providerInfo, visibleModels, avgPercentage, earliestReset } = stats; if (visibleModels.length === 0) { return null; } return (
{/* Provider Header */} {/* Individual model rows (shown when expanded) */} {!isCollapsed && (
{visibleModels.map((model, index) => (
{model.id.replace('models/', '')}
{formatResetTimeLabel(model.resetTime)}
{formatQuotaLabel(model.percentage)} {model.percentage > 0 && ( {leftLabel} )}
))}
)}
); };