47 lines
1.7 KiB
JavaScript
47 lines
1.7 KiB
JavaScript
// src/components/Navigation.jsx
|
|
import React, { useEffect, useState } from "react";
|
|
import Link from "next/link"; // Importiere Link von Next.js
|
|
import { useRouter } from "next/router";
|
|
|
|
function Navigation() {
|
|
const router = useRouter();
|
|
const [activeLink, setActiveLink] = useState(router.pathname); // Verwende den aktuellen Pfad als initialen Wert
|
|
|
|
useEffect(() => {
|
|
// Wenn sich die Route ändert, wird der activeLink-Zustand aktualisiert
|
|
setActiveLink(router.pathname);
|
|
}, [router.pathname]);
|
|
|
|
const menuItems = [
|
|
{ name: "Übersicht", path: "/" },
|
|
{ name: "Kabelüberwachung", path: "/Kabelueberwachung" },
|
|
{ name: "Zutrittskontrolle", path: "/Access" }, // Pfad angepasst
|
|
{ name: "Ein- und Ausgänge", path: "/Einausgaenge" },
|
|
{ name: "Analoge Eingänge", path: "/AnalogeEingaenge" },
|
|
{ name: "Meldungen", path: "/Meldungen" },
|
|
];
|
|
|
|
return (
|
|
<aside className="w-1/6 flex-shrink-0 h-full mt-24">
|
|
<nav className="space-y-6 p-4">
|
|
{menuItems.map((item) => (
|
|
<Link href={item.path} key={item.name} legacyBehavior>
|
|
<a
|
|
className={`block px-4 py-2 font-bold whitespace-nowrap transition duration-300 ${
|
|
activeLink === item.path
|
|
? "bg-sky-500 text-white rounded-r-full" // Aktivierte Schaltfläche
|
|
: "text-black hover:bg-gray-200 rounded-r-full" // Nicht aktive Schaltfläche bei Hover
|
|
}`}
|
|
onClick={() => setActiveLink(item.path)} // Setzt das aktive Element beim Klick
|
|
>
|
|
{item.name}
|
|
</a>
|
|
</Link>
|
|
))}
|
|
</nav>
|
|
</aside>
|
|
);
|
|
}
|
|
|
|
export default Navigation;
|