forked from emre/www_projectmycelium_com
- Renamed NodePage component and directory to NodesPage/nodes for consistency - Updated all navigation links from "Node" to "Nodes" across headers and footer - Replaced anchor tags with React Router Link components for proper SPA navigation - Reorganized NetworkPage component order and added NetworkPros section - Converted NetworkUsecases from horizontal slider to responsive grid layout - Added new use cases for adaptive mesh and compute fabric - Update
164 lines
6.3 KiB
TypeScript
164 lines
6.3 KiB
TypeScript
import { useState } from 'react'
|
|
import { Link } from 'react-router-dom'
|
|
import { Container } from './Container'
|
|
import { Button } from './Button'
|
|
import pmyceliumLogo from '../images/logos/logo_1.png'
|
|
import { Dialog } from '@headlessui/react'
|
|
import { Bars3Icon, XMarkIcon } from '@heroicons/react/24/outline'
|
|
|
|
export function Header() {
|
|
const [mobileMenuOpen, setMobileMenuOpen] = useState(false)
|
|
|
|
return (
|
|
<header className="bg-white">
|
|
<nav className="border-b border-gray-100">
|
|
<Container className="flex bg-transparent justify-between py-4">
|
|
<div className="relative z-10 flex items-center gap-16">
|
|
<Link to="/" aria-label="Home">
|
|
<img src={pmyceliumLogo} alt="Mycelium" className="h-8 w-auto" />
|
|
</Link>
|
|
<div className="hidden lg:flex lg:gap-10">
|
|
<Link
|
|
to="/network"
|
|
className="text-base/7 tracking-tight text-gray-700 hover:text-cyan-500 transition-colors"
|
|
>
|
|
Network
|
|
</Link>
|
|
<Link
|
|
to="/cloud"
|
|
className="text-base/7 tracking-tight text-gray-700 hover:text-cyan-500 transition-colors"
|
|
>
|
|
Cloud
|
|
</Link>
|
|
<Link
|
|
to="/pods"
|
|
className="text-base/7 tracking-tight text-gray-700 hover:text-cyan-500 transition-colors"
|
|
>
|
|
Pods
|
|
</Link>
|
|
<Link
|
|
to="/agents"
|
|
className="text-base/7 tracking-tight text-gray-700 hover:text-cyan-500 transition-colors"
|
|
>
|
|
Agents
|
|
</Link>
|
|
<Link
|
|
to="/nodes"
|
|
className="text-base/7 tracking-tight text-gray-700 hover:text-cyan-500 transition-colors"
|
|
>
|
|
Nodes
|
|
</Link>
|
|
</div>
|
|
</div>
|
|
<div className="flex items-center gap-6">
|
|
<div className="flex items-center gap-6 max-lg:hidden">
|
|
<Button
|
|
to="https://myceliumcloud.tf"
|
|
variant="outline"
|
|
as="a"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
Deploy Now
|
|
</Button>
|
|
<Button to="/download" variant="solid" color="cyan">
|
|
Get Mycelium Connector
|
|
</Button>
|
|
</div>
|
|
<div className="lg:hidden">
|
|
<button
|
|
type="button"
|
|
className="-m-2.5 inline-flex items-center justify-center rounded-md p-2.5 text-gray-700 hover:text-cyan-500 transition-colors"
|
|
onClick={() => setMobileMenuOpen(true)}
|
|
>
|
|
<span className="sr-only">Open main menu</span>
|
|
<Bars3Icon className="h-6 w-6" aria-hidden="true" />
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</Container>
|
|
</nav>
|
|
<Dialog as="div" className="lg:hidden" open={mobileMenuOpen} onClose={setMobileMenuOpen}>
|
|
<div className="fixed inset-0 z-10" />
|
|
<Dialog.Panel className="fixed inset-y-0 right-0 z-10 w-full overflow-y-auto lg:bg-transparent lg:bg-transparent bg-white px-6 py-6 sm:max-w-sm sm:ring-1 sm:ring-gray-900/10">
|
|
<div className="flex items-center justify-between">
|
|
<Link to="#" className="-m-1.5 p-1.5">
|
|
<span className="sr-only">Mycelium</span>
|
|
<img
|
|
className="h-8 w-auto"
|
|
src={pmyceliumLogo}
|
|
alt=""
|
|
/>
|
|
</Link>
|
|
<button
|
|
type="button"
|
|
className="-m-2.5 rounded-md p-2.5 text-gray-700 hover:text-cyan-500 transition-colors"
|
|
onClick={() => setMobileMenuOpen(false)}
|
|
>
|
|
<span className="sr-only">Close menu</span>
|
|
<XMarkIcon className="h-6 w-6" aria-hidden="true" />
|
|
</button>
|
|
</div>
|
|
<div className="mt-6 flow-root">
|
|
<div className="-my-6 divide-y divide-gray-500/10">
|
|
<div className="space-y-2 py-6">
|
|
<Link
|
|
to="/network"
|
|
className="-mx-3 block rounded-lg px-3 py-2 text-base font-semibold leading-7 text-gray-900 hover:bg-gray-50"
|
|
onClick={() => setMobileMenuOpen(false)}
|
|
>
|
|
Network
|
|
</Link>
|
|
<Link
|
|
to="/cloud"
|
|
className="-mx-3 block rounded-lg px-3 py-2 text-base font-semibold leading-7 text-gray-900 hover:bg-gray-50"
|
|
onClick={() => setMobileMenuOpen(false)}
|
|
>
|
|
Cloud
|
|
</Link>
|
|
<Link
|
|
to="/pods"
|
|
className="-mx-3 block rounded-lg px-3 py-2 text-base font-semibold leading-7 text-gray-900 hover:bg-gray-50"
|
|
onClick={() => setMobileMenuOpen(false)}
|
|
>
|
|
Pods
|
|
</Link>
|
|
<Link
|
|
to="/agents"
|
|
className="-mx-3 block rounded-lg px-3 py-2 text-base font-semibold leading-7 text-gray-900 hover:bg-gray-50"
|
|
onClick={() => setMobileMenuOpen(false)}
|
|
>
|
|
Agents
|
|
</Link>
|
|
<Link
|
|
to="/nodes"
|
|
className="-mx-3 block rounded-lg px-3 py-2 text-base font-semibold leading-7 text-gray-900 hover:bg-gray-50"
|
|
onClick={() => setMobileMenuOpen(false)}
|
|
>
|
|
Nodes
|
|
</Link>
|
|
</div>
|
|
<div className="py-6">
|
|
<Button
|
|
to="https://myceliumcloud.tf"
|
|
variant="outline"
|
|
as="a"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
className="w-full"
|
|
onClick={() => setMobileMenuOpen(false)}
|
|
>
|
|
Start Deployment
|
|
</Button>
|
|
<Button to="/download" variant="solid" color="cyan" className="mt-4 w-full" onClick={() => setMobileMenuOpen(false)}>
|
|
Get Mycelium Connector
|
|
</Button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</Dialog.Panel>
|
|
</Dialog>
|
|
</header>
|
|
)
|
|
}
|