summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-04-15 15:28:22 +0200
committerDanilo M. <danix@danix.xyz>2026-04-15 15:28:22 +0200
commit64f240a3a626969e1c2ea548a0f0688aded93ca8 (patch)
tree2243640fcc08b49b418cb784ba164edd384f5734
parent7aae17e448e8ea2efde632b7c8064bab6ba2447d (diff)
downloaddanixxyz-64f240a3a626969e1c2ea548a0f0688aded93ca8.tar.gz
danixxyz-64f240a3a626969e1c2ea548a0f0688aded93ca8.zip
feat: create base template with theme toggle, fonts, and Alpine.js
-rw-r--r--themes/danix-xyz-hacker/layouts/_default/baseof.html75
1 files changed, 75 insertions, 0 deletions
diff --git a/themes/danix-xyz-hacker/layouts/_default/baseof.html b/themes/danix-xyz-hacker/layouts/_default/baseof.html
new file mode 100644
index 0000000..89653a9
--- /dev/null
+++ b/themes/danix-xyz-hacker/layouts/_default/baseof.html
@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+<html lang="{{ .Lang }}" class="theme-dark">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="description" content="{{ .Site.Params.siteDescription }}">
+ <meta property="og:locale" content="{{ .Site.Language.Params.locale }}">
+ <meta property="og:type" content="website">
+ <meta property="og:url" content="{{ .Permalink }}">
+ <meta property="og:site_name" content="{{ .Site.Title }}">
+ <title>{{ .Title }}{{ if ne .Title .Site.Title }} — {{ .Site.Title }}{{ end }}</title>
+
+ <!-- Fonts -->
+ <link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;600&family=Oxanium:wght@400;600;700&display=swap" rel="stylesheet">
+
+ <!-- Feather Icons -->
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.css">
+
+ <!-- Tailwind CSS -->
+ {{ $css := resources.Get "css/main.css" | resources.ExecuteAsTemplate "css/main.css" . | minify }}
+ <link rel="stylesheet" href="{{ $css.RelPermalink }}">
+
+ <!-- Syntax highlighting (Chroma) -->
+ {{ $chroma := resources.Get "css/chroma-custom.css" | minify }}
+ <link rel="stylesheet" href="{{ $chroma.RelPermalink }}">
+</head>
+<body class="bg-bg text-text antialiased">
+ <!-- Dot grid background pattern -->
+ <div class="fixed inset-0 pointer-events-none opacity-5 dot-grid" style="
+ background-image: radial-gradient(circle, currentColor 1px, transparent 1px);
+ background-size: 30px 30px;
+ z-index: -1;
+ "></div>
+
+ <!-- Theme toggle & language toggle (before Alpine loads to prevent flash) -->
+ <script>
+ (function() {
+ const theme = localStorage.getItem('theme') || 'dark';
+ const html = document.documentElement;
+ html.classList.remove('theme-light', 'theme-dark');
+ html.classList.add('theme-' + theme);
+ })();
+ </script>
+
+ <!-- Navigation -->
+ {{ partial "header.html" . }}
+
+ <!-- Main content -->
+ <main id="main" class="relative z-10">
+ {{ block "main" . }}{{ end }}
+ </main>
+
+ <!-- Footer -->
+ {{ partial "footer.html" . }}
+
+ <!-- Alpine.js -->
+ <script src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js" defer></script>
+
+ <!-- Feather Icons initialization -->
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
+ <script>feather.replace();</script>
+
+ <!-- Theme toggle script -->
+ {{ $themeScript := resources.Get "js/theme-toggle.js" | minify }}
+ <script src="{{ $themeScript.RelPermalink }}"></script>
+
+ <!-- Menu script -->
+ {{ $menuScript := resources.Get "js/menu.js" | minify }}
+ <script src="{{ $menuScript.RelPermalink }}"></script>
+
+ <!-- Language switcher script -->
+ {{ $langScript := resources.Get "js/language-switcher.js" | minify }}
+ <script src="{{ $langScript.RelPermalink }}"></script>
+</body>
+</html>