Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions components/footer/Footer.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@ import * as ROUTES from '../../common/routes'
import { getLiteral } from '../../common/i18n'

import IconTwitter from '../../public/icons/twitter'
import IconBluesky from '../../public/icons/bluesky'
import IconFacebook from '../../public/icons/facebook'
import IconYouTube from '../../public/icons/youtube'
import IconTwitch from '../../public/icons/twitch'
import IconLinkedIn from '../../public/icons/linkedin'
import IconGitHub from '../../public/icons/github'

Expand Down Expand Up @@ -49,6 +51,17 @@ const Footer = () => {
<IconTwitter />
</span>
</a>
<a
className="footer__button"
href={getLiteral('footer:bluesky-url')}
target="_blank"
rel="noreferrer"
aria-label={getLiteral('footer:bluesky-label')}
>
<span aria-hidden="true">
<IconBluesky />
</span>
</a>
<a
className="footer__button"
href={getLiteral('footer:facebook-url')}
Expand All @@ -71,6 +84,17 @@ const Footer = () => {
<IconYouTube />
</span>
</a>
<a
className="footer__button"
href={getLiteral('footer:twitch-url')}
target="_blank"
rel="noreferrer"
aria-label={getLiteral('footer:twitch-label')}
>
<span aria-hidden="true">
<IconTwitch />
</span>
</a>
<a
className="footer__button"
href={getLiteral('footer:linkedin-url')}
Expand Down
4 changes: 4 additions & 0 deletions content/commons.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@
"footer:linkedin-url": "https://www.linkedin.com/company/github",
"footer:github-label": "Follow us on GitHub",
"footer:github-url": "https://github.com/github/maintainermonth",
"footer:twitch-label": "Follow us on Twitch",
"footer:twitch-url": "https://www.twitch.tv/github",
"footer:bluesky-label": "Follow us on Bluesky",
"footer:bluesky-url": "https://bsky.app/profile/github.com",

"hero:image-description": "Illustration by Ariel Davis, of a surreal geometric assortment of hands and shapes implying collaboration",

Expand Down
20 changes: 20 additions & 0 deletions public/icons/bluesky.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
const IconBluesky = () => {
return (
<svg
className="icon-bluesky"
width="17"
height="17"
fill="none"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 568 501"
>
<path
d="M123.121 33.6637C188.241 82.5526 258.281 181.681 284 234.873C309.719 181.681 379.759 82.5526 444.879 33.6637C491.866 -1.61183 568 -28.9064 568 57.9464C568 75.2916 558.055 203.659 552.222 224.501C531.947 296.954 458.067 315.434 392.347 304.249C507.222 323.8 536.444 388.56 473.333 453.32C353.473 576.312 301.061 422.461 287.631 383.039C285.169 375.812 284.017 372.431 284 375.306C283.983 372.431 282.831 375.812 280.369 383.039C266.939 422.461 214.527 576.312 94.6667 453.32C31.5556 388.56 60.7778 323.8 175.653 304.249C109.933 315.434 36.0535 296.954 15.7778 224.501C9.94525 203.659 0 75.2916 0 57.9464C0 -28.9064 76.1345 -1.61183 123.121 33.6637Z"
fill="white"
/>
</svg>

)
Comment on lines +2 to +17
Copy link

Copilot AI Mar 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This icon file uses 4-space indentation, which is inconsistent with the repo’s Prettier config (tabWidth: 2) and the other icon components in public/icons. Please reformat (or run Prettier) so indentation matches the established 2-space style to avoid noisy diffs later.

Suggested change
return (
<svg
className="icon-bluesky"
width="17"
height="17"
fill="none"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 568 501"
>
<path
d="M123.121 33.6637C188.241 82.5526 258.281 181.681 284 234.873C309.719 181.681 379.759 82.5526 444.879 33.6637C491.866 -1.61183 568 -28.9064 568 57.9464C568 75.2916 558.055 203.659 552.222 224.501C531.947 296.954 458.067 315.434 392.347 304.249C507.222 323.8 536.444 388.56 473.333 453.32C353.473 576.312 301.061 422.461 287.631 383.039C285.169 375.812 284.017 372.431 284 375.306C283.983 372.431 282.831 375.812 280.369 383.039C266.939 422.461 214.527 576.312 94.6667 453.32C31.5556 388.56 60.7778 323.8 175.653 304.249C109.933 315.434 36.0535 296.954 15.7778 224.501C9.94525 203.659 0 75.2916 0 57.9464C0 -28.9064 76.1345 -1.61183 123.121 33.6637Z"
fill="white"
/>
</svg>
)
return (
<svg
className="icon-bluesky"
width="17"
height="17"
fill="none"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 568 501"
>
<path
d="M123.121 33.6637C188.241 82.5526 258.281 181.681 284 234.873C309.719 181.681 379.759 82.5526 444.879 33.6637C491.866 -1.61183 568 -28.9064 568 57.9464C568 75.2916 558.055 203.659 552.222 224.501C531.947 296.954 458.067 315.434 392.347 304.249C507.222 323.8 536.444 388.56 473.333 453.32C353.473 576.312 301.061 422.461 287.631 383.039C285.169 375.812 284.017 372.431 284 375.306C283.983 372.431 282.831 375.812 280.369 383.039C266.939 422.461 214.527 576.312 94.6667 453.32C31.5556 388.56 60.7778 323.8 175.653 304.249C109.933 315.434 36.0535 296.954 15.7778 224.501C9.94525 203.659 0 75.2916 0 57.9464C0 -28.9064 76.1345 -1.61183 123.121 33.6637Z"
fill="white"
/>
</svg>
)

Copilot uses AI. Check for mistakes.
}

export default IconBluesky
24 changes: 24 additions & 0 deletions public/icons/twitch.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
const IconTwitch = () => {
return (
<svg
className="icon-twitch"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 2400 2800"
width="18"
height="18"
fill="none"
>
<g>
<g id="Layer_1-2">
<path d="M500,0L0,500v1800h600v500l500-500h400l900-900V0H500z M2200,1300l-400,400h-400l-350,350v-350H600V200h1600
V1300z" fill="white"/>
<rect x="1700" y="550" className="st0" width="200" height="600" fill="white" />
<rect x="1150" y="550" className="st0" width="200" height="600" fill="white" />
Comment on lines +15 to +16
Copy link

Copilot AI Mar 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The footer hover styles only update svg path fills (see components/footer/footer.scss), but this SVG uses <rect> elements for the vertical bars. As a result, those bars won’t change color on hover and the icon will look inconsistent. Consider converting these rects to paths or updating the footer CSS to style rect fills as well.

Suggested change
<rect x="1700" y="550" className="st0" width="200" height="600" fill="white" />
<rect x="1150" y="550" className="st0" width="200" height="600" fill="white" />
<path d="M1700 550h200v600h-200z" className="st0" fill="white" />
<path d="M1150 550h200v600h-200z" className="st0" fill="white" />

Copilot uses AI. Check for mistakes.
Comment on lines +15 to +16
Copy link

Copilot AI Mar 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

className="st0" on these SVG elements doesn’t appear to be referenced anywhere in the repo. If it’s leftover from an SVG export, removing it would reduce noise and avoid implying there’s styling being applied.

Suggested change
<rect x="1700" y="550" className="st0" width="200" height="600" fill="white" />
<rect x="1150" y="550" className="st0" width="200" height="600" fill="white" />
<rect x="1700" y="550" width="200" height="600" fill="white" />
<rect x="1150" y="550" width="200" height="600" fill="white" />

Copilot uses AI. Check for mistakes.
</g>
</g>
</svg>

)
Comment on lines +2 to +21
Copy link

Copilot AI Mar 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This icon file uses 4-space indentation, which is inconsistent with the repo’s Prettier config (tabWidth: 2) and the other icon components in public/icons. Please reformat (or run Prettier) so indentation matches the established 2-space style to avoid noisy diffs later.

Suggested change
return (
<svg
className="icon-twitch"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 2400 2800"
width="18"
height="18"
fill="none"
>
<g>
<g id="Layer_1-2">
<path d="M500,0L0,500v1800h600v500l500-500h400l900-900V0H500z M2200,1300l-400,400h-400l-350,350v-350H600V200h1600
V1300z" fill="white"/>
<rect x="1700" y="550" className="st0" width="200" height="600" fill="white" />
<rect x="1150" y="550" className="st0" width="200" height="600" fill="white" />
</g>
</g>
</svg>
)
return (
<svg
className="icon-twitch"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 2400 2800"
width="18"
height="18"
fill="none"
>
<g>
<g id="Layer_1-2">
<path d="M500,0L0,500v1800h600v500l500-500h400l900-900V0H500z M2200,1300l-400,400h-400l-350,350v-350H600V200h1600
V1300z" fill="white"/>
<rect x="1700" y="550" className="st0" width="200" height="600" fill="white" />
<rect x="1150" y="550" className="st0" width="200" height="600" fill="white" />
</g>
</g>
</svg>
)

Copilot uses AI. Check for mistakes.
}

export default IconTwitch
Loading