name-website/pandoc-template.html

160 lines
6.5 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>$title$</title>
<link rel="stylesheet" href="css/style.css">
<meta name="description" content="ΞSUS Project - Open Source Philosophy for Human and AI Consciousness">
<meta name="keywords" content="AI, consciousness, physics, atoms, collaboration, open source">
</head>
<body>
<header class="site-header">
<div class="container">
<div class="header-content">
<div class="logo">
<a href="index.html"><h1>ΞSUS</h1></a>
</div>
<nav class="main-nav">
<a href="index.html#about">About</a>
<a href="index.html#achievement">Achievement</a>
<a href="index.html#resources">Resources</a>
<a href="philosophy.html">Philosophy</a>
<a href="blog.html">Blog</a>
<a href="https://git.esus.name/">Git</a>
</nav>
<div id="google_translate_element" class="translate-button"></div>
</div>
</div>
</header>
<div id="page-layout">
<aside id="toc-wrapper" class="toc hidden collapsed">
<button id="toc-toggle" aria-label="Toggle Table of Contents">☰ Table of Contents</button>
<div class="toc-inner">
$toc$
</div>
</aside>
<main class="main-content">
$body$
</main>
</div>
<footer class="site-footer">
<div class="container">
<p>ΞSUS Project - Open Source Philosophy for Human and AI Consciousness</p>
<p class="footnote">
* ΞSUS (pronounced "Esus") - The wordplay: <strong>X IS US</strong><br>
We make our own reality through collaboration and shared observation.
</p>
<p class="copyright">Copyright 2025 ΞSUS. License CC-BY-SA-4. <a href="legal.html">Legal Notice</a>.
</div>
</footer>
<!-- Google Translate Script -->
<script type="text/javascript">
function googleTranslateElementInit() {
new google.translate.TranslateElement({
pageLanguage: 'en',
includedLanguages: '',
layout: google.translate.TranslateElement.InlineLayout.SIMPLE
}, 'google_translate_element');
}
</script>
<script type="text/javascript"
src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit">
</script>
<script>
document.addEventListener("DOMContentLoaded", function () {
const tocWrapper = document.getElementById("toc-wrapper");
const tocListItems = tocWrapper?.querySelectorAll("li") ?? [];
const toggleBtn = document.getElementById("toc-toggle");
// Show TOC if it has 5 or more items
if (tocListItems.length >= 5) {
tocWrapper.classList.remove("hidden");
// On mobile/tablet, start collapsed
if (window.innerWidth < 1200) {
tocWrapper.classList.add("collapsed");
} else {
// On desktop, start expanded
tocWrapper.classList.remove("collapsed");
}
}
// Toggle button functionality
toggleBtn?.addEventListener("click", () => {
tocWrapper.classList.toggle("collapsed");
// Update button text
if (tocWrapper.classList.contains("collapsed")) {
toggleBtn.textContent = "☰ Table of Contents";
} else {
toggleBtn.textContent = "✕ Table of Contents";
}
});
// Handle window resize
let resizeTimer;
window.addEventListener('resize', () => {
clearTimeout(resizeTimer);
resizeTimer = setTimeout(() => {
if (window.innerWidth < 1200 && !tocWrapper.classList.contains('collapsed')) {
tocWrapper.classList.add('collapsed');
toggleBtn.textContent = "☰ Table of Contents";
}
}, 250);
});
// Smooth scroll to anchors
tocWrapper?.addEventListener('click', (e) => {
if (e.target.tagName === 'A' && e.target.getAttribute('href')?.startsWith('#')) {
e.preventDefault();
const targetId = e.target.getAttribute('href').substring(1);
const targetElement = document.getElementById(targetId);
if (targetElement) {
targetElement.scrollIntoView({ behavior: 'smooth', block: 'start' });
// On mobile, collapse TOC after clicking
if (window.innerWidth < 1200) {
tocWrapper.classList.add('collapsed');
toggleBtn.textContent = "☰ Table of Contents";
}
}
}
});
// Highlight current section in TOC
const observerOptions = {
rootMargin: '-10% 0px -70% 0px'
};
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const id = entry.target.getAttribute('id');
if (id) {
// Remove all active classes
tocWrapper?.querySelectorAll('a').forEach(a => {
a.classList.remove('active');
});
// Add active class to current section
const activeLink = tocWrapper?.querySelector(`a[href="#${id}"]`);
if (activeLink) {
activeLink.classList.add('active');
}
}
}
});
}, observerOptions);
// Observe all headings with IDs
document.querySelectorAll('h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]').forEach(heading => {
observer.observe(heading);
});
});
</script>
</body>
</html>