import type { ReactNode } from "react"; import { useState } from "react"; import Anchor from "./Anchor"; import { cn } from "../node/utils"; import { config as docuConfig } from "../node/client-routes"; import { Navbar as BaseNavbar, Logo as BaseLogo, NavMenu as BaseNavMenu, NavMenuLink as BaseNavMenuLink, type NavMenuItem as BaseNavMenuItem, } from "@docubook/ui-react/navbar"; export type { NavMenuItem } from "@docubook/ui-react/navbar"; interface AppNavMenuItem { title: string; href: string; } interface NavbarProps { logo?: { src?: string; alt?: string }; logoText?: string; menu: AppNavMenuItem[]; id?: string; className?: string; } function AppLogo({ logo, logoText }: { logo?: { src?: string; alt?: string }; logoText?: string }) { return ; } function AppNavMenu({ menu, currentPath }: { menu: AppNavMenuItem[]; currentPath?: string }) { return ; } export function Navbar({ logo, logoText, menu, id = "navbar", className }: NavbarProps) { const [currentPath] = useState(() => typeof window !== "undefined" ? window.location.pathname : "/" ); return (
); } export function NavbarLayout({ start, center, end, className, }: { start?: ReactNode; center?: ReactNode; end?: ReactNode; className?: string; }) { return ( {start &&
{start}
} {center &&
{center}
} {end &&
{end}
}
); } export { BaseNavbar as Logo }; export function NavMenu({ items, activePath }: { items: BaseNavMenuItem[]; activePath?: string }) { return ; } export function NavMenuLink({ item, isActive }: { item: BaseNavMenuItem; isActive?: boolean }) { return ; } export function NavItem({ item }: { item: BaseNavMenuItem }) { return ( {item.title} ); } export function MobileMenuToggle({ menu, currentPath, }: { menu: AppNavMenuItem[]; currentPath?: string; }) { return (
    {menu.map((item) => (
  • path === item.href || path.startsWith(item.href + "/") || path.endsWith(item.href + ".html") : undefined } activeClassName="text-primary font-semibold" > {item.title}
  • ))}
); } export function NavbarBrand({ logo, logoText, }: { logo?: { src?: string; alt?: string }; logoText?: string; }) { return (
{logo?.src ? ( {logo.alt ) : (
)} {logoText ?? "Logo"}
); } export function GitHubLink({ repoUrl }: { repoUrl?: string }) { if (!docuConfig.repo?.edit || !repoUrl) return null; return ( ); } export default Navbar;