Starlight Footer Credits
Starlight Footer Credits
Intégration des crédits personnalisés 'Built with Starlight' et 'Powered by Cloudflare' avec icônes natives
Méthode : Surcharge de composant Starlight native (
components.Footer)
Starlight :@astrojs/starlight@0.42.4
Intégré le : 2026-10-13
Inspiration : Dépôt officielstarlight-view-modes(docs/src/components/Footer.astro)
1. Objectif
Afficher de façon élégante, sobre et centrée les crédits de la plateforme au bas de chaque page de documentation :
- Built with Starlight (accompagné de l’étoile officielle Starlight)
- Point séparateur médian (puce ronde
.dot) - Powered by Cloudflare (accompagné du nuage officiel Cloudflare en orange
#f6821f)
Aucun plugin externe n’est requis : Starlight fournit nativement le mécanisme d’override de composants et les glyphes SVG dans son composant <Icon />.
2. Composant personnalisé FooterWithCredits.astro1/2
Le composant est créé dans apps/web/src/components/starlight/FooterWithCredits.astro :
2. Composant personnalisé FooterWithCredits.astro2/2
---import Default from '@astrojs/starlight/components/Footer.astro';import { Icon } from '@astrojs/starlight/components';---
<Default> <slot /></Default>
<div class="kudos sl-flex"> <a class="sl-flex" href="https://starlight.astro.build" target="_blank" rel="noopener noreferrer"> <Icon name="starlight" /> Built with Starlight </a> <span class="dot" aria-hidden="true" /> <a class="sl-flex cloudflare" href="https://workers.cloudflare.com" target="_blank" rel="noopener noreferrer"> <Icon name="cloudflare" /> Powered by Cloudflare </a></div>
<style> @layer starlight.core { .kudos { align-items: center; justify-content: center; flex-wrap: wrap; gap: 0.5em; margin: 2.5rem auto 2rem auto; font-size: var(--sl-text-xs); color: var(--sl-color-gray-3); } .kudos a { align-items: center; gap: 0.5em; text-decoration: none; color: inherit; } .kudos a:hover { color: var(--sl-color-white); } .dot { width: 0.2rem; height: 0.2rem; border-radius: 50%; background-color: currentColor; } }
@layer starlight.components { .kudos :global(svg) { color: var(--sl-color-orange); } .kudos .cloudflare :global(svg) { color: #f6821f; } }</style>3. Configuration dans astro.config.mjs
Dans apps/web/astro.config.mjs, le composant est enregistré dans components :
starlight({ // ... components: { Sidebar: './src/components/starlight/SidebarWithAuth.astro', Footer: './src/components/starlight/FooterWithCredits.astro', },})4. Architecture & Cohérence avec les autres fonctionnalités1/2
- Préservation des métadonnées et pagination : En important
Default from '@astrojs/starlight/components/Footer.astro', le composant conserve fidèlement :- Le lien d’édition GitHub (
EditLink) - La date de dernière modification (
LastUpdated) - La pagination précédente/suivante (
Pagination), qui embarque également les commentaires Giscus.
- Le lien d’édition GitHub (
4. Architecture & Cohérence avec les autres fonctionnalités2/2
- Thèmes clair et sombre : Utilise les tokens officiels Starlight (
var(--sl-text-xs),var(--sl-color-gray-3),var(--sl-color-white)), garantissant un contraste optimal sur tous les thèmes. - Zéro régression TypeScript : Évite les modules virtuels internes non déclarés (
virtual:starlight/*) au profit de l’export stable public@astrojs/starlight/components/Footer.astro.
5. Tests de Validation1/2
- Compilation TypeScript (
pnpm run typecheck/astro check) : 0 erreurs, 0 warnings - Build de production Cloudflare (
pnpm run build) : Succès (code 0)
5. Tests de Validation2/2
- Dans le navigateur (
http://localhost:8787/gettingstarted/01-setup-local/) :- La barre de crédits apparaît proprement en bas de page sous la pagination.
- Les liens pointent vers les cibles respectives avec
target="_blank". - Le séparateur point
.dotet les deux icônes colorées sont bien alignés.