File size: 1,574 Bytes
1af45d7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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;