import { useState } from 'react'; import { Cloud, ChevronDown, ChevronRight } from 'lucide-react'; export default function ComparisonSelector({ providers, selected, onSelectionChange }) { const [expandedProviders, setExpandedProviders] = useState({}); const toggleExpand = (providerId) => { setExpandedProviders(prev => ({ ...prev, [providerId]: !prev[providerId] })); }; const toggleModel = (modelId) => { if (selected.includes(modelId)) { onSelectionChange(selected.filter(id => id !== modelId)); } else { onSelectionChange([...selected, modelId]); } }; const toggleProvider = (provider) => { const providerModelIds = provider.models.map(m => m.id); const allSelected = providerModelIds.every(id => selected.includes(id)); if (allSelected) { onSelectionChange(selected.filter(id => !providerModelIds.includes(id))); } else { const newIds = providerModelIds.filter(id => !selected.includes(id)); onSelectionChange([...selected, ...newIds]); } }; if (!providers.length) { return (

Comparison Models

Configure API keys in .env to enable comparison providers

); } return (

Comparison Models

Select models to compare against

{[...providers].sort((a, b) => a.name.localeCompare(b.name)).map(provider => { const providerModelIds = provider.models.map(m => m.id); const allSelected = providerModelIds.every(id => selected.includes(id)); const selectedCount = providerModelIds.filter(id => selected.includes(id)).length; const isExpanded = expandedProviders[provider.id] === true; return (
{isExpanded && (
{provider.models.map(model => ( ))}
)}
); })}
); }