diff --git a/packages/docusaurus-plugin-content-blog/src/__tests__/authorsSocials.test.ts b/packages/docusaurus-plugin-content-blog/src/__tests__/authorsSocials.test.ts index e17637781c14..db9508255cc9 100644 --- a/packages/docusaurus-plugin-content-blog/src/__tests__/authorsSocials.test.ts +++ b/packages/docusaurus-plugin-content-blog/src/__tests__/authorsSocials.test.ts @@ -80,6 +80,16 @@ describe('normalizeSocials', () => { expect(normalizeSocials(socials)).toEqual(socials); }); + it('supports LinkedIn company handles', () => { + const socials: AuthorSocials = { + linkedin: 'company/docusaurus', + }; + + expect(normalizeSocials(socials)).toEqual({ + linkedin: 'https://www.linkedin.com/company/docusaurus/', + }); + }); + it('mixed links', () => { const socials: AuthorSocials = { twitter: 'ozakione', diff --git a/packages/docusaurus-plugin-content-blog/src/authorsSocials.ts b/packages/docusaurus-plugin-content-blog/src/authorsSocials.ts index 1517381e0648..50e4b619aca4 100644 --- a/packages/docusaurus-plugin-content-blog/src/authorsSocials.ts +++ b/packages/docusaurus-plugin-content-blog/src/authorsSocials.ts @@ -39,7 +39,8 @@ const PredefinedPlatformNormalizers: Record< x: (handle: string) => `https://x.com/${handle}`, twitter: (handle: string) => `https://twitter.com/${handle}`, github: (handle: string) => `https://github.com/${handle}`, - linkedin: (handle: string) => `https://www.linkedin.com/in/${handle}/`, + linkedin: (handle: string) => + `https://www.linkedin.com/${handle.startsWith('company/') ? handle : `in/${handle}`}/`, stackoverflow: (userId: string) => `https://stackoverflow.com/users/${userId}`, bluesky: (handle: string) => `https://bsky.app/profile/${handle}`, @@ -66,7 +67,10 @@ Social platform '${platform}' has illegal value '${value}'`, value.startsWith('mailto:'); if (isAbsoluteUrl) { return [platform, value]; - } else if (value.includes('/')) { + } else if ( + value.includes('/') && + !(platform.toLowerCase() === 'linkedin' && value.startsWith('company/')) + ) { throw new Error( `Author socials should be usernames/userIds/handles, or fully qualified HTTP(s) absolute URLs. Social platform '${platform}' has illegal value '${value}'`,