Starlight has built-in support for displaying social links with an icon in the website header using the Starlight social
configuration option.
But sometimes, you may want to add a social link with a custom icon that is not part of Starlight’s built-in icons.
Using component overrides, you can add social links with custom icons to Starlight like the last one in the following example:
Prerequisites
You will need to have an existing Starlight website.
Override the <SocialIcons/>
component
Create a custom Astro component to replace the existing <SocialIcons/>
built-in component:
---import Default from '@astrojs/starlight/components/SocialIcons.astro'---
<!-- Render the default social links. --><Default><slot /></Default>
Configure Starlight to use this new component instead of the built-in one by specifying its path in the components
configuration option in your astro.config.mjs
file:
import { defineConfig } from 'astro/config'import starlight from '@astrojs/starlight'
export default defineConfig({ integrations: [ starlight({ title: 'My Docs', components: { // Relative path to the custom component. SocialIcons: './src/components/SocialIcons.astro', }, }), ],})
Add a social link with a custom icon
Update the custom component previously created in src/components/SocialIcons.astro
to add a new social link and render its custom SVG icon before or after the existing social links:
---import Default from '@astrojs/starlight/components/SocialIcons.astro'---
<!-- Add social link with its custom SVG icon and a label. --><a href="https://example.com" rel="me" class="sl-flex"> <span class="sr-only">Social</span> <svg aria-hidden="true" fill="currentColor" height="16" width="16" viewBox="0 0 24 24" > <path d="m10 17.55-1.77 1.72a2.47 2.47 0 0 1-3.5-3.5l4.54-4.55a2.46 2.46 0 0 1 3.39-.09l.12.1a1 1 0 0 0 1.4-1.43 2.75 2.75 0 0 0-.18-.21 4.46 4.46 0 0 0-6.09.22l-4.6 4.55a4.48 4.48 0 0 0 6.33 6.33L11.37 19A1 1 0 0 0 10 17.55ZM20.69 3.31a4.49 4.49 0 0 0-6.33 0L12.63 5A1 1 0 0 0 14 6.45l1.73-1.72a2.47 2.47 0 0 1 3.5 3.5l-4.54 4.55a2.46 2.46 0 0 1-3.39.09l-.12-.1a1 1 0 0 0-1.4 1.43 2.75 2.75 0 0 0 .23.21 4.47 4.47 0 0 0 6.09-.22l4.55-4.55a4.49 4.49 0 0 0 .04-6.33Z" > </path> </svg></a><!-- Render the default social links. --><Default {...Astro.props}><slot /></Default>
<!-- Add styles to mimic the default links appearance. --><style> a { color: var(--sl-color-text-accent); margin: -0.5em; padding: 0.5em; }
a:hover { opacity: 0.66; }</style>
You can find the complete source code of this guide in this StackBlitz example.