Monorepo for Tangled
tangled.org
1{{ define "layouts/blogbase" }}
2 <!doctype html>
3 <html lang="en" class="dark:bg-gray-900">
4 <head>
5 <meta charset="UTF-8" />
6 <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"/>
7 <meta name="description" content="The next-generation social coding platform."/>
8
9 <!-- Open Graph defaults -->
10 <meta property="og:site_name" content="Tangled" />
11 <meta property="og:type" content="website" />
12 <meta property="og:locale" content="en_US" />
13
14 <!-- Keywords -->
15 <meta name="keywords" content="git, code collaboration, AT Protocol, open source, version control, social coding, code hosting" />
16
17 <!-- Author and copyright -->
18 <meta name="author" content="Tangled" />
19 <meta name="robots" content="index, follow" />
20
21 <link rel="icon" href="/static/logos/dolly.ico" sizes="48x48"/>
22 <link rel="icon" href="/static/logos/dolly.svg" sizes="any" type="image/svg+xml"/>
23 <link rel="apple-touch-icon" href="/static/logos/dolly.png"/>
24
25 <!-- preconnect to image cdn -->
26 <link rel="preconnect" href="https://avatar.tangled.sh" />
27 <link rel="preconnect" href="https://camo.tangled.sh" />
28
29 <!-- preload main font -->
30 <link rel="preload" href="/static/fonts/InterVariable.woff2" as="font" type="font/woff2" crossorigin />
31
32 <link rel="stylesheet" href="/static/tw.css?{{ cssContentHash }}" type="text/css" />
33
34 <script>
35 document.addEventListener('DOMContentLoaded', () => {
36 const nodes = document.querySelectorAll('pre.mermaid');
37 if (!nodes.length) return;
38 const script = document.createElement('script');
39 script.src = '/static/mermaid.min.js';
40 script.onload = async () => {
41 mermaid.initialize({
42 startOnLoad: true,
43 theme: window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'default',
44 });
45 await mermaid.run({ nodes });
46 };
47 document.head.appendChild(script);
48 });
49 </script>
50 <title>{{ block "title" . }}{{ end }}</title>
51 {{ block "extrameta" . }}{{ end }}
52 </head>
53 <body class="min-h-screen flex flex-col gap-4 bg-slate-100 dark:bg-gray-900 dark:text-white transition-colors duration-200 {{ block "bodyClasses" . }} {{ end }}">
54 {{ block "topbarLayout" . }}{{ end }}
55
56 {{ block "mainLayout" . }}
57 <div class="flex-grow">
58 <div class="max-w-screen-lg mx-auto flex flex-col gap-4">
59 {{ block "contentLayout" . }}
60 <main>
61 {{ block "content" . }}{{ end }}
62 </main>
63 {{ end }}
64
65 {{ block "contentAfterLayout" . }}
66 <main>
67 {{ block "contentAfter" . }}{{ end }}
68 </main>
69 {{ end }}
70 </div>
71 </div>
72 {{ end }}
73
74 {{ block "footerLayout" . }}{{ end }}
75 </body>
76 </html>
77{{ end }}