Files
website/templates/base.html
2026-01-20 19:49:41 +01:00

135 lines
4.1 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html
lang="{{ config.default_language | default(value="en") }}"
data-theme="light"
>
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-VWE2PKJ3KL"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-VWE2PKJ3KL');
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
{# -------------------------
TITLE
------------------------- #}
<title>
{% if page is defined and page.title %}
{{ page.title }} {{ config.title }}
{% elif section is defined and section.title %}
{{ section.title }} {{ config.title }}
{% else %}
{{ config.title }}
{% endif %}
</title>
{# -------------------------
META DESCRIPTION
------------------------- #}
{% if page is defined and page.description %}
<meta name="description" content="{{ page.description }}">
{% elif section is defined and section.description %}
<meta name="description" content="{{ section.description }}">
{% elif config.description %}
<meta name="description" content="{{ config.description }}">
{% endif %}
{# -------------------------
OPEN GRAPH
------------------------- #}
<meta property="og:site_name" content="{{ config.title }}">
<meta property="og:type" content="website">
<meta property="og:title" content="{{ config.title }}">
<meta property="og:description" content="{{ config.description }}">
<meta property="og:url" content="{{ current_url | default(value=config.base_url) }}">
{# Optional: add when you have one #}
{# <meta property="og:image" content="{{ config.base_url }}/img/og-image.png"> #}
{# -------------------------
TWITTER
------------------------- #}
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="{{ config.title }}">
<meta name="twitter:description" content="{{ config.description }}">
{# Optional #}
{# <meta name="twitter:image" content="{{ config.base_url }}/img/og-image.png"> #}
{# -------------------------
STRUCTURED DATA (JSON-LD)
------------------------- #}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareSourceCode",
"name": "{{ config.title }}",
"description": "{{ config.description }}",
"url": "{{ config.base_url }}",
"license": "https://www.gnu.org/licenses/agpl-3.0.html",
"codeRepository": "{{ config.extra.repo_url | default(value="") }}",
"programmingLanguage": "Go",
"operatingSystem": "Linux"
}
</script>
{# -------------------------
STYLES
------------------------- #}
<link rel="stylesheet" href="{{ get_url(path="main.css") }}">
</head>
<body>
{% include "partials/header.html" %}
<main class="oc-main">
{% block content %}{% endblock content %}
</main>
{% include "partials/footer.html" %}
{# -------------------------
THEME TOGGLE SCRIPT
------------------------- #}
<script>
(function () {
const root = document.documentElement;
const stored = localStorage.getItem('oc-theme');
if (stored === 'dark') {
root.setAttribute('data-theme', 'dark');
} else {
root.setAttribute('data-theme', 'light');
}
const btn = document.getElementById('oc-theme-toggle');
if (!btn) return;
const updateLabel = () => {
const current = root.getAttribute('data-theme') || 'light';
btn.innerText = current === 'dark' ? '☀ Light' : '🌙 Dark';
};
updateLabel();
btn.addEventListener('click', () => {
const next = root.getAttribute('data-theme') === 'dark' ? 'light' : 'dark';
root.setAttribute('data-theme', next);
localStorage.setItem('oc-theme', next);
updateLabel();
});
})();
</script>
</body>
</html>