66 lines
1.9 KiB
Plaintext
66 lines
1.9 KiB
Plaintext
---
|
|
import Header from "../components/Header.astro";
|
|
import Footer from "../components/Footer.astro";
|
|
import { siteConfig } from "../config/site";
|
|
|
|
interface Props {
|
|
title?: string;
|
|
description?: string;
|
|
}
|
|
|
|
const { title = siteConfig.name, description = siteConfig.description } =
|
|
Astro.props;
|
|
|
|
const metaTitle =
|
|
title === siteConfig.name ? title : `${title} | ${siteConfig.name}`;
|
|
---
|
|
|
|
<!doctype html>
|
|
<html lang="en" data-theme="sunset">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width" />
|
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
<meta name="generator" content={Astro.generator} />
|
|
<meta name="description" content={description} />
|
|
<title>{metaTitle}</title>
|
|
<style>
|
|
.skip-to-content {
|
|
position: absolute;
|
|
width: 1px;
|
|
height: 1px;
|
|
padding: 0;
|
|
margin: -1px;
|
|
overflow: hidden;
|
|
clip: rect(0, 0, 0, 0);
|
|
white-space: nowrap;
|
|
border: 0;
|
|
}
|
|
|
|
.skip-to-content:focus {
|
|
position: fixed;
|
|
top: 1rem;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
width: auto;
|
|
height: auto;
|
|
clip: auto;
|
|
padding: 1rem;
|
|
background-color: white;
|
|
color: black;
|
|
z-index: 999;
|
|
border-radius: 0.5rem;
|
|
outline: 2px solid currentColor;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body class="min-h-screen flex flex-col">
|
|
<a href="#main-content" class="skip-to-content">Skip to main content</a>
|
|
<Header />
|
|
<main id="main-content" class="container mx-auto px-4 py-8 flex-grow">
|
|
<slot />
|
|
</main>
|
|
<Footer />
|
|
</body>
|
|
</html>
|