SiteTitle.astro 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. ---
  2. import { logos } from 'virtual:starlight/user-images';
  3. import config from 'virtual:starlight/user-config';
  4. const { siteTitle, siteTitleHref } = Astro.locals.starlightRoute;
  5. ---
  6. <a href={siteTitleHref} class="site-title sl-flex">
  7. {
  8. config.logo && logos.dark && (
  9. <>
  10. <img
  11. class:list={{ 'light:sl-hidden print:hidden': !('src' in config.logo) }}
  12. alt={config.logo.alt}
  13. src={logos.dark.src}
  14. width={logos.dark.width}
  15. height={logos.dark.height}
  16. />
  17. {/* Show light alternate if a user configure both light and dark logos. */}
  18. {!('src' in config.logo) && (
  19. <img
  20. class="dark:sl-hidden print:block"
  21. alt={config.logo.alt}
  22. src={logos.light?.src}
  23. width={logos.light?.width}
  24. height={logos.light?.height}
  25. />
  26. )}
  27. </>
  28. )
  29. }
  30. <span class:list={{ 'sr-only': config.logo?.replacesTitle }} translate="no">
  31. {siteTitle}
  32. </span>
  33. </a>
  34. <style>
  35. @layer starlight.core {
  36. .site-title {
  37. align-items: center;
  38. gap: var(--sl-nav-gap);
  39. font-size: var(--sl-text-h4);
  40. font-weight: 600;
  41. color: var(--sl-color-text-accent);
  42. text-decoration: none;
  43. white-space: nowrap;
  44. min-width: 0;
  45. }
  46. span {
  47. overflow: hidden;
  48. }
  49. img {
  50. height: calc(var(--sl-nav-height) - 2 * var(--sl-nav-pad-y));
  51. width: auto;
  52. max-width: 100%;
  53. object-fit: contain;
  54. object-position: 0 50%;
  55. }
  56. }
  57. </style>