Files
CPLv4.0/components/Navigation.jsx
ISA ab8a80f34c feat: dynamische URL-Anpassung für Entwicklungs- und Produktionsumgebung
- Navigation und Weiterleitungen angepasst, um dynamisch `.html`-Endungen in Produktionsumgebung anzuhängen.
- Nutzung von `NEXT_PUBLIC_NODE_ENV` ermöglicht unterschiedliche URL-Strukturen in Entwicklungs- und Produktionsumgebung.
- `Navigation`-Komponente und `index.js` entsprechend konfiguriert, um `.html` in der Produktionsumgebung automatisch anzuhängen.
- Verbesserte Konsistenz und Funktionalität zwischen beiden Umgebungen, 404-Fehler in Produktion behoben.
2024-10-25 11:21:56 +02:00

50 lines
1.4 KiB
JavaScript

"use client";
import React, { useEffect, useState } from "react";
import Link from "next/link";
import { usePathname } from "next/navigation";
function Navigation() {
const pathname = usePathname();
const [activeLink, setActiveLink] = useState("");
useEffect(() => {
if (pathname) {
setActiveLink(pathname);
}
}, [pathname]);
// Dynamische Anpassung der Pfade mit oder ohne .html
const isProduction = process.env.NEXT_PUBLIC_NODE_ENV === "production";
const menuItems = [
{ name: "Übersicht", path: "/dashboard" },
{ name: "Kabelüberwachung", path: "/kabelueberwachung" },
// Weitere Menüpunkte hier
];
return (
<aside>
<nav className="w-64 flex-shrink-0 mt-32 overflow-hidden">
{menuItems.map((item) => (
<Link
href={`${item.path}${isProduction ? ".html" : ""}`}
key={item.name}
>
<div
className={`block px-4 py-2 mb-4 font-bold whitespace-nowrap transition duration-300 ${
activeLink.startsWith(item.path) ||
activeLink.startsWith(item.path + ".html")
? "bg-sky-500 text-white rounded-r-full"
: "text-black hover:bg-gray-200 rounded-r-full"
}`}
>
{item.name}
</div>
</Link>
))}
</nav>
</aside>
);
}
export default Navigation;