import React, { useEffect } from 'react' import { Routes, Route, Navigate, useLocation } from 'react-router-dom' import { useAuthStore } from './store/authStore' import { useSettingsStore } from './store/settingsStore' import LoginPage from './pages/LoginPage' import RegisterPage from './pages/RegisterPage' import DashboardPage from './pages/DashboardPage' import TripPlannerPage from './pages/TripPlannerPage' // PhotosPage removed - replaced by Finanzplan import FilesPage from './pages/FilesPage' import AdminPage from './pages/AdminPage' import SettingsPage from './pages/SettingsPage' import { ToastContainer } from './components/shared/Toast' import { TranslationProvider } from './i18n' import DemoBanner from './components/Layout/DemoBanner' function ProtectedRoute({ children, adminRequired = false }) { const { isAuthenticated, user, isLoading } = useAuthStore() if (isLoading) { return (

Wird geladen...

) } if (!isAuthenticated) { return } if (adminRequired && user?.role !== 'admin') { return } return children } function RootRedirect() { const { isAuthenticated, isLoading } = useAuthStore() if (isLoading) { return (
) } return } export default function App() { const { loadUser, token, isAuthenticated, demoMode, setDemoMode } = useAuthStore() const { loadSettings } = useSettingsStore() useEffect(() => { if (token) { loadUser() } // Check if demo mode is active import('./api/client').then(({ authApi }) => { authApi.getAppConfig?.().then(config => { if (config?.demo_mode) setDemoMode(true) }).catch(() => {}) }) }, []) const { settings } = useSettingsStore() useEffect(() => { if (isAuthenticated) { loadSettings() } }, [isAuthenticated]) // Apply dark mode class to useEffect(() => { if (settings.dark_mode) { document.documentElement.classList.add('dark') } else { document.documentElement.classList.remove('dark') } }, [settings.dark_mode]) return ( {demoMode && isAuthenticated && }
} /> } /> } /> } /> } /> } /> } /> } /> } />
) }