diff --git a/astro.config.mjs b/astro.config.mjs
index ff6b14a5..d4dfea4c 100644
--- a/astro.config.mjs
+++ b/astro.config.mjs
@@ -53,7 +53,6 @@ export default defineConfig({
baseUrl: "https://github.com/RoboStack/robostack.github.io/edit/main/",
},
customCss: ["./src/styles/custom.css"],
- routeMiddleware: "./src/routeData.ts",
components: {
Header: "./src/components/Header.astro",
Sidebar: "./src/components/Sidebar.astro",
@@ -61,35 +60,38 @@ export default defineConfig({
PageTitle: "./src/components/PageTitle.astro",
},
sidebar: [
- // One top-level group per header tab (src/components/Header.astro);
- // the Sidebar override shows only the current page's group, so these
- // group labels never render. List each page in exactly one group, the
- // one whose tab nav.ts highlights for it, so the sidebar and the
- // header tabs never disagree. Slugs are set explicitly in each page's
- // frontmatter to keep the published mixed-case URLs
- // (`GettingStarted.html`, `FAQ.html`, ...).
+ // The sidebar is the Docs section: the frontpage and the distro table
+ // pages have none. Every page listed here also has to match the Docs
+ // tab's pattern in src/data/nav.ts, so the header highlights it.
+ // Slugs are set explicitly in each page's frontmatter to keep the
+ // published mixed-case URLs (`GettingStarted.html`, `FAQ.html`, ...).
{
- label: "Docs",
+ label: "Use RoboStack",
items: [
{ label: "Getting Started", slug: "GettingStarted" },
{
- label: "Alternative to Pixi",
+ label: "Alternatives to Pixi",
items: [
{ label: "Micromamba", slug: "micromamba" },
{ label: "Conda", slug: "conda" },
],
},
{ label: "JupyterRos", slug: "JupyterRos" },
- { label: "FAQ", slug: "FAQ" },
- { label: "RoboStack monorepo", slug: "Monorepo" },
],
},
{
- label: "Community",
+ label: "Get help",
items: [
- { label: "Community Meeting", slug: "CommunityMeeting" },
{ label: "Support", slug: "support" },
+ { label: "Community Meeting", slug: "CommunityMeeting" },
+ { label: "FAQ", slug: "FAQ" },
+ ],
+ },
+ {
+ label: "Contribute",
+ items: [
{ label: "Contributing", slug: "Contributing" },
+ { label: "RoboStack monorepo", slug: "Monorepo" },
],
},
],
diff --git a/src/components/Header.astro b/src/components/Header.astro
index a2dcd859..6d1c60f8 100644
--- a/src/components/Header.astro
+++ b/src/components/Header.astro
@@ -16,8 +16,7 @@ import { NAV_TABS as tabs } from "../data/nav";
* the logo; from that breakpoint up they move next to the logo in the
* single header row. The row heights come from `--sl-nav-height`, set
* per breakpoint in custom.css; the logo row keeps the original height via
- * `--rs-nav-row`. The tabs live in src/data/nav.ts, shared with the Sidebar
- * override.
+ * `--rs-nav-row`. The tabs live in src/data/nav.ts.
*/
const shouldRenderSearch =
diff --git a/src/components/Sidebar.astro b/src/components/Sidebar.astro
index cceaeb0f..e11058f8 100644
--- a/src/components/Sidebar.astro
+++ b/src/components/Sidebar.astro
@@ -1,33 +1,19 @@
---
import MobileMenuFooter from "virtual:starlight/components/MobileMenuFooter";
import SidebarPersister from "@astrojs/starlight/components/SidebarPersister.astro";
-import SidebarSublist from "@astrojs/starlight/components/SidebarSublist.astro";
-import { NAV_TABS } from "../data/nav";
+import SidebarList from "./SidebarList.astro";
/**
- * Override of Starlight's Sidebar: the header tabs are the top level of the
- * navigation, so the sidebar only shows the pages of the current section.
- * The section comes from the shared nav.ts patterns - the same ones that
- * pick the active header tab - and names the matching top-level group in
- * `astro.config.mjs`. Pages outside any section fall back to the full
- * sidebar. The distro table pages opt out of the sidebar entirely; their
- * in-page distro tabs are the sub-navigation.
+ * Override of Starlight's Sidebar that shows every group expanded, without
+ * the collapse toggles (see SidebarList.astro). The persister still restores
+ * the sidebar's scroll position between pages.
*/
-
const { sidebar } = Astro.locals.starlightRoute;
-const pathname = Astro.url.pathname;
-
-const tab = NAV_TABS.find((t) => t.match.test(pathname));
-const section = sidebar.find(
- (entry) => entry.type === "group" && entry.label === tab?.label,
-);
-
-const entries = section && section.type === "group" ? section.entries : sidebar;
---