From a1ed6ece4b6c6327e369ae0f8e850c5ca8e3ded0 Mon Sep 17 00:00:00 2001 From: Ben Senescu <44480372+bensenescu@users.noreply.github.com> Date: Tue, 11 Aug 2026 22:53:02 -0400 Subject: [PATCH] Add strategy library index and navigation (#479) * feat(web): add strategy library index * fix(web): align strategy library review feedback * fix(web): reorder resource links --- web/scripts/generate-sitemap.js | 8 +- web/src/components/library-page.tsx | 43 ++++- web/src/components/site-footer.tsx | 13 +- web/src/lib/feature-pages.ts | 9 +- web/src/lib/seo.ts | 15 ++ web/src/lib/strategy-libraries.ts | 55 ++++++ web/src/routeTree.gen.ts | 21 ++ web/src/routes/_marketing.tsx | 30 +-- web/src/routes/_marketing/library/index.tsx | 87 +++++++++ .../keyword-research/cluster-topical-hubs.tsx | 5 +- .../gsc-programmatic-discovery.tsx | 5 +- .../library/keyword-research/index.tsx | 179 +++++++----------- .../keyword-research/intent-beyond-google.tsx | 5 +- .../long-tail-question-mining.tsx | 5 +- .../opportunity-sizing-forecasting.tsx | 5 +- .../positioning-to-demand.tsx | 5 +- .../search-intent-mapping.tsx | 5 +- .../seed-from-conversation.tsx | 5 +- 18 files changed, 350 insertions(+), 150 deletions(-) create mode 100644 web/src/lib/strategy-libraries.ts create mode 100644 web/src/routes/_marketing/library/index.tsx diff --git a/web/scripts/generate-sitemap.js b/web/scripts/generate-sitemap.js index d668a40..08c8a78 100644 --- a/web/scripts/generate-sitemap.js +++ b/web/scripts/generate-sitemap.js @@ -96,9 +96,11 @@ function getLibraryPaths(dir = LIBRARY_ROUTES_DIR, segments = []) { const slug = entry.name.replace(/\.tsx$/i, ""); const pathSegments = slug === "index" ? segments : [...segments, slug]; - return pathSegments.length > 0 - ? [`/library/${pathSegments.join("/")}`] - : []; + return [ + pathSegments.length > 0 + ? `/library/${pathSegments.join("/")}` + : "/library", + ]; }); } diff --git a/web/src/components/library-page.tsx b/web/src/components/library-page.tsx index 3abea60..7777747 100644 --- a/web/src/components/library-page.tsx +++ b/web/src/components/library-page.tsx @@ -1,12 +1,14 @@ import type { ReactNode } from "react"; import { DocsBody } from "fumadocs-ui/page"; +import { buildBreadcrumbJsonLd } from "@/lib/seo"; -const LIBRARY_PILLAR_PATH = "/library/keyword-research"; +const KEYWORD_RESEARCH_LIBRARY_PATH = "/library/keyword-research"; type LibrarySpokePageProps = { title: string; description?: string; crumb: string; + path: string; children: ReactNode; }; @@ -14,20 +16,37 @@ export function LibrarySpokePage({ title, description, crumb, + path, children, }: LibrarySpokePageProps) { + const breadcrumbLd = buildBreadcrumbJsonLd([ + { name: "Strategy Library", path: "/library" }, + { name: "Keyword Research", path: KEYWORD_RESEARCH_LIBRARY_PATH }, + { name: crumb, path }, + ]); + return (
-

+

{title}

@@ -43,6 +62,12 @@ export function LibrarySpokePage({ + +