@@ -2,7 +2,7 @@ import { DocsLayout } from '@/components/layout';
22import { getPage } from '@/lib/page' ;
33import { getDocsLayoutTree , getPageTreePeers } from '@/lib/pageTree' ;
44import { type Page , type Source , sourceMap } from '@/lib/source' ;
5- import { getDocsUrl , isAppDoc , isPagesDoc } from '@/lib/utils' ;
5+ import { getDocId , getDocUrl , parseDocId } from '@/lib/utils' ;
66import { getMDXComponents } from '@/mdx-components' ;
77import { Identity } from '@/mdx/Identity' ;
88import { Void } from '@/mdx/Void' ;
@@ -19,20 +19,18 @@ export default async function Docs(props: {
1919 const slug = params . slug || [ ] ;
2020 const locale = params . locale ;
2121 const source = sourceMap [ locale ] ;
22- const docsUrl = getDocsUrl ( slug ) ;
23- const id = ` ${ locale } ${ docsUrl } ` ;
24- const page = getPage ( locale , docsUrl ) ;
22+ const docUrl = getDocUrl ( slug ) ;
23+ const docId = getDocId ( locale , docUrl ) ;
24+ const page = getPage ( locale , docUrl ) ;
2525 if ( ! page ) notFound ( ) ;
26-
26+ const { isApp , isPages } = parseDocId ( docId ) ;
2727 // Markdown content requires await
2828 let { body : MdxContent , toc } = await page . data . load ( ) ;
2929
30- const isAppDocs = isAppDoc ( id ) ;
31- const isPagesDocs = isPagesDoc ( id ) ;
3230 // source: app/getting-started/installation
3331 const ref = page . data . source ;
3432 if ( ref ) {
35- const refUrl = getDocsUrl ( ref ) ;
33+ const refUrl = getDocUrl ( ref ) ;
3634 const refPage = getPage ( locale , refUrl ) ;
3735 if ( ! refPage ) notFound ( ) ;
3836 const { body : MdxContent2 , toc : toc2 } = await refPage . data . load ( ) ;
@@ -45,7 +43,10 @@ export default async function Docs(props: {
4543 const isIndex = page . file . name === 'index' ;
4644
4745 return (
48- < DocsLayout pageTree = { getDocsLayoutTree ( source . pageTree , slug ) } >
46+ < DocsLayout
47+ docId = { docId }
48+ pageTree = { getDocsLayoutTree ( source . pageTree , slug ) }
49+ >
4950 < DocsPage
5051 toc = { toc }
5152 full = { page . data . full }
@@ -57,8 +58,8 @@ export default async function Docs(props: {
5758 components = { getMDXComponents ( {
5859 // this allows you to link to other pages with relative file paths
5960 a : createRelativeLink ( source , page ) ,
60- AppOnly : isAppDocs ? Identity : Void ,
61- PagesOnly : isPagesDocs ? Identity : Void ,
61+ AppOnly : isApp ? Identity : Void ,
62+ PagesOnly : isPages ? Identity : Void ,
6263 } ) }
6364 />
6465 { hasRelated ? < DocsRelated page = { page } /> : null }
@@ -90,7 +91,7 @@ function DocsRelated({ page }: { page: Page }) {
9091 const relatedLinks = page . data . related ?. links || [ ] ;
9192 const pages = relatedLinks
9293 . map ( ( link ) => {
93- return getPage ( locale , getDocsUrl ( link ) ) ;
94+ return getPage ( locale , getDocUrl ( link ) ) ;
9495 } )
9596 . filter ( Boolean ) as Page [ ] ;
9697 return (
@@ -126,7 +127,7 @@ export async function generateMetadata(props: {
126127 params : Promise < { slug ?: string [ ] ; locale : Locale } > ;
127128} ) {
128129 const params = await props . params ;
129- const url = getDocsUrl ( params . slug ) ;
130+ const url = getDocUrl ( params . slug ) ;
130131 const page = getPage ( params . locale , url ) ;
131132 if ( ! page ) notFound ( ) ;
132133
0 commit comments