sankethbk7777

Navbar.js

Jun 21st, 2021
294
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React from 'react';
  2. import './Navbar.css';
  3. import { FaHome } from 'react-icons/fa';
  4. import { FaUserCircle } from 'react-icons/fa';
  5. import { FaEnvelope } from 'react-icons/fa';
  6. import { FaUsers } from 'react-icons/fa';
  7. import { FaHeart } from 'react-icons/fa';
  8. import { FaSearch } from 'react-icons/fa';
  9. import { FaChevronCircleDown } from 'react-icons/fa';
  10. import { FaTimesCircle } from 'react-icons/fa';
  11. import { FaBirthdayCake } from 'react-icons/fa';
  12. import { useState, useEffect, useRef } from 'react';
  13.  
  14. function Navbar() {
  15.   const [searchBarFocussed, setSearchBarFoucssed] = useState(false);
  16.   const [searchBarMobileActive, setSearchBarMobileActive] = useState(false);
  17.   const [displayLogo, setDisplayLogo] = useState(true);
  18.  
  19.   useEffect(() => {
  20.     if (searchBarMobileActive === false) {
  21.       setDisplayLogo(false);
  22.       let animationTime = 200;
  23.       let animationTimeOut = setTimeout(() => {
  24.         setDisplayLogo(true);
  25.       }, animationTime);
  26.       return () => {
  27.         clearTimeout(animationTimeOut);
  28.       };
  29.     }
  30.   }, [searchBarMobileActive]);
  31.  
  32.   // When the container of the logo is below certain width (as of now 125px) we will display logo picture
  33.  
  34.   return (
  35.     <>
  36.       <nav>
  37.         {/* Navbar container */}
  38.         <div className='nav-container'>
  39.           {/* logo */}
  40.           <div className={`logo ${searchBarMobileActive ? 'logo-icon' : ''}`}>
  41.             <h4>
  42.               {displayLogo &&
  43.                 (searchBarMobileActive ? <FaBirthdayCake /> : 'The Navbar')}
  44.             </h4>
  45.           </div>
  46.  
  47.           {/* Search bar for laptops and tablets */}
  48.           <div className='search-bar'>
  49.             <form className='search-form'>
  50.               <input
  51.                 type='text'
  52.                 className='search-input'
  53.                 onFocus={() => setSearchBarFoucssed(true)}
  54.                 onBlur={() => setSearchBarFoucssed(false)}
  55.               />
  56.               {/* placeholder icon and text for animation */}
  57.               <div
  58.                 className={`search-placeholder-container ${
  59.                   searchBarFocussed ? 'search-placeholder-active' : ''
  60.                 }`}
  61.               >
  62.                 <FaSearch className='search-icon' />
  63.                 <span
  64.                   className={`placeholder-text ${
  65.                     searchBarFocussed ? 'placeholder-text-active' : ''
  66.                   }`}
  67.                 >
  68.                   Search
  69.                 </span>
  70.               </div>
  71.               <button type='submit' className='search-submit-button'></button>
  72.             </form>
  73.           </div>
  74.  
  75.           {/* search bar mobile */}
  76.  
  77.           {/* Navigation links mobile */}
  78.           <ul className='nav-links-mobile'>
  79.             <li
  80.               className={`nav-icon-container ${
  81.                 searchBarMobileActive ? 'search-container-mobile' : ''
  82.               }`}
  83.             >
  84.               <a href='#' className='nav-link'>
  85.                 <div
  86.                   className={`search-bar-mobile ${
  87.                     searchBarMobileActive ? 'search-bar-mobile-active' : ''
  88.                   }`}
  89.                 >
  90.                   <form className='search-form-mobile'>
  91.                     <FaSearch
  92.                       className={`nav-icon search-icon-mobile  ${
  93.                         searchBarMobileActive ? 'search-icon-mobile-active' : ''
  94.                       }`}
  95.                       onClick={() => setSearchBarMobileActive(true)}
  96.                     />
  97.  
  98.                     <FaTimesCircle
  99.                       class={`search-close-button-mobile ${
  100.                         searchBarMobileActive
  101.                           ? 'search-close-button-mobile-active'
  102.                           : ''
  103.                       }`}
  104.                       onClick={() => setSearchBarMobileActive(false)}
  105.                     />
  106.                     <input
  107.                       type='text'
  108.                       className={`search-input-mobile ${
  109.                         searchBarMobileActive
  110.                           ? 'search-input-mobile-active'
  111.                           : ''
  112.                       }`}
  113.                       onBlur={() => setSearchBarMobileActive(false)}
  114.                     />
  115.  
  116.                     <button
  117.                       type='submit'
  118.                       className='search-submit-button-mobile'
  119.                     ></button>
  120.                   </form>
  121.                 </div>
  122.               </a>
  123.             </li>
  124.             <li className='nav-icon-container'>
  125.               <a href='#' className='nav-link'>
  126.                 <FaChevronCircleDown className='nav-icon' />
  127.               </a>
  128.             </li>
  129.           </ul>
  130.  
  131.           {/* Navigation links */}
  132.           <ul class='nav-links'>
  133.             <li className='nav-icon-container'>
  134.               <a href='#' className='nav-link'>
  135.                 <FaHome className='nav-icon' />
  136.               </a>
  137.             </li>
  138.             <li className='nav-icon-container'>
  139.               <a href='#' className='nav-link'>
  140.                 <FaEnvelope className='nav-icon' />
  141.               </a>
  142.             </li>
  143.             <li className='nav-icon-container'>
  144.               <a href='#' className='nav-link'>
  145.                 <FaUsers className='nav-icon' />
  146.               </a>
  147.             </li>
  148.             <li className='nav-icon-container'>
  149.               <a href='#' className='nav-link'>
  150.                 <FaHeart className='nav-icon' />
  151.               </a>
  152.             </li>
  153.             <li className='nav-icon-container'>
  154.               <a href='#' className='nav-link'>
  155.                 <FaUserCircle className='nav-icon' />
  156.               </a>
  157.             </li>
  158.             <li className='nav-icon-container drop-down'>
  159.               <a href='#' className='nav-link'>
  160.                 <FaChevronCircleDown className='nav-icon' />
  161.               </a>
  162.             </li>
  163.           </ul>
  164.         </div>
  165.       </nav>
  166.     </>
  167.   );
  168. }
  169.  
  170. export default Navbar;
  171.  
Advertisement
Add Comment
Please, Sign In to add comment