UI: Spinner statt LADEN-Text, Pills unter Header in Einstellungen

- ViewFallback: dezenter, zentrierter Spinner statt kaum lesbarem
  "LADEN…"-Text zwischen lazy-loaded Views
- Einstellungen: Pill-Navigation jetzt konsistent unter dem Header
  (zuvor lagen die Pills bei allen Tabs ausser "Mein Profil" darüber)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-14 03:13:34 +02:00
parent 36eed5b1e9
commit 2caf662c14
3 changed files with 32 additions and 21 deletions
+12 -12
View File
@@ -75,18 +75,6 @@ version = "1.0.102"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
[[package]]
name = "rapport"
version = "0.6.0"
dependencies = [
"log",
"serde",
"serde_json",
"tauri",
"tauri-build",
"tauri-plugin-log",
]
[[package]] [[package]]
name = "arrayvec" name = "arrayvec"
version = "0.7.6" version = "0.7.6"
@@ -2760,6 +2748,18 @@ dependencies = [
"rand_core 0.5.1", "rand_core 0.5.1",
] ]
[[package]]
name = "rapport"
version = "0.6.0"
dependencies = [
"log",
"serde",
"serde_json",
"tauri",
"tauri-build",
"tauri-plugin-log",
]
[[package]] [[package]]
name = "raw-window-handle" name = "raw-window-handle"
version = "0.6.2" version = "0.6.2"
+14 -1
View File
@@ -28,7 +28,20 @@ const Documents = lazy(() => import("./views/Documents.jsx"));
const PrintView = lazy(() => import("./print/PrintComponents.jsx").then(m => ({ default: m.PrintView }))); const PrintView = lazy(() => import("./print/PrintComponents.jsx").then(m => ({ default: m.PrintView })));
function ViewFallback() { function ViewFallback() {
return <div style={{ padding: 40, color: "var(--text4)", fontSize: 12, letterSpacing: "0.08em" }}>LADEN</div>; return (
<div style={{ display: "flex", justifyContent: "center", alignItems: "center", minHeight: "calc(100vh - 60px)" }}>
<style>{`
@keyframes vf-spin { to { transform: rotate(360deg); } }
.vf-spinner {
width: 40px; height: 40px; border-radius: 50%;
border: 2px solid rgba(0,0,0,0.08);
border-top-color: rgba(0,0,0,0.45);
animation: vf-spin 0.9s linear infinite;
}
`}</style>
<div className="vf-spinner" />
</div>
);
} }
export default function App() { export default function App() {
+6 -8
View File
@@ -323,14 +323,6 @@ export default function Settings({ data, update, currentUser, uiZoom, setUiZoom
<div> <div>
{ConfirmModalEl} {ConfirmModalEl}
{tab !== "profil" && (
<div className="filter-bar" style={{ marginBottom: 20 }}>
{TABS.map(t => (
<button key={t.id} onClick={() => setTab(t.id)} className={`pill${tab === t.id ? " active" : ""}`}>{t.label}</button>
))}
</div>
)}
{/* ── Profil-Tab ── */} {/* ── Profil-Tab ── */}
{tab === "profil" && <PersonalSettings data={data} update={update} currentUser={currentUser} uiZoom={uiZoom || 1} setUiZoom={setUiZoom || (() => {})} nav={ {tab === "profil" && <PersonalSettings data={data} update={update} currentUser={currentUser} uiZoom={uiZoom || 1} setUiZoom={setUiZoom || (() => {})} nav={
<div className="filter-bar" style={{ marginBottom: 20 }}> <div className="filter-bar" style={{ marginBottom: 20 }}>
@@ -409,6 +401,12 @@ export default function Settings({ data, update, currentUser, uiZoom, setUiZoom
: null : null
} /> } />
<div className="filter-bar" style={{ marginBottom: 20 }}>
{TABS.map(t => (
<button key={t.id} onClick={() => setTab(t.id)} className={`pill${tab === t.id ? " active" : ""}`}>{t.label}</button>
))}
</div>
{/* ── Tab: Studio ── */} {/* ── Tab: Studio ── */}
{tab === "studio" && ( {tab === "studio" && (
<> <>