135 lines
4.7 KiB
TypeScript
135 lines
4.7 KiB
TypeScript
"use client";
|
|
|
|
import React, { useState } 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>('');
|
|
const [mobileMenuOpen, setMobileMenuOpen] = useState<boolean>(false); // State for mobile menu
|
|
|
|
const toggleProduct = () => {
|
|
setShowProduct(!showProduct);
|
|
setShowSolutions(false);
|
|
setShowResources(false);
|
|
setActiveTab('product');
|
|
};
|
|
|
|
const toggleSolutions = () => {
|
|
setShowSolutions(!showSolutions);
|
|
setShowProduct(false);
|
|
setShowResources(false);
|
|
setActiveTab('solutions');
|
|
};
|
|
|
|
const toggleResources = () => {
|
|
setShowResources(!showResources);
|
|
setShowProduct(false);
|
|
setShowSolutions(false);
|
|
setActiveTab('resources');
|
|
};
|
|
|
|
const toggleMobileMenu = () => {
|
|
setMobileMenuOpen(!mobileMenuOpen);
|
|
};
|
|
|
|
return (
|
|
<div 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' : ''}`} onClick={toggleProduct}>
|
|
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' : ''}`} onClick={toggleSolutions}>
|
|
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'>Pricing</li></a>
|
|
|
|
{/* Resources Menu */}
|
|
<li className={`flex items-center cursor-pointer relative ${activeTab === 'resources' ? 'text-violet-500' : ''}`} onClick={toggleResources}>
|
|
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'>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;
|