File size: 1,522 Bytes
ba7b442
 
a76942d
ba7b442
 
 
 
a76942d
 
 
 
 
 
 
 
 
 
ba7b442
 
 
 
 
a76942d
 
 
ba7b442
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import React, { useState, useEffect } from 'react';
import axios from 'axios';
import { FaRobot, FaSync } from 'react-icons/fa';

const ModelSelector: React.FC<{ selectedModel: string; onModelChange: (model: string) => void }> = ({ selectedModel, onModelChange }) => {
  const [models, setModels] = useState<any[]>([]);

  const load = () => {
    axios.get('/api/models').then(res => setModels(res.data)).catch(() => setModels([]));
  };

  useEffect(() => { load(); }, []);

  const refresh = async () => {
    await axios.post('/api/refresh-models');
    load();
  };

  return (
    <div style={{ padding: '8px 12px', borderBottom: '1px solid var(--border)' }}>
      <div style={{ display: 'flex', alignItems: 'center', gap: 6, marginBottom: 6, color: 'var(--text-secondary)', fontSize: 12 }}>
        <FaRobot /> ACTIVE MODEL
        <button onClick={refresh} style={{ marginLeft: 'auto', color: 'var(--text-secondary)', cursor: 'pointer' }} title="Refresh models from APIs">
          <FaSync size={12} />
        </button>
      </div>
      <select
        style={{ width: '100%', background: 'var(--bg-tertiary)', color: 'var(--text-primary)', border: '1px solid var(--border)', padding: '6px 8px', borderRadius: 6, outline: 'none', fontSize: 13 }}
        value={selectedModel}
        onChange={e => onModelChange(e.target.value)}
      >
        {models.map((m: any) => (
          <option key={m.id} value={m.id}>{m.name}</option>
        ))}
      </select>
    </div>
  );
};

export default ModelSelector;