import { Routes, Route, Navigate } from 'react-router' import { Component, type ReactNode } from 'react' import { StoreProvider, useStore } from './store/store' import AppLayout from './components/AppLayout' import Login from './pages/Login' import Dashboard from './pages/Dashboard' import Payments from './pages/Payments' import Tickets from './pages/Tickets' import Documents from './pages/Documents' import Messages from './pages/Messages' import BenutzerVerwaltung from './pages/BenutzerVerwaltung' /** Fängt Render-Fehler ab – statt schwarzem Bildschirm: Hinweis + Reload. */ class FehlerGrenze extends Component<{ children: ReactNode }, { fehler: boolean }> { state = { fehler: false } static getDerivedStateFromError() { return { fehler: true } } render() { if (this.state.fehler) { return (

Da ist etwas schiefgelaufen

Die Seite konnte nicht korrekt dargestellt werden. Ein Neuladen hilft in der Regel weiter.

) } return this.props.children } } function Ladebildschirm() { return (
Hinterstein Immobilien
Mieterportal wird geladen …
) } function RequireAuth({ children }: { children: React.ReactElement }) { const { me, bereit } = useStore() if (!bereit) return if (!me) return return children } function LoginGate() { const { me, bereit } = useStore() if (!bereit) return if (me) return return } export default function App() { return ( } /> } > } /> } /> } /> } /> } /> } /> } /> ) }