Refactor navigation structure and API routes

- Centralize user menu, sidebar items, and breadcrumb logic.
- Map consistent API endpoints in `customerRoutes`.
- Replace inline route definitions with reusable constants.
- Refactor auth configuration file location.
- Improve `<Link>` usage to replace static `<a>` elements.
- Adjust sidebar and dropdown components to use dynamic navigation configurations.
This commit is contained in:
2025-07-07 19:49:58 +02:00
parent 7ba92dc66c
commit e42b352216
15 changed files with 127 additions and 88 deletions

View File

@@ -0,0 +1,19 @@
import {customerRoutes} from "@/app/api/customers/customerRoutes";
export const breadcrumbMap: Record<string, string> = {
'dashboard': 'Dashboard',
'settings': 'Settings',
'demo': 'Demo',
'users': 'User Management',
'customers': 'Kundenübersicht',
};
export const breadcrumbResolvers: Record<string, (id: string) => Promise<string>> = {
"customers": async (id: string) => {
const res = await fetch(`/api${customerRoutes.getById(id)}`, {cache: "no-store"});
const customer = await res.json();
if (customer.companyName) return `Firma: ${customer.companyName}`;
if (customer.name) return `Name: ${customer.name}`;
return `ID: ${id}`;
},
};

View File

@@ -0,0 +1,38 @@
import {AppWindowIcon, Home, LayoutDashboard} from "lucide-react";
import {MenuItem, SubMenuItem} from "@/types/navigation/sidebar";
export const rheinItems: MenuItem[] = [
{
title: "Dashboard",
url: "/",
icon: Home,
},
{
title: "Apps",
url: "/apps",
icon: AppWindowIcon,
},
];
export const customerItems: MenuItem[] = [
{
title: "Kundenübersicht",
url: "/customers",
icon: LayoutDashboard,
},
];
export const kanzleiItems: SubMenuItem[] = [
{
title: "Steuer",
url: "/demo/kanzlei/steuer",
},
{
title: "Rechtsanwalt",
url: "/demo/kanzlei/rechtsanwalt",
},
{
title: "Bilanzbuchhalter",
url: "/demo/kanzlei/bilanzbuchhalter",
},
];

View File

@@ -0,0 +1,20 @@
import {LogOut, Settings} from "lucide-react";
export interface UserMenuItem {
title: string;
url: string;
icon?: typeof Settings;
}
export const userMenuItems: UserMenuItem[] = [
{
title: "Settings",
url: "/settings",
icon: Settings,
},
{
title: "Ausloggen",
url: "/api/auth/signout",
icon: LogOut,
},
];