import { useState, useEffect } from 'react' import { CompanyTable } from './components/CompanyTable' import { ContactsTable } from './components/ContactsTable' // NEW import { ImportWizard } from './components/ImportWizard' import { Inspector } from './components/Inspector' import { RoboticsSettings } from './components/RoboticsSettings' import { LayoutDashboard, UploadCloud, RefreshCw, Settings, Users, Building, Sun, Moon, Activity } from 'lucide-react' import clsx from 'clsx' // Base URL detection (Production vs Dev) const API_BASE = import.meta.env.BASE_URL === '/ce/' ? '/ce/api' : '/api'; function App() { const [refreshKey, setRefreshKey] = useState(0) const [isImportOpen, setIsImportOpen] = useState(false) const [isSettingsOpen, setIsSettingsOpen] = useState(false) const [selectedCompanyId, setSelectedCompanyId] = useState(null) const [selectedContactId, setSelectedContactId] = useState(null) const [backendVersion, setBackendVersion] = useState(''); // Navigation State const [view, setView] = useState<'companies' | 'contacts'>('companies') // Theme State const [theme, setTheme] = useState<'dark' | 'light'>(() => { if (typeof window !== 'undefined' && window.localStorage) { return localStorage.getItem('theme') as 'dark' | 'light' || 'dark' } return 'dark' }) useEffect(() => { if (theme === 'dark') { document.documentElement.classList.add('dark') } else { document.documentElement.classList.remove('dark') } localStorage.setItem('theme', theme) }, [theme]) useEffect(() => { fetch(`${API_BASE}/health`) .then(res => res.json()) .then(data => setBackendVersion(data.version || '')) .catch(() => setBackendVersion('N/A')) }, []) const toggleTheme = () => setTheme(prev => prev === 'dark' ? 'light' : 'dark') const handleCompanySelect = (id: number) => { setSelectedCompanyId(id) setSelectedContactId(null) } const handleCloseInspector = () => { setSelectedCompanyId(null) setSelectedContactId(null) } return (
setIsImportOpen(false)} apiBase={API_BASE} onSuccess={() => setRefreshKey(k => k + 1)} /> setIsSettingsOpen(false)} apiBase={API_BASE} /> {/* Header */}

Company Explorer

ROBOTICS EDITION {backendVersion && v{backendVersion}}

{/* View Switcher */}
{view === 'companies' && ( )}
{/* Mobile Nav */}
{/* Main Content */}
{view === 'companies' ? ( setIsImportOpen(true)} /> ) : ( { setSelectedCompanyId(id); setView('companies'); }} onContactClick={(companyId, contactId) => { setSelectedCompanyId(companyId); setSelectedContactId(contactId); // setView('companies')? No, we stay in context of 'Contacts' but Inspector opens }} /> )}
) } export default App