c5fe399842
This PR changes the structure of the docs site's sidebar. ![image](https://github.com/tldraw/tldraw/assets/15892272/ffe1e152-c921-43f0-9ba2-d084bda5e1e3) I think this signposts more clearly what the different pages are for. And it also paves the way for some work I want to do on expanding+refining the Editor docs. This PR also simplifies URL for all sidebar links. It's a bit scrappy, but I think it feels simple enough to work with, and easy-enough to change in the future. > But hey! I've been doing this a couple times recently. Maybe we should refactor? Or maybe we should keep going with what we've got and focus on getting these docs *done*. ### Change Type - [x] `documentation` — Changes to the documentation only[^2] [^1]: publishes a `patch` release, for devDependencies use `internal` [^2]: will not publish a new version ### Test Plan 1. Check that all the sidebar links go to where you expect. 2. Check that old URLs redirect to the right pages, eg: `/docs/usage` should go to the usage page. ### Release Notes - Documentation: Restructured the sidebar for clarity.
74 lines
1.8 KiB
TypeScript
74 lines
1.8 KiB
TypeScript
import { SidebarContentLink, SidebarContentList } from '../types/content-types'
|
|
import { getArticles, getSections } from './content'
|
|
|
|
export async function getSidebarContentList({
|
|
sectionId,
|
|
categoryId,
|
|
articleId,
|
|
}: {
|
|
sectionId?: string
|
|
categoryId?: string
|
|
articleId?: string
|
|
}): Promise<SidebarContentList> {
|
|
const links: SidebarContentLink[] = []
|
|
|
|
const articles = await getArticles()
|
|
|
|
for (const section of await getSections()) {
|
|
const children: SidebarContentLink[] = []
|
|
|
|
if (section.id === 'gen') {
|
|
links.push({ type: 'article', title: 'API Reference', url: '/gen' })
|
|
continue
|
|
}
|
|
|
|
// If the article is in the getting-started section
|
|
// ... we place it at the top level of the sidebar
|
|
// ... so let's simplify its URL to reflect that
|
|
const sectionUrl = section.id === 'getting-started' ? '' : `/${section.id}`
|
|
|
|
for (const category of section.categories) {
|
|
if (category.id === 'ucg') {
|
|
continue
|
|
} else {
|
|
children.push({
|
|
type: 'category',
|
|
title: category.title,
|
|
url: `${sectionUrl}/${category.id}`,
|
|
children: category.articleIds.map((articleId) => {
|
|
const article = articles[articleId]
|
|
return {
|
|
type: 'article' as const,
|
|
title: article.title,
|
|
url: `${sectionUrl}/${category.id}/${articleId}`,
|
|
}
|
|
}),
|
|
})
|
|
}
|
|
}
|
|
|
|
for (const category of section.categories) {
|
|
if (category.id === 'ucg') {
|
|
children.push(
|
|
...category.articleIds.map((articleId) => {
|
|
const article = articles[articleId]
|
|
return {
|
|
type: 'article' as const,
|
|
title: article.title,
|
|
url: `${sectionUrl}/${articleId}`,
|
|
}
|
|
})
|
|
)
|
|
}
|
|
}
|
|
|
|
links.push({ type: 'section', title: section.title, url: sectionUrl, children })
|
|
}
|
|
|
|
return {
|
|
sectionId: sectionId ?? null,
|
|
categoryId: categoryId ?? null,
|
|
articleId: articleId ?? null,
|
|
links,
|
|
}
|
|
}
|