summaryrefslogtreecommitdiff
path: root/layout.html
diff options
context:
space:
mode:
authorHimanshu Sardana <himanshusardana2005@gmail.com>2026-03-27 00:23:01 +0000
committerHimanshu Sardana <himanshusardana2005@gmail.com>2026-03-27 00:23:01 +0000
commit38f75dbac195815710bcfb54dd7c6bfd1afeb224 (patch)
treee8a1129f934be977d71b29d189c44311c33609c0 /layout.html
parentad8a7daced9ac7b8e58b5eaba92dec05dc90b88d (diff)
chore: cleanup root dir
Diffstat (limited to 'layout.html')
-rw-r--r--layout.html242
1 files changed, 0 insertions, 242 deletions
diff --git a/layout.html b/layout.html
deleted file mode 100644
index 97bdb4b..0000000
--- a/layout.html
+++ /dev/null
@@ -1,242 +0,0 @@
-<!doctype html>
-<html lang="en">
- <head>
- <meta charset="UTF-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="description" content="{{ .Title }}" />
- <title>{{ .Title }}</title>
- <link rel="preconnect" href="https://fonts.googleapis.com" />
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
- <link
- href="https://cdn.jsdelivr.net/npm/prismjs/themes/prism.css"
- rel="stylesheet"
- />
- <script src="https://cdn.jsdelivr.net/npm/prismjs/prism.js"></script>
- <script src="https://cdn.jsdelivr.net/npm/prismjs/plugins/autoloader/prism-autoloader.min.js"></script>
- <link rel="stylesheet" href="../style.css" />
- <style>
- .toc {
- position: static !important;
- width: auto !important;
- right: auto !important;
- top: auto !important;
- background: var(--bg-subtle) !important;
- border: 1px solid var(--border) !important;
- padding: 1.2rem 1.4rem !important;
- margin: 0 0 3rem !important;
- }
-
- .toc-title {
- margin: 0 0 0.8rem !important;
- font-size: 0.65rem !important;
- line-height: 1 !important;
- display: block;
- }
-
- .toc ul {
- display: block;
- margin: 0;
- padding: 0;
- }
-
- .toc li {
- display: block;
- padding-left: 0 !important;
- margin: 0.25rem 0 !important;
- }
-
- .toc li::before {
- display: none !important;
- }
-
- .toc a.active {
- color: var(--text);
- font-weight: 500;
- }
-
- .toc-toggle {
- display: flex;
- align-items: center;
- gap: 0.5rem;
- cursor: pointer;
- background: none;
- border: none;
- padding: 0;
- font-family: var(--mono);
- font-size: 0.65rem;
- letter-spacing: 0.1em;
- text-transform: uppercase;
- color: var(--text-muted);
- margin-bottom: 0.8rem;
- width: 100%;
- text-align: left;
- }
-
- .toc-toggle svg {
- transition: transform 140ms ease;
- flex-shrink: 0;
- }
-
- .toc-toggle[aria-expanded="false"] svg {
- transform: rotate(-90deg);
- }
-
- .toc-body {
- overflow: hidden;
- transition:
- max-height 240ms ease,
- opacity 200ms ease;
- max-height: 800px;
- opacity: 1;
- }
-
- .toc-body.collapsed {
- max-height: 0;
- opacity: 0;
- }
-
- @media (max-width: 699px) {
- .toc-title {
- display: none;
- }
- .toc-toggle {
- display: flex;
- }
- .toc-body {
- }
- }
-
- @media (min-width: 700px) {
- .toc-toggle {
- display: none;
- }
- .toc-title {
- display: block;
- }
- .toc-body {
- max-height: none !important;
- opacity: 1 !important;
- }
- }
-
- @media (min-width: 1100px) {
- .toc {
- position: fixed !important;
- top: 6rem !important;
- left: max(2rem, calc((100vw - 680px) / 2 - 220px)) !important;
- width: 200px !important;
- background: transparent !important;
- border: none !important;
- padding: 0 !important;
- margin: 0 !important;
- }
-
- .toc-toggle {
- display: none;
- }
- .toc-title {
- display: block;
- }
- .toc-body {
- max-height: none !important;
- opacity: 1 !important;
- }
-
- .toc-level-2 {
- margin-left: 0.8rem !important;
- }
- .toc-level-3 {
- margin-left: 1.4rem !important;
- }
- .toc-level-4 {
- margin-left: 2rem !important;
- }
- }
- </style>
- </head>
- <body>
- <main class="article">
- <nav class="toc" aria-label="Table of contents">
- <button
- class="toc-toggle"
- aria-expanded="false"
- aria-controls="toc-body"
- >
- <svg
- width="10"
- height="10"
- viewBox="0 0 10 10"
- fill="none"
- aria-hidden="true"
- >
- <path
- d="M2 3.5L5 6.5L8 3.5"
- stroke="currentColor"
- stroke-width="1.4"
- stroke-linecap="round"
- stroke-linejoin="round"
- />
- </svg>
- Contents
- </button>
-
- <div class="toc-body collapsed" id="toc-body">
- <ul>
- {{ range .TOC }}
- <li class="toc-level-{{ .Level }}">
- <a href="#{{ .ID }}">{{ .Text }}</a>
- </li>
- {{ end }}
- </ul>
- </div>
- </nav>
-
- <h1>{{ .Title }}</h1>
- {{ .Content }}
- </main>
-
- <script>
- const toggle = document.querySelector(".toc-toggle");
- const body = document.getElementById("toc-body");
-
- if (toggle && body) {
- toggle.addEventListener("click", () => {
- const expanded = toggle.getAttribute("aria-expanded") === "true";
- toggle.setAttribute("aria-expanded", String(!expanded));
- body.classList.toggle("collapsed", expanded);
- });
- }
-
- const tocLinks = document.querySelectorAll(".toc a");
-
- if (tocLinks.length > 0) {
- const headingIDs = Array.from(tocLinks).map((a) =>
- decodeURIComponent(a.getAttribute("href").slice(1)),
- );
- const headings = headingIDs
- .map((id) => document.getElementById(id))
- .filter(Boolean);
-
- let current = null;
-
- const observer = new IntersectionObserver(
- (entries) => {
- entries.forEach((entry) => {
- if (entry.isIntersecting) {
- current = entry.target.id;
- }
- });
-
- tocLinks.forEach((a) => {
- const id = decodeURIComponent(a.getAttribute("href").slice(1));
- a.classList.toggle("active", id === current);
- });
- },
- { rootMargin: "0px 0px -70% 0px", threshold: 0 },
- );
-
- headings.forEach((h) => observer.observe(h));
- }
- </script>
- </body>
-</html>