diff --git a/packages/docusaurus-mdx-loader/src/mdx-loader.d.ts b/packages/docusaurus-mdx-loader/src/mdx-loader.d.ts index c84168aefd..5e2e0a201b 100644 --- a/packages/docusaurus-mdx-loader/src/mdx-loader.d.ts +++ b/packages/docusaurus-mdx-loader/src/mdx-loader.d.ts @@ -6,6 +6,7 @@ */ import type {Plugin} from 'unified'; +import type {TOCItem} from '@docusaurus/types'; export type MDXPlugin = // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -16,3 +17,21 @@ export type MDXOptions = { beforeDefaultRemarkPlugins: MDXPlugin[]; beforeDefaultRehypePlugins: MDXPlugin[]; }; + +export type LoadedMDXContent = { + /** As verbatim declared in the MDX document. */ + readonly frontMatter: FrontMatter; + /** As provided by the content plugin. */ + readonly metadata: Metadata; + /** A list of TOC items (headings). */ + readonly toc: readonly TOCItem[]; + /** First h1 title before any content. */ + readonly contentTitle: string | undefined; + /** + * Usually image assets that may be collocated like `./img/thumbnail.png`. + * The loader would also bundle these assets and the client should use these + * in priority. + */ + readonly assets: Assets; + (): JSX.Element; +}; diff --git a/packages/docusaurus-plugin-content-blog/src/plugin-content-blog.d.ts b/packages/docusaurus-plugin-content-blog/src/plugin-content-blog.d.ts index 939ae79428..f25d572eee 100644 --- a/packages/docusaurus-plugin-content-blog/src/plugin-content-blog.d.ts +++ b/packages/docusaurus-plugin-content-blog/src/plugin-content-blog.d.ts @@ -414,7 +414,7 @@ declare module '@docusaurus/plugin-content-blog' { } declare module '@theme/BlogPostPage' { - import type {TOCItem} from '@docusaurus/types'; + import type {LoadedMDXContent} from '@docusaurus/mdx-loader'; import type { BlogPostFrontMatter, BlogPostMetadata, @@ -433,22 +433,7 @@ declare module '@theme/BlogPostPage' { } >; - export type Content = { - /** Same as `metadata.frontMatter` */ - readonly frontMatter: FrontMatter; - /** - * Usually image assets that may be collocated like `./img/thumbnail.png`. - * The loader would also bundle these assets and the client should use these - * in priority. - */ - readonly assets: Assets; - /** Metadata of the post. */ - readonly metadata: Metadata; - /** A list of TOC items (headings). */ - readonly toc: readonly TOCItem[]; - /** Renders the actual MDX content. */ - (): JSX.Element; - }; + export type Content = LoadedMDXContent; export interface Props { /** Blog sidebar. */ diff --git a/packages/docusaurus-plugin-content-docs/src/plugin-content-docs.d.ts b/packages/docusaurus-plugin-content-docs/src/plugin-content-docs.d.ts index 7bc5a24194..a8ae90e6af 100644 --- a/packages/docusaurus-plugin-content-docs/src/plugin-content-docs.d.ts +++ b/packages/docusaurus-plugin-content-docs/src/plugin-content-docs.d.ts @@ -496,7 +496,7 @@ declare module '@docusaurus/plugin-content-docs' { } declare module '@theme/DocItem' { - import type {TOCItem} from '@docusaurus/types'; + import type {LoadedMDXContent} from '@docusaurus/mdx-loader'; import type { PropVersionMetadata, Assets, @@ -514,14 +514,7 @@ declare module '@theme/DocItem' { export interface Props { readonly route: DocumentRoute; readonly versionMetadata: PropVersionMetadata; - readonly content: { - readonly frontMatter: DocFrontMatter; - readonly metadata: DocMetadata; - readonly toc: readonly TOCItem[]; - readonly contentTitle: string | undefined; - readonly assets: Assets; - (): JSX.Element; - }; + readonly content: LoadedMDXContent; } export default function DocItem(props: Props): JSX.Element; diff --git a/packages/docusaurus-plugin-content-pages/src/plugin-content-pages.d.ts b/packages/docusaurus-plugin-content-pages/src/plugin-content-pages.d.ts index 24fd413ca1..2f35040ceb 100644 --- a/packages/docusaurus-plugin-content-pages/src/plugin-content-pages.d.ts +++ b/packages/docusaurus-plugin-content-pages/src/plugin-content-pages.d.ts @@ -48,19 +48,14 @@ declare module '@docusaurus/plugin-content-pages' { } declare module '@theme/MDXPage' { - import type {TOCItem} from '@docusaurus/types'; + import type {LoadedMDXContent} from '@docusaurus/mdx-loader'; import type { MDXPageMetadata, FrontMatter, } from '@docusaurus/plugin-content-pages'; export interface Props { - readonly content: { - readonly frontMatter: FrontMatter; - readonly metadata: MDXPageMetadata; - readonly toc: readonly TOCItem[]; - (): JSX.Element; - }; + readonly content: LoadedMDXContent; } export default function MDXPage(props: Props): JSX.Element;