From 730ce485ba71dd4a8bab16dbb2375db8d5619279 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lorber?= Date: Fri, 11 Apr 2025 19:16:17 +0200 Subject: [PATCH] feat(theme): make it possible to provide your own page title formatter (#11090) --- .../src/index.d.ts | 9 ++ .../website/build-snap/blog/atom.xsl | 2 +- .../src/theme-classic.d.ts | 11 ++ .../ThemeProvider/TitleFormatter/index.tsx | 27 ++++ .../src/theme/ThemeProvider/index.tsx | 14 ++ .../docusaurus-theme-common/src/internal.ts | 5 +- .../src/utils/__tests__/generalUtils.test.tsx | 33 ----- .../__tests__/titleFormatterUtils.test.tsx | 43 ++++++ .../src/utils/generalUtils.ts | 19 --- .../src/utils/metadataUtils.tsx | 84 ++++++++---- .../src/utils/titleFormatterUtils.tsx | 122 ++++++++++++++++++ .../src/theme/SearchPage/index.tsx | 47 +++---- packages/docusaurus/src/client/App.tsx | 11 +- .../theme-fallback/ThemeProvider/index.tsx | 20 +++ .../__tests__/__snapshots__/base.test.ts.snap | 2 + .../__snapshots__/index.test.ts.snap | 8 ++ .../ThemeProvider/TitleFormatter/index.tsx | 36 ++++++ 17 files changed, 386 insertions(+), 107 deletions(-) create mode 100644 packages/docusaurus-theme-classic/src/theme/ThemeProvider/TitleFormatter/index.tsx create mode 100644 packages/docusaurus-theme-classic/src/theme/ThemeProvider/index.tsx delete mode 100644 packages/docusaurus-theme-common/src/utils/__tests__/generalUtils.test.tsx create mode 100644 packages/docusaurus-theme-common/src/utils/__tests__/titleFormatterUtils.test.tsx delete mode 100644 packages/docusaurus-theme-common/src/utils/generalUtils.ts create mode 100644 packages/docusaurus-theme-common/src/utils/titleFormatterUtils.tsx create mode 100644 packages/docusaurus/src/client/theme-fallback/ThemeProvider/index.tsx create mode 100644 website/src/theme/ThemeProvider/TitleFormatter/index.tsx diff --git a/packages/docusaurus-module-type-aliases/src/index.d.ts b/packages/docusaurus-module-type-aliases/src/index.d.ts index 176ca2ec52..5876e36484 100644 --- a/packages/docusaurus-module-type-aliases/src/index.d.ts +++ b/packages/docusaurus-module-type-aliases/src/index.d.ts @@ -122,6 +122,15 @@ declare module '@theme/Root' { export default function Root({children}: Props): ReactNode; } +declare module '@theme/ThemeProvider' { + import type {ReactNode} from 'react'; + + export interface Props { + readonly children: ReactNode; + } + export default function ThemeProvider({children}: Props): ReactNode; +} + declare module '@theme/SiteMetadata' { import type {ReactNode} from 'react'; diff --git a/packages/docusaurus-plugin-content-blog/src/__tests__/__fixtures__/website/build-snap/blog/atom.xsl b/packages/docusaurus-plugin-content-blog/src/__tests__/__fixtures__/website/build-snap/blog/atom.xsl index 271895cf77..b4b2d9619c 100644 --- a/packages/docusaurus-plugin-content-blog/src/__tests__/__fixtures__/website/build-snap/blog/atom.xsl +++ b/packages/docusaurus-plugin-content-blog/src/__tests__/__fixtures__/website/build-snap/blog/atom.xsl @@ -71,7 +71,7 @@
-