badmanners.xyz/src/layouts/BaseLayout.astro

99 lines
4.1 KiB
Text

---
import { ViewTransitions } from "astro:transitions";
import { ENABLE_VIEW_TRANSITIONS } from "astro:env/client";
import "../styles/base.css";
import "../styles/fonts.css";
import DarkModeScript from "../components/DarkModeScript.astro";
import NavHeader from "../components/NavHeader.astro";
import { IconSun, IconMoon } from "../components/icons";
import AgeRestrictedModal from "../components/AgeRestrictedModal.astro";
type Props = {
pageTitle?: string;
};
const { pageTitle } = Astro.props;
const title = pageTitle ? `${pageTitle} | Bad Manners` : "Bad Manners";
---
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<link rel="manifest" href="/site.webmanifest" />
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#37b340" />
<meta name="msapplication-TileColor" content="#37b340" />
<meta name="theme-color" content="#7DD05A" data-react-helmet="true" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="generator" content={Astro.generator} />
<title>{title}</title>
<link
rel="alternate"
type="application/rss+xml"
href={new URL("/feed.xml", Astro.site)}
title="Commission status"
/>
<link
rel="alternate"
type="application/rss+xml"
href="https://gallery.badmanners.xyz/feed.xml"
title="Gallery feed"
/>
<meta property="og:title" content={title} />
<slot name="head-description" />
<meta property="og:url" content={Astro.url} />
<meta content="/logo.webp" property="og:image" />
{ENABLE_VIEW_TRANSITIONS ? <ViewTransitions /> : null}
</head>
<body>
<div class="flex min-h-screen flex-col">
<div
id="bg"
class="fixed h-screen w-screen bg-radial from-bm-300 to-bm-500 dark:from-green-800 dark:to-green-950 print:hidden"
aria-hidden="true"
>
</div>
<div class="relative my-auto flex flex-col items-center justify-center px-3 py-8 sm:py-12 md:px-12 print:p-0">
<main
class="w-full max-w-5xl flex-shrink-0 flex-grow-0 justify-center rounded-xl bg-stone-50 px-4 pb-6 pt-4 text-center text-base font-normal tracking-tight text-stone-700 sm:px-8 sm:pb-8 sm:pt-6 sm:text-lg dark:bg-zinc-800 dark:text-zinc-50 print:bg-transparent print:p-0"
>
<NavHeader />
<slot />
</main>
<footer
class="sm:text-md flex flex-col items-center pt-9 text-sm font-medium tracking-wide text-black dark:text-white"
>
<div class="flex items-center">
<span id="copyright"
>&copy; <time datetime="2023">2023</time>&ndash;<time datetime={new Date().getFullYear().toString()}
>{new Date().getFullYear()}</time
> Bad Manners</span
>
<span class="print:hidden" aria-hidden="true">&nbsp;|&nbsp;</span>
<a
href="/licenses.toml"
rel="license"
class="transition-colors hover:text-white hover:underline focus:text-white focus:underline motion-reduce:transition-none dark:hover:text-bm-300 dark:focus:text-bm-300 print:hidden"
>
Licenses
</a>
</div>
<button
data-dark-mode
style={{ display: "none" }}
class="mt-2 p-2 transition-colors hover:text-green-700 focus:text-green-700 motion-reduce:transition-none dark:hover:text-bm-300 dark:focus:text-bm-300 print:hidden"
aria-labelledby="label-toggle-dark-mode"
>
<IconSun width="1.5rem" height="1.5rem" class="hidden dark:block" />
<IconMoon width="1.5rem" height="1.5rem" class="block dark:hidden" />
<span id="label-toggle-dark-mode" class="sr-only">Toggle dark mode</span>
</button>
</footer>
</div>
</div>
<DarkModeScript />
<AgeRestrictedModal />
</body>
</html>