diff --git a/app/components/Navbar.tsx b/app/components/Navbar.tsx index c3867c922..dab2faa74 100644 --- a/app/components/Navbar.tsx +++ b/app/components/Navbar.tsx @@ -1,107 +1,87 @@ 'use client'; import { cn } from '@components/shared/utils'; -import { ClusterStatusButton } from '@features/cluster-switcher'; -import Logo from '@img/logos-solana/dark-explorer-logo.svg'; -import { useDisclosure } from '@mantine/hooks'; -import { useClusterPath } from '@utils/url'; -import Image from 'next/image'; -import Link from 'next/link'; -import { useSelectedLayoutSegment, useSelectedLayoutSegments } from 'next/navigation'; -import React, { ReactNode } from 'react'; -import { Menu } from 'react-feather'; +import { ClusterDropdown } from '@features/cluster-switcher'; +import React, { type ReactNode, useRef, useState } from 'react'; -import { ExternalLink } from '@/app/components/shared/ui/external-link'; -import { NavbarItem, NavbarLink, NavbarList } from '@/app/shared/ui/Navbar'; +import { NavLinks, NavMenu } from './navbar/NavGroup'; +import { NavSearch } from './navbar/NavSearch'; +import { BAR_CLASSES, BrandLockup, GUTTER_CLASSES, useNavRoutes } from './navbar/shared'; export interface INavbarProps { children?: ReactNode; } export function Navbar({ children }: INavbarProps) { - const [navOpened, navHandlers] = useDisclosure(false); - const homePath = useClusterPath({ pathname: '/' }); - const featureGatesPath = useClusterPath({ pathname: '/feature-gates' }); - const inspectorPath = useClusterPath({ pathname: '/tx/inspector' }); - const selectedLayoutSegment = useSelectedLayoutSegment(); - const selectedLayoutSegments = useSelectedLayoutSegments(); + const [searchOpened, setSearchOpened] = useState(false); + const [clusterOpened, setClusterOpened] = useState(false); + const [menuOpened, setMenuOpened] = useState(false); + const routes = useNavRoutes(); + const slotRef = useRef(null); + + const onSearchOpenChange = (open: boolean) => { + if (open) { + setMenuOpened(false); + setClusterOpened(false); + } + setSearchOpened(open); + }; + const onClusterOpenChange = (open: boolean) => { + if (open) { + setMenuOpened(false); + setSearchOpened(false); + } + setClusterOpened(open); + }; + const onMenuOpenChange = (open: boolean) => { + if (open) { + setClusterOpened(false); + setSearchOpened(false); + } + setMenuOpened(open); + }; return ( -