import React, { useState, useEffect, useCallback } from 'react'
import axios from 'axios'
import {
Wifi, WifiOff, Server, FileText, GitBranch,
Table2, Activity, TerminalSquare, Box, Settings, RefreshCw,
} from 'lucide-react'
import ConnectionPanel from './components/ConnectionPanel'
import DocumentManager from './components/DocumentManager'
import PipelineRunner from './components/PipelineRunner'
import QAPairViewer from './components/QAPairViewer'
import TrainingMonitor from './components/TrainingMonitor'
import Terminal from './components/Terminal'
import ModelManager from './components/ModelManager'
import ConfigEditor from './components/ConfigEditor'
const API = '' // vite proxy forwards /api → :8080
const NAV = [
{ id: 'connection', label: 'Connection', icon: Server },
{ id: 'documents', label: 'Documents', icon: FileText },
{ id: 'pipeline', label: 'Pipeline', icon: GitBranch },
{ id: 'pairs', label: 'QA Pairs', icon: Table2 },
{ id: 'training', label: 'Training', icon: Activity },
{ id: 'terminal', label: 'Terminal', icon: TerminalSquare },
{ id: 'models', label: 'Models', icon: Box },
{ id: 'config', label: 'Config', icon: Settings },
]
export default function App() {
const [active, setActive] = useState('connection')
const [connected, setConnected] = useState(false)
const [gpuInfo, setGpuInfo] = useState(null)
const [statusMsg, setStatusMsg] = useState('')
const fetchStatus = useCallback(async () => {
try {
const { data } = await axios.get(`${API}/api/status`)
setConnected(data.connected)
if (data.gpu?.gpus?.length) setGpuInfo(data.gpu.gpus[0])
} catch {
setConnected(false)
}
}, [])
useEffect(() => {
fetchStatus()
const id = setInterval(fetchStatus, 10000)
return () => clearInterval(id)
}, [fetchStatus])
const panels = {
connection: