feat(dashboard): Dashboard-Start für Verantwortliche, Kachel-Anpassung, Status-Monitor
CI / backend-tests (push) Failing after 2m5s
CI / frontend-build (push) Successful in 19s

Dashboard immer Startseite für Verantwortliche (Mitarbeiter -> Objekte), kaputte Startseiten-Auswahl entfernt. Neu gemeldete Mängel als eigener Hinweis. Kacheln per Anpassen-Modus verschieb-/ausblendbar (localStorage), Status-Monitor-Modus mit Vollbild und Auto-Refresh (60s). DashboardPage dabei in kleine Dateien pro Kachel gesplittet.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
This commit is contained in:
2026-09-07 12:02:47 +02:00
co-authored by Claude Sonnet 5
parent 9b2701e220
commit 5fc8079df6
21 changed files with 3020 additions and 415 deletions
@@ -0,0 +1,26 @@
import type { Qualifikationsablauf } from "../types";
interface Props {
qualifikationsablaeufe: Qualifikationsablauf[];
}
export function QualifikationTile({ qualifikationsablaeufe }: Props) {
if (qualifikationsablaeufe.length === 0) {
return <p className="text-muted">Keine bald ablaufenden Qualifikationen.</p>;
}
return (
<ul className="card-list">
{qualifikationsablaeufe.map((q) => (
<li key={q.benutzer_qualifikation_id} className="row-between" style={{ padding: "0.3rem 0" }}>
<span>
{q.benutzer_name} <span className="text-muted">({q.qualifikationstyp_name})</span>
</span>
<span style={{ color: q.status === "abgelaufen" ? "var(--color-danger)" : undefined }}>
{q.gueltig_bis} ({q.verbleibende_tage} Tage)
</span>
</li>
))}
</ul>
);
}