--- import type { CollectionEntry } from 'astro:content' import { getConfig } from '@libs/config' import type { Layout, LayoutOverridesHTMLAttributes } from '@libs/layout' import Head from '@components/head/Head.astro' import Header from '@components/header/Header.astro' import Scripts from '@components/Scripts.astro' import Footer from '@components/footer/Footer.astro' import { stripMarkdown } from '@libs/utils' // The following props can be directly passed to the base layout component from any page or layout extending it, // e.g. . type Props = { // A specific layout to use for the current page used to determine if some components should be rendered or not. // Available layouts are defined in `src/libs/layout.ts`. layout?: Layout // An object containing HTML attributes that can be overridden for some HTML elements used in the base layout keyed by // HTML element names. overrides?: { body?: LayoutOverridesHTMLAttributes<'body'> // Note that main can also be overridden by the Astro slot named "main" and that the slot will take precedence over // any override. main?: LayoutOverridesHTMLAttributes<'main'> } // A string containing the robots meta tag content. If not set, the tag will not be rendered. robots?: string // An override for the page title. If not defined, the title will either be the content of the `title` frontmatter // property when rendering a markdown page or default back to the one defined in the `config.yml` file. title?: string } & MarkdownProps // The following props are automatically set by Astro (if defined) based on the markdown frontmatter when rendering a // markdown page. They can be accessed through the `Astro.props.frontmatter` object but note that they won't be set when // not rendering a markdown page. type MarkdownProps = { frontmatter?: Partial['data']> } const { frontmatter, layout, overrides, robots } = Astro.props const title = Astro.props.title ?? frontmatter?.title ?? getConfig().title const description = frontmatter?.description ? stripMarkdown(frontmatter.description) : getConfig().description const thumbnail = frontmatter?.thumbnail ? `img/${frontmatter.thumbnail}` : 'brand/bootstrap-social.png' const bodyProps = overrides?.body ?? {} const mainProps = overrides?.main ?? {} ---
{ Astro.slots.has('main') ? ( ) : (
) }