Spaces:
Runtime error
Runtime error
import { Disclosure } from "@headlessui/react"; | |
import clsx from "clsx"; | |
import Image from "next/image"; | |
import { useRouter } from "next/router"; | |
import { useState } from "react"; | |
import { FaBars, FaChevronRight, FaTimes } from "react-icons/fa"; | |
import GlowWrapper from "./GlowWrapper"; | |
import CycleIcons from "./motions/CycleIcons"; | |
import FadeIn from "./motions/FadeIn"; | |
import PrimaryButton from "./PrimaryButton"; | |
import TextButton from "./TextButton"; | |
import BlogsIcon from "../../public/icons/icon-blogs.svg"; | |
import DocsIcon from "../../public/icons/icon-docs.svg"; | |
import GithubIcon from "../../public/icons/icon-github.svg"; | |
import HomeIcon from "../../public/icons/icon-home.svg"; | |
import PricingIcon from "../../public/icons/icon-pricing.svg"; | |
const navigation = [ | |
{ name: "Home", href: "/home", icon: <HomeIcon /> }, | |
{ name: "Blog", href: "/blog", icon: <BlogsIcon /> }, | |
{ name: "Pricing", href: "https://agentgpt.reworkd.ai/plan", icon: <PricingIcon /> }, | |
{ | |
name: "Github", | |
href: "https://github.com/reworkd/AgentGPT", | |
icon: <GithubIcon />, | |
}, | |
{ name: "Docs", href: "https://docs.reworkd.ai/", icon: <DocsIcon /> }, | |
]; | |
export default function NavBar() { | |
const router = useRouter(); | |
const currentIndex = navigation.findIndex( | |
(nav) => router.pathname.includes(nav.href) || router.pathname === nav.href | |
); | |
const [hoveredButtonIndex, setHoveredButtonIndex] = useState(0); | |
return ( | |
<FadeIn duration={3}> | |
<Disclosure as="nav" className="z-50 w-full bg-transparent text-white"> | |
{({ open }) => ( | |
<> | |
<div className="align-center flex h-16 flex-row justify-between"> | |
<div className="flex flex-shrink-0 cursor-pointer items-center lg:flex-1"> | |
<Image | |
src="/logos/dark-default-solid.svg" | |
width="25" | |
height="25" | |
alt="Reworkd AI" | |
className="mb-1 mr-2 invert-0" | |
/> | |
<span className="text-xl font-light tracking-wider">Reworkd</span> | |
</div> | |
<div className="hidden flex-1 items-center justify-center xmd:flex"> | |
<div className="border-gradient flex h-[42px] items-center self-center overflow-hidden rounded-full bg-opacity-5 px-2 py-1 backdrop-blur-lg"> | |
<CycleIcons | |
currentIndex={currentIndex} | |
hoveredItemIndex={hoveredButtonIndex} | |
icons={navigation.map((nav) => nav.icon)} | |
/> | |
{navigation.map((item, i) => ( | |
<a | |
key={item.name} | |
href={item.href} | |
className={clsx( | |
"after-gradient relative flex flex-col items-center justify-center p-2 px-4 text-center font-inter text-sm tracking-normal text-white transition-colors duration-700 before:absolute before:-bottom-[20px] before:-z-20 before:h-6 before:w-12 before:bg-white/60 before:blur-lg before:transition-opacity before:duration-700 after:absolute after:-bottom-[2.25px] after:h-[1px] after:w-16 after:px-2 after:transition-opacity after:duration-700 hover:text-white", | |
currentIndex !== i && "text-white/50 before:opacity-0 after:opacity-0" | |
)} | |
onMouseEnter={() => setHoveredButtonIndex(i)} | |
onMouseLeave={() => setHoveredButtonIndex(0)} | |
> | |
{item.name} | |
</a> | |
))} | |
</div> | |
</div> | |
<div className="hidden justify-end gap-2 xmd:flex sm:items-center lg:flex-1"> | |
<GlowWrapper className="opacity-40"> | |
<PrimaryButton | |
onClick={() => { | |
window.open("https://6h6bquxo5g1.typeform.com/to/qscfsOf1", "_blank"); | |
}} | |
> | |
<> | |
<span>Join the Waitlist</span> | |
<FaChevronRight | |
size="12" | |
className="text-gray-700 transition-transform group-hover:translate-x-1" | |
/> | |
</> | |
</PrimaryButton> | |
</GlowWrapper> | |
</div> | |
<div className="-mr-2 flex items-center xmd:hidden"> | |
{/* Mobile menu button */} | |
<Disclosure.Button className="inline-flex items-center justify-center rounded-md p-2 text-white hover:bg-neutral-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2"> | |
<span className="sr-only">Open main menu</span> | |
{open ? ( | |
<FaTimes className="block h-6 w-6" aria-hidden="true" /> | |
) : ( | |
<FaBars className="block h-6 w-6" aria-hidden="true" /> | |
)} | |
</Disclosure.Button> | |
</div> | |
</div> | |
<Disclosure.Panel className="xmd:hidden"> | |
<div className="space-y-1 pb-3 pt-2"> | |
{navigation.map((item) => ( | |
<Disclosure.Button | |
key={item.name} | |
as="a" | |
href={item.href} | |
className="block border-l-4 border-transparent py-2 pl-3 pr-4 text-base text-gray-600 hover:border-gray-300 hover:bg-gray-50 hover:text-gray-800" | |
> | |
{item.name} | |
</Disclosure.Button> | |
))} | |
</div> | |
</Disclosure.Panel> | |
</> | |
)} | |
</Disclosure> | |
</FadeIn> | |
); | |
} | |