From e268d3e19fefc221ceb3f44599031e5c00cff2cf Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Tue, 9 Jul 2024 17:53:21 +0100 Subject: [PATCH] Refactor docs + recipes --- apps/frontpage/app/docs/sitemap.ts | 35 +++++++++++++++++++++++++++ apps/frontpage/app/recipes/sitemap.ts | 10 ++++++++ apps/frontpage/app/sitemap.xml | 20 +++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 apps/frontpage/app/docs/sitemap.ts create mode 100644 apps/frontpage/app/recipes/sitemap.ts create mode 100644 apps/frontpage/app/sitemap.xml diff --git a/apps/frontpage/app/docs/sitemap.ts b/apps/frontpage/app/docs/sitemap.ts new file mode 100644 index 00000000..f7fa241d --- /dev/null +++ b/apps/frontpage/app/docs/sitemap.ts @@ -0,0 +1,35 @@ +import { MetadataRoute } from 'next'; +import { generateDocsTree } from '../../lib/get-tree'; +import { TreeProps, docsVersions } from '@repo/utils'; + +export default function sitemap(): MetadataRoute.Sitemap { + const latestVersion = docsVersions[0]; + const tree = generateDocsTree(`content/docs/${latestVersion.id}`); + + const flattenedTree: TreeProps[] = []; + + const flattenTree = (tree: TreeProps[]) => { + tree.forEach((node) => { + if (node.children) { + flattenedTree.push(node); + flattenTree(node.children); + } + flattenedTree.push(node); + }); + }; + + flattenTree(tree); + + const filteredTree = flattenedTree + .filter((node) => node.type !== 'directory') + .filter((node) => node.draft !== true); + + const docs = filteredTree.map((node) => ({ + url: `https://storybook.js.org${node.slug}`.replace( + `${latestVersion.id}/`, + '', + ), + })); + + return [...docs]; +} diff --git a/apps/frontpage/app/recipes/sitemap.ts b/apps/frontpage/app/recipes/sitemap.ts new file mode 100644 index 00000000..97726472 --- /dev/null +++ b/apps/frontpage/app/recipes/sitemap.ts @@ -0,0 +1,10 @@ +import { MetadataRoute } from 'next'; +import { fetchRecipesData } from '../../lib/fetch-recipes-data'; + +export default async function sitemap(): Promise { + const recipes = (await fetchRecipesData()) || []; + + return recipes.map((name) => ({ + url: `https://storybook.js.org/recipes/${name}`, + })); +} diff --git a/apps/frontpage/app/sitemap.xml b/apps/frontpage/app/sitemap.xml new file mode 100644 index 00000000..d004c880 --- /dev/null +++ b/apps/frontpage/app/sitemap.xml @@ -0,0 +1,20 @@ + + + https://storybook.js.org/sitemap/docs/sitemap.xml + + + https://storybook.js.org/sitemap/addons/sitemap.xml + + + https://storybook.js.org/sitemap/recipes/sitemap.xml + + + https://storybook.js.org/sitemap/blog/sitemap.xml + + + https://storybook.js.org/sitemap/showcase/sitemap.xml + + + https://storybook.js.org/sitemap/tutorials/sitemap.xml + + \ No newline at end of file