import React, { useEffect, useState } from 'react' import Login from './components/Login' import Overview from './components/Overview' import StopsManager from './components/StopsManager' import LinkStop from './components/LinkStop' import BusLinesManager from './components/BusLinesManager' import FleetManager from './components/FleetManager' import ScheduleMaker from './components/ScheduleMaker' import ErrorLogViewer from './components/ErrorLogViewer' import { IconAlert, IconBus, IconCalendar, IconGrid, IconLink, IconLogout, IconMapPin, IconRoute } from './components/icons' const SECTIONS = [ { id: 'overview', label: 'Overzicht', eyebrow: 'Operations', title: 'Dagelijks overzicht', desc: 'Vloot, netwerk en dienstrooster in één oogopslag.', icon: IconGrid }, { id: 'stops', label: 'Haltes', eyebrow: 'Netwerkbeheer', title: 'Haltes', desc: 'Maak herbruikbare haltes aan en bewerk ze.', icon: IconMapPin }, { id: 'lines', label: 'Buslijnen', eyebrow: 'Netwerkbeheer', title: 'Buslijnen', desc: 'Definieer lijnen tussen start- en eindhalte.', icon: IconRoute }, { id: 'routes', label: 'Lijnroutes', eyebrow: 'Netwerkbeheer', title: 'Stops per lijn', desc: 'Koppel haltes aan lijnen en bepaal de volgorde.', icon: IconLink }, { id: 'fleet', label: 'Vloot', eyebrow: 'Vlootbeheer', title: 'Vloot', desc: 'Beheer de voertuigen die deel uitmaken van de vloot.', icon: IconBus }, { id: 'schedules', label: 'Diensten', eyebrow: 'Planning', title: 'Dienstenplanning', desc: 'Plan wekelijkse schema’s en vaste diensten.', icon: IconCalendar }, { id: 'logs', label: 'Foutmeldingen', eyebrow: 'Systeem', title: 'Centrale foutmeldingen', desc: 'Bekijk fouten die door alle diensten zijn gemeld.', icon: IconAlert }, ] const NAV_GROUPS = [ { label: 'Algemeen', items: ['overview'] }, { label: 'Netwerkbeheer', items: ['stops', 'lines', 'routes', 'fleet'] }, { label: 'Planning', items: ['schedules'] }, { label: 'Systeem', items: ['logs'] }, ] export default function App() { const [token, setToken] = useState(localStorage.getItem('token')) const [user, setUser] = useState(JSON.parse(localStorage.getItem('user') || 'null')) const [section, setSection] = useState('overview') useEffect(() => { if (token) localStorage.setItem('token', token) else localStorage.removeItem('token') }, [token]) useEffect(() => { if (user) localStorage.setItem('user', JSON.stringify(user)) else localStorage.removeItem('user') }, [user]) if (!token) return { setToken(t); setUser(u); setSection('overview') }} /> const active = SECTIONS.find((s) => s.id === section) || SECTIONS[0] const initials = (user?.name || user?.userCode || 'U').toString().slice(0, 1).toUpperCase() return (

{active.eyebrow}

{active.title}

{active.desc}

{section === 'overview' && } {section === 'stops' && } {section === 'lines' && } {section === 'routes' && } {section === 'fleet' && } {section === 'schedules' && } {section === 'logs' && }
) }