From 3c25d1a351394642b2c20ab5ffa4866218032225 Mon Sep 17 00:00:00 2001 From: Thatsaphorn Atchariyaphap Date: Fri, 4 Apr 2025 18:36:44 +0000 Subject: [PATCH] Merge branch 'navbar-refactoring' into 'dev' Enhance MobileNav with theme context and visual updates See merge request rheinsw/website!19 --- components/Home/Navbar/DesktopNav.tsx | 31 ++++++++------ components/Home/Navbar/MobileNav.tsx | 60 ++++++++++++++++++--------- constant/Constant.ts | 4 +- 3 files changed, 61 insertions(+), 34 deletions(-) diff --git a/components/Home/Navbar/DesktopNav.tsx b/components/Home/Navbar/DesktopNav.tsx index e7d8cf7..9ad51f6 100644 --- a/components/Home/Navbar/DesktopNav.tsx +++ b/components/Home/Navbar/DesktopNav.tsx @@ -24,12 +24,12 @@ const Nav = ({openNav}: Props) => { if (window.scrollY >= 90) { setNavBg(true); setNavHeight("h-[8vh]"); - setContentSize("text-sm md:text-base"); + setContentSize("text-[9px] md:text-[11px]"); setButtonSize("md:px-5 md:py-1.5 px-3 py-1 text-xs"); } else { setNavBg(false); setNavHeight("h-[10vh]"); - setContentSize("text-base md:text-lg"); + setContentSize("text-[10px] md:text-xs"); setButtonSize("md:px-6 md:py-2 px-4 py-1 text-sm"); } }; @@ -49,34 +49,38 @@ const Nav = ({openNav}: Props) => {
{/* LOGO */} -

- Rhein Software +

+ Rhein Software

{/* Desktop Nav Links */}
{navLinks.map((link) => ( -

{link.label}

+

+ {link.label} +

))}
{/* Right Side Buttons */}
- {/* Portal Button */} + {/* Portal Button - Hidden on mobile */} - {/* Theme Toggle Button */} + {/* Theme Toggle Button - Hidden on mobile */}
@@ -93,4 +98,4 @@ const Nav = ({openNav}: Props) => { ); }; -export default Nav; \ No newline at end of file +export default Nav; diff --git a/components/Home/Navbar/MobileNav.tsx b/components/Home/Navbar/MobileNav.tsx index 853025d..331b6ff 100644 --- a/components/Home/Navbar/MobileNav.tsx +++ b/components/Home/Navbar/MobileNav.tsx @@ -1,7 +1,9 @@ import {navLinks} from "@/constant/Constant"; import Link from "next/link"; -import React from "react"; +import React, {useContext} from "react"; import {CgClose} from "react-icons/cg"; +import {ThemeContext} from "@/components/provider/ThemeProvider"; +import {themeColors} from "@/components/Helper/ThemeColors"; type Props = { showNav: boolean; @@ -9,32 +11,52 @@ type Props = { }; const MobileNav = ({closeNav, showNav}: Props) => { - const navOpen = showNav ? "translate-x-0" : "translate-x-[-100%]"; - + const navOpen = showNav ? "translate-y-0 opacity-100" : "-translate-y-20 opacity-0 pointer-events-none"; + const {theme, toggleTheme} = useContext(ThemeContext); + const colors = themeColors[theme]; return ( -
- {/* overlay */} +
+ {/* overlay background */}
- {/* Navlinks */} + className={`fixed inset-0 z-[10000] transition-opacity duration-500 ${ + showNav ? "opacity-60 bg-black" : "opacity-0 pointer-events-none" + }`} + onClick={closeNav} + /> + + {/* nav menu */}
- {navLinks.map((link) => { - return ( +
+ {/* Close icon */} + + + {navLinks.map((link) => ( -

+

{link.label}

- ); - })} - {/* Close icon */} - + ))} + + {/* Theme toggle button */} + +
); diff --git a/constant/Constant.ts b/constant/Constant.ts index b053e9f..0335c99 100644 --- a/constant/Constant.ts +++ b/constant/Constant.ts @@ -7,11 +7,11 @@ export const navLinks = [ { id: 2, url: '#', - label: 'About Us', + label: 'Über uns', }, { id: 3, url: 'contact', - label: 'Contact', + label: 'Kontakt', } ]; \ No newline at end of file