in src/theme/Navbar/Layout/index.tsx [25:73]
export default function NavbarLayout({ children }: Props): JSX.Element {
const {
navbar: { hideOnScroll, style },
} = useThemeConfig();
const mobileSidebar = useNavbarMobileSidebar();
const { navbarRef, isNavbarVisible } = useHideableNavbar(hideOnScroll);
const config = useThemeConfig();
const logoObj = config.navbar.logo as typeof config.navbar.logo & {
backSrc?: string;
};
if (logoObj.backSrc) {
logoObj.src = logoObj.backSrc;
}
if (useIsBaseUrl()) {
logoObj.backSrc = logoObj.src;
logoObj.src = logoObj.srcDark;
}
return (
<nav
ref={navbarRef}
aria-label={translate({
id: "theme.NavBar.navAriaLabel",
message: "Main",
description: "The ARIA label for the main navigation",
})}
className={clsx(
"navbar",
"navbar--fixed-top",
hideOnScroll && [
styles.navbarHideable,
!isNavbarVisible && styles.navbarHidden,
],
{
"navbar--dark": style === "dark",
"navbar--primary": style === "primary",
"navbar-sidebar--show": mobileSidebar.shown,
"navbar-home-lighting": useIsBaseUrl(),
}
)}
>
{children}
<NavbarBackdrop onClick={mobileSidebar.toggle} />
<NavbarMobileSidebar />
</nav>
);
}