forked from tangled.org/core
Monorepo for Tangled
at master 97 lines 4.6 kB view raw
1{{ define "title" }}{{ .String.Filename }} · by {{ resolve .Owner.DID.String }}{{ end }} 2 3{{ define "extrameta" }} 4 {{ $ownerId := resolve .Owner.DID.String }} 5 <meta property="og:title" content="{{ .String.Filename }} · by {{ $ownerId }}" /> 6 <meta property="og:type" content="object" /> 7 <meta property="og:url" content="https://tangled.org/strings/{{ $ownerId }}/{{ .String.Rkey }}" /> 8 <meta property="og:description" content="{{ .String.Description }}" /> 9{{ end }} 10 11{{ define "content" }} 12{{ $ownerId := resolve .Owner.DID.String }} 13 <section id="string-header" class="mb-2 py-2 px-4 dark:text-white"> 14 <div class="text-lg flex flex-col sm:flex-row items-start gap-4 justify-between"> 15 <!-- left items --> 16 <div class="flex flex-col gap-2"> 17 <!-- string owner / string name --> 18 <div class="flex items-center gap-2 flex-wrap"> 19 {{ template "user/fragments/picHandleLink" .Owner.DID.String }} 20 <span class="select-none">/</span> 21 <a href="/strings/{{ $ownerId }}/{{ .String.Rkey }}" class="font-bold">{{ .String.Filename }}</a> 22 </div> 23 24 <span class="flex flex-wrap items-center gap-x-4 gap-y-2 text-sm text-gray-600 dark:text-gray-300"> 25 {{ if .String.Description }} 26 {{ .String.Description }} 27 {{ else }} 28 <span class="italic">this string has no description</span> 29 {{ end }} 30 </span> 31 </div> 32 33 <div class="w-full sm:w-fit grid grid-cols-3 gap-2 z-auto"> 34 {{ if and .LoggedInUser (eq .LoggedInUser.Did .String.Did) }} 35 <a class="btn text-sm no-underline hover:no-underline flex items-center gap-2 group" 36 hx-boost="true" 37 href="/strings/{{ .String.Did }}/{{ .String.Rkey }}/edit"> 38 {{ i "pencil" "w-4 h-4" }} 39 <span class="hidden md:inline">edit</span> 40 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 41 </a> 42 <button 43 class="btn text-sm text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 flex items-center gap-2 group" 44 title="Delete string" 45 hx-delete="/strings/{{ .String.Did }}/{{ .String.Rkey }}/" 46 hx-swap="none" 47 hx-confirm="Are you sure you want to delete the string `{{ .String.Filename }}`?" 48 > 49 {{ i "trash-2" "w-4 h-4" }} 50 <span class="hidden md:inline">delete</span> 51 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 52 </button> 53 {{ end }} 54 {{ template "fragments/starBtn" 55 (dict "SubjectAt" .String.AtUri 56 "IsStarred" .IsStarred 57 "StarCount" .StarCount) }} 58 </div> 59 </div> 60 </section> 61 <section class="bg-white dark:bg-gray-800 px-6 py-4 rounded relative w-full dark:text-white"> 62 <div class="flex flex-col md:flex-row md:justify-between md:items-center text-gray-500 dark:text-gray-400 text-sm md:text-base pb-2 mb-3 text-base border-b border-gray-200 dark:border-gray-700"> 63 <span> 64 {{ .String.Filename }} 65 <span class="select-none px-1 md:px-2 [&:before]:content-['·']"></span> 66 <span> 67 {{ with .String.Edited }} 68 edited {{ template "repo/fragments/shortTimeAgo" . }} 69 {{ else }} 70 {{ template "repo/fragments/shortTimeAgo" .String.Created }} 71 {{ end }} 72 </span> 73 </span> 74 <div> 75 <span>{{ .Stats.LineCount }} lines</span> 76 <span class="select-none px-1 md:px-2 [&:before]:content-['·']"></span> 77 <span>{{ byteFmt .Stats.ByteCount }}</span> 78 <span class="select-none px-1 md:px-2 [&:before]:content-['·']"></span> 79 <a href="/strings/{{ $ownerId }}/{{ .String.Rkey }}/raw">view raw</a> 80 {{ if .RenderToggle }} 81 <span class="select-none px-1 md:px-2 [&:before]:content-['·']"></span> 82 <a href="?code={{ .ShowRendered }}" hx-boost="true"> 83 view {{ if .ShowRendered }}code{{ else }}rendered{{ end }} 84 </a> 85 {{ end }} 86 </div> 87 </div> 88 <div class="overflow-x-auto overflow-y-hidden relative"> 89 {{ if .ShowRendered }} 90 <div id="blob-contents" class="prose dark:prose-invert">{{ .String.Contents | readme }}</div> 91 {{ else }} 92 <div id="blob-contents" class="whitespace-pre peer-target:bg-yellow-200 dark:peer-target:bg-yellow-900">{{ code .String.Contents .String.Filename | escapeHtml }}</div> 93 {{ end }} 94 </div> 95 {{ template "fragments/multiline-select" }} 96 </section> 97{{ end }}