diff --git a/src/App.tsx b/src/App.tsx
index 2b033cc..b9011ac 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -2,6 +2,7 @@ import { Routes, Route, Navigate } from 'react-router'
import { Component, Suspense, lazy, type ReactNode } from 'react'
import { StoreProvider, useStore } from './store/store'
import AppLayout from './components/AppLayout'
+import LadeSkeleton from './components/LadeSkeleton'
import Login from './pages/Login'
// Seiten werden beim ersten Aufruf nachgeladen (Code-Splitting) –
@@ -51,14 +52,7 @@ class FehlerGrenze extends Component<{ children: ReactNode }, { fehler: boolean
}
function Ladebildschirm() {
- return (
-
-
-
Hinterstein Immobilien
-
Mieterportal wird geladen …
-
-
- )
+ return
}
function RequireAuth({ children }: { children: React.ReactElement }) {
diff --git a/src/components/LadeSkeleton.tsx b/src/components/LadeSkeleton.tsx
new file mode 100644
index 0000000..3756b46
--- /dev/null
+++ b/src/components/LadeSkeleton.tsx
@@ -0,0 +1,68 @@
+import { Skeleton } from './ui/skeleton'
+import logo from '../assets/logo.png'
+
+/** Skeleton-Ladebildschirm: zeigt statt Text die ungefähre Seitenstruktur
+ * (Kopf, Suche, Listenzeilen) mit Puls-Animation – wirkt schneller und
+ * orientiert den Nutzer, während die Daten geladen werden. */
+export default function LadeSkeleton() {
+ return (
+
+ {/* Desktop-Sidebar */}
+
+
+
+ {/* Mobile top bar */}
+
+
+
+
+
+
+ {/* Seitenkopf */}
+