- 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.
68 lines
2.5 KiB
TypeScript
68 lines
2.5 KiB
TypeScript
import type {Metadata} from "next";
|
|
import "./globals.css";
|
|
import {ThemeProvider} from "@/components/theme-provider";
|
|
import {SidebarInset, SidebarProvider, SidebarTrigger} from "@/components/ui/sidebar";
|
|
import {AppSidebar} from "@/components/app-sidebar";
|
|
import React from "react";
|
|
import {Separator} from "@/components/ui/separator";
|
|
import {DynamicBreadcrumb} from "@/components/dynamic-breadcrumb";
|
|
import {getServerSession} from "next-auth";
|
|
import LoginScreen from "@/components/login-screen";
|
|
import {authOptions} from "@/lib/api/auth/authOptions";
|
|
|
|
export const metadata: Metadata = {
|
|
title: "Internal | Rhein Software",
|
|
description: "Internal Tools for Rhein Software Development",
|
|
};
|
|
|
|
export default async function RootLayout({
|
|
children,
|
|
}: Readonly<{
|
|
children: React.ReactNode;
|
|
}>) {
|
|
const session = await getServerSession(authOptions);
|
|
|
|
return (
|
|
<html lang="de" suppressHydrationWarning>
|
|
<body>
|
|
<ThemeProvider
|
|
attribute="class"
|
|
defaultTheme="system"
|
|
enableSystem
|
|
disableTransitionOnChange
|
|
>
|
|
{session?.accessToken ? (
|
|
<SidebarProvider
|
|
style={
|
|
{
|
|
"--sidebar-width": "calc(var(--spacing) * 72)",
|
|
"--header-height": "calc(var(--spacing) * 12)",
|
|
} as React.CSSProperties
|
|
}
|
|
>
|
|
<AppSidebar/>
|
|
|
|
<SidebarInset>
|
|
<header
|
|
className="flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12">
|
|
<div className="flex items-center gap-2 px-4">
|
|
<SidebarTrigger className="-ml-1"/>
|
|
<Separator
|
|
orientation="vertical"
|
|
className="mr-2 data-[orientation=vertical]:h-4"
|
|
/>
|
|
<DynamicBreadcrumb/>
|
|
</div>
|
|
</header>
|
|
{children}
|
|
</SidebarInset>
|
|
</SidebarProvider>
|
|
) : (
|
|
<LoginScreen/>
|
|
)}
|
|
</ThemeProvider>
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|