fix(ui): die Seite rechnet die Höhe der HoneyOS-Leiste ab

Die Leiste liegt fest am oberen Rand und schiebt den Inhalt herunter. Wer
danach noch mit 100vh rechnete, war genau um ihre Höhe zu hoch — am Rechner
eine Bildlaufleiste, die es vorher nicht gab. Und wer selbst fest am oberen
Rand klebte (Seitenleiste am Handy, Vorschau, Office), lag darunter und war
verdeckt.

--honeybar-h setzt die Leiste selbst auf <html>; ohne sie ist der Wert 0 und
alles bleibt wie zuvor. Drei Hilfsklassen in index.css halten das an einer
Stelle zusammen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
marcandClaude Opus 5 committed 2026-08-24 23:40:34 +02:00
1 parent 57156a6394
commit d6b9d6a1ce
8 files changed
+20 -8

No files matched your search

+1 -1
View File
@@ -45,7 +45,7 @@ function AuthedApp() {
if (loading) {
return (
<div style={{ minHeight: '100vh', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>
<div className="aether-minvh" style={{ display: 'flex', alignItems: 'center', justifyContent: 'center' }}>
<div style={{
width: 32, height: 32,
border: '2px solid var(--color-primary)',
+1 -1
View File
@@ -172,7 +172,7 @@ export default function FilePreview({ file, onPrev, onNext, onClose, onSaved, se
<div
onClick={tryClose}
style={{
position: 'fixed', inset: 0, zIndex: 100,
position: 'fixed', inset: 'var(--honeybar-h) 0 0 0', zIndex: 100,
background: 'rgba(0,0,0,0.82)',
display: 'flex', flexDirection: 'column',
}}
+1 -1
View File
@@ -53,7 +53,7 @@ export default function OfficeEditor({ file, onClose }: {
return (
<div style={{
position: 'fixed', inset: 0, zIndex: 120,
position: 'fixed', inset: 'var(--honeybar-h) 0 0 0', zIndex: 120,
background: 'var(--color-background)', display: 'flex', flexDirection: 'column',
}}>
<div style={{
+1 -1
View File
@@ -61,7 +61,7 @@ export default function Shell({ user, onLogout, onUserChanged }: Props) {
onLogout,
onOpenSidebar: () => setSidebarOpen(true),
}}>
<div style={{ display: 'flex', height: '100vh', overflow: 'hidden' }}>
<div className="aether-vh" style={{ display: 'flex', overflow: 'hidden' }}>
{/* Mobile overlay */}
{sidebarOpen && (
<div
+2 -2
View File
@@ -761,14 +761,14 @@ export default function Sidebar({ user, view, activeTagId, onOpenTag, onTrashDro
flex-direction: column;
background: var(--color-surface);
border-right: 1px solid var(--color-border);
height: 100vh;
height: calc(100vh - var(--honeybar-h));
overflow-y: auto;
overflow-x: hidden;
}
@media (max-width: 767px) {
.aether-sidebar {
position: fixed;
top: 0; left: 0;
top: var(--honeybar-h); left: 0;
z-index: 50;
transform: translateX(-100%);
transition: transform 0.2s ease;
+12
View File
@@ -60,8 +60,20 @@ body {
--safe-top: 0px;
--safe-bottom: 0px;
--safe-left: 0px;
/* Höhe der HoneyOS-Leiste. Sie setzt den Wert selbst auf <html>, sobald sie
da ist; hier steht er, damit calc() auch ohne sie aufgeht. */
--honeybar-h: 0px;
}
/* Die Leiste liegt fest am oberen Rand und schiebt den Seiteninhalt herunter.
Wer mit der vollen Fensterhöhe rechnet, muss sie abziehen — sonst ist die
Seite genau um die Leistenhöhe zu hoch und bekommt eine Bildlaufleiste.
Wer fest am oberen Rand klebt, muss unter ihr anfangen — sonst verdeckt sie
ihn (am Handy fällt das sofort auf, dort ist jede Zeile kostbar). */
.aether-vh { height: calc(100vh - var(--honeybar-h)); }
.aether-minvh { min-height: calc(100vh - var(--honeybar-h)); }
.aether-full { position: fixed; inset: var(--honeybar-h) 0 0 0; }
@media (display-mode: standalone) {
:root {
--safe-top: env(safe-area-inset-top, 0px);
+1 -1
View File
@@ -34,7 +34,7 @@ export default function LoginPage({ onLogin }: Props) {
}
return (
<div className="min-h-screen flex items-center justify-center px-4">
<div className="aether-minvh flex items-center justify-center px-4">
<div className="w-full max-w-sm">
{/* Logo / branding */}
<div className="text-center mb-8">
+1 -1
View File
@@ -59,7 +59,7 @@ export default function SharePage({ token }: Props) {
return (
<div style={{
minHeight: '100vh',
minHeight: 'calc(100vh - var(--honeybar-h))',
display: 'flex',
flexDirection: 'column',
alignItems: 'center',