--- import GlobalStyles from '@components/GlobalStyles.astro' import '@fontsource/roboto/400.css' import '@fontsource/roboto/500.css' import '@fontsource/roboto/700.css' import ImageWrapper from '@components/misc/ImageWrapper.astro' import { profileConfig, siteConfig } from '@/config' import ConfigCarrier from '@components/ConfigCarrier.astro' import { AUTO_MODE, DARK_MODE, DEFAULT_THEME, LIGHT_MODE, } from '../constants/constants' import { defaultFavicons } from '../constants/icon' import type { Favicon } from '../types/config' import { url, pathsEqual } from '../utils/url-utils' interface Props { title?: string banner?: string description?: string } let { title, banner, description } = Astro.props // apply a class to the body element to decide the height of the banner, only used for initial page load // Swup can update the body for each page visit, but it's after the page transition, causing a delay for banner height change // so use Swup hooks instead to change the height immediately when a link is clicked const isHomePage = pathsEqual(Astro.url.pathname, url('/')) // defines global css variables // why doing this in Layout instead of GlobalStyles: https://github.com/withastro/astro/issues/6728#issuecomment-1502203757 const configHue = siteConfig.themeColor.hue if (!banner || typeof banner !== 'string' || banner.trim() === '') { banner = siteConfig.banner.src } // TODO don't use post cover as banner for now banner = siteConfig.banner.src const enableBanner = siteConfig.banner.enable let pageTitle: string if (title) { pageTitle = `${title} - ${siteConfig.title}` } else { pageTitle = `${siteConfig.title} - ${siteConfig.subtitle}` } const favicons: Favicon[] = siteConfig.favicon.length > 0 ? siteConfig.favicon : defaultFavicons const siteLang = siteConfig.lang.replace('_', '-') ---