this repo has no description
1{{ define "repoContent" }} 2<main> 3 {{- if .IsEmpty }} 4 this repo is empty 5 {{ else }} 6 <div class="flex gap-4"> 7 <div id="file-tree" class="w-1/2"> 8 {{ $containerstyle := "py-1" }} 9 {{ $linkstyle := "no-underline hover:underline" }} 10 11 <div class="flex justify-end"> 12 <select 13 onchange="window.location.href = '/{{ .RepoInfo.FullName }}/tree/' + this.value" 14 class="p-1 border border-gray-500 bg-white" 15 > 16 <optgroup label="branches" class="uppercase bold text-sm"> 17 {{ range .Branches }} 18 <option 19 value="{{ .Reference.Name }}" 20 class="py-1" 21 {{if eq .Reference.Name $.Ref}}selected{{end}} 22 > 23 {{ .Reference.Name }} 24 </option> 25 {{ end }} 26 </optgroup> 27 <optgroup label="tags" class="uppercase bold text-sm"> 28 {{ range .Tags }} 29 <option 30 value="{{ .Reference.Name }}" 31 class="py-1" 32 {{if eq .Reference.Name $.Ref}}selected{{end}} 33 > 34 {{ .Reference.Name }} 35 </option> 36 {{ end }} 37 </optgroup> 38 </select> 39 </div> 40 41 {{ range .Files }} 42 {{ if not .IsFile }} 43 <div class="{{ $containerstyle }}"> 44 <a 45 href="/{{ $.RepoInfo.FullName }}/tree/{{ $.Ref }}/{{ .Name }}" 46 class="{{ $linkstyle }}" 47 > 48 <div class="flex items-center gap-2"> 49 <i 50 class="w-3 h-3 fill-current" 51 data-lucide="folder" 52 ></i 53 >{{ .Name }}/ 54 </div> 55 </a> 56 </div> 57 {{ end }} 58 {{ end }} 59 60 {{ range .Files }} 61 {{ if .IsFile }} 62 <div class="{{ $containerstyle }}"> 63 <a 64 href="/{{ $.RepoInfo.FullName }}/blob/{{ $.Ref }}/{{ .Name }}" 65 class="{{ $linkstyle }}" 66 > 67 <div class="flex items-center gap-2"> 68 <i 69 class="w-3 h-3" 70 data-lucide="file" 71 ></i 72 >{{ .Name }} 73 </div> 74 </a> 75 </div> 76 {{ end }} 77 {{ end }} 78 </div> 79 <div id="commit-log" class="flex-1"> 80 {{ range .Commits }} 81 <div 82 class="relative 83 px-4 84 py-4 85 border-l 86 border-black 87 before:content-[''] 88 before:absolute 89 before:w-1 90 before:h-1 91 before:bg-black 92 before:rounded-full 93 before:left-[-2.2px] 94 before:top-1/2 95 before:-translate-y-1/2 96 "> 97 98 <div id="commit-message"> 99 {{ $messageParts := splitN .Message "\n\n" 2 }} 100 <div class="text-base cursor-pointer"> 101 <div> 102 <div class="flex items-center gap-1"> 103 <a href="/{{ $.RepoInfo.FullName }}/commit/{{ .Hash.String }}" class="inline no-underline hover:underline">{{ index $messageParts 0 }}</a> 104 {{ if gt (len $messageParts) 1 }} 105 <button class="text-sm inline rounded-sm bg-gray-300 text-gray-700 px-1 w-fit hover:bg-gray-400" 106 hx-on:click="this.parentElement.nextElementSibling.classList.toggle('hidden')">&hellip;</button> 107 {{ end }} 108 </div> 109 {{ if gt (len $messageParts) 1 }} 110 <p class="hidden mt-1 text-sm cursor-text pb-2">{{ nl2br (unwrapText (index $messageParts 1)) }}</p> 111 {{ end }} 112 </div> 113 </div> 114 </div> 115 116 <div class="text-xs text-gray-500"> 117 <span class="font-mono"> 118 <a 119 href="/{{ $.RepoInfo.FullName }}/commit/{{ .Hash.String }}" 120 class="text-gray-500 no-underline hover:underline" 121 >{{ slice .Hash.String 0 8 }}</a 122 > 123 </span> 124 &nbsp;·&nbsp; 125 <span> 126 <a 127 href="mailto:{{ .Author.Email }}" 128 class="text-gray-500 no-underline hover:underline" 129 >{{ .Author.Name }}</a 130 > 131 </span> 132 &nbsp;·&nbsp; 133 <span>{{ timeFmt .Author.When }}</span> 134 </div> 135 </div> 136 {{ end }} 137 </div> 138 </div> 139 {{- end -}} 140 141</main> 142{{ end }} 143 144{{ define "repoAfter" }} 145{{- if .Readme }} 146<section class="mt-4 p-6 border border-black w-full mx-auto"> 147 <article class="readme"> 148 {{- .Readme -}} 149 </article> 150</section> 151{{- end -}} 152 153<section class="mt-4 p-6 border border-black w-full mx-auto"> 154 <strong>clone</strong> 155 <pre> git clone https://tangled.sh/{{ .RepoInfo.OwnerWithAt }}/{{ .RepoInfo.Name }} </pre> 156</section> 157{{ end }}