From 8561826026673267296c7a9259382206e263fabd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lorber?= Date: Fri, 22 Nov 2024 16:05:13 +0100 Subject: [PATCH 01/90] fix(core): disable Rspack incremental in dev (#10712) --- packages/docusaurus/src/webpack/base.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/docusaurus/src/webpack/base.ts b/packages/docusaurus/src/webpack/base.ts index 31ea6b85d5..b3ea407143 100644 --- a/packages/docusaurus/src/webpack/base.ts +++ b/packages/docusaurus/src/webpack/base.ts @@ -142,7 +142,10 @@ export async function createBaseConfig({ // Produces warnings in production builds // See https://github.com/web-infra-dev/rspack/pull/8311#issuecomment-2476014664 // @ts-expect-error: Rspack-only - incremental: !isProd, + // incremental: !isProd, + // TODO restore incremental mode in dev + opt-in/opt-out flag? + // temporarily disabled due to https://github.com/facebook/docusaurus/issues/10646#issuecomment-2490675451 + incremental: undefined, }; } return undefined; From fd43036ab80739119040f6c2b7393e0debd3da26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lorber?= Date: Fri, 22 Nov 2024 17:13:56 +0100 Subject: [PATCH 02/90] chore: release Docusaurus 3.6.3 (#10713) --- CHANGELOG.md | 11 ++++++ admin/new.docusaurus.io/package.json | 2 +- admin/test-bad-package/package.json | 2 +- argos/package.json | 2 +- lerna.json | 2 +- packages/create-docusaurus/package.json | 6 ++-- .../templates/classic-typescript/package.json | 12 +++---- .../templates/classic/package.json | 10 +++--- packages/docusaurus-babel/package.json | 6 ++-- packages/docusaurus-bundler/package.json | 12 +++---- .../docusaurus-cssnano-preset/package.json | 2 +- packages/docusaurus-faster/package.json | 4 +-- packages/docusaurus-logger/package.json | 2 +- packages/docusaurus-mdx-loader/package.json | 10 +++--- .../package.json | 4 +-- .../package.json | 14 ++++---- .../package.json | 18 +++++----- .../package.json | 20 +++++------ .../package.json | 12 +++---- packages/docusaurus-plugin-debug/package.json | 8 ++--- .../package.json | 8 ++--- .../package.json | 8 ++--- .../package.json | 8 ++--- .../package.json | 14 ++++---- packages/docusaurus-plugin-pwa/package.json | 20 +++++------ .../docusaurus-plugin-rsdoctor/package.json | 8 ++--- .../docusaurus-plugin-sitemap/package.json | 14 ++++---- .../package.json | 12 +++---- .../docusaurus-preset-classic/package.json | 28 +++++++-------- .../package.json | 2 +- .../docusaurus-theme-classic/package.json | 28 +++++++-------- packages/docusaurus-theme-common/package.json | 14 ++++---- .../package.json | 12 +++---- .../docusaurus-theme-mermaid/package.json | 12 +++---- .../package.json | 18 +++++----- .../package.json | 10 +++--- packages/docusaurus-tsconfig/package.json | 2 +- packages/docusaurus-types/package.json | 2 +- packages/docusaurus-utils-common/package.json | 4 +-- .../docusaurus-utils-validation/package.json | 8 ++--- packages/docusaurus-utils/package.json | 8 ++--- packages/docusaurus/package.json | 20 +++++------ packages/eslint-plugin/package.json | 2 +- packages/lqip-loader/package.json | 4 +-- packages/stylelint-copyright/package.json | 2 +- website/package.json | 34 +++++++++--------- .../advanced/architecture.mdx | 0 .../advanced/client.mdx | 0 .../advanced/index.mdx | 0 .../advanced/plugins.mdx | 0 .../advanced/routing.mdx | 0 .../advanced/ssg.mdx | 0 .../api/docusaurus.config.js.mdx | 0 .../api/misc/_category_.yml | 0 .../api/misc/create-docusaurus.mdx | 0 .../api/misc/eslint-plugin/README.mdx | 0 .../api/misc/eslint-plugin/no-html-links.mdx | 0 .../eslint-plugin/no-untranslated-text.mdx | 0 .../prefer-docusaurus-heading.mdx | 0 .../string-literal-i18n-messages.mdx | 0 .../api/misc/logger/demo.png | Bin .../api/misc/logger/logger.mdx | 0 .../api/plugin-methods/README.mdx | 0 .../api/plugin-methods/_category_.yml | 0 .../plugin-methods/extend-infrastructure.mdx | 0 .../api/plugin-methods/i18n-lifecycles.mdx | 0 .../api/plugin-methods/lifecycle-apis.mdx | 0 .../api/plugin-methods/static-methods.mdx | 0 .../api/plugins/_category_.yml | 0 .../_partial-tags-file-api-ref-section.mdx | 0 .../api/plugins/overview.mdx | 0 .../api/plugins/plugin-client-redirects.mdx | 0 .../api/plugins/plugin-content-blog.mdx | 0 .../api/plugins/plugin-content-docs.mdx | 0 .../api/plugins/plugin-content-pages.mdx | 0 .../api/plugins/plugin-debug.mdx | 0 .../api/plugins/plugin-google-analytics.mdx | 0 .../api/plugins/plugin-google-gtag.mdx | 0 .../api/plugins/plugin-google-tag-manager.mdx | 0 .../api/plugins/plugin-ideal-image.mdx | 0 .../api/plugins/plugin-pwa.mdx | 0 .../api/plugins/plugin-rsdoctor.mdx | 0 .../api/plugins/plugin-sitemap.mdx | 0 .../api/plugins/plugin-vercel-analytics.mdx | 0 .../api/themes/_category_.yml | 0 .../api/themes/overview.mdx | 0 .../api/themes/theme-classic.mdx | 0 .../api/themes/theme-configuration.mdx | 0 .../api/themes/theme-live-codeblock.mdx | 0 .../api/themes/theme-mermaid.mdx | 0 .../api/themes/theme-search-algolia.mdx | 0 .../docusaurus-asset-example-banner.png | Bin .../assets/docusaurus-asset-example.docx | Bin .../assets/docusaurus-asset-example.xyz | Bin .../{version-3.6.2 => version-3.6.3}/blog.mdx | 0 .../browser-support.mdx | 0 .../{version-3.6.2 => version-3.6.3}/cli.mdx | 0 .../configuration.mdx | 0 .../deployment.mdx | 0 .../docusaurus-core.mdx | 0 .../guides/creating-pages.mdx | 0 .../guides/docs/docs-create-doc.mdx | 0 .../guides/docs/docs-introduction.mdx | 0 .../guides/docs/docs-multi-instance.mdx | 0 .../guides/docs/sidebar/autogenerated.mdx | 0 .../guides/docs/sidebar/index.mdx | 0 .../guides/docs/sidebar/items.mdx | 0 .../guides/docs/sidebar/multiple-sidebars.mdx | 0 .../guides/docs/versioning.mdx | 0 .../_markdown-partial-example.mdx | 0 .../markdown-features-admonitions.mdx | 0 .../markdown-features-assets.mdx | 0 .../markdown-features-code-blocks.mdx | 0 .../markdown-features-diagrams.mdx | 0 .../markdown-features-head-metadata.mdx | 0 .../markdown-features-intro.mdx | 0 .../markdown-features-links.mdx | 0 .../markdown-features-math-equations.mdx | 0 .../markdown-features-plugins.mdx | 0 .../markdown-features-react.mdx | 0 .../markdown-features-react.module.css | 0 .../markdown-features-tabs-styles.module.css | 0 .../markdown-features-tabs.mdx | 0 .../markdown-features-toc.mdx | 0 .../guides/whats-next.mdx | 0 .../i18n/i18n-crowdin.mdx | 0 .../i18n/i18n-git.mdx | 0 .../i18n/i18n-introduction.mdx | 0 .../i18n/i18n-tutorial.mdx | 0 .../installation.mdx | 0 .../introduction.mdx | 0 .../migration/index.mdx | 0 .../migration/v2/migration-automated.mdx | 0 .../migration/v2/migration-manual.mdx | 0 .../migration/v2/migration-overview.mdx | 0 .../v2/migration-translated-sites.mdx | 0 .../v2/migration-versioned-sites.mdx | 0 .../migration/v3.mdx | 0 .../playground.mdx | 0 .../search.mdx | 0 .../{version-3.6.2 => version-3.6.3}/seo.mdx | 0 .../static-assets.mdx | 0 .../styling-layout.mdx | 0 .../swizzling.mdx | 0 .../typescript-support.mdx | 0 .../using-plugins.mdx | 0 ...ebars.json => version-3.6.3-sidebars.json} | 0 website/versions.json | 2 +- 148 files changed, 237 insertions(+), 226 deletions(-) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/advanced/architecture.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/advanced/client.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/advanced/index.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/advanced/plugins.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/advanced/routing.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/advanced/ssg.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/docusaurus.config.js.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/misc/_category_.yml (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/misc/create-docusaurus.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/misc/eslint-plugin/README.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/misc/eslint-plugin/no-html-links.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/misc/eslint-plugin/no-untranslated-text.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/misc/eslint-plugin/prefer-docusaurus-heading.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/misc/eslint-plugin/string-literal-i18n-messages.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/misc/logger/demo.png (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/misc/logger/logger.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/plugin-methods/README.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/plugin-methods/_category_.yml (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/plugin-methods/extend-infrastructure.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/plugin-methods/i18n-lifecycles.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/plugin-methods/lifecycle-apis.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/plugin-methods/static-methods.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/plugins/_category_.yml (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/plugins/_partial-tags-file-api-ref-section.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/plugins/overview.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/plugins/plugin-client-redirects.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/plugins/plugin-content-blog.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/plugins/plugin-content-docs.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/plugins/plugin-content-pages.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/plugins/plugin-debug.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/plugins/plugin-google-analytics.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/plugins/plugin-google-gtag.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/plugins/plugin-google-tag-manager.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/plugins/plugin-ideal-image.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/plugins/plugin-pwa.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/plugins/plugin-rsdoctor.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/plugins/plugin-sitemap.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/plugins/plugin-vercel-analytics.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/themes/_category_.yml (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/themes/overview.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/themes/theme-classic.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/themes/theme-configuration.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/themes/theme-live-codeblock.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/themes/theme-mermaid.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/api/themes/theme-search-algolia.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/assets/docusaurus-asset-example-banner.png (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/assets/docusaurus-asset-example.docx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/assets/docusaurus-asset-example.xyz (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/blog.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/browser-support.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/cli.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/configuration.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/deployment.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/docusaurus-core.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/creating-pages.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/docs/docs-create-doc.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/docs/docs-introduction.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/docs/docs-multi-instance.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/docs/sidebar/autogenerated.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/docs/sidebar/index.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/docs/sidebar/items.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/docs/sidebar/multiple-sidebars.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/docs/versioning.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/markdown-features/_markdown-partial-example.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/markdown-features/markdown-features-admonitions.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/markdown-features/markdown-features-assets.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/markdown-features/markdown-features-code-blocks.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/markdown-features/markdown-features-diagrams.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/markdown-features/markdown-features-head-metadata.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/markdown-features/markdown-features-intro.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/markdown-features/markdown-features-links.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/markdown-features/markdown-features-math-equations.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/markdown-features/markdown-features-plugins.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/markdown-features/markdown-features-react.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/markdown-features/markdown-features-react.module.css (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/markdown-features/markdown-features-tabs-styles.module.css (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/markdown-features/markdown-features-tabs.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/markdown-features/markdown-features-toc.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/guides/whats-next.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/i18n/i18n-crowdin.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/i18n/i18n-git.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/i18n/i18n-introduction.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/i18n/i18n-tutorial.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/installation.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/introduction.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/migration/index.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/migration/v2/migration-automated.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/migration/v2/migration-manual.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/migration/v2/migration-overview.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/migration/v2/migration-translated-sites.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/migration/v2/migration-versioned-sites.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/migration/v3.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/playground.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/search.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/seo.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/static-assets.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/styling-layout.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/swizzling.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/typescript-support.mdx (100%) rename website/versioned_docs/{version-3.6.2 => version-3.6.3}/using-plugins.mdx (100%) rename website/versioned_sidebars/{version-3.6.2-sidebars.json => version-3.6.3-sidebars.json} (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 48f8832f29..22a2bd40e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Docusaurus Changelog +## 3.6.3 (2024-11-22) + +#### :bug: Bug Fix + +- `docusaurus` + - [#10712](https://github.com/facebook/docusaurus/pull/10712) fix(core): disable Rspack incremental in dev ([@slorber](https://github.com/slorber)) + +#### Committers: 1 + +- Sébastien Lorber ([@slorber](https://github.com/slorber)) + ## 3.6.2 (2024-11-19) #### :bug: Bug Fix diff --git a/admin/new.docusaurus.io/package.json b/admin/new.docusaurus.io/package.json index 3e576eba88..b211ea3413 100644 --- a/admin/new.docusaurus.io/package.json +++ b/admin/new.docusaurus.io/package.json @@ -1,6 +1,6 @@ { "name": "new.docusaurus.io", - "version": "3.6.2", + "version": "3.6.3", "private": true, "scripts": { "start": "npx --package netlify-cli netlify dev" diff --git a/admin/test-bad-package/package.json b/admin/test-bad-package/package.json index 62e38ed808..9784c1fcc1 100644 --- a/admin/test-bad-package/package.json +++ b/admin/test-bad-package/package.json @@ -1,6 +1,6 @@ { "name": "test-bad-package", - "version": "3.6.2", + "version": "3.6.3", "private": true, "dependencies": { "@mdx-js/react": "1.0.1", diff --git a/argos/package.json b/argos/package.json index 5445d71605..77bfdaee64 100644 --- a/argos/package.json +++ b/argos/package.json @@ -1,6 +1,6 @@ { "name": "argos", - "version": "3.6.2", + "version": "3.6.3", "description": "Argos visual diff tests", "license": "MIT", "private": true, diff --git a/lerna.json b/lerna.json index 02c4922b17..8198cdc86f 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "3.6.2", + "version": "3.6.3", "npmClient": "yarn", "useWorkspaces": true, "useNx": false, diff --git a/packages/create-docusaurus/package.json b/packages/create-docusaurus/package.json index eef80b30bc..8720e0450e 100755 --- a/packages/create-docusaurus/package.json +++ b/packages/create-docusaurus/package.json @@ -1,6 +1,6 @@ { "name": "create-docusaurus", - "version": "3.6.2", + "version": "3.6.3", "description": "Create Docusaurus apps easily.", "type": "module", "repository": { @@ -22,8 +22,8 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/logger": "3.6.2", - "@docusaurus/utils": "3.6.2", + "@docusaurus/logger": "3.6.3", + "@docusaurus/utils": "3.6.3", "commander": "^5.1.0", "fs-extra": "^11.1.1", "lodash": "^4.17.21", diff --git a/packages/create-docusaurus/templates/classic-typescript/package.json b/packages/create-docusaurus/templates/classic-typescript/package.json index 5e942bb1ed..5cbb27904f 100644 --- a/packages/create-docusaurus/templates/classic-typescript/package.json +++ b/packages/create-docusaurus/templates/classic-typescript/package.json @@ -1,6 +1,6 @@ { "name": "docusaurus-2-classic-typescript-template", - "version": "3.6.2", + "version": "3.6.3", "private": true, "scripts": { "docusaurus": "docusaurus", @@ -15,8 +15,8 @@ "typecheck": "tsc" }, "dependencies": { - "@docusaurus/core": "3.6.2", - "@docusaurus/preset-classic": "3.6.2", + "@docusaurus/core": "3.6.3", + "@docusaurus/preset-classic": "3.6.3", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", "prism-react-renderer": "^2.3.0", @@ -24,9 +24,9 @@ "react-dom": "^18.0.0" }, "devDependencies": { - "@docusaurus/module-type-aliases": "3.6.2", - "@docusaurus/tsconfig": "3.6.2", - "@docusaurus/types": "3.6.2", + "@docusaurus/module-type-aliases": "3.6.3", + "@docusaurus/tsconfig": "3.6.3", + "@docusaurus/types": "3.6.3", "typescript": "~5.6.2" }, "browserslist": { diff --git a/packages/create-docusaurus/templates/classic/package.json b/packages/create-docusaurus/templates/classic/package.json index fd0f320fa9..aa0709133b 100644 --- a/packages/create-docusaurus/templates/classic/package.json +++ b/packages/create-docusaurus/templates/classic/package.json @@ -1,6 +1,6 @@ { "name": "docusaurus-2-classic-template", - "version": "3.6.2", + "version": "3.6.3", "private": true, "scripts": { "docusaurus": "docusaurus", @@ -14,8 +14,8 @@ "write-heading-ids": "docusaurus write-heading-ids" }, "dependencies": { - "@docusaurus/core": "3.6.2", - "@docusaurus/preset-classic": "3.6.2", + "@docusaurus/core": "3.6.3", + "@docusaurus/preset-classic": "3.6.3", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", "prism-react-renderer": "^2.3.0", @@ -23,8 +23,8 @@ "react-dom": "^18.0.0" }, "devDependencies": { - "@docusaurus/module-type-aliases": "3.6.2", - "@docusaurus/types": "3.6.2" + "@docusaurus/module-type-aliases": "3.6.3", + "@docusaurus/types": "3.6.3" }, "browserslist": { "production": [ diff --git a/packages/docusaurus-babel/package.json b/packages/docusaurus-babel/package.json index 470477cd04..e818b25061 100644 --- a/packages/docusaurus-babel/package.json +++ b/packages/docusaurus-babel/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/babel", - "version": "3.6.2", + "version": "3.6.3", "description": "Docusaurus package for Babel-related utils.", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -38,8 +38,8 @@ "@babel/runtime": "^7.25.9", "@babel/runtime-corejs3": "^7.25.9", "@babel/traverse": "^7.25.9", - "@docusaurus/logger": "3.6.2", - "@docusaurus/utils": "3.6.2", + "@docusaurus/logger": "3.6.3", + "@docusaurus/utils": "3.6.3", "babel-plugin-dynamic-import-node": "^2.3.3", "fs-extra": "^11.1.1", "tslib": "^2.6.0" diff --git a/packages/docusaurus-bundler/package.json b/packages/docusaurus-bundler/package.json index 55a5294100..65e1a9f244 100644 --- a/packages/docusaurus-bundler/package.json +++ b/packages/docusaurus-bundler/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/bundler", - "version": "3.6.2", + "version": "3.6.3", "description": "Docusaurus util package to abstract the current bundler.", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -19,11 +19,11 @@ "license": "MIT", "dependencies": { "@babel/core": "^7.25.9", - "@docusaurus/babel": "3.6.2", - "@docusaurus/cssnano-preset": "3.6.2", - "@docusaurus/logger": "3.6.2", - "@docusaurus/types": "3.6.2", - "@docusaurus/utils": "3.6.2", + "@docusaurus/babel": "3.6.3", + "@docusaurus/cssnano-preset": "3.6.3", + "@docusaurus/logger": "3.6.3", + "@docusaurus/types": "3.6.3", + "@docusaurus/utils": "3.6.3", "babel-loader": "^9.2.1", "clean-css": "^5.3.2", "copy-webpack-plugin": "^11.0.0", diff --git a/packages/docusaurus-cssnano-preset/package.json b/packages/docusaurus-cssnano-preset/package.json index 825ed1e05d..d8f8e7940b 100644 --- a/packages/docusaurus-cssnano-preset/package.json +++ b/packages/docusaurus-cssnano-preset/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/cssnano-preset", - "version": "3.6.2", + "version": "3.6.3", "description": "Advanced cssnano preset for maximum optimization.", "main": "lib/index.js", "license": "MIT", diff --git a/packages/docusaurus-faster/package.json b/packages/docusaurus-faster/package.json index 616ba22702..05059cdf6c 100644 --- a/packages/docusaurus-faster/package.json +++ b/packages/docusaurus-faster/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/faster", - "version": "3.6.2", + "version": "3.6.3", "description": "Docusaurus experimental package exposing new modern dependencies to make the build faster.", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -18,7 +18,7 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/types": "3.6.2", + "@docusaurus/types": "3.6.3", "@rspack/core": "^1.1.1", "@swc/core": "^1.7.39", "@swc/html": "^1.7.39", diff --git a/packages/docusaurus-logger/package.json b/packages/docusaurus-logger/package.json index 1f6ac902d6..61a33fa60b 100644 --- a/packages/docusaurus-logger/package.json +++ b/packages/docusaurus-logger/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/logger", - "version": "3.6.2", + "version": "3.6.3", "description": "An encapsulated logger for semantically formatting console messages.", "main": "./lib/index.js", "repository": { diff --git a/packages/docusaurus-mdx-loader/package.json b/packages/docusaurus-mdx-loader/package.json index 59a7de3e92..69546431d9 100644 --- a/packages/docusaurus-mdx-loader/package.json +++ b/packages/docusaurus-mdx-loader/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/mdx-loader", - "version": "3.6.2", + "version": "3.6.3", "description": "Docusaurus Loader for MDX", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -18,9 +18,9 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/logger": "3.6.2", - "@docusaurus/utils": "3.6.2", - "@docusaurus/utils-validation": "3.6.2", + "@docusaurus/logger": "3.6.3", + "@docusaurus/utils": "3.6.3", + "@docusaurus/utils-validation": "3.6.3", "@mdx-js/mdx": "^3.0.0", "@slorber/remark-comment": "^1.0.0", "escape-html": "^1.0.3", @@ -44,7 +44,7 @@ "webpack": "^5.88.1" }, "devDependencies": { - "@docusaurus/types": "3.6.2", + "@docusaurus/types": "3.6.3", "@types/escape-html": "^1.0.2", "@types/mdast": "^4.0.2", "@types/stringify-object": "^3.3.1", diff --git a/packages/docusaurus-module-type-aliases/package.json b/packages/docusaurus-module-type-aliases/package.json index 0dc2881f88..a7ba21f20e 100644 --- a/packages/docusaurus-module-type-aliases/package.json +++ b/packages/docusaurus-module-type-aliases/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/module-type-aliases", - "version": "3.6.2", + "version": "3.6.3", "description": "Docusaurus module type aliases.", "types": "./src/index.d.ts", "publishConfig": { @@ -12,7 +12,7 @@ "directory": "packages/docusaurus-module-type-aliases" }, "dependencies": { - "@docusaurus/types": "3.6.2", + "@docusaurus/types": "3.6.3", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", diff --git a/packages/docusaurus-plugin-client-redirects/package.json b/packages/docusaurus-plugin-client-redirects/package.json index 071b3dbfeb..7473f9b78c 100644 --- a/packages/docusaurus-plugin-client-redirects/package.json +++ b/packages/docusaurus-plugin-client-redirects/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/plugin-client-redirects", - "version": "3.6.2", + "version": "3.6.3", "description": "Client redirects plugin for Docusaurus.", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -18,18 +18,18 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.2", - "@docusaurus/logger": "3.6.2", - "@docusaurus/utils": "3.6.2", - "@docusaurus/utils-common": "3.6.2", - "@docusaurus/utils-validation": "3.6.2", + "@docusaurus/core": "3.6.3", + "@docusaurus/logger": "3.6.3", + "@docusaurus/utils": "3.6.3", + "@docusaurus/utils-common": "3.6.3", + "@docusaurus/utils-validation": "3.6.3", "eta": "^2.2.0", "fs-extra": "^11.1.1", "lodash": "^4.17.21", "tslib": "^2.6.0" }, "devDependencies": { - "@docusaurus/types": "3.6.2" + "@docusaurus/types": "3.6.3" }, "peerDependencies": { "react": "^18.0.0", diff --git a/packages/docusaurus-plugin-content-blog/package.json b/packages/docusaurus-plugin-content-blog/package.json index ac25274783..4ed76c8e47 100644 --- a/packages/docusaurus-plugin-content-blog/package.json +++ b/packages/docusaurus-plugin-content-blog/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/plugin-content-blog", - "version": "3.6.2", + "version": "3.6.3", "description": "Blog plugin for Docusaurus.", "main": "lib/index.js", "types": "src/plugin-content-blog.d.ts", @@ -31,14 +31,14 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.2", - "@docusaurus/logger": "3.6.2", - "@docusaurus/mdx-loader": "3.6.2", - "@docusaurus/theme-common": "3.6.2", - "@docusaurus/types": "3.6.2", - "@docusaurus/utils": "3.6.2", - "@docusaurus/utils-common": "3.6.2", - "@docusaurus/utils-validation": "3.6.2", + "@docusaurus/core": "3.6.3", + "@docusaurus/logger": "3.6.3", + "@docusaurus/mdx-loader": "3.6.3", + "@docusaurus/theme-common": "3.6.3", + "@docusaurus/types": "3.6.3", + "@docusaurus/utils": "3.6.3", + "@docusaurus/utils-common": "3.6.3", + "@docusaurus/utils-validation": "3.6.3", "cheerio": "1.0.0-rc.12", "feed": "^4.2.2", "fs-extra": "^11.1.1", diff --git a/packages/docusaurus-plugin-content-docs/package.json b/packages/docusaurus-plugin-content-docs/package.json index 33574c3a9d..b0d964444f 100644 --- a/packages/docusaurus-plugin-content-docs/package.json +++ b/packages/docusaurus-plugin-content-docs/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/plugin-content-docs", - "version": "3.6.2", + "version": "3.6.3", "description": "Docs plugin for Docusaurus.", "main": "lib/index.js", "sideEffects": false, @@ -35,15 +35,15 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.2", - "@docusaurus/logger": "3.6.2", - "@docusaurus/mdx-loader": "3.6.2", - "@docusaurus/module-type-aliases": "3.6.2", - "@docusaurus/theme-common": "3.6.2", - "@docusaurus/types": "3.6.2", - "@docusaurus/utils": "3.6.2", - "@docusaurus/utils-common": "3.6.2", - "@docusaurus/utils-validation": "3.6.2", + "@docusaurus/core": "3.6.3", + "@docusaurus/logger": "3.6.3", + "@docusaurus/mdx-loader": "3.6.3", + "@docusaurus/module-type-aliases": "3.6.3", + "@docusaurus/theme-common": "3.6.3", + "@docusaurus/types": "3.6.3", + "@docusaurus/utils": "3.6.3", + "@docusaurus/utils-common": "3.6.3", + "@docusaurus/utils-validation": "3.6.3", "@types/react-router-config": "^5.0.7", "combine-promises": "^1.1.0", "fs-extra": "^11.1.1", diff --git a/packages/docusaurus-plugin-content-pages/package.json b/packages/docusaurus-plugin-content-pages/package.json index 01d3c08732..f8efc0331d 100644 --- a/packages/docusaurus-plugin-content-pages/package.json +++ b/packages/docusaurus-plugin-content-pages/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/plugin-content-pages", - "version": "3.6.2", + "version": "3.6.3", "description": "Pages plugin for Docusaurus.", "main": "lib/index.js", "types": "src/plugin-content-pages.d.ts", @@ -18,11 +18,11 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.2", - "@docusaurus/mdx-loader": "3.6.2", - "@docusaurus/types": "3.6.2", - "@docusaurus/utils": "3.6.2", - "@docusaurus/utils-validation": "3.6.2", + "@docusaurus/core": "3.6.3", + "@docusaurus/mdx-loader": "3.6.3", + "@docusaurus/types": "3.6.3", + "@docusaurus/utils": "3.6.3", + "@docusaurus/utils-validation": "3.6.3", "fs-extra": "^11.1.1", "tslib": "^2.6.0", "webpack": "^5.88.1" diff --git a/packages/docusaurus-plugin-debug/package.json b/packages/docusaurus-plugin-debug/package.json index 57f93c6595..40c84b1468 100644 --- a/packages/docusaurus-plugin-debug/package.json +++ b/packages/docusaurus-plugin-debug/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/plugin-debug", - "version": "3.6.2", + "version": "3.6.3", "description": "Debug plugin for Docusaurus.", "main": "lib/index.js", "types": "src/plugin-debug.d.ts", @@ -20,9 +20,9 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.2", - "@docusaurus/types": "3.6.2", - "@docusaurus/utils": "3.6.2", + "@docusaurus/core": "3.6.3", + "@docusaurus/types": "3.6.3", + "@docusaurus/utils": "3.6.3", "fs-extra": "^11.1.1", "react-json-view-lite": "^1.2.0", "tslib": "^2.6.0" diff --git a/packages/docusaurus-plugin-google-analytics/package.json b/packages/docusaurus-plugin-google-analytics/package.json index d7d01322ae..5b90e5a123 100644 --- a/packages/docusaurus-plugin-google-analytics/package.json +++ b/packages/docusaurus-plugin-google-analytics/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/plugin-google-analytics", - "version": "3.6.2", + "version": "3.6.3", "description": "Global analytics (analytics.js) plugin for Docusaurus.", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -18,9 +18,9 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.2", - "@docusaurus/types": "3.6.2", - "@docusaurus/utils-validation": "3.6.2", + "@docusaurus/core": "3.6.3", + "@docusaurus/types": "3.6.3", + "@docusaurus/utils-validation": "3.6.3", "tslib": "^2.6.0" }, "peerDependencies": { diff --git a/packages/docusaurus-plugin-google-gtag/package.json b/packages/docusaurus-plugin-google-gtag/package.json index ead7becb33..84e2752be3 100644 --- a/packages/docusaurus-plugin-google-gtag/package.json +++ b/packages/docusaurus-plugin-google-gtag/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/plugin-google-gtag", - "version": "3.6.2", + "version": "3.6.3", "description": "Global Site Tag (gtag.js) plugin for Docusaurus.", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -18,9 +18,9 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.2", - "@docusaurus/types": "3.6.2", - "@docusaurus/utils-validation": "3.6.2", + "@docusaurus/core": "3.6.3", + "@docusaurus/types": "3.6.3", + "@docusaurus/utils-validation": "3.6.3", "@types/gtag.js": "^0.0.12", "tslib": "^2.6.0" }, diff --git a/packages/docusaurus-plugin-google-tag-manager/package.json b/packages/docusaurus-plugin-google-tag-manager/package.json index c4f660d2aa..2faaa9e043 100644 --- a/packages/docusaurus-plugin-google-tag-manager/package.json +++ b/packages/docusaurus-plugin-google-tag-manager/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/plugin-google-tag-manager", - "version": "3.6.2", + "version": "3.6.3", "description": "Google Tag Manager (gtm.js) plugin for Docusaurus.", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -18,9 +18,9 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.2", - "@docusaurus/types": "3.6.2", - "@docusaurus/utils-validation": "3.6.2", + "@docusaurus/core": "3.6.3", + "@docusaurus/types": "3.6.3", + "@docusaurus/utils-validation": "3.6.3", "tslib": "^2.6.0" }, "peerDependencies": { diff --git a/packages/docusaurus-plugin-ideal-image/package.json b/packages/docusaurus-plugin-ideal-image/package.json index 6145ba1b87..94ae2d1ed3 100644 --- a/packages/docusaurus-plugin-ideal-image/package.json +++ b/packages/docusaurus-plugin-ideal-image/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/plugin-ideal-image", - "version": "3.6.2", + "version": "3.6.3", "description": "Docusaurus Plugin to generate an almost ideal image (responsive, lazy-loading, and low quality placeholder).", "main": "lib/index.js", "types": "src/plugin-ideal-image.d.ts", @@ -20,12 +20,12 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.2", - "@docusaurus/lqip-loader": "3.6.2", + "@docusaurus/core": "3.6.3", + "@docusaurus/lqip-loader": "3.6.3", "@docusaurus/responsive-loader": "^1.7.0", - "@docusaurus/theme-translations": "3.6.2", - "@docusaurus/types": "3.6.2", - "@docusaurus/utils-validation": "3.6.2", + "@docusaurus/theme-translations": "3.6.3", + "@docusaurus/types": "3.6.3", + "@docusaurus/utils-validation": "3.6.3", "@slorber/react-ideal-image": "^0.0.12", "react-waypoint": "^10.3.0", "sharp": "^0.32.3", @@ -33,7 +33,7 @@ "webpack": "^5.88.1" }, "devDependencies": { - "@docusaurus/module-type-aliases": "3.6.2", + "@docusaurus/module-type-aliases": "3.6.3", "fs-extra": "^11.1.0" }, "peerDependencies": { diff --git a/packages/docusaurus-plugin-pwa/package.json b/packages/docusaurus-plugin-pwa/package.json index 426a7302f5..3a8a68f487 100644 --- a/packages/docusaurus-plugin-pwa/package.json +++ b/packages/docusaurus-plugin-pwa/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/plugin-pwa", - "version": "3.6.2", + "version": "3.6.3", "description": "Docusaurus Plugin to add PWA support.", "main": "lib/index.js", "types": "src/plugin-pwa.d.ts", @@ -22,14 +22,14 @@ "dependencies": { "@babel/core": "^7.25.9", "@babel/preset-env": "^7.25.9", - "@docusaurus/bundler": "3.6.2", - "@docusaurus/core": "3.6.2", - "@docusaurus/logger": "3.6.2", - "@docusaurus/theme-common": "3.6.2", - "@docusaurus/theme-translations": "3.6.2", - "@docusaurus/types": "3.6.2", - "@docusaurus/utils": "3.6.2", - "@docusaurus/utils-validation": "3.6.2", + "@docusaurus/bundler": "3.6.3", + "@docusaurus/core": "3.6.3", + "@docusaurus/logger": "3.6.3", + "@docusaurus/theme-common": "3.6.3", + "@docusaurus/theme-translations": "3.6.3", + "@docusaurus/types": "3.6.3", + "@docusaurus/utils": "3.6.3", + "@docusaurus/utils-validation": "3.6.3", "babel-loader": "^9.2.1", "clsx": "^2.0.0", "core-js": "^3.31.1", @@ -41,7 +41,7 @@ "workbox-window": "^7.0.0" }, "devDependencies": { - "@docusaurus/module-type-aliases": "3.6.2", + "@docusaurus/module-type-aliases": "3.6.3", "fs-extra": "^11.1.0" }, "peerDependencies": { diff --git a/packages/docusaurus-plugin-rsdoctor/package.json b/packages/docusaurus-plugin-rsdoctor/package.json index d5cafb8e5e..7b5f5e6073 100644 --- a/packages/docusaurus-plugin-rsdoctor/package.json +++ b/packages/docusaurus-plugin-rsdoctor/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/plugin-rsdoctor", - "version": "3.6.2", + "version": "3.6.3", "description": "Rsdoctor plugin for Docusaurus.", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -18,9 +18,9 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.2", - "@docusaurus/types": "3.6.2", - "@docusaurus/utils-validation": "3.6.2", + "@docusaurus/core": "3.6.3", + "@docusaurus/types": "3.6.3", + "@docusaurus/utils-validation": "3.6.3", "@rsdoctor/rspack-plugin": "^0.4.6", "@rsdoctor/webpack-plugin": "^0.4.6", "tslib": "^2.6.0" diff --git a/packages/docusaurus-plugin-sitemap/package.json b/packages/docusaurus-plugin-sitemap/package.json index 2fffc5d538..9cea0a4b00 100644 --- a/packages/docusaurus-plugin-sitemap/package.json +++ b/packages/docusaurus-plugin-sitemap/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/plugin-sitemap", - "version": "3.6.2", + "version": "3.6.3", "description": "Simple sitemap generation plugin for Docusaurus.", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -18,12 +18,12 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.2", - "@docusaurus/logger": "3.6.2", - "@docusaurus/types": "3.6.2", - "@docusaurus/utils": "3.6.2", - "@docusaurus/utils-common": "3.6.2", - "@docusaurus/utils-validation": "3.6.2", + "@docusaurus/core": "3.6.3", + "@docusaurus/logger": "3.6.3", + "@docusaurus/types": "3.6.3", + "@docusaurus/utils": "3.6.3", + "@docusaurus/utils-common": "3.6.3", + "@docusaurus/utils-validation": "3.6.3", "fs-extra": "^11.1.1", "sitemap": "^7.1.1", "tslib": "^2.6.0" diff --git a/packages/docusaurus-plugin-vercel-analytics/package.json b/packages/docusaurus-plugin-vercel-analytics/package.json index 0f31fa46d7..65c6e85387 100644 --- a/packages/docusaurus-plugin-vercel-analytics/package.json +++ b/packages/docusaurus-plugin-vercel-analytics/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/plugin-vercel-analytics", - "version": "3.6.2", + "version": "3.6.3", "description": "Global vercel analytics plugin for Docusaurus.", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -18,11 +18,11 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.2", - "@docusaurus/logger": "3.6.2", - "@docusaurus/types": "3.6.2", - "@docusaurus/utils": "3.6.2", - "@docusaurus/utils-validation": "3.6.2", + "@docusaurus/core": "3.6.3", + "@docusaurus/logger": "3.6.3", + "@docusaurus/types": "3.6.3", + "@docusaurus/utils": "3.6.3", + "@docusaurus/utils-validation": "3.6.3", "@vercel/analytics": "^1.1.1", "tslib": "^2.6.0" }, diff --git a/packages/docusaurus-preset-classic/package.json b/packages/docusaurus-preset-classic/package.json index a00bd11692..b032599783 100644 --- a/packages/docusaurus-preset-classic/package.json +++ b/packages/docusaurus-preset-classic/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/preset-classic", - "version": "3.6.2", + "version": "3.6.3", "description": "Classic preset for Docusaurus.", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -18,19 +18,19 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.2", - "@docusaurus/plugin-content-blog": "3.6.2", - "@docusaurus/plugin-content-docs": "3.6.2", - "@docusaurus/plugin-content-pages": "3.6.2", - "@docusaurus/plugin-debug": "3.6.2", - "@docusaurus/plugin-google-analytics": "3.6.2", - "@docusaurus/plugin-google-gtag": "3.6.2", - "@docusaurus/plugin-google-tag-manager": "3.6.2", - "@docusaurus/plugin-sitemap": "3.6.2", - "@docusaurus/theme-classic": "3.6.2", - "@docusaurus/theme-common": "3.6.2", - "@docusaurus/theme-search-algolia": "3.6.2", - "@docusaurus/types": "3.6.2" + "@docusaurus/core": "3.6.3", + "@docusaurus/plugin-content-blog": "3.6.3", + "@docusaurus/plugin-content-docs": "3.6.3", + "@docusaurus/plugin-content-pages": "3.6.3", + "@docusaurus/plugin-debug": "3.6.3", + "@docusaurus/plugin-google-analytics": "3.6.3", + "@docusaurus/plugin-google-gtag": "3.6.3", + "@docusaurus/plugin-google-tag-manager": "3.6.3", + "@docusaurus/plugin-sitemap": "3.6.3", + "@docusaurus/theme-classic": "3.6.3", + "@docusaurus/theme-common": "3.6.3", + "@docusaurus/theme-search-algolia": "3.6.3", + "@docusaurus/types": "3.6.3" }, "peerDependencies": { "react": "^18.0.0", diff --git a/packages/docusaurus-remark-plugin-npm2yarn/package.json b/packages/docusaurus-remark-plugin-npm2yarn/package.json index f77d7ca0ba..b15e3548d7 100644 --- a/packages/docusaurus-remark-plugin-npm2yarn/package.json +++ b/packages/docusaurus-remark-plugin-npm2yarn/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/remark-plugin-npm2yarn", - "version": "3.6.2", + "version": "3.6.3", "description": "Remark plugin for converting npm commands to Yarn commands as tabs.", "main": "lib/index.js", "publishConfig": { diff --git a/packages/docusaurus-theme-classic/package.json b/packages/docusaurus-theme-classic/package.json index 572015db9b..849448cbca 100644 --- a/packages/docusaurus-theme-classic/package.json +++ b/packages/docusaurus-theme-classic/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/theme-classic", - "version": "3.6.2", + "version": "3.6.3", "description": "Classic theme for Docusaurus", "main": "lib/index.js", "types": "src/theme-classic.d.ts", @@ -20,19 +20,19 @@ "copy:watch": "node ../../admin/scripts/copyUntypedFiles.js --watch" }, "dependencies": { - "@docusaurus/core": "3.6.2", - "@docusaurus/logger": "3.6.2", - "@docusaurus/mdx-loader": "3.6.2", - "@docusaurus/module-type-aliases": "3.6.2", - "@docusaurus/plugin-content-blog": "3.6.2", - "@docusaurus/plugin-content-docs": "3.6.2", - "@docusaurus/plugin-content-pages": "3.6.2", - "@docusaurus/theme-common": "3.6.2", - "@docusaurus/theme-translations": "3.6.2", - "@docusaurus/types": "3.6.2", - "@docusaurus/utils": "3.6.2", - "@docusaurus/utils-common": "3.6.2", - "@docusaurus/utils-validation": "3.6.2", + "@docusaurus/core": "3.6.3", + "@docusaurus/logger": "3.6.3", + "@docusaurus/mdx-loader": "3.6.3", + "@docusaurus/module-type-aliases": "3.6.3", + "@docusaurus/plugin-content-blog": "3.6.3", + "@docusaurus/plugin-content-docs": "3.6.3", + "@docusaurus/plugin-content-pages": "3.6.3", + "@docusaurus/theme-common": "3.6.3", + "@docusaurus/theme-translations": "3.6.3", + "@docusaurus/types": "3.6.3", + "@docusaurus/utils": "3.6.3", + "@docusaurus/utils-common": "3.6.3", + "@docusaurus/utils-validation": "3.6.3", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", "copy-text-to-clipboard": "^3.2.0", diff --git a/packages/docusaurus-theme-common/package.json b/packages/docusaurus-theme-common/package.json index 566460fbad..6bff8d5445 100644 --- a/packages/docusaurus-theme-common/package.json +++ b/packages/docusaurus-theme-common/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/theme-common", - "version": "3.6.2", + "version": "3.6.3", "description": "Common code for Docusaurus themes.", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -30,10 +30,10 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/mdx-loader": "3.6.2", - "@docusaurus/module-type-aliases": "3.6.2", - "@docusaurus/utils": "3.6.2", - "@docusaurus/utils-common": "3.6.2", + "@docusaurus/mdx-loader": "3.6.3", + "@docusaurus/module-type-aliases": "3.6.3", + "@docusaurus/utils": "3.6.3", + "@docusaurus/utils-common": "3.6.3", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", @@ -44,8 +44,8 @@ "utility-types": "^3.10.0" }, "devDependencies": { - "@docusaurus/core": "3.6.2", - "@docusaurus/types": "3.6.2", + "@docusaurus/core": "3.6.3", + "@docusaurus/types": "3.6.3", "fs-extra": "^11.1.1", "lodash": "^4.17.21", "schema-dts": "^1.1.2" diff --git a/packages/docusaurus-theme-live-codeblock/package.json b/packages/docusaurus-theme-live-codeblock/package.json index c494bf1d5c..adb317c148 100644 --- a/packages/docusaurus-theme-live-codeblock/package.json +++ b/packages/docusaurus-theme-live-codeblock/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/theme-live-codeblock", - "version": "3.6.2", + "version": "3.6.3", "description": "Docusaurus live code block component.", "main": "lib/index.js", "types": "src/theme-live-codeblock.d.ts", @@ -23,10 +23,10 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.2", - "@docusaurus/theme-common": "3.6.2", - "@docusaurus/theme-translations": "3.6.2", - "@docusaurus/utils-validation": "3.6.2", + "@docusaurus/core": "3.6.3", + "@docusaurus/theme-common": "3.6.3", + "@docusaurus/theme-translations": "3.6.3", + "@docusaurus/utils-validation": "3.6.3", "@philpl/buble": "^0.19.7", "clsx": "^2.0.0", "fs-extra": "^11.1.1", @@ -34,7 +34,7 @@ "tslib": "^2.6.0" }, "devDependencies": { - "@docusaurus/types": "3.6.2", + "@docusaurus/types": "3.6.3", "@types/buble": "^0.20.1" }, "peerDependencies": { diff --git a/packages/docusaurus-theme-mermaid/package.json b/packages/docusaurus-theme-mermaid/package.json index dad362c0ed..5904a63b25 100644 --- a/packages/docusaurus-theme-mermaid/package.json +++ b/packages/docusaurus-theme-mermaid/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/theme-mermaid", - "version": "3.6.2", + "version": "3.6.3", "description": "Mermaid components for Docusaurus.", "main": "lib/index.js", "types": "src/theme-mermaid.d.ts", @@ -33,11 +33,11 @@ "copy:watch": "node ../../admin/scripts/copyUntypedFiles.js --watch" }, "dependencies": { - "@docusaurus/core": "3.6.2", - "@docusaurus/module-type-aliases": "3.6.2", - "@docusaurus/theme-common": "3.6.2", - "@docusaurus/types": "3.6.2", - "@docusaurus/utils-validation": "3.6.2", + "@docusaurus/core": "3.6.3", + "@docusaurus/module-type-aliases": "3.6.3", + "@docusaurus/theme-common": "3.6.3", + "@docusaurus/types": "3.6.3", + "@docusaurus/utils-validation": "3.6.3", "mermaid": ">=10.4", "tslib": "^2.6.0" }, diff --git a/packages/docusaurus-theme-search-algolia/package.json b/packages/docusaurus-theme-search-algolia/package.json index 4133df6e88..7736e766e3 100644 --- a/packages/docusaurus-theme-search-algolia/package.json +++ b/packages/docusaurus-theme-search-algolia/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/theme-search-algolia", - "version": "3.6.2", + "version": "3.6.3", "description": "Algolia search component for Docusaurus.", "main": "lib/index.js", "sideEffects": [ @@ -34,13 +34,13 @@ }, "dependencies": { "@docsearch/react": "^3.5.2", - "@docusaurus/core": "3.6.2", - "@docusaurus/logger": "3.6.2", - "@docusaurus/plugin-content-docs": "3.6.2", - "@docusaurus/theme-common": "3.6.2", - "@docusaurus/theme-translations": "3.6.2", - "@docusaurus/utils": "3.6.2", - "@docusaurus/utils-validation": "3.6.2", + "@docusaurus/core": "3.6.3", + "@docusaurus/logger": "3.6.3", + "@docusaurus/plugin-content-docs": "3.6.3", + "@docusaurus/theme-common": "3.6.3", + "@docusaurus/theme-translations": "3.6.3", + "@docusaurus/utils": "3.6.3", + "@docusaurus/utils-validation": "3.6.3", "algoliasearch": "^4.18.0", "algoliasearch-helper": "^3.13.3", "clsx": "^2.0.0", @@ -51,7 +51,7 @@ "utility-types": "^3.10.0" }, "devDependencies": { - "@docusaurus/module-type-aliases": "3.6.2" + "@docusaurus/module-type-aliases": "3.6.3" }, "peerDependencies": { "react": "^18.0.0", diff --git a/packages/docusaurus-theme-translations/package.json b/packages/docusaurus-theme-translations/package.json index f513712a5f..fbfb7948d4 100644 --- a/packages/docusaurus-theme-translations/package.json +++ b/packages/docusaurus-theme-translations/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/theme-translations", - "version": "3.6.2", + "version": "3.6.3", "description": "Docusaurus theme translations.", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -23,10 +23,10 @@ "tslib": "^2.6.0" }, "devDependencies": { - "@docusaurus/babel": "3.6.2", - "@docusaurus/core": "3.6.2", - "@docusaurus/logger": "3.6.2", - "@docusaurus/utils": "3.6.2", + "@docusaurus/babel": "3.6.3", + "@docusaurus/core": "3.6.3", + "@docusaurus/logger": "3.6.3", + "@docusaurus/utils": "3.6.3", "lodash": "^4.17.21" }, "engines": { diff --git a/packages/docusaurus-tsconfig/package.json b/packages/docusaurus-tsconfig/package.json index 581df315a0..b338588281 100644 --- a/packages/docusaurus-tsconfig/package.json +++ b/packages/docusaurus-tsconfig/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/tsconfig", - "version": "3.6.2", + "version": "3.6.3", "description": "Docusaurus base TypeScript configuration.", "main": "tsconfig.json", "publishConfig": { diff --git a/packages/docusaurus-types/package.json b/packages/docusaurus-types/package.json index 75b132ccdb..d54d448916 100644 --- a/packages/docusaurus-types/package.json +++ b/packages/docusaurus-types/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/types", - "version": "3.6.2", + "version": "3.6.3", "description": "Common types for Docusaurus packages.", "types": "./src/index.d.ts", "publishConfig": { diff --git a/packages/docusaurus-utils-common/package.json b/packages/docusaurus-utils-common/package.json index 9509956fa6..1d338aa23f 100644 --- a/packages/docusaurus-utils-common/package.json +++ b/packages/docusaurus-utils-common/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/utils-common", - "version": "3.6.2", + "version": "3.6.3", "description": "Common (Node/Browser) utility functions for Docusaurus packages.", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -19,7 +19,7 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/types": "3.6.2", + "@docusaurus/types": "3.6.3", "tslib": "^2.6.0" }, "engines": { diff --git a/packages/docusaurus-utils-validation/package.json b/packages/docusaurus-utils-validation/package.json index 0acd5b3bd4..1fa672eb23 100644 --- a/packages/docusaurus-utils-validation/package.json +++ b/packages/docusaurus-utils-validation/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/utils-validation", - "version": "3.6.2", + "version": "3.6.3", "description": "Node validation utility functions for Docusaurus packages.", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -18,9 +18,9 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/logger": "3.6.2", - "@docusaurus/utils": "3.6.2", - "@docusaurus/utils-common": "3.6.2", + "@docusaurus/logger": "3.6.3", + "@docusaurus/utils": "3.6.3", + "@docusaurus/utils-common": "3.6.3", "fs-extra": "^11.2.0", "joi": "^17.9.2", "js-yaml": "^4.1.0", diff --git a/packages/docusaurus-utils/package.json b/packages/docusaurus-utils/package.json index 21f7fb8b69..b4bfab548f 100644 --- a/packages/docusaurus-utils/package.json +++ b/packages/docusaurus-utils/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/utils", - "version": "3.6.2", + "version": "3.6.3", "description": "Node utility functions for Docusaurus packages.", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -18,9 +18,9 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/logger": "3.6.2", - "@docusaurus/types": "3.6.2", - "@docusaurus/utils-common": "3.6.2", + "@docusaurus/logger": "3.6.3", + "@docusaurus/types": "3.6.3", + "@docusaurus/utils-common": "3.6.3", "@svgr/webpack": "^8.1.0", "escape-string-regexp": "^4.0.0", "file-loader": "^6.2.0", diff --git a/packages/docusaurus/package.json b/packages/docusaurus/package.json index ba9af2f2d1..6ec765a2e8 100644 --- a/packages/docusaurus/package.json +++ b/packages/docusaurus/package.json @@ -1,7 +1,7 @@ { "name": "@docusaurus/core", "description": "Easy to Maintain Open Source Documentation Websites", - "version": "3.6.2", + "version": "3.6.3", "license": "MIT", "publishConfig": { "access": "public" @@ -33,13 +33,13 @@ "url": "https://github.com/facebook/docusaurus/issues" }, "dependencies": { - "@docusaurus/babel": "3.6.2", - "@docusaurus/bundler": "3.6.2", - "@docusaurus/logger": "3.6.2", - "@docusaurus/mdx-loader": "3.6.2", - "@docusaurus/utils": "3.6.2", - "@docusaurus/utils-common": "3.6.2", - "@docusaurus/utils-validation": "3.6.2", + "@docusaurus/babel": "3.6.3", + "@docusaurus/bundler": "3.6.3", + "@docusaurus/logger": "3.6.3", + "@docusaurus/mdx-loader": "3.6.3", + "@docusaurus/utils": "3.6.3", + "@docusaurus/utils-common": "3.6.3", + "@docusaurus/utils-validation": "3.6.3", "boxen": "^6.2.1", "chalk": "^4.1.2", "chokidar": "^3.5.3", @@ -78,8 +78,8 @@ "webpack-merge": "^6.0.1" }, "devDependencies": { - "@docusaurus/module-type-aliases": "3.6.2", - "@docusaurus/types": "3.6.2", + "@docusaurus/module-type-aliases": "3.6.3", + "@docusaurus/types": "3.6.3", "@total-typescript/shoehorn": "^0.1.2", "@types/detect-port": "^1.3.3", "@types/react-dom": "^18.2.7", diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index b973303d01..74c4a58999 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/eslint-plugin", - "version": "3.6.2", + "version": "3.6.3", "description": "ESLint plugin to enforce best Docusaurus practices.", "main": "lib/index.js", "keywords": [ diff --git a/packages/lqip-loader/package.json b/packages/lqip-loader/package.json index 6640eacd14..80bac58e58 100644 --- a/packages/lqip-loader/package.json +++ b/packages/lqip-loader/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/lqip-loader", - "version": "3.6.2", + "version": "3.6.3", "description": "Low Quality Image Placeholders (LQIP) loader for webpack.", "main": "lib/index.js", "publishConfig": { @@ -17,7 +17,7 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/logger": "3.6.2", + "@docusaurus/logger": "3.6.3", "file-loader": "^6.2.0", "lodash": "^4.17.21", "sharp": "^0.32.3", diff --git a/packages/stylelint-copyright/package.json b/packages/stylelint-copyright/package.json index 1787704727..770f090c03 100644 --- a/packages/stylelint-copyright/package.json +++ b/packages/stylelint-copyright/package.json @@ -1,6 +1,6 @@ { "name": "stylelint-copyright", - "version": "3.6.2", + "version": "3.6.3", "description": "Stylelint plugin to check CSS files for a copyright header.", "main": "lib/index.js", "license": "MIT", diff --git a/website/package.json b/website/package.json index 09860e0d4b..fc61ef63ae 100644 --- a/website/package.json +++ b/website/package.json @@ -1,6 +1,6 @@ { "name": "website", - "version": "3.6.2", + "version": "3.6.3", "private": true, "scripts": { "docusaurus": "docusaurus", @@ -38,20 +38,20 @@ "dependencies": { "@crowdin/cli": "^3.13.0", "@crowdin/crowdin-api-client": "^1.29.5", - "@docusaurus/core": "3.6.2", - "@docusaurus/logger": "3.6.2", - "@docusaurus/plugin-client-redirects": "3.6.2", - "@docusaurus/plugin-ideal-image": "3.6.2", - "@docusaurus/plugin-pwa": "3.6.2", - "@docusaurus/plugin-rsdoctor": "3.6.2", - "@docusaurus/preset-classic": "3.6.2", - "@docusaurus/remark-plugin-npm2yarn": "3.6.2", - "@docusaurus/theme-classic": "3.6.2", - "@docusaurus/theme-common": "3.6.2", - "@docusaurus/theme-live-codeblock": "3.6.2", - "@docusaurus/theme-mermaid": "3.6.2", - "@docusaurus/utils": "3.6.2", - "@docusaurus/utils-common": "3.6.2", + "@docusaurus/core": "3.6.3", + "@docusaurus/logger": "3.6.3", + "@docusaurus/plugin-client-redirects": "3.6.3", + "@docusaurus/plugin-ideal-image": "3.6.3", + "@docusaurus/plugin-pwa": "3.6.3", + "@docusaurus/plugin-rsdoctor": "3.6.3", + "@docusaurus/preset-classic": "3.6.3", + "@docusaurus/remark-plugin-npm2yarn": "3.6.3", + "@docusaurus/theme-classic": "3.6.3", + "@docusaurus/theme-common": "3.6.3", + "@docusaurus/theme-live-codeblock": "3.6.3", + "@docusaurus/theme-mermaid": "3.6.3", + "@docusaurus/utils": "3.6.3", + "@docusaurus/utils-common": "3.6.3", "clsx": "^2.0.0", "color": "^4.2.3", "fs-extra": "^11.1.1", @@ -83,8 +83,8 @@ ] }, "devDependencies": { - "@docusaurus/eslint-plugin": "3.6.2", - "@docusaurus/tsconfig": "3.6.2", + "@docusaurus/eslint-plugin": "3.6.3", + "@docusaurus/tsconfig": "3.6.3", "@types/color": "^3.0.4", "@types/jest": "^29.5.3", "cross-env": "^7.0.3", diff --git a/website/versioned_docs/version-3.6.2/advanced/architecture.mdx b/website/versioned_docs/version-3.6.3/advanced/architecture.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/advanced/architecture.mdx rename to website/versioned_docs/version-3.6.3/advanced/architecture.mdx diff --git a/website/versioned_docs/version-3.6.2/advanced/client.mdx b/website/versioned_docs/version-3.6.3/advanced/client.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/advanced/client.mdx rename to website/versioned_docs/version-3.6.3/advanced/client.mdx diff --git a/website/versioned_docs/version-3.6.2/advanced/index.mdx b/website/versioned_docs/version-3.6.3/advanced/index.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/advanced/index.mdx rename to website/versioned_docs/version-3.6.3/advanced/index.mdx diff --git a/website/versioned_docs/version-3.6.2/advanced/plugins.mdx b/website/versioned_docs/version-3.6.3/advanced/plugins.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/advanced/plugins.mdx rename to website/versioned_docs/version-3.6.3/advanced/plugins.mdx diff --git a/website/versioned_docs/version-3.6.2/advanced/routing.mdx b/website/versioned_docs/version-3.6.3/advanced/routing.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/advanced/routing.mdx rename to website/versioned_docs/version-3.6.3/advanced/routing.mdx diff --git a/website/versioned_docs/version-3.6.2/advanced/ssg.mdx b/website/versioned_docs/version-3.6.3/advanced/ssg.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/advanced/ssg.mdx rename to website/versioned_docs/version-3.6.3/advanced/ssg.mdx diff --git a/website/versioned_docs/version-3.6.2/api/docusaurus.config.js.mdx b/website/versioned_docs/version-3.6.3/api/docusaurus.config.js.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/docusaurus.config.js.mdx rename to website/versioned_docs/version-3.6.3/api/docusaurus.config.js.mdx diff --git a/website/versioned_docs/version-3.6.2/api/misc/_category_.yml b/website/versioned_docs/version-3.6.3/api/misc/_category_.yml similarity index 100% rename from website/versioned_docs/version-3.6.2/api/misc/_category_.yml rename to website/versioned_docs/version-3.6.3/api/misc/_category_.yml diff --git a/website/versioned_docs/version-3.6.2/api/misc/create-docusaurus.mdx b/website/versioned_docs/version-3.6.3/api/misc/create-docusaurus.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/misc/create-docusaurus.mdx rename to website/versioned_docs/version-3.6.3/api/misc/create-docusaurus.mdx diff --git a/website/versioned_docs/version-3.6.2/api/misc/eslint-plugin/README.mdx b/website/versioned_docs/version-3.6.3/api/misc/eslint-plugin/README.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/misc/eslint-plugin/README.mdx rename to website/versioned_docs/version-3.6.3/api/misc/eslint-plugin/README.mdx diff --git a/website/versioned_docs/version-3.6.2/api/misc/eslint-plugin/no-html-links.mdx b/website/versioned_docs/version-3.6.3/api/misc/eslint-plugin/no-html-links.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/misc/eslint-plugin/no-html-links.mdx rename to website/versioned_docs/version-3.6.3/api/misc/eslint-plugin/no-html-links.mdx diff --git a/website/versioned_docs/version-3.6.2/api/misc/eslint-plugin/no-untranslated-text.mdx b/website/versioned_docs/version-3.6.3/api/misc/eslint-plugin/no-untranslated-text.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/misc/eslint-plugin/no-untranslated-text.mdx rename to website/versioned_docs/version-3.6.3/api/misc/eslint-plugin/no-untranslated-text.mdx diff --git a/website/versioned_docs/version-3.6.2/api/misc/eslint-plugin/prefer-docusaurus-heading.mdx b/website/versioned_docs/version-3.6.3/api/misc/eslint-plugin/prefer-docusaurus-heading.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/misc/eslint-plugin/prefer-docusaurus-heading.mdx rename to website/versioned_docs/version-3.6.3/api/misc/eslint-plugin/prefer-docusaurus-heading.mdx diff --git a/website/versioned_docs/version-3.6.2/api/misc/eslint-plugin/string-literal-i18n-messages.mdx b/website/versioned_docs/version-3.6.3/api/misc/eslint-plugin/string-literal-i18n-messages.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/misc/eslint-plugin/string-literal-i18n-messages.mdx rename to website/versioned_docs/version-3.6.3/api/misc/eslint-plugin/string-literal-i18n-messages.mdx diff --git a/website/versioned_docs/version-3.6.2/api/misc/logger/demo.png b/website/versioned_docs/version-3.6.3/api/misc/logger/demo.png similarity index 100% rename from website/versioned_docs/version-3.6.2/api/misc/logger/demo.png rename to website/versioned_docs/version-3.6.3/api/misc/logger/demo.png diff --git a/website/versioned_docs/version-3.6.2/api/misc/logger/logger.mdx b/website/versioned_docs/version-3.6.3/api/misc/logger/logger.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/misc/logger/logger.mdx rename to website/versioned_docs/version-3.6.3/api/misc/logger/logger.mdx diff --git a/website/versioned_docs/version-3.6.2/api/plugin-methods/README.mdx b/website/versioned_docs/version-3.6.3/api/plugin-methods/README.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/plugin-methods/README.mdx rename to website/versioned_docs/version-3.6.3/api/plugin-methods/README.mdx diff --git a/website/versioned_docs/version-3.6.2/api/plugin-methods/_category_.yml b/website/versioned_docs/version-3.6.3/api/plugin-methods/_category_.yml similarity index 100% rename from website/versioned_docs/version-3.6.2/api/plugin-methods/_category_.yml rename to website/versioned_docs/version-3.6.3/api/plugin-methods/_category_.yml diff --git a/website/versioned_docs/version-3.6.2/api/plugin-methods/extend-infrastructure.mdx b/website/versioned_docs/version-3.6.3/api/plugin-methods/extend-infrastructure.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/plugin-methods/extend-infrastructure.mdx rename to website/versioned_docs/version-3.6.3/api/plugin-methods/extend-infrastructure.mdx diff --git a/website/versioned_docs/version-3.6.2/api/plugin-methods/i18n-lifecycles.mdx b/website/versioned_docs/version-3.6.3/api/plugin-methods/i18n-lifecycles.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/plugin-methods/i18n-lifecycles.mdx rename to website/versioned_docs/version-3.6.3/api/plugin-methods/i18n-lifecycles.mdx diff --git a/website/versioned_docs/version-3.6.2/api/plugin-methods/lifecycle-apis.mdx b/website/versioned_docs/version-3.6.3/api/plugin-methods/lifecycle-apis.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/plugin-methods/lifecycle-apis.mdx rename to website/versioned_docs/version-3.6.3/api/plugin-methods/lifecycle-apis.mdx diff --git a/website/versioned_docs/version-3.6.2/api/plugin-methods/static-methods.mdx b/website/versioned_docs/version-3.6.3/api/plugin-methods/static-methods.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/plugin-methods/static-methods.mdx rename to website/versioned_docs/version-3.6.3/api/plugin-methods/static-methods.mdx diff --git a/website/versioned_docs/version-3.6.2/api/plugins/_category_.yml b/website/versioned_docs/version-3.6.3/api/plugins/_category_.yml similarity index 100% rename from website/versioned_docs/version-3.6.2/api/plugins/_category_.yml rename to website/versioned_docs/version-3.6.3/api/plugins/_category_.yml diff --git a/website/versioned_docs/version-3.6.2/api/plugins/_partial-tags-file-api-ref-section.mdx b/website/versioned_docs/version-3.6.3/api/plugins/_partial-tags-file-api-ref-section.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/plugins/_partial-tags-file-api-ref-section.mdx rename to website/versioned_docs/version-3.6.3/api/plugins/_partial-tags-file-api-ref-section.mdx diff --git a/website/versioned_docs/version-3.6.2/api/plugins/overview.mdx b/website/versioned_docs/version-3.6.3/api/plugins/overview.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/plugins/overview.mdx rename to website/versioned_docs/version-3.6.3/api/plugins/overview.mdx diff --git a/website/versioned_docs/version-3.6.2/api/plugins/plugin-client-redirects.mdx b/website/versioned_docs/version-3.6.3/api/plugins/plugin-client-redirects.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/plugins/plugin-client-redirects.mdx rename to website/versioned_docs/version-3.6.3/api/plugins/plugin-client-redirects.mdx diff --git a/website/versioned_docs/version-3.6.2/api/plugins/plugin-content-blog.mdx b/website/versioned_docs/version-3.6.3/api/plugins/plugin-content-blog.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/plugins/plugin-content-blog.mdx rename to website/versioned_docs/version-3.6.3/api/plugins/plugin-content-blog.mdx diff --git a/website/versioned_docs/version-3.6.2/api/plugins/plugin-content-docs.mdx b/website/versioned_docs/version-3.6.3/api/plugins/plugin-content-docs.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/plugins/plugin-content-docs.mdx rename to website/versioned_docs/version-3.6.3/api/plugins/plugin-content-docs.mdx diff --git a/website/versioned_docs/version-3.6.2/api/plugins/plugin-content-pages.mdx b/website/versioned_docs/version-3.6.3/api/plugins/plugin-content-pages.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/plugins/plugin-content-pages.mdx rename to website/versioned_docs/version-3.6.3/api/plugins/plugin-content-pages.mdx diff --git a/website/versioned_docs/version-3.6.2/api/plugins/plugin-debug.mdx b/website/versioned_docs/version-3.6.3/api/plugins/plugin-debug.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/plugins/plugin-debug.mdx rename to website/versioned_docs/version-3.6.3/api/plugins/plugin-debug.mdx diff --git a/website/versioned_docs/version-3.6.2/api/plugins/plugin-google-analytics.mdx b/website/versioned_docs/version-3.6.3/api/plugins/plugin-google-analytics.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/plugins/plugin-google-analytics.mdx rename to website/versioned_docs/version-3.6.3/api/plugins/plugin-google-analytics.mdx diff --git a/website/versioned_docs/version-3.6.2/api/plugins/plugin-google-gtag.mdx b/website/versioned_docs/version-3.6.3/api/plugins/plugin-google-gtag.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/plugins/plugin-google-gtag.mdx rename to website/versioned_docs/version-3.6.3/api/plugins/plugin-google-gtag.mdx diff --git a/website/versioned_docs/version-3.6.2/api/plugins/plugin-google-tag-manager.mdx b/website/versioned_docs/version-3.6.3/api/plugins/plugin-google-tag-manager.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/plugins/plugin-google-tag-manager.mdx rename to website/versioned_docs/version-3.6.3/api/plugins/plugin-google-tag-manager.mdx diff --git a/website/versioned_docs/version-3.6.2/api/plugins/plugin-ideal-image.mdx b/website/versioned_docs/version-3.6.3/api/plugins/plugin-ideal-image.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/plugins/plugin-ideal-image.mdx rename to website/versioned_docs/version-3.6.3/api/plugins/plugin-ideal-image.mdx diff --git a/website/versioned_docs/version-3.6.2/api/plugins/plugin-pwa.mdx b/website/versioned_docs/version-3.6.3/api/plugins/plugin-pwa.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/plugins/plugin-pwa.mdx rename to website/versioned_docs/version-3.6.3/api/plugins/plugin-pwa.mdx diff --git a/website/versioned_docs/version-3.6.2/api/plugins/plugin-rsdoctor.mdx b/website/versioned_docs/version-3.6.3/api/plugins/plugin-rsdoctor.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/plugins/plugin-rsdoctor.mdx rename to website/versioned_docs/version-3.6.3/api/plugins/plugin-rsdoctor.mdx diff --git a/website/versioned_docs/version-3.6.2/api/plugins/plugin-sitemap.mdx b/website/versioned_docs/version-3.6.3/api/plugins/plugin-sitemap.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/plugins/plugin-sitemap.mdx rename to website/versioned_docs/version-3.6.3/api/plugins/plugin-sitemap.mdx diff --git a/website/versioned_docs/version-3.6.2/api/plugins/plugin-vercel-analytics.mdx b/website/versioned_docs/version-3.6.3/api/plugins/plugin-vercel-analytics.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/plugins/plugin-vercel-analytics.mdx rename to website/versioned_docs/version-3.6.3/api/plugins/plugin-vercel-analytics.mdx diff --git a/website/versioned_docs/version-3.6.2/api/themes/_category_.yml b/website/versioned_docs/version-3.6.3/api/themes/_category_.yml similarity index 100% rename from website/versioned_docs/version-3.6.2/api/themes/_category_.yml rename to website/versioned_docs/version-3.6.3/api/themes/_category_.yml diff --git a/website/versioned_docs/version-3.6.2/api/themes/overview.mdx b/website/versioned_docs/version-3.6.3/api/themes/overview.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/themes/overview.mdx rename to website/versioned_docs/version-3.6.3/api/themes/overview.mdx diff --git a/website/versioned_docs/version-3.6.2/api/themes/theme-classic.mdx b/website/versioned_docs/version-3.6.3/api/themes/theme-classic.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/themes/theme-classic.mdx rename to website/versioned_docs/version-3.6.3/api/themes/theme-classic.mdx diff --git a/website/versioned_docs/version-3.6.2/api/themes/theme-configuration.mdx b/website/versioned_docs/version-3.6.3/api/themes/theme-configuration.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/themes/theme-configuration.mdx rename to website/versioned_docs/version-3.6.3/api/themes/theme-configuration.mdx diff --git a/website/versioned_docs/version-3.6.2/api/themes/theme-live-codeblock.mdx b/website/versioned_docs/version-3.6.3/api/themes/theme-live-codeblock.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/themes/theme-live-codeblock.mdx rename to website/versioned_docs/version-3.6.3/api/themes/theme-live-codeblock.mdx diff --git a/website/versioned_docs/version-3.6.2/api/themes/theme-mermaid.mdx b/website/versioned_docs/version-3.6.3/api/themes/theme-mermaid.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/themes/theme-mermaid.mdx rename to website/versioned_docs/version-3.6.3/api/themes/theme-mermaid.mdx diff --git a/website/versioned_docs/version-3.6.2/api/themes/theme-search-algolia.mdx b/website/versioned_docs/version-3.6.3/api/themes/theme-search-algolia.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/api/themes/theme-search-algolia.mdx rename to website/versioned_docs/version-3.6.3/api/themes/theme-search-algolia.mdx diff --git a/website/versioned_docs/version-3.6.2/assets/docusaurus-asset-example-banner.png b/website/versioned_docs/version-3.6.3/assets/docusaurus-asset-example-banner.png similarity index 100% rename from website/versioned_docs/version-3.6.2/assets/docusaurus-asset-example-banner.png rename to website/versioned_docs/version-3.6.3/assets/docusaurus-asset-example-banner.png diff --git a/website/versioned_docs/version-3.6.2/assets/docusaurus-asset-example.docx b/website/versioned_docs/version-3.6.3/assets/docusaurus-asset-example.docx similarity index 100% rename from website/versioned_docs/version-3.6.2/assets/docusaurus-asset-example.docx rename to website/versioned_docs/version-3.6.3/assets/docusaurus-asset-example.docx diff --git a/website/versioned_docs/version-3.6.2/assets/docusaurus-asset-example.xyz b/website/versioned_docs/version-3.6.3/assets/docusaurus-asset-example.xyz similarity index 100% rename from website/versioned_docs/version-3.6.2/assets/docusaurus-asset-example.xyz rename to website/versioned_docs/version-3.6.3/assets/docusaurus-asset-example.xyz diff --git a/website/versioned_docs/version-3.6.2/blog.mdx b/website/versioned_docs/version-3.6.3/blog.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/blog.mdx rename to website/versioned_docs/version-3.6.3/blog.mdx diff --git a/website/versioned_docs/version-3.6.2/browser-support.mdx b/website/versioned_docs/version-3.6.3/browser-support.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/browser-support.mdx rename to website/versioned_docs/version-3.6.3/browser-support.mdx diff --git a/website/versioned_docs/version-3.6.2/cli.mdx b/website/versioned_docs/version-3.6.3/cli.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/cli.mdx rename to website/versioned_docs/version-3.6.3/cli.mdx diff --git a/website/versioned_docs/version-3.6.2/configuration.mdx b/website/versioned_docs/version-3.6.3/configuration.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/configuration.mdx rename to website/versioned_docs/version-3.6.3/configuration.mdx diff --git a/website/versioned_docs/version-3.6.2/deployment.mdx b/website/versioned_docs/version-3.6.3/deployment.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/deployment.mdx rename to website/versioned_docs/version-3.6.3/deployment.mdx diff --git a/website/versioned_docs/version-3.6.2/docusaurus-core.mdx b/website/versioned_docs/version-3.6.3/docusaurus-core.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/docusaurus-core.mdx rename to website/versioned_docs/version-3.6.3/docusaurus-core.mdx diff --git a/website/versioned_docs/version-3.6.2/guides/creating-pages.mdx b/website/versioned_docs/version-3.6.3/guides/creating-pages.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/creating-pages.mdx rename to website/versioned_docs/version-3.6.3/guides/creating-pages.mdx diff --git a/website/versioned_docs/version-3.6.2/guides/docs/docs-create-doc.mdx b/website/versioned_docs/version-3.6.3/guides/docs/docs-create-doc.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/docs/docs-create-doc.mdx rename to website/versioned_docs/version-3.6.3/guides/docs/docs-create-doc.mdx diff --git a/website/versioned_docs/version-3.6.2/guides/docs/docs-introduction.mdx b/website/versioned_docs/version-3.6.3/guides/docs/docs-introduction.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/docs/docs-introduction.mdx rename to website/versioned_docs/version-3.6.3/guides/docs/docs-introduction.mdx diff --git a/website/versioned_docs/version-3.6.2/guides/docs/docs-multi-instance.mdx b/website/versioned_docs/version-3.6.3/guides/docs/docs-multi-instance.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/docs/docs-multi-instance.mdx rename to website/versioned_docs/version-3.6.3/guides/docs/docs-multi-instance.mdx diff --git a/website/versioned_docs/version-3.6.2/guides/docs/sidebar/autogenerated.mdx b/website/versioned_docs/version-3.6.3/guides/docs/sidebar/autogenerated.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/docs/sidebar/autogenerated.mdx rename to website/versioned_docs/version-3.6.3/guides/docs/sidebar/autogenerated.mdx diff --git a/website/versioned_docs/version-3.6.2/guides/docs/sidebar/index.mdx b/website/versioned_docs/version-3.6.3/guides/docs/sidebar/index.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/docs/sidebar/index.mdx rename to website/versioned_docs/version-3.6.3/guides/docs/sidebar/index.mdx diff --git a/website/versioned_docs/version-3.6.2/guides/docs/sidebar/items.mdx b/website/versioned_docs/version-3.6.3/guides/docs/sidebar/items.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/docs/sidebar/items.mdx rename to website/versioned_docs/version-3.6.3/guides/docs/sidebar/items.mdx diff --git a/website/versioned_docs/version-3.6.2/guides/docs/sidebar/multiple-sidebars.mdx b/website/versioned_docs/version-3.6.3/guides/docs/sidebar/multiple-sidebars.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/docs/sidebar/multiple-sidebars.mdx rename to website/versioned_docs/version-3.6.3/guides/docs/sidebar/multiple-sidebars.mdx diff --git a/website/versioned_docs/version-3.6.2/guides/docs/versioning.mdx b/website/versioned_docs/version-3.6.3/guides/docs/versioning.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/docs/versioning.mdx rename to website/versioned_docs/version-3.6.3/guides/docs/versioning.mdx diff --git a/website/versioned_docs/version-3.6.2/guides/markdown-features/_markdown-partial-example.mdx b/website/versioned_docs/version-3.6.3/guides/markdown-features/_markdown-partial-example.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/markdown-features/_markdown-partial-example.mdx rename to website/versioned_docs/version-3.6.3/guides/markdown-features/_markdown-partial-example.mdx diff --git a/website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-admonitions.mdx b/website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-admonitions.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-admonitions.mdx rename to website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-admonitions.mdx diff --git a/website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-assets.mdx b/website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-assets.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-assets.mdx rename to website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-assets.mdx diff --git a/website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-code-blocks.mdx b/website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-code-blocks.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-code-blocks.mdx rename to website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-code-blocks.mdx diff --git a/website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-diagrams.mdx b/website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-diagrams.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-diagrams.mdx rename to website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-diagrams.mdx diff --git a/website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-head-metadata.mdx b/website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-head-metadata.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-head-metadata.mdx rename to website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-head-metadata.mdx diff --git a/website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-intro.mdx b/website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-intro.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-intro.mdx rename to website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-intro.mdx diff --git a/website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-links.mdx b/website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-links.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-links.mdx rename to website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-links.mdx diff --git a/website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-math-equations.mdx b/website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-math-equations.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-math-equations.mdx rename to website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-math-equations.mdx diff --git a/website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-plugins.mdx b/website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-plugins.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-plugins.mdx rename to website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-plugins.mdx diff --git a/website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-react.mdx b/website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-react.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-react.mdx rename to website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-react.mdx diff --git a/website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-react.module.css b/website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-react.module.css similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-react.module.css rename to website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-react.module.css diff --git a/website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-tabs-styles.module.css b/website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-tabs-styles.module.css similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-tabs-styles.module.css rename to website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-tabs-styles.module.css diff --git a/website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-tabs.mdx b/website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-tabs.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-tabs.mdx rename to website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-tabs.mdx diff --git a/website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-toc.mdx b/website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-toc.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/markdown-features/markdown-features-toc.mdx rename to website/versioned_docs/version-3.6.3/guides/markdown-features/markdown-features-toc.mdx diff --git a/website/versioned_docs/version-3.6.2/guides/whats-next.mdx b/website/versioned_docs/version-3.6.3/guides/whats-next.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/guides/whats-next.mdx rename to website/versioned_docs/version-3.6.3/guides/whats-next.mdx diff --git a/website/versioned_docs/version-3.6.2/i18n/i18n-crowdin.mdx b/website/versioned_docs/version-3.6.3/i18n/i18n-crowdin.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/i18n/i18n-crowdin.mdx rename to website/versioned_docs/version-3.6.3/i18n/i18n-crowdin.mdx diff --git a/website/versioned_docs/version-3.6.2/i18n/i18n-git.mdx b/website/versioned_docs/version-3.6.3/i18n/i18n-git.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/i18n/i18n-git.mdx rename to website/versioned_docs/version-3.6.3/i18n/i18n-git.mdx diff --git a/website/versioned_docs/version-3.6.2/i18n/i18n-introduction.mdx b/website/versioned_docs/version-3.6.3/i18n/i18n-introduction.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/i18n/i18n-introduction.mdx rename to website/versioned_docs/version-3.6.3/i18n/i18n-introduction.mdx diff --git a/website/versioned_docs/version-3.6.2/i18n/i18n-tutorial.mdx b/website/versioned_docs/version-3.6.3/i18n/i18n-tutorial.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/i18n/i18n-tutorial.mdx rename to website/versioned_docs/version-3.6.3/i18n/i18n-tutorial.mdx diff --git a/website/versioned_docs/version-3.6.2/installation.mdx b/website/versioned_docs/version-3.6.3/installation.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/installation.mdx rename to website/versioned_docs/version-3.6.3/installation.mdx diff --git a/website/versioned_docs/version-3.6.2/introduction.mdx b/website/versioned_docs/version-3.6.3/introduction.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/introduction.mdx rename to website/versioned_docs/version-3.6.3/introduction.mdx diff --git a/website/versioned_docs/version-3.6.2/migration/index.mdx b/website/versioned_docs/version-3.6.3/migration/index.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/migration/index.mdx rename to website/versioned_docs/version-3.6.3/migration/index.mdx diff --git a/website/versioned_docs/version-3.6.2/migration/v2/migration-automated.mdx b/website/versioned_docs/version-3.6.3/migration/v2/migration-automated.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/migration/v2/migration-automated.mdx rename to website/versioned_docs/version-3.6.3/migration/v2/migration-automated.mdx diff --git a/website/versioned_docs/version-3.6.2/migration/v2/migration-manual.mdx b/website/versioned_docs/version-3.6.3/migration/v2/migration-manual.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/migration/v2/migration-manual.mdx rename to website/versioned_docs/version-3.6.3/migration/v2/migration-manual.mdx diff --git a/website/versioned_docs/version-3.6.2/migration/v2/migration-overview.mdx b/website/versioned_docs/version-3.6.3/migration/v2/migration-overview.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/migration/v2/migration-overview.mdx rename to website/versioned_docs/version-3.6.3/migration/v2/migration-overview.mdx diff --git a/website/versioned_docs/version-3.6.2/migration/v2/migration-translated-sites.mdx b/website/versioned_docs/version-3.6.3/migration/v2/migration-translated-sites.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/migration/v2/migration-translated-sites.mdx rename to website/versioned_docs/version-3.6.3/migration/v2/migration-translated-sites.mdx diff --git a/website/versioned_docs/version-3.6.2/migration/v2/migration-versioned-sites.mdx b/website/versioned_docs/version-3.6.3/migration/v2/migration-versioned-sites.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/migration/v2/migration-versioned-sites.mdx rename to website/versioned_docs/version-3.6.3/migration/v2/migration-versioned-sites.mdx diff --git a/website/versioned_docs/version-3.6.2/migration/v3.mdx b/website/versioned_docs/version-3.6.3/migration/v3.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/migration/v3.mdx rename to website/versioned_docs/version-3.6.3/migration/v3.mdx diff --git a/website/versioned_docs/version-3.6.2/playground.mdx b/website/versioned_docs/version-3.6.3/playground.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/playground.mdx rename to website/versioned_docs/version-3.6.3/playground.mdx diff --git a/website/versioned_docs/version-3.6.2/search.mdx b/website/versioned_docs/version-3.6.3/search.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/search.mdx rename to website/versioned_docs/version-3.6.3/search.mdx diff --git a/website/versioned_docs/version-3.6.2/seo.mdx b/website/versioned_docs/version-3.6.3/seo.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/seo.mdx rename to website/versioned_docs/version-3.6.3/seo.mdx diff --git a/website/versioned_docs/version-3.6.2/static-assets.mdx b/website/versioned_docs/version-3.6.3/static-assets.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/static-assets.mdx rename to website/versioned_docs/version-3.6.3/static-assets.mdx diff --git a/website/versioned_docs/version-3.6.2/styling-layout.mdx b/website/versioned_docs/version-3.6.3/styling-layout.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/styling-layout.mdx rename to website/versioned_docs/version-3.6.3/styling-layout.mdx diff --git a/website/versioned_docs/version-3.6.2/swizzling.mdx b/website/versioned_docs/version-3.6.3/swizzling.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/swizzling.mdx rename to website/versioned_docs/version-3.6.3/swizzling.mdx diff --git a/website/versioned_docs/version-3.6.2/typescript-support.mdx b/website/versioned_docs/version-3.6.3/typescript-support.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/typescript-support.mdx rename to website/versioned_docs/version-3.6.3/typescript-support.mdx diff --git a/website/versioned_docs/version-3.6.2/using-plugins.mdx b/website/versioned_docs/version-3.6.3/using-plugins.mdx similarity index 100% rename from website/versioned_docs/version-3.6.2/using-plugins.mdx rename to website/versioned_docs/version-3.6.3/using-plugins.mdx diff --git a/website/versioned_sidebars/version-3.6.2-sidebars.json b/website/versioned_sidebars/version-3.6.3-sidebars.json similarity index 100% rename from website/versioned_sidebars/version-3.6.2-sidebars.json rename to website/versioned_sidebars/version-3.6.3-sidebars.json diff --git a/website/versions.json b/website/versions.json index 28b0b74728..7c6f9ba0ee 100644 --- a/website/versions.json +++ b/website/versions.json @@ -1,5 +1,5 @@ [ - "3.6.2", + "3.6.3", "3.5.2", "3.4.0", "3.3.2", From 60499e2cdc52826a51b63113d5008e7faffa6dab Mon Sep 17 00:00:00 2001 From: Lin Huang Date: Mon, 25 Nov 2024 17:20:09 +0800 Subject: [PATCH 03/90] docs: fix example typo for migration-versioned-sites.mdx (#10717) --- website/docs/migration/v2/migration-versioned-sites.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/docs/migration/v2/migration-versioned-sites.mdx b/website/docs/migration/v2/migration-versioned-sites.mdx index c4a799025d..33db32cc7d 100644 --- a/website/docs/migration/v2/migration-versioned-sites.mdx +++ b/website/docs/migration/v2/migration-versioned-sites.mdx @@ -171,6 +171,6 @@ title: Demo hello world -- pre style="background: black">zzz -+ pre style={{background: 'black'}}>zzz +-
zzz
++
zzz
``` From ffdd415129d99bb64b3a839a5633377024563658 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 09:21:27 +0100 Subject: [PATCH 04/90] chore(deps): bump actions/dependency-review-action from 4.4.0 to 4.5.0 (#10721) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/dependency-review.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 1a043372cf..c25f347e7d 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -15,4 +15,4 @@ jobs: - name: Checkout uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Dependency Review - uses: actions/dependency-review-action@4081bf99e2866ebe428fc0477b69eb4fcda7220a # 4.4.0 + uses: actions/dependency-review-action@3b139cfc5fae8b618d3eae3675e383bb1769c019 # 4.5.0 From fb7ad2c1bb8e3e6d9d8e9c936b7992b0c427c8fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lorber?= Date: Thu, 28 Nov 2024 16:39:43 +0100 Subject: [PATCH 05/90] fix(mdx-loader): fix md image paths with spaces bug related to transformImage encoding problem (#10723) --- .../transformImage/__tests__/__fixtures__/img.md | 10 ++++++++++ .../static/img with one encoded%20space.png | Bin 0 -> 5142 bytes .../__fixtures__/static/img with spaces.png | Bin 0 -> 5142 bytes .../__tests__/__snapshots__/index.test.ts.snap | 10 ++++++++++ .../src/remark/transformImage/index.ts | 13 ++++++++----- .../_asset-tests/image with spaces.png | Bin 0 -> 5142 bytes .../_pages tests/markdown-tests-mdx.mdx | 10 +++++++++- 7 files changed, 37 insertions(+), 6 deletions(-) create mode 100644 packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/__fixtures__/static/img with one encoded%20space.png create mode 100644 packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/__fixtures__/static/img with spaces.png create mode 100644 website/_dogfooding/_asset-tests/image with spaces.png diff --git a/packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/__fixtures__/img.md b/packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/__fixtures__/img.md index 61b961202c..aeae06879e 100644 --- a/packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/__fixtures__/img.md +++ b/packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/__fixtures__/img.md @@ -29,3 +29,13 @@ in paragraph ![img](static/img.png) ```md ![img](./static/img.png) ``` + +## Images with spaces + +![img]() + +![img](<@site/static/img with spaces.png>) + +![img]() + +![img](<@site/static/img with one encoded%2520space.png>) diff --git a/packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/__fixtures__/static/img with one encoded%20space.png b/packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/__fixtures__/static/img with one encoded%20space.png new file mode 100644 index 0000000000000000000000000000000000000000..f458149e3c8f53335f28fbc162ae67f55575c881 GIT binary patch literal 5142 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 F{0H{b<4^zq literal 0 HcmV?d00001 diff --git a/packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/__fixtures__/static/img with spaces.png b/packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/__fixtures__/static/img with spaces.png new file mode 100644 index 0000000000000000000000000000000000000000..f458149e3c8f53335f28fbc162ae67f55575c881 GIT binary patch literal 5142 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 F{0H{b<4^zq literal 0 HcmV?d00001 diff --git a/packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/__snapshots__/index.test.ts.snap b/packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/__snapshots__/index.test.ts.snap index 4745422c1e..8572403706 100644 --- a/packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/__snapshots__/index.test.ts.snap +++ b/packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/__snapshots__/index.test.ts.snap @@ -48,5 +48,15 @@ in paragraph img/node_modules/url-loade \`\`\`md ![img](./static/img.png) \`\`\` + +## Images with spaces + +img/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img with spaces.png").default} width="200" height="200" /> + +img/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img with spaces.png").default} width="200" height="200" /> + +img/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img with one encoded%20space.png").default} width="200" height="200" /> + +img/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img with one encoded%20space.png").default} width="200" height="200" /> " `; diff --git a/packages/docusaurus-mdx-loader/src/remark/transformImage/index.ts b/packages/docusaurus-mdx-loader/src/remark/transformImage/index.ts index 5ae25e5e30..b3196df88a 100644 --- a/packages/docusaurus-mdx-loader/src/remark/transformImage/index.ts +++ b/packages/docusaurus-mdx-loader/src/remark/transformImage/index.ts @@ -98,6 +98,7 @@ async function toImageRequireNode( }); } } catch (err) { + console.error(err); // Workaround for https://github.com/yarnpkg/berry/pull/3889#issuecomment-1034469784 // TODO remove this check once fixed in Yarn PnP if (!process.versions.pnp) { @@ -152,10 +153,7 @@ async function getImageAbsolutePath( return imageFilePath; } // relative paths are resolved against the source file's folder - const imageFilePath = path.join( - path.dirname(filePath), - decodeURIComponent(imagePath), - ); + const imageFilePath = path.join(path.dirname(filePath), imagePath); await ensureImageFileExist(imageFilePath, filePath); return imageFilePath; } @@ -180,9 +178,14 @@ async function processImageNode(target: Target, context: Context) { return; } + // We decode it first because Node Url.pathname is always encoded + // while the image file-system path are not. + // See https://github.com/facebook/docusaurus/discussions/10720 + const decodedPathname = decodeURIComponent(parsedUrl.pathname); + // We try to convert image urls without protocol to images with require calls // going through webpack ensures that image assets exist at build time - const imagePath = await getImageAbsolutePath(parsedUrl.pathname, context); + const imagePath = await getImageAbsolutePath(decodedPathname, context); await toImageRequireNode(target, imagePath, context); } diff --git a/website/_dogfooding/_asset-tests/image with spaces.png b/website/_dogfooding/_asset-tests/image with spaces.png new file mode 100644 index 0000000000000000000000000000000000000000..f458149e3c8f53335f28fbc162ae67f55575c881 GIT binary patch literal 5142 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 F{0H{b<4^zq literal 0 HcmV?d00001 diff --git a/website/_dogfooding/_pages tests/markdown-tests-mdx.mdx b/website/_dogfooding/_pages tests/markdown-tests-mdx.mdx index b54eef02ac..ec3a7534af 100644 --- a/website/_dogfooding/_pages tests/markdown-tests-mdx.mdx +++ b/website/_dogfooding/_pages tests/markdown-tests-mdx.mdx @@ -206,7 +206,7 @@ Code tag + double pipe: || Code tag + double pipe: || -## Images edge cases +## Images ![](/新控制器空间/图片.png) @@ -214,6 +214,10 @@ Code tag + double pipe: || ![](/4/docu.png) +![]() + +![](<@site/_dogfooding/_asset-tests/image with spaces.png>) + ## Details
@@ -359,10 +363,14 @@ See [#3337](https://github.com/facebook/docusaurus/issues/3337) - [/someFile.xyz](/someFile.xyz) +- [/image with space.png]() + - [@site/\_dogfooding/\_asset-tests/someFile.pdf](@site/_dogfooding/_asset-tests/someFile.pdf) - [@site/\_dogfooding/\_asset-tests/someFile.xyz](@site/_dogfooding/_asset-tests/someFile.xyz) +- [@site/\_dogfooding/\_asset-tests/image with space.png](<@site/_dogfooding/_asset-tests/image with spaces.png>) + ### Linking to non-SPA page hosted within website See [#3309](https://github.com/facebook/docusaurus/issues/3309) From 1777b14566c881366dc345cddcb4352a931b780a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lorber?= Date: Thu, 28 Nov 2024 16:51:42 +0100 Subject: [PATCH 06/90] chore: upgrade to TS 5.7 (#10725) --- package.json | 2 +- website/_dogfooding/_pages tests/crashTest.tsx | 4 ++-- yarn.lock | 5 +++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 5f5385c56d..aecf0f4b36 100644 --- a/package.json +++ b/package.json @@ -123,6 +123,6 @@ "stylelint": "^14.16.1", "stylelint-config-prettier": "^9.0.5", "stylelint-config-standard": "^29.0.0", - "typescript": "~5.6.2" + "typescript": "~5.7.2" } } diff --git a/website/_dogfooding/_pages tests/crashTest.tsx b/website/_dogfooding/_pages tests/crashTest.tsx index 462a680fb1..331b5ac7af 100644 --- a/website/_dogfooding/_pages tests/crashTest.tsx +++ b/website/_dogfooding/_pages tests/crashTest.tsx @@ -18,13 +18,13 @@ function useBoom(): boolean { return (customFields as {crashTest?: boolean}).crashTest ?? false; } -function boomRoot() { +function boomRoot(): never { throw new Error('Boom root'); } function boomParent() { try { - boomRoot(); + return boomRoot(); } catch (err) { throw new Error('Boom parent', {cause: err as Error}); } diff --git a/yarn.lock b/yarn.lock index 1ead5c589d..3e31547793 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17642,6 +17642,11 @@ typescript@~5.6.2: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== +typescript@~5.7.2: + version "5.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.2.tgz#3169cf8c4c8a828cde53ba9ecb3d2b1d5dd67be6" + integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg== + ufo@^1.5.3: version "1.5.4" resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.4.tgz#16d6949674ca0c9e0fbbae1fa20a71d7b1ded754" From 809874124543405d72fe4d2e2eb67d2fd62c0eb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lorber?= Date: Fri, 29 Nov 2024 15:36:02 +0100 Subject: [PATCH 07/90] fix(core): fix codegen routesChunkName possible hash collision (#10727) --- .../codegen/__tests__/codegenRoutes.test.ts | 72 ++++++++++++++++--- .../src/server/codegen/codegenRoutes.ts | 48 +++++++++++-- 2 files changed, 104 insertions(+), 16 deletions(-) diff --git a/packages/docusaurus/src/server/codegen/__tests__/codegenRoutes.test.ts b/packages/docusaurus/src/server/codegen/__tests__/codegenRoutes.test.ts index 4353e27330..f46069227f 100644 --- a/packages/docusaurus/src/server/codegen/__tests__/codegenRoutes.test.ts +++ b/packages/docusaurus/src/server/codegen/__tests__/codegenRoutes.test.ts @@ -5,6 +5,7 @@ * LICENSE file in the root directory of this source tree. */ +import {fromPartial} from '@total-typescript/shoehorn'; import { generateRoutesCode, genChunkName, @@ -12,6 +13,10 @@ import { } from '../codegenRoutes'; import type {RouteConfig} from '@docusaurus/types'; +function route(routeConfig: Partial): RouteConfig { + return fromPartial(routeConfig); +} + describe('generateRoutePropFilename', () => { it('generate filename based on route path', () => { expect( @@ -206,9 +211,7 @@ describe('loadRoutes', () => { }, ], }; - expect( - generateRoutesCode([nestedRouteConfig], '/', 'ignore'), - ).toMatchSnapshot(); + expect(generateRoutesCode([nestedRouteConfig])).toMatchSnapshot(); }); it('loads flat route config', () => { @@ -243,9 +246,7 @@ describe('loadRoutes', () => { ], }, }; - expect( - generateRoutesCode([flatRouteConfig], '/', 'ignore'), - ).toMatchSnapshot(); + expect(generateRoutesCode([flatRouteConfig])).toMatchSnapshot(); }); it('rejects invalid route config', () => { @@ -253,7 +254,7 @@ describe('loadRoutes', () => { component: 'hello/world.js', } as RouteConfig; - expect(() => generateRoutesCode([routeConfigWithoutPath], '/', 'ignore')) + expect(() => generateRoutesCode([routeConfigWithoutPath])) .toThrowErrorMatchingInlineSnapshot(` "Invalid route config: path must be a string and component is required. {"component":"hello/world.js"}" @@ -263,9 +264,8 @@ describe('loadRoutes', () => { path: '/hello/world', } as RouteConfig; - expect(() => - generateRoutesCode([routeConfigWithoutComponent], '/', 'ignore'), - ).toThrowErrorMatchingInlineSnapshot(` + expect(() => generateRoutesCode([routeConfigWithoutComponent])) + .toThrowErrorMatchingInlineSnapshot(` "Invalid route config: path must be a string and component is required. {"path":"/hello/world"}" `); @@ -277,6 +277,56 @@ describe('loadRoutes', () => { component: 'hello/world.js', } as RouteConfig; - expect(generateRoutesCode([routeConfig], '/', 'ignore')).toMatchSnapshot(); + expect(generateRoutesCode([routeConfig])).toMatchSnapshot(); + }); + + it('generates an entry for each route and handle hash collisions', () => { + // See bug https://github.com/facebook/docusaurus/issues/10718#issuecomment-2507635907 + const routeConfigs = [ + route({ + path: '/docs', + component: '@theme/Root', + routes: [ + route({ + path: '/docs', + component: '@theme/Version', + children: [], + }), + ], + }), + route({ + path: '/docs', + component: '@theme/Root', + routes: [ + route({ + path: '/docs', + component: '@theme/Version', + children: [], + }), + ], + }), + ]; + + const result = generateRoutesCode(routeConfigs); + + // We absolutely want to have 2 entries here, even if routes are the same + // One should not override the other + expect(Object.keys(result.routesChunkNames)).toHaveLength(4); + expect(result.routesChunkNames).toMatchInlineSnapshot(` + { + "/docs-611": { + "__comp": "__comp---theme-version-6-f-8-19f", + }, + "/docs-96a": { + "__comp": "__comp---theme-root-1-dd-d3a", + }, + "/docs-d3d": { + "__comp": "__comp---theme-version-6-f-8-19f", + }, + "/docs-e4f": { + "__comp": "__comp---theme-root-1-dd-d3a", + }, + } + `); }); }); diff --git a/packages/docusaurus/src/server/codegen/codegenRoutes.ts b/packages/docusaurus/src/server/codegen/codegenRoutes.ts index b637fd956d..db494a6722 100644 --- a/packages/docusaurus/src/server/codegen/codegenRoutes.ts +++ b/packages/docusaurus/src/server/codegen/codegenRoutes.ts @@ -194,7 +194,12 @@ function genChunkNames( * config node, it returns the node's serialized form, and mutates `registry`, * `routesPaths`, and `routesChunkNames` accordingly. */ -function genRouteCode(routeConfig: RouteConfig, res: RoutesCode): string { +function genRouteCode( + routeConfig: RouteConfig, + res: RoutesCode, + index: number, + level: number, +): string { const { path: routePath, component, @@ -216,8 +221,39 @@ ${JSON.stringify(routeConfig)}`, ); } - const routeHash = simpleHash(JSON.stringify(routeConfig), 3); - res.routesChunkNames[`${routePath}-${routeHash}`] = { + // Because 2 routes with the same path could lead to hash collisions + // See https://github.com/facebook/docusaurus/issues/10718#issuecomment-2498516394 + function generateUniqueRouteKey(): { + routeKey: string; + routeHash: string; + } { + const hashes = [ + // // OG algo to keep former snapshots + () => simpleHash(JSON.stringify(routeConfig), 3), + // Other attempts, not ideal but good enough + // Technically we could use Math.random() here but it's annoying for tests + () => simpleHash(`${level}${index}`, 3), + () => simpleHash(JSON.stringify(routeConfig), 4), + () => simpleHash(`${level}${index}`, 4), + ]; + + for (const tryHash of hashes) { + const routeHash = tryHash(); + const routeKey = `${routePath}-${routeHash}`; + if (!res.routesChunkNames[routeKey]) { + return {routeKey, routeHash}; + } + } + throw new Error( + `Docusaurus couldn't generate a unique hash for route ${routeConfig.path} (level=${level} - index=${index}). +This is a bug, please report it here! +https://github.com/facebook/docusaurus/issues/10718`, + ); + } + + const {routeKey, routeHash} = generateUniqueRouteKey(); + + res.routesChunkNames[routeKey] = { // Avoid clash with a prop called "component" ...genChunkNames({__comp: component}, 'component', component, res), ...(context && @@ -228,7 +264,9 @@ ${JSON.stringify(routeConfig)}`, return serializeRouteConfig({ routePath: routePath.replace(/'/g, "\\'"), routeHash, - subroutesCodeStrings: subroutes?.map((r) => genRouteCode(r, res)), + subroutesCodeStrings: subroutes?.map((r, i) => + genRouteCode(r, res, i, level + 1), + ), exact, attributes, }); @@ -253,7 +291,7 @@ export function generateRoutesCode(routeConfigs: RouteConfig[]): RoutesCode { // `genRouteCode` would mutate `res` const routeConfigSerialized = routeConfigs - .map((r) => genRouteCode(r, res)) + .map((r, i) => genRouteCode(r, res, i, 0)) .join(',\n'); res.routesConfig = `import React from 'react'; From 750edc78ff6989ba82781cd8128a3f8d6ff37b35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lorber?= Date: Fri, 29 Nov 2024 16:50:10 +0100 Subject: [PATCH 08/90] refactor(theme-common): change storageUtils useSyncExternalCode getSnapshot workaround (#10728) --- packages/docusaurus-theme-common/src/utils/storageUtils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/docusaurus-theme-common/src/utils/storageUtils.ts b/packages/docusaurus-theme-common/src/utils/storageUtils.ts index a8c8825b22..491088f041 100644 --- a/packages/docusaurus-theme-common/src/utils/storageUtils.ts +++ b/packages/docusaurus-theme-common/src/utils/storageUtils.ts @@ -229,8 +229,8 @@ export function useStorageSlot( const currentValue = useSyncExternalStore( listen, () => { - // TODO this check should be useless after React 18 - if (typeof window === 'undefined') { + // react-test-renderer (deprecated) never call getServerSnapshot() :/ + if (process.env.NODE_ENV === 'test') { return null; } return storageSlot.get(); From df6f53a2f55bbb3c14ea813924615d8164c80ae1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lorber?= Date: Fri, 29 Nov 2024 17:26:34 +0100 Subject: [PATCH 09/90] feat(svgr): create new Docusaurus SVGR plugin (#10677) --- .eslintrc.js | 9 +- .../src/index.d.ts | 3 + packages/docusaurus-plugin-svgr/.npmignore | 3 + packages/docusaurus-plugin-svgr/README.md | 7 + packages/docusaurus-plugin-svgr/package.json | 37 ++ .../src/__tests__/options.test.ts | 100 ++++++ packages/docusaurus-plugin-svgr/src/index.ts | 30 ++ .../docusaurus-plugin-svgr/src/options.ts | 41 +++ .../docusaurus-plugin-svgr/src/svgrLoader.ts | 69 ++++ .../docusaurus-plugin-svgr/src/types.d.ts | 8 + packages/docusaurus-plugin-svgr/tsconfig.json | 8 + .../docusaurus-preset-classic/package.json | 1 + .../docusaurus-preset-classic/src/index.ts | 4 + .../docusaurus-preset-classic/src/options.ts | 3 + packages/docusaurus-types/src/plugin.d.ts | 12 +- packages/docusaurus-utils/package.json | 1 - .../src/__tests__/webpackUtils.test.ts | 34 -- packages/docusaurus-utils/src/webpackUtils.ts | 40 --- .../__tests__/__snapshots__/base.test.ts.snap | 51 --- .../src/webpack/__tests__/base.test.ts | 16 - packages/docusaurus/src/webpack/base.ts | 1 - website/_dogfooding/_pages tests/index.mdx | 1 + .../_dogfooding/_pages tests/svg/index.mdx | 11 + .../_pages tests/svg/integrations.svg | 335 ++++++++++++++++++ .../_dogfooding/_pages tests/svg/mascot.svg | 239 +++++++++++++ .../_pages tests/svg/open-source.svg | 237 +++++++++++++ website/docs/api/plugins/overview.mdx | 3 + website/docs/api/plugins/plugin-svgr.mdx | 55 +++ website/docs/using-plugins.mdx | 3 + website/docusaurus.config.ts | 5 + website/svgo.config.js | 29 ++ 31 files changed, 1247 insertions(+), 149 deletions(-) create mode 100644 packages/docusaurus-plugin-svgr/.npmignore create mode 100644 packages/docusaurus-plugin-svgr/README.md create mode 100644 packages/docusaurus-plugin-svgr/package.json create mode 100644 packages/docusaurus-plugin-svgr/src/__tests__/options.test.ts create mode 100644 packages/docusaurus-plugin-svgr/src/index.ts create mode 100644 packages/docusaurus-plugin-svgr/src/options.ts create mode 100644 packages/docusaurus-plugin-svgr/src/svgrLoader.ts create mode 100644 packages/docusaurus-plugin-svgr/src/types.d.ts create mode 100644 packages/docusaurus-plugin-svgr/tsconfig.json delete mode 100644 packages/docusaurus-utils/src/__tests__/webpackUtils.test.ts create mode 100644 website/_dogfooding/_pages tests/svg/index.mdx create mode 100644 website/_dogfooding/_pages tests/svg/integrations.svg create mode 100644 website/_dogfooding/_pages tests/svg/mascot.svg create mode 100644 website/_dogfooding/_pages tests/svg/open-source.svg create mode 100644 website/docs/api/plugins/plugin-svgr.mdx create mode 100644 website/svgo.config.js diff --git a/.eslintrc.js b/.eslintrc.js index edfbf50d97..50453b0ada 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -380,7 +380,14 @@ module.exports = { // We don't provide any escape hatches for this rule. Rest siblings and // function placeholder params are always ignored, and any other unused // locals must be justified with a disable comment. - '@typescript-eslint/no-unused-vars': [ERROR, {ignoreRestSiblings: true}], + '@typescript-eslint/no-unused-vars': [ + ERROR, + { + ignoreRestSiblings: true, + argsIgnorePattern: '^_', + varsIgnorePattern: '^_', + }, + ], '@typescript-eslint/prefer-optional-chain': ERROR, '@docusaurus/no-html-links': ERROR, '@docusaurus/prefer-docusaurus-heading': ERROR, diff --git a/packages/docusaurus-module-type-aliases/src/index.d.ts b/packages/docusaurus-module-type-aliases/src/index.d.ts index 7fb78549f1..8b4a270167 100644 --- a/packages/docusaurus-module-type-aliases/src/index.d.ts +++ b/packages/docusaurus-module-type-aliases/src/index.d.ts @@ -369,6 +369,9 @@ declare module '@docusaurus/useGlobalData' { export default function useGlobalData(): GlobalData; } +// TODO find a way to move this ambient type to the SVGR plugin? +// unfortunately looks complicated in practice +// see https://x.com/sebastienlorber/status/1859543512661832053 declare module '*.svg' { import type {ComponentType, SVGProps} from 'react'; diff --git a/packages/docusaurus-plugin-svgr/.npmignore b/packages/docusaurus-plugin-svgr/.npmignore new file mode 100644 index 0000000000..03c9ae1e1b --- /dev/null +++ b/packages/docusaurus-plugin-svgr/.npmignore @@ -0,0 +1,3 @@ +.tsbuildinfo* +tsconfig* +__tests__ diff --git a/packages/docusaurus-plugin-svgr/README.md b/packages/docusaurus-plugin-svgr/README.md new file mode 100644 index 0000000000..27b865208d --- /dev/null +++ b/packages/docusaurus-plugin-svgr/README.md @@ -0,0 +1,7 @@ +# `@docusaurus/plugin-svgr` + +[SVGR](https://react-svgr.com/) plugin for Docusaurus. + +## Usage + +See [plugin-svgr documentation](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-svgr). diff --git a/packages/docusaurus-plugin-svgr/package.json b/packages/docusaurus-plugin-svgr/package.json new file mode 100644 index 0000000000..c4af737e68 --- /dev/null +++ b/packages/docusaurus-plugin-svgr/package.json @@ -0,0 +1,37 @@ +{ + "name": "@docusaurus/plugin-svgr", + "version": "3.6.3", + "description": "SVGR plugin for Docusaurus.", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "scripts": { + "build": "tsc --build", + "watch": "tsc --build --watch" + }, + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/facebook/docusaurus.git", + "directory": "packages/docusaurus-plugin-svgr" + }, + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.6.3", + "@docusaurus/types": "3.6.3", + "@docusaurus/utils": "3.6.3", + "@docusaurus/utils-validation": "3.6.3", + "@svgr/core": "8.1.0", + "@svgr/webpack": "^8.1.0", + "tslib": "^2.6.0", + "webpack": "^5.88.1" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "engines": { + "node": ">=18.0" + } +} diff --git a/packages/docusaurus-plugin-svgr/src/__tests__/options.test.ts b/packages/docusaurus-plugin-svgr/src/__tests__/options.test.ts new file mode 100644 index 0000000000..63edff7dd2 --- /dev/null +++ b/packages/docusaurus-plugin-svgr/src/__tests__/options.test.ts @@ -0,0 +1,100 @@ +/** + * 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. + */ + +import {normalizePluginOptions} from '@docusaurus/utils-validation'; +import { + validateOptions, + type PluginOptions, + type Options, + DEFAULT_OPTIONS, +} from '../options'; +import type {Validate} from '@docusaurus/types'; + +function validate(options?: Options) { + return validateOptions({ + validate: normalizePluginOptions as Validate< + Options | undefined, + PluginOptions + >, + options, + }); +} + +function result(options?: Options) { + return { + id: 'default', + ...DEFAULT_OPTIONS, + ...options, + }; +} + +describe('validateOptions', () => { + it('accepts undefined', () => { + expect(validate(undefined)).toEqual(result(DEFAULT_OPTIONS)); + }); + + it('accepts empty object', () => { + expect(validate({})).toEqual(result(DEFAULT_OPTIONS)); + }); + + it('accepts defaults', () => { + expect(validate(DEFAULT_OPTIONS)).toEqual(result(DEFAULT_OPTIONS)); + }); + + it('rejects null', () => { + expect( + // @ts-expect-error: TS should error + () => validate(null), + ).toThrowErrorMatchingInlineSnapshot(`""value" must be of type object"`); + }); + + it('rejects number', () => { + expect( + // @ts-expect-error: TS should error + () => validate(42), + ).toThrowErrorMatchingInlineSnapshot(`""value" must be of type object"`); + }); + + describe('svgrConfig', () => { + it('accepts undefined', () => { + expect(validate({svgrConfig: undefined})).toEqual( + result(DEFAULT_OPTIONS), + ); + }); + + it('accepts empty', () => { + expect(validate({svgrConfig: {}})).toEqual(result(DEFAULT_OPTIONS)); + }); + + it('accepts any record', () => { + expect(validate({svgrConfig: {any: 'value', evenNumbers: 42}})).toEqual( + result({ + ...DEFAULT_OPTIONS, + svgrConfig: { + any: 'value', + evenNumbers: 42, + }, + }), + ); + }); + + it('accepts default', () => { + expect(validate({svgrConfig: DEFAULT_OPTIONS.svgrConfig})).toEqual( + result(DEFAULT_OPTIONS), + ); + }); + + it('rejects number values', () => { + expect(() => + // @ts-expect-error: invalid type + validate({svgrConfig: 42}), + ).toThrowErrorMatchingInlineSnapshot( + `""svgrConfig" must be of type object"`, + ); + }); + }); +}); diff --git a/packages/docusaurus-plugin-svgr/src/index.ts b/packages/docusaurus-plugin-svgr/src/index.ts new file mode 100644 index 0000000000..ab92a1ee15 --- /dev/null +++ b/packages/docusaurus-plugin-svgr/src/index.ts @@ -0,0 +1,30 @@ +/** + * 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. + */ + +import {createLoader} from './svgrLoader'; +import type {LoadContext, Plugin} from '@docusaurus/types'; +import type {PluginOptions, Options} from './options'; + +export default function pluginSVGR( + _context: LoadContext, + options: PluginOptions, +): Plugin { + return { + name: 'docusaurus-plugin-svgr', + configureWebpack: (config, isServer) => { + return { + module: { + rules: [createLoader({isServer, svgrConfig: options.svgrConfig})], + }, + }; + }, + }; +} + +export {validateOptions} from './options'; + +export type {PluginOptions, Options}; diff --git a/packages/docusaurus-plugin-svgr/src/options.ts b/packages/docusaurus-plugin-svgr/src/options.ts new file mode 100644 index 0000000000..c4cd5c9f37 --- /dev/null +++ b/packages/docusaurus-plugin-svgr/src/options.ts @@ -0,0 +1,41 @@ +/** + * 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. + */ +import {Joi} from '@docusaurus/utils-validation'; +import type {OptionValidationContext} from '@docusaurus/types'; + +// TODO unfortunately there's a SVGR TS error when skipLibCheck=false +// related to prettier, see https://github.com/gregberge/svgr/issues/904 +// import type {Config as SVGRConfig} from '@svgr/core'; +// export type {SVGRConfig}; +export type SVGRConfig = any; +export type SVGOConfig = NonNullable; + +export type PluginOptions = { + svgrConfig: SVGRConfig; +}; + +export type Options = { + svgrConfig?: Partial; +}; + +export const DEFAULT_OPTIONS: Partial = { + svgrConfig: {}, +}; + +const pluginOptionsSchema = Joi.object({ + svgrConfig: Joi.object() + .pattern(Joi.string(), Joi.any()) + .optional() + .default(DEFAULT_OPTIONS.svgrConfig), +}).default(DEFAULT_OPTIONS); + +export function validateOptions({ + validate, + options, +}: OptionValidationContext): PluginOptions { + return validate(pluginOptionsSchema, options); +} diff --git a/packages/docusaurus-plugin-svgr/src/svgrLoader.ts b/packages/docusaurus-plugin-svgr/src/svgrLoader.ts new file mode 100644 index 0000000000..3744b9decc --- /dev/null +++ b/packages/docusaurus-plugin-svgr/src/svgrLoader.ts @@ -0,0 +1,69 @@ +/** + * 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. + */ + +import {getFileLoaderUtils} from '@docusaurus/utils'; + +import type {SVGRConfig, SVGOConfig} from './options'; +import type {RuleSetRule} from 'webpack'; + +// TODO Docusaurus v4: change these defaults? +// see https://github.com/facebook/docusaurus/issues/8297 +// see https://github.com/facebook/docusaurus/pull/10205 +// see https://github.com/facebook/docusaurus/pull/10211 +const DefaultSVGOConfig: SVGOConfig = { + plugins: [ + { + name: 'preset-default', + params: { + overrides: { + removeTitle: false, + removeViewBox: false, + }, + }, + }, + ], +}; + +const DefaultSVGRConfig: SVGRConfig = { + prettier: false, + svgo: true, + svgoConfig: DefaultSVGOConfig, + titleProp: true, +}; + +type Params = {isServer: boolean; svgrConfig: SVGRConfig}; + +function createSVGRLoader(params: Params): RuleSetRule { + const options: SVGRConfig = { + ...DefaultSVGRConfig, + ...params.svgrConfig, + }; + return { + loader: require.resolve('@svgr/webpack'), + options, + }; +} + +export function createLoader(params: Params): RuleSetRule { + const utils = getFileLoaderUtils(params.isServer); + return { + test: /\.svg$/i, + oneOf: [ + { + use: [createSVGRLoader(params)], + // We don't want to use SVGR loader for non-React source code + // ie we don't want to use SVGR for CSS files... + issuer: { + and: [/\.(?:tsx?|jsx?|mdx?)$/i], + }, + }, + { + use: [utils.loaders.url({folder: 'images'})], + }, + ], + }; +} diff --git a/packages/docusaurus-plugin-svgr/src/types.d.ts b/packages/docusaurus-plugin-svgr/src/types.d.ts new file mode 100644 index 0000000000..6f6f99f127 --- /dev/null +++ b/packages/docusaurus-plugin-svgr/src/types.d.ts @@ -0,0 +1,8 @@ +/** + * 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. + */ + +/// diff --git a/packages/docusaurus-plugin-svgr/tsconfig.json b/packages/docusaurus-plugin-svgr/tsconfig.json new file mode 100644 index 0000000000..343f87c70b --- /dev/null +++ b/packages/docusaurus-plugin-svgr/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "noEmit": false + }, + "include": ["src"], + "exclude": ["**/__tests__/**"] +} diff --git a/packages/docusaurus-preset-classic/package.json b/packages/docusaurus-preset-classic/package.json index b032599783..77736348bc 100644 --- a/packages/docusaurus-preset-classic/package.json +++ b/packages/docusaurus-preset-classic/package.json @@ -27,6 +27,7 @@ "@docusaurus/plugin-google-gtag": "3.6.3", "@docusaurus/plugin-google-tag-manager": "3.6.3", "@docusaurus/plugin-sitemap": "3.6.3", + "@docusaurus/plugin-svgr": "3.6.3", "@docusaurus/theme-classic": "3.6.3", "@docusaurus/theme-common": "3.6.3", "@docusaurus/theme-search-algolia": "3.6.3", diff --git a/packages/docusaurus-preset-classic/src/index.ts b/packages/docusaurus-preset-classic/src/index.ts index 45ae988bc5..eac8c461b3 100644 --- a/packages/docusaurus-preset-classic/src/index.ts +++ b/packages/docusaurus-preset-classic/src/index.ts @@ -37,6 +37,7 @@ export default function preset( blog, pages, sitemap, + svgr, theme, googleAnalytics, gtag, @@ -92,6 +93,9 @@ export default function preset( if (sitemap !== false && (isProd || debug)) { plugins.push(makePluginConfig('@docusaurus/plugin-sitemap', sitemap)); } + if (svgr !== false) { + plugins.push(makePluginConfig('@docusaurus/plugin-svgr', svgr)); + } if (Object.keys(rest).length > 0) { throw new Error( `Unrecognized keys ${Object.keys(rest).join( diff --git a/packages/docusaurus-preset-classic/src/options.ts b/packages/docusaurus-preset-classic/src/options.ts index a8fdb68125..98c4087ac6 100644 --- a/packages/docusaurus-preset-classic/src/options.ts +++ b/packages/docusaurus-preset-classic/src/options.ts @@ -9,6 +9,7 @@ import type {Options as DocsPluginOptions} from '@docusaurus/plugin-content-docs import type {Options as BlogPluginOptions} from '@docusaurus/plugin-content-blog'; import type {Options as PagesPluginOptions} from '@docusaurus/plugin-content-pages'; import type {Options as SitemapPluginOptions} from '@docusaurus/plugin-sitemap'; +import type {Options as SVGRPluginOptions} from '@docusaurus/plugin-svgr'; import type {Options as GAPluginOptions} from '@docusaurus/plugin-google-analytics'; import type {Options as GtagPluginOptions} from '@docusaurus/plugin-google-gtag'; import type {Options as GTMPluginOptions} from '@docusaurus/plugin-google-tag-manager'; @@ -31,6 +32,8 @@ export type Options = { pages?: false | PagesPluginOptions; /** Options for `@docusaurus/plugin-sitemap`. Use `false` to disable. */ sitemap?: false | SitemapPluginOptions; + /** Options for `@docusaurus/plugin-svgr`. Use `false` to disable. */ + svgr?: false | SVGRPluginOptions; /** Options for `@docusaurus/theme-classic`. */ theme?: ThemeOptions; /** diff --git a/packages/docusaurus-types/src/plugin.d.ts b/packages/docusaurus-types/src/plugin.d.ts index fae721dcd0..51cecbf647 100644 --- a/packages/docusaurus-types/src/plugin.d.ts +++ b/packages/docusaurus-types/src/plugin.d.ts @@ -108,6 +108,12 @@ export type HtmlTagObject = { export type HtmlTags = string | HtmlTagObject | (string | HtmlTagObject)[]; +export type ConfigureWebpackResult = WebpackConfiguration & { + mergeStrategy?: { + [key: string]: CustomizeRuleString; + }; +}; + export type Plugin = { name: string; loadContent?: () => Promise | Content; @@ -134,11 +140,7 @@ export type Plugin = { isServer: boolean, configureWebpackUtils: ConfigureWebpackUtils, content: Content, - ) => WebpackConfiguration & { - mergeStrategy?: { - [key: string]: CustomizeRuleString; - }; - }; + ) => ConfigureWebpackResult; configurePostCss?: (options: PostCssOptions) => PostCssOptions; getThemePath?: () => string; getTypeScriptThemePath?: () => string; diff --git a/packages/docusaurus-utils/package.json b/packages/docusaurus-utils/package.json index b4bfab548f..b4a1937da7 100644 --- a/packages/docusaurus-utils/package.json +++ b/packages/docusaurus-utils/package.json @@ -21,7 +21,6 @@ "@docusaurus/logger": "3.6.3", "@docusaurus/types": "3.6.3", "@docusaurus/utils-common": "3.6.3", - "@svgr/webpack": "^8.1.0", "escape-string-regexp": "^4.0.0", "file-loader": "^6.2.0", "fs-extra": "^11.1.1", diff --git a/packages/docusaurus-utils/src/__tests__/webpackUtils.test.ts b/packages/docusaurus-utils/src/__tests__/webpackUtils.test.ts deleted file mode 100644 index 3d2c70f689..0000000000 --- a/packages/docusaurus-utils/src/__tests__/webpackUtils.test.ts +++ /dev/null @@ -1,34 +0,0 @@ -/** - * 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. - */ - -import {getFileLoaderUtils} from '../webpackUtils'; - -describe('getFileLoaderUtils()', () => { - it('plugin svgo/removeViewBox and removeTitle should be disabled', () => { - const {oneOf} = getFileLoaderUtils().rules.svg(); - expect(oneOf![0]!.use).toContainEqual( - expect.objectContaining({ - loader: require.resolve('@svgr/webpack'), - options: expect.objectContaining({ - svgoConfig: { - plugins: [ - { - name: 'preset-default', - params: { - overrides: { - removeTitle: false, - removeViewBox: false, - }, - }, - }, - ], - }, - }), - }), - ); - }); -}); diff --git a/packages/docusaurus-utils/src/webpackUtils.ts b/packages/docusaurus-utils/src/webpackUtils.ts index 8c005a8a5c..dc3dd2b118 100644 --- a/packages/docusaurus-utils/src/webpackUtils.ts +++ b/packages/docusaurus-utils/src/webpackUtils.ts @@ -45,7 +45,6 @@ type FileLoaderUtils = { images: () => RuleSetRule; fonts: () => RuleSetRule; media: () => RuleSetRule; - svg: () => RuleSetRule; otherAssets: () => RuleSetRule; }; }; @@ -134,45 +133,6 @@ function createFileLoaderUtils({ test: /\.(?:mp4|avi|mov|mkv|mpg|mpeg|vob|wmv|m4v|webm|ogv|wav|mp3|m4a|aac|oga|flac)$/i, }), - svg: () => ({ - test: /\.svg$/i, - oneOf: [ - { - use: [ - { - loader: require.resolve('@svgr/webpack'), - options: { - prettier: false, - svgo: true, - svgoConfig: { - plugins: [ - { - name: 'preset-default', - params: { - overrides: { - removeTitle: false, - removeViewBox: false, - }, - }, - }, - ], - }, - titleProp: true, - }, - }, - ], - // We don't want to use SVGR loader for non-React source code - // ie we don't want to use SVGR for CSS files... - issuer: { - and: [/\.(?:tsx?|jsx?|mdx?)$/i], - }, - }, - { - use: [loaders.url({folder: 'images'})], - }, - ], - }), - otherAssets: () => ({ use: [loaders.file({folder: 'files'})], test: /\.(?:pdf|docx?|xlsx?|zip|rar)$/i, diff --git a/packages/docusaurus/src/webpack/__tests__/__snapshots__/base.test.ts.snap b/packages/docusaurus/src/webpack/__tests__/__snapshots__/base.test.ts.snap index 8f321b0634..88a08cdf59 100644 --- a/packages/docusaurus/src/webpack/__tests__/__snapshots__/base.test.ts.snap +++ b/packages/docusaurus/src/webpack/__tests__/__snapshots__/base.test.ts.snap @@ -52,54 +52,3 @@ exports[`base webpack config creates webpack aliases 1`] = ` "react-dom": "../../../../../../../node_modules/react-dom", } `; - -exports[`base webpack config uses svg rule 1`] = ` -{ - "oneOf": [ - { - "issuer": { - "and": [ - /\\\\\\.\\(\\?:tsx\\?\\|jsx\\?\\|mdx\\?\\)\\$/i, - ], - }, - "use": [ - { - "loader": "/node_modules/@svgr/webpack/dist/index.js", - "options": { - "prettier": false, - "svgo": true, - "svgoConfig": { - "plugins": [ - { - "name": "preset-default", - "params": { - "overrides": { - "removeTitle": false, - "removeViewBox": false, - }, - }, - }, - ], - }, - "titleProp": true, - }, - }, - ], - }, - { - "use": [ - { - "loader": "/node_modules/url-loader/dist/cjs.js", - "options": { - "emitFile": true, - "fallback": "/node_modules/file-loader/dist/cjs.js", - "limit": 10000, - "name": "assets/images/[name]-[contenthash].[ext]", - }, - }, - ], - }, - ], - "test": /\\\\\\.svg\\$/i, -} -`; diff --git a/packages/docusaurus/src/webpack/__tests__/base.test.ts b/packages/docusaurus/src/webpack/__tests__/base.test.ts index b4c29b514e..676e509fe4 100644 --- a/packages/docusaurus/src/webpack/__tests__/base.test.ts +++ b/packages/docusaurus/src/webpack/__tests__/base.test.ts @@ -132,20 +132,4 @@ describe('base webpack config', () => { ); expect(relativeAliases).toMatchSnapshot(); }); - - it('uses svg rule', async () => { - const config = await createBaseConfig({ - props, - isServer: false, - minify: false, - faster: DEFAULT_FASTER_CONFIG, - configureWebpackUtils: await createTestConfigureWebpackUtils(), - }); - - const svgRule = (config.module?.rules ?? []).find((rule) => { - return rule && (rule as any).test.toString().includes('.svg'); - }); - expect(svgRule).toBeDefined(); - expect(svgRule).toMatchSnapshot(); - }); }); diff --git a/packages/docusaurus/src/webpack/base.ts b/packages/docusaurus/src/webpack/base.ts index b3ea407143..3ffda658fe 100644 --- a/packages/docusaurus/src/webpack/base.ts +++ b/packages/docusaurus/src/webpack/base.ts @@ -248,7 +248,6 @@ export async function createBaseConfig({ fileLoaderUtils.rules.images(), fileLoaderUtils.rules.fonts(), fileLoaderUtils.rules.media(), - fileLoaderUtils.rules.svg(), fileLoaderUtils.rules.otherAssets(), { test: /\.[jt]sx?$/i, diff --git a/website/_dogfooding/_pages tests/index.mdx b/website/_dogfooding/_pages tests/index.mdx index 4f7c2889bf..d862394e29 100644 --- a/website/_dogfooding/_pages tests/index.mdx +++ b/website/_dogfooding/_pages tests/index.mdx @@ -26,6 +26,7 @@ import Readme from "../README.mdx" ### Other tests - [React 18](/tests/pages/react-18) +- [SVG](/tests/pages/svg) - [Crash test](/tests/pages/crashTest) - [Code block tests](/tests/pages/code-block-tests) - [Link tests](/tests/pages/link-tests) diff --git a/website/_dogfooding/_pages tests/svg/index.mdx b/website/_dogfooding/_pages tests/svg/index.mdx new file mode 100644 index 0000000000..494bc5e21d --- /dev/null +++ b/website/_dogfooding/_pages tests/svg/index.mdx @@ -0,0 +1,11 @@ +import Integrations from './integrations.svg'; +import OpenSource from './open-source.svg'; +import Mascot from './mascot.svg'; + +# Many inline SVGs + +Have a bunch of SVGs, they're written to intentionally override each others styled when inlined on the same page. + + + + diff --git a/website/_dogfooding/_pages tests/svg/integrations.svg b/website/_dogfooding/_pages tests/svg/integrations.svg new file mode 100644 index 0000000000..659c5d146b --- /dev/null +++ b/website/_dogfooding/_pages tests/svg/integrations.svg @@ -0,0 +1,335 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/website/_dogfooding/_pages tests/svg/mascot.svg b/website/_dogfooding/_pages tests/svg/mascot.svg new file mode 100644 index 0000000000..b3c8bbe6e7 --- /dev/null +++ b/website/_dogfooding/_pages tests/svg/mascot.svg @@ -0,0 +1,239 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/website/_dogfooding/_pages tests/svg/open-source.svg b/website/_dogfooding/_pages tests/svg/open-source.svg new file mode 100644 index 0000000000..08311e31c0 --- /dev/null +++ b/website/_dogfooding/_pages tests/svg/open-source.svg @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/website/docs/api/plugins/overview.mdx b/website/docs/api/plugins/overview.mdx index 651517d4ee..23eb708929 100644 --- a/website/docs/api/plugins/overview.mdx +++ b/website/docs/api/plugins/overview.mdx @@ -23,8 +23,11 @@ These plugins will add a useful behavior to your Docusaurus site. - [@docusaurus/plugin-debug](./plugin-debug.mdx) - [@docusaurus/plugin-sitemap](./plugin-sitemap.mdx) +- [@docusaurus/plugin-svgr](./plugin-svgr.mdx) +- [@docusaurus/plugin-rsdoctor](./plugin-rsdoctor.mdx) - [@docusaurus/plugin-pwa](./plugin-pwa.mdx) - [@docusaurus/plugin-client-redirects](./plugin-client-redirects.mdx) - [@docusaurus/plugin-ideal-image](./plugin-ideal-image.mdx) - [@docusaurus/plugin-google-analytics](./plugin-google-analytics.mdx) - [@docusaurus/plugin-google-gtag](./plugin-google-gtag.mdx) +- [@docusaurus/plugin-google-tag-manager](./plugin-google-tag-manager.mdx) diff --git a/website/docs/api/plugins/plugin-svgr.mdx b/website/docs/api/plugins/plugin-svgr.mdx new file mode 100644 index 0000000000..bd5bef1eab --- /dev/null +++ b/website/docs/api/plugins/plugin-svgr.mdx @@ -0,0 +1,55 @@ +--- +sidebar_position: 7 +slug: /api/plugins/@docusaurus/plugin-svgr +--- + +# 📦 plugin-svgr + +import APITable from '@site/src/components/APITable'; + +An [SVGR](https://react-svgr.com/) plugin to transform SVG files into React components automatically at build time. + +## Installation {#installation} + +```bash npm2yarn +npm install --save @docusaurus/plugin-svgr +``` + +:::tip + +If you use the preset `@docusaurus/preset-classic`, you don't need to install this plugin as a dependency. + +You can configure this plugin through the [preset options](../../using-plugins.mdx#docusauruspreset-classic). + +::: + +## Configuration {#configuration} + +Accepted fields: + +```mdx-code-block + +``` + +| Name | Type | Default | Description | +| --- | --- | --- | --- | +| `svgrConfig` | `object` | `{}` | The [SVGR config options](https://react-svgr.com/docs/options/), forwarded as is | + +```mdx-code-block + +``` + +### Example configuration {#ex-config} + +You can configure this plugin through plugin options. + +```js config-tabs +// Preset Options: svgr +// Plugin Options: @docusaurus/plugin-svgr + +const config = { + svgrConfig: { + /* SVGR config */ + }, +}; +``` diff --git a/website/docs/using-plugins.mdx b/website/docs/using-plugins.mdx index 92d86097d7..a9d7f04324 100644 --- a/website/docs/using-plugins.mdx +++ b/website/docs/using-plugins.mdx @@ -148,6 +148,7 @@ The classic preset is shipped by default to new Docusaurus websites created with - [`@docusaurus/plugin-google-tag-manager`](./api/plugins/plugin-google-tag-manager.mdx) - [`@docusaurus/plugin-google-analytics`](./api/plugins/plugin-google-analytics.mdx) (**deprecated**) - [`@docusaurus/plugin-sitemap`](./api/plugins/plugin-sitemap.mdx) +- [`@docusaurus/plugin-svgr`](./api/plugins/plugin-svgr.mdx) The classic preset will relay each option entry to the respective plugin/theme. @@ -171,6 +172,8 @@ export default { pages: {}, // Will be passed to @docusaurus/plugin-sitemap (false to disable) sitemap: {}, + // Will be passed to @docusaurus/plugin-svgr (false to disable) + svgr: {}, // Will be passed to @docusaurus/plugin-google-gtag (only enabled when explicitly specified) gtag: {}, // Will be passed to @docusaurus/plugin-google-tag-manager (only enabled when explicitly specified) diff --git a/website/docusaurus.config.ts b/website/docusaurus.config.ts index b52e5c859a..852a0b4e3c 100644 --- a/website/docusaurus.config.ts +++ b/website/docusaurus.config.ts @@ -547,6 +547,11 @@ export default async function createConfigAsync() { priority: null, changefreq: null, }, + svgr: { + svgrConfig: { + svgoConfig: undefined, // Use .svgo.config.js + }, + }, } satisfies Preset.Options, ], ], diff --git a/website/svgo.config.js b/website/svgo.config.js new file mode 100644 index 0000000000..be70fc07fc --- /dev/null +++ b/website/svgo.config.js @@ -0,0 +1,29 @@ +/** + * 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. + */ + +const path = require('path'); + +module.exports = { + plugins: [ + { + name: 'preset-default', + params: { + overrides: { + removeTitle: false, + removeViewBox: false, + }, + }, + }, + { + name: 'prefixIds', + params: { + delim: '', + prefix: (_, info) => path.parse(info.path).name, + }, + }, + ], +}; From a99586531473678d2c47d8576971e496777fb617 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lorber?= Date: Fri, 29 Nov 2024 18:05:09 +0100 Subject: [PATCH 10/90] feat(blog): Add `frontMatter.sidebar_label` (#10729) --- .../src/__tests__/frontMatter.test.ts | 23 ++++++++++++++++++- .../src/__tests__/props.test.ts | 4 ++-- .../src/frontMatter.ts | 3 ++- .../src/plugin-content-blog.d.ts | 5 +++- .../src/props.ts | 3 ++- .../_dogfooding/_blog tests/2023-08-05.mdx | 1 + .../docs/api/plugins/plugin-content-blog.mdx | 1 + 7 files changed, 34 insertions(+), 6 deletions(-) diff --git a/packages/docusaurus-plugin-content-blog/src/__tests__/frontMatter.test.ts b/packages/docusaurus-plugin-content-blog/src/__tests__/frontMatter.test.ts index f5ca63694c..2ef1184ead 100644 --- a/packages/docusaurus-plugin-content-blog/src/__tests__/frontMatter.test.ts +++ b/packages/docusaurus-plugin-content-blog/src/__tests__/frontMatter.test.ts @@ -79,6 +79,7 @@ describe('validateBlogPostFrontMatter description', () => { prefix: 'description', validFrontMatters: [ // See https://github.com/facebook/docusaurus/issues/4591#issuecomment-822372398 + {description: undefined}, {description: ''}, {description: 'description'}, ], @@ -90,6 +91,7 @@ describe('validateBlogPostFrontMatter title', () => { prefix: 'title', validFrontMatters: [ // See https://github.com/facebook/docusaurus/issues/4591#issuecomment-822372398 + {title: undefined}, {title: ''}, {title: 'title'}, ], @@ -103,7 +105,11 @@ describe('validateBlogPostFrontMatter title', () => { describe('validateBlogPostFrontMatter title_meta', () => { testField({ prefix: 'title_meta', - validFrontMatters: [{title: ''}, {title_meta: 'title'}], + validFrontMatters: [ + {title_meta: undefined}, + {title_meta: ''}, + {title_meta: 'title'}, + ], invalidFrontMatters: [ [{title_meta: null}, 'must be a string'], [{title_meta: false}, 'must be a string'], @@ -111,6 +117,21 @@ describe('validateBlogPostFrontMatter title_meta', () => { }); }); +describe('validateBlogPostFrontMatter sidebar_label', () => { + testField({ + prefix: 'title_meta', + validFrontMatters: [ + {sidebar_label: undefined}, + {sidebar_label: ''}, + {sidebar_label: 'title'}, + ], + invalidFrontMatters: [ + [{sidebar_label: null}, 'must be a string'], + [{sidebar_label: false}, 'must be a string'], + ], + }); +}); + describe('validateBlogPostFrontMatter id', () => { testField({ prefix: 'id', diff --git a/packages/docusaurus-plugin-content-blog/src/__tests__/props.test.ts b/packages/docusaurus-plugin-content-blog/src/__tests__/props.test.ts index 4bd03a56cb..b0267b8a43 100644 --- a/packages/docusaurus-plugin-content-blog/src/__tests__/props.test.ts +++ b/packages/docusaurus-plugin-content-blog/src/__tests__/props.test.ts @@ -94,7 +94,7 @@ describe('toBlogSidebarProp', () => { permalink: '/blog/blog-2', unlisted: true, date: '2024-01-01', - frontMatter: {hello: 'world'}, + frontMatter: {hello: 'world', sidebar_label: 'title 2 (custom)'}, tags: [{label: 'tag1', permalink: '/tag1', inline: false}], }, }), @@ -117,7 +117,7 @@ describe('toBlogSidebarProp', () => { { "date": "2024-01-01", "permalink": "/blog/blog-2", - "title": "title 2", + "title": "title 2 (custom)", "unlisted": true, }, ], diff --git a/packages/docusaurus-plugin-content-blog/src/frontMatter.ts b/packages/docusaurus-plugin-content-blog/src/frontMatter.ts index 0e82225829..244eb565f9 100644 --- a/packages/docusaurus-plugin-content-blog/src/frontMatter.ts +++ b/packages/docusaurus-plugin-content-blog/src/frontMatter.ts @@ -33,7 +33,8 @@ const FrontMatterAuthorErrorMessage = const BlogFrontMatterSchema = Joi.object({ id: Joi.string(), title: Joi.string().allow(''), - title_meta: Joi.string(), + title_meta: Joi.string().allow(''), + sidebar_label: Joi.string().allow(''), description: Joi.string().allow(''), tags: FrontMatterTagsSchema, date: Joi.date().raw(), 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 1606aaa5f5..9e8c3850ad 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 @@ -145,7 +145,6 @@ declare module '@docusaurus/plugin-content-blog' { title?: string; /** * Will be used for SEO page metadata and override BlogPostMetadata.title. - * @see {@link BlogPostMetadata.title_meta} */ title_meta?: string; /** @@ -153,6 +152,10 @@ declare module '@docusaurus/plugin-content-blog' { * @see {@link BlogPostMetadata.description} */ description?: string; + /** + * Will override the default excerpt. + */ + sidebar_label?: string; /** * Front matter tags, unnormalized. * @see {@link BlogPostMetadata.tags} diff --git a/packages/docusaurus-plugin-content-blog/src/props.ts b/packages/docusaurus-plugin-content-blog/src/props.ts index df7afbb425..b8fac4d192 100644 --- a/packages/docusaurus-plugin-content-blog/src/props.ts +++ b/packages/docusaurus-plugin-content-blog/src/props.ts @@ -65,7 +65,8 @@ export function toBlogSidebarProp({ return { title: blogSidebarTitle, items: blogPosts.map((blogPost) => ({ - title: blogPost.metadata.title, + title: + blogPost.metadata.frontMatter.sidebar_label ?? blogPost.metadata.title, permalink: blogPost.metadata.permalink, unlisted: blogPost.metadata.unlisted, date: blogPost.metadata.date, diff --git a/website/_dogfooding/_blog tests/2023-08-05.mdx b/website/_dogfooding/_blog tests/2023-08-05.mdx index 180d6c6db8..a740955747 100644 --- a/website/_dogfooding/_blog tests/2023-08-05.mdx +++ b/website/_dogfooding/_blog tests/2023-08-05.mdx @@ -1,6 +1,7 @@ --- title: Ensure heading anchor slugs respect GitHub emoji behavior date: 2023-08-05 +sidebar_label: 'Ensure heading... (custom label)' --- ## :smiley: This is a friendly header diff --git a/website/docs/api/plugins/plugin-content-blog.mdx b/website/docs/api/plugins/plugin-content-blog.mdx index 17f545d193..a3d7a3f742 100644 --- a/website/docs/api/plugins/plugin-content-blog.mdx +++ b/website/docs/api/plugins/plugin-content-blog.mdx @@ -250,6 +250,7 @@ Accepted fields: | `author_image_url` | `string` | `undefined` | ⚠️ Prefer using `authors`. The URL to the author's thumbnail image. | | `author_title` | `string` | `undefined` | ⚠️ Prefer using `authors`. A description of the author. | | `title` | `string` | Markdown title | The blog post title. | +| `sidebar_label` | `string` | `title` | A custom label for the blog sidebar, replacing the default one (`title`). | | `date` | `string` | File name or file creation time | The blog post creation date. If not specified, this can be extracted from the file or folder name, e.g, `2021-04-15-blog-post.mdx`, `2021-04-15-blog-post/index.mdx`, `2021/04/15/blog-post.mdx`. Otherwise, it is the Markdown file creation time. | | `tags` | `Tag[]` | `undefined` | A list of strings or objects of two string fields `label` and `permalink` to tag to your post. Strings can be a reference to keys of a [tags file](#tags-file) (usually `tags.yml`) | | `draft` | `boolean` | `false` | Draft blog posts will only be available during development. | From 01cad20b5abf2c8174f967d1d15480ce509903b2 Mon Sep 17 00:00:00 2001 From: Waldir Pimenta Date: Thu, 5 Dec 2024 12:55:59 +0000 Subject: [PATCH 11/90] docs: Link initialization docs together (#10740) --- website/docs/installation.mdx | 2 +- website/docs/typescript-support.mdx | 2 +- website/docusaurus.config.ts | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/website/docs/installation.mdx b/website/docs/installation.mdx index 1da802db42..1d4ca017b9 100644 --- a/website/docs/installation.mdx +++ b/website/docs/installation.mdx @@ -26,7 +26,7 @@ Use **[docusaurus.new](https://docusaurus.new)** to test Docusaurus immediately ## Scaffold project website {#scaffold-project-website} -The easiest way to install Docusaurus is to use the command line tool that helps you scaffold a skeleton Docusaurus website. You can run this command anywhere in a new empty repository or within an existing repository, it will create a new directory containing the scaffolded files. +The easiest way to install Docusaurus is to use the [`create-docusaurus`](./api/misc/create-docusaurus.mdx) command line tool that helps you scaffold a skeleton Docusaurus website. You can run this command anywhere in a new empty repository or within an existing repository, it will create a new directory containing the scaffolded files. ```bash npx create-docusaurus@latest my-website classic diff --git a/website/docs/typescript-support.mdx b/website/docs/typescript-support.mdx index 1493cbe123..6da089e2a7 100644 --- a/website/docs/typescript-support.mdx +++ b/website/docs/typescript-support.mdx @@ -10,7 +10,7 @@ The minimum required version is **TypeScript 5.1**. ## Initialization {#initialization} -Docusaurus supports writing and using TypeScript theme components. If the init template provides a TypeScript variant, you can directly initialize a site with full TypeScript support by using the `--typescript` flag. +Docusaurus supports writing and using TypeScript theme components. If the init template provides a TypeScript variant, you can directly [initialize a site](./installation.mdx#scaffold-project-website) with full TypeScript support by using the `--typescript` flag. ```bash npx create-docusaurus@latest my-website classic --typescript diff --git a/website/docusaurus.config.ts b/website/docusaurus.config.ts index 852a0b4e3c..fabe2ce345 100644 --- a/website/docusaurus.config.ts +++ b/website/docusaurus.config.ts @@ -347,6 +347,10 @@ export default async function createConfigAsync() { from: ['/docs/resources', '/docs/next/resources'], to: '/community/resources', }, + { + from: '/docs/api/misc/docusaurus-init', + to: '/docs/api/misc/create-docusaurus', + }, ...dogfoodingRedirects, ], } satisfies ClientRedirectsOptions, From e9f06416209c34113706241fdc8af02fc989a201 Mon Sep 17 00:00:00 2001 From: Alvin Bryan <107407814+alvinometric@users.noreply.github.com> Date: Fri, 6 Dec 2024 10:56:28 +0000 Subject: [PATCH 12/90] docs: Removed AgileTs from the Showcase (#10742) --- website/src/data/users.tsx | 8 -------- 1 file changed, 8 deletions(-) diff --git a/website/src/data/users.tsx b/website/src/data/users.tsx index 459900e295..3df46beb66 100644 --- a/website/src/data/users.tsx +++ b/website/src/data/users.tsx @@ -61,14 +61,6 @@ export type TagType = // Add sites to this list // prettier-ignore const Users: User[] = [ - { - title: 'AgileTs', - description: 'Global State and Logic Framework for reactive Applications', - preview: require('./showcase/agilets.png'), - website: 'https://agile-ts.org/', - source: 'https://github.com/agile-ts/documentation', - tags: ['opensource', 'design'], - }, { title: 'AI-Speaker', description: 'Local, reliable, fast and private Audio and IoT gate.', From f9825af43e1bbce6cf9761a21d477e8b13bd8cb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lorber?= Date: Fri, 6 Dec 2024 18:03:04 +0100 Subject: [PATCH 13/90] refactor: prepare types for React 19 (#10746) --- .../src/components/HomepageFeatures/index.tsx | 5 +- .../classic-typescript/src/pages/index.tsx | 3 +- packages/docusaurus-mdx-loader/src/index.ts | 4 +- .../src/index.d.ts | 40 +- .../src/client/contexts.tsx | 2 +- .../src/plugin-content-blog.d.ts | 32 +- .../src/client/doc.tsx | 2 +- .../client/docSidebarItemsExpandedState.tsx | 2 +- .../src/client/docsPreferredVersion.tsx | 4 +- .../src/client/docsSidebar.tsx | 2 +- .../src/client/docsUtils.tsx | 4 +- .../src/client/docsVersion.tsx | 2 +- .../src/plugin-content-docs.d.ts | 27 +- .../src/plugin-content-pages.d.ts | 3 +- .../src/plugin-debug.d.ts | 31 +- .../src/theme/DebugConfig/index.tsx | 4 +- .../src/theme/DebugContent/index.tsx | 4 +- .../src/theme/DebugGlobalData/index.tsx | 4 +- .../src/theme/DebugJsonView/index.tsx | 7 +- .../src/theme/DebugLayout/index.tsx | 2 +- .../src/theme/DebugRegistry/index.tsx | 4 +- .../src/theme/DebugRoutes/index.tsx | 4 +- .../src/theme/DebugSiteMetadata/index.tsx | 4 +- .../src/deps.d.ts | 9 +- .../src/plugin-ideal-image.d.ts | 4 +- .../src/theme/IdealImage/index.tsx | 4 +- .../docusaurus-plugin-pwa/src/plugin-pwa.d.ts | 4 +- .../src/theme/PwaReloadPopup/index.tsx | 4 +- .../src/theme-classic.d.ts | 572 +++++++++++------- .../src/theme/Admonition/Icon/Danger.tsx | 4 +- .../src/theme/Admonition/Icon/Info.tsx | 4 +- .../src/theme/Admonition/Icon/Note.tsx | 4 +- .../src/theme/Admonition/Icon/Tip.tsx | 4 +- .../src/theme/Admonition/Icon/Warning.tsx | 4 +- .../src/theme/Admonition/Layout/index.tsx | 2 +- .../src/theme/Admonition/Type/Caution.tsx | 4 +- .../src/theme/Admonition/Type/Danger.tsx | 4 +- .../src/theme/Admonition/Type/Info.tsx | 4 +- .../src/theme/Admonition/Type/Note.tsx | 4 +- .../src/theme/Admonition/Type/Tip.tsx | 4 +- .../src/theme/Admonition/Type/Warning.tsx | 4 +- .../src/theme/Admonition/index.tsx | 4 +- .../AnnouncementBar/CloseButton/index.tsx | 6 +- .../theme/AnnouncementBar/Content/index.tsx | 6 +- .../src/theme/AnnouncementBar/index.tsx | 4 +- .../src/theme/BackToTopButton/index.tsx | 4 +- .../Blog/Components/Author/Socials/index.tsx | 4 +- .../theme/Blog/Components/Author/index.tsx | 6 +- .../Blog/Pages/BlogAuthorsPostsPage/index.tsx | 8 +- .../src/theme/BlogArchivePage/index.tsx | 4 +- .../src/theme/BlogLayout/index.tsx | 4 +- .../BlogListPage/StructuredData/index.tsx | 4 +- .../src/theme/BlogListPage/index.tsx | 8 +- .../src/theme/BlogListPaginator/index.tsx | 4 +- .../theme/BlogPostItem/Container/index.tsx | 4 +- .../src/theme/BlogPostItem/Content/index.tsx | 4 +- .../Footer/ReadMoreLink/index.tsx | 4 +- .../src/theme/BlogPostItem/Footer/index.tsx | 4 +- .../BlogPostItem/Header/Authors/index.tsx | 4 +- .../theme/BlogPostItem/Header/Info/index.tsx | 6 +- .../theme/BlogPostItem/Header/Title/index.tsx | 6 +- .../src/theme/BlogPostItem/Header/index.tsx | 4 +- .../src/theme/BlogPostItem/index.tsx | 7 +- .../src/theme/BlogPostItems/index.tsx | 4 +- .../src/theme/BlogPostPage/Metadata/index.tsx | 4 +- .../BlogPostPage/StructuredData/index.tsx | 4 +- .../src/theme/BlogPostPage/index.tsx | 4 +- .../src/theme/BlogPostPaginator/index.tsx | 4 +- .../src/theme/BlogSidebar/Mobile/index.tsx | 6 +- .../src/theme/BlogSidebar/index.tsx | 4 +- .../src/theme/BlogTagsListPage/index.tsx | 4 +- .../src/theme/BlogTagsPostsPage/index.tsx | 8 +- .../src/theme/CodeBlock/Container/index.tsx | 4 +- .../src/theme/CodeBlock/Content/Element.tsx | 7 +- .../src/theme/CodeBlock/Content/String.tsx | 4 +- .../src/theme/CodeBlock/CopyButton/index.tsx | 10 +- .../src/theme/CodeBlock/Line/index.tsx | 4 +- .../theme/CodeBlock/WordWrapButton/index.tsx | 4 +- .../src/theme/CodeBlock/index.tsx | 2 +- .../src/theme/CodeInline/index.tsx | 4 +- .../src/theme/ColorModeToggle/index.tsx | 4 +- .../theme/ContentVisibility/Draft/index.tsx | 4 +- .../ContentVisibility/Unlisted/index.tsx | 4 +- .../src/theme/ContentVisibility/index.tsx | 6 +- .../src/theme/Details/index.tsx | 4 +- .../theme/DocBreadcrumbs/Items/Home/index.tsx | 4 +- .../src/theme/DocBreadcrumbs/index.tsx | 6 +- .../src/theme/DocCard/index.tsx | 14 +- .../src/theme/DocCardList/index.tsx | 4 +- .../DocCategoryGeneratedIndexPage/index.tsx | 10 +- .../src/theme/DocItem/Content/index.tsx | 4 +- .../src/theme/DocItem/Footer/index.tsx | 4 +- .../src/theme/DocItem/Layout/index.tsx | 4 +- .../src/theme/DocItem/Metadata/index.tsx | 4 +- .../src/theme/DocItem/Paginator/index.tsx | 4 +- .../src/theme/DocItem/TOC/Desktop/index.tsx | 4 +- .../src/theme/DocItem/TOC/Mobile/index.tsx | 4 +- .../src/theme/DocItem/index.tsx | 4 +- .../src/theme/DocPaginator/index.tsx | 4 +- .../src/theme/DocRoot/Layout/Main/index.tsx | 4 +- .../Layout/Sidebar/ExpandButton/index.tsx | 4 +- .../theme/DocRoot/Layout/Sidebar/index.tsx | 2 +- .../src/theme/DocRoot/Layout/index.tsx | 4 +- .../src/theme/DocRoot/index.tsx | 4 +- .../Desktop/CollapseButton/index.tsx | 4 +- .../DocSidebar/Desktop/Content/index.tsx | 4 +- .../src/theme/DocSidebar/index.tsx | 4 +- .../theme/DocSidebarItem/Category/index.tsx | 9 +- .../src/theme/DocSidebarItem/Html/index.tsx | 4 +- .../src/theme/DocSidebarItem/Link/index.tsx | 4 +- .../src/theme/DocSidebarItem/index.tsx | 7 +- .../src/theme/DocSidebarItems/index.tsx | 4 +- .../src/theme/DocTagDocListPage/index.tsx | 10 +- .../src/theme/DocTagsListPage/index.tsx | 10 +- .../src/theme/DocVersionBadge/index.tsx | 6 +- .../src/theme/DocVersionBanner/index.tsx | 8 +- .../src/theme/DocVersionRoot/index.tsx | 8 +- .../src/theme/DocsRoot/index.tsx | 4 +- .../src/theme/EditMetaRow/index.tsx | 4 +- .../src/theme/EditThisPage/index.tsx | 4 +- .../src/theme/ErrorPageContent.tsx | 7 +- .../src/theme/Footer/Copyright/index.tsx | 4 +- .../src/theme/Footer/Layout/index.tsx | 4 +- .../src/theme/Footer/LinkItem/index.tsx | 4 +- .../theme/Footer/Links/MultiColumn/index.tsx | 4 +- .../src/theme/Footer/Links/Simple/index.tsx | 4 +- .../src/theme/Footer/Links/index.tsx | 4 +- .../src/theme/Footer/Logo/index.tsx | 4 +- .../src/theme/Footer/index.tsx | 4 +- .../src/theme/Heading/index.tsx | 4 +- .../src/theme/Icon/Arrow/index.tsx | 4 +- .../src/theme/Icon/Close/index.tsx | 4 +- .../src/theme/Icon/Copy/index.tsx | 4 +- .../src/theme/Icon/DarkMode/index.tsx | 4 +- .../src/theme/Icon/Edit/index.tsx | 7 +- .../src/theme/Icon/ExternalLink/index.tsx | 4 +- .../src/theme/Icon/Home/index.tsx | 4 +- .../src/theme/Icon/Language/index.tsx | 4 +- .../src/theme/Icon/LightMode/index.tsx | 4 +- .../src/theme/Icon/Menu/index.tsx | 4 +- .../src/theme/Icon/Socials/Default/index.tsx | 4 +- .../src/theme/Icon/Socials/GitHub/index.tsx | 4 +- .../src/theme/Icon/Socials/LinkedIn/index.tsx | 4 +- .../Icon/Socials/StackOverflow/index.tsx | 4 +- .../src/theme/Icon/Socials/Twitter/index.tsx | 4 +- .../src/theme/Icon/Socials/X/index.tsx | 4 +- .../src/theme/Icon/Success/index.tsx | 4 +- .../src/theme/Icon/WordWrap/index.tsx | 4 +- .../src/theme/LastUpdated/index.tsx | 8 +- .../src/theme/Layout/Provider/index.tsx | 4 +- .../src/theme/Layout/index.tsx | 4 +- .../src/theme/Logo/index.tsx | 4 +- .../src/theme/MDXComponents/A.tsx | 4 +- .../src/theme/MDXComponents/Code.tsx | 4 +- .../src/theme/MDXComponents/Details.tsx | 8 +- .../src/theme/MDXComponents/Heading.tsx | 4 +- .../src/theme/MDXComponents/Img/index.tsx | 4 +- .../src/theme/MDXComponents/Ul/index.tsx | 4 +- .../src/theme/MDXContent/index.tsx | 4 +- .../src/theme/MDXPage/index.tsx | 4 +- .../theme/Navbar/ColorModeToggle/index.tsx | 6 +- .../src/theme/Navbar/Content/index.tsx | 4 +- .../src/theme/Navbar/Layout/index.tsx | 4 +- .../src/theme/Navbar/Logo/index.tsx | 4 +- .../Navbar/MobileSidebar/Header/index.tsx | 4 +- .../Navbar/MobileSidebar/Layout/index.tsx | 4 +- .../MobileSidebar/PrimaryMenu/index.tsx | 4 +- .../MobileSidebar/SecondaryMenu/index.tsx | 4 +- .../Navbar/MobileSidebar/Toggle/index.tsx | 4 +- .../src/theme/Navbar/MobileSidebar/index.tsx | 4 +- .../src/theme/Navbar/Search/index.tsx | 7 +- .../src/theme/Navbar/index.tsx | 4 +- .../theme/NavbarItem/DefaultNavbarItem.tsx | 4 +- .../src/theme/NavbarItem/DocNavbarItem.tsx | 4 +- .../theme/NavbarItem/DocSidebarNavbarItem.tsx | 4 +- .../DocsVersionDropdownNavbarItem.tsx | 4 +- .../NavbarItem/DocsVersionNavbarItem.tsx | 4 +- .../NavbarItem/DropdownNavbarItem/index.tsx | 4 +- .../src/theme/NavbarItem/HtmlNavbarItem.tsx | 4 +- .../LocaleDropdownNavbarItem/index.tsx | 4 +- .../src/theme/NavbarItem/NavbarNavLink.tsx | 4 +- .../src/theme/NavbarItem/SearchNavbarItem.tsx | 4 +- .../src/theme/NavbarItem/index.tsx | 4 +- .../src/theme/NotFound/Content/index.tsx | 4 +- .../src/theme/NotFound/index.tsx | 4 +- .../src/theme/PaginatorNavLink/index.tsx | 4 +- .../src/theme/SearchMetadata/index.tsx | 4 +- .../src/theme/SiteMetadata/index.tsx | 6 +- .../src/theme/SkipToContent/index.tsx | 4 +- .../src/theme/TOC/index.tsx | 4 +- .../TOCCollapsible/CollapseButton/index.tsx | 4 +- .../src/theme/TOCCollapsible/index.tsx | 4 +- .../src/theme/TOCInline/index.tsx | 4 +- .../src/theme/TOCItems/Tree.tsx | 4 +- .../src/theme/TOCItems/index.tsx | 4 +- .../src/theme/TabItem/index.tsx | 4 +- .../src/theme/Tabs/index.tsx | 10 +- .../src/theme/Tag/index.tsx | 4 +- .../src/theme/TagsListByLetter/index.tsx | 4 +- .../src/theme/TagsListInline/index.tsx | 4 +- .../src/theme/ThemedImage/index.tsx | 4 +- .../src/components/Collapsible/index.tsx | 4 +- .../src/components/Details/index.tsx | 3 +- .../src/components/ThemedComponent/index.tsx | 4 +- .../src/contexts/announcementBar.tsx | 2 +- .../src/contexts/colorMode.tsx | 2 +- .../src/contexts/navbarMobileSidebar.tsx | 2 +- .../contexts/navbarSecondaryMenu/content.tsx | 4 +- .../contexts/navbarSecondaryMenu/display.tsx | 6 +- .../contentVisibilityTranslations.tsx | 12 +- .../src/utils/admonitionUtils.tsx | 4 +- .../src/utils/errorBoundaryUtils.tsx | 8 +- .../src/utils/metadataUtils.tsx | 6 +- .../src/utils/navbarUtils.tsx | 2 +- .../src/utils/scrollUtils.tsx | 4 +- .../src/utils/skipToContentUtils.tsx | 9 +- .../src/theme-live-codeblock.d.ts | 3 +- .../src/theme/Playground/index.tsx | 6 +- .../src/theme-mermaid.d.ts | 4 +- .../src/theme/Mermaid/index.tsx | 7 +- .../src/theme-search-algolia.d.ts | 8 +- .../src/theme/SearchBar/index.tsx | 16 +- .../src/theme/SearchPage/index.tsx | 12 +- packages/docusaurus-types/src/swizzle.d.ts | 2 +- packages/docusaurus/src/client/App.tsx | 4 +- .../src/client/BaseUrlIssueBanner/index.tsx | 4 +- .../src/client/BrokenLinksContext.tsx | 2 +- .../src/client/ClientLifecyclesDispatcher.tsx | 4 +- .../src/client/PendingNavigation.tsx | 6 +- .../src/client/SiteMetadataDefaults.tsx | 4 +- .../docusaurus/src/client/browserContext.tsx | 2 +- .../src/client/docusaurusContext.tsx | 2 +- .../src/client/exports/BrowserOnly.tsx | 7 +- .../src/client/exports/ComponentCreator.tsx | 2 +- .../docusaurus/src/client/exports/Head.tsx | 4 +- .../src/client/exports/Interpolate.tsx | 2 +- .../docusaurus/src/client/exports/Link.tsx | 3 +- .../src/client/exports/Translate.tsx | 4 +- .../src/client/hasHydratedDataAttribute.tsx | 3 +- .../docusaurus/src/client/routeContext.tsx | 2 +- .../src/client/theme-fallback/Error/index.tsx | 6 +- .../client/theme-fallback/Layout/index.tsx | 4 +- .../client/theme-fallback/Loading/index.tsx | 4 +- .../client/theme-fallback/NotFound/index.tsx | 4 +- .../src/client/theme-fallback/Root/index.tsx | 4 +- .../theme-fallback/SiteMetadata/index.tsx | 3 +- .../__fixtures__/theme/JsComponent/index.d.ts | 4 +- .../_dogfooding/_pages tests/analytics.tsx | 4 +- .../_dogfooding/_pages tests/crashTest.tsx | 4 +- website/_dogfooding/_pages tests/embeds.tsx | 4 +- .../_pages tests/error-boundary-tests.tsx | 4 +- .../_pages tests/hydration-tests.tsx | 4 +- .../_pages tests/layout-no-children.tsx | 4 +- .../_dogfooding/_pages tests/link-tests.tsx | 4 +- .../react-18/_components/heavyComponent.tsx | 4 +- .../_pages tests/react-18/index.tsx | 4 +- .../_pages tests/z-index-tests.tsx | 4 +- .../ShowcaseCarousel.tsx | 10 +- website/src/components/APITable/index.tsx | 2 +- .../components/BrowserWindow/IframeWindow.tsx | 4 +- .../src/components/BrowserWindow/index.tsx | 2 +- .../src/components/ColorGenerator/index.tsx | 4 +- website/src/components/ConfigTabs.tsx | 4 +- .../ErrorBoundaryTestButton/index.tsx | 2 +- website/src/components/HackerNewsIcon.tsx | 4 +- website/src/components/Highlight.tsx | 2 +- .../NavbarItems/CustomDogfoodNavbarItem.tsx | 4 +- website/src/components/Playground/index.tsx | 6 +- website/src/components/ProductHuntCard.tsx | 4 +- website/src/components/Svg/index.tsx | 2 +- .../src/components/TeamProfileCards/index.tsx | 6 +- website/src/components/Tweet/index.tsx | 2 +- website/src/components/TweetQuote/index.tsx | 2 +- website/src/components/UpgradeGuide/index.tsx | 4 +- website/src/components/Versions.tsx | 24 +- website/src/data/features.tsx | 4 +- website/src/pages/index.tsx | 3 +- website/src/pages/showcase/index.tsx | 3 +- website/src/pages/versions.tsx | 3 +- .../ChangelogItem/Header/Author/index.tsx | 7 +- .../ChangelogItem/Header/Authors/index.tsx | 6 +- .../theme/ChangelogItem/Header/index.tsx | 4 +- .../changelog/theme/ChangelogItem/index.tsx | 4 +- .../theme/ChangelogList/Header/index.tsx | 4 +- .../changelog/theme/ChangelogList/index.tsx | 8 +- .../changelog/theme/ChangelogPage/index.tsx | 4 +- .../theme/ChangelogPaginator/index.tsx | 4 +- .../changelog/theme/Icon/Expand/index.tsx | 4 +- .../src/plugins/changelog/theme/types.d.ts | 4 +- .../featureRequests/FeatureRequestsPage.tsx | 4 +- website/src/theme/Admonition/Types.tsx | 4 +- website/src/theme/CodeBlock/index.tsx | 4 +- website/src/theme/ColorModeToggle.tsx | 4 +- .../DocCategoryGeneratedIndexPage/index.tsx | 4 +- website/src/theme/Layout/index.tsx | 4 +- .../src/theme/ReactLiveScope/components.tsx | 4 +- 296 files changed, 1105 insertions(+), 915 deletions(-) diff --git a/packages/create-docusaurus/templates/classic-typescript/src/components/HomepageFeatures/index.tsx b/packages/create-docusaurus/templates/classic-typescript/src/components/HomepageFeatures/index.tsx index 50a9e6f4c7..c2551fb9b8 100644 --- a/packages/create-docusaurus/templates/classic-typescript/src/components/HomepageFeatures/index.tsx +++ b/packages/create-docusaurus/templates/classic-typescript/src/components/HomepageFeatures/index.tsx @@ -1,3 +1,4 @@ +import type {ReactNode} from 'react'; import clsx from 'clsx'; import Heading from '@theme/Heading'; import styles from './styles.module.css'; @@ -5,7 +6,7 @@ import styles from './styles.module.css'; type FeatureItem = { title: string; Svg: React.ComponentType>; - description: JSX.Element; + description: ReactNode; }; const FeatureList: FeatureItem[] = [ @@ -55,7 +56,7 @@ function Feature({title, Svg, description}: FeatureItem) { ); } -export default function HomepageFeatures(): JSX.Element { +export default function HomepageFeatures(): ReactNode { return (
diff --git a/packages/create-docusaurus/templates/classic-typescript/src/pages/index.tsx b/packages/create-docusaurus/templates/classic-typescript/src/pages/index.tsx index 400a3e19a8..2e006d153b 100644 --- a/packages/create-docusaurus/templates/classic-typescript/src/pages/index.tsx +++ b/packages/create-docusaurus/templates/classic-typescript/src/pages/index.tsx @@ -1,3 +1,4 @@ +import type {ReactNode} from 'react'; import clsx from 'clsx'; import Link from '@docusaurus/Link'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; @@ -28,7 +29,7 @@ function HomepageHeader() { ); } -export default function Home(): JSX.Element { +export default function Home(): ReactNode { const {siteConfig} = useDocusaurusContext(); return ( = { * in priority. */ readonly assets: Assets; - (): JSX.Element; + (): ReactNode; }; export type {MDXPlugin} from './loader'; diff --git a/packages/docusaurus-module-type-aliases/src/index.d.ts b/packages/docusaurus-module-type-aliases/src/index.d.ts index 8b4a270167..176ca2ec52 100644 --- a/packages/docusaurus-module-type-aliases/src/index.d.ts +++ b/packages/docusaurus-module-type-aliases/src/index.d.ts @@ -84,10 +84,11 @@ declare module '@theme-original/*'; declare module '@theme-init/*'; declare module '@theme/Error' { + import type {ReactNode} from 'react'; import type {FallbackParams} from '@docusaurus/ErrorBoundary'; export interface Props extends FallbackParams {} - export default function Error(props: Props): JSX.Element; + export default function Error(props: Props): ReactNode; } declare module '@theme/Layout' { @@ -96,17 +97,20 @@ declare module '@theme/Layout' { export interface Props { readonly children?: ReactNode; } - export default function Layout(props: Props): JSX.Element; + export default function Layout(props: Props): ReactNode; } declare module '@theme/Loading' { + import type {ReactNode} from 'react'; import type {LoadingComponentProps} from 'react-loadable'; - export default function Loading(props: LoadingComponentProps): JSX.Element; + export default function Loading(props: LoadingComponentProps): ReactNode; } declare module '@theme/NotFound' { - export default function NotFound(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function NotFound(): ReactNode; } declare module '@theme/Root' { @@ -115,11 +119,13 @@ declare module '@theme/Root' { export interface Props { readonly children: ReactNode; } - export default function Root({children}: Props): JSX.Element; + export default function Root({children}: Props): ReactNode; } declare module '@theme/SiteMetadata' { - export default function SiteMetadata(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function SiteMetadata(): ReactNode; } declare module '@docusaurus/constants' { @@ -134,13 +140,13 @@ declare module '@docusaurus/ErrorBoundary' { readonly tryAgain: () => void; }; - export type FallbackFunction = (params: FallbackParams) => JSX.Element; + export type FallbackFunction = (params: FallbackParams) => ReactNode; export interface Props { readonly fallback?: FallbackFunction; readonly children: ReactNode; } - export default function ErrorBoundary(props: Props): JSX.Element; + export default function ErrorBoundary(props: Props): ReactNode; } declare module '@docusaurus/Head' { @@ -149,11 +155,11 @@ declare module '@docusaurus/Head' { export type Props = HelmetProps & {children: ReactNode}; - export default function Head(props: Props): JSX.Element; + export default function Head(props: Props): ReactNode; } declare module '@docusaurus/Link' { - import type {CSSProperties, ComponentProps} from 'react'; + import type {CSSProperties, ComponentProps, ReactNode} from 'react'; import type {NavLinkProps as RRNavLinkProps} from 'react-router-dom'; type NavLinkProps = Partial; @@ -169,7 +175,7 @@ declare module '@docusaurus/Link' { /** Escape hatch in case broken links check doesn't make sense. */ readonly 'data-noBrokenLinkCheck'?: boolean; }; - export default function Link(props: Props): JSX.Element; + export default function Link(props: Props): ReactNode; } declare module '@docusaurus/Interpolate' { @@ -203,7 +209,7 @@ declare module '@docusaurus/Interpolate' { export default function Interpolate( props: InterpolateProps, - ): JSX.Element; + ): ReactNode; } declare module '@docusaurus/Translate' { @@ -241,7 +247,7 @@ declare module '@docusaurus/Translate' { export default function Translate( props: TranslateProps, - ): JSX.Element; + ): ReactNode; } declare module '@docusaurus/router' { @@ -318,11 +324,13 @@ declare module '@docusaurus/ComponentCreator' { } declare module '@docusaurus/BrowserOnly' { + import type {ReactNode} from 'react'; + export interface Props { - readonly children?: () => JSX.Element; - readonly fallback?: JSX.Element; + readonly children?: () => ReactNode; + readonly fallback?: ReactNode; } - export default function BrowserOnly(props: Props): JSX.Element | null; + export default function BrowserOnly(props: Props): ReactNode | null; } declare module '@docusaurus/isInternalUrl' { diff --git a/packages/docusaurus-plugin-content-blog/src/client/contexts.tsx b/packages/docusaurus-plugin-content-blog/src/client/contexts.tsx index 2493deb643..7c96f28860 100644 --- a/packages/docusaurus-plugin-content-blog/src/client/contexts.tsx +++ b/packages/docusaurus-plugin-content-blog/src/client/contexts.tsx @@ -74,7 +74,7 @@ export function BlogPostProvider({ children: ReactNode; content: PropBlogPostContent; isBlogPostPage?: boolean; -}): JSX.Element { +}): ReactNode { const contextValue = useContextValue({content, isBlogPostPage}); return {children}; } 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 9e8c3850ad..f13f42ec1d 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 @@ -663,6 +663,7 @@ declare module '@docusaurus/plugin-content-blog' { } declare module '@theme/BlogPostPage' { + import type {ReactNode} from 'react'; import type { BlogPostFrontMatter, BlogSidebar, @@ -683,18 +684,23 @@ declare module '@theme/BlogPostPage' { readonly blogMetadata: BlogMetadata; } - export default function BlogPostPage(props: Props): JSX.Element; + export default function BlogPostPage(props: Props): ReactNode; } declare module '@theme/BlogPostPage/Metadata' { - export default function BlogPostPageMetadata(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function BlogPostPageMetadata(): ReactNode; } declare module '@theme/BlogPostPage/StructuredData' { - export default function BlogPostStructuredData(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function BlogPostStructuredData(): ReactNode; } declare module '@theme/BlogListPage' { + import type {ReactNode} from 'react'; import type {Content} from '@theme/BlogPostPage'; import type { BlogSidebar, @@ -713,10 +719,11 @@ declare module '@theme/BlogListPage' { readonly items: readonly {readonly content: Content}[]; } - export default function BlogListPage(props: Props): JSX.Element; + export default function BlogListPage(props: Props): ReactNode; } declare module '@theme/BlogListPage/StructuredData' { + import type {ReactNode} from 'react'; import type {Content} from '@theme/BlogPostPage'; import type { BlogSidebar, @@ -735,10 +742,11 @@ declare module '@theme/BlogListPage/StructuredData' { readonly items: readonly {readonly content: Content}[]; } - export default function BlogListPageStructuredData(props: Props): JSX.Element; + export default function BlogListPageStructuredData(props: Props): ReactNode; } declare module '@theme/BlogTagsListPage' { + import type {ReactNode} from 'react'; import type {BlogSidebar} from '@docusaurus/plugin-content-blog'; import type {TagsListItem} from '@docusaurus/utils'; @@ -749,10 +757,11 @@ declare module '@theme/BlogTagsListPage' { readonly tags: TagsListItem[]; } - export default function BlogTagsListPage(props: Props): JSX.Element; + export default function BlogTagsListPage(props: Props): ReactNode; } declare module '@theme/Blog/Pages/BlogAuthorsListPage' { + import type {ReactNode} from 'react'; import type { AuthorItemProp, BlogSidebar, @@ -765,10 +774,11 @@ declare module '@theme/Blog/Pages/BlogAuthorsListPage' { readonly authors: AuthorItemProp[]; } - export default function BlogAuthorsListPage(props: Props): JSX.Element; + export default function BlogAuthorsListPage(props: Props): ReactNode; } declare module '@theme/Blog/Pages/BlogAuthorsPostsPage' { + import type {ReactNode} from 'react'; import type {Content} from '@theme/BlogPostPage'; import type { AuthorItemProp, @@ -790,10 +800,11 @@ declare module '@theme/Blog/Pages/BlogAuthorsPostsPage' { readonly items: readonly {readonly content: Content}[]; } - export default function BlogAuthorsPostsPage(props: Props): JSX.Element; + export default function BlogAuthorsPostsPage(props: Props): ReactNode; } declare module '@theme/BlogTagsPostsPage' { + import type {ReactNode} from 'react'; import type {Content} from '@theme/BlogPostPage'; import type { BlogSidebar, @@ -815,10 +826,11 @@ declare module '@theme/BlogTagsPostsPage' { readonly items: readonly {readonly content: Content}[]; } - export default function BlogTagsPostsPage(props: Props): JSX.Element; + export default function BlogTagsPostsPage(props: Props): ReactNode; } declare module '@theme/BlogArchivePage' { + import type {ReactNode} from 'react'; import type {Content} from '@theme/BlogPostPage'; /** We may add extra metadata or prune some metadata from here */ @@ -832,5 +844,5 @@ declare module '@theme/BlogArchivePage' { }; } - export default function BlogArchivePage(props: Props): JSX.Element; + export default function BlogArchivePage(props: Props): ReactNode; } diff --git a/packages/docusaurus-plugin-content-docs/src/client/doc.tsx b/packages/docusaurus-plugin-content-docs/src/client/doc.tsx index 6f4ce492e4..8d2710b631 100644 --- a/packages/docusaurus-plugin-content-docs/src/client/doc.tsx +++ b/packages/docusaurus-plugin-content-docs/src/client/doc.tsx @@ -50,7 +50,7 @@ export function DocProvider({ }: { children: ReactNode; content: PropDocContent; -}): JSX.Element { +}): ReactNode { const contextValue = useContextValue(content); return {children}; } diff --git a/packages/docusaurus-plugin-content-docs/src/client/docSidebarItemsExpandedState.tsx b/packages/docusaurus-plugin-content-docs/src/client/docSidebarItemsExpandedState.tsx index 3aa0d47594..417827700c 100644 --- a/packages/docusaurus-plugin-content-docs/src/client/docSidebarItemsExpandedState.tsx +++ b/packages/docusaurus-plugin-content-docs/src/client/docSidebarItemsExpandedState.tsx @@ -36,7 +36,7 @@ export function DocSidebarItemsExpandedStateProvider({ children, }: { children: ReactNode; -}): JSX.Element { +}): ReactNode { const [expandedItem, setExpandedItem] = useState(null); const contextValue = useMemo( () => ({expandedItem, setExpandedItem}), diff --git a/packages/docusaurus-plugin-content-docs/src/client/docsPreferredVersion.tsx b/packages/docusaurus-plugin-content-docs/src/client/docsPreferredVersion.tsx index 91dcd3a19c..1c9c8b6b69 100644 --- a/packages/docusaurus-plugin-content-docs/src/client/docsPreferredVersion.tsx +++ b/packages/docusaurus-plugin-content-docs/src/client/docsPreferredVersion.tsx @@ -163,7 +163,7 @@ function DocsPreferredVersionContextProviderUnsafe({ children, }: { children: ReactNode; -}): JSX.Element { +}): ReactNode { const value = useContextValue(); return {children}; } @@ -176,7 +176,7 @@ export function DocsPreferredVersionContextProvider({ children, }: { children: ReactNode; -}): JSX.Element { +}): ReactNode { return ( {children} diff --git a/packages/docusaurus-plugin-content-docs/src/client/docsSidebar.tsx b/packages/docusaurus-plugin-content-docs/src/client/docsSidebar.tsx index 4679ce4e63..d6a61682db 100644 --- a/packages/docusaurus-plugin-content-docs/src/client/docsSidebar.tsx +++ b/packages/docusaurus-plugin-content-docs/src/client/docsSidebar.tsx @@ -30,7 +30,7 @@ export function DocsSidebarProvider({ children: ReactNode; name: string | undefined; items: PropSidebar | undefined; -}): JSX.Element { +}): ReactNode { const stableValue: ContextValue | null = useMemo( () => (name && items ? {name, items} : null), [name, items], diff --git a/packages/docusaurus-plugin-content-docs/src/client/docsUtils.tsx b/packages/docusaurus-plugin-content-docs/src/client/docsUtils.tsx index 61ef935e09..cb8500eccc 100644 --- a/packages/docusaurus-plugin-content-docs/src/client/docsUtils.tsx +++ b/packages/docusaurus-plugin-content-docs/src/client/docsUtils.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import {useMemo} from 'react'; +import {type ReactNode, useMemo} from 'react'; import {matchPath, useLocation} from '@docusaurus/router'; import renderRoutes from '@docusaurus/renderRoutes'; import { @@ -363,7 +363,7 @@ Available doc ids are: */ export function useDocRootMetadata({route}: DocRootProps): null | { /** The element that should be rendered at the current location. */ - docElement: JSX.Element; + docElement: ReactNode; /** * The name of the sidebar associated with the current doc. `sidebarName` and * `sidebarItems` correspond to the value of {@link useDocsSidebar}. diff --git a/packages/docusaurus-plugin-content-docs/src/client/docsVersion.tsx b/packages/docusaurus-plugin-content-docs/src/client/docsVersion.tsx index d89f982719..340b92708e 100644 --- a/packages/docusaurus-plugin-content-docs/src/client/docsVersion.tsx +++ b/packages/docusaurus-plugin-content-docs/src/client/docsVersion.tsx @@ -20,7 +20,7 @@ export function DocsVersionProvider({ }: { children: ReactNode; version: PropVersionMetadata | null; -}): JSX.Element { +}): ReactNode { return {children}; } 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 806cf280ce..e11340aa5b 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 @@ -562,10 +562,11 @@ declare module '@docusaurus/plugin-content-docs' { } declare module '@theme/DocItem' { + import type {ReactNode} from 'react'; import type {PropDocContent} from '@docusaurus/plugin-content-docs'; export type DocumentRoute = { - readonly component: () => JSX.Element; + readonly component: () => ReactNode; readonly exact: boolean; readonly path: string; readonly sidebar?: string; @@ -576,10 +577,11 @@ declare module '@theme/DocItem' { readonly content: PropDocContent; } - export default function DocItem(props: Props): JSX.Element; + export default function DocItem(props: Props): ReactNode; } declare module '@theme/DocCategoryGeneratedIndexPage' { + import type {ReactNode} from 'react'; import type {PropCategoryGeneratedIndex} from '@docusaurus/plugin-content-docs'; export interface Props { @@ -588,39 +590,45 @@ declare module '@theme/DocCategoryGeneratedIndexPage' { export default function DocCategoryGeneratedIndexPage( props: Props, - ): JSX.Element; + ): ReactNode; } declare module '@theme/DocTagsListPage' { + import type {ReactNode} from 'react'; import type {PropTagsListPage} from '@docusaurus/plugin-content-docs'; export interface Props extends PropTagsListPage {} - export default function DocTagsListPage(props: Props): JSX.Element; + export default function DocTagsListPage(props: Props): ReactNode; } declare module '@theme/DocTagDocListPage' { + import type {ReactNode} from 'react'; import type {PropTagDocList} from '@docusaurus/plugin-content-docs'; export interface Props { readonly tag: PropTagDocList; } - export default function DocTagDocListPage(props: Props): JSX.Element; + export default function DocTagDocListPage(props: Props): ReactNode; } declare module '@theme/DocBreadcrumbs' { - export default function DocBreadcrumbs(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function DocBreadcrumbs(): ReactNode; } declare module '@theme/DocsRoot' { + import type {ReactNode} from 'react'; import type {RouteConfigComponentProps} from 'react-router-config'; import type {Required} from 'utility-types'; export interface Props extends Required {} - export default function DocsRoot(props: Props): JSX.Element; + export default function DocsRoot(props: Props): ReactNode; } declare module '@theme/DocVersionRoot' { + import type {ReactNode} from 'react'; import type {PropVersionMetadata} from '@docusaurus/plugin-content-docs'; import type {RouteConfigComponentProps} from 'react-router-config'; import type {Required} from 'utility-types'; @@ -629,14 +637,15 @@ declare module '@theme/DocVersionRoot' { readonly version: PropVersionMetadata; } - export default function DocVersionRoot(props: Props): JSX.Element; + export default function DocVersionRoot(props: Props): ReactNode; } declare module '@theme/DocRoot' { + import type {ReactNode} from 'react'; import type {RouteConfigComponentProps} from 'react-router-config'; import type {Required} from 'utility-types'; export interface Props extends Required {} - export default function DocRoot(props: Props): JSX.Element; + export default function DocRoot(props: Props): ReactNode; } 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 1c7b037437..e66659f8ea 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 @@ -85,6 +85,7 @@ declare module '@docusaurus/plugin-content-pages' { } declare module '@theme/MDXPage' { + import type {ReactNode} from 'react'; import type {LoadedMDXContent} from '@docusaurus/mdx-loader'; import type { MDXPageMetadata, @@ -100,5 +101,5 @@ declare module '@theme/MDXPage' { >; } - export default function MDXPage(props: Props): JSX.Element; + export default function MDXPage(props: Props): ReactNode; } diff --git a/packages/docusaurus-plugin-debug/src/plugin-debug.d.ts b/packages/docusaurus-plugin-debug/src/plugin-debug.d.ts index f66d093a1b..f59d95f85d 100644 --- a/packages/docusaurus-plugin-debug/src/plugin-debug.d.ts +++ b/packages/docusaurus-plugin-debug/src/plugin-debug.d.ts @@ -14,46 +14,57 @@ declare module '@docusaurus/plugin-debug' { } declare module '@theme/DebugConfig' { - export default function DebugMetadata(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function DebugMetadata(): ReactNode; } declare module '@theme/DebugContent' { + import type {ReactNode} from 'react'; import type {AllContent} from '@docusaurus/types'; export interface Props { readonly allContent: AllContent; } - export default function DebugContent(props: Props): JSX.Element; + export default function DebugContent(props: Props): ReactNode; } declare module '@theme/DebugGlobalData' { - export default function DebugGlobalData(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function DebugGlobalData(): ReactNode; } declare module '@theme/DebugJsonView' { + import type {ReactNode} from 'react'; + export interface Props { readonly src: unknown; readonly collapseDepth?: number; } - export default function DebugJsonView(props: Props): JSX.Element; + export default function DebugJsonView(props: Props): ReactNode; } declare module '@theme/DebugLayout' { import type {ReactNode} from 'react'; - export default function DebugLayout(props: { - children: ReactNode; - }): JSX.Element; + export default function DebugLayout(props: {children: ReactNode}): ReactNode; } declare module '@theme/DebugRegistry' { - export default function DebugRegistry(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function DebugRegistry(): ReactNode; } declare module '@theme/DebugRoutes' { - export default function DebugRoutes(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function DebugRoutes(): ReactNode; } declare module '@theme/DebugSiteMetadata' { - export default function DebugSiteMetadata(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function DebugSiteMetadata(): ReactNode; } diff --git a/packages/docusaurus-plugin-debug/src/theme/DebugConfig/index.tsx b/packages/docusaurus-plugin-debug/src/theme/DebugConfig/index.tsx index 6b110b8ab1..1245ec6121 100644 --- a/packages/docusaurus-plugin-debug/src/theme/DebugConfig/index.tsx +++ b/packages/docusaurus-plugin-debug/src/theme/DebugConfig/index.tsx @@ -5,12 +5,12 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import DebugLayout from '@theme/DebugLayout'; import DebugJsonView from '@theme/DebugJsonView'; -export default function DebugMetadata(): JSX.Element { +export default function DebugMetadata(): ReactNode { const {siteConfig} = useDocusaurusContext(); return ( diff --git a/packages/docusaurus-plugin-debug/src/theme/DebugContent/index.tsx b/packages/docusaurus-plugin-debug/src/theme/DebugContent/index.tsx index 185c453d7c..9cd6773de6 100644 --- a/packages/docusaurus-plugin-debug/src/theme/DebugContent/index.tsx +++ b/packages/docusaurus-plugin-debug/src/theme/DebugContent/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import DebugLayout from '@theme/DebugLayout'; import DebugJsonView from '@theme/DebugJsonView'; @@ -52,7 +52,7 @@ function PluginContent({ ); } -export default function DebugContent({allContent}: Props): JSX.Element { +export default function DebugContent({allContent}: Props): ReactNode { return (

Plugin content

diff --git a/packages/docusaurus-plugin-debug/src/theme/DebugGlobalData/index.tsx b/packages/docusaurus-plugin-debug/src/theme/DebugGlobalData/index.tsx index f66df5b7dd..139cc382ce 100644 --- a/packages/docusaurus-plugin-debug/src/theme/DebugGlobalData/index.tsx +++ b/packages/docusaurus-plugin-debug/src/theme/DebugGlobalData/index.tsx @@ -5,12 +5,12 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import useGlobalData from '@docusaurus/useGlobalData'; import DebugLayout from '@theme/DebugLayout'; import DebugJsonView from '@theme/DebugJsonView'; -export default function DebugMetadata(): JSX.Element { +export default function DebugMetadata(): ReactNode { const globalData = useGlobalData(); return ( diff --git a/packages/docusaurus-plugin-debug/src/theme/DebugJsonView/index.tsx b/packages/docusaurus-plugin-debug/src/theme/DebugJsonView/index.tsx index c89445e702..7b5e37d2e7 100644 --- a/packages/docusaurus-plugin-debug/src/theme/DebugJsonView/index.tsx +++ b/packages/docusaurus-plugin-debug/src/theme/DebugJsonView/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import { JsonView, defaultStyles, @@ -32,10 +32,7 @@ const paraisoStyles: JsonViewProps['style'] = { collapsedContent: styles.collapseContentParaiso!, }; -export default function DebugJsonView({ - src, - collapseDepth, -}: Props): JSX.Element { +export default function DebugJsonView({src, collapseDepth}: Props): ReactNode { return ( diff --git a/packages/docusaurus-plugin-debug/src/theme/DebugRegistry/index.tsx b/packages/docusaurus-plugin-debug/src/theme/DebugRegistry/index.tsx index 59cd4c7c21..c7e8272325 100644 --- a/packages/docusaurus-plugin-debug/src/theme/DebugRegistry/index.tsx +++ b/packages/docusaurus-plugin-debug/src/theme/DebugRegistry/index.tsx @@ -5,12 +5,12 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import registry from '@generated/registry'; import DebugLayout from '@theme/DebugLayout'; import styles from './styles.module.css'; -export default function DebugRegistry(): JSX.Element { +export default function DebugRegistry(): ReactNode { return (

Registry

diff --git a/packages/docusaurus-plugin-debug/src/theme/DebugRoutes/index.tsx b/packages/docusaurus-plugin-debug/src/theme/DebugRoutes/index.tsx index 43b922ba91..8c771e076b 100644 --- a/packages/docusaurus-plugin-debug/src/theme/DebugRoutes/index.tsx +++ b/packages/docusaurus-plugin-debug/src/theme/DebugRoutes/index.tsx @@ -5,13 +5,13 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import routes from '@generated/routes'; import DebugLayout from '@theme/DebugLayout'; import DebugJsonView from '@theme/DebugJsonView'; import styles from './styles.module.css'; -export default function DebugRoutes(): JSX.Element { +export default function DebugRoutes(): ReactNode { return (

Routes

diff --git a/packages/docusaurus-plugin-debug/src/theme/DebugSiteMetadata/index.tsx b/packages/docusaurus-plugin-debug/src/theme/DebugSiteMetadata/index.tsx index c366475762..4f24972834 100644 --- a/packages/docusaurus-plugin-debug/src/theme/DebugSiteMetadata/index.tsx +++ b/packages/docusaurus-plugin-debug/src/theme/DebugSiteMetadata/index.tsx @@ -5,12 +5,12 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import DebugLayout from '@theme/DebugLayout'; import styles from './styles.module.css'; -export default function DebugMetadata(): JSX.Element { +export default function DebugMetadata(): ReactNode { const {siteMetadata} = useDocusaurusContext(); return ( diff --git a/packages/docusaurus-plugin-ideal-image/src/deps.d.ts b/packages/docusaurus-plugin-ideal-image/src/deps.d.ts index 654dd16221..13f80f4841 100644 --- a/packages/docusaurus-plugin-ideal-image/src/deps.d.ts +++ b/packages/docusaurus-plugin-ideal-image/src/deps.d.ts @@ -13,7 +13,12 @@ * full state object. */ declare module '@slorber/react-ideal-image' { - import type {ComponentProps, ComponentType, CSSProperties} from 'react'; + import type { + ComponentProps, + ComponentType, + CSSProperties, + ReactNode, + } from 'react'; export type LoadingState = 'initial' | 'loading' | 'loaded' | 'error'; @@ -115,5 +120,5 @@ declare module '@slorber/react-ideal-image' { width: number; } - export default function IdealImage(props: ImageProps): JSX.Element; + export default function IdealImage(props: ImageProps): ReactNode; } diff --git a/packages/docusaurus-plugin-ideal-image/src/plugin-ideal-image.d.ts b/packages/docusaurus-plugin-ideal-image/src/plugin-ideal-image.d.ts index 561cbfb18a..28191e9816 100644 --- a/packages/docusaurus-plugin-ideal-image/src/plugin-ideal-image.d.ts +++ b/packages/docusaurus-plugin-ideal-image/src/plugin-ideal-image.d.ts @@ -52,7 +52,7 @@ declare module '@docusaurus/plugin-ideal-image' { } declare module '@theme/IdealImage' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export type SrcType = { width: number; @@ -72,5 +72,5 @@ declare module '@theme/IdealImage' { export interface Props extends ComponentProps<'img'> { readonly img: {default: string} | {src: SrcImage; preSrc: string} | string; } - export default function IdealImage(props: Props): JSX.Element; + export default function IdealImage(props: Props): ReactNode; } diff --git a/packages/docusaurus-plugin-ideal-image/src/theme/IdealImage/index.tsx b/packages/docusaurus-plugin-ideal-image/src/theme/IdealImage/index.tsx index 63d40cf63c..a983927ec4 100644 --- a/packages/docusaurus-plugin-ideal-image/src/theme/IdealImage/index.tsx +++ b/packages/docusaurus-plugin-ideal-image/src/theme/IdealImage/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import ReactIdealImage, { type IconKey, type State, @@ -80,7 +80,7 @@ function getMessage(icon: IconKey, state: State) { } } -export default function IdealImage(props: Props): JSX.Element { +export default function IdealImage(props: Props): ReactNode { const {img, ...propsRest} = props; // In dev env just use regular img with original file diff --git a/packages/docusaurus-plugin-pwa/src/plugin-pwa.d.ts b/packages/docusaurus-plugin-pwa/src/plugin-pwa.d.ts index 85d6aa0884..b6c0205d16 100644 --- a/packages/docusaurus-plugin-pwa/src/plugin-pwa.d.ts +++ b/packages/docusaurus-plugin-pwa/src/plugin-pwa.d.ts @@ -76,6 +76,8 @@ declare module '@docusaurus/plugin-pwa' { } declare module '@theme/PwaReloadPopup' { + import type {ReactNode} from 'react'; + export interface Props { /** * The popup should call this callback when the `reload` button is clicked. @@ -84,5 +86,5 @@ declare module '@theme/PwaReloadPopup' { */ readonly onReload: () => void; } - export default function PwaReloadPopup(props: Props): JSX.Element; + export default function PwaReloadPopup(props: Props): ReactNode; } diff --git a/packages/docusaurus-plugin-pwa/src/theme/PwaReloadPopup/index.tsx b/packages/docusaurus-plugin-pwa/src/theme/PwaReloadPopup/index.tsx index 66d63d70e0..54222c66e5 100644 --- a/packages/docusaurus-plugin-pwa/src/theme/PwaReloadPopup/index.tsx +++ b/packages/docusaurus-plugin-pwa/src/theme/PwaReloadPopup/index.tsx @@ -5,14 +5,14 @@ * LICENSE file in the root directory of this source tree. */ -import React, {useState} from 'react'; +import React, {type ReactNode, useState} from 'react'; import clsx from 'clsx'; import Translate, {translate} from '@docusaurus/Translate'; import type {Props} from '@theme/PwaReloadPopup'; import styles from './styles.module.css'; -export default function PwaReloadPopup({onReload}: Props): JSX.Element | false { +export default function PwaReloadPopup({onReload}: Props): ReactNode { const [isVisible, setIsVisible] = useState(true); return ( diff --git a/packages/docusaurus-theme-classic/src/theme-classic.d.ts b/packages/docusaurus-theme-classic/src/theme-classic.d.ts index e0d5f47a8e..6b5c40d730 100644 --- a/packages/docusaurus-theme-classic/src/theme-classic.d.ts +++ b/packages/docusaurus-theme-classic/src/theme-classic.d.ts @@ -50,51 +50,57 @@ declare module '@theme/Admonition' { readonly className?: string; } - export default function Admonition(props: Props): JSX.Element; + export default function Admonition(props: Props): ReactNode; } declare module '@theme/Admonition/Type/Note' { + import type {ReactNode} from 'react'; import type {Props as AdmonitionProps} from '@theme/Admonition'; export interface Props extends AdmonitionProps {} - export default function AdmonitionTypeNote(props: Props): JSX.Element; + export default function AdmonitionTypeNote(props: Props): ReactNode; } declare module '@theme/Admonition/Type/Info' { + import type {ReactNode} from 'react'; import type {Props as AdmonitionProps} from '@theme/Admonition'; export interface Props extends AdmonitionProps {} - export default function AdmonitionTypeInfo(props: Props): JSX.Element; + export default function AdmonitionTypeInfo(props: Props): ReactNode; } declare module '@theme/Admonition/Type/Tip' { + import type {ReactNode} from 'react'; import type {Props as AdmonitionProps} from '@theme/Admonition'; export interface Props extends AdmonitionProps {} - export default function AdmonitionTypeTip(props: Props): JSX.Element; + export default function AdmonitionTypeTip(props: Props): ReactNode; } // TODO remove before v4: Caution replaced by Warning // see https://github.com/facebook/docusaurus/issues/7558 declare module '@theme/Admonition/Type/Caution' { + import type {ReactNode} from 'react'; import type {Props as AdmonitionProps} from '@theme/Admonition'; export interface Props extends AdmonitionProps {} - export default function AdmonitionTypeCaution(props: Props): JSX.Element; + export default function AdmonitionTypeCaution(props: Props): ReactNode; } declare module '@theme/Admonition/Type/Warning' { + import type {ReactNode} from 'react'; import type {Props as AdmonitionProps} from '@theme/Admonition'; export interface Props extends AdmonitionProps {} - export default function AdmonitionTypeWarning(props: Props): JSX.Element; + export default function AdmonitionTypeWarning(props: Props): ReactNode; } declare module '@theme/Admonition/Type/Danger' { + import type {ReactNode} from 'react'; import type {Props as AdmonitionProps} from '@theme/Admonition'; export interface Props extends AdmonitionProps {} - export default function AdmonitionTypeDanger(props: Props): JSX.Element; + export default function AdmonitionTypeDanger(props: Props): ReactNode; } declare module '@theme/Admonition/Types' { @@ -118,74 +124,79 @@ declare module '@theme/Admonition/Layout' { readonly title?: ReactNode; readonly className?: string; } - export default function AdmonitionLayout(props: Props): JSX.Element; + export default function AdmonitionLayout(props: Props): ReactNode; } declare module '@theme/Admonition/Icon/Note' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'svg'> {} - export default function AdmonitionIconNote(props: Props): JSX.Element; + export default function AdmonitionIconNote(props: Props): ReactNode; } declare module '@theme/Admonition/Icon/Tip' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'svg'> {} - export default function AdmonitionIconTip(props: Props): JSX.Element; + export default function AdmonitionIconTip(props: Props): ReactNode; } declare module '@theme/Admonition/Icon/Warning' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'svg'> {} - export default function AdmonitionIconWarning(props: Props): JSX.Element; + export default function AdmonitionIconWarning(props: Props): ReactNode; } declare module '@theme/Admonition/Icon/Danger' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'svg'> {} - export default function AdmonitionIconDanger(props: Props): JSX.Element; + export default function AdmonitionIconDanger(props: Props): ReactNode; } declare module '@theme/Admonition/Icon/Info' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'svg'> {} - export default function AdmonitionIconInfo(props: Props): JSX.Element; + export default function AdmonitionIconInfo(props: Props): ReactNode; } declare module '@theme/AnnouncementBar' { - export default function AnnouncementBar(): JSX.Element | null; + import type {ReactNode} from 'react'; + + export default function AnnouncementBar(): ReactNode | null; } declare module '@theme/AnnouncementBar/Content' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'div'> {} - export default function AnnouncementBarContent(props: Props): JSX.Element; + export default function AnnouncementBarContent(props: Props): ReactNode; } declare module '@theme/AnnouncementBar/CloseButton' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'button'> {} - export default function AnnouncementBarCloseButton(props: Props): JSX.Element; + export default function AnnouncementBarCloseButton(props: Props): ReactNode; } declare module '@theme/BackToTopButton' { - export default function BackToTopButton(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function BackToTopButton(): ReactNode; } declare module '@theme/Blog/Components/Author' { + import type {ReactNode} from 'react'; import type {Author} from '@docusaurus/plugin-content-blog'; export interface Props { @@ -195,10 +206,11 @@ declare module '@theme/Blog/Components/Author' { readonly count?: number; } - export default function BlogAuthor(props: Props): JSX.Element; + export default function BlogAuthor(props: Props): ReactNode; } declare module '@theme/Blog/Components/Author/Socials' { + import type {ReactNode} from 'react'; import type {Author} from '@docusaurus/plugin-content-blog'; export interface Props { @@ -206,16 +218,17 @@ declare module '@theme/Blog/Components/Author/Socials' { readonly className?: string; } - export default function BlogAuthorSocials(props: Props): JSX.Element; + export default function BlogAuthorSocials(props: Props): ReactNode; } declare module '@theme/BlogListPaginator' { + import type {ReactNode} from 'react'; import type {BlogPaginatedMetadata} from '@docusaurus/plugin-content-blog'; export interface Props { readonly metadata: BlogPaginatedMetadata; } - export default function BlogListPaginator(props: Props): JSX.Element; + export default function BlogListPaginator(props: Props): ReactNode; } declare module '@theme/BlogSidebar/Content' { @@ -232,33 +245,36 @@ declare module '@theme/BlogSidebar/Content' { } declare module '@theme/BlogSidebar/Desktop' { + import type {ReactNode} from 'react'; import type {BlogSidebar} from '@docusaurus/plugin-content-blog'; export interface Props { readonly sidebar: BlogSidebar; } - export default function BlogSidebarDesktop(props: Props): JSX.Element; + export default function BlogSidebarDesktop(props: Props): ReactNode; } declare module '@theme/BlogSidebar/Mobile' { + import type {ReactNode} from 'react'; import type {BlogSidebar} from '@docusaurus/plugin-content-blog'; export interface Props { readonly sidebar: BlogSidebar; } - export default function BlogSidebarMobile(props: Props): JSX.Element; + export default function BlogSidebarMobile(props: Props): ReactNode; } declare module '@theme/BlogSidebar' { + import type {ReactNode} from 'react'; import type {BlogSidebar} from '@docusaurus/plugin-content-blog'; export interface Props { readonly sidebar?: BlogSidebar; } - export default function BlogSidebar(props: Props): JSX.Element; + export default function BlogSidebar(props: Props): ReactNode; } declare module '@theme/BlogPostItem' { @@ -269,7 +285,7 @@ declare module '@theme/BlogPostItem' { className?: string; } - export default function BlogPostItem(props: Props): JSX.Element; + export default function BlogPostItem(props: Props): ReactNode; } declare module '@theme/BlogPostItems' { @@ -281,7 +297,7 @@ declare module '@theme/BlogPostItems' { component?: ComponentType<{children: ReactNode}>; } - export default function BlogPostItem(props: Props): JSX.Element; + export default function BlogPostItem(props: Props): ReactNode; } declare module '@theme/BlogPostItem/Container' { @@ -292,35 +308,43 @@ declare module '@theme/BlogPostItem/Container' { className?: string; } - export default function BlogPostItemContainer(props: Props): JSX.Element; + export default function BlogPostItemContainer(props: Props): ReactNode; } declare module '@theme/BlogPostItem/Header' { - export default function BlogPostItemHeader(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function BlogPostItemHeader(): ReactNode; } declare module '@theme/BlogPostItem/Header/Title' { + import type {ReactNode} from 'react'; + export interface Props { className?: string; } - export default function BlogPostItemHeaderTitle(props: Props): JSX.Element; + export default function BlogPostItemHeaderTitle(props: Props): ReactNode; } declare module '@theme/BlogPostItem/Header/Info' { + import type {ReactNode} from 'react'; + export interface Props { className?: string; } - export default function BlogPostItemHeaderInfo(): JSX.Element; + export default function BlogPostItemHeaderInfo(): ReactNode; } declare module '@theme/BlogPostItem/Header/Authors' { + import type {ReactNode} from 'react'; + export interface Props { readonly className?: string; } - export default function BlogPostItemHeaderAuthors(props: Props): JSX.Element; + export default function BlogPostItemHeaderAuthors(props: Props): ReactNode; } declare module '@theme/BlogPostItem/Content' { @@ -331,14 +355,17 @@ declare module '@theme/BlogPostItem/Content' { className?: string; } - export default function BlogPostItemContent(props: Props): JSX.Element; + export default function BlogPostItemContent(props: Props): ReactNode; } declare module '@theme/BlogPostItem/Footer' { - export default function BlogPostItemFooter(): JSX.Element | null; + import type {ReactNode} from 'react'; + + export default function BlogPostItemFooter(): ReactNode | null; } declare module '@theme/BlogPostItem/Footer/ReadMoreLink' { + import type {ReactNode} from 'react'; import type {Props as LinkProps} from '@docusaurus/Link'; export type Props = LinkProps & { @@ -347,10 +374,12 @@ declare module '@theme/BlogPostItem/Footer/ReadMoreLink' { export default function BlogPostItemFooterReadMoreLink( props: Props, - ): JSX.Element | null; + ): ReactNode | null; } declare module '@theme/BlogPostPaginator' { + import type {ReactNode} from 'react'; + type Item = {readonly title: string; readonly permalink: string}; export interface Props { @@ -358,7 +387,7 @@ declare module '@theme/BlogPostPaginator' { readonly prevItem?: Item; } - export default function BlogPostPaginator(props: Props): JSX.Element; + export default function BlogPostPaginator(props: Props): ReactNode; } declare module '@theme/BlogLayout' { @@ -371,7 +400,7 @@ declare module '@theme/BlogLayout' { readonly toc?: ReactNode; } - export default function BlogLayout(props: Props): JSX.Element; + export default function BlogLayout(props: Props): ReactNode; } declare module '@theme/CodeBlock' { @@ -386,54 +415,60 @@ declare module '@theme/CodeBlock' { readonly showLineNumbers?: boolean; } - export default function CodeBlock(props: Props): JSX.Element; + export default function CodeBlock(props: Props): ReactNode; } declare module '@theme/CodeInline' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'code'> {} - export default function CodeInline(props: Props): JSX.Element; + export default function CodeInline(props: Props): ReactNode; } declare module '@theme/CodeBlock/CopyButton' { + import type {ReactNode} from 'react'; + export interface Props { readonly code: string; readonly className?: string; } - export default function CopyButton(props: Props): JSX.Element; + export default function CopyButton(props: Props): ReactNode; } declare module '@theme/CodeBlock/Container' { + import type {ReactNode} from 'react'; import type {ComponentProps} from 'react'; export default function CodeBlockContainer({ as: As, ...props - }: {as: T} & ComponentProps): JSX.Element; + }: {as: T} & ComponentProps): ReactNode; } declare module '@theme/CodeBlock/Content/Element' { + import type {ReactNode} from 'react'; import type {Props} from '@theme/CodeBlock'; export type {Props}; - export default function CodeBlockElementContent(props: Props): JSX.Element; + export default function CodeBlockElementContent(props: Props): ReactNode; } declare module '@theme/CodeBlock/Content/String' { + import type {ReactNode} from 'react'; import type {Props as CodeBlockProps} from '@theme/CodeBlock'; export interface Props extends Omit { readonly children: string; } - export default function CodeBlockStringContent(props: Props): JSX.Element; + export default function CodeBlockStringContent(props: Props): ReactNode; } declare module '@theme/CodeBlock/Line' { + import type {ReactNode} from 'react'; import type { LineInputProps, LineOutputProps, @@ -450,30 +485,34 @@ declare module '@theme/CodeBlock/Line' { readonly getTokenProps: (input: TokenInputProps) => TokenOutputProps; } - export default function CodeBlockLine(props: Props): JSX.Element; + export default function CodeBlockLine(props: Props): ReactNode; } declare module '@theme/CodeBlock/WordWrapButton' { + import type {ReactNode} from 'react'; + export interface Props { readonly className?: string; readonly onClick: React.MouseEventHandler; readonly isEnabled: boolean; } - export default function WordWrapButton(props: Props): JSX.Element; + export default function WordWrapButton(props: Props): ReactNode; } declare module '@theme/DocCard' { + import type {ReactNode} from 'react'; import type {PropSidebarItem} from '@docusaurus/plugin-content-docs'; export interface Props { readonly item: PropSidebarItem; } - export default function DocCard(props: Props): JSX.Element; + export default function DocCard(props: Props): ReactNode; } declare module '@theme/DocCardList' { + import type {ReactNode} from 'react'; import type {PropSidebarItem} from '@docusaurus/plugin-content-docs'; export interface Props { @@ -481,43 +520,57 @@ declare module '@theme/DocCardList' { readonly className?: string; } - export default function DocCardList(props: Props): JSX.Element; + export default function DocCardList(props: Props): ReactNode; } declare module '@theme/DocItem/Layout' { + import type {ReactNode} from 'react'; + export interface Props { - readonly children: JSX.Element; + readonly children: ReactNode; } - export default function DocItemLayout(props: Props): JSX.Element; + export default function DocItemLayout(props: Props): ReactNode; } declare module '@theme/DocItem/Metadata' { - export default function DocItemMetadata(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function DocItemMetadata(): ReactNode; } declare module '@theme/DocItem/Content' { + import type {ReactNode} from 'react'; + export interface Props { - readonly children: JSX.Element; + readonly children: ReactNode; } - export default function DocItemContent(props: Props): JSX.Element; + export default function DocItemContent(props: Props): ReactNode; } declare module '@theme/DocItem/TOC/Mobile' { - export default function DocItemTOCMobile(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function DocItemTOCMobile(): ReactNode; } declare module '@theme/DocItem/TOC/Desktop' { - export default function DocItemTOCDesktop(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function DocItemTOCDesktop(): ReactNode; } declare module '@theme/DocItem/Paginator' { - export default function DocItemPaginator(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function DocItemPaginator(): ReactNode; } declare module '@theme/DocItem/Footer' { - export default function DocItemFooter(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function DocItemFooter(): ReactNode; } declare module '@theme/DocRoot/Layout' { @@ -527,11 +580,11 @@ declare module '@theme/DocRoot/Layout' { readonly children: ReactNode; } - export default function DocRootLayout(props: Props): JSX.Element; + export default function DocRootLayout(props: Props): ReactNode; } declare module '@theme/DocRoot/Layout/Sidebar' { - import type {Dispatch, SetStateAction} from 'react'; + import type {Dispatch, SetStateAction, ReactNode} from 'react'; import type {PropSidebar} from '@docusaurus/plugin-content-docs'; export interface Props { @@ -540,17 +593,19 @@ declare module '@theme/DocRoot/Layout/Sidebar' { readonly setHiddenSidebarContainer: Dispatch>; } - export default function DocRootLayoutSidebar(props: Props): JSX.Element; + export default function DocRootLayoutSidebar(props: Props): ReactNode; } declare module '@theme/DocRoot/Layout/Sidebar/ExpandButton' { + import type {ReactNode} from 'react'; + export interface Props { toggleSidebar: () => void; } export default function DocRootLayoutSidebarExpandButton( props: Props, - ): JSX.Element; + ): ReactNode; } declare module '@theme/DocRoot/Layout/Main' { @@ -561,19 +616,21 @@ declare module '@theme/DocRoot/Layout/Main' { readonly children: ReactNode; } - export default function DocRootLayoutMain(props: Props): JSX.Element; + export default function DocRootLayoutMain(props: Props): ReactNode; } declare module '@theme/DocPaginator' { + import type {ReactNode} from 'react'; import type {PropNavigation} from '@docusaurus/plugin-content-docs'; // May be simpler to provide a {navigation: PropNavigation} prop? export interface Props extends PropNavigation {} - export default function DocPaginator(props: Props): JSX.Element; + export default function DocPaginator(props: Props): ReactNode; } declare module '@theme/DocSidebar' { + import type {ReactNode} from 'react'; import type {PropSidebarItem} from '@docusaurus/plugin-content-docs'; export interface Props { @@ -583,26 +640,29 @@ declare module '@theme/DocSidebar' { readonly isHidden: boolean; } - export default function DocSidebar(props: Props): JSX.Element; + export default function DocSidebar(props: Props): ReactNode; } declare module '@theme/DocSidebar/Mobile' { + import type {ReactNode} from 'react'; import type {Props as DocSidebarProps} from '@theme/DocSidebar'; export interface Props extends DocSidebarProps {} - export default function DocSidebarMobile(props: Props): JSX.Element; + export default function DocSidebarMobile(props: Props): ReactNode; } declare module '@theme/DocSidebar/Desktop' { + import type {ReactNode} from 'react'; import type {Props as DocSidebarProps} from '@theme/DocSidebar'; export interface Props extends DocSidebarProps {} - export default function DocSidebarDesktop(props: Props): JSX.Element; + export default function DocSidebarDesktop(props: Props): ReactNode; } declare module '@theme/DocSidebar/Desktop/Content' { + import type {ReactNode} from 'react'; import type {PropSidebarItem} from '@docusaurus/plugin-content-docs'; export interface Props { @@ -611,18 +671,21 @@ declare module '@theme/DocSidebar/Desktop/Content' { readonly sidebar: readonly PropSidebarItem[]; } - export default function Content(props: Props): JSX.Element; + export default function Content(props: Props): ReactNode; } declare module '@theme/DocSidebar/Desktop/CollapseButton' { + import type {ReactNode} from 'react'; + export interface Props { readonly onClick: React.MouseEventHandler; } - export default function CollapseButton(props: Props): JSX.Element; + export default function CollapseButton(props: Props): ReactNode; } declare module '@theme/DocSidebarItem' { + import type {ReactNode} from 'react'; import type {PropSidebarItem} from '@docusaurus/plugin-content-docs'; export interface Props { @@ -634,10 +697,11 @@ declare module '@theme/DocSidebarItem' { readonly index: number; } - export default function DocSidebarItem(props: Props): JSX.Element; + export default function DocSidebarItem(props: Props): ReactNode; } declare module '@theme/DocSidebarItem/Link' { + import type {ReactNode} from 'react'; import type {Props as DocSidebarItemProps} from '@theme/DocSidebarItem'; import type {PropSidebarItemLink} from '@docusaurus/plugin-content-docs'; @@ -646,10 +710,11 @@ declare module '@theme/DocSidebarItem/Link' { readonly item: PropSidebarItemLink; } - export default function DocSidebarItemLink(props: Props): JSX.Element; + export default function DocSidebarItemLink(props: Props): ReactNode; } declare module '@theme/DocSidebarItem/Html' { + import type {ReactNode} from 'react'; import type {Props as DocSidebarItemProps} from '@theme/DocSidebarItem'; import type {PropSidebarItemHtml} from '@docusaurus/plugin-content-docs'; @@ -657,10 +722,11 @@ declare module '@theme/DocSidebarItem/Html' { readonly item: PropSidebarItemHtml; } - export default function DocSidebarItemHtml(props: Props): JSX.Element; + export default function DocSidebarItemHtml(props: Props): ReactNode; } declare module '@theme/DocSidebarItem/Category' { + import type {ReactNode} from 'react'; import type {Props as DocSidebarItemProps} from '@theme/DocSidebarItem'; import type {PropSidebarItemCategory} from '@docusaurus/plugin-content-docs'; @@ -668,10 +734,11 @@ declare module '@theme/DocSidebarItem/Category' { readonly item: PropSidebarItemCategory; } - export default function DocSidebarItemCategory(props: Props): JSX.Element; + export default function DocSidebarItemCategory(props: Props): ReactNode; } declare module '@theme/DocSidebarItems' { + import type {ReactNode} from 'react'; import type {Props as DocSidebarItemProps} from '@theme/DocSidebarItem'; import type {PropSidebarItem} from '@docusaurus/plugin-content-docs'; @@ -679,44 +746,54 @@ declare module '@theme/DocSidebarItems' { readonly items: readonly PropSidebarItem[]; } - export default function DocSidebarItems(props: Props): JSX.Element; + export default function DocSidebarItems(props: Props): ReactNode; } declare module '@theme/DocVersionBanner' { + import type {ReactNode} from 'react'; + export interface Props { readonly className?: string; } - export default function DocVersionBanner(props: Props): JSX.Element; + export default function DocVersionBanner(props: Props): ReactNode; } declare module '@theme/DocVersionBadge' { + import type {ReactNode} from 'react'; + export interface Props { readonly className?: string; } - export default function DocVersionBadge(props: Props): JSX.Element; + export default function DocVersionBadge(props: Props): ReactNode; } declare module '@theme/DocVersionSuggestions' { - export default function DocVersionSuggestions(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function DocVersionSuggestions(): ReactNode; } declare module '@theme/EditMetaRow' { + import type {ReactNode} from 'react'; + export interface Props { readonly className: string; readonly editUrl: string | null | undefined; readonly lastUpdatedAt: number | undefined; readonly lastUpdatedBy: string | undefined; } - export default function EditMetaRow(props: Props): JSX.Element; + export default function EditMetaRow(props: Props): ReactNode; } declare module '@theme/EditThisPage' { + import type {ReactNode} from 'react'; + export interface Props { readonly editUrl: string; } - export default function EditThisPage(props: Props): JSX.Element; + export default function EditThisPage(props: Props): ReactNode; } declare module '@theme/ErrorPageContent' { @@ -727,35 +804,43 @@ declare module '@theme/ErrorPageContent' { } declare module '@theme/Footer' { - export default function Footer(): JSX.Element | null; + import type {ReactNode} from 'react'; + + export default function Footer(): ReactNode | null; } declare module '@theme/Footer/Logo' { + import type {ReactNode} from 'react'; + import type {FooterLogo} from '@docusaurus/theme-common'; export interface Props { readonly logo: FooterLogo; } - export default function FooterLogo(props: Props): JSX.Element; + export default function FooterLogo(props: Props): ReactNode; } declare module '@theme/Footer/Copyright' { + import type {ReactNode} from 'react'; + export interface Props { readonly copyright: string; } - export default function FooterCopyright(props: Props): JSX.Element; + export default function FooterCopyright(props: Props): ReactNode; } declare module '@theme/Footer/LinkItem' { + import type {ReactNode} from 'react'; + import type {FooterLinkItem} from '@docusaurus/theme-common'; export interface Props { readonly item: FooterLinkItem; } - export default function FooterLinkItem(props: Props): JSX.Element; + export default function FooterLinkItem(props: Props): ReactNode; } declare module '@theme/Footer/Layout' { @@ -768,41 +853,44 @@ declare module '@theme/Footer/Layout' { readonly copyright: ReactNode; } - export default function FooterLayout(props: Props): JSX.Element; + export default function FooterLayout(props: Props): ReactNode; } declare module '@theme/Footer/Links' { + import type {ReactNode} from 'react'; import type {Footer} from '@docusaurus/theme-common'; export interface Props { readonly links: Footer['links']; } - export default function FooterLinks(props: Props): JSX.Element; + export default function FooterLinks(props: Props): ReactNode; } declare module '@theme/Footer/Links/MultiColumn' { + import type {ReactNode} from 'react'; import type {MultiColumnFooter} from '@docusaurus/theme-common'; export interface Props { readonly columns: MultiColumnFooter['links']; } - export default function FooterLinksMultiColumn(props: Props): JSX.Element; + export default function FooterLinksMultiColumn(props: Props): ReactNode; } declare module '@theme/Footer/Links/Simple' { + import type {ReactNode} from 'react'; import type {SimpleFooter} from '@docusaurus/theme-common'; export interface Props { readonly links: SimpleFooter['links']; } - export default function FooterLinksSimple(props: Props): JSX.Element; + export default function FooterLinksSimple(props: Props): ReactNode; } declare module '@theme/Heading' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; type HeadingType = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'; @@ -810,15 +898,17 @@ declare module '@theme/Heading' { readonly as: HeadingType; } - export default function Heading(props: Props): JSX.Element; + export default function Heading(props: Props): ReactNode; } declare module '@theme/NotFound/Content' { + import type {ReactNode} from 'react'; + export interface Props { readonly className?: string; } - export default function NotFoundContent(props: Props): JSX.Element; + export default function NotFoundContent(props: Props): ReactNode; } declare module '@theme/Layout' { @@ -834,7 +924,7 @@ declare module '@theme/Layout' { readonly description?: string; } - export default function Layout(props: Props): JSX.Element; + export default function Layout(props: Props): ReactNode; } declare module '@theme/Layout/Provider' { @@ -844,99 +934,105 @@ declare module '@theme/Layout/Provider' { readonly children: ReactNode; } - export default function LayoutProvider(props: Props): JSX.Element; + export default function LayoutProvider(props: Props): ReactNode; } declare module '@theme/SearchMetadata' { + import type {ReactNode} from 'react'; + export interface Props { readonly locale?: string; readonly version?: string; readonly tag?: string; } - export default function SearchMetadata(props: Props): JSX.Element; + export default function SearchMetadata(props: Props): ReactNode; } declare module '@theme/LastUpdated' { + import type {ReactNode} from 'react'; + export interface Props { readonly lastUpdatedAt?: number; readonly lastUpdatedBy?: string; } - export default function LastUpdated(props: Props): JSX.Element; + export default function LastUpdated(props: Props): ReactNode; } declare module '@theme/SkipToContent' { - export default function SkipToContent(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function SkipToContent(): ReactNode; } declare module '@theme/MDXComponents/A' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'a'> {} - export default function MDXA(props: Props): JSX.Element; + export default function MDXA(props: Props): ReactNode; } declare module '@theme/MDXComponents/Code' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'code'> {} - export default function MDXCode(props: Props): JSX.Element; + export default function MDXCode(props: Props): ReactNode; } declare module '@theme/MDXComponents/Details' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'details'> {} - export default function MDXDetails(props: Props): JSX.Element; + export default function MDXDetails(props: Props): ReactNode; } declare module '@theme/MDXComponents/Ul' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'ul'> {} - export default function MDXUl(props: Props): JSX.Element; + export default function MDXUl(props: Props): ReactNode; } declare module '@theme/MDXComponents/Li' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'li'> {} - export default function MDXLi(props: Props): JSX.Element; + export default function MDXLi(props: Props): ReactNode; } declare module '@theme/MDXComponents/Img' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'img'> {} - export default function MDXImg(props: Props): JSX.Element; + export default function MDXImg(props: Props): ReactNode; } declare module '@theme/MDXComponents/Heading' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; import type Heading from '@theme/Heading'; export interface Props extends ComponentProps {} - export default function MDXHeading(props: Props): JSX.Element; + export default function MDXHeading(props: Props): ReactNode; } declare module '@theme/MDXComponents/Pre' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'pre'> {} - export default function MDXPre(props: Props): JSX.Element; + export default function MDXPre(props: Props): ReactNode; } declare module '@theme/MDXComponents' { - import type {ComponentType, ComponentProps} from 'react'; + import type {ComponentType, ComponentProps, ReactNode} from 'react'; import type MDXCode from '@theme/MDXComponents/Code'; import type MDXA from '@theme/MDXComponents/A'; @@ -962,12 +1058,12 @@ declare module '@theme/MDXComponents' { readonly pre: typeof MDXPre; readonly ul: typeof MDXUl; readonly img: typeof MDXImg; - readonly h1: (props: ComponentProps<'h1'>) => JSX.Element; - readonly h2: (props: ComponentProps<'h2'>) => JSX.Element; - readonly h3: (props: ComponentProps<'h3'>) => JSX.Element; - readonly h4: (props: ComponentProps<'h4'>) => JSX.Element; - readonly h5: (props: ComponentProps<'h5'>) => JSX.Element; - readonly h6: (props: ComponentProps<'h6'>) => JSX.Element; + readonly h1: (props: ComponentProps<'h1'>) => ReactNode; + readonly h2: (props: ComponentProps<'h2'>) => ReactNode; + readonly h3: (props: ComponentProps<'h3'>) => ReactNode; + readonly h4: (props: ComponentProps<'h4'>) => ReactNode; + readonly h5: (props: ComponentProps<'h5'>) => ReactNode; + readonly h6: (props: ComponentProps<'h6'>) => ReactNode; readonly admonition: typeof Admonition; readonly mermaid: typeof Mermaid; // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -985,41 +1081,51 @@ declare module '@theme/MDXContent' { readonly children: ReactNode; } - export default function MDXContent(props: Props): JSX.Element; + export default function MDXContent(props: Props): ReactNode; } declare module '@theme/Navbar' { - export default function Navbar(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function Navbar(): ReactNode; } declare module '@theme/Navbar/ColorModeToggle' { + import type {ReactNode} from 'react'; + export interface Props { readonly className?: string; } - export default function NavbarColorModeToggle( - props: Props, - ): JSX.Element | null; + export default function NavbarColorModeToggle(props: Props): ReactNode | null; } declare module '@theme/Navbar/Logo' { - export default function NavbarLogo(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function NavbarLogo(): ReactNode; } declare module '@theme/Navbar/Content' { - export default function NavbarContent(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function NavbarContent(): ReactNode; } declare module '@theme/Navbar/Layout' { + import type {ReactNode} from 'react'; + export interface Props { readonly children: React.ReactNode; } - export default function NavbarLayout(props: Props): JSX.Element; + export default function NavbarLayout(props: Props): ReactNode; } declare module '@theme/Navbar/MobileSidebar' { - export default function NavbarMobileSidebar(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function NavbarMobileSidebar(): ReactNode; } declare module '@theme/Navbar/MobileSidebar/Layout' { @@ -1031,23 +1137,31 @@ declare module '@theme/Navbar/MobileSidebar/Layout' { readonly secondaryMenu: ReactNode; } - export default function NavbarMobileSidebarLayout(props: Props): JSX.Element; + export default function NavbarMobileSidebarLayout(props: Props): ReactNode; } declare module '@theme/Navbar/MobileSidebar/Toggle' { - export default function NavbarMobileSidebarToggle(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function NavbarMobileSidebarToggle(): ReactNode; } declare module '@theme/Navbar/MobileSidebar/PrimaryMenu' { - export default function NavbarMobileSidebarPrimaryMenu(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function NavbarMobileSidebarPrimaryMenu(): ReactNode; } declare module '@theme/Navbar/MobileSidebar/SecondaryMenu' { - export default function NavbarMobileSidebarSecondaryMenu(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function NavbarMobileSidebarSecondaryMenu(): ReactNode; } declare module '@theme/Navbar/MobileSidebar/Header' { - export default function NavbarMobileSidebarHeader(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function NavbarMobileSidebarHeader(): ReactNode; } declare module '@theme/Navbar/Search' { @@ -1058,10 +1172,11 @@ declare module '@theme/Navbar/Search' { readonly className?: string; } - export default function NavbarSearch(props: Props): JSX.Element; + export default function NavbarSearch(props: Props): ReactNode; } declare module '@theme/NavbarItem/DefaultNavbarItem' { + import type {ReactNode} from 'react'; import type {Props as NavbarNavLinkProps} from '@theme/NavbarItem/NavbarNavLink'; export type DesktopOrMobileNavBarItemProps = NavbarNavLinkProps & { @@ -1074,7 +1189,7 @@ declare module '@theme/NavbarItem/DefaultNavbarItem' { readonly mobile?: boolean; } - export default function DefaultNavbarItem(props: Props): JSX.Element; + export default function DefaultNavbarItem(props: Props): ReactNode; } declare module '@theme/NavbarItem/NavbarNavLink' { @@ -1091,10 +1206,11 @@ declare module '@theme/NavbarItem/NavbarNavLink' { readonly isDropdownLink?: boolean; } - export default function NavbarNavLink(props: Props): JSX.Element; + export default function NavbarNavLink(props: Props): ReactNode; } declare module '@theme/NavbarItem/DropdownNavbarItem' { + import type {ReactNode} from 'react'; import type {Props as NavbarNavLinkProps} from '@theme/NavbarItem/NavbarNavLink'; import type {LinkLikeNavbarItemProps} from '@theme/NavbarItem'; @@ -1108,19 +1224,22 @@ declare module '@theme/NavbarItem/DropdownNavbarItem' { readonly mobile?: boolean; } - export default function DropdownNavbarItem(props: Props): JSX.Element; + export default function DropdownNavbarItem(props: Props): ReactNode; } declare module '@theme/NavbarItem/SearchNavbarItem' { + import type {ReactNode} from 'react'; + export interface Props { readonly mobile?: boolean; readonly className?: string; } - export default function SearchNavbarItem(props: Props): JSX.Element; + export default function SearchNavbarItem(props: Props): ReactNode; } declare module '@theme/NavbarItem/LocaleDropdownNavbarItem' { + import type {ReactNode} from 'react'; import type {Props as DropdownNavbarItemProps} from '@theme/NavbarItem/DropdownNavbarItem'; import type {LinkLikeNavbarItemProps} from '@theme/NavbarItem'; @@ -1130,10 +1249,11 @@ declare module '@theme/NavbarItem/LocaleDropdownNavbarItem' { readonly queryString?: string; } - export default function LocaleDropdownNavbarItem(props: Props): JSX.Element; + export default function LocaleDropdownNavbarItem(props: Props): ReactNode; } declare module '@theme/NavbarItem/DocsVersionDropdownNavbarItem' { + import type {ReactNode} from 'react'; import type {Props as DropdownNavbarItemProps} from '@theme/NavbarItem/DropdownNavbarItem'; import type {LinkLikeNavbarItemProps} from '@theme/NavbarItem'; @@ -1146,20 +1266,22 @@ declare module '@theme/NavbarItem/DocsVersionDropdownNavbarItem' { export default function DocsVersionDropdownNavbarItem( props: Props, - ): JSX.Element; + ): ReactNode; } declare module '@theme/NavbarItem/DocsVersionNavbarItem' { + import type {ReactNode} from 'react'; import type {Props as DefaultNavbarItemProps} from '@theme/NavbarItem/DefaultNavbarItem'; export interface Props extends DefaultNavbarItemProps { readonly docsPluginId?: string; } - export default function DocsVersionNavbarItem(props: Props): JSX.Element; + export default function DocsVersionNavbarItem(props: Props): ReactNode; } declare module '@theme/NavbarItem/DocNavbarItem' { + import type {ReactNode} from 'react'; import type {Props as DefaultNavbarItemProps} from '@theme/NavbarItem/DefaultNavbarItem'; export interface Props extends DefaultNavbarItemProps { @@ -1167,12 +1289,11 @@ declare module '@theme/NavbarItem/DocNavbarItem' { readonly docsPluginId?: string; } - export default function DocsSidebarNavbarItem( - props: Props, - ): JSX.Element | null; + export default function DocsSidebarNavbarItem(props: Props): ReactNode | null; } declare module '@theme/NavbarItem/DocSidebarNavbarItem' { + import type {ReactNode} from 'react'; import type {Props as DefaultNavbarItemProps} from '@theme/NavbarItem/DefaultNavbarItem'; export interface Props extends DefaultNavbarItemProps { @@ -1180,17 +1301,18 @@ declare module '@theme/NavbarItem/DocSidebarNavbarItem' { readonly docsPluginId?: string; } - export default function DocSidebarNavbarItem(props: Props): JSX.Element; + export default function DocSidebarNavbarItem(props: Props): ReactNode; } declare module '@theme/NavbarItem/HtmlNavbarItem' { + import type {ReactNode} from 'react'; import type {Props as DefaultNavbarItemProps} from '@theme/NavbarItem/DefaultNavbarItem'; export interface Props extends DefaultNavbarItemProps { readonly value: string; } - export default function HtmlNavbarItem(props: Props): JSX.Element; + export default function HtmlNavbarItem(props: Props): ReactNode; } declare module '@theme/NavbarItem/ComponentTypes' { @@ -1225,7 +1347,7 @@ declare module '@theme/NavbarItem/ComponentTypes' { } declare module '@theme/NavbarItem' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; import type {Props as DefaultNavbarItemProps} from '@theme/NavbarItem/DefaultNavbarItem'; import type {Props as DocNavbarItemProps} from '@theme/NavbarItem/DocNavbarItem'; import type {Props as DocSidebarNavbarItemProps} from '@theme/NavbarItem/DocSidebarNavbarItem'; @@ -1259,7 +1381,7 @@ declare module '@theme/NavbarItem' { export type NavbarItemType = Props['type']; - export default function NavbarItem(props: Props): JSX.Element; + export default function NavbarItem(props: Props): ReactNode; } declare module '@theme/PaginatorNavLink' { @@ -1268,43 +1390,50 @@ declare module '@theme/PaginatorNavLink' { export interface Props extends Omit { readonly title: ReactNode; - readonly subLabel?: JSX.Element; + readonly subLabel?: ReactNode; readonly isNext?: boolean; } - export default function PaginatorNavLink(props: Props): JSX.Element; + export default function PaginatorNavLink(props: Props): ReactNode; } declare module '@theme/SearchBar' { - export default function SearchBar(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function SearchBar(): ReactNode; } declare module '@theme/Mermaid' { + import type {ReactNode} from 'react'; + export interface Props { value: string; } - export default function Mermaid(props: Props): JSX.Element; + export default function Mermaid(props: Props): ReactNode; } declare module '@theme/TabItem' { + import type {ReactNode} from 'react'; + import type {TabItemProps} from '@docusaurus/theme-common/internal'; export interface Props extends TabItemProps {} - export default function TabItem(props: Props): JSX.Element; + export default function TabItem(props: Props): ReactNode; } declare module '@theme/Tabs' { + import type {ReactNode} from 'react'; import type {TabsProps} from '@docusaurus/theme-common/internal'; export interface Props extends TabsProps {} - export default function Tabs(props: Props): JSX.Element; + export default function Tabs(props: Props): ReactNode; } declare module '@theme/ThemedImage' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends Omit, 'src'> { readonly sources: { @@ -1313,7 +1442,7 @@ declare module '@theme/ThemedImage' { }; } - export default function ThemedImage(props: Props): JSX.Element; + export default function ThemedImage(props: Props): ReactNode; } declare module '@theme/Details' { @@ -1324,6 +1453,7 @@ declare module '@theme/Details' { } declare module '@theme/TOCItems' { + import type {ReactNode} from 'react'; import type {TOCItem} from '@docusaurus/mdx-loader'; export interface Props { @@ -1335,10 +1465,11 @@ declare module '@theme/TOCItems' { readonly linkActiveClassName?: string; } - export default function TOCItems(props: Props): JSX.Element; + export default function TOCItems(props: Props): ReactNode; } declare module '@theme/TOCItems/Tree' { + import type {ReactNode} from 'react'; import type {TOCTreeNode} from '@docusaurus/theme-common/internal'; export interface Props { @@ -1348,10 +1479,11 @@ declare module '@theme/TOCItems/Tree' { readonly isChild?: boolean; } - export default function TOCItems(props: Props): JSX.Element; + export default function TOCItems(props: Props): ReactNode; } declare module '@theme/TOC' { + import type {ReactNode} from 'react'; import type {TOCItem} from '@docusaurus/mdx-loader'; // `minHeadingLevel` only comes from doc/post front matter, and won't have a @@ -1363,10 +1495,11 @@ declare module '@theme/TOC' { readonly className?: string; } - export default function TOC(props: Props): JSX.Element; + export default function TOC(props: Props): ReactNode; } declare module '@theme/TOCInline' { + import type {ReactNode} from 'react'; import type {TOCItem} from '@docusaurus/mdx-loader'; export interface Props { @@ -1375,10 +1508,11 @@ declare module '@theme/TOCInline' { readonly maxHeadingLevel?: number; } - export default function TOCInline(props: Props): JSX.Element; + export default function TOCInline(props: Props): ReactNode; } declare module '@theme/TOCCollapsible' { + import type {ReactNode} from 'react'; import type {TOCItem} from '@docusaurus/mdx-loader'; export interface Props { @@ -1388,22 +1522,21 @@ declare module '@theme/TOCCollapsible' { readonly toc: readonly TOCItem[]; } - export default function TOCCollapsible(props: Props): JSX.Element; + export default function TOCCollapsible(props: Props): ReactNode; } declare module '@theme/TOCCollapsible/CollapseButton' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'button'> { collapsed: boolean; } - export default function TOCCollapsibleCollapseButton( - props: Props, - ): JSX.Element; + export default function TOCCollapsibleCollapseButton(props: Props): ReactNode; } declare module '@theme/ColorModeToggle' { + import type {ReactNode} from 'react'; import type {ColorMode} from '@docusaurus/theme-common'; export interface Props { @@ -1417,192 +1550,197 @@ declare module '@theme/ColorModeToggle' { readonly onChange: (colorMode: ColorMode) => void; } - export default function ColorModeToggle(props: Props): JSX.Element; + export default function ColorModeToggle(props: Props): ReactNode; } declare module '@theme/Logo' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'a'> { readonly imageClassName?: string; readonly titleClassName?: string; } - export default function Logo(props: Props): JSX.Element; + export default function Logo(props: Props): ReactNode; } declare module '@theme/Icon/Arrow' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'svg'> {} - export default function IconArrow(props: Props): JSX.Element; + export default function IconArrow(props: Props): ReactNode; } declare module '@theme/Icon/DarkMode' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'svg'> {} - export default function IconDarkMode(props: Props): JSX.Element; + export default function IconDarkMode(props: Props): ReactNode; } declare module '@theme/Icon/Edit' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'svg'> {} - export default function IconEdit(props: Props): JSX.Element; + export default function IconEdit(props: Props): ReactNode; } declare module '@theme/Icon/Home' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'svg'> {} - export default function IconHome(props: Props): JSX.Element; + export default function IconHome(props: Props): ReactNode; } declare module '@theme/Icon/LightMode' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'svg'> {} - export default function IconLightMode(props: Props): JSX.Element; + export default function IconLightMode(props: Props): ReactNode; } declare module '@theme/Icon/Menu' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'svg'> {} - export default function IconMenu(props: Props): JSX.Element; + export default function IconMenu(props: Props): ReactNode; } declare module '@theme/Icon/Close' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'svg'> {} - export default function IconClose(props: Props): JSX.Element; + export default function IconClose(props: Props): ReactNode; } declare module '@theme/Icon/Copy' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'svg'> {} - export default function IconCopy(props: Props): JSX.Element; + export default function IconCopy(props: Props): ReactNode; } declare module '@theme/Icon/Language' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'svg'> {} - export default function IconLanguage(props: Props): JSX.Element; + export default function IconLanguage(props: Props): ReactNode; } declare module '@theme/Icon/Success' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'svg'> {} - export default function IconSuccess(props: Props): JSX.Element; + export default function IconSuccess(props: Props): ReactNode; } declare module '@theme/Icon/ExternalLink' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'svg'> {} - export default function IconExternalLink(props: Props): JSX.Element; + export default function IconExternalLink(props: Props): ReactNode; } declare module '@theme/Icon/WordWrap' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'svg'> {} - export default function IconWordWrap(props: Props): JSX.Element; + export default function IconWordWrap(props: Props): ReactNode; } declare module '@theme/Icon/Socials/Twitter' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'svg'> {} - export default function Twitter(props: Props): JSX.Element; + export default function Twitter(props: Props): ReactNode; } declare module '@theme/Icon/Socials/GitHub' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'svg'> {} - export default function Github(props: Props): JSX.Element; + export default function Github(props: Props): ReactNode; } declare module '@theme/Icon/Socials/X' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'svg'> {} - export default function X(props: Props): JSX.Element; + export default function X(props: Props): ReactNode; } declare module '@theme/Icon/Socials/LinkedIn' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'svg'> {} - export default function LinkedIn(props: Props): JSX.Element; + export default function LinkedIn(props: Props): ReactNode; } declare module '@theme/Icon/Socials/Default' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'svg'> {} - export default function DefaultSocialIcon(props: Props): JSX.Element; + export default function DefaultSocialIcon(props: Props): ReactNode; } declare module '@theme/Icon/Socials/StackOverflow' { - import type {ComponentProps} from 'react'; + import type {ComponentProps, ReactNode} from 'react'; export interface Props extends ComponentProps<'svg'> {} - export default function StackOverflow(props: Props): JSX.Element; + export default function StackOverflow(props: Props): ReactNode; } declare module '@theme/TagsListByLetter' { + import type {ReactNode} from 'react'; import type {TagsListItem} from '@docusaurus/utils'; export interface Props { readonly tags: readonly TagsListItem[]; } - export default function TagsListByLetter(props: Props): JSX.Element; + export default function TagsListByLetter(props: Props): ReactNode; } declare module '@theme/TagsListInline' { + import type {ReactNode} from 'react'; import type {Tag} from '@docusaurus/utils'; export interface Props { readonly tags: readonly Tag[]; } - export default function TagsListInline(props: Props): JSX.Element; + export default function TagsListInline(props: Props): ReactNode; } declare module '@theme/Tag' { + import type {ReactNode} from 'react'; import type {TagsListItem} from '@docusaurus/utils'; import type {Optional} from 'utility-types'; export interface Props extends Optional {} - export default function Tag(props: Props): JSX.Element; + export default function Tag(props: Props): ReactNode; } declare module '@theme/ContentVisibility' { + import type {ReactNode} from 'react'; + export interface Props { readonly metadata: { // the visibility metadata our 3 content plugins share in common @@ -1611,23 +1749,27 @@ declare module '@theme/ContentVisibility' { }; } - export default function ContentVisibility(props: Props): JSX.Element; + export default function ContentVisibility(props: Props): ReactNode; } declare module '@theme/ContentVisibility/Unlisted' { + import type {ReactNode} from 'react'; + export interface Props { className?: string; } - export default function Unlisted(props: Props): JSX.Element; + export default function Unlisted(props: Props): ReactNode; } declare module '@theme/ContentVisibility/Draft' { + import type {ReactNode} from 'react'; + export interface Props { className?: string; } - export default function Draft(props: Props): JSX.Element; + export default function Draft(props: Props): ReactNode; } declare module '@theme/prism-include-languages' { @@ -1639,5 +1781,7 @@ declare module '@theme/prism-include-languages' { } declare module '@theme/DocBreadcrumbs/Items/Home' { - export default function HomeBreadcrumbItem(): JSX.Element; + import type {ReactNode} from 'react'; + + export default function HomeBreadcrumbItem(): ReactNode; } diff --git a/packages/docusaurus-theme-classic/src/theme/Admonition/Icon/Danger.tsx b/packages/docusaurus-theme-classic/src/theme/Admonition/Icon/Danger.tsx index 90d4a5515f..5ef416dc58 100644 --- a/packages/docusaurus-theme-classic/src/theme/Admonition/Icon/Danger.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Admonition/Icon/Danger.tsx @@ -5,10 +5,10 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import type {Props} from '@theme/Admonition/Icon/Danger'; -export default function AdmonitionIconDanger(props: Props): JSX.Element { +export default function AdmonitionIconDanger(props: Props): ReactNode { return ( ) { ) : null; } -export default function AdmonitionLayout(props: Props): JSX.Element { +export default function AdmonitionLayout(props: Props): ReactNode { const {type, icon, title, children, className} = props; return ( diff --git a/packages/docusaurus-theme-classic/src/theme/Admonition/Type/Caution.tsx b/packages/docusaurus-theme-classic/src/theme/Admonition/Type/Caution.tsx index 35e6a19e81..48ac08878d 100644 --- a/packages/docusaurus-theme-classic/src/theme/Admonition/Type/Caution.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Admonition/Type/Caution.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import clsx from 'clsx'; import Translate from '@docusaurus/Translate'; import type {Props} from '@theme/Admonition/Type/Caution'; @@ -27,7 +27,7 @@ const defaultProps = { // TODO remove before v4: Caution replaced by Warning // see https://github.com/facebook/docusaurus/issues/7558 -export default function AdmonitionTypeCaution(props: Props): JSX.Element { +export default function AdmonitionTypeCaution(props: Props): ReactNode { return ( { return AdmonitionTypes.info!; } -export default function Admonition(unprocessedProps: Props): JSX.Element { +export default function Admonition(unprocessedProps: Props): ReactNode { const props = processAdmonitionProps(unprocessedProps); const AdmonitionTypeComponent = getAdmonitionTypeComponent(props.type); return ; diff --git a/packages/docusaurus-theme-classic/src/theme/AnnouncementBar/CloseButton/index.tsx b/packages/docusaurus-theme-classic/src/theme/AnnouncementBar/CloseButton/index.tsx index 5ae3135bf9..6fde5e09ac 100644 --- a/packages/docusaurus-theme-classic/src/theme/AnnouncementBar/CloseButton/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/AnnouncementBar/CloseButton/index.tsx @@ -5,16 +5,14 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import clsx from 'clsx'; import {translate} from '@docusaurus/Translate'; import IconClose from '@theme/Icon/Close'; import type {Props} from '@theme/AnnouncementBar/CloseButton'; import styles from './styles.module.css'; -export default function AnnouncementBarCloseButton( - props: Props, -): JSX.Element | null { +export default function AnnouncementBarCloseButton(props: Props): ReactNode { return ( diff --git a/packages/docusaurus-theme-classic/src/theme/BlogListPage/index.tsx b/packages/docusaurus-theme-classic/src/theme/BlogListPage/index.tsx index 563327a8a2..270773327f 100644 --- a/packages/docusaurus-theme-classic/src/theme/BlogListPage/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/BlogListPage/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import clsx from 'clsx'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; @@ -21,7 +21,7 @@ import type {Props} from '@theme/BlogListPage'; import BlogPostItems from '@theme/BlogPostItems'; import BlogListPageStructuredData from '@theme/BlogListPage/StructuredData'; -function BlogListPageMetadata(props: Props): JSX.Element { +function BlogListPageMetadata(props: Props): ReactNode { const {metadata} = props; const { siteConfig: {title: siteTitle}, @@ -37,7 +37,7 @@ function BlogListPageMetadata(props: Props): JSX.Element { ); } -function BlogListPageContent(props: Props): JSX.Element { +function BlogListPageContent(props: Props): ReactNode { const {metadata, items, sidebar} = props; return ( @@ -47,7 +47,7 @@ function BlogListPageContent(props: Props): JSX.Element { ); } -export default function BlogListPage(props: Props): JSX.Element { +export default function BlogListPage(props: Props): ReactNode { return ( {children}; } diff --git a/packages/docusaurus-theme-classic/src/theme/BlogPostItem/Content/index.tsx b/packages/docusaurus-theme-classic/src/theme/BlogPostItem/Content/index.tsx index 5f0bc798c1..dbc6f4db00 100644 --- a/packages/docusaurus-theme-classic/src/theme/BlogPostItem/Content/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/BlogPostItem/Content/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import clsx from 'clsx'; import {blogPostContainerID} from '@docusaurus/utils-common'; import {useBlogPost} from '@docusaurus/plugin-content-blog/client'; @@ -15,7 +15,7 @@ import type {Props} from '@theme/BlogPostItem/Content'; export default function BlogPostItemContent({ children, className, -}: Props): JSX.Element { +}: Props): ReactNode { const {isBlogPostPage} = useBlogPost(); return (
{' · '}; } -export default function BlogPostItemHeaderInfo({ - className, -}: Props): JSX.Element { +export default function BlogPostItemHeaderInfo({className}: Props): ReactNode { const {metadata} = useBlogPost(); const {date, readingTime} = metadata; diff --git a/packages/docusaurus-theme-classic/src/theme/BlogPostItem/Header/Title/index.tsx b/packages/docusaurus-theme-classic/src/theme/BlogPostItem/Header/Title/index.tsx index dc799713a3..0c604143c1 100644 --- a/packages/docusaurus-theme-classic/src/theme/BlogPostItem/Header/Title/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/BlogPostItem/Header/Title/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import clsx from 'clsx'; import Link from '@docusaurus/Link'; import {useBlogPost} from '@docusaurus/plugin-content-blog/client'; @@ -13,9 +13,7 @@ import type {Props} from '@theme/BlogPostItem/Header/Title'; import styles from './styles.module.css'; -export default function BlogPostItemHeaderTitle({ - className, -}: Props): JSX.Element { +export default function BlogPostItemHeaderTitle({className}: Props): ReactNode { const {metadata, isBlogPostPage} = useBlogPost(); const {permalink, title} = metadata; const TitleHeading = isBlogPostPage ? 'h1' : 'h2'; diff --git a/packages/docusaurus-theme-classic/src/theme/BlogPostItem/Header/index.tsx b/packages/docusaurus-theme-classic/src/theme/BlogPostItem/Header/index.tsx index 77acbaf563..0ff0ccb04c 100644 --- a/packages/docusaurus-theme-classic/src/theme/BlogPostItem/Header/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/BlogPostItem/Header/index.tsx @@ -5,12 +5,12 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import BlogPostItemHeaderTitle from '@theme/BlogPostItem/Header/Title'; import BlogPostItemHeaderInfo from '@theme/BlogPostItem/Header/Info'; import BlogPostItemHeaderAuthors from '@theme/BlogPostItem/Header/Authors'; -export default function BlogPostItemHeader(): JSX.Element { +export default function BlogPostItemHeader(): ReactNode { return (
diff --git a/packages/docusaurus-theme-classic/src/theme/BlogPostItem/index.tsx b/packages/docusaurus-theme-classic/src/theme/BlogPostItem/index.tsx index be86b2816f..cbdcaf443a 100644 --- a/packages/docusaurus-theme-classic/src/theme/BlogPostItem/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/BlogPostItem/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import clsx from 'clsx'; import {useBlogPost} from '@docusaurus/plugin-content-blog/client'; import BlogPostItemContainer from '@theme/BlogPostItem/Container'; @@ -20,10 +20,7 @@ function useContainerClassName() { return !isBlogPostPage ? 'margin-bottom--xl' : undefined; } -export default function BlogPostItem({ - children, - className, -}: Props): JSX.Element { +export default function BlogPostItem({children, className}: Props): ReactNode { const containerClassName = useContainerClassName(); return ( diff --git a/packages/docusaurus-theme-classic/src/theme/BlogPostItems/index.tsx b/packages/docusaurus-theme-classic/src/theme/BlogPostItems/index.tsx index 60ad9a06a3..8e97348b45 100644 --- a/packages/docusaurus-theme-classic/src/theme/BlogPostItems/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/BlogPostItems/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import {BlogPostProvider} from '@docusaurus/plugin-content-blog/client'; import BlogPostItem from '@theme/BlogPostItem'; import type {Props} from '@theme/BlogPostItems'; @@ -13,7 +13,7 @@ import type {Props} from '@theme/BlogPostItems'; export default function BlogPostItems({ items, component: BlogPostItemComponent = BlogPostItem, -}: Props): JSX.Element { +}: Props): ReactNode { return ( <> {items.map(({content: BlogPostContent}) => ( diff --git a/packages/docusaurus-theme-classic/src/theme/BlogPostPage/Metadata/index.tsx b/packages/docusaurus-theme-classic/src/theme/BlogPostPage/Metadata/index.tsx index 2eb2eeb33b..abe5d74a12 100644 --- a/packages/docusaurus-theme-classic/src/theme/BlogPostPage/Metadata/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/BlogPostPage/Metadata/index.tsx @@ -5,11 +5,11 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import {PageMetadata} from '@docusaurus/theme-common'; import {useBlogPost} from '@docusaurus/plugin-content-blog/client'; -export default function BlogPostPageMetadata(): JSX.Element { +export default function BlogPostPageMetadata(): ReactNode { const {assets, metadata} = useBlogPost(); const {title, description, date, tags, authors, frontMatter} = metadata; diff --git a/packages/docusaurus-theme-classic/src/theme/BlogPostPage/StructuredData/index.tsx b/packages/docusaurus-theme-classic/src/theme/BlogPostPage/StructuredData/index.tsx index ef7df81fd4..1f8aabc9a3 100644 --- a/packages/docusaurus-theme-classic/src/theme/BlogPostPage/StructuredData/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/BlogPostPage/StructuredData/index.tsx @@ -5,11 +5,11 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import Head from '@docusaurus/Head'; import {useBlogPostStructuredData} from '@docusaurus/plugin-content-blog/client'; -export default function BlogPostStructuredData(): JSX.Element { +export default function BlogPostStructuredData(): ReactNode { const structuredData = useBlogPostStructuredData(); return ( diff --git a/packages/docusaurus-theme-classic/src/theme/BlogPostPage/index.tsx b/packages/docusaurus-theme-classic/src/theme/BlogPostPage/index.tsx index 07c96d47a5..28f37a421b 100644 --- a/packages/docusaurus-theme-classic/src/theme/BlogPostPage/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/BlogPostPage/index.tsx @@ -28,7 +28,7 @@ function BlogPostPageContent({ }: { sidebar: BlogSidebar; children: ReactNode; -}): JSX.Element { +}): ReactNode { const {metadata, toc} = useBlogPost(); const {nextItem, prevItem, frontMatter} = metadata; const { @@ -59,7 +59,7 @@ function BlogPostPageContent({ ); } -export default function BlogPostPage(props: Props): JSX.Element { +export default function BlogPostPage(props: Props): ReactNode { const BlogPostContent = props.content; return ( diff --git a/packages/docusaurus-theme-classic/src/theme/BlogPostPaginator/index.tsx b/packages/docusaurus-theme-classic/src/theme/BlogPostPaginator/index.tsx index 22c7bcd12c..bf49ec1446 100644 --- a/packages/docusaurus-theme-classic/src/theme/BlogPostPaginator/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/BlogPostPaginator/index.tsx @@ -5,12 +5,12 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import Translate, {translate} from '@docusaurus/Translate'; import PaginatorNavLink from '@theme/PaginatorNavLink'; import type {Props} from '@theme/BlogPostPaginator'; -export default function BlogPostPaginator(props: Props): JSX.Element { +export default function BlogPostPaginator(props: Props): ReactNode { const {nextItem, prevItem} = props; return ( diff --git a/packages/docusaurus-theme-classic/src/theme/BlogSidebar/Mobile/index.tsx b/packages/docusaurus-theme-classic/src/theme/BlogSidebar/Mobile/index.tsx index 4e50a9c32d..27549b06c6 100644 --- a/packages/docusaurus-theme-classic/src/theme/BlogSidebar/Mobile/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/BlogSidebar/Mobile/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React, {memo} from 'react'; +import React, {memo, type ReactNode} from 'react'; import { useVisibleBlogSidebarItems, BlogSidebarItemList, @@ -29,7 +29,7 @@ const ListComponent: BlogSidebarContentProps['ListComponent'] = ({items}) => { ); }; -function BlogSidebarMobileSecondaryMenu({sidebar}: Props): JSX.Element { +function BlogSidebarMobileSecondaryMenu({sidebar}: Props): ReactNode { const items = useVisibleBlogSidebarItems(sidebar.items); return ( @@ -38,7 +38,7 @@ function BlogTagsPostsPageContent({ items, sidebar, listMetadata, -}: Props): JSX.Element { +}: Props): ReactNode { const title = useBlogTagsPostsPageTitle(tag); return ( @@ -59,7 +59,7 @@ function BlogTagsPostsPageContent({ ); } -export default function BlogTagsPostsPage(props: Props): JSX.Element { +export default function BlogTagsPostsPage(props: Props): ReactNode { return ( ({ as: As, ...props -}: {as: T} & ComponentProps): JSX.Element { +}: {as: T} & ComponentProps): ReactNode { const prismTheme = usePrismTheme(); const prismCssVariables = getPrismCssVariables(prismTheme); return ( diff --git a/packages/docusaurus-theme-classic/src/theme/CodeBlock/Content/Element.tsx b/packages/docusaurus-theme-classic/src/theme/CodeBlock/Content/Element.tsx index a31cd85731..a856aee703 100644 --- a/packages/docusaurus-theme-classic/src/theme/CodeBlock/Content/Element.tsx +++ b/packages/docusaurus-theme-classic/src/theme/CodeBlock/Content/Element.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import clsx from 'clsx'; import Container from '@theme/CodeBlock/Container'; import type {Props} from '@theme/CodeBlock/Content/Element'; @@ -15,10 +15,7 @@ import styles from './styles.module.css'; //
 tags in markdown map to CodeBlocks. They may contain JSX children. When
 // the children is not a simple string, we just return a styled block without
 // actually highlighting.
-export default function CodeBlockJSX({
-  children,
-  className,
-}: Props): JSX.Element {
+export default function CodeBlockJSX({children, className}: Props): ReactNode {
   return (
     (undefined);
   const handleCopyCode = useCallback(() => {
diff --git a/packages/docusaurus-theme-classic/src/theme/CodeBlock/Line/index.tsx b/packages/docusaurus-theme-classic/src/theme/CodeBlock/Line/index.tsx
index 0bbc1c3635..c6352efc69 100644
--- a/packages/docusaurus-theme-classic/src/theme/CodeBlock/Line/index.tsx
+++ b/packages/docusaurus-theme-classic/src/theme/CodeBlock/Line/index.tsx
@@ -5,7 +5,7 @@
  * LICENSE file in the root directory of this source tree.
  */
 
-import React from 'react';
+import React, {type ReactNode} from 'react';
 import clsx from 'clsx';
 import type {Props} from '@theme/CodeBlock/Line';
 
@@ -17,7 +17,7 @@ export default function CodeBlockLine({
   showLineNumbers,
   getLineProps,
   getTokenProps,
-}: Props): JSX.Element {
+}: Props): ReactNode {
   if (line.length === 1 && line[0]!.content === '\n') {
     line[0]!.content = '';
   }
diff --git a/packages/docusaurus-theme-classic/src/theme/CodeBlock/WordWrapButton/index.tsx b/packages/docusaurus-theme-classic/src/theme/CodeBlock/WordWrapButton/index.tsx
index 0adb3d8d4b..eddb120c9b 100644
--- a/packages/docusaurus-theme-classic/src/theme/CodeBlock/WordWrapButton/index.tsx
+++ b/packages/docusaurus-theme-classic/src/theme/CodeBlock/WordWrapButton/index.tsx
@@ -5,7 +5,7 @@
  * LICENSE file in the root directory of this source tree.
  */
 
-import React from 'react';
+import React, {type ReactNode} from 'react';
 import clsx from 'clsx';
 import {translate} from '@docusaurus/Translate';
 import type {Props} from '@theme/CodeBlock/WordWrapButton';
@@ -17,7 +17,7 @@ export default function WordWrapButton({
   className,
   onClick,
   isEnabled,
-}: Props): JSX.Element | null {
+}: Props): ReactNode {
   const title = translate({
     id: 'theme.CodeBlock.wordWrapToggle',
     message: 'Toggle word wrap',
diff --git a/packages/docusaurus-theme-classic/src/theme/CodeBlock/index.tsx b/packages/docusaurus-theme-classic/src/theme/CodeBlock/index.tsx
index e672185a51..e94add8e12 100644
--- a/packages/docusaurus-theme-classic/src/theme/CodeBlock/index.tsx
+++ b/packages/docusaurus-theme-classic/src/theme/CodeBlock/index.tsx
@@ -28,7 +28,7 @@ function maybeStringifyChildren(children: ReactNode): ReactNode {
 export default function CodeBlock({
   children: rawChildren,
   ...props
-}: Props): JSX.Element {
+}: Props): ReactNode {
   // The Prism theme on SSR is always the default theme but the site theme can
   // be in a different mode. React hydration doesn't update DOM styles that come
   // from SSR. Hence force a re-render after mounting to apply the current
diff --git a/packages/docusaurus-theme-classic/src/theme/CodeInline/index.tsx b/packages/docusaurus-theme-classic/src/theme/CodeInline/index.tsx
index 066ab2e61c..3fbff5700a 100644
--- a/packages/docusaurus-theme-classic/src/theme/CodeInline/index.tsx
+++ b/packages/docusaurus-theme-classic/src/theme/CodeInline/index.tsx
@@ -5,12 +5,12 @@
  * LICENSE file in the root directory of this source tree.
  */
 
-import React from 'react';
+import React, {type ReactNode} from 'react';
 import type {Props} from '@theme/CodeInline';
 
 // Simple component used to render inline code blocks
 // its purpose is to be swizzled and customized
 // MDX 1 used to have a inlineCode comp, see https://mdxjs.com/migrating/v2/
-export default function CodeInline(props: Props): JSX.Element {
+export default function CodeInline(props: Props): ReactNode {
   return ;
 }
diff --git a/packages/docusaurus-theme-classic/src/theme/ColorModeToggle/index.tsx b/packages/docusaurus-theme-classic/src/theme/ColorModeToggle/index.tsx
index 5e0f020ce5..9be18f739c 100644
--- a/packages/docusaurus-theme-classic/src/theme/ColorModeToggle/index.tsx
+++ b/packages/docusaurus-theme-classic/src/theme/ColorModeToggle/index.tsx
@@ -5,7 +5,7 @@
  * LICENSE file in the root directory of this source tree.
  */
 
-import React from 'react';
+import React, {type ReactNode} from 'react';
 import clsx from 'clsx';
 import useIsBrowser from '@docusaurus/useIsBrowser';
 import {translate} from '@docusaurus/Translate';
@@ -20,7 +20,7 @@ function ColorModeToggle({
   buttonClassName,
   value,
   onChange,
-}: Props): JSX.Element {
+}: Props): ReactNode {
   const isBrowser = useIsBrowser();
 
   const title = translate(
diff --git a/packages/docusaurus-theme-classic/src/theme/ContentVisibility/Draft/index.tsx b/packages/docusaurus-theme-classic/src/theme/ContentVisibility/Draft/index.tsx
index 6595e2295f..63ce3ea1b6 100644
--- a/packages/docusaurus-theme-classic/src/theme/ContentVisibility/Draft/index.tsx
+++ b/packages/docusaurus-theme-classic/src/theme/ContentVisibility/Draft/index.tsx
@@ -5,7 +5,7 @@
  * LICENSE file in the root directory of this source tree.
  */
 
-import React from 'react';
+import React, {type ReactNode} from 'react';
 import clsx from 'clsx';
 import {
   ThemeClassNames,
@@ -15,7 +15,7 @@ import {
 import Admonition from '@theme/Admonition';
 import type {Props} from '@theme/ContentVisibility/Draft';
 
-export default function Draft({className}: Props): JSX.Element | null {
+export default function Draft({className}: Props): ReactNode {
   return (
     
       {/*
diff --git a/packages/docusaurus-theme-classic/src/theme/ContentVisibility/index.tsx b/packages/docusaurus-theme-classic/src/theme/ContentVisibility/index.tsx
index f9c570e02c..0915c9e4e1 100644
--- a/packages/docusaurus-theme-classic/src/theme/ContentVisibility/index.tsx
+++ b/packages/docusaurus-theme-classic/src/theme/ContentVisibility/index.tsx
@@ -5,15 +5,13 @@
  * LICENSE file in the root directory of this source tree.
  */
 
-import React from 'react';
+import React, {type ReactNode} from 'react';
 
 import type {Props} from '@theme/ContentVisibility';
 import Draft from '@theme/ContentVisibility/Draft';
 import Unlisted from '@theme/ContentVisibility/Unlisted';
 
-export default function ContentVisibility({
-  metadata,
-}: Props): JSX.Element | null {
+export default function ContentVisibility({metadata}: Props): ReactNode {
   const {unlisted, frontMatter} = metadata;
   // Reading draft/unlisted status from frontMatter is useful to display
   // the banners in dev mode (in dev, metadata.unlisted is always false)
diff --git a/packages/docusaurus-theme-classic/src/theme/Details/index.tsx b/packages/docusaurus-theme-classic/src/theme/Details/index.tsx
index b6e7b06f6b..11da776988 100644
--- a/packages/docusaurus-theme-classic/src/theme/Details/index.tsx
+++ b/packages/docusaurus-theme-classic/src/theme/Details/index.tsx
@@ -5,7 +5,7 @@
  * LICENSE file in the root directory of this source tree.
  */
 
-import React from 'react';
+import React, {type ReactNode} from 'react';
 import clsx from 'clsx';
 import {Details as DetailsGeneric} from '@docusaurus/theme-common/Details';
 import type {Props} from '@theme/Details';
@@ -16,7 +16,7 @@ import styles from './styles.module.css';
 // alert classes?
 const InfimaClasses = 'alert alert--info';
 
-export default function Details({...props}: Props): JSX.Element {
+export default function Details({...props}: Props): ReactNode {
   return (
     
       ;
diff --git a/packages/docusaurus-theme-classic/src/theme/DocCardList/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocCardList/index.tsx
index 97b903c003..a45ee6e980 100644
--- a/packages/docusaurus-theme-classic/src/theme/DocCardList/index.tsx
+++ b/packages/docusaurus-theme-classic/src/theme/DocCardList/index.tsx
@@ -5,7 +5,7 @@
  * LICENSE file in the root directory of this source tree.
  */
 
-import React from 'react';
+import React, {type ReactNode} from 'react';
 import clsx from 'clsx';
 import {
   useCurrentSidebarCategory,
@@ -19,7 +19,7 @@ function DocCardListForCurrentSidebarCategory({className}: Props) {
   return ;
 }
 
-export default function DocCardList(props: Props): JSX.Element {
+export default function DocCardList(props: Props): ReactNode {
   const {items, className} = props;
   if (!items) {
     return ;
diff --git a/packages/docusaurus-theme-classic/src/theme/DocCategoryGeneratedIndexPage/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocCategoryGeneratedIndexPage/index.tsx
index 9fd576f536..901ce392ba 100644
--- a/packages/docusaurus-theme-classic/src/theme/DocCategoryGeneratedIndexPage/index.tsx
+++ b/packages/docusaurus-theme-classic/src/theme/DocCategoryGeneratedIndexPage/index.tsx
@@ -5,7 +5,7 @@
  * LICENSE file in the root directory of this source tree.
  */
 
-import React from 'react';
+import React, {type ReactNode} from 'react';
 import {PageMetadata} from '@docusaurus/theme-common';
 import {useCurrentSidebarCategory} from '@docusaurus/plugin-content-docs/client';
 import useBaseUrl from '@docusaurus/useBaseUrl';
@@ -21,7 +21,7 @@ import styles from './styles.module.css';
 
 function DocCategoryGeneratedIndexPageMetadata({
   categoryGeneratedIndex,
-}: Props): JSX.Element {
+}: Props): ReactNode {
   return (
     
@@ -63,9 +63,7 @@ function DocCategoryGeneratedIndexPageContent({
   );
 }
 
-export default function DocCategoryGeneratedIndexPage(
-  props: Props,
-): JSX.Element {
+export default function DocCategoryGeneratedIndexPage(props: Props): ReactNode {
   return (
     <>
       
diff --git a/packages/docusaurus-theme-classic/src/theme/DocItem/Content/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocItem/Content/index.tsx
index b1b36cb636..97aba92df5 100644
--- a/packages/docusaurus-theme-classic/src/theme/DocItem/Content/index.tsx
+++ b/packages/docusaurus-theme-classic/src/theme/DocItem/Content/index.tsx
@@ -5,7 +5,7 @@
  * LICENSE file in the root directory of this source tree.
  */
 
-import React from 'react';
+import React, {type ReactNode} from 'react';
 import clsx from 'clsx';
 import {ThemeClassNames} from '@docusaurus/theme-common';
 import {useDoc} from '@docusaurus/plugin-content-docs/client';
@@ -33,7 +33,7 @@ function useSyntheticTitle(): string | null {
   return metadata.title;
 }
 
-export default function DocItemContent({children}: Props): JSX.Element {
+export default function DocItemContent({children}: Props): ReactNode {
   const syntheticTitle = useSyntheticTitle();
   return (
     
diff --git a/packages/docusaurus-theme-classic/src/theme/DocItem/Footer/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocItem/Footer/index.tsx index 718aa5d450..e497c85c0c 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocItem/Footer/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocItem/Footer/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import clsx from 'clsx'; import {ThemeClassNames} from '@docusaurus/theme-common'; import {useDoc} from '@docusaurus/plugin-content-docs/client'; @@ -13,7 +13,7 @@ import TagsListInline from '@theme/TagsListInline'; import EditMetaRow from '@theme/EditMetaRow'; -export default function DocItemFooter(): JSX.Element | null { +export default function DocItemFooter(): ReactNode { const {metadata} = useDoc(); const {editUrl, lastUpdatedAt, lastUpdatedBy, tags} = metadata; diff --git a/packages/docusaurus-theme-classic/src/theme/DocItem/Layout/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocItem/Layout/index.tsx index 138b6ad45f..8322d71956 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocItem/Layout/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocItem/Layout/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import clsx from 'clsx'; import {useWindowSize} from '@docusaurus/theme-common'; import {useDoc} from '@docusaurus/plugin-content-docs/client'; @@ -46,7 +46,7 @@ function useDocTOC() { }; } -export default function DocItemLayout({children}: Props): JSX.Element { +export default function DocItemLayout({children}: Props): ReactNode { const docTOC = useDocTOC(); const {metadata} = useDoc(); return ( diff --git a/packages/docusaurus-theme-classic/src/theme/DocItem/Metadata/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocItem/Metadata/index.tsx index 3296fa7479..f0f22f1710 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocItem/Metadata/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocItem/Metadata/index.tsx @@ -5,11 +5,11 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import {PageMetadata} from '@docusaurus/theme-common'; import {useDoc} from '@docusaurus/plugin-content-docs/client'; -export default function DocItemMetadata(): JSX.Element { +export default function DocItemMetadata(): ReactNode { const {metadata, frontMatter, assets} = useDoc(); return ( should remain generic. * DocPaginator is used in non-docs contexts too: generated-index pages... */ -export default function DocItemPaginator(): JSX.Element { +export default function DocItemPaginator(): ReactNode { const {metadata} = useDoc(); return ; } diff --git a/packages/docusaurus-theme-classic/src/theme/DocItem/TOC/Desktop/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocItem/TOC/Desktop/index.tsx index a2d6438a61..827780f459 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocItem/TOC/Desktop/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocItem/TOC/Desktop/index.tsx @@ -5,13 +5,13 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import {ThemeClassNames} from '@docusaurus/theme-common'; import {useDoc} from '@docusaurus/plugin-content-docs/client'; import TOC from '@theme/TOC'; -export default function DocItemTOCDesktop(): JSX.Element { +export default function DocItemTOCDesktop(): ReactNode { const {toc, frontMatter} = useDoc(); return ( ; diff --git a/packages/docusaurus-theme-classic/src/theme/DocSidebarItems/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocSidebarItems/index.tsx index 792d589feb..d4531ac980 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocSidebarItems/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocSidebarItems/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React, {memo} from 'react'; +import React, {memo, type ReactNode} from 'react'; import { DocSidebarItemsExpandedStateProvider, useVisibleSidebarItems, @@ -14,7 +14,7 @@ import DocSidebarItem from '@theme/DocSidebarItem'; import type {Props} from '@theme/DocSidebarItems'; -function DocSidebarItems({items, ...props}: Props): JSX.Element { +function DocSidebarItems({items, ...props}: Props): ReactNode { const visibleItems = useVisibleSidebarItems(items, props.activePath); return ( diff --git a/packages/docusaurus-theme-classic/src/theme/DocTagDocListPage/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocTagDocListPage/index.tsx index 51b8c09077..42446de2b0 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocTagDocListPage/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocTagDocListPage/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import clsx from 'clsx'; import Link from '@docusaurus/Link'; import { @@ -50,7 +50,7 @@ function usePageTitle(props: Props): string { ); } -function DocItem({doc}: {doc: Props['tag']['items'][number]}): JSX.Element { +function DocItem({doc}: {doc: Props['tag']['items'][number]}): ReactNode { return (
@@ -64,7 +64,7 @@ function DocItem({doc}: {doc: Props['tag']['items'][number]}): JSX.Element { function DocTagDocListPageMetadata({ title, tag, -}: Props & {title: string}): JSX.Element { +}: Props & {title: string}): ReactNode { return ( <> @@ -76,7 +76,7 @@ function DocTagDocListPageMetadata({ function DocTagDocListPageContent({ tag, title, -}: Props & {title: string}): JSX.Element { +}: Props & {title: string}): ReactNode { return ( @@ -107,7 +107,7 @@ function DocTagDocListPageContent({ ); } -export default function DocTagDocListPage(props: Props): JSX.Element { +export default function DocTagDocListPage(props: Props): ReactNode { const title = usePageTitle(props); return ( <> diff --git a/packages/docusaurus-theme-classic/src/theme/DocTagsListPage/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocTagsListPage/index.tsx index 4a5af782c6..8197c1f409 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocTagsListPage/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocTagsListPage/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import clsx from 'clsx'; import { PageMetadata, @@ -18,9 +18,7 @@ import SearchMetadata from '@theme/SearchMetadata'; import type {Props} from '@theme/DocTagsListPage'; import Heading from '@theme/Heading'; -function DocTagsListPageMetadata({ - title, -}: Props & {title: string}): JSX.Element { +function DocTagsListPageMetadata({title}: Props & {title: string}): ReactNode { return ( <> @@ -32,7 +30,7 @@ function DocTagsListPageMetadata({ function DocTagsListPageContent({ tags, title, -}: Props & {title: string}): JSX.Element { +}: Props & {title: string}): ReactNode { return ( @@ -48,7 +46,7 @@ function DocTagsListPageContent({ ); } -export default function DocTagsListPage(props: Props): JSX.Element { +export default function DocTagsListPage(props: Props): ReactNode { const title = translateTagsPageTitle(); return ( <> diff --git a/packages/docusaurus-theme-classic/src/theme/DocVersionBadge/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocVersionBadge/index.tsx index b1c3731693..c2dd54546e 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocVersionBadge/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocVersionBadge/index.tsx @@ -5,16 +5,14 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import clsx from 'clsx'; import Translate from '@docusaurus/Translate'; import {ThemeClassNames} from '@docusaurus/theme-common'; import {useDocsVersion} from '@docusaurus/plugin-content-docs/client'; import type {Props} from '@theme/DocVersionBadge'; -export default function DocVersionBadge({ - className, -}: Props): JSX.Element | null { +export default function DocVersionBadge({className}: Props): ReactNode { const versionMetadata = useDocsVersion(); if (versionMetadata.badge) { return ( diff --git a/packages/docusaurus-theme-classic/src/theme/DocVersionBanner/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocVersionBanner/index.tsx index 723efbf29d..cc02411e08 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocVersionBanner/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocVersionBanner/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React, {type ComponentType} from 'react'; +import React, {type ComponentType, type ReactNode} from 'react'; import clsx from 'clsx'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import Link from '@docusaurus/Link'; @@ -121,7 +121,7 @@ function DocVersionBannerEnabled({ versionMetadata, }: Props & { versionMetadata: PropVersionMetadata; -}): JSX.Element { +}): ReactNode { const { siteConfig: {title: siteTitle}, } = useDocusaurusContext(); @@ -162,9 +162,7 @@ function DocVersionBannerEnabled({ ); } -export default function DocVersionBanner({ - className, -}: Props): JSX.Element | null { +export default function DocVersionBanner({className}: Props): ReactNode { const versionMetadata = useDocsVersion(); if (versionMetadata.banner) { return ( diff --git a/packages/docusaurus-theme-classic/src/theme/DocVersionRoot/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocVersionRoot/index.tsx index dcac550b5c..7e13cce3cb 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocVersionRoot/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocVersionRoot/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import {HtmlClassNameProvider, PageMetadata} from '@docusaurus/theme-common'; import { getDocsVersionSearchTag, @@ -16,7 +16,7 @@ import SearchMetadata from '@theme/SearchMetadata'; import type {Props} from '@theme/DocVersionRoot'; -function DocVersionRootMetadata(props: Props): JSX.Element { +function DocVersionRootMetadata(props: Props): ReactNode { const {version} = props; return ( <> @@ -31,7 +31,7 @@ function DocVersionRootMetadata(props: Props): JSX.Element { ); } -function DocVersionRootContent(props: Props): JSX.Element { +function DocVersionRootContent(props: Props): ReactNode { const {version, route} = props; return ( @@ -41,7 +41,7 @@ function DocVersionRootContent(props: Props): JSX.Element { ); } -export default function DocVersionRoot(props: Props): JSX.Element { +export default function DocVersionRoot(props: Props): ReactNode { return ( <> diff --git a/packages/docusaurus-theme-classic/src/theme/DocsRoot/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocsRoot/index.tsx index ea65d7414f..12f4a43557 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocsRoot/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocsRoot/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import clsx from 'clsx'; import {ThemeClassNames, HtmlClassNameProvider} from '@docusaurus/theme-common'; import renderRoutes from '@docusaurus/renderRoutes'; @@ -13,7 +13,7 @@ import Layout from '@theme/Layout'; import type {Props} from '@theme/DocVersionRoot'; -export default function DocsRoot(props: Props): JSX.Element { +export default function DocsRoot(props: Props): ReactNode { return ( {renderRoutes(props.route.routes!)} diff --git a/packages/docusaurus-theme-classic/src/theme/EditMetaRow/index.tsx b/packages/docusaurus-theme-classic/src/theme/EditMetaRow/index.tsx index c526138f9b..78d3206c2f 100644 --- a/packages/docusaurus-theme-classic/src/theme/EditMetaRow/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/EditMetaRow/index.tsx @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import clsx from 'clsx'; import EditThisPage from '@theme/EditThisPage'; import type {Props} from '@theme/EditMetaRow'; @@ -17,7 +17,7 @@ export default function EditMetaRow({ editUrl, lastUpdatedAt, lastUpdatedBy, -}: Props): JSX.Element { +}: Props): ReactNode { return (
{editUrl && }
diff --git a/packages/docusaurus-theme-classic/src/theme/EditThisPage/index.tsx b/packages/docusaurus-theme-classic/src/theme/EditThisPage/index.tsx index 1fbfb173ab..1d0e589349 100644 --- a/packages/docusaurus-theme-classic/src/theme/EditThisPage/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/EditThisPage/index.tsx @@ -5,14 +5,14 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import Translate from '@docusaurus/Translate'; import {ThemeClassNames} from '@docusaurus/theme-common'; import Link from '@docusaurus/Link'; import IconEdit from '@theme/Icon/Edit'; import type {Props} from '@theme/EditThisPage'; -export default function EditThisPage({editUrl}: Props): JSX.Element { +export default function EditThisPage({editUrl}: Props): ReactNode { return ( diff --git a/packages/docusaurus-theme-classic/src/theme/ErrorPageContent.tsx b/packages/docusaurus-theme-classic/src/theme/ErrorPageContent.tsx index b4134fa744..ba629d8c26 100644 --- a/packages/docusaurus-theme-classic/src/theme/ErrorPageContent.tsx +++ b/packages/docusaurus-theme-classic/src/theme/ErrorPageContent.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import Translate from '@docusaurus/Translate'; import { ErrorBoundaryError, @@ -14,10 +14,7 @@ import { import type {Props} from '@theme/Error'; import Heading from '@theme/Heading'; -export default function ErrorPageContent({ - error, - tryAgain, -}: Props): JSX.Element { +export default function ErrorPageContent({error, tryAgain}: Props): ReactNode { return (
diff --git a/packages/docusaurus-theme-classic/src/theme/Footer/Copyright/index.tsx b/packages/docusaurus-theme-classic/src/theme/Footer/Copyright/index.tsx index ab1657d978..85314920b9 100644 --- a/packages/docusaurus-theme-classic/src/theme/Footer/Copyright/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Footer/Copyright/index.tsx @@ -5,10 +5,10 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import type {Props} from '@theme/Footer/Copyright'; -export default function FooterCopyright({copyright}: Props): JSX.Element { +export default function FooterCopyright({copyright}: Props): ReactNode { return (
{columns.map((column, i) => ( diff --git a/packages/docusaurus-theme-classic/src/theme/Footer/Links/Simple/index.tsx b/packages/docusaurus-theme-classic/src/theme/Footer/Links/Simple/index.tsx index e14b77f1f3..fcb98352e6 100644 --- a/packages/docusaurus-theme-classic/src/theme/Footer/Links/Simple/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Footer/Links/Simple/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import LinkItem from '@theme/Footer/LinkItem'; import type {Props} from '@theme/Footer/Links/Simple'; @@ -26,7 +26,7 @@ function SimpleLinkItem({item}: {item: Props['links'][number]}) { ); } -export default function FooterLinksSimple({links}: Props): JSX.Element { +export default function FooterLinksSimple({links}: Props): ReactNode { return (
diff --git a/packages/docusaurus-theme-classic/src/theme/Footer/Links/index.tsx b/packages/docusaurus-theme-classic/src/theme/Footer/Links/index.tsx index a4b0f3354c..203f2b773f 100644 --- a/packages/docusaurus-theme-classic/src/theme/Footer/Links/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Footer/Links/index.tsx @@ -5,14 +5,14 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import {isMultiColumnFooterLinks} from '@docusaurus/theme-common'; import FooterLinksMultiColumn from '@theme/Footer/Links/MultiColumn'; import FooterLinksSimple from '@theme/Footer/Links/Simple'; import type {Props} from '@theme/Footer/Links'; -export default function FooterLinks({links}: Props): JSX.Element { +export default function FooterLinks({links}: Props): ReactNode { return isMultiColumnFooterLinks(links) ? ( ) : ( diff --git a/packages/docusaurus-theme-classic/src/theme/Footer/Logo/index.tsx b/packages/docusaurus-theme-classic/src/theme/Footer/Logo/index.tsx index ebd8e9fa32..85d7b0d670 100644 --- a/packages/docusaurus-theme-classic/src/theme/Footer/Logo/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Footer/Logo/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import clsx from 'clsx'; import Link from '@docusaurus/Link'; import {useBaseUrlUtils} from '@docusaurus/useBaseUrl'; @@ -32,7 +32,7 @@ function LogoImage({logo}: Props) { ); } -export default function FooterLogo({logo}: Props): JSX.Element { +export default function FooterLogo({logo}: Props): ReactNode { return logo.href ? ( diff --git a/packages/docusaurus-theme-classic/src/theme/Icon/Close/index.tsx b/packages/docusaurus-theme-classic/src/theme/Icon/Close/index.tsx index 45dee06185..3858c40dfb 100644 --- a/packages/docusaurus-theme-classic/src/theme/Icon/Close/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Icon/Close/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import type {Props} from '@theme/Icon/Close'; export default function IconClose({ @@ -15,7 +15,7 @@ export default function IconClose({ strokeWidth = 1.2, className, ...restProps -}: Props): JSX.Element { +}: Props): ReactNode { return ( diff --git a/packages/docusaurus-theme-classic/src/theme/Icon/Copy/index.tsx b/packages/docusaurus-theme-classic/src/theme/Icon/Copy/index.tsx index 9636ea9a14..87f954403e 100644 --- a/packages/docusaurus-theme-classic/src/theme/Icon/Copy/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Icon/Copy/index.tsx @@ -5,10 +5,10 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import type {Props} from '@theme/Icon/Copy'; -export default function IconCopy(props: Props): JSX.Element { +export default function IconCopy(props: Props): ReactNode { return ( ): JSX.Element { +function DefaultSocial(props: SVGProps): ReactNode { return ( ): JSX.Element { +function GitHub(props: SVGProps): ReactNode { return ( ): JSX.Element { +function LinkedIn(props: SVGProps): ReactNode { return ( ): JSX.Element { +function StackOverflow(props: SVGProps): ReactNode { return ( ): JSX.Element { +function Twitter(props: SVGProps): ReactNode { return ( ): JSX.Element { +function X(props: SVGProps): ReactNode { return ( {children}; } diff --git a/packages/docusaurus-theme-classic/src/theme/Layout/index.tsx b/packages/docusaurus-theme-classic/src/theme/Layout/index.tsx index cf46036476..c51cbcc36d 100644 --- a/packages/docusaurus-theme-classic/src/theme/Layout/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Layout/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import clsx from 'clsx'; import ErrorBoundary from '@docusaurus/ErrorBoundary'; import { @@ -23,7 +23,7 @@ import ErrorPageContent from '@theme/ErrorPageContent'; import type {Props} from '@theme/Layout'; import styles from './styles.module.css'; -export default function Layout(props: Props): JSX.Element { +export default function Layout(props: Props): ReactNode { const { children, noFooter, diff --git a/packages/docusaurus-theme-classic/src/theme/Logo/index.tsx b/packages/docusaurus-theme-classic/src/theme/Logo/index.tsx index 56b695a0a8..096541164c 100644 --- a/packages/docusaurus-theme-classic/src/theme/Logo/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Logo/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import Link from '@docusaurus/Link'; import useBaseUrl from '@docusaurus/useBaseUrl'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; @@ -46,7 +46,7 @@ function LogoThemedImage({ ); } -export default function Logo(props: Props): JSX.Element { +export default function Logo(props: Props): ReactNode { const { siteConfig: {title}, } = useDocusaurusContext(); diff --git a/packages/docusaurus-theme-classic/src/theme/MDXComponents/A.tsx b/packages/docusaurus-theme-classic/src/theme/MDXComponents/A.tsx index 9ee8333e6c..75fe616e66 100644 --- a/packages/docusaurus-theme-classic/src/theme/MDXComponents/A.tsx +++ b/packages/docusaurus-theme-classic/src/theme/MDXComponents/A.tsx @@ -5,10 +5,10 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import Link from '@docusaurus/Link'; import type {Props} from '@theme/MDXComponents/A'; -export default function MDXA(props: Props): JSX.Element { +export default function MDXA(props: Props): ReactNode { return ; } diff --git a/packages/docusaurus-theme-classic/src/theme/MDXComponents/Code.tsx b/packages/docusaurus-theme-classic/src/theme/MDXComponents/Code.tsx index c666174b9c..c97949c592 100644 --- a/packages/docusaurus-theme-classic/src/theme/MDXComponents/Code.tsx +++ b/packages/docusaurus-theme-classic/src/theme/MDXComponents/Code.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import type {ComponentProps} from 'react'; +import type {ComponentProps, ReactNode} from 'react'; import React from 'react'; import CodeBlock from '@theme/CodeBlock'; import CodeInline from '@theme/CodeInline'; @@ -22,7 +22,7 @@ function shouldBeInline(props: Props) { ); } -export default function MDXCode(props: Props): JSX.Element { +export default function MDXCode(props: Props): ReactNode { return shouldBeInline(props) ? ( ) : ( diff --git a/packages/docusaurus-theme-classic/src/theme/MDXComponents/Details.tsx b/packages/docusaurus-theme-classic/src/theme/MDXComponents/Details.tsx index 9b90d4cafb..946aa07bb6 100644 --- a/packages/docusaurus-theme-classic/src/theme/MDXComponents/Details.tsx +++ b/packages/docusaurus-theme-classic/src/theme/MDXComponents/Details.tsx @@ -5,11 +5,15 @@ * LICENSE file in the root directory of this source tree. */ -import React, {type ComponentProps, type ReactElement} from 'react'; +import React, { + type ComponentProps, + type ReactElement, + type ReactNode, +} from 'react'; import Details from '@theme/Details'; import type {Props} from '@theme/MDXComponents/Details'; -export default function MDXDetails(props: Props): JSX.Element { +export default function MDXDetails(props: Props): ReactNode { const items = React.Children.toArray(props.children); // Split summary item from the rest to pass it as a separate prop to the // Details theme component diff --git a/packages/docusaurus-theme-classic/src/theme/MDXComponents/Heading.tsx b/packages/docusaurus-theme-classic/src/theme/MDXComponents/Heading.tsx index 2b6c433bc5..ecd3612f84 100644 --- a/packages/docusaurus-theme-classic/src/theme/MDXComponents/Heading.tsx +++ b/packages/docusaurus-theme-classic/src/theme/MDXComponents/Heading.tsx @@ -5,10 +5,10 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import Heading from '@theme/Heading'; import type {Props} from '@theme/MDXComponents/Heading'; -export default function MDXHeading(props: Props): JSX.Element { +export default function MDXHeading(props: Props): ReactNode { return ; } diff --git a/packages/docusaurus-theme-classic/src/theme/MDXComponents/Img/index.tsx b/packages/docusaurus-theme-classic/src/theme/MDXComponents/Img/index.tsx index 6eea009d0e..a0e6c3bd84 100644 --- a/packages/docusaurus-theme-classic/src/theme/MDXComponents/Img/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/MDXComponents/Img/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import clsx from 'clsx'; import type {Props} from '@theme/MDXComponents/Img'; @@ -15,7 +15,7 @@ function transformImgClassName(className?: string): string { return clsx(className, styles.img); } -export default function MDXImg(props: Props): JSX.Element { +export default function MDXImg(props: Props): ReactNode { return ( // eslint-disable-next-line jsx-a11y/alt-text ; } diff --git a/packages/docusaurus-theme-classic/src/theme/MDXContent/index.tsx b/packages/docusaurus-theme-classic/src/theme/MDXContent/index.tsx index ad70107193..3b2b7abe75 100644 --- a/packages/docusaurus-theme-classic/src/theme/MDXContent/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/MDXContent/index.tsx @@ -5,11 +5,11 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import {MDXProvider} from '@mdx-js/react'; import MDXComponents from '@theme/MDXComponents'; import type {Props} from '@theme/MDXContent'; -export default function MDXContent({children}: Props): JSX.Element { +export default function MDXContent({children}: Props): ReactNode { return {children}; } diff --git a/packages/docusaurus-theme-classic/src/theme/MDXPage/index.tsx b/packages/docusaurus-theme-classic/src/theme/MDXPage/index.tsx index 737c0bccbd..a862907dc8 100644 --- a/packages/docusaurus-theme-classic/src/theme/MDXPage/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/MDXPage/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import clsx from 'clsx'; import { PageMetadata, @@ -21,7 +21,7 @@ import type {Props} from '@theme/MDXPage'; import EditMetaRow from '@theme/EditMetaRow'; import styles from './styles.module.css'; -export default function MDXPage(props: Props): JSX.Element { +export default function MDXPage(props: Props): ReactNode { const {content: MDXPageContent} = props; const {metadata, assets} = MDXPageContent; const { diff --git a/packages/docusaurus-theme-classic/src/theme/Navbar/ColorModeToggle/index.tsx b/packages/docusaurus-theme-classic/src/theme/Navbar/ColorModeToggle/index.tsx index 8e313b3a19..0108a20e9d 100644 --- a/packages/docusaurus-theme-classic/src/theme/Navbar/ColorModeToggle/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Navbar/ColorModeToggle/index.tsx @@ -5,15 +5,13 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import {useColorMode, useThemeConfig} from '@docusaurus/theme-common'; import ColorModeToggle from '@theme/ColorModeToggle'; import type {Props} from '@theme/Navbar/ColorModeToggle'; import styles from './styles.module.css'; -export default function NavbarColorModeToggle({ - className, -}: Props): JSX.Element | null { +export default function NavbarColorModeToggle({className}: Props): ReactNode { const navbarStyle = useThemeConfig().navbar.style; const disabled = useThemeConfig().colorMode.disableSwitch; const {colorMode, setColorMode} = useColorMode(); diff --git a/packages/docusaurus-theme-classic/src/theme/Navbar/Content/index.tsx b/packages/docusaurus-theme-classic/src/theme/Navbar/Content/index.tsx index ddc0972c67..b4fcc735ab 100644 --- a/packages/docusaurus-theme-classic/src/theme/Navbar/Content/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Navbar/Content/index.tsx @@ -25,7 +25,7 @@ function useNavbarItems() { return useThemeConfig().navbar.items as NavbarItemConfig[]; } -function NavbarItems({items}: {items: NavbarItemConfig[]}): JSX.Element { +function NavbarItems({items}: {items: NavbarItemConfig[]}): ReactNode { return ( <> {items.map((item, i) => ( @@ -61,7 +61,7 @@ function NavbarContentLayout({ ); } -export default function NavbarContent(): JSX.Element { +export default function NavbarContent(): ReactNode { const mobileSidebar = useNavbarMobileSidebar(); const items = useNavbarItems(); diff --git a/packages/docusaurus-theme-classic/src/theme/Navbar/Layout/index.tsx b/packages/docusaurus-theme-classic/src/theme/Navbar/Layout/index.tsx index 6632be07a4..7ec271d9df 100644 --- a/packages/docusaurus-theme-classic/src/theme/Navbar/Layout/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Navbar/Layout/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React, {type ComponentProps} from 'react'; +import React, {type ComponentProps, type ReactNode} from 'react'; import clsx from 'clsx'; import {useThemeConfig} from '@docusaurus/theme-common'; import { @@ -28,7 +28,7 @@ function NavbarBackdrop(props: ComponentProps<'div'>) { ); } -export default function NavbarLayout({children}: Props): JSX.Element { +export default function NavbarLayout({children}: Props): ReactNode { const { navbar: {hideOnScroll, style}, } = useThemeConfig(); diff --git a/packages/docusaurus-theme-classic/src/theme/Navbar/Logo/index.tsx b/packages/docusaurus-theme-classic/src/theme/Navbar/Logo/index.tsx index 9c04ea9be7..81e0cfd9f8 100644 --- a/packages/docusaurus-theme-classic/src/theme/Navbar/Logo/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Navbar/Logo/index.tsx @@ -5,10 +5,10 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import Logo from '@theme/Logo'; -export default function NavbarLogo(): JSX.Element { +export default function NavbarLogo(): ReactNode { return ( diff --git a/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/Layout/index.tsx b/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/Layout/index.tsx index b3bbaec8fa..27627fdbd3 100644 --- a/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/Layout/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/Layout/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import clsx from 'clsx'; import {useNavbarSecondaryMenu} from '@docusaurus/theme-common/internal'; import type {Props} from '@theme/Navbar/MobileSidebar/Layout'; @@ -14,7 +14,7 @@ export default function NavbarMobileSidebarLayout({ header, primaryMenu, secondaryMenu, -}: Props): JSX.Element { +}: Props): ReactNode { const {shown: secondaryMenuShown} = useNavbarSecondaryMenu(); return (
diff --git a/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx b/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx index 5b3c180b75..22e5622b4d 100644 --- a/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import {useThemeConfig} from '@docusaurus/theme-common'; import {useNavbarMobileSidebar} from '@docusaurus/theme-common/internal'; import NavbarItem, {type Props as NavbarItemConfig} from '@theme/NavbarItem'; @@ -16,7 +16,7 @@ function useNavbarItems() { } // The primary menu displays the navbar items -export default function NavbarMobilePrimaryMenu(): JSX.Element { +export default function NavbarMobilePrimaryMenu(): ReactNode { const mobileSidebar = useNavbarMobileSidebar(); // TODO how can the order be defined for mobile? diff --git a/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/SecondaryMenu/index.tsx b/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/SecondaryMenu/index.tsx index 3fe85e1a9b..4652438e62 100644 --- a/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/SecondaryMenu/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/SecondaryMenu/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React, {type ComponentProps} from 'react'; +import React, {type ComponentProps, type ReactNode} from 'react'; import {useThemeConfig} from '@docusaurus/theme-common'; import {useNavbarSecondaryMenu} from '@docusaurus/theme-common/internal'; import Translate from '@docusaurus/Translate'; @@ -24,7 +24,7 @@ function SecondaryMenuBackButton(props: ComponentProps<'button'>) { // The secondary menu slides from the right and shows contextual information // such as the docs sidebar -export default function NavbarMobileSidebarSecondaryMenu(): JSX.Element | null { +export default function NavbarMobileSidebarSecondaryMenu(): ReactNode { const isPrimaryMenuEmpty = useThemeConfig().navbar.items.length === 0; const secondaryMenu = useNavbarSecondaryMenu(); return ( diff --git a/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/Toggle/index.tsx b/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/Toggle/index.tsx index ed7b2cfc70..56c3262a04 100644 --- a/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/Toggle/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/Toggle/index.tsx @@ -5,12 +5,12 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; +import React, {type ReactNode} from 'react'; import {useNavbarMobileSidebar} from '@docusaurus/theme-common/internal'; import {translate} from '@docusaurus/Translate'; import IconMenu from '@theme/Icon/Menu'; -export default function MobileSidebarToggle(): JSX.Element { +export default function MobileSidebarToggle(): ReactNode { const {toggle, shown} = useNavbarMobileSidebar(); return ( + +
+
); } diff --git a/website/package.json b/website/package.json index fc61ef63ae..64e0019503 100644 --- a/website/package.json +++ b/website/package.json @@ -56,7 +56,6 @@ "color": "^4.2.3", "fs-extra": "^11.1.1", "netlify-plugin-cache": "^1.0.3", - "pure-react-carousel": "^1.30.1", "raw-loader": "^4.0.2", "react": "^18.0.0", "react-dom": "^18.0.0", diff --git a/yarn.lock b/yarn.lock index 3e31547793..98bfb6fffc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1180,7 +1180,7 @@ core-js-pure "^3.30.2" regenerator-runtime "^0.14.0" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.25.9", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.25.9", "@babel/runtime@^7.8.4": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.9.tgz#65884fd6dc255a775402cc1d9811082918f4bf00" integrity sha512-4zpTHZ9Cm6L9L+uIqghQX8ZXg8HKFcjYO3qHoO8zTmRm6HQUJ8SSJ+KRvbMBZn0EGVlT4DRYeQ/6hjlyXBh+Kg== @@ -7349,21 +7349,11 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deep-freeze@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/deep-freeze/-/deep-freeze-0.0.1.tgz#3a0b0005de18672819dfd38cd31f91179c893e84" - integrity sha512-Z+z8HiAvsGwmjqlphnHW5oz6yWlOwu6EQfFTjmeTWlDeda3FS2yv3jhq35TX/ewmsnqB+RX2IdsIOyjJCQN5tg== - deep-is@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -deepmerge@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170" - integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA== - deepmerge@^4.2.2, deepmerge@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" @@ -7811,13 +7801,6 @@ envinfo@7.14.0, envinfo@^7.7.4: resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.14.0.tgz#26dac5db54418f2a4c1159153a0b2ae980838aae" integrity sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg== -equals@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/equals/-/equals-1.0.5.tgz#212062dde5e1a510d955f13598efcc6a621b6ace" - integrity sha512-wI15a6ZoaaXPv+55+Vh2Kqn3+efKRv8QPtcGTjW5xmanMnQzESdAt566jevtMZyt3W/jwLDTzXpMph5ECDJ2zg== - dependencies: - jkroso-type "1" - err-code@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" @@ -11021,11 +11004,6 @@ jiti@^1.20.0: resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== -jkroso-type@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/jkroso-type/-/jkroso-type-1.1.1.tgz#bc4ced6d6c45fe0745282bafc86a9f8c4fc9ce61" - integrity sha512-zZgay+fPG6PgMUrpyFADmQmvLo39+AZa7Gc5pZhev2RhDxwANEq2etwD8d0e6rTg5NkwOIlQmaEmns3draC6Ng== - joi@^17.9.2: version "17.13.3" resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.3.tgz#0f5cc1169c999b30d344366d384b12d92558bcec" @@ -14956,17 +14934,6 @@ pure-rand@^6.0.0: resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.2.tgz#a9c2ddcae9b68d736a8163036f088a2781c8b306" integrity sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ== -pure-react-carousel@^1.30.1: - version "1.30.1" - resolved "https://registry.yarnpkg.com/pure-react-carousel/-/pure-react-carousel-1.30.1.tgz#006a333869b51339dafcdee2afa0561eb46d1743" - integrity sha512-B1qi62hZk0OFqRR4cTjtgIeOn/Ls5wo+HsLtrXT4jVf5et8ldBHSt+6LsYRJN86Or8dm+XbnJNEHy6WDJ0/DQw== - dependencies: - "@babel/runtime" "^7.5.5" - deep-freeze "0.0.1" - deepmerge "^2.2.1" - equals "^1.0.5" - prop-types "^15.6.2" - q@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" From 87a5ab9177788ed73ca81ce1872c679021af75e0 Mon Sep 17 00:00:00 2001 From: Jan Aukema Date: Fri, 20 Dec 2024 17:03:03 +0100 Subject: [PATCH 19/90] fix(theme-translations): Add missing Dutch (nl) theme translations (#10783) Co-authored-by: Jan Aukema --- .../locales/nl/theme-common.json | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/packages/docusaurus-theme-translations/locales/nl/theme-common.json b/packages/docusaurus-theme-translations/locales/nl/theme-common.json index 876ad26ae7..032e831150 100644 --- a/packages/docusaurus-theme-translations/locales/nl/theme-common.json +++ b/packages/docusaurus-theme-translations/locales/nl/theme-common.json @@ -5,8 +5,8 @@ "theme.CodeBlock.copy": "Kopieer", "theme.CodeBlock.copyButtonAriaLabel": "Kopieer code naar klembord", "theme.CodeBlock.wordWrapToggle": "Tekstterugloop in-/uitschakelen", - "theme.DocSidebarItem.collapseCategoryAriaLabel": "Collapse sidebar category '{label}'", - "theme.DocSidebarItem.expandCategoryAriaLabel": "Expand sidebar category '{label}'", + "theme.DocSidebarItem.collapseCategoryAriaLabel": "Categorie zijbalk inklappen '{label}'", + "theme.DocSidebarItem.expandCategoryAriaLabel": "Categorie zijbalk uitklappen '{label}'", "theme.ErrorPageContent.title": "Deze pagina is gecrasht.", "theme.ErrorPageContent.tryAgain": "Probeer opnieuw", "theme.NavBar.navAriaLabel": "Main", @@ -19,13 +19,13 @@ "theme.admonition.info": "info", "theme.admonition.note": "notitie", "theme.admonition.tip": "tip", - "theme.admonition.warning": "warning", + "theme.admonition.warning": "waarschuwing", "theme.blog.archive.description": "Archief", "theme.blog.archive.title": "Archief", - "theme.blog.author.noPosts": "This author has not written any posts yet.", + "theme.blog.author.noPosts": "Deze auteur heeft nog geen berichten geschreven.", "theme.blog.author.pageTitle": "{authorName} - {nPosts}", - "theme.blog.authorsList.pageTitle": "Authors", - "theme.blog.authorsList.viewAll": "View All Authors", + "theme.blog.authorsList.pageTitle": "Auteurs", + "theme.blog.authorsList.viewAll": "Bekijk alle auteurs", "theme.blog.paginator.navAriaLabel": "Paginanavigatie blog", "theme.blog.paginator.newerEntries": "Nieuwere items", "theme.blog.paginator.olderEntries": "Oudere items", @@ -44,23 +44,23 @@ "theme.common.editThisPage": "Bewerk deze pagina", "theme.common.headingLinkTitle": "Direct link naar {heading}", "theme.common.skipToMainContent": "Ga naar hoofdinhoud", - "theme.contentVisibility.draftBanner.message": "This page is a draft. It will only be visible in dev and be excluded from the production build.", - "theme.contentVisibility.draftBanner.title": "Draft page", - "theme.contentVisibility.unlistedBanner.message": "This page is unlisted. Search engines will not index it, and only users having a direct link can access it.", - "theme.contentVisibility.unlistedBanner.title": "Unlisted page", + "theme.contentVisibility.draftBanner.message": "Deze pagina is een concept. Deze zal alleen zichtbaar zijn in de ontwikkelomgeving en uitgesloten worden van de productie build.", + "theme.contentVisibility.draftBanner.title": "Concept pagina", + "theme.contentVisibility.unlistedBanner.message": "Deze pagina is verborgen. Zoekmachines indexeren deze niet en alleen gebruikers met een directe link kunnen deze openen.", + "theme.contentVisibility.unlistedBanner.title": "Verborgen page", "theme.docs.DocCard.categoryDescription.plurals": "1 artikel|{count} artikelen", "theme.docs.breadcrumbs.home": "Homepagina", "theme.docs.breadcrumbs.navAriaLabel": "Broodkruimels", "theme.docs.paginator.navAriaLabel": "Documentatie pagina", "theme.docs.paginator.next": "Volgende", "theme.docs.paginator.previous": "Vorige", - "theme.docs.sidebar.closeSidebarButtonAriaLabel": "Close navigation bar", + "theme.docs.sidebar.closeSidebarButtonAriaLabel": "Sluit navigatiebalk", "theme.docs.sidebar.collapseButtonAriaLabel": "Zijbalk inklappen", "theme.docs.sidebar.collapseButtonTitle": "Zijbalk inklappen", "theme.docs.sidebar.expandButtonAriaLabel": "Zijbalk uitklappen", "theme.docs.sidebar.expandButtonTitle": "Zijbalk uitklappen", - "theme.docs.sidebar.navAriaLabel": "Docs sidebar", - "theme.docs.sidebar.toggleSidebarButtonAriaLabel": "Toggle navigation bar", + "theme.docs.sidebar.navAriaLabel": "Docs zijbalk", + "theme.docs.sidebar.toggleSidebarButtonAriaLabel": "Navigatiebalk schakelen", "theme.docs.tagDocListPageTitle": "{nDocsTagged} met \"{tagName}\"", "theme.docs.tagDocListPageTitle.nDocsTagged": "Een artikel getagd|{count} artikelen getagd", "theme.docs.versionBadge.label": "Versie: {versionLabel}", From 2565601af3895713d7da11445e2e5e3748ab1291 Mon Sep 17 00:00:00 2001 From: William Black Date: Fri, 20 Dec 2024 09:16:59 -0700 Subject: [PATCH 20/90] fix(theme-common): code block magic comments should support SQL block comments (#10782) --- .../src/utils/codeBlockUtils.ts | 4 +++- .../_dogfooding/_pages tests/code-block-tests.mdx | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/docusaurus-theme-common/src/utils/codeBlockUtils.ts b/packages/docusaurus-theme-common/src/utils/codeBlockUtils.ts index 3d545655f6..f93ef96be7 100644 --- a/packages/docusaurus-theme-common/src/utils/codeBlockUtils.ts +++ b/packages/docusaurus-theme-common/src/utils/codeBlockUtils.ts @@ -107,9 +107,11 @@ function getAllMagicCommentDirectiveStyles( case 'lua': case 'haskell': - case 'sql': return getCommentPattern(['lua'], magicCommentDirectives); + case 'sql': + return getCommentPattern(['lua', 'jsBlock'], magicCommentDirectives); + case 'wasm': return getCommentPattern(['wasm'], magicCommentDirectives); diff --git a/website/_dogfooding/_pages tests/code-block-tests.mdx b/website/_dogfooding/_pages tests/code-block-tests.mdx index 6c294b11c3..83454500f7 100644 --- a/website/_dogfooding/_pages tests/code-block-tests.mdx +++ b/website/_dogfooding/_pages tests/code-block-tests.mdx @@ -358,6 +358,19 @@ WHERE customer_id IN ( ) ``` +```sql title="sql_query_block.sql" +/* highlight-start */ +SELECT * +FROM orders +/* highlight-end */ +WHERE customer_id IN ( + SELECT customer_id + /* highlight-next-line */ + FROM customers + WHERE country = 'USA' +) +``` + ```matlab title="matlab.m" % highlight-start function result = times2(n) From f196a1eb297195419e00975a9d953efa2fc7e72d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lorber?= Date: Mon, 23 Dec 2024 18:45:31 +0100 Subject: [PATCH 21/90] fix(core): fix React hydration errors, change html minifier settings (#10786) --- argos/tests/screenshot.spec.ts | 12 +----------- packages/docusaurus-bundler/src/minifyHtml.ts | 17 +++++++++++++---- .../src/components/Collapsible/index.tsx | 17 +++++++++++++---- website/_dogfooding/_pages tests/tabs-tests.mdx | 15 --------------- 4 files changed, 27 insertions(+), 34 deletions(-) diff --git a/argos/tests/screenshot.spec.ts b/argos/tests/screenshot.spec.ts index bc14473055..a648b82568 100644 --- a/argos/tests/screenshot.spec.ts +++ b/argos/tests/screenshot.spec.ts @@ -131,21 +131,11 @@ function throwOnConsole(page: Page) { const typesToCheck = ['error', 'warning']; const ignoreMessages = [ - // This mismatch warning looks like a React 18 bug to me - 'Warning: Prop `%s` did not match. Server: %s Client: %s%s className "null" ""', - // TODO this fetch error message is unexpected and should be fixed // it's already happening in main branch 'Failed to load resource: the server responded with a status of 404 (Not Found)', - // TODO looks like a legit hydration bug to fix - // on /blog/releases/2.4 - 'Warning: Prop `%s` did not match. Server: %s Client: %s%s href "/docs" "/docs?docusaurus-theme=light"', - 'Warning: Prop `%s` did not match. Server: %s Client: %s%s href "/docs" "/docs?docusaurus-theme=dark"', - // on /blog/releases/3.0 - 'Warning: Prop `%s` did not match. Server: %s Client: %s%s href "/docs" "/docs?docusaurus-data-navbar=false&docusaurus-data-red-border"', - // on /docs/styling-layout - 'Warning: Prop `%s` did not match. Server: %s Client: %s%s href "/docs" "/docs?docusaurus-data-navbar=false&docusaurus-data-red-border"', + // TODO looks like legit hydration bugs to fix 'Warning: Prop `%s` did not match. Server: %s Client: %s%s href "/docs/configuration" "/docs/configuration?docusaurus-theme=light"', 'Warning: Prop `%s` did not match. Server: %s Client: %s%s href "/docs/configuration" "/docs/configuration?docusaurus-theme=dark"', diff --git a/packages/docusaurus-bundler/src/minifyHtml.ts b/packages/docusaurus-bundler/src/minifyHtml.ts index 4a029d83c1..d9dc29135f 100644 --- a/packages/docusaurus-bundler/src/minifyHtml.ts +++ b/packages/docusaurus-bundler/src/minifyHtml.ts @@ -47,9 +47,13 @@ async function getTerserMinifier(): Promise { minify: async function minifyHtmlWithTerser(html) { try { const code = await terserHtmlMinifier(html, { + // When enabled => React hydration errors removeComments: false, - removeRedundantAttributes: true, - removeEmptyAttributes: true, + removeRedundantAttributes: false, + removeEmptyAttributes: false, + sortAttributes: false, + sortClassName: false, + removeScriptTypeAttributes: true, removeStyleLinkTypeAttributes: true, useShortDoctype: true, @@ -84,8 +88,13 @@ async function getSwcMinifier(): Promise { sortSpaceSeparatedAttributeValues: false, sortAttributes: false, - removeRedundantAttributes: 'all', - removeEmptyAttributes: true, + // When enabled => hydration error for className={"yt-lite "} + normalizeAttributes: false, + // When enabled => hydration error for className="" + removeEmptyAttributes: false, + // When enabled => hydration error for + removeRedundantAttributes: 'none', + minifyJs: true, minifyJson: true, minifyCss: true, diff --git a/packages/docusaurus-theme-common/src/components/Collapsible/index.tsx b/packages/docusaurus-theme-common/src/components/Collapsible/index.tsx index ea05393329..bf39faeca3 100644 --- a/packages/docusaurus-theme-common/src/components/Collapsible/index.tsx +++ b/packages/docusaurus-theme-common/src/components/Collapsible/index.tsx @@ -15,7 +15,7 @@ import React, { type SetStateAction, type ReactNode, } from 'react'; -import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment'; +import useIsBrowser from '@docusaurus/useIsBrowser'; import useIsomorphicLayoutEffect from '@docusaurus/useIsomorphicLayoutEffect'; import {prefersReducedMotion} from '../../utils/accessibilityUtils'; @@ -161,8 +161,15 @@ type CollapsibleElementType = React.ElementType< * Prevent hydration layout shift before animations are handled imperatively * with JS */ -function getSSRStyle(collapsed: boolean) { - if (ExecutionEnvironment.canUseDOM) { +function getSSRStyle({ + collapsed, + isBrowser, +}: { + collapsed: boolean; + isBrowser: boolean; +}) { + // After hydration, styles are applied + if (isBrowser) { return undefined; } return collapsed ? CollapsedStyles : ExpandedStyles; @@ -202,6 +209,7 @@ function CollapsibleBase({ className, disableSSRStyle, }: CollapsibleBaseProps) { + const isBrowser = useIsBrowser(); const collapsibleRef = useRef(null); useCollapseAnimation({collapsibleRef, collapsed, animation}); @@ -211,7 +219,8 @@ function CollapsibleBase({ // @ts-expect-error: the "too complicated type" is produced from // "CollapsibleElementType" being a huge union ref={collapsibleRef as RefObject} // Refs are contravariant, which is not expressible in TS - style={disableSSRStyle ? undefined : getSSRStyle(collapsed)} + // Not even sure we need this SSRStyle anymore, try to remove it? + style={disableSSRStyle ? undefined : getSSRStyle({collapsed, isBrowser})} onTransitionEnd={(e: React.TransitionEvent) => { if (e.propertyName !== 'height') { return; diff --git a/website/_dogfooding/_pages tests/tabs-tests.mdx b/website/_dogfooding/_pages tests/tabs-tests.mdx index c60ab8c7e2..14e92fe0d1 100644 --- a/website/_dogfooding/_pages tests/tabs-tests.mdx +++ b/website/_dogfooding/_pages tests/tabs-tests.mdx @@ -6,21 +6,6 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; ``` -## Tabs with dynamic default value - -This can cause [bugs](https://github.com/facebook/react-native-website/issues/2771) when default value is different between SSR and client: - -```mdx-code-block -export const isMacOS = typeof window !== 'undefined' && navigator.platform.startsWith('Mac'); - - - - Android content - iOS content - - -``` - ## Tabs sync with different heights ```mdx-code-block From 0f29a37b3a6d3ee48ce21c69ddc7a9b8b5ff2165 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lorber?= Date: Tue, 24 Dec 2024 14:43:03 +0100 Subject: [PATCH 22/90] feat: Add React 19 support to Docusaurus v3 (#10763) --- .cspell.json | 1 + .github/workflows/lint.yml | 2 +- .github/workflows/tests.yml | 2 +- admin/scripts/test-release.sh | 7 +++-- admin/test-bad-package/README.mdx | 2 +- argos/tests/screenshot.spec.ts | 11 +++++-- package.json | 1 - .../templates/classic-typescript/package.json | 4 +-- .../templates/classic/package.json | 4 +-- packages/docusaurus-mdx-loader/package.json | 4 +-- .../package.json | 2 +- .../package.json | 4 +-- .../package.json | 4 +-- .../package.json | 4 +-- .../package.json | 4 +-- packages/docusaurus-plugin-debug/package.json | 4 +-- .../package.json | 4 +-- .../package.json | 4 +-- .../package.json | 4 +-- .../package.json | 6 ++-- packages/docusaurus-plugin-pwa/package.json | 4 +-- .../docusaurus-plugin-rsdoctor/package.json | 4 +-- .../docusaurus-plugin-sitemap/package.json | 4 +-- packages/docusaurus-plugin-svgr/package.json | 4 +-- .../package.json | 4 +-- .../docusaurus-preset-classic/package.json | 4 +-- .../docusaurus-theme-classic/package.json | 4 +-- packages/docusaurus-theme-common/package.json | 4 +-- .../package.json | 4 +-- .../docusaurus-theme-mermaid/package.json | 4 +-- .../package.json | 4 +-- packages/docusaurus-types/package.json | 6 ++-- packages/docusaurus/package.json | 6 ++-- packages/docusaurus/src/webpack/base.ts | 23 ++++++++------ project-words.txt | 4 --- website/package.json | 4 +-- yarn.lock | 31 ++++++++++++++----- 37 files changed, 111 insertions(+), 85 deletions(-) diff --git a/.cspell.json b/.cspell.json index 82ebc2c41a..16dc7c67c9 100644 --- a/.cspell.json +++ b/.cspell.json @@ -26,6 +26,7 @@ "yarn.lock", "project-words.txt", "__snapshots__", + "admin/scripts", "website/src/data/users.tsx", "website/src/data/tweets.tsx", "website/docusaurus.config.localized.json", diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 63929dc49a..893b76caba 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -33,7 +33,7 @@ jobs: - name: Check for suspicious yarn.lock # for allowed aliases, see https://github.com/yargs/cliui/pull/139/files#r1670711112 - run: yarn lockfile-lint --path yarn.lock --type yarn --allowed-hosts yarn --validate-https --validate-package-names --validate-integrity --empty-hostname=false --allowed-package-name-aliases react-loadable string-width-cjs strip-ansi-cjs wrap-ansi-cjs + run: yarn lockfile-lint --path yarn.lock --type yarn --allowed-hosts yarn --validate-https --validate-package-names --validate-integrity --empty-hostname=false --allowed-package-name-aliases react-loadable react-helmet-async string-width-cjs strip-ansi-cjs wrap-ansi-cjs - name: Lint run: | diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 41ad5ddc12..3bb0c22bcb 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -49,7 +49,7 @@ jobs: env: # Our website should build even with limited memory # See https://github.com/facebook/docusaurus/pull/10590 - NODE_OPTIONS: '--max-old-space-size=400' + NODE_OPTIONS: '--max-old-space-size=450' DOCUSAURUS_PERF_LOGGER: 'true' - name: Docusaurus site CSS order run: yarn workspace website test:css-order diff --git a/admin/scripts/test-release.sh b/admin/scripts/test-release.sh index 622c524c95..0ae82234a5 100755 --- a/admin/scripts/test-release.sh +++ b/admin/scripts/test-release.sh @@ -5,7 +5,9 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. -set -euo pipefail +set -xeuo pipefail + +rm -rf ../test-website CUSTOM_REGISTRY_URL="http://localhost:4873" NEW_VERSION="$(node -p "require('./packages/docusaurus/package.json').version")-NEW" @@ -52,7 +54,8 @@ git diff --name-only -- '*.json' | sed 's, ,\\&,g' | xargs git checkout -- cd .. # Build skeleton website with new version -npm_config_registry="$CUSTOM_REGISTRY_URL" npx create-docusaurus@"$NEW_VERSION" test-website classic --javascript $EXTRA_OPTS +npm_config_registry="$CUSTOM_REGISTRY_URL" npx --yes --loglevel silly create-docusaurus@"$NEW_VERSION" test-website classic --javascript $EXTRA_OPTS + # Stop Docker container if [[ -z "${KEEP_CONTAINER:-true}" ]] && ( $(docker container inspect "$CONTAINER_NAME" > /dev/null 2>&1) ); then diff --git a/admin/test-bad-package/README.mdx b/admin/test-bad-package/README.mdx index 40abc5448c..260522db24 100644 --- a/admin/test-bad-package/README.mdx +++ b/admin/test-bad-package/README.mdx @@ -12,7 +12,7 @@ import {version as ReactVersion} from 'react'; import {version as ReactDOMVersion} from 'react-dom'; export function TestComponent() { - const expectedVersion = 18; + const expectedVersion = 19; if (!ReactVersion.startsWith(`${expectedVersion}`)) { throw new Error( `'test-bad-package/README.mdx' is rendered with bad React version: ${ReactVersion}`, diff --git a/argos/tests/screenshot.spec.ts b/argos/tests/screenshot.spec.ts index a648b82568..8d4d06562e 100644 --- a/argos/tests/screenshot.spec.ts +++ b/argos/tests/screenshot.spec.ts @@ -135,9 +135,14 @@ function throwOnConsole(page: Page) { // it's already happening in main branch 'Failed to load resource: the server responded with a status of 404 (Not Found)', - // TODO looks like legit hydration bugs to fix - 'Warning: Prop `%s` did not match. Server: %s Client: %s%s href "/docs/configuration" "/docs/configuration?docusaurus-theme=light"', - 'Warning: Prop `%s` did not match. Server: %s Client: %s%s href "/docs/configuration" "/docs/configuration?docusaurus-theme=dark"', + // TODO legit hydration bugs to fix on embeds of /docs/styling-layout + // useLocation() returns window.search/hash immediately :s + '/docs/configuration?docusaurus-theme=light', + '/docs/configuration?docusaurus-theme=dark', + + // Warning because react-live not supporting React automatic JSX runtime + // See https://github.com/FormidableLabs/react-live/issues/405 + 'Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance', // TODO weird problem related to KaTeX fonts refusing to decode? // on /docs/markdown-features/math-equations diff --git a/package.json b/package.json index aecf0f4b36..ea1294c3c6 100644 --- a/package.json +++ b/package.json @@ -115,7 +115,6 @@ "prettier": "^2.8.8", "react": "^18.0.0", "react-dom": "^18.0.0", - "react-helmet-async": "^1.3.0", "react-test-renderer": "^18.0.0", "rimraf": "^3.0.2", "sharp": "^0.32.3", diff --git a/packages/create-docusaurus/templates/classic-typescript/package.json b/packages/create-docusaurus/templates/classic-typescript/package.json index 5cbb27904f..168d0e39cb 100644 --- a/packages/create-docusaurus/templates/classic-typescript/package.json +++ b/packages/create-docusaurus/templates/classic-typescript/package.json @@ -20,8 +20,8 @@ "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", "prism-react-renderer": "^2.3.0", - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^19.0.0", + "react-dom": "^19.0.0" }, "devDependencies": { "@docusaurus/module-type-aliases": "3.6.3", diff --git a/packages/create-docusaurus/templates/classic/package.json b/packages/create-docusaurus/templates/classic/package.json index aa0709133b..338f159740 100644 --- a/packages/create-docusaurus/templates/classic/package.json +++ b/packages/create-docusaurus/templates/classic/package.json @@ -19,8 +19,8 @@ "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", "prism-react-renderer": "^2.3.0", - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^19.0.0", + "react-dom": "^19.0.0" }, "devDependencies": { "@docusaurus/module-type-aliases": "3.6.3", diff --git a/packages/docusaurus-mdx-loader/package.json b/packages/docusaurus-mdx-loader/package.json index 69546431d9..b37788b9f3 100644 --- a/packages/docusaurus-mdx-loader/package.json +++ b/packages/docusaurus-mdx-loader/package.json @@ -58,8 +58,8 @@ "unist-util-remove-position": "^5.0.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "engines": { "node": ">=18.0" diff --git a/packages/docusaurus-module-type-aliases/package.json b/packages/docusaurus-module-type-aliases/package.json index a7ba21f20e..a5e4a28ad3 100644 --- a/packages/docusaurus-module-type-aliases/package.json +++ b/packages/docusaurus-module-type-aliases/package.json @@ -17,7 +17,7 @@ "@types/react": "*", "@types/react-router-config": "*", "@types/react-router-dom": "*", - "react-helmet-async": "*", + "react-helmet-async": "npm:@slorber/react-helmet-async@*", "react-loadable": "npm:@docusaurus/react-loadable@6.0.0" }, "peerDependencies": { diff --git a/packages/docusaurus-plugin-client-redirects/package.json b/packages/docusaurus-plugin-client-redirects/package.json index 7473f9b78c..1e116f3d26 100644 --- a/packages/docusaurus-plugin-client-redirects/package.json +++ b/packages/docusaurus-plugin-client-redirects/package.json @@ -32,8 +32,8 @@ "@docusaurus/types": "3.6.3" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "engines": { "node": ">=18.0" diff --git a/packages/docusaurus-plugin-content-blog/package.json b/packages/docusaurus-plugin-content-blog/package.json index 4ed76c8e47..4f94e88dd6 100644 --- a/packages/docusaurus-plugin-content-blog/package.json +++ b/packages/docusaurus-plugin-content-blog/package.json @@ -52,8 +52,8 @@ }, "peerDependencies": { "@docusaurus/plugin-content-docs": "*", - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "engines": { "node": ">=18.0" diff --git a/packages/docusaurus-plugin-content-docs/package.json b/packages/docusaurus-plugin-content-docs/package.json index b0d964444f..8c8d610b6b 100644 --- a/packages/docusaurus-plugin-content-docs/package.json +++ b/packages/docusaurus-plugin-content-docs/package.json @@ -61,8 +61,8 @@ "shelljs": "^0.8.5" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "engines": { "node": ">=18.0" diff --git a/packages/docusaurus-plugin-content-pages/package.json b/packages/docusaurus-plugin-content-pages/package.json index f8efc0331d..1cf0d8c370 100644 --- a/packages/docusaurus-plugin-content-pages/package.json +++ b/packages/docusaurus-plugin-content-pages/package.json @@ -28,8 +28,8 @@ "webpack": "^5.88.1" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "engines": { "node": ">=18.0" diff --git a/packages/docusaurus-plugin-debug/package.json b/packages/docusaurus-plugin-debug/package.json index 40c84b1468..fa6ab6bfad 100644 --- a/packages/docusaurus-plugin-debug/package.json +++ b/packages/docusaurus-plugin-debug/package.json @@ -28,8 +28,8 @@ "tslib": "^2.6.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "engines": { "node": ">=18.0" diff --git a/packages/docusaurus-plugin-google-analytics/package.json b/packages/docusaurus-plugin-google-analytics/package.json index 5b90e5a123..95d99d0741 100644 --- a/packages/docusaurus-plugin-google-analytics/package.json +++ b/packages/docusaurus-plugin-google-analytics/package.json @@ -24,8 +24,8 @@ "tslib": "^2.6.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "engines": { "node": ">=18.0" diff --git a/packages/docusaurus-plugin-google-gtag/package.json b/packages/docusaurus-plugin-google-gtag/package.json index 84e2752be3..5a0525a6d6 100644 --- a/packages/docusaurus-plugin-google-gtag/package.json +++ b/packages/docusaurus-plugin-google-gtag/package.json @@ -25,8 +25,8 @@ "tslib": "^2.6.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "engines": { "node": ">=18.0" diff --git a/packages/docusaurus-plugin-google-tag-manager/package.json b/packages/docusaurus-plugin-google-tag-manager/package.json index 2faaa9e043..a85a61c120 100644 --- a/packages/docusaurus-plugin-google-tag-manager/package.json +++ b/packages/docusaurus-plugin-google-tag-manager/package.json @@ -24,8 +24,8 @@ "tslib": "^2.6.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "engines": { "node": ">=18.0" diff --git a/packages/docusaurus-plugin-ideal-image/package.json b/packages/docusaurus-plugin-ideal-image/package.json index 94ae2d1ed3..bdb15d7cb8 100644 --- a/packages/docusaurus-plugin-ideal-image/package.json +++ b/packages/docusaurus-plugin-ideal-image/package.json @@ -26,7 +26,7 @@ "@docusaurus/theme-translations": "3.6.3", "@docusaurus/types": "3.6.3", "@docusaurus/utils-validation": "3.6.3", - "@slorber/react-ideal-image": "^0.0.12", + "@slorber/react-ideal-image": "^0.0.14", "react-waypoint": "^10.3.0", "sharp": "^0.32.3", "tslib": "^2.6.0", @@ -38,8 +38,8 @@ }, "peerDependencies": { "jimp": "*", - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "jimp": { diff --git a/packages/docusaurus-plugin-pwa/package.json b/packages/docusaurus-plugin-pwa/package.json index 3a8a68f487..a109235a3d 100644 --- a/packages/docusaurus-plugin-pwa/package.json +++ b/packages/docusaurus-plugin-pwa/package.json @@ -45,8 +45,8 @@ "fs-extra": "^11.1.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "engines": { "node": ">=18.0" diff --git a/packages/docusaurus-plugin-rsdoctor/package.json b/packages/docusaurus-plugin-rsdoctor/package.json index 7b5f5e6073..6cba70524d 100644 --- a/packages/docusaurus-plugin-rsdoctor/package.json +++ b/packages/docusaurus-plugin-rsdoctor/package.json @@ -26,8 +26,8 @@ "tslib": "^2.6.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "engines": { "node": ">=18.0" diff --git a/packages/docusaurus-plugin-sitemap/package.json b/packages/docusaurus-plugin-sitemap/package.json index 9cea0a4b00..d86a4a5f0e 100644 --- a/packages/docusaurus-plugin-sitemap/package.json +++ b/packages/docusaurus-plugin-sitemap/package.json @@ -32,8 +32,8 @@ "@total-typescript/shoehorn": "^0.1.2" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "engines": { "node": ">=18.0" diff --git a/packages/docusaurus-plugin-svgr/package.json b/packages/docusaurus-plugin-svgr/package.json index c4af737e68..a5d9f338d9 100644 --- a/packages/docusaurus-plugin-svgr/package.json +++ b/packages/docusaurus-plugin-svgr/package.json @@ -28,8 +28,8 @@ "webpack": "^5.88.1" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "engines": { "node": ">=18.0" diff --git a/packages/docusaurus-plugin-vercel-analytics/package.json b/packages/docusaurus-plugin-vercel-analytics/package.json index 65c6e85387..f00a94d2a1 100644 --- a/packages/docusaurus-plugin-vercel-analytics/package.json +++ b/packages/docusaurus-plugin-vercel-analytics/package.json @@ -27,8 +27,8 @@ "tslib": "^2.6.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "engines": { "node": ">=18.0" diff --git a/packages/docusaurus-preset-classic/package.json b/packages/docusaurus-preset-classic/package.json index 77736348bc..c2fa7d3212 100644 --- a/packages/docusaurus-preset-classic/package.json +++ b/packages/docusaurus-preset-classic/package.json @@ -34,8 +34,8 @@ "@docusaurus/types": "3.6.3" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "engines": { "node": ">=18.0" diff --git a/packages/docusaurus-theme-classic/package.json b/packages/docusaurus-theme-classic/package.json index 849448cbca..9cf89e9be2 100644 --- a/packages/docusaurus-theme-classic/package.json +++ b/packages/docusaurus-theme-classic/package.json @@ -56,8 +56,8 @@ "utility-types": "^3.10.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "engines": { "node": ">=18.0" diff --git a/packages/docusaurus-theme-common/package.json b/packages/docusaurus-theme-common/package.json index 6bff8d5445..725f0d7101 100644 --- a/packages/docusaurus-theme-common/package.json +++ b/packages/docusaurus-theme-common/package.json @@ -52,8 +52,8 @@ }, "peerDependencies": { "@docusaurus/plugin-content-docs": "*", - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "engines": { "node": ">=18.0" diff --git a/packages/docusaurus-theme-live-codeblock/package.json b/packages/docusaurus-theme-live-codeblock/package.json index adb317c148..80f7ecc2c7 100644 --- a/packages/docusaurus-theme-live-codeblock/package.json +++ b/packages/docusaurus-theme-live-codeblock/package.json @@ -38,8 +38,8 @@ "@types/buble": "^0.20.1" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "engines": { "node": ">=18.0" diff --git a/packages/docusaurus-theme-mermaid/package.json b/packages/docusaurus-theme-mermaid/package.json index 5904a63b25..efe14004b8 100644 --- a/packages/docusaurus-theme-mermaid/package.json +++ b/packages/docusaurus-theme-mermaid/package.json @@ -45,8 +45,8 @@ "react-test-renderer": "^18.0.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "engines": { "node": ">=18.0" diff --git a/packages/docusaurus-theme-search-algolia/package.json b/packages/docusaurus-theme-search-algolia/package.json index 7736e766e3..412e7d2a3f 100644 --- a/packages/docusaurus-theme-search-algolia/package.json +++ b/packages/docusaurus-theme-search-algolia/package.json @@ -54,8 +54,8 @@ "@docusaurus/module-type-aliases": "3.6.3" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "engines": { "node": ">=18.0" diff --git a/packages/docusaurus-types/package.json b/packages/docusaurus-types/package.json index d54d448916..4a5e06dfd9 100644 --- a/packages/docusaurus-types/package.json +++ b/packages/docusaurus-types/package.json @@ -18,13 +18,13 @@ "@types/react": "*", "commander": "^5.1.0", "joi": "^17.9.2", - "react-helmet-async": "^1.3.0", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", "utility-types": "^3.10.0", "webpack": "^5.95.0", "webpack-merge": "^5.9.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } } diff --git a/packages/docusaurus/package.json b/packages/docusaurus/package.json index 6ec765a2e8..12667cd6f3 100644 --- a/packages/docusaurus/package.json +++ b/packages/docusaurus/package.json @@ -60,7 +60,7 @@ "p-map": "^4.0.0", "prompts": "^2.4.2", "react-dev-utils": "^12.0.1", - "react-helmet-async": "^1.3.0", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", "react-loadable": "npm:@docusaurus/react-loadable@6.0.0", "react-loadable-ssr-addon-v5-slorber": "^1.0.1", "react-router": "^5.3.4", @@ -94,8 +94,8 @@ }, "peerDependencies": { "@mdx-js/react": "^3.0.0", - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "engines": { "node": ">=18.0" diff --git a/packages/docusaurus/src/webpack/base.ts b/packages/docusaurus/src/webpack/base.ts index 3ffda658fe..4dce834d90 100644 --- a/packages/docusaurus/src/webpack/base.ts +++ b/packages/docusaurus/src/webpack/base.ts @@ -35,14 +35,19 @@ const LibrariesToTranspileRegex = new RegExp( LibrariesToTranspile.map((libName) => `(node_modules/${libName})`).join('|'), ); -const ReactAliases: Record = process.env - .DOCUSAURUS_NO_REACT_ALIASES - ? {} - : { - react: path.dirname(require.resolve('react/package.json')), - 'react-dom': path.dirname(require.resolve('react-dom/package.json')), - '@mdx-js/react': path.dirname(require.resolve('@mdx-js/react')), - }; +function getReactAliases(siteDir: string): Record { + // Escape hatch + if (process.env.DOCUSAURUS_NO_REACT_ALIASES) { + return {}; + } + const resolveSitePkg = (id: string) => + require.resolve(id, {paths: [siteDir]}); + return { + react: path.dirname(resolveSitePkg('react/package.json')), + 'react-dom': path.dirname(resolveSitePkg('react-dom/package.json')), + '@mdx-js/react': path.dirname(resolveSitePkg('@mdx-js/react')), + }; +} export function excludeJS(modulePath: string): boolean { // Always transpile client dir @@ -186,7 +191,7 @@ export async function createBaseConfig({ process.cwd(), ], alias: { - ...ReactAliases, + ...getReactAliases(siteDir), '@site': siteDir, '@generated': generatedFilesDir, ...(await loadDocusaurusAliases()), diff --git a/project-words.txt b/project-words.txt index 9cef579226..a0f0822f61 100644 --- a/project-words.txt +++ b/project-words.txt @@ -91,7 +91,6 @@ Flightcontrol Flightcontrol's FOUC froms -funboxteam gabrielcsapo getcanary Gifs @@ -202,7 +201,6 @@ Nuxt opensearch opensearchdescription opensource -optimizt orama Orama orta @@ -283,7 +281,6 @@ Sebastien Sébastien sebastienlorber sensical -setaf setext setlocal SFNT @@ -299,7 +296,6 @@ solana Solana spâce stackblitz -stackblitzrc stackoverflow Stormkit Strikethrough diff --git a/website/package.json b/website/package.json index 64e0019503..9338208428 100644 --- a/website/package.json +++ b/website/package.json @@ -57,8 +57,8 @@ "fs-extra": "^11.1.1", "netlify-plugin-cache": "^1.0.3", "raw-loader": "^4.0.2", - "react": "^18.0.0", - "react-dom": "^18.0.0", + "react": "^19.0.0", + "react-dom": "^19.0.0", "react-lite-youtube-embed": "^2.3.52", "react-medium-image-zoom": "^5.1.6", "recma-mdx-displayname": "^0.4.1", diff --git a/yarn.lock b/yarn.lock index 98bfb6fffc..24a7352f64 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3352,10 +3352,10 @@ dependencies: "@sinonjs/commons" "^3.0.0" -"@slorber/react-ideal-image@^0.0.12": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@slorber/react-ideal-image/-/react-ideal-image-0.0.12.tgz#5f867f9e10f2d82456568e8fd5bfb7673089c29c" - integrity sha512-u8KiDTEkMA7/KAeA5ywg/P7YG4zuKhWtswfVZDH8R8HXgQsFcHIYU2WaQnGuK/Du7Wdj90I+SdFmajSGFRvoKA== +"@slorber/react-ideal-image@^0.0.14": + version "0.0.14" + resolved "https://registry.yarnpkg.com/@slorber/react-ideal-image/-/react-ideal-image-0.0.14.tgz#35b0756c6f06ec60c4a2b5cae9dcf346500e1e8a" + integrity sha512-ULJ1VtNg+B5puJp4ZQzEnDqYyDT9erbABoQygmAovg35ltOymLMH8jXPuxJQBVskcmaG29bTZ+++hE/PAXRgxA== "@slorber/remark-comment@^1.0.0": version "1.0.0" @@ -15078,6 +15078,13 @@ react-dom@^18.0.0: loose-envify "^1.1.0" scheduler "^0.23.2" +react-dom@^19.0.0: + version "19.0.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.0.0.tgz#43446f1f01c65a4cd7f7588083e686a6726cfb57" + integrity sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ== + dependencies: + scheduler "^0.25.0" + react-error-boundary@^3.1.0: version "3.1.4" resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-3.1.4.tgz#255db92b23197108757a888b01e5b729919abde0" @@ -15095,10 +15102,10 @@ react-fast-compare@^3.2.0: resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49" integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== -react-helmet-async@*, react-helmet-async@^1.3.0: +"react-helmet-async@npm:@slorber/react-helmet-async@*", "react-helmet-async@npm:@slorber/react-helmet-async@1.3.0": version "1.3.0" - resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.3.0.tgz#7bd5bf8c5c69ea9f02f6083f14ce33ef545c222e" - integrity sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg== + resolved "https://registry.yarnpkg.com/@slorber/react-helmet-async/-/react-helmet-async-1.3.0.tgz#11fbc6094605cf60aa04a28c17e0aab894b4ecff" + integrity sha512-e9/OK8VhwUSc67diWI8Rb3I0YgI9/SBQtnhe9aEuK6MhZm7ntZZimXgwXnd8W96YTmSOb9M4d8LwhRZyhWr/1A== dependencies: "@babel/runtime" "^7.12.5" invariant "^2.2.4" @@ -15232,6 +15239,11 @@ react@^18.0.0: dependencies: loose-envify "^1.1.0" +react@^19.0.0: + version "19.0.0" + resolved "https://registry.yarnpkg.com/react/-/react-19.0.0.tgz#6e1969251b9f108870aa4bff37a0ce9ddfaaabdd" + integrity sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ== + read-cmd-shim@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-3.0.0.tgz#62b8c638225c61e6cc607f8f4b779f3b8238f155" @@ -15994,6 +16006,11 @@ scheduler@^0.23.2: dependencies: loose-envify "^1.1.0" +scheduler@^0.25.0: + version "0.25.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.25.0.tgz#336cd9768e8cceebf52d3c80e3dcf5de23e7e015" + integrity sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA== + schema-dts@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/schema-dts/-/schema-dts-1.1.2.tgz#82ccf71b5dcb80065a1cc5941888507a4ce1e44b" From e5ed9a389482ef8cccf3bd473bc4cba1e7b37d17 Mon Sep 17 00:00:00 2001 From: Taylor Reece Date: Tue, 24 Dec 2024 09:38:24 -0600 Subject: [PATCH 23/90] docs(showcase): Update Prismatic.io showcase image, description, and tags (#10795) --- website/src/data/showcase/prismatic.png | Bin 40683 -> 95130 bytes website/src/data/users.tsx | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/website/src/data/showcase/prismatic.png b/website/src/data/showcase/prismatic.png index df575e675b1fcae015d55a87b072ba3270b83da6..e7b4d49a63af410bdba8e4601cbef3b3d01174fa 100644 GIT binary patch literal 95130 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 z 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