feat: theme-owned navbars, navbarLinks option, and no footer (0.5.0) - #11
Merged
Merged
Conversation
added 13 commits
September 10, 2026 09:57
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements decisions D1 to D4 of the docs theme sync record (https://claude.ai/code/artifact/5f4a93be-42aa-4c1f-9c53-d731ddbfb53e). The theme now renders the whole navbar itself and no site renders a footer.
baseUrl. Anything under/developer/gets the developer navbar (brand mark linking to the developer overview, centred site title with the version badge, external buttons, colour-mode toggle). Everything else gets the public navbar (brand mark linking to the docs root, search, an emptyNavbar/SiteActionsslot for the main site's Ask AI button, colour-mode toggle).themeConfig.navbaris no longer read.navbarLinks. At most two{label, url}entries, rendered as new-tab buttons on the developer navbar with the external-link icon andrel="noopener noreferrer"supplied by the theme. A third entry, an extra property, a relative or non-http url, or an unknown option fails the build with a message naming the problem.Footerreturnsnull; the footer tokens and rules are gone from the design system CSS.navbarLogo,footerLogo,ThemeLogo. New exports:validateOptions,resolveNavbarVariant,LOGO_HREF,MAX_NAVBAR_LINKS, and the option types.node:testcases run against the compiledlib/; CI runs them and assertslib/options.cjsships in the tarball.MIGRATION.mdand the docs site. This repo's own docs site adopts the new contract (options passed, no navbar or footer config).Why
The main docs site and the developer spokes had drifted on navigation, and per-spoke navbar config gave a new project every chance to skip the convention. Centralising both navbars in the theme, with a two-button surface as the only knob, removes that drift. Full rationale, including the rejected alternatives, is in the decision record.
Reviewer notes
themeConfig.navbarandfooterand move their GitHub/registry links to the option; the migration guide's Part 4 walks through it.navbarLogo; the removed exports are removed outright rather than deprecated.validateOptions, Docusaurus trusts the returned object to carry the pluginid. The validator defaults it todefault; without that the build dies inpath.join.themeConfig.navbar.items, Docusaurus hides the mobile toggle until the docs sidebar registers itself client-side, so it appears after hydration rather than in the static HTML. Upstream behaviour for any itemless navbar; documented on the components page.just docs-pin 0.5.0is run, this repo's docs spoke renders a bare navbar. Nothing breaks.^0.5.0, delete the main site's navbar/logo config andcustom-askAIitem type, addsrc/theme/Navbar/SiteActions/index.tsxrenderingAskAIButton, and remove theCtrl+Ihint fromAssistantLauncher.tsx(D5).Test plan
yarn build && yarn test: 14 passingnpm pack,npm install --no-save), typecheck andonBrokenLinks: 'throw'build both pass/developer/, centred title and version, GitHub and npm astarget="_blank"withrel, notheme-layout-footerbaseUrl: '/'): brand link to the docs root, no centred title, lone version badge, no external buttons, no footer--ignore-engines)just release 0.5.0, thenjust docs-pin 0.5.0🤖 Generated with Claude Code