Monorepo for Tangled
at master 91 lines 4.2 kB view raw
1{{ define "fragments/logotypeSmall" }} 2 <span class="flex items-center gap-2"> 3 {{ template "fragments/dolly/logo" "size-8 text-black dark:text-white" }} 4 <span class="font-bold text-xl not-italic">tangled</span> 5 <span class="font-normal not-italic text-xs rounded bg-gray-100 dark:bg-gray-700 px-1">alpha</span> 6 </span> 7{{ end }} 8 9<!doctype html> 10<html lang="en"> 11 <head> 12 <meta charset="UTF-8" /> 13 <meta name="viewport" content="width=device-width, initial-scale=1.0"/> 14 <meta name="description" content="{{ index .Meta "subtitle" }}"/> 15 <meta property="og:site_name" content="Tangled" /> 16 <meta property="og:type" content="website" /> 17 <meta property="og:title" content="{{ index .Meta "title" }}" /> 18 <meta property="og:description" content="{{ index .Meta "subtitle" }}" /> 19 <meta property="og:url" content="https://blog.tangled.org/{{ index .Meta "slug" }}" /> 20 <meta property="og:image" content="https://blog.tangled.org{{ index .Meta "image" }}" /> 21 <meta property="og:image:width" content="1200" /> 22 <meta property="og:image:height" content="630" /> 23 <meta name="twitter:card" content="summary_large_image" /> 24 <meta name="twitter:title" content="{{ index .Meta "title" }}" /> 25 <meta name="twitter:description" content="{{ index .Meta "subtitle" }}" /> 26 <meta name="twitter:image" content="https://blog.tangled.org{{ index .Meta "image" }}" /> 27 <link rel="alternate" type="application/atom+xml" title="Atom" href="/feed.xml" /> 28 <link rel="icon" href="/static/logos/dolly.ico" sizes="48x48"/> 29 <link rel="icon" href="/static/logos/dolly.svg" sizes="any" type="image/svg+xml"/> 30 <link rel="apple-touch-icon" href="/static/logos/dolly.png"/> 31 <link rel="preload" href="/static/fonts/InterVariable.woff2" as="font" type="font/woff2" crossorigin /> 32 <link rel="stylesheet" href="/static/tw.css" type="text/css" /> 33 <title>{{ index .Meta "title" }}</title> 34 </head> 35 <body class="bg-slate-100 dark:bg-gray-900 dark:text-white min-h-screen flex flex-col gap-4"> 36 37 <header class="w-full drop-shadow-sm bg-white dark:bg-gray-800"> 38 <nav class="mx-auto px-6 py-2"> 39 <div class="flex justify-between items-center"> 40 <a href="/" class="text-2xl no-underline hover:no-underline flex items-center gap-2"> 41 {{ template "fragments/logotypeSmall" }} 42 </a> 43 </div> 44 </nav> 45 </header> 46 47 <div class="flex-grow flex flex-col max-w-[75ch] mx-auto w-full px-1"> 48 <main class="prose dark:prose-invert w-full max-w-none"> 49 50 <header class="not-prose"> 51 <p class="px-6 mb-0 text-sm text-gray-600 dark:text-gray-400"> 52 {{ $dateStr := index .Meta "date" }} 53 {{ $date := parsedate $dateStr }} 54 {{ $date.Format | shortTimeFmt }} 55 56 <span class="mx-2 select-none">&middot;</span> 57 58 by 59 {{ $authors := index .Meta "authors" }} 60 {{ if eq (len $authors) 2 }} 61 <a href="https://bsky.app/profile/{{ (index $authors 0).handle }}" class="no-underline">{{ (index $authors 0).name }}</a> 62 &amp; 63 <a href="https://bsky.app/profile/{{ (index $authors 1).handle }}" class="no-underline">{{ (index $authors 1).name }}</a> 64 {{ else }} 65 {{ range $authors }} 66 <a href="https://bsky.app/profile/{{ .handle }}" class="no-underline">{{ .name }}</a> 67 {{ end }} 68 {{ end }} 69 </p> 70 71 {{ if index .Meta "draft" }} 72 <h1 class="px-6 mb-0 text-2xl font-bold">{{ index .Meta "title" }} <span class="text-red-500">[draft]</span></h1> 73 {{ else }} 74 <h1 class="px-6 mb-0 text-2xl font-bold">{{ index .Meta "title" }}</h1> 75 {{ end }} 76 <p class="italic px-6 mt-1 mb-4 text-lg text-gray-600 dark:text-gray-400">{{ index .Meta "subtitle" }}</p> 77 </header> 78 79 <article class="bg-white dark:bg-gray-800 px-6 py-4 rounded drop-shadow-sm"> 80 {{ .Body }} 81 </article> 82 83 </main> 84 </div> 85 86 <footer class="mt-12"> 87 {{ template "layouts/fragments/footer" . }} 88 </footer> 89 90 </body> 91</html>