Spaces:
Sleeping
Sleeping
| import React from 'react'; | |
| import { FC } from 'react'; | |
| interface Props { | |
| modelNames: string[]; | |
| selectedModel: string; | |
| selectedModels: string[]; | |
| comparisonMode: boolean; | |
| onSelectModel: (model: string) => void; | |
| onToggleModel: (model: string) => void; | |
| } | |
| const ModelSelector: FC<Props> = ({ | |
| modelNames, | |
| selectedModel, | |
| selectedModels, | |
| comparisonMode, | |
| onSelectModel, | |
| onToggleModel, | |
| }) => ( | |
| <div className="bg-white rounded-lg shadow p-4 border"> | |
| <h3 className="font-semibold text-gray-800 mb-3"> | |
| {comparisonMode ? 'Select Models to Compare' : 'Select Model'} | |
| </h3> | |
| {comparisonMode ? ( | |
| <div className="space-y-2"> | |
| {modelNames.map(model => ( | |
| <label key={model} className="flex items-center space-x-2"> | |
| <input | |
| type="checkbox" | |
| checked={selectedModels.includes(model)} | |
| onChange={() => onToggleModel(model)} | |
| className="rounded border-gray-300 text-indigo-600 focus:ring-indigo-500" | |
| /> | |
| <span className="text-sm text-gray-700">{model}</span> | |
| </label> | |
| ))} | |
| </div> | |
| ) : ( | |
| <select | |
| value={selectedModel} | |
| onChange={e => onSelectModel(e.target.value)} | |
| className="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-indigo-500" | |
| > | |
| {modelNames.map(model => ( | |
| <option key={model} value={model}> | |
| {model} | |
| </option> | |
| ))} | |
| </select> | |
| )} | |
| </div> | |
| ); | |
| export default ModelSelector; | |