feat(PROJ-80,PROJ-81): Dark Mode Vervollständigung + Anhang-Online-Vorschau

- PROJ-80: hartkodierte Farben in ModulesTab/TenantsTab/TenantLDAPTab durch
  Theme-Tokens ersetzt, Mail-HTML-Container bewusst hell isoliert, Print
  im Dark Mode auf lesbare (nicht farbidentische) Ausgabe umgestellt
- PROJ-81: neuer AttachmentPreviewDialog für PDF/Bild-Anhänge in /mail/[id],
  MIME-Whitelist ohne SVG, sandboxed iframe ohne allow-same-origin,
  Auto-Retry-Schleife bei Fehlern behoben
- PROJ-82 angelegt: Print-Farbparität als Folge-Ticket (BUG-80-1-Rest)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WapWkrQusDuBMhaN8WyuXB
This commit is contained in:
sysops
2026-08-06 18:00:41 +02:00
co-authored by Claude Sonnet 5
parent a1bf581fdd
commit 0a02bd7112
11 changed files with 899 additions and 23 deletions
+66
View File
@@ -170,3 +170,69 @@
@apply bg-background text-foreground;
}
}
/*
* PROJ-80: Druck-/PDF-Ausgabe immer hell, unabhaengig vom Bildschirm-Theme.
* GoBD/Auditor-Kontext: Ausdrucke muessen einheitlich und lesbar sein.
*/
@media print {
html.dark {
color-scheme: light;
}
html.dark,
html.dark body {
background: #fff !important;
color: #000 !important;
}
/*
* BUG-80-1: bewusst KEIN Wildcard-Reset auf transparent. Ein
* "html.dark * { background-color: transparent }" haette auch Status-Badges
* und Dashboard-Balken entfaerbt und damit die Aussage der Seite zerstoert.
* Stattdessen werden nur die Flaechen-Container neutralisiert. Farbtraeger
* werden ueber die Klasse .print-chip bzw. role="progressbar" ausgenommen und
* unten mit einer definierten hellen Ersatzflaeche versehen.
*/
html.dark
:is(
div, section, article, header, footer, main, aside, nav,
table, thead, tbody, tr, th, td,
p, h1, h2, h3, h4, h5, h6, span, li
):not(
.print-chip,
.print-chip *,
[role="progressbar"],
[role="progressbar"] *
) {
background-color: transparent !important;
color: #000 !important;
border-color: #999 !important;
box-shadow: none !important;
}
/*
* Farbtraeger (Badges, Status-Chips, Fortschritts-/Diagrammbalken): statt sie
* zu entfaerben, bekommen sie eine definierte helle Ersatzflaeche mit Rahmen.
* So bleiben sie im Ausdruck als abgesetztes Element erkennbar und lesbar,
* ohne dass dunkle Theme-Farben auf Papier landen.
*/
html.dark .print-chip,
html.dark [role="progressbar"] {
background-color: #f2f2f2 !important;
color: #000 !important;
border: 1px solid #999 !important;
print-color-adjust: exact;
-webkit-print-color-adjust: exact;
}
/* Gefuellter Anteil eines Balkens bleibt als dunklere Flaeche unterscheidbar. */
html.dark [role="progressbar"] > * {
background-color: #999 !important;
print-color-adjust: exact;
-webkit-print-color-adjust: exact;
}
/* Mail-Inhalt und Logo-Container bleiben im Ausdruck weiss. */
html.dark iframe,
html.dark img {
background-color: #fff !important;
print-color-adjust: exact;
-webkit-print-color-adjust: exact;
}
}