import { useState, useEffect, useCallback } from 'react'; import { Scan, Calendar, HelpCircle } from 'lucide-react'; import { Header } from './components/Header'; import { Tabs } from './components/Tabs'; import { ClassificationPage } from './pages/ClassificationPage'; import { GestationalAgePage } from './pages/GestationalAgePage'; import { HelpPage } from './pages/HelpPage'; import { ImageProvider } from './lib/ImageContext'; import { checkHealth, getFeedbackStats } from './lib/api'; const tabs = [ { id: 'classification', label: 'View Classification', icon: }, { id: 'gestational-age', label: 'Gestational Age', icon: }, { id: 'help', label: 'Help', icon: }, ]; function App() { const [activeTab, setActiveTab] = useState('classification'); const [isConnected, setIsConnected] = useState(false); const [feedbackStats, setFeedbackStats] = useState<{ total: number; correct: number; incorrect: number; } | null>(null); useEffect(() => { const checkConnection = async () => { const healthy = await checkHealth(); setIsConnected(healthy); }; checkConnection(); const interval = setInterval(checkConnection, 10000); return () => clearInterval(interval); }, []); // Load feedback stats const loadFeedbackStats = useCallback(async () => { try { const stats = await getFeedbackStats(); setFeedbackStats({ total: stats.total_feedback, correct: stats.correct_count, incorrect: stats.incorrect_count }); } catch { // Ignore errors - stats are optional } }, []); useEffect(() => { loadFeedbackStats(); }, [loadFeedbackStats]); return (
{/* Header - fixed height */}
{/* Tabs - fixed height */} {/* Main content - fills remaining space */}
{activeTab === 'classification' && } {activeTab === 'gestational-age' && } {activeTab === 'help' && }
{/* Footer - fixed height, always visible */}
); } export default App;