carlos / carloku Public

Clone
git clone https://amadan.net/carlos/carloku

Plain git — no account needed to clone.

Download

Download this file

1{#
2 🤖 The documentation shell: sidebar, section sub-nav, article column.
3
4 One layout serves the index and every page, because they share the
5 whole chrome. Zero client-side JavaScript beyond site.js's existing
6 enhancements (both no-ops here, guarded by querySelector) — there is
7 no search box, and findability is the nav, the card index, and the
8 per-page section list.
9
10 The sidebar precedes the article in document order, which on a narrow
11 viewport is what puts the nav above the content without a toggle.
12
13 The sidebar is a <nav>, not an <aside>: with no search, it IS this
14 site's whole navigation model, not supplementary content. The article
15 is wrapped in <main> so the skip link (first focusable element in
16 <body>) has a landmark to target — with dozens of sidebar links ahead
17 of it on every page, a keyboard user needs a way past them.
18#}
19<!doctype html>
20<html lang="en">
21<head>
22<meta charset="utf-8">
23<meta name="viewport" content="width=device-width, initial-scale=1">
24<title>{{ title }} &mdash; Carloku docs</title>
25<meta name="description" content="{{ description }}">
26<link rel="icon" href="/favicon.svg" type="image/svg+xml">
27<meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)">
28<meta name="theme-color" content="#0e0c13" media="(prefers-color-scheme: dark)">
29<meta property="og:title" content="{{ title }} &mdash; Carloku docs">
30<meta property="og:description" content="{{ description }}">
31<meta property="og:type" content="article">
32<meta property="og:url" content="https://carloku.com/docs/{% if not isIndex %}{{ docsSlug }}/{% endif %}">
33<link rel="preload" href="/fonts/Geist-Variable.woff2" as="font" type="font/woff2" crossorigin>
34<link rel="preload" href="/fonts/GeistMono-Variable.woff2" as="font" type="font/woff2" crossorigin>
35<link rel="stylesheet" href="/site.css">
36<link rel="stylesheet" href="/docs.css">
37</head>
38<body class="docs-body">
39<a class="skip" href="#main">Skip to content</a>
40<p class="brandline"><a href="/"><b>Carloku</b></a> <span aria-hidden="true">/</span> <span class="here">docs</span><span class="folio" aria-hidden="true">carloku.com/docs</span></p>
41
42<div class="docs-shell">
43 <nav class="docs-nav" aria-label="Documentation">
44 <p class="docs-nav-title"><a href="/docs/"{% if isIndex %} class="active" aria-current="page"{% endif %}>Documentation</a></p>
45 {% for section in docsnav.sections %}
46 <p class="docs-nav-section">{{ section.title }}</p>
47 <ul>
48 {% for entry in section.pages %}
49 <li>
50 <a href="/docs/{{ entry.slug }}/"{% if entry.slug == docsSlug %} class="active" aria-current="page"{% endif %}>{{ entry.label }}</a>
51 {% if entry.slug == docsSlug %}
52 {% set sections = collections.docs | docsRawFor(docsSlug) | docsSections %}
53 {% if sections.length %}
54 <ul class="docs-subnav">
55 {% for s in sections %}<li><a href="#{{ s.anchor }}">{{ s.title }}</a></li>{% endfor %}
56 </ul>
57 {% endif %}
58 {% endif %}
59 </li>
60 {% endfor %}
61 </ul>
62 {% endfor %}
63 </nav>
64
65 <main id="main">
66 <article class="docs-article">
67 {{ content | safe }}
68
69 {% if not isIndex %}
70 <p class="docs-foot">
71 <a href="/docs/{{ docsSlug }}.md">Read this page as markdown</a> &mdash;
72 exact, unstyled, and cheap for an agent to fetch.
73 </p>
74 {% endif %}
75 </article>
76 </main>
77</div>
78
79<footer class="docs-sitefoot">
80 <p>🤖 These pages were written by an LLM, on the ideas, instruction, and editing of humans. AI-written text here is always marked, visibly &mdash; that's <a href="https://11factor.org/#x">factor X</a>.</p>
81 <p>To report abuse on an app Carloku hosts (anything at oncarlos.com), email <a href="mailto:abuse@carloku.com">abuse@carloku.com</a>.</p>
82 <p class="docs-provenance">These pages are written and maintained in the <a href="https://github.com/carlosframework/carloku">carloku</a> repo, alongside the rest of this site.</p>
83</footer>
84<script src="/site.js" defer></script>
85</body>
86</html>
87