From 30a2d9a56d95bacdeb490feadb6f3875224f9e5c Mon Sep 17 00:00:00 2001 From: Nikhil Kumar Rajak Date: Sun, 5 Jul 2026 18:54:58 +0000 Subject: [PATCH 1/3] fix(theme): pass pathname to NavBar for active link highlighting --- components/NavBar.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/components/NavBar.jsx b/components/NavBar.jsx index ab10da82..69a2c8fb 100644 --- a/components/NavBar.jsx +++ b/components/NavBar.jsx @@ -19,6 +19,7 @@ export default ({ metadata }) => { Logo={Logo} sidebarItemTogglerAriaLabel="Toggle navigation menu" navItems={navbar} + pathname={metadata.path} > Date: Mon, 6 Jul 2026 11:37:49 +0000 Subject: [PATCH 2/3] fix: resolve version relative path so nav highlights on API docs --- components/NavBar.jsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/components/NavBar.jsx b/components/NavBar.jsx index 69a2c8fb..657e4b88 100644 --- a/components/NavBar.jsx +++ b/components/NavBar.jsx @@ -6,8 +6,16 @@ import GitHubIcon from '@node-core/ui-components/Icons/Social/GitHub'; import SearchBox from '@node-core/doc-kit/src/generators/web/ui/components/SearchBox'; import { useTheme } from '@node-core/doc-kit/src/generators/web/ui/hooks/useTheme.mjs'; import { navbar } from '#theme/site'; +import { baseURL } from '#theme/config'; import Logo from '#theme/Logo'; +const versionBase = new URL(baseURL).pathname.replace(/\/$/, ''); + +const pathnameFor = path => { + const clean = path.replace(/\/index$/, '').replace(/^\//, ''); + return (clean ? `${versionBase}/${clean}` : versionBase) || '/'; +}; + /** * NavBar component that displays the headings, search, etc. */ @@ -19,7 +27,7 @@ export default ({ metadata }) => { Logo={Logo} sidebarItemTogglerAriaLabel="Toggle navigation menu" navItems={navbar} - pathname={metadata.path} + pathname={pathnameFor(metadata.path)} > Date: Mon, 6 Jul 2026 17:42:50 +0300 Subject: [PATCH 3/3] chore(links): edit utilities to fit the sidebar and navbar --- components/NavBar.jsx | 10 +++------- plugins/shared/urls.mjs | 9 +++++++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/components/NavBar.jsx b/components/NavBar.jsx index 657e4b88..19ba3062 100644 --- a/components/NavBar.jsx +++ b/components/NavBar.jsx @@ -7,14 +7,10 @@ import SearchBox from '@node-core/doc-kit/src/generators/web/ui/components/Searc import { useTheme } from '@node-core/doc-kit/src/generators/web/ui/hooks/useTheme.mjs'; import { navbar } from '#theme/site'; import { baseURL } from '#theme/config'; +import { toPublicLink } from '../plugins/shared/urls.mjs'; import Logo from '#theme/Logo'; -const versionBase = new URL(baseURL).pathname.replace(/\/$/, ''); - -const pathnameFor = path => { - const clean = path.replace(/\/index$/, '').replace(/^\//, ''); - return (clean ? `${versionBase}/${clean}` : versionBase) || '/'; -}; +const versionBase = new URL(baseURL).pathname; /** * NavBar component that displays the headings, search, etc. @@ -27,7 +23,7 @@ export default ({ metadata }) => { Logo={Logo} sidebarItemTogglerAriaLabel="Toggle navigation menu" navItems={navbar} - pathname={pathnameFor(metadata.path)} + pathname={toPublicLink(metadata.path, versionBase)} > { if (!url) return '/'; - return url.replace(/\.(md|html)$/, '').replace(/\/index$/, '') || '/'; + return ( + url + .replace(/\.(md|html)$/, '') + .replace(/\/index$/, '') + .replace(/^\//, '') || '/' + ); }; export const toPublicLink = (url, publicPath) => { const path = normalizeLink(url); - const prefix = publicPath ? `/${publicPath.replace(/^\/|\/$/g, '')}` : ''; + const prefix = publicPath ? `${publicPath.replace(/\/$/g, '')}` : ''; return path ? `${prefix}/${path}` : prefix || '/'; };