Monorepo for Tangled tangled.org

appview: pages/templates: add opengraph tags

authored by anirudh.fi and committed by Tangled 7aa0e09f 6dbaf7f9

-21
appview/pages/templates/index.html
··· 1 - <html> 2 - {{ template "layouts/head" . }} 3 - 4 - <header> 5 - <h1>{{ .meta.Title }}</h1> 6 - <h2>{{ .meta.Description }}</h2> 7 - </header> 8 - <body> 9 - <main> 10 - <div class="index"> 11 - {{ range .info }} 12 - <div class="index-name"> 13 - <a href="/{{ .Name }}">{{ .DisplayName }}</a> 14 - </div> 15 - <div class="desc">{{ .Desc }}</div> 16 - <div>{{ .Idle }}</div> 17 - {{ end }} 18 - </div> 19 - </main> 20 - </body> 21 - </html>
+7 -8
appview/pages/templates/repo/blob.html
··· 1 1 {{ define "title" }}{{ .Path }} at {{ .Ref }} &middot; {{ .RepoInfo.FullName }}{{ end }} 2 2 3 - 4 3 {{ define "extrameta" }} 5 - <meta name="vcs:clone" content="https://tangled.sh/{{ .RepoInfo.FullName }}"/> 6 - <meta name="forge:summary" content="https://tangled.sh/{{ .RepoInfo.FullName }}"> 7 - <meta name="forge:dir" content="https://tangled.sh/{{ .RepoInfo.FullName }}/tree/{ref}/{path}"> 8 - <meta name="forge:file" content="https://tangled.sh/{{ .RepoInfo.FullName }}/blob/{ref}/{path}"> 9 - <meta name="forge:line" content="https://tangled.sh/{{ .RepoInfo.FullName }}/blob/{ref}/{path}#L{line}"> 10 - <meta name="go-import" content="tangled.sh/{{ .RepoInfo.FullNameWithoutAt }} git https://tangled.sh/{{ .RepoInfo.FullName }}"> 4 + {{ template "repo/fragments/meta" . }} 5 + 6 + {{ $title := printf "%s at %s &middot; %s" .Path .Ref .RepoInfo.FullName }} 7 + {{ $url := printf "https://tangled.sh/%s/blob/%s/%s" .RepoInfo.FullName .Ref .Path }} 8 + 9 + {{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo "Title" $title "Url" $url) }} 10 + 11 11 {{ end }} 12 - 13 12 14 13 {{ define "repoContent" }} 15 14 {{ $lines := split .Contents }}
+8 -1
appview/pages/templates/repo/branches.html
··· 1 1 {{ define "title" }} 2 - branches · {{ .RepoInfo.FullName }} 2 + branches &middot; {{ .RepoInfo.FullName }} 3 + {{ end }} 4 + 5 + {{ define "extrameta" }} 6 + {{ $title := printf "branches &middot; %s" .RepoInfo.FullName }} 7 + {{ $url := printf "https://tangled.sh/%s/branches" .RepoInfo.FullName }} 8 + 9 + {{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo "Title" $title "Url" $url) }} 3 10 {{ end }} 4 11 5 12 {{ define "repoContent" }}
+8
appview/pages/templates/repo/commit.html
··· 1 1 {{ define "title" }} commit {{ .Diff.Commit.This }} &middot; {{ .RepoInfo.FullName }} {{ end }} 2 2 3 + {{ define "extrameta" }} 4 + {{ $title := printf "commit %s &middot; %s" .Diff.Commit.This .RepoInfo.FullName }} 5 + {{ $url := printf "https://tangled.sh/%s/commit/%s" .RepoInfo.FullName .Diff.Commit.This }} 6 + 7 + {{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo "Title" $title "Url" $url) }} 8 + {{ end }} 9 + 10 + 3 11 {{ define "repoContent" }} 4 12 5 13 {{ $repo := .RepoInfo.FullName }}
+5
appview/pages/templates/repo/empty.html
··· 1 1 {{ define "title" }}{{ .RepoInfo.FullName }}{{ end }} 2 2 3 + {{ define "extrameta" }} 4 + {{ template "repo/fragments/meta" . }} 5 + {{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo) }} 6 + {{ end }} 7 + 3 8 {{ define "repoContent" }} 4 9 <main> 5 10 <p class="text-center pt-5 text-gray-400 dark:text-gray-500">
+26
appview/pages/templates/repo/fragments/meta.html
··· 1 + {{ define "repo/fragments/meta" }} 2 + <meta 3 + name="vcs:clone" 4 + content="https://tangled.sh/{{ .RepoInfo.FullName }}" 5 + /> 6 + <meta 7 + name="forge:summary" 8 + content="https://tangled.sh/{{ .RepoInfo.FullName }}" 9 + /> 10 + <meta 11 + name="forge:dir" 12 + content="https://tangled.sh/{{ .RepoInfo.FullName }}/tree/{ref}/{path}" 13 + /> 14 + <meta 15 + name="forge:file" 16 + content="https://tangled.sh/{{ .RepoInfo.FullName }}/blob/{ref}/{path}" 17 + /> 18 + <meta 19 + name="forge:line" 20 + content="https://tangled.sh/{{ .RepoInfo.FullName }}/blob/{ref}/{path}#L{line}" 21 + /> 22 + <meta 23 + name="go-import" 24 + content="tangled.sh/{{ .RepoInfo.FullNameWithoutAt }} git https://tangled.sh/{{ .RepoInfo.FullName }}" 25 + /> 26 + {{ end }}
+11
appview/pages/templates/repo/fragments/og.html
··· 1 + {{ define "repo/fragments/og" }} 2 + {{ $title := or .Title .RepoInfo.FullName }} 3 + {{ $description := or .Description .RepoInfo.Description }} 4 + {{ $url := or .Url (printf "https://tangled.sh/%s" .RepoInfo.FullName) }} 5 + 6 + 7 + <meta property="og:title" content="{{ unescapeHtml $title }}" /> 8 + <meta property="og:type" content="object" /> 9 + <meta property="og:url" content="{{ $url }}" /> 10 + <meta property="og:description" content="{{ $description }}" /> 11 + {{ end }}
+5 -24
appview/pages/templates/repo/index.html
··· 1 1 {{ define "title" }}{{ .RepoInfo.FullName }} at {{ .Ref }}{{ end }} 2 2 3 + 3 4 {{ define "extrameta" }} 4 - <meta 5 - name="vcs:clone" 6 - content="https://tangled.sh/{{ .RepoInfo.FullName }}" 7 - /> 8 - <meta 9 - name="forge:summary" 10 - content="https://tangled.sh/{{ .RepoInfo.FullName }}" 11 - /> 12 - <meta 13 - name="forge:dir" 14 - content="https://tangled.sh/{{ .RepoInfo.FullName }}/tree/{ref}/{path}" 15 - /> 16 - <meta 17 - name="forge:file" 18 - content="https://tangled.sh/{{ .RepoInfo.FullName }}/blob/{ref}/{path}" 19 - /> 20 - <meta 21 - name="forge:line" 22 - content="https://tangled.sh/{{ .RepoInfo.FullName }}/blob/{ref}/{path}#L{line}" 23 - /> 24 - <meta 25 - name="go-import" 26 - content="tangled.sh/{{ .RepoInfo.FullNameWithoutAt }} git https://tangled.sh/{{ .RepoInfo.FullName }}" 27 - /> 5 + {{ template "repo/fragments/meta" . }} 6 + 7 + {{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo) }} 28 8 {{ end }} 9 + 29 10 30 11 {{ define "repoContent" }} 31 12 <main>
+8
appview/pages/templates/repo/issues/issue.html
··· 1 1 {{ define "title" }}{{ .Issue.Title }} &middot; issue #{{ .Issue.IssueId }} &middot; {{ .RepoInfo.FullName }}{{ end }} 2 2 3 + 4 + {{ define "extrameta" }} 5 + {{ $title := printf "%s &middot; issue #%d &middot; %s" .Issue.Title .Issue.IssueId .RepoInfo.FullName }} 6 + {{ $url := printf "https://tangled.sh/%s/issues/%d" .RepoInfo.FullName .Issue.IssueId }} 7 + 8 + {{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo "Title" $title "Url" $url) }} 9 + {{ end }} 10 + 3 11 {{ define "repoContent" }} 4 12 <header class="pb-4"> 5 13 <h1 class="text-2xl">
+7
appview/pages/templates/repo/issues/issues.html
··· 1 1 {{ define "title" }}issues &middot; {{ .RepoInfo.FullName }}{{ end }} 2 2 3 + {{ define "extrameta" }} 4 + {{ $title := "issues"}} 5 + {{ $url := printf "https://tangled.sh/%s/issues" .RepoInfo.FullName }} 6 + 7 + {{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo "Title" $title "Url" $url) }} 8 + {{ end }} 9 + 3 10 {{ define "repoContent" }} 4 11 <div class="flex justify-between items-center gap-4"> 5 12 <div class="flex gap-4">
+7
appview/pages/templates/repo/log.html
··· 1 1 {{ define "title" }}commits &middot; {{ .RepoInfo.FullName }}{{ end }} 2 2 3 + {{ define "extrameta" }} 4 + {{ $title := printf "commits &middot; %s" .RepoInfo.FullName }} 5 + {{ $url := printf "https://tangled.sh/%s/commits" .RepoInfo.FullName }} 6 + 7 + {{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo "Title" $title "Url" $url) }} 8 + {{ end }} 9 + 3 10 {{ define "repoContent" }} 4 11 <section id="commit-table" class="overflow-x-auto"> 5 12 <h2 class="font-bold text-sm mb-4 uppercase dark:text-white">
+9 -1
appview/pages/templates/repo/pulls/interdiff.html
··· 1 1 {{ define "title" }} 2 - interdiff of round #{{ .Round }} and #{{ sub .Round 1 }}; pull #{{ .Pull.PullId }} &middot; {{ .RepoInfo.FullName }} 2 + interdiff of round #{{ .Round }} and #{{ sub .Round 1 }} &middot; pull #{{ .Pull.PullId }} &middot; {{ .RepoInfo.FullName }} 3 + {{ end }} 4 + 5 + 6 + {{ define "extrameta" }} 7 + {{ $title := printf "interdiff of %d and %d &middot; %s &middot; pull #%d &middot; %s" .Round (sub .Round 1) .Pull.Title .Pull.PullId .RepoInfo.FullName }} 8 + {{ $url := printf "https://tangled.sh/%s/pulls/%d/round/%d" .RepoInfo.FullName .Pull.PullId .Round }} 9 + 10 + {{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo "Title" (unescapeHtml $title) "Url" $url) }} 3 11 {{ end }} 4 12 5 13 {{ define "content" }}
+9
appview/pages/templates/repo/pulls/patch.html
··· 2 2 patch of {{ .Pull.Title }} &middot; round #{{ .Round }} &middot; pull #{{ .Pull.PullId }} &middot; {{ .RepoInfo.FullName }} 3 3 {{ end }} 4 4 5 + 6 + {{ define "extrameta" }} 7 + {{ $title := printf "patch of %s &middot; pull #%d &middot; %s" .Pull.Title .Pull.PullId .RepoInfo.FullName }} 8 + {{ $url := printf "https://tangled.sh/%s/pulls/%d/round/%d" .RepoInfo.FullName .Pull.PullId .Round }} 9 + 10 + {{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo "Title" $title "Url" $url) }} 11 + {{ end }} 12 + 13 + 5 14 {{ define "content" }} 6 15 <section> 7 16 <section
+8
appview/pages/templates/repo/pulls/pull.html
··· 2 2 {{ .Pull.Title }} &middot; pull #{{ .Pull.PullId }} &middot; {{ .RepoInfo.FullName }} 3 3 {{ end }} 4 4 5 + {{ define "extrameta" }} 6 + {{ $title := printf "%s &middot; pull #%d &middot; %s" .Pull.Title .Pull.PullId .RepoInfo.FullName }} 7 + {{ $url := printf "https://tangled.sh/%s/pulls/%d" .RepoInfo.FullName .Pull.PullId }} 8 + 9 + {{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo "Title" $title "Url" $url) }} 10 + {{ end }} 11 + 12 + 5 13 {{ define "repoContent" }} 6 14 {{ template "repo/pulls/fragments/pullHeader" . }} 7 15 {{ end }}
+7
appview/pages/templates/repo/pulls/pulls.html
··· 1 1 {{ define "title" }}pulls &middot; {{ .RepoInfo.FullName }}{{ end }} 2 2 3 + {{ define "extrameta" }} 4 + {{ $title := "pulls"}} 5 + {{ $url := printf "https://tangled.sh/%s/pulls" .RepoInfo.FullName }} 6 + 7 + {{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo "Title" $title "Url" $url) }} 8 + {{ end }} 9 + 3 10 {{ define "repoContent" }} 4 11 <div class="flex justify-between items-center"> 5 12 <div class="flex gap-4">
+7
appview/pages/templates/repo/tags.html
··· 2 2 tags · {{ .RepoInfo.FullName }} 3 3 {{ end }} 4 4 5 + {{ define "extrameta" }} 6 + {{ $title := printf "tags &middot; %s" .RepoInfo.FullName }} 7 + {{ $url := printf "https://tangled.sh/%s/tags" .RepoInfo.FullName }} 8 + 9 + {{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo "Title" $title "Url" $url) }} 10 + {{ end }} 11 + 5 12 {{ define "repoContent" }} 6 13 <section> 7 14 <h2 class="mb-4 text-sm text-left text-gray-700 dark:text-gray-300 uppercase font-bold">tags</h2>
+11 -6
appview/pages/templates/repo/tree.html
··· 2 2 3 3 4 4 {{ define "extrameta" }} 5 - <meta name="vcs:clone" content="https://tangled.sh/{{ .RepoInfo.FullName }}"/> 6 - <meta name="forge:summary" content="https://tangled.sh/{{ .RepoInfo.FullName }}"> 7 - <meta name="forge:dir" content="https://tangled.sh/{{ .RepoInfo.FullName }}/tree/{ref}/{path}"> 8 - <meta name="forge:file" content="https://tangled.sh/{{ .RepoInfo.FullName }}/blob/{ref}/{path}"> 9 - <meta name="forge:line" content="https://tangled.sh/{{ .RepoInfo.FullName }}/blob/{ref}/{path}#L{line}"> 10 - <meta name="go-import" content="tangled.sh/{{ .RepoInfo.FullNameWithoutAt }} git https://tangled.sh/{{ .RepoInfo.FullName }}"> 5 + 6 + {{ $path := "" }} 7 + {{ range .BreadCrumbs }} 8 + {{ $path = printf "%s/%s" $path (index . 0) }} 9 + {{ end }} 10 + 11 + {{ template "repo/fragments/meta" . }} 12 + {{ $title := printf "%s at %s &middot; %s" $path .Ref .RepoInfo.FullName }} 13 + {{ $url := printf "https://tangled.sh/%s/tree/%s%s" .RepoInfo.FullName .Ref $path }} 14 + 15 + {{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo "Title" $title "Url" $url) }} 11 16 {{ end }} 12 17 13 18
+132 -72
appview/pages/templates/timeline.html
··· 1 1 {{ define "title" }}timeline{{ end }} 2 2 3 + {{ define "extrameta" }} 4 + <meta property="og:title" content="timeline · tangled" /> 5 + <meta property="og:type" content="object" /> 6 + <meta property="og:url" content="https://tangled.sh" /> 7 + <meta property="og:description" content="see what's tangling" /> 8 + {{ end }} 9 + 3 10 {{ define "topbar" }} 4 - {{ with .LoggedInUser }} 5 - {{ template "layouts/topbar" $ }} 6 - {{ else }} 7 - {{ end }} 11 + {{ with .LoggedInUser }} 12 + {{ template "layouts/topbar" $ }} 13 + {{ else }} 14 + {{ end }} 8 15 {{ end }} 9 16 10 17 {{ define "content" }} 11 - {{ with .LoggedInUser }} 12 - {{ block "timeline" $ }} {{ end }} 13 - {{ else }} 14 - {{ block "hero" $ }} {{ end }} 15 - {{ block "timeline" $ }} {{ end }} 16 - {{ end }} 18 + {{ with .LoggedInUser }} 19 + {{ block "timeline" $ }}{{ end }} 20 + {{ else }} 21 + {{ block "hero" $ }}{{ end }} 22 + {{ block "timeline" $ }}{{ end }} 23 + {{ end }} 17 24 {{ end }} 18 25 19 26 {{ define "hero" }} 20 - <div class="flex flex-col items-center justify-center text-center rounded drop-shadow bg-white dark:bg-gray-800 text-black dark:text-white py-4 px-10"> 21 - <div class="font-bold italic text-4xl mb-4"> 22 - tangled 23 - </div> 24 - <div class="italic text-lg"> 25 - tightly-knit social coding, <a href="/login" class="underline inline-flex gap-1 items-center">join now {{ i "arrow-right" "w-4 h-4" }}</a> 26 - <p class="pt-5 px-10 text-sm text-gray-500 dark:text-gray-400">Join our <a href="https://chat.tangled.sh">Discord</a> or IRC channel: <a href="https://web.libera.chat/#tangled"><code>#tangled</code> on Libera Chat</a>. 27 - Read an introduction to Tangled <a href="https://blog.tangled.sh/intro">here</a>.</p> 28 - </div> 29 - </div> 27 + <div 28 + class="flex flex-col items-center justify-center text-center rounded drop-shadow bg-white dark:bg-gray-800 text-black dark:text-white py-4 px-10" 29 + > 30 + <div class="font-bold italic text-4xl mb-4">tangled</div> 31 + <div class="italic text-lg"> 32 + tightly-knit social coding, 33 + <a href="/login" class="underline inline-flex gap-1 items-center" 34 + >join now {{ i "arrow-right" "w-4 h-4" }}</a 35 + > 36 + <p class="pt-5 px-10 text-sm text-gray-500 dark:text-gray-400"> 37 + Join our <a href="https://chat.tangled.sh">Discord</a> or IRC 38 + channel: 39 + <a href="https://web.libera.chat/#tangled" 40 + ><code>#tangled</code> on Libera Chat</a 41 + >. Read an introduction to Tangled 42 + <a href="https://blog.tangled.sh/intro">here</a>. 43 + </p> 44 + </div> 45 + </div> 30 46 {{ end }} 31 47 32 48 {{ define "timeline" }} 33 - <div> 34 - <div class="p-6"> 35 - <p class="text-xl font-bold dark:text-white">Timeline</p> 36 - </div> 37 - 38 - <div class="flex flex-col gap-3 relative"> 39 - <div class="absolute left-8 top-0 bottom-0 w-px bg-gray-300 dark:bg-gray-600"></div> 40 - {{ range .Timeline }} 41 - <div class="px-6 py-2 bg-white dark:bg-gray-800 rounded drop-shadow-sm w-fit"> 42 - {{ if .Repo }} 43 - {{ $userHandle := index $.DidHandleMap .Repo.Did }} 44 - <div class="flex items-center"> 45 - <p class="text-gray-600 dark:text-gray-300"> 46 - <a href="/{{ $userHandle }}" class="no-underline hover:underline">{{ $userHandle | truncateAt30 }}</a> 47 - {{ if .Source }} 48 - forked 49 - <a href="/{{ index $.DidHandleMap .Source.Did }}/{{ .Source.Name }}" class="no-underline hover:underline"> 50 - {{ index $.DidHandleMap .Source.Did }}/{{ .Source.Name }} 51 - </a> 52 - to 53 - <a href="/{{ $userHandle }}/{{ .Repo.Name }}" class="no-underline hover:underline">{{ .Repo.Name }}</a> 54 - {{ else }} 55 - created 56 - <a href="/{{ $userHandle }}/{{ .Repo.Name }}" class="no-underline hover:underline">{{ .Repo.Name }}</a> 57 - {{ end }} 58 - <time class="text-gray-700 dark:text-gray-400 text-xs">{{ .Repo.Created | timeFmt }}</time> 59 - </p> 49 + <div> 50 + <div class="p-6"> 51 + <p class="text-xl font-bold dark:text-white">Timeline</p> 60 52 </div> 61 - {{ else if .Follow }} 62 - {{ $userHandle := index $.DidHandleMap .Follow.UserDid }} 63 - {{ $subjectHandle := index $.DidHandleMap .Follow.SubjectDid }} 64 - <div class="flex items-center"> 65 - <p class="text-gray-600 dark:text-gray-300"> 66 - <a href="/{{ $userHandle }}" class="no-underline hover:underline">{{ $userHandle | truncateAt30 }}</a> 67 - followed 68 - <a href="/{{ $subjectHandle }}" class="no-underline hover:underline">{{ $subjectHandle | truncateAt30 }}</a> 69 - <time class="text-gray-700 dark:text-gray-400 text-xs">{{ .Follow.FollowedAt | timeFmt }}</time> 70 - </p> 71 - </div> 72 - {{ else if .Star }} 73 - {{ $starrerHandle := index $.DidHandleMap .Star.StarredByDid }} 74 - {{ $repoOwnerHandle := index $.DidHandleMap .Star.Repo.Did }} 75 - <div class="flex items-center"> 76 - <p class="text-gray-600 dark:text-gray-300"> 77 - <a href="/{{ $starrerHandle }}" class="no-underline hover:underline">{{ $starrerHandle | truncateAt30 }}</a> 78 - starred 79 - <a href="/{{ $repoOwnerHandle }}/{{ .Star.Repo.Name }}" class="no-underline hover:underline">{{ $repoOwnerHandle | truncateAt30 }}/{{ .Star.Repo.Name }}</a> 80 - <time class="text-gray-700 dark:text-gray-400 text-xs">{{ .Star.Created | timeFmt }}</time> 81 - </p> 53 + 54 + <div class="flex flex-col gap-3 relative"> 55 + <div 56 + class="absolute left-8 top-0 bottom-0 w-px bg-gray-300 dark:bg-gray-600" 57 + ></div> 58 + {{ range .Timeline }} 59 + <div 60 + class="px-6 py-2 bg-white dark:bg-gray-800 rounded drop-shadow-sm w-fit" 61 + > 62 + {{ if .Repo }} 63 + {{ $userHandle := index $.DidHandleMap .Repo.Did }} 64 + <div class="flex items-center"> 65 + <p class="text-gray-600 dark:text-gray-300"> 66 + <a 67 + href="/{{ $userHandle }}" 68 + class="no-underline hover:underline" 69 + >{{ $userHandle | truncateAt30 }}</a 70 + > 71 + {{ if .Source }} 72 + forked 73 + <a 74 + href="/{{ index $.DidHandleMap .Source.Did }}/{{ .Source.Name }}" 75 + class="no-underline hover:underline" 76 + > 77 + {{ index $.DidHandleMap .Source.Did }}/{{ .Source.Name }} 78 + </a> 79 + to 80 + <a 81 + href="/{{ $userHandle }}/{{ .Repo.Name }}" 82 + class="no-underline hover:underline" 83 + >{{ .Repo.Name }}</a 84 + > 85 + {{ else }} 86 + created 87 + <a 88 + href="/{{ $userHandle }}/{{ .Repo.Name }}" 89 + class="no-underline hover:underline" 90 + >{{ .Repo.Name }}</a 91 + > 92 + {{ end }} 93 + <time 94 + class="text-gray-700 dark:text-gray-400 text-xs" 95 + >{{ .Repo.Created | timeFmt }}</time 96 + > 97 + </p> 98 + </div> 99 + {{ else if .Follow }} 100 + {{ $userHandle := index $.DidHandleMap .Follow.UserDid }} 101 + {{ $subjectHandle := index $.DidHandleMap .Follow.SubjectDid }} 102 + <div class="flex items-center"> 103 + <p class="text-gray-600 dark:text-gray-300"> 104 + <a 105 + href="/{{ $userHandle }}" 106 + class="no-underline hover:underline" 107 + >{{ $userHandle | truncateAt30 }}</a 108 + > 109 + followed 110 + <a 111 + href="/{{ $subjectHandle }}" 112 + class="no-underline hover:underline" 113 + >{{ $subjectHandle | truncateAt30 }}</a 114 + > 115 + <time 116 + class="text-gray-700 dark:text-gray-400 text-xs" 117 + >{{ .Follow.FollowedAt | timeFmt }}</time 118 + > 119 + </p> 120 + </div> 121 + {{ else if .Star }} 122 + {{ $starrerHandle := index $.DidHandleMap .Star.StarredByDid }} 123 + {{ $repoOwnerHandle := index $.DidHandleMap .Star.Repo.Did }} 124 + <div class="flex items-center"> 125 + <p class="text-gray-600 dark:text-gray-300"> 126 + <a 127 + href="/{{ $starrerHandle }}" 128 + class="no-underline hover:underline" 129 + >{{ $starrerHandle | truncateAt30 }}</a 130 + > 131 + starred 132 + <a 133 + href="/{{ $repoOwnerHandle }}/{{ .Star.Repo.Name }}" 134 + class="no-underline hover:underline" 135 + >{{ $repoOwnerHandle | truncateAt30 }}/{{ .Star.Repo.Name }}</a 136 + > 137 + <time 138 + class="text-gray-700 dark:text-gray-400 text-xs" 139 + >{{ .Star.Created | timeFmt }}</time 140 + > 141 + </p> 142 + </div> 143 + {{ end }} 144 + </div> 145 + {{ end }} 82 146 </div> 83 - {{ end }} 84 147 </div> 85 - {{ end }} 86 - </div> 87 - </div> 88 148 {{ end }}
+13 -1
appview/pages/templates/user/login.html
··· 7 7 name="viewport" 8 8 content="width=device-width, initial-scale=1.0" 9 9 /> 10 + <meta 11 + property="og:title" 12 + content="login · tangled" 13 + /> 14 + <meta 15 + property="og:url" 16 + content="https://tangled.sh/login" 17 + /> 18 + <meta 19 + property="og:description" 20 + content="login to tangled" 21 + /> 10 22 <script src="/static/htmx.min.js"></script> 11 23 <link 12 24 rel="stylesheet" 13 25 href="/static/tw.css?{{ cssContentHash }}" 14 26 type="text/css" 15 27 /> 16 - <title>login</title> 28 + <title>login &middot; tangled</title> 17 29 </head> 18 30 <body class="flex items-center justify-center min-h-screen"> 19 31 <main class="max-w-md px-6 -mt-4">
+7
appview/pages/templates/user/profile.html
··· 1 1 {{ define "title" }}{{ or .Card.UserHandle .Card.UserDid }}{{ end }} 2 2 3 + {{ define "extrameta" }} 4 + <meta property="og:title" content="{{ or .Card.UserHandle .Card.UserDid }}" /> 5 + <meta property="og:type" content="profile" /> 6 + <meta property="og:url" content="https://tangled.sh/{{ or .Card.UserHandle .Card.UserDid }}" /> 7 + <meta property="og:description" content="{{ or .Card.Profile.Description .Card.UserHandle .Card.UserDid }}" /> 8 + {{ end }} 9 + 3 10 {{ define "content" }} 4 11 <div class="grid grid-cols-1 md:grid-cols-8 gap-6"> 5 12 <div class="md:col-span-2 order-1 md:order-1">
+7
appview/pages/templates/user/repos.html
··· 1 1 {{ define "title" }}{{ or .Card.UserHandle .Card.UserDid }} · repos {{ end }} 2 2 3 + {{ define "extrameta" }} 4 + <meta property="og:title" content="{{ or .Card.UserHandle .Card.UserDid }}'s repos" /> 5 + <meta property="og:type" content="object" /> 6 + <meta property="og:url" content="https://tangled.sh/{{ or .Card.UserHandle .Card.UserDid }}/repos" /> 7 + <meta property="og:description" content="{{ or .Card.Profile.Description .Card.UserHandle .Card.UserDid }}" /> 8 + {{ end }} 9 + 3 10 {{ define "content" }} 4 11 <div class="grid grid-cols-1 md:grid-cols-8 gap-6"> 5 12 <div class="md:col-span-2 order-1 md:order-1">
+1 -1
go.mod
··· 28 28 github.com/sethvargo/go-envconfig v1.1.0 29 29 github.com/whyrusleeping/cbor-gen v0.2.1-0.20241030202151-b7a6831be65e 30 30 github.com/yuin/goldmark v1.4.13 31 + golang.org/x/net v0.39.0 31 32 golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 32 33 ) 33 34 ··· 114 115 go.uber.org/multierr v1.11.0 // indirect 115 116 go.uber.org/zap v1.26.0 // indirect 116 117 golang.org/x/crypto v0.37.0 // indirect 117 - golang.org/x/net v0.39.0 // indirect 118 118 golang.org/x/sys v0.32.0 // indirect 119 119 golang.org/x/time v0.8.0 // indirect 120 120 google.golang.org/protobuf v1.34.2 // indirect