Add customer search and navigation updates

This commit is contained in:
2026-03-12 16:50:50 +01:00
parent 8ebb4d06e5
commit 1a8e37bd36
17 changed files with 710 additions and 137 deletions

View File

@@ -4,7 +4,6 @@ import { useSession } from "../lib/session";
const PAGE_TITLES: Record<string, string> = {
"/home": "Startseite",
"/samples/new": "Neuanlage einer Probe",
"/admin": "Verwaltung",
"/portal": "MUH-Portal",
};
@@ -21,6 +20,27 @@ function resolvePageTitle(pathname: string) {
if (pathname.includes("/registration")) {
return "Probe bearbeiten";
}
if (pathname.startsWith("/admin/landwirte")) {
return "Verwaltung | Landwirte";
}
if (pathname.startsWith("/admin/medikamente")) {
return "Verwaltung | Medikamente";
}
if (pathname.startsWith("/admin/erreger")) {
return "Verwaltung | Erreger";
}
if (pathname.startsWith("/admin/antibiogramm")) {
return "Verwaltung | Antibiogramm";
}
if (pathname.startsWith("/search/landwirt")) {
return "Suche | Landwirt";
}
if (pathname.startsWith("/search/probe")) {
return "Suche | Probe";
}
if (pathname.startsWith("/search/kalendar")) {
return "Suche | Kalendar";
}
return PAGE_TITLES[pathname] ?? "MUH App";
}
@@ -28,14 +48,6 @@ export default function AppShell() {
const { user, setUser } = useSession();
const location = useLocation();
const navigate = useNavigate();
const navItems = user?.role === "ADMIN"
? [{ to: "/portal", label: "Benutzerverwaltung" }]
: [
{ to: "/home", label: "Start" },
{ to: "/samples/new", label: "Neue Probe" },
{ to: "/admin", label: "Verwaltung" },
{ to: "/portal", label: "Portal" },
];
return (
<div className="app-shell">
@@ -45,15 +57,60 @@ export default function AppShell() {
</div>
<nav className="sidebar__nav">
{navItems.map((item) => (
{user?.role === "ADMIN" ? (
<NavLink
key={item.to}
to={item.to}
to="/portal"
className={({ isActive }) => `nav-link ${isActive ? "is-active" : ""}`}
>
{item.label}
Benutzerverwaltung
</NavLink>
))}
) : (
<>
<NavLink to="/home" className={({ isActive }) => `nav-link ${isActive ? "is-active" : ""}`}>
Start
</NavLink>
<NavLink to="/samples/new" className={({ isActive }) => `nav-link ${isActive ? "is-active" : ""}`}>
Neue Probe
</NavLink>
<div className="nav-group">
<div className="nav-group__label">Verwaltung</div>
<div className="nav-subnav">
<NavLink to="/admin/landwirte" className={({ isActive }) => `nav-sublink ${isActive ? "is-active" : ""}`}>
Landwirte
</NavLink>
<NavLink to="/admin/medikamente" className={({ isActive }) => `nav-sublink ${isActive ? "is-active" : ""}`}>
Medikamente
</NavLink>
<NavLink to="/admin/erreger" className={({ isActive }) => `nav-sublink ${isActive ? "is-active" : ""}`}>
Erreger
</NavLink>
<NavLink to="/admin/antibiogramm" className={({ isActive }) => `nav-sublink ${isActive ? "is-active" : ""}`}>
Antibiogramm
</NavLink>
</div>
</div>
<div className="nav-group">
<div className="nav-group__label">Suche</div>
<div className="nav-subnav">
<NavLink to="/search/landwirt" className={({ isActive }) => `nav-sublink ${isActive ? "is-active" : ""}`}>
Landwirt
</NavLink>
<NavLink to="/search/probe" className={({ isActive }) => `nav-sublink ${isActive ? "is-active" : ""}`}>
Probe
</NavLink>
<NavLink to="/search/kalendar" className={({ isActive }) => `nav-sublink ${isActive ? "is-active" : ""}`}>
Kalendar
</NavLink>
</div>
</div>
<NavLink to="/portal" className={({ isActive }) => `nav-link ${isActive ? "is-active" : ""}`}>
Portal
</NavLink>
</>
)}
</nav>
<div className="sidebar__footer">