migrate to astro
This commit is contained in:
parent
82150df591
commit
5e67b2bb0d
135 changed files with 5886 additions and 8330 deletions
75
src/layouts/BaseLayout.astro
Normal file
75
src/layouts/BaseLayout.astro
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
---
|
||||
import BaseHead from "../components/BaseHead.astro";
|
||||
import Header from "../components/Header.astro";
|
||||
import Footer from "../components/Footer.astro";
|
||||
import { SITE_TITLE, SITE_DESCRIPTION } from "../consts";
|
||||
import DarkModeToggle from "../components/DarkModeToggle.astro";
|
||||
|
||||
interface Props {
|
||||
title?: string;
|
||||
description?: string;
|
||||
}
|
||||
|
||||
const { title = SITE_TITLE, description = SITE_DESCRIPTION } = Astro.props;
|
||||
---
|
||||
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<BaseHead title={title} description={description} />
|
||||
<script is:inline>
|
||||
// On page load or when changing themes, best to add inline in `head` to avoid FOUC
|
||||
if (
|
||||
localStorage.getItem("color-theme") === "dark" ||
|
||||
(!("color-theme" in localStorage) &&
|
||||
window.matchMedia("(prefers-color-scheme: dark)").matches)
|
||||
) {
|
||||
document.documentElement.classList.add("dark");
|
||||
} else {
|
||||
document.documentElement.classList.remove("dark");
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body class="bg-white dark:bg-gray-900 text-black dark:text-white">
|
||||
<!-- Mobile layout -->
|
||||
<div class="lg:hidden flex flex-col min-h-screen p-4">
|
||||
<div class="flex justify-between items-center mb-4">
|
||||
<h2 class="font-bold text-lg">
|
||||
<a href="/">{SITE_TITLE}</a>
|
||||
</h2>
|
||||
<DarkModeToggle />
|
||||
</div>
|
||||
|
||||
<Header />
|
||||
|
||||
<main class="flex-grow">
|
||||
<slot />
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<!-- Desktop layout -->
|
||||
<div
|
||||
class="hidden lg:grid grid-cols-[150px_1fr_60px] gap-4 min-h-screen p-4"
|
||||
>
|
||||
<div class="flex items-start">
|
||||
<h2 class="font-bold text-xl mt-3">
|
||||
<a href="/">{SITE_TITLE}</a>
|
||||
</h2>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<Header />
|
||||
<main
|
||||
class="w-full lg:w-[768px] max-w-[calc(100%-2em)] mx-auto p-2"
|
||||
>
|
||||
<slot />
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<div class="flex justify-end">
|
||||
<DarkModeToggle />
|
||||
</div>
|
||||
</div>
|
||||
<Footer />
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Add table
Add a link
Reference in a new issue