This repository has no description
1{{ define "title" }}the tangled blog{{ end }}
2
3{{ define "extrameta" }}
4<meta name="description" content="The Tangled blog." />
5<link rel="alternate" type="application/atom+xml" title="Atom" href="/feed.xml" />
6{{ end }}
7
8<!-- overrides the default slate bg -->
9{{ define "bodyClasses" }}!bg-white dark:!bg-gray-900{{ end }}
10
11{{ define "topbarLayout" }}
12<header class="max-w-screen-xl mx-auto w-full" style="z-index: 20;">
13 {{ template "layouts/fragments/topbar" . }}
14</header>
15{{ end }}
16
17{{ define "content" }}
18<div class="max-w-screen-lg mx-auto w-full px-4 py-10">
19
20 <header class="mb-10 text-center">
21 <h1 class="text-3xl font-bold dark:text-white mb-2">the tangled blog</h1>
22 <p class="text-gray-500 dark:text-gray-400">all the ropes and scaffolding</p>
23 </header>
24
25 {{ if .Featured }}
26 <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6 mb-14">
27 {{ range .Featured }}
28 <a href="/{{ .Meta.Slug }}" class="no-underline hover:no-underline group flex flex-col bg-white dark:bg-gray-800 rounded border border-gray-200 dark:border-gray-700 overflow-hidden hover:bg-gray-100/25 hover:dark:bg-gray-700/25 transition-colors">
29 <div class="aspect-[16/9] overflow-hidden bg-gray-100 dark:bg-gray-700">
30 <img src="{{ .Meta.Image }}" alt="{{ .Meta.Title }}" class="w-full h-full object-cover group-hover:scale-[1.02] transition-transform duration-300" />
31 </div>
32 <div class="flex flex-col flex-1 px-5 py-4">
33 <div class="text-xs text-gray-400 dark:text-gray-500 mb-2">
34 {{ $date := .ParsedDate }}{{ $date | shortTimeFmt}}
35 {{ if .Meta.Draft }}<span class="text-red-500">[draft]</span>{{ end }}
36 </div>
37 <h2 class="font-bold text-gray-900 dark:text-white text-base leading-snug mb-1 group-hover:underline">{{ .Meta.Title }}</h2>
38 <p class="text-sm text-gray-500 dark:text-gray-400 line-clamp-2 flex-1">{{ .Meta.Subtitle }}</p>
39 <div class="flex items-center mt-4">
40 {{ $hasAvatar := false }}{{ range .Meta.Authors }}{{ if tinyAvatar .Handle }}{{ $hasAvatar = true }}{{ end }}{{ end }}
41 {{ if $hasAvatar }}
42 <div class="inline-flex items-center -space-x-2">
43 {{ range .Meta.Authors }}
44 {{ $av := tinyAvatar .Handle }}{{ if $av }}<img src="{{ $av }}" class="size-6 rounded-full border border-gray-300 dark:border-gray-700" alt="{{ .Name }}" title="{{ .Name }}" />{{ end }}
45 {{ end }}
46 </div>
47 {{ end }}
48 </div>
49 </div>
50 </a>
51 {{ end }}
52 </div>
53 {{ end }}
54
55 <div class="grid grid-cols-1 rounded border border-gray-200 dark:border-gray-700 divide-y divide-gray-200 dark:divide-gray-700">
56 {{ range .Posts }}
57 <a href="/{{ .Meta.Slug }}" class="no-underline hover:no-underline group flex items-center justify-between gap-4 px-6 py-3 hover:bg-gray-100/25 hover:dark:bg-gray-700/25 transition-colors">
58 <div class="flex items-center gap-3 min-w-0">
59 <div class="inline-flex items-center -space-x-2 shrink-0">
60 {{ range .Meta.Authors }}
61 <img src="{{ tinyAvatar .Handle }}" class="size-5 rounded-full border border-gray-300 dark:border-gray-700" alt="{{ .Name }}" title="{{ .Name }}" />
62 {{ end }}
63 </div>
64 <span class="font-medium text-gray-900 dark:text-white group-hover:underline truncate">
65 {{ .Meta.Title }}
66 {{ if .Meta.Draft }}<span class="text-red-500 text-xs font-normal ml-1">[draft]</span>{{ end }}
67 </span>
68 </div>
69 <div class="text-sm text-gray-400 dark:text-gray-500 shrink-0">
70 {{ $date := .ParsedDate }}{{ $date | shortTimeFmt }}
71 </div>
72 </a>
73 {{ end }}
74 </div>
75
76</div>
77{{ end }}
78
79{{ define "footerLayout" }}{{ template "blog/fragments/footer" . }}{{ end }}