Advertisement
bebo231312312321

Untitled

Sep 11th, 2024
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, { useState, useEffect } from "react";
  2. import "./Header.css";
  3. import { Link, NavLink } from "react-router-dom";
  4. import logo from '../../assets/images/logo-light-5.png';
  5.  
  6. export const Header = () => {
  7.     const [isMenuOpen, setIsMenuOpen] = useState(false);
  8.     const [isSticky, setIsSticky] = useState(false);
  9.  
  10.     const toggleMenu = () => {
  11.         setIsMenuOpen(!isMenuOpen);
  12.     };
  13.  
  14.     const closeMenuAndNavigateHome = () => {
  15.         if (isMenuOpen) {
  16.             setIsMenuOpen(false);
  17.         }
  18.     };
  19.  
  20.     const closeMenu = () => {
  21.         setIsMenuOpen(false);
  22.     };
  23.  
  24.     const handleLinkClick = () => {
  25.         closeMenu();
  26.     };
  27.  
  28.     useEffect(() => {
  29.         const handleScroll = () => {
  30.             if (window.scrollY > 50) {
  31.                 setIsSticky(true);
  32.             } else {
  33.                 setIsSticky(false);
  34.             }
  35.         };
  36.  
  37.         window.addEventListener("scroll", handleScroll);
  38.         return () => {
  39.             window.removeEventListener("scroll", handleScroll);
  40.         };
  41.     }, []);
  42.  
  43.     useEffect(() => {
  44.         if (isMenuOpen) {
  45.             document.body.classList.add('body-no-scroll');
  46.         } else {
  47.             document.body.classList.remove('body-no-scroll');
  48.         }
  49.     }, [isMenuOpen]);
  50.  
  51.     return (
  52.         <header className={`header ${isSticky ? "sticky" : ""}`}>
  53.             <div className="sticky-container">
  54.                 <Link to="/" className="logo-container" onClick={closeMenuAndNavigateHome}>
  55.                     <img src={logo} alt="logo" className="logo" />
  56.                 </Link>
  57.                 <button className={`menu-icon ${isMenuOpen ? "open" : ""}`} onClick={toggleMenu}>
  58.                     <div className="bar"></div>
  59.                     <div className="bar"></div>
  60.                     <div className="bar"></div>
  61.                 </button>
  62.             </div>
  63.             <nav className={`nav-links ${isMenuOpen ? "open" : ""}`}>
  64.                 <div className="dropdown">
  65.                     <NavLink to="/about" activeClassName="active">About</NavLink>
  66.                     <div className="dropdown-content">
  67.                         <NavLink to="/about/mission" activeClassName="active" onClick={handleLinkClick}>Mission</NavLink>
  68.                         <NavLink to="/about/contacts" activeClassName="active" onClick={handleLinkClick}>Contacts</NavLink>
  69.                     </div>
  70.                 </div>
  71.                 <div className="dropdown">
  72.                     <NavLink to="/community" activeClassName="active">Community</NavLink>
  73.                     <div className="dropdown-content">
  74.                         <NavLink to="/community/1" activeClassName="active" onClick={handleLinkClick}>Forum</NavLink>
  75.                         <NavLink to="/community/2" activeClassName="active" onClick={handleLinkClick}>Users</NavLink>
  76.                         <NavLink to="/community/3" activeClassName="active" onClick={handleLinkClick}>Map</NavLink>
  77.                     </div>
  78.                 </div>
  79.                 <div className="dropdown">
  80.                     <NavLink to="/educations" activeClassName="active">Educations</NavLink>
  81.                     <div className="dropdown-content">
  82.                         <NavLink to="/educations/1" activeClassName="active" onClick={handleLinkClick}>Course Upload: Instructors</NavLink>
  83.                         <NavLink to="/educations/2" activeClassName="active" onClick={handleLinkClick}>Course Catalog: Users Access</NavLink>
  84.                     </div>
  85.                 </div>
  86.                 <div className="dropdown">
  87.                     <NavLink to="/jobs" activeClassName="active">Jobs</NavLink>
  88.                     <div className="dropdown-content">
  89.                         <NavLink to="/jobs/1" activeClassName="active" onClick={handleLinkClick}>Post new job</NavLink>
  90.                         <NavLink to="/jobs/2" activeClassName="active" onClick={handleLinkClick}>Search job</NavLink>
  91.  
  92.                     </div>
  93.                 </div>
  94.                 <section className="mobile-buttons">
  95.                     <Link to="/sign_up/register" className="btn btn-dark-gray">Sign up</Link>
  96.                     <Link to="#" className="btn btn-blue">Support</Link>
  97.                 </section>
  98.             </nav>
  99.  
  100.             <section className="right">
  101.                 <Link to="/sign_up/register" className="btn btn-dark-gray">Sign up</Link>
  102.                 <Link to="#" className="btn btn-blue">Support</Link>
  103.             </section>
  104.         </header>
  105.     );
  106. };
  107.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement