"use client"; import React, { useState, useRef, useEffect } from "react"; import { FaAngleDown } from "react-icons/fa"; import { ProductDropdown, SolutionsDropdown, ResourcesDropdown } from "./dropdowns"; import MobileMenu from "./MobileMenu"; // Import the MobileMenu component const Navbar: React.FC = () => { const [showProduct, setShowProduct] = useState<boolean>(false); const [showSolutions, setShowSolutions] = useState<boolean>(false); const [showResources, setShowResources] = useState<boolean>(false); const [activeTab, setActiveTab] = useState<string | null>(null); const [mobileMenuOpen, setMobileMenuOpen] = useState<boolean>(false); const navbarRef = useRef<HTMLDivElement>(null); // Reference for the navbar const toggleDropdown = (tab: string) => { if (activeTab === tab) { setActiveTab(null); setShowProduct(false); setShowSolutions(false); setShowResources(false); } else { setActiveTab(tab); setShowProduct(tab === "product"); setShowSolutions(tab === "solutions"); setShowResources(tab === "resources"); } }; const toggleMobileMenu = () => { setMobileMenuOpen(!mobileMenuOpen); }; // Close dropdowns when clicking outside the navbar useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if (navbarRef.current && !navbarRef.current.contains(event.target as Node)) { setActiveTab(null); setShowProduct(false); setShowSolutions(false); setShowResources(false); } }; document.addEventListener("mousedown", handleClickOutside); return () => { document.removeEventListener("mousedown", handleClickOutside); }; }, []); return ( <div ref={navbarRef} className="fixed top-0 w-full h-fit px-10 bg-[#080E12] bg-clip-padding backdrop-filter backdrop-blur-sm bg-opacity-100 z-50"> <div className="w-full text-white flex items-center justify-between"> <div className="flex items-center space-x-12 relative"> <a href="/"> <img className="h-20" src="https://res.cloudinary.com/dezd109fz/image/upload/v1737306774/Screenshot_2025-01-16_150353_fwgdmz.png" alt="Logo" /> </a> {/* Desktop Menu */} <ul className="hidden md:flex space-x-12"> {/* Product Menu */} <li className={`flex items-center cursor-pointer relative ${activeTab === "product" ? "text-violet-500" : "text-white"}`} onClick={() => toggleDropdown("product")} > Product <FaAngleDown className="ml-2" /> {activeTab === "product" && ( <span className="absolute left-0 -bottom-1 transition-all duration-300"> <span className="block h-[2px] w-full bg-violet-500"></span> </span> )} </li> {/* Solutions Menu */} <li className={`flex items-center cursor-pointer relative ${activeTab === "solutions" ? "text-violet-500" : "text-white"}`} onClick={() => toggleDropdown("solutions")} > Solutions <FaAngleDown className="ml-2" /> {activeTab === "solutions" && ( <span className="absolute left-0 -bottom-1 transition-all duration-300"> <span className="block h-[2px] w-full bg-violet-500"></span> </span> )} </li> {/* Pricing */} <a href="/pricing"> <li className="flex items-center cursor-pointer text-white">Pricing</li> </a> {/* Resources Menu */} <li className={`flex items-center cursor-pointer relative ${activeTab === "resources" ? "text-violet-500" : "text-white"}`} onClick={() => toggleDropdown("resources")} > Resources <FaAngleDown className="ml-2" /> {activeTab === "resources" && ( <span className="absolute left-0 -bottom-1 transition-all duration-300"> <span className="block h-[2px] w-full bg-violet-500"></span> </span> )} </li> <a href="/ai-agents"> <li className="flex items-center cursor-pointer text-white">AI Agents</li> </a> </ul> {/* Hamburger Icon for Mobile View */} <div className="md:hidden flex items-center" onClick={toggleMobileMenu}> ☰ </div> </div> {/* Action Buttons */} <div className="hidden md:flex space-x-4"> <button className="border px-4 py-2 rounded-md text-white border-white hover:bg-gray-800">Start Free Trial</button> <button className="border px-4 py-2 rounded-md bg-violet-700 hover:bg-violet-500 text-white">Take a Demo</button> </div> </div> {/* Dropdowns for Desktop View */} <div className="border"> {showProduct && ( <div> <ProductDropdown /> </div> )} {showSolutions && ( <div> <SolutionsDropdown /> </div> )} {showResources && ( <div> <ResourcesDropdown /> </div> )} </div> {/* Mobile Menu */} {mobileMenuOpen && <MobileMenu show={mobileMenuOpen} toggle={toggleMobileMenu} />} </div> ); }; export default Navbar;