UI-Verbesserungen: Rechnungsmenü entfernt, TS zu Trockenstellerprobe, Auffällig statt ⚠, Erregerkacheln bereinigt, Layout-Abstände optimiert

This commit is contained in:
2026-03-16 12:38:08 +01:00
parent e01afb9a10
commit c41cdad90d
9 changed files with 2281 additions and 2669 deletions

View File

@@ -13,7 +13,6 @@ import SearchPage from "./pages/SearchPage";
import SearchFarmerPage from "./pages/SearchFarmerPage";
import SearchCalendarPage from "./pages/SearchCalendarPage";
import UserManagementPage from "./pages/UserManagementPage";
import InvoiceTemplatePage from "./pages/InvoiceTemplatePage";
import ReportTemplatePage from "./pages/ReportTemplatePage";
function ProtectedRoutes() {
@@ -37,7 +36,6 @@ function ProtectedRoutes() {
<Route path="/samples/:sampleId/anamnesis" element={<AnamnesisPage />} />
<Route path="/samples/:sampleId/antibiogram" element={<AntibiogramPage />} />
<Route path="/samples/:sampleId/therapy" element={<TherapyPage />} />
<Route path="/invoice-template" element={<InvoiceTemplatePage />} />
<Route path="/report-template" element={<ReportTemplatePage />} />
<Route path="/admin" element={<Navigate to={isAdmin ? "/admin/landwirte" : "/admin/benutzer"} replace />} />
<Route path="/admin/benutzer" element={<UserManagementPage />} />

View File

@@ -5,7 +5,6 @@ const PAGE_TITLES: Record<string, string> = {
"/home": "Startseite",
"/samples/new": "Neuanlage einer Probe",
"/portal": "MUH-Portal",
"/invoice-template": "Rechnung",
"/report-template": "Bericht",
};
@@ -84,9 +83,6 @@ export default function AppShell() {
<div className="nav-subgroup">
<div className="nav-subgroup__label">Vorlagen</div>
<div className="nav-subnav nav-subnav--nested">
<NavLink to="/invoice-template" className={({ isActive }) => `nav-sublink ${isActive ? "is-active" : ""}`}>
Rechnung
</NavLink>
<NavLink to="/report-template" className={({ isActive }) => `nav-sublink ${isActive ? "is-active" : ""}`}>
Bericht
</NavLink>

View File

@@ -287,7 +287,7 @@ export default function AdministrationPage() {
<option value="SYSTEMIC_ANTIBIOTIC">systemisch Antibiotika</option>
<option value="SYSTEMIC_PAIN">systemisch Schmerzmittel</option>
<option value="DRY_SEALER">Versiegler</option>
<option value="DRY_ANTIBIOTIC">TS Antibiotika</option>
<option value="DRY_ANTIBIOTIC">Trockenstellerprobe Antibiotika</option>
</select>
</td>
) : null}

View File

@@ -153,7 +153,7 @@ export default function AnamnesisPage() {
onClick={() => setActiveQuarter(quarter.quarterKey)}
>
{quarter.label}
{quarter.flagged ? " " : ""}
{quarter.flagged ? " Auffällig" : ""}
</button>
))}
</div>
@@ -186,12 +186,11 @@ export default function AnamnesisPage() {
disabled={!sample.anamnesisEditable}
>
<strong>{pathogen.name}</strong>
<small>{pathogen.code ?? pathogen.kind}</small>
</button>
))}
</div>
<label className="field field--required">
<label className="field field--required field--spaced">
<span>Erreger manuell eingeben</span>
<input
className={showValidation && !quarterHasPathogen(visibleQuarter.quarterKey) ? "is-invalid" : ""}
@@ -219,10 +218,10 @@ export default function AnamnesisPage() {
/>
</label>
<div className="info-panel">
<div className="info-panel info-panel--spaced">
<strong>Hinweis</strong>
<p>
Kein Wachstum oder verunreinigte Proben werden spaeter automatisch vom
Kein Wachstum oder verunreinigte Proben werden später automatisch vom
Antibiogramm ausgeschlossen.
</p>
</div>

File diff suppressed because it is too large Load Diff

View File

@@ -100,7 +100,7 @@ export default function LoginPage() {
<p className="eyebrow">MUH-App</p>
<h1>Moderne Steuerung fuer Milchproben und Therapien.</h1>
<p className="hero-text">
Fokus auf klare Arbeitsablaeufe, schnelle Probenbearbeitung und ein Portal
Fokus auf klare Arbeitsabläufe, schnelle Probenbearbeitung und ein Portal
fuer Verwaltung, Berichtsdruck und Versandstatus.
</p>
</div>

File diff suppressed because it is too large Load Diff

View File

@@ -127,7 +127,7 @@ export default function SampleRegistrationPage() {
<h3>Probe {sampleNumber ?? "..."}</h3>
<p className="muted-text">
Die Probenummer wird fortlaufend vergeben. Trockensteller lassen sich ueber den
Schalter TS markieren.
Schalter Trockenstellerprobe markieren.
</p>
</div>
@@ -198,7 +198,7 @@ export default function SampleRegistrationPage() {
onClick={() => setSampleKind("DRY_OFF")}
disabled={!editable}
>
TS
Trockenstellerprobe
</button>
</div>
@@ -251,7 +251,7 @@ export default function SampleRegistrationPage() {
disabled={!editable}
>
<span>{quarter.label}</span>
<strong>{flaggedQuarters.includes(quarter.key) ? "" : "OK"}</strong>
<strong>{flaggedQuarters.includes(quarter.key) ? "Auffällig" : "OK"}</strong>
</button>
))}
</div>

View File

@@ -312,6 +312,7 @@ a {
.portal-grid {
display: grid;
gap: 20px;
align-items: stretch;
}
.metrics-grid {
@@ -383,6 +384,10 @@ a {
grid-column: 1 / -1;
}
.field--spaced {
margin-top: 28px;
}
.field span {
font-size: 0.9rem;
color: var(--muted);
@@ -664,6 +669,10 @@ a {
color: var(--muted);
}
.info-panel--spaced {
margin-top: 28px;
}
.alert {
border: 1px solid transparent;
}