diff --git a/src/App.jsx b/src/App.jsx index 3ad3902..0706715 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -23,7 +23,7 @@ import { ThemeProvider } from "@/context/ThemeContext"; import Contributors from "@/components/Contributors"; import AOS from "aos"; import "aos/dist/aos.css"; -import { CoinContext } from "@/context/CoinContext"; +import { CoinContext } from "@/context/contexts"; import LoadingSpinner from "@/components/LoadingSpinner"; import { Toaster } from "react-hot-toast"; import ScrollToTop from "@/components/ScrollToTop"; diff --git a/src/components/MarketFilters.jsx b/src/components/MarketFilters.jsx index e6cf1d6..69ed355 100644 --- a/src/components/MarketFilters.jsx +++ b/src/components/MarketFilters.jsx @@ -1,6 +1,6 @@ import React, {useState} from 'react' import { useContext } from "react"; -import { CoinContext } from "../context/CoinContext"; +import { CoinContext } from "../context/contexts"; import "./MarketFilters.css"; const MarketFilters = () => { diff --git a/src/components/Navbar.jsx b/src/components/Navbar.jsx index 0a4bb7d..5039387 100644 --- a/src/components/Navbar.jsx +++ b/src/components/Navbar.jsx @@ -15,28 +15,14 @@ function Navbar() { const [scrolled, setScrolled] = useState(false); const [openDropdown, setOpenDropdown] = useState(null); const [isProfileOpen, setIsProfileOpen] = useState(false); - const isDashboardPage = location.pathname === "/dashboard"; /* -------------------- Handlers -------------------- */ - - const handleDropdownEnter = (label) => { - setOpenDropdown(label); - }; - - const handleDropdownLeave = () => { - setOpenDropdown(null); - }; - - const handleDropdownClick = (label) => { - setOpenDropdown(openDropdown === label ? null : label); - }; - - const toggleMobileMenu = () => { - setIsMobileMenuOpen((prev) => !prev); - }; - + const handleDropdownEnter = (label) => setOpenDropdown(label); + const handleDropdownLeave = () => setOpenDropdown(null); + const handleDropdownClick = (label) => setOpenDropdown((prev) => (prev === label ? null : label)); + const toggleMobileMenu = () => setIsMobileMenuOpen((prev) => !prev); const closeMobileMenu = () => { setIsMobileMenuOpen(false); setOpenDropdown(null); @@ -53,7 +39,6 @@ function Navbar() { }, [logout, navigate]); /* -------------------- Effects -------------------- */ - useEffect(() => { const onScroll = () => setScrolled(window.scrollY > 20); window.addEventListener("scroll", onScroll); @@ -62,32 +47,35 @@ function Navbar() { useEffect(() => { const handleClickOutside = (e) => { - if (openDropdown && !e.target.closest(".dropdown-container")) { - setOpenDropdown(null); - } - if (isProfileOpen && !event.target.closest('.profile-menu-container')) { - setIsProfileOpen(false); + try { + if (openDropdown && !e.target.closest(".dropdown-container") && !e.target.closest(".dropdown-trigger")) { + setOpenDropdown(null); + } + if (isProfileOpen && !e.target.closest('.profile-menu-container')) { + setIsProfileOpen(false); + } + } catch (err) { + // ignore } }; - const handleEscapeKey = (event) => { - if (event.key === 'Escape') { + const handleEscapeKey = (ev) => { + if (ev.key === 'Escape') { if (openDropdown) setOpenDropdown(null); if (isProfileOpen) setIsProfileOpen(false); } }; document.addEventListener("click", handleClickOutside); - document.addEventListener("keydown", handleEscape); + document.addEventListener("keydown", handleEscapeKey); return () => { document.removeEventListener("click", handleClickOutside); - document.removeEventListener("keydown", handleEscape); + document.removeEventListener("keydown", handleEscapeKey); }; }, [openDropdown, isProfileOpen]); /* -------------------- Nav Links -------------------- */ - const navLinks = [ { to: "/", label: "Home" }, { to: "/pricing", label: "Pricing" }, @@ -111,13 +99,10 @@ function Navbar() { const linksToRender = currentUser ? authenticatedNavLinks : navLinks; - /* -------------------- JSX -------------------- */ - return (