diff --git a/docs/usability-umsetzung.md b/docs/usability-umsetzung.md index cd17677..e192120 100644 --- a/docs/usability-umsetzung.md +++ b/docs/usability-umsetzung.md @@ -121,3 +121,11 @@ Validierung: 60/60 Tests in Debug und Release; Desktop Debug/Release ohne Warnun Das vorhandene Kassen-Icon bleibt in der Windows-EXE eingebettet und wird als natives Fenstersymbol gesetzt. Die ungenutzte Photino-Registrierung für Windows-Systembenachrichtigungen ist deaktiviert: Sie kann die explizite AppUserModelID überschreiben und Verknüpfungen zum generischen dotnet-Host anlegen. Damit bleibt die eigene Windows-Zuordnung für die Taskleiste erhalten; die in der Anwendung angezeigten Toasts funktionieren unabhängig davon. Bestehende Windows-Verknüpfungen werden nicht verändert. Release als eigenständige Windows-Einzeldatei veröffentlicht. Das aus der veröffentlichten EXE extrahierte Anwendungssymbol entspricht dem vorhandenen Kassen-Icon; auch das native Testfenster zeigt es in der Titelleiste. Die Taskleistendarstellung wurde nicht separat visuell erfasst. Build und Veröffentlichung ohne Warnungen oder Fehler. + +## Zentrierte Symbole, Tabellenkontrast und konkrete Laufmeldungen + +Stift und Papierkorb sind in beiden Achsen zentriert; die Symbolschrift verwendet im Button eine Blockbox ohne Baseline-Versatz. Tabellenköpfe verwenden die Text- und Oberflächenfarbe des aktuellen Designs statt der festen Bootstrap-Klasse für helle Tabellen. Die sechs generischen Laufmeldungen benennen nun Sicherung erstellen, Sicherung wiederherstellen, Kontenübersicht als PDF erstellen/speichern, Kontoauszug als PDF erstellen/speichern oder gespeicherte PDF öffnen. + +Debug-Tests: 60/60 bestanden. Zusätzliche Browserprüfung mit lokalem Produktions-CSS: Symbole bei 100 und 200 % in beiden Designs innerhalb von 0,6 Pixeln zentriert, Buttons mindestens 44 × 44 Pixel. Kontrast der sichtbaren Tabellenköpfe 17,85:1 (hell) und 12,89:1 (dunkel). Alle 16 bisherigen Offline-Layoutkombinationen bestehen weiterhin; dunkler Tabellenkopf und Symbole zusätzlich visuell geprüft. + +Auch die Release-Suite besteht mit 60/60 Tests. Desktop Debug und Release bauen ohne Warnungen oder Fehler; `git diff --check` ist sauber. diff --git a/src/Duempelkas.App/Components/Accounts/EntryTable.razor b/src/Duempelkas.App/Components/Accounts/EntryTable.razor index 128bffd..66f05d7 100644 --- a/src/Duempelkas.App/Components/Accounts/EntryTable.razor +++ b/src/Duempelkas.App/Components/Accounts/EntryTable.razor @@ -23,7 +23,7 @@ }
- + diff --git a/src/Duempelkas.App/Pages/Accounts/AccountDetail.razor.cs b/src/Duempelkas.App/Pages/Accounts/AccountDetail.razor.cs index 7321832..6e6c166 100644 --- a/src/Duempelkas.App/Pages/Accounts/AccountDetail.razor.cs +++ b/src/Duempelkas.App/Pages/Accounts/AccountDetail.razor.cs @@ -258,7 +258,7 @@ public partial class AccountDetail private async Task HandleExport() { if (fileBusy) return; - var busyToast = Toasts.Show("Dateiaktion läuft … Bitte warten.", persistent: true); + var busyToast = Toasts.Show("Kontoauszug wird als PDF erstellt und gespeichert … Bitte warten.", persistent: true); fileBusy = true; fileResult = null; try @@ -277,7 +277,7 @@ public partial class AccountDetail private async Task HandleOpenSavedPdf() { if (fileBusy) return; - var busyToast = Toasts.Show("Dateiaktion läuft … Bitte warten.", persistent: true); + var busyToast = Toasts.Show("Gespeicherte PDF-Datei wird geöffnet … Bitte warten.", persistent: true); fileBusy = true; fileResult = null; try diff --git a/src/Duempelkas.App/Pages/Dashboard.razor.cs b/src/Duempelkas.App/Pages/Dashboard.razor.cs index bd7e8d0..e15aae2 100644 --- a/src/Duempelkas.App/Pages/Dashboard.razor.cs +++ b/src/Duempelkas.App/Pages/Dashboard.razor.cs @@ -101,7 +101,7 @@ public partial class Dashboard private async Task HandleBackupAsync() { if (fileBusy) return; - var busyToast = Toasts.Show("Dateiaktion läuft … Bitte warten.", persistent: true); + var busyToast = Toasts.Show("Sicherung wird erstellt … Bitte warten.", persistent: true); fileBusy = true; fileResult = null; try @@ -127,7 +127,7 @@ public partial class Dashboard private async Task HandleConfirmRestore() { if (fileBusy) return; - var busyToast = Toasts.Show("Dateiaktion läuft … Bitte warten.", persistent: true); + var busyToast = Toasts.Show("Sicherung wird wiederhergestellt … Bitte warten.", persistent: true); fileBusy = true; fileResult = null; try @@ -144,7 +144,7 @@ public partial class Dashboard private async Task HandleDashboardExportAsync() { if (fileBusy) return; - var busyToast = Toasts.Show("Dateiaktion läuft … Bitte warten.", persistent: true); + var busyToast = Toasts.Show("Kontenübersicht wird als PDF erstellt und gespeichert … Bitte warten.", persistent: true); fileBusy = true; fileResult = null; try @@ -180,7 +180,7 @@ public partial class Dashboard private async Task HandleOpenSavedPdf() { if (fileBusy) return; - var busyToast = Toasts.Show("Dateiaktion läuft … Bitte warten.", persistent: true); + var busyToast = Toasts.Show("Gespeicherte PDF-Datei wird geöffnet … Bitte warten.", persistent: true); fileBusy = true; fileResult = null; try diff --git a/src/Duempelkas.Desktop/wwwroot/css/app.css b/src/Duempelkas.Desktop/wwwroot/css/app.css index 98ec08f..c2e8a85 100644 --- a/src/Duempelkas.Desktop/wwwroot/css/app.css +++ b/src/Duempelkas.Desktop/wwwroot/css/app.css @@ -350,8 +350,9 @@ html[data-ui-theme="light"] .btn-dark { } .table thead th { + background-color: var(--color-surface); border-bottom-color: var(--color-border); - color: var(--color-text-muted); + color: var(--color-text); font-weight: 600; font-size: 0.8rem; text-transform: uppercase; @@ -643,6 +644,9 @@ body:has(dialog[open]) .toast-stack:not(.modal-toasts) { display: none; } .entry-actions button { min-height: 44px; min-width: 44px; padding: .6rem; } .entry-action-buttons { display: flex; gap: .5rem; } +.entry-action-buttons .btn { display: inline-flex; align-items: center; justify-content: center; } +.entry-action-buttons .btn i { margin: 0; line-height: 1; } +.entry-action-buttons .btn i::before { display: block; } .entry-description { overflow-wrap: anywhere; } @media (max-width: 900px) { .entry-list thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); }
LfdNr Datum