From 4508039803bb6ba679d1df32b247a7b907f4c72b Mon Sep 17 00:00:00 2001 From: Asgarsk Date: Fri, 29 Nov 2024 17:06:41 +0530 Subject: [PATCH] Finished the Navbar and product dropdown issue --- src/components/Header/Navbar.jsx | 152 ++++++-------- .../Header/components/DesktopNav.jsx | 27 ++- .../Header/components/LanguageSelector.jsx | 12 +- .../Header/components/MobileNav.jsx | 74 +++++-- .../components/MobileProductShowcase.jsx | 49 +++++ .../Header/components/ProductShowcase.jsx | 188 ++++++++++-------- .../Header/components/SearchOverlay.jsx | 17 +- .../Header/constants/navigationData.js | 70 ++++++- .../Header/styles/DesktopNav.module.css | 11 + .../Header/styles/Header.module.css | 6 +- .../Header/styles/LanguageSelector.module.css | 17 ++ .../Header/styles/MobileNav.module.css | 11 + .../styles/MobileProductShowcase.module.css | 27 +++ .../Header/styles/ProductShowcase.module.css | 43 ++++ .../Header/styles/SearchOverlay.module.css | 15 ++ src/components/Header/styles/base.module.css | 31 +++ 16 files changed, 520 insertions(+), 230 deletions(-) create mode 100644 src/components/Header/components/MobileProductShowcase.jsx create mode 100644 src/components/Header/styles/DesktopNav.module.css create mode 100644 src/components/Header/styles/LanguageSelector.module.css create mode 100644 src/components/Header/styles/MobileNav.module.css create mode 100644 src/components/Header/styles/MobileProductShowcase.module.css create mode 100644 src/components/Header/styles/ProductShowcase.module.css create mode 100644 src/components/Header/styles/SearchOverlay.module.css create mode 100644 src/components/Header/styles/base.module.css diff --git a/src/components/Header/Navbar.jsx b/src/components/Header/Navbar.jsx index e0d2ca3..7152b23 100644 --- a/src/components/Header/Navbar.jsx +++ b/src/components/Header/Navbar.jsx @@ -7,6 +7,7 @@ import OptimizedImage from '../common/OptimizedImage'; import { menuItems, languages, mobileMenuVariants } from './constants/navigationData'; import { headerSchema } from './schema/headerSchema'; import styles from './styles/Header.module.css'; +import baseStyles from './styles/base.module.css'; import Logo from '@/assets/Logo/Tech4biz-logo.webp'; const SearchOverlay = lazy(() => import('./components/SearchOverlay')); @@ -15,7 +16,7 @@ const MobileNav = lazy(() => import('./components/MobileNav')); const LanguageSelector = lazy(() => import('./components/LanguageSelector')); const Navbar = () => { - // State management with hooks + // State management remains the same const [state, setState] = useState({ isProductsOpen: false, isLanguageOpen: false, @@ -26,10 +27,11 @@ const Navbar = () => { isSticky: false }); + // Refs and handlers remain the same const desktopLanguageRef = useRef(null); const mobileLanguageRef = useRef(null); - // Event handlers with useCallback + // Event handlers with useCallback remain the same const handleClickOutside = useCallback((event) => { if (desktopLanguageRef.current && !desktopLanguageRef.current.contains(event.target)) { setState(prev => ({ ...prev, isLanguageOpen: false })); @@ -43,12 +45,11 @@ const Navbar = () => { setState(prev => ({ ...prev, isSticky: window.scrollY > 0 })); }, []); - // Effect for event listeners + // Effects remain the same useEffect(() => { document.addEventListener('mousedown', handleClickOutside); window.addEventListener('scroll', handleScroll); - // Inject schema const script = document.createElement('script'); script.type = 'application/ld+json'; script.text = JSON.stringify(headerSchema); @@ -64,13 +65,15 @@ const Navbar = () => { return ( Loading...}> - setState(prev => ({ ...prev, isSearchOpen: false }))} /> + setState(prev => ({ ...prev, isSearchOpen: false }))} + />