Navigation: Theme-Schalter und Kontakt-Button bekommen wieder Mausklicks

Der Link-Container der Desktop-Navigation ist "absolute inset-0" (hält die
Links mittig), lag dadurch aber über .navbar-actions und schluckte alle
Mausklicks auf Theme-Schalter und Kontakt-Button ab 1024 px. Der Container
ist jetzt pointer-events-none, die Links pointer-events-auto; Position und
Optik bleiben identisch, die Hover-Pille der Links funktioniert weiter.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
rootandClaude Sonnet 5.5 committed 2026-10-01 10:43:29 +00:00
1 parent b2e17d96c2
commit 0d12bbc06a
2 files changed
+19 -2

No files matched your search

+4 -2
View File
@@ -105,7 +105,9 @@ export const NavItems = ({
<motion.div <motion.div
onMouseLeave={() => setHovered(null)} onMouseLeave={() => setHovered(null)}
className={cn( className={cn(
"absolute inset-0 hidden flex-1 flex-row items-center justify-center space-x-2 text-sm font-medium text-zinc-600 transition duration-200 hover:text-zinc-800 lg:flex lg:space-x-2", // absolute inset-0 hält die Links mittig, liegt aber über Theme-Schalter und Kontakt-Button:
// der Container nimmt deshalb keine Mausklicks an (pointer-events-none), nur die Links selbst.
"pointer-events-none absolute inset-0 hidden flex-1 flex-row items-center justify-center space-x-2 text-sm font-medium text-zinc-600 transition duration-200 hover:text-zinc-800 lg:flex lg:space-x-2",
className className
)} )}
> >
@@ -114,7 +116,7 @@ export const NavItems = ({
const commonProps = { const commonProps = {
onMouseEnter: () => setHovered(idx), onMouseEnter: () => setHovered(idx),
onClick: onItemClick, onClick: onItemClick,
className: "relative px-4 py-2 text-neutral-900 dark:text-neutral-300", className: "pointer-events-auto relative px-4 py-2 text-neutral-900 dark:text-neutral-300",
key: `link-${idx}`, key: `link-${idx}`,
}; };
const inner = ( const inner = (
+15
View File
@@ -471,3 +471,18 @@ describe("A2 Hintergrundbilder nur im dunklen Modus", () => {
expect(bild).toHaveClass("hidden", "dark:block"); expect(bild).toHaveClass("hidden", "dark:block");
}); });
}); });
describe("A3 Navigation: Theme-Schalter, Kontakt und Logo bekommen echte Mausklicks", () => {
it("der absolut gelegte Link-Container fängt keine Mausklicks ab, die Links selbst schon", () => {
zeige(<Header />);
const link = screen.getAllByRole("link", { name: "Leistungen" })[0];
const container = link.parentElement as HTMLElement;
// bleibt mittig über die ganze Leiste gelegt (Optik unverändert) …
expect(container).toHaveClass("absolute", "inset-0", "justify-center");
// … lässt Klicks aber zum Theme-Schalter, zum Kontakt-Button und zum Logo durch
expect(container).toHaveClass("pointer-events-none");
for (const name of ["Über uns", "Leistungen", "Ablauf"]) {
expect(screen.getAllByRole("link", { name })[0]).toHaveClass("pointer-events-auto");
}
});
});