Blog: unify nav with rest of site

This commit is contained in:
mDuo13
2024-03-26 17:26:13 -07:00
parent f34ad2d4f1
commit b5bafbaf4e

View File

@@ -8,10 +8,7 @@ import { Link } from "@portal/Link";
import { ColorModeSwitcher } from "@theme/components/ColorModeSwitcher/ColorModeSwitcher"; import { ColorModeSwitcher } from "@theme/components/ColorModeSwitcher/ColorModeSwitcher";
import { Search } from "@theme/components/Search/Search"; import { Search } from "@theme/components/Search/Search";
import { useLocation } from "react-router-dom";
// @ts-ignore // @ts-ignore
// import navbar from '../../../top-nav.yaml';
const alertBanner = { const alertBanner = {
show: true, show: true,
@@ -52,31 +49,6 @@ export function Navbar(props) {
} }
}); });
const { pathname } = useLocation();
const blogNavs = getBlogNavigationConfig();
const blogNavItems = [];
for (const blogNav of blogNavs) {
if (blogNav.type === "group") {
blogNavItems.push(
<NavDropdown
key={blogNav.index}
label={blogNav.label}
items={blogNav.items}
pathPrefix={pathPrefix}
/>
);
} else {
blogNavItems.push(
<NavItem key={blogNav.index}>
<Link to={blogNav.link} className="nav-link">
{blogNav.label}
</Link>
</NavItem>
);
}
}
React.useEffect(() => { React.useEffect(() => {
// Turns out jQuery is necessary for firing events on Bootstrap v4 // Turns out jQuery is necessary for firing events on Bootstrap v4
// dropdowns. These events set classes so that the search bar and other // dropdowns. These events set classes so that the search bar and other
@@ -112,73 +84,36 @@ export function Navbar(props) {
}; };
}, []); }, []);
// Render a different top nav for the Blog site. return (
if (pathname.includes("blog")) { <>
return ( <AlertBanner
<> show={alertBanner.show}
<AlertBanner message={alertBanner.message}
show={alertBanner.show} button={alertBanner.button}
message={alertBanner.message} link={alertBanner.link}
button={alertBanner.button} />
link={alertBanner.link} <NavWrapper belowAlertBanner={true}>
/> <LogoBlock to={href} img={logo} alt={altText} />
<NavWrapper belowAlertBanner={true}> <NavControls>
<LogoBlock to={href} img={logo} alt={altText} /> <MobileMenuIcon />
<NavControls> </NavControls>
<MobileMenuIcon /> <TopNavCollapsible>
</NavControls> <NavItems>
<TopNavCollapsible> {navItems}
<NavItems> <div id="topnav-search" className="nav-item search">
{blogNavItems} <Search className="topnav-search" />
<div id="topnav-search" className="nav-item search"> </div>
<Search className="topnav-search" /> <div id="topnav-language" className="nav-item">
</div> <LanguagePicker onChangeLanguage={changeLanguage} onlyIcon />
<div id="topnav-button" className="nav-item"> </div>
<GetStartedButton /> <div id="topnav-theme" className="nav-item">
</div> <StyledColorModeSwitcher />
<div id="topnav-language" className="nav-item"> </div>
<LanguagePicker onChangeLanguage={changeLanguage} onlyIcon /> </NavItems>
</div> </TopNavCollapsible>
<div id="topnav-theme" className="nav-item"> </NavWrapper>
<StyledColorModeSwitcher /> </>
</div> );
</NavItems>
</TopNavCollapsible>
</NavWrapper>
</>
);
} else {
return (
<>
<AlertBanner
show={alertBanner.show}
message={alertBanner.message}
button={alertBanner.button}
link={alertBanner.link}
/>
<NavWrapper belowAlertBanner={true}>
<LogoBlock to={href} img={logo} alt={altText} />
<NavControls>
<MobileMenuIcon />
</NavControls>
<TopNavCollapsible>
<NavItems>
{navItems}
<div id="topnav-search" className="nav-item search">
<Search className="topnav-search" />
</div>
<div id="topnav-language" className="nav-item">
<LanguagePicker onChangeLanguage={changeLanguage} onlyIcon />
</div>
<div id="topnav-theme" className="nav-item">
<StyledColorModeSwitcher />
</div>
</NavItems>
</TopNavCollapsible>
</NavWrapper>
</>
);
}
} }
const StyledColorModeSwitcher = styled(ColorModeSwitcher)` const StyledColorModeSwitcher = styled(ColorModeSwitcher)`
@@ -441,131 +376,3 @@ export class ThemeToggle extends React.Component {
this.auto_update_theme(); this.auto_update_theme();
} }
} }
function getBlogNavigationConfig() {
const { translate } = useTranslate();
return [
{
index: "0",
label: translate("Learn"),
type: "group",
items: [
{
type: "group",
label: translate("XRP Ledger"),
items: [
{
type: "link",
fsPath: "about/index.page.tsx",
label: translate("Overview"),
link: "/about/",
},
{
type: "link",
fsPath: "about/uses.page.tsx",
label: translate("Uses"),
link: "/about/uses",
},
{
type: "link",
fsPath: "about/history.page.tsx",
label: translate("History"),
link: "/about/history",
},
{
type: "link",
fsPath: "about/impact.page.tsx",
label: translate("Impact"),
link: "/about/impact",
},
{
type: "link",
fsPath: "about/impact.page.tsx",
label: translate("Carbon Calculator"),
link: "/about/impact",
},
],
},
],
pathPrefix: "",
},
{
index: "1",
label: translate("Explore"),
type: "group",
items: [
{
type: "group",
label: translate("Explore the XRP Ledger"),
items: [
{
type: "link",
fsPath: "/docs/introduction/crypto-wallets.md",
label: translate("Wallets"),
link: "/docs/introduction/crypto-wallets",
},
{
type: "link",
fsPath: "about/xrp.page.tsx",
label: translate("Exchanges"),
link: "/about/xrp",
},
{
type: "link",
fsPath: "about/uses.page.tsx",
label: translate("Businesses"),
link: "/about/uses",
},
{
type: "link",
fsPath: "",
label: translate("Ledger Explorer"),
link: "https://livenet.xrpl.org/",
},
],
},
],
pathPrefix: "",
},
{
index: "2",
label: translate("Build"),
type: "group",
items: [
{
type: "group",
label: translate("Build with XRPL"),
items: [
{
type: "link",
fsPath: "/docs/index.page.tsx",
label: translate("Docs"),
link: "/docs/",
},
{
type: "link",
fsPath: "/resources/dev-tools/index.page.tsx",
label: translate("Dev Tools"),
link: "/resources/dev-tools/",
},
{
type: "link",
fsPath: "/blog/index.page.tsx",
label: translate("Dev Blog"),
link: "/blog/",
},
],
},
],
pathPrefix: "",
},
{
index: "3",
type: "link",
fsPath: "community/index.page.tsx",
label: translate("Contribute"),
link: "/community",
},
];
}