Elf Abschnitte in einer Spalte waren zehn zu viel
Die Verwaltung war eine Seite mit 1786 Zeilen. Wer das Protokoll sehen wollte, scrollte an Mediatheken, Prüfliste, Benutzern und Speicher vorbei — und jede neue Einstellung hätte sie länger gemacht. Jetzt hat sie eine eigene Leiste mit sieben Bereichen, jeder mit seiner Adresse: `#/verwaltung/protokolle` lässt sich ablegen, und ein Neuladen bleibt dort stehen. Die Leiste sieht aus wie die Hauptleiste daneben, damit sie als Navigation gelesen wird und nicht als Knopfreihe; am Telefon wird aus der Spalte ein Streifen zum Schieben. **Gebaut wird nur, was offen ist.** Das ist nicht nur sparsamer: das Abspielfenster fragt im Fünf-Sekunden-Takt nach, die Mediathekenliste beobachtet laufende Scans. Gemessen: nach dem Wechsel in einen anderen Bereich kommt zwölf Sekunden lang keine Anfrage mehr. `admin.ts` ist in acht Dateien zerlegt — eine je Bereich, dazu `teile.ts` für die gemeinsame Überschrift und `index.ts` für Leiste und Weiche. Zwei Dinge mussten dabei nachziehen: **Die Markierung in der Hauptleiste.** Sie verglich stur zwei Segmente; bei `#/verwaltung/metadaten` traf das auf keinen Eintrag, und „Verwaltung" verlor seinen Balken. Jetzt gilt auch ein Segment. **„5 Titel warten — ansehen".** Der Knopf sprang mit `scrollIntoView` zur Prüfliste. Die steht nicht mehr im selben Dokument — er wechselt jetzt den Bereich. Die Hervorhebung danach entfällt damit, und mit ihr ihr CSS. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
94c6604e8b
commit
1e4a231d1b
+50
-7
@@ -1226,6 +1226,56 @@ body:has(.pl.pl-klein) .auswahlleiste { bottom: 92px; }
|
||||
.hero-bald { font-size: 12px; padding: 0 var(--s-snug); }
|
||||
}
|
||||
|
||||
/* --- Verwaltung ----------------------------------------------------------
|
||||
*
|
||||
* **Eine zweite Leiste, keine zweite Seite.** Die Verwaltung war elf
|
||||
* Abschnitte in einer Spalte; wer das Protokoll sehen wollte, scrollte an
|
||||
* allem anderen vorbei. Die Leiste sieht aus wie die Hauptleiste daneben —
|
||||
* derselbe Balken links, dieselbe Farbe —, damit sie als Navigation gelesen
|
||||
* wird und nicht als Knopfreihe. */
|
||||
|
||||
.verwaltung { display: flex; align-items: flex-start; gap: var(--s-section); }
|
||||
|
||||
.verw-leiste {
|
||||
position: sticky; top: calc(var(--topbar-h) + var(--s-section));
|
||||
flex: none; width: 196px;
|
||||
display: flex; flex-direction: column; gap: 2px;
|
||||
}
|
||||
.verw-eintrag {
|
||||
display: flex; align-items: center; gap: var(--s-regular);
|
||||
background: none; border: 0; text-align: left;
|
||||
padding: 9px var(--s-regular); color: var(--text-dim);
|
||||
border-left: 3px solid transparent; border-radius: 0 var(--r-control) var(--r-control) 0;
|
||||
font-size: var(--t-normal);
|
||||
}
|
||||
.verw-eintrag .icon { flex: none; color: var(--text-muted); }
|
||||
.verw-eintrag:hover { color: var(--text); background: rgba(255, 255, 255, .04); }
|
||||
.verw-eintrag:hover .icon { color: var(--text-dim); }
|
||||
.verw-eintrag.check {
|
||||
color: var(--accent); border-left-color: var(--accent);
|
||||
background: linear-gradient(90deg, var(--accent-soft), transparent 70%);
|
||||
}
|
||||
.verw-eintrag.check .icon { color: var(--accent); }
|
||||
|
||||
.verw-buehne { flex: 1; min-width: 0; }
|
||||
|
||||
@media (max-width: 860px) {
|
||||
/* Wie die Hauptleiste: aus der Spalte wird ein Streifen zum Schieben. */
|
||||
.verwaltung { flex-direction: column; gap: var(--s-loose); }
|
||||
.verw-leiste {
|
||||
position: static; width: auto;
|
||||
flex-direction: row; overflow-x: auto; gap: var(--s-tight);
|
||||
scrollbar-width: none; padding-bottom: var(--s-tight);
|
||||
}
|
||||
.verw-leiste::-webkit-scrollbar { display: none; }
|
||||
.verw-eintrag {
|
||||
flex: none; white-space: nowrap;
|
||||
border-left: 0; border-bottom: 2px solid transparent; border-radius: var(--r-control);
|
||||
}
|
||||
.verw-eintrag.check { border-bottom-color: var(--accent); background: var(--accent-soft); }
|
||||
.verw-buehne { width: 100%; }
|
||||
}
|
||||
|
||||
/* --- Kontextmenü ---------------------------------------------------------
|
||||
*
|
||||
* Gesehen, Favorit und Weglegen gab es nur auf der Detailseite. In einer
|
||||
@@ -1678,13 +1728,6 @@ body:has(.auswahlleiste:not(.hidden)) .hinweise { bottom: 104px; }
|
||||
.fassungsdatei .oz-dazu { flex: 1 1 auto; }
|
||||
.btn.klein { padding: 4px 10px; font-size: 12px; flex: 0 0 auto; }
|
||||
|
||||
/* Kurz hervorheben, wohin gesprungen wurde — sonst sucht man oben weiter. */
|
||||
.hervor { animation: hervor 1.6s ease-out; }
|
||||
@keyframes hervor {
|
||||
0%, 60% { background: var(--accent-soft); border-radius: var(--r-karte); }
|
||||
100% { background: transparent; }
|
||||
}
|
||||
@media (prefers-reduced-motion: reduce) { .hervor { animation: none; } }
|
||||
|
||||
/* Der Ordner in den Medienangaben — schmaler gesetzt, er ist ein Pfad. */
|
||||
.medientabelle dd.pfad {
|
||||
|
||||
Reference in New Issue
Block a user