-
-
Notifications
You must be signed in to change notification settings - Fork 8.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(content-blog,theme-classic) Add additional social media sites
Add Icon and Handle support for: - Bluesky - Mastodon - Threads - Twitch - YouTube Includes Dogfooding page for testing
- Loading branch information
1 parent
c5a6c26
commit e8fefe5
Showing
13 changed files
with
291 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -21,6 +21,11 @@ export const AuthorSocialsSchema = Joi.object<AuthorSocials>({ | |
.try(Joi.number(), Joi.string()) | ||
.custom((val) => String(val)), | ||
x: Joi.string(), | ||
bluesky: Joi.string(), | ||
threads: Joi.string(), | ||
mastodon: Joi.string(), | ||
twitch: Joi.string(), | ||
youtube: Joi.string(), | ||
}).unknown(); | ||
|
||
type PredefinedPlatformNormalizer = (value: string) => string; | ||
|
@@ -35,6 +40,11 @@ const PredefinedPlatformNormalizers: Record< | |
linkedin: (handle: string) => `https://www.linkedin.com/in/${handle}/`, | ||
stackoverflow: (userId: string) => | ||
`https://stackoverflow.com/users/${userId}`, | ||
bluesky: (handle: string) => `https://bsky.app/profile/${handle}`, | ||
threads: (handle: string) => `https://www.threads.net/@${handle}`, | ||
mastodon: (handle: string) => `https://mastodon.social/@${handle}`, // can be in format [email protected] and it will redirect if needed | ||
twitch: (handle: string) => `https://twitch.tv/${handle}`, | ||
youtube: (handle: string) => `https://youtube.com/@${handle}`, // https://support.google.com/youtube/answer/6180214?hl=en | ||
}; | ||
|
||
type SocialEntry = [string, string]; | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
27 changes: 27 additions & 0 deletions
27
packages/docusaurus-theme-classic/src/theme/Icon/Socials/Bluesky/index.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
/** | ||
* 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 type {SVGProps, ReactNode} from 'react'; | ||
|
||
// SVG Source: https://svgl.app/ | ||
function Bluesky(props: SVGProps<SVGSVGElement>): ReactNode { | ||
return ( | ||
<svg | ||
xmlns="http://www.w3.org/2000/svg" | ||
width="1em" | ||
height="1em" | ||
preserveAspectRatio="xMidYMid" | ||
viewBox="0 0 256 226" | ||
{...props}> | ||
<path | ||
fill="#1185FE" | ||
d="M55.491 15.172c29.35 22.035 60.917 66.712 72.509 90.686 11.592-23.974 43.159-68.651 72.509-90.686C221.686-.727 256-13.028 256 26.116c0 7.818-4.482 65.674-7.111 75.068-9.138 32.654-42.436 40.983-72.057 35.942 51.775 8.812 64.946 38 36.501 67.187-54.021 55.433-77.644-13.908-83.696-31.676-1.11-3.257-1.63-4.78-1.637-3.485-.008-1.296-.527.228-1.637 3.485-6.052 17.768-29.675 87.11-83.696 31.676-28.445-29.187-15.274-58.375 36.5-67.187-29.62 5.041-62.918-3.288-72.056-35.942C4.482 91.79 0 33.934 0 26.116 0-13.028 34.314-.727 55.491 15.172Z" | ||
/> | ||
</svg> | ||
); | ||
} | ||
export default Bluesky; |
43 changes: 43 additions & 0 deletions
43
packages/docusaurus-theme-classic/src/theme/Icon/Socials/Mastodon/index.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
/** | ||
* 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 type {SVGProps, ReactNode} from 'react'; | ||
|
||
// SVG Source: https://svgl.app/ | ||
function Mastodon(props: SVGProps<SVGSVGElement>): ReactNode { | ||
return ( | ||
<svg | ||
xmlns="http://www.w3.org/2000/svg" | ||
fill="none" | ||
viewBox="0 0 61 65" | ||
width="1em" | ||
height="1em" | ||
{...props}> | ||
<path | ||
fill="url(#a)" | ||
d="M60.754 14.39C59.814 7.406 53.727 1.903 46.512.836 45.294.656 40.682 0 29.997 0h-.08C19.23 0 16.938.656 15.72.836 8.705 1.873 2.299 6.82.745 13.886c-.748 3.48-.828 7.338-.689 10.877.198 5.075.237 10.142.697 15.197a71.482 71.482 0 0 0 1.664 9.968c1.477 6.056 7.458 11.096 13.317 13.152a35.718 35.718 0 0 0 19.484 1.028 28.365 28.365 0 0 0 2.107-.576c1.572-.5 3.413-1.057 4.766-2.038a.154.154 0 0 0 .062-.118v-4.899a.146.146 0 0 0-.055-.111.145.145 0 0 0-.122-.028 54 54 0 0 1-12.644 1.478c-7.328 0-9.298-3.478-9.863-4.925a15.258 15.258 0 0 1-.857-3.882.142.142 0 0 1 .178-.145 52.976 52.976 0 0 0 12.437 1.477c1.007 0 2.012 0 3.02-.026 4.213-.119 8.654-.334 12.8-1.144.103-.02.206-.038.295-.065 6.539-1.255 12.762-5.196 13.394-15.176.024-.393.083-4.115.083-4.523.003-1.386.446-9.829-.065-15.017Z" | ||
/> | ||
<path | ||
fill="#fff" | ||
d="M50.394 22.237v17.35H43.52V22.749c0-3.545-1.478-5.353-4.483-5.353-3.303 0-4.958 2.139-4.958 6.364v9.217h-6.835V23.76c0-4.225-1.657-6.364-4.96-6.364-2.988 0-4.48 1.808-4.48 5.353v16.84H10.93V22.237c0-3.545.905-6.362 2.715-8.45 1.868-2.082 4.317-3.152 7.358-3.152 3.519 0 6.178 1.354 7.951 4.057l1.711 2.871 1.714-2.871c1.773-2.704 4.432-4.056 7.945-4.056 3.038 0 5.487 1.069 7.36 3.152 1.81 2.085 2.712 4.902 2.71 8.449Z" | ||
/> | ||
<defs> | ||
<linearGradient | ||
id="a" | ||
x1={30.5} | ||
x2={30.5} | ||
y1={0} | ||
y2={65} | ||
gradientUnits="userSpaceOnUse"> | ||
<stop stopColor="#6364FF" /> | ||
<stop offset={1} stopColor="#563ACC" /> | ||
</linearGradient> | ||
</defs> | ||
</svg> | ||
); | ||
} | ||
export default Mastodon; |
30 changes: 30 additions & 0 deletions
30
packages/docusaurus-theme-classic/src/theme/Icon/Socials/Threads/index.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 type {SVGProps, ReactNode} from 'react'; | ||
|
||
import clsx from 'clsx'; | ||
import styles from './styles.module.css'; | ||
|
||
// SVG Source: https://svgl.app/ | ||
function Threads(props: SVGProps<SVGSVGElement>): ReactNode { | ||
return ( | ||
<svg | ||
xmlns="http://www.w3.org/2000/svg" | ||
aria-label="Threads" | ||
viewBox="0 0 192 192" | ||
width="1em" | ||
fill="none" | ||
height="1em" | ||
{...props} | ||
className={clsx(props.className, styles.threadsSvg)} | ||
style={{'--dark': '#000', '--light': '#fff'} as React.CSSProperties}> | ||
<path d="M141.537 88.988a66.667 66.667 0 0 0-2.518-1.143c-1.482-27.307-16.403-42.94-41.457-43.1h-.34c-14.986 0-27.449 6.396-35.12 18.036l13.779 9.452c5.73-8.695 14.724-10.548 21.348-10.548h.229c8.249.053 14.474 2.452 18.503 7.129 2.932 3.405 4.893 8.111 5.864 14.05-7.314-1.243-15.224-1.626-23.68-1.14-23.82 1.371-39.134 15.264-38.105 34.568.522 9.792 5.4 18.216 13.735 23.719 7.047 4.652 16.124 6.927 25.557 6.412 12.458-.683 22.231-5.436 29.049-14.127 5.178-6.6 8.453-15.153 9.899-25.93 5.937 3.583 10.337 8.298 12.767 13.966 4.132 9.635 4.373 25.468-8.546 38.376-11.319 11.308-24.925 16.2-45.488 16.351-22.809-.169-40.06-7.484-51.275-21.742C35.236 139.966 29.808 120.682 29.605 96c.203-24.682 5.63-43.966 16.133-57.317C56.954 24.425 74.204 17.11 97.013 16.94c22.975.17 40.526 7.52 52.171 21.847 5.71 7.026 10.015 15.86 12.853 26.162l16.147-4.308c-3.44-12.68-8.853-23.606-16.219-32.668C147.036 9.607 125.202.195 97.07 0h-.113C68.882.194 47.292 9.642 32.788 28.08 19.882 44.485 13.224 67.315 13.001 95.932L13 96v.067c.224 28.617 6.882 51.447 19.788 67.854C47.292 182.358 68.882 191.806 96.957 192h.113c24.96-.173 42.554-6.708 57.048-21.189 18.963-18.945 18.392-42.692 12.142-57.27-4.484-10.454-13.033-18.945-24.723-24.553ZM98.44 129.507c-10.44.588-21.286-4.098-21.82-14.135-.397-7.442 5.296-15.746 22.461-16.735 1.966-.114 3.895-.169 5.79-.169 6.235 0 12.068.606 17.371 1.765-1.978 24.702-13.58 28.713-23.802 29.274Z" /> | ||
</svg> | ||
); | ||
} | ||
export default Threads; |
14 changes: 14 additions & 0 deletions
14
packages/docusaurus-theme-classic/src/theme/Icon/Socials/Threads/styles.module.css
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
/** | ||
* 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. | ||
*/ | ||
|
||
[data-theme='dark'] .threadsSvg { | ||
fill: var(--light); | ||
} | ||
|
||
[data-theme='light'] .threadsSvg { | ||
fill: var(--dark); | ||
} |
39 changes: 39 additions & 0 deletions
39
packages/docusaurus-theme-classic/src/theme/Icon/Socials/Twitch/index.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
/** | ||
* 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 type {SVGProps, ReactNode} from 'react'; | ||
|
||
// SVG Source: https://svgl.app/ | ||
function Twitch(props: SVGProps<SVGSVGElement>): ReactNode { | ||
return ( | ||
<svg | ||
xmlns="http://www.w3.org/2000/svg" | ||
xmlSpace="preserve" | ||
id="Layer_1" | ||
x={0} | ||
y={0} | ||
viewBox="0 0 2400 2800" | ||
width="1em" | ||
height="1em" | ||
{...props}> | ||
<path | ||
d="m2200 1300-400 400h-400l-350 350v-350H600V200h1600z" | ||
fill="#fff" | ||
/> | ||
<g id="Layer_1-2"> | ||
<path | ||
d="M500 0 0 500v1800h600v500l500-500h400l900-900V0H500zm1700 1300-400 400h-400l-350 350v-350H600V200h1600v1100z" | ||
fill="#9146ff" | ||
/> | ||
<path | ||
d="M1700 550h200v600h-200zM1150 550h200v600h-200z" | ||
fill="#9146ff" | ||
/> | ||
</g> | ||
</svg> | ||
); | ||
} | ||
export default Twitch; |
26 changes: 26 additions & 0 deletions
26
packages/docusaurus-theme-classic/src/theme/Icon/Socials/YouTube/index.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
/** | ||
* 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 type {SVGProps, ReactNode} from 'react'; | ||
|
||
function YouTube(props: SVGProps<SVGSVGElement>): ReactNode { | ||
return ( | ||
<svg | ||
viewBox="0 0 256 180" | ||
width="1em" | ||
height="1em" | ||
xmlns="http://www.w3.org/2000/svg" | ||
preserveAspectRatio="xMidYMid" | ||
{...props}> | ||
<path | ||
d="M250.346 28.075A32.18 32.18 0 0 0 227.69 5.418C207.824 0 127.87 0 127.87 0S47.912.164 28.046 5.582A32.18 32.18 0 0 0 5.39 28.24c-6.009 35.298-8.34 89.084.165 122.97a32.18 32.18 0 0 0 22.656 22.657c19.866 5.418 99.822 5.418 99.822 5.418s79.955 0 99.82-5.418a32.18 32.18 0 0 0 22.657-22.657c6.338-35.348 8.291-89.1-.164-123.134Z" | ||
fill="red" | ||
/> | ||
<path fill="#FFF" d="m102.421 128.06 66.328-38.418-66.328-38.418z" /> | ||
</svg> | ||
); | ||
} | ||
export default YouTube; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.