diff --git a/packages/docusaurus-plugin-content-pages/package.json b/packages/docusaurus-plugin-content-pages/package.json index 7868fa42bd..1dcbe28a54 100644 --- a/packages/docusaurus-plugin-content-pages/package.json +++ b/packages/docusaurus-plugin-content-pages/package.json @@ -3,6 +3,7 @@ "version": "2.0.0-alpha.61", "description": "Pages content plugin for Docusaurus", "main": "lib/index.js", + "types": "src/plugin-content-pages.d.ts", "scripts": { "build": "tsc", "watch": "tsc --watch" 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 new file mode 100644 index 0000000000..9eed9f0c36 --- /dev/null +++ b/packages/docusaurus-plugin-content-pages/src/plugin-content-pages.d.ts @@ -0,0 +1,25 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +declare module '@theme/MDXPage' { + import type {MarkdownRightTableOfContents} from '@docusaurus/types'; + + export type Props = { + readonly content: { + readonly frontMatter: { + readonly title: string; + readonly description: string; + }; + readonly metadata: {readonly permalink: string}; + readonly rightToc: readonly MarkdownRightTableOfContents[]; + (): JSX.Element; + }; + }; + + const MDXPage: (props: Props) => JSX.Element; + export default MDXPage; +} diff --git a/packages/docusaurus-theme-classic/src/theme/MDXPage/index.js b/packages/docusaurus-theme-classic/src/theme/MDXPage/index.tsx similarity index 90% rename from packages/docusaurus-theme-classic/src/theme/MDXPage/index.js rename to packages/docusaurus-theme-classic/src/theme/MDXPage/index.tsx index e58723a01a..de2406baa9 100644 --- a/packages/docusaurus-theme-classic/src/theme/MDXPage/index.js +++ b/packages/docusaurus-theme-classic/src/theme/MDXPage/index.tsx @@ -9,8 +9,9 @@ import React from 'react'; import Layout from '@theme/Layout'; import {MDXProvider} from '@mdx-js/react'; import MDXComponents from '@theme/MDXComponents'; +import type {Props} from '@theme/MDXPage'; -function MDXPage(props) { +function MDXPage(props: Props): JSX.Element { const {content: MDXPageContent} = props; const {frontMatter, metadata} = MDXPageContent; const {title, description} = frontMatter; diff --git a/packages/docusaurus-theme-classic/src/types.d.ts b/packages/docusaurus-theme-classic/src/types.d.ts index 9f57acf2f0..e950646441 100644 --- a/packages/docusaurus-theme-classic/src/types.d.ts +++ b/packages/docusaurus-theme-classic/src/types.d.ts @@ -10,6 +10,7 @@ /// /// /// +/// declare module '@theme/AnnouncementBar' { const AnnouncementBar: () => JSX.Element | null; @@ -271,8 +272,6 @@ declare module '@theme/MDXComponents' { export default MDXComponents; } -// TODO @theme/MDXPage - declare module '@theme/Navbar' { const Navbar: () => JSX.Element; export default Navbar;