mirror of
https://github.com/hunvreus/basecoat.git
synced 2026-11-14 05:58:19 +00:00
97 lines
3.4 KiB
Plaintext
97 lines
3.4 KiB
Plaintext
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<!-- Theme -->
|
|
<script>
|
|
function isDark() {
|
|
return localStorage.getItem('theme') === 'dark' || (!localStorage.getItem('theme') && window.matchMedia('(prefers-color-scheme: dark)').matches);
|
|
}
|
|
|
|
if (isDark()) {
|
|
document.documentElement.classList.add('dark');
|
|
}
|
|
|
|
document.addEventListener('alpine:init', () => {
|
|
Alpine.store('theme', {
|
|
isDark: isDark(),
|
|
toggle() {
|
|
this.isDark = document.documentElement.classList.toggle('dark');
|
|
localStorage.setItem('theme', this.isDark ? 'dark' : 'light');
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
|
|
<meta charset="utf-8">
|
|
<meta http-equiv="Content-Language" content="en">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
|
|
<!-- Title & Description -->
|
|
<title>{{ site.title + ": " + title if page.url === "/" else title + " - " + site.title }}</title>
|
|
<meta name="description" content="{{ description or site.description }}"/>
|
|
<meta name="title" content="{{ title }} | Basecoat">
|
|
<meta name="description" content="{{ description }}">
|
|
|
|
<!-- Favicon -->
|
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
|
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
|
|
|
<!-- CSS -->
|
|
<link rel="preconnect" href="https://rsms.me/">
|
|
<link rel="stylesheet" href="https://rsms.me/inter/inter.css">
|
|
<link rel="stylesheet" href="/assets/styles.css">
|
|
|
|
<!-- JS -->
|
|
<script src="/assets/js/dialog.js" defer></script>
|
|
<script src="/assets/js/dropdown-menu.js" defer></script>
|
|
<script src="/assets/js/popover.js" defer></script>
|
|
<script src="/assets/js/select.js" defer></script>
|
|
<script src="/assets/js/sidebar.js" defer></script>
|
|
<script src="/assets/js/tabs.js" defer></script>
|
|
<script src="/assets/js/toast.js" defer></script>
|
|
<script>
|
|
document.addEventListener('alpine:init', () => {
|
|
window.basecoat.registerDialog(Alpine);
|
|
window.basecoat.registerDropdownMenu(Alpine);
|
|
window.basecoat.registerPopover(Alpine);
|
|
window.basecoat.registerSelect(Alpine);
|
|
window.basecoat.registerSidebar(Alpine);
|
|
window.basecoat.registerTabs(Alpine);
|
|
window.basecoat.registerToast(Alpine);
|
|
});
|
|
</script>
|
|
<script src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js" defer></script>
|
|
<script src="https://unpkg.com/htmx.org@2.0.4"></script>
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github-dark.min.css">
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/django.min.js"></script>
|
|
<script>
|
|
const applyHighlighting = () => { if (window.hljs) hljs.highlightAll(); };
|
|
|
|
if (!window._hljsInitialized) {
|
|
window._hljsInitialized = true;
|
|
document.addEventListener('DOMContentLoaded', applyHighlighting);
|
|
document.addEventListener('htmx:afterSwap', applyHighlighting);
|
|
}
|
|
</script>
|
|
|
|
{% if head %}{{ head | safe }}{% endif %}
|
|
</head>
|
|
<body>
|
|
|
|
{% include "partials/sidebar.njk" %}
|
|
|
|
<main id="content">
|
|
<header class="bg-background sticky inset-x-0 top-0 isolate z-20 flex shrink-0 items-center gap-2 border-b z-10">
|
|
{% include "partials/header.njk" %}
|
|
</header>
|
|
|
|
<div class="p-4">
|
|
{{ content | safe }}
|
|
</div>
|
|
</main>
|
|
|
|
{% from "toast.njk" import toaster %}
|
|
{{ toaster() }}
|
|
</body>
|
|
</html> |