import { useEffect, useState } from 'react' import { LayoutDashboard, BookOpen, FileText, Settings as SettingsIcon } from 'lucide-react' import Dashboard from './pages/Dashboard' import SettingsPage from './pages/Settings' import LogsPage from './pages/Logs' import AnleitungPage from './pages/Anleitung' import FirstRunWizard from './components/FirstRunWizard' import { api } from './lib/api' type Page = 'dashboard' | 'anleitung' | 'logs' | 'settings' export default function App() { const [currentPage, setCurrentPage] = useState('dashboard') // First-Run: solange der Einrichtungs-Assistent nicht abgeschlossen ist, zeigen wir // ihn statt des Dashboards. null = /setup noch nicht geprüft (kein Aufblitzen). const [setupDone, setSetupDone] = useState(null) useEffect(() => { api.get('/setup') .then((r) => setSetupDone(Boolean(r.data?.done))) .catch(() => setSetupDone(true)) // API/Setup nicht erreichbar → nicht blockieren }, []) const navItems: { id: Page; label: string; icon: any }[] = [ { id: 'dashboard', label: 'Dashboard', icon: LayoutDashboard }, { id: 'anleitung', label: 'Anleitung', icon: BookOpen }, { id: 'logs', label: 'Logs', icon: FileText }, { id: 'settings', label: 'Einstellungen', icon: SettingsIcon }, ] if (setupDone === null) return null // kurzer Moment, bis /setup geantwortet hat if (!setupDone) return setSetupDone(true)} /> return (
{/* Top Header Navigation Bar */}
{/* Logo */}
setCurrentPage('dashboard')}> RIPPY CINEMA OS
{/* Central Nav Tabs */}
ONLINE
{/* Main Content Viewport */}
{currentPage === 'dashboard' && } {currentPage === 'anleitung' && } {currentPage === 'logs' && } {currentPage === 'settings' && }
) }