Skip to content
Snippets Groups Projects
Commit 1ec90496 authored by Dima Rifai's avatar Dima Rifai
Browse files

Issue 386 - Style the menu in case of mobile

parent e8ce5d05
No related branches found
No related tags found
2 merge requests!481bring recent develop changes to mater to match the backend,!480Delrifai/#386 side menu mobile changes
Pipeline #110002 failed
...@@ -2,6 +2,8 @@ import { useState } from "react"; ...@@ -2,6 +2,8 @@ import { useState } from "react";
import { Menu, X } from "lucide-react"; import { Menu, X } from "lucide-react";
import Link from "next/link"; import Link from "next/link";
import Image from "next/image"; 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 { cn } from "@/lib/utils";
import useMediaQuery from "@/hooks/common/useMediaQuery"; import useMediaQuery from "@/hooks/common/useMediaQuery";
...@@ -14,19 +16,21 @@ export default function Navbar() { ...@@ -14,19 +16,21 @@ export default function Navbar() {
const isMobile = useMediaQuery("(max-width: 768px)"); const isMobile = useMediaQuery("(max-width: 768px)");
const [menuOpen, setMenuOpen] = useState(false); const [menuOpen, setMenuOpen] = useState(false);
const [searchBarOpen, setSearchBarOpen] = useState(false); const [searchBarOpen, setSearchBarOpen] = useState(false);
const [settingsOpen, setSettingsOpen] = useState(false);
return ( return (
<div <div
className="fixed w-full top-0 left-0 z-50" className="fixed w-full top-0 left-0 z-50"
data-testid="navbar" 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 ? ( {isMobile ? (
<div className="flex items-center justify-between w-full"> <div className="flex items-center justify-between w-full">
<Link <Link
href={"/"} href={"/"}
className="relative pr-2" className="relative pr-2"
> >
<Image <Image
src="/hive-logo.png" src="/hive-logo.png"
alt="Hive logo" alt="Hive logo"
...@@ -49,9 +53,13 @@ export default function Navbar() { ...@@ -49,9 +53,13 @@ export default function Navbar() {
</div> </div>
<div <div
className={cn( 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 } { "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"> <div className="w-full flex items-center justify-end">
<X <X
...@@ -61,28 +69,45 @@ export default function Navbar() { ...@@ -61,28 +69,45 @@ export default function Navbar() {
className="cursor-pointer" className="cursor-pointer"
/> />
</div> </div>
<div className="flex flex-col text-2xl gap-y-2"> <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">
<ThemeToggle /> <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 <Link
href={"/witnesses"} href={"/witnesses"}
className="flex items-center"
onClick={() => setMenuOpen(false)} onClick={() => setMenuOpen(false)}
> >
Witnesses <FontAwesomeIcon icon={faCircleNodes} className="mr-2" />
<span className="text-lg font-bold">Witnesses</span>
</Link> </Link>
<div>
<ViewPopover isMobile={isMobile} />
</div>
</div> </div>
</div> </div>
</div> </div>
) : ( ) : (
<> <>
<div className="flex items-center pl-12 gap-x-4"> <div className="flex items-center pl-12 gap-x-4">
<Link <Link href={"/"} className="pr-2 flex justify-normal items-center text-explorer-turquoise font-medium">
href={"/"}
className="pr-2 flex justify-normal items-center text-explorer-turquoise font-medium"
>
<Image <Image
src="/hive-logo.png" src="/hive-logo.png"
alt="Hive logo" alt="Hive logo"
...@@ -90,8 +115,8 @@ export default function Navbar() { ...@@ -90,8 +115,8 @@ export default function Navbar() {
height={50} height={50}
data-testid="hive-logo" data-testid="hive-logo"
/> />
<div <div
className="ml-4" className="ml-4"
data-testid="hive-block-explorer" data-testid="hive-block-explorer"
> >
Hive Block Explorer Hive Block Explorer
...@@ -99,10 +124,7 @@ export default function Navbar() { ...@@ -99,10 +124,7 @@ export default function Navbar() {
</Link> </Link>
<ViewPopover /> <ViewPopover />
<SyncInfo /> <SyncInfo />
<Link <Link href={"/witnesses"} data-testid="navbar-witnesses-link">
href={"/witnesses"}
data-testid="navbar-witnesses-link"
>
Witnesses Witnesses
</Link> </Link>
<ThemeToggle /> <ThemeToggle />
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment