From 1ec90496e19caed75eead1937f2610a44b21822d Mon Sep 17 00:00:00 2001 From: Dima Rifai <dima.rifai@gmail.com> Date: Wed, 27 Nov 2024 11:50:10 +0200 Subject: [PATCH] Issue 386 - Style the menu in case of mobile --- components/navbar.tsx | 62 +++++++++++++++++++++++++++++-------------- 1 file changed, 42 insertions(+), 20 deletions(-) diff --git a/components/navbar.tsx b/components/navbar.tsx index 59e2c6d8..146cc03a 100644 --- a/components/navbar.tsx +++ b/components/navbar.tsx @@ -2,6 +2,8 @@ import { useState } from "react"; import { Menu, X } from "lucide-react"; import Link from "next/link"; import Image from "next/image"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { faWrench, faCaretDown, faCircleNodes } from "@fortawesome/free-solid-svg-icons"; import { cn } from "@/lib/utils"; import useMediaQuery from "@/hooks/common/useMediaQuery"; @@ -14,19 +16,21 @@ export default function Navbar() { const isMobile = useMediaQuery("(max-width: 768px)"); const [menuOpen, setMenuOpen] = useState(false); const [searchBarOpen, setSearchBarOpen] = useState(false); + const [settingsOpen, setSettingsOpen] = useState(false); return ( <div className="fixed w-full top-0 left-0 z-50" data-testid="navbar" > - <div className="flex p-2 justify-between bg-theme dark:bg-theme text-white items-center relative"> + <div + className="flex p-2 justify-between bg-theme text-white items-center relative"> {isMobile ? ( <div className="flex items-center justify-between w-full"> <Link href={"/"} className="relative pr-2" - > + > <Image src="/hive-logo.png" alt="Hive logo" @@ -49,9 +53,13 @@ export default function Navbar() { </div> <div className={cn( - "fixed top-0 right-0 p-5 bg-theme dark:bg-theme w-full h-full translate-x-full duration-500 z-50", + "fixed top-0 right-0 p-5 w-full h-full translate-x-full duration-500 z-50", { "translate-x-0": menuOpen } )} + style={{ + background: "var(--background-start-rgb)", + backgroundImage: "linear-gradient(var(--background-start-rgb), var(--background-end-rgb))", + }} > <div className="w-full flex items-center justify-end"> <X @@ -61,28 +69,45 @@ export default function Navbar() { className="cursor-pointer" /> </div> - <div className="flex flex-col text-2xl gap-y-2"> - <ThemeToggle /> + <div className="text-left py-2 rounded-lg bg-white shadow-md mb-4 px-4 hover:bg-gray-100 transition dark:bg-gray-800 dark:hover:bg-gray-700"> + <div className="flex items-center"> + <FontAwesomeIcon icon={faWrench} className="mr-2" /> + <span + className="text-lg font-bold cursor-pointer" + onClick={() => setSettingsOpen(!settingsOpen)} + > + Settings + <FontAwesomeIcon icon={faCaretDown} className="ml-2" /> + </span> + </div> + {settingsOpen && ( + <div className="mt-2 pl-8 space-y-2"> + <div className="py-1 border-b-2 border-gray-300 dark:border-gray-600 flex items-center"> + <ThemeToggle /> + <span className="text-base ml-2 text-gray-600 dark:text-gray-400">Dark/Light Mode</span> + </div> + <div className="py-1 text-gray-600 dark:text-gray-400"> + <ViewPopover isMobile={isMobile} /> + </div> + </div> + )} + </div> + <div className="text-left py-2 rounded-lg bg-white shadow-md px-4 hover:bg-gray-100 transition dark:bg-gray-800 dark:hover:bg-gray-700"> <Link href={"/witnesses"} + className="flex items-center" onClick={() => setMenuOpen(false)} > - Witnesses + <FontAwesomeIcon icon={faCircleNodes} className="mr-2" /> + <span className="text-lg font-bold">Witnesses</span> </Link> - - <div> - <ViewPopover isMobile={isMobile} /> - </div> </div> </div> </div> ) : ( <> <div className="flex items-center pl-12 gap-x-4"> - <Link - href={"/"} - className="pr-2 flex justify-normal items-center text-explorer-turquoise font-medium" - > + <Link href={"/"} className="pr-2 flex justify-normal items-center text-explorer-turquoise font-medium"> <Image src="/hive-logo.png" alt="Hive logo" @@ -90,8 +115,8 @@ export default function Navbar() { height={50} data-testid="hive-logo" /> - <div - className="ml-4" + <div + className="ml-4" data-testid="hive-block-explorer" > Hive Block Explorer @@ -99,10 +124,7 @@ export default function Navbar() { </Link> <ViewPopover /> <SyncInfo /> - <Link - href={"/witnesses"} - data-testid="navbar-witnesses-link" - > + <Link href={"/witnesses"} data-testid="navbar-witnesses-link"> Witnesses </Link> <ThemeToggle /> -- GitLab