2025-02-25 08:58:35 +05:30

155 lines
5.4 KiB
TypeScript

"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;