this repo has no description
1{{ define "title" }}{{ or .Card.UserHandle .Card.UserDid }}{{ end }} 2 3{{ define "profileContent" }} 4 <div id="all-repos" class="md:col-span-4 order-2 md:order-2"> 5 <div class="grid grid-cols-1 gap-4"> 6 {{ block "ownRepos" . }}{{ end }} 7 {{ block "collaboratingRepos" . }}{{ end }} 8 </div> 9 </div> 10 <div class="md:col-span-4 order-3 md:order-3"> 11 {{ block "profileTimeline" . }}{{ end }} 12 </div> 13{{ end }} 14 15{{ define "profileTimeline" }} 16 <p class="text-sm font-bold px-2 pb-4 dark:text-white">ACTIVITY</p> 17 <div class="flex flex-col gap-4 relative"> 18 {{ if .ProfileTimeline.IsEmpty }} 19 <p class="dark:text-white">This user does not have any activity yet.</p> 20 {{ end }} 21 22 {{ with .ProfileTimeline }} 23 {{ range $idx, $byMonth := .ByMonth }} 24 {{ with $byMonth }} 25 {{ if not .IsEmpty }} 26 <div class="border border-gray-200 dark:border-gray-700 rounded-sm py-4 px-6"> 27 <p class="text-sm font-mono mb-2 text-gray-500 dark:text-gray-400"> 28 {{ if eq $idx 0 }} 29 this month 30 {{ else }} 31 {{$idx}} month{{if ne $idx 1}}s{{end}} ago 32 {{ end }} 33 </p> 34 35 <div class="flex flex-col gap-1"> 36 {{ block "repoEvents" .RepoEvents }} {{ end }} 37 {{ block "issueEvents" .IssueEvents }} {{ end }} 38 {{ block "pullEvents" .PullEvents }} {{ end }} 39 </div> 40 </div> 41 {{ end }} 42 {{ end }} 43 {{ end }} 44 {{ end }} 45 </div> 46{{ end }} 47 48{{ define "repoEvents" }} 49 {{ if gt (len .) 0 }} 50 <details> 51 <summary class="list-none cursor-pointer hover:text-gray-500 hover:dark:text-gray-400"> 52 <div class="flex flex-wrap items-center gap-2"> 53 {{ i "book-plus" "w-4 h-4" }} 54 created {{ len . }} {{if eq (len .) 1 }}repository{{else}}repositories{{end}} 55 </div> 56 </summary> 57 <div class="py-2 text-sm flex flex-col gap-3 mb-2"> 58 {{ range . }} 59 <div class="flex flex-wrap items-center gap-2"> 60 <span class="text-gray-500 dark:text-gray-400"> 61 {{ if .Source }} 62 {{ i "git-fork" "w-4 h-4" }} 63 {{ else }} 64 {{ i "book-plus" "w-4 h-4" }} 65 {{ end }} 66 </span> 67 <a href="/{{ resolve .Repo.Did }}/{{ .Repo.Name }}" class="no-underline hover:underline"> 68 {{- .Repo.Name -}} 69 </a> 70 </div> 71 {{ end }} 72 </div> 73 </details> 74 {{ end }} 75{{ end }} 76 77{{ define "issueEvents" }} 78 {{ $items := .Items }} 79 {{ $stats := .Stats }} 80 81 {{ if gt (len $items) 0 }} 82 <details> 83 <summary class="list-none cursor-pointer hover:text-gray-500 hover:dark:text-gray-400"> 84 <div class="flex flex-wrap items-center gap-2"> 85 {{ i "circle-dot" "w-4 h-4" }} 86 87 <div> 88 created {{ len $items }} {{if eq (len $items) 1 }}issue{{else}}issues{{end}} 89 </div> 90 91 {{ if gt $stats.Open 0 }} 92 <span class="px-2 py-1/2 text-sm rounded text-white bg-green-600 dark:bg-green-700"> 93 {{$stats.Open}} open 94 </span> 95 {{ end }} 96 97 {{ if gt $stats.Closed 0 }} 98 <span class="px-2 py-1/2 text-sm rounded text-white bg-gray-800 dark:bg-gray-700"> 99 {{$stats.Closed}} closed 100 </span> 101 {{ end }} 102 103 </div> 104 </summary> 105 <div class="py-2 text-sm flex flex-col gap-3 mb-2"> 106 {{ range $items }} 107 {{ $repoOwner := resolve .Metadata.Repo.Did }} 108 {{ $repoName := .Metadata.Repo.Name }} 109 {{ $repoUrl := printf "%s/%s" $repoOwner $repoName }} 110 111 <div class="flex gap-2 text-gray-600 dark:text-gray-300"> 112 {{ if .Open }} 113 <span class="text-green-600 dark:text-green-500"> 114 {{ i "circle-dot" "w-4 h-4" }} 115 </span> 116 {{ else }} 117 <span class="text-gray-500 dark:text-gray-400"> 118 {{ i "ban" "w-4 h-4" }} 119 </span> 120 {{ end }} 121 <div class="flex-none min-w-8 text-right"> 122 <span class="text-gray-500 dark:text-gray-400">#{{ .IssueId }}</span> 123 </div> 124 <div class="break-words max-w-full"> 125 <a href="/{{$repoUrl}}/issues/{{ .IssueId }}" class="no-underline hover:underline"> 126 {{ .Title -}} 127 </a> 128 on 129 <a href="/{{$repoUrl}}" class="no-underline hover:underline whitespace-nowrap"> 130 {{$repoUrl}} 131 </a> 132 </div> 133 </div> 134 {{ end }} 135 </div> 136 </details> 137 {{ end }} 138{{ end }} 139 140{{ define "pullEvents" }} 141 {{ $items := .Items }} 142 {{ $stats := .Stats }} 143 {{ if gt (len $items) 0 }} 144 <details> 145 <summary class="list-none cursor-pointer hover:text-gray-500 hover:dark:text-gray-400"> 146 <div class="flex flex-wrap items-center gap-2"> 147 {{ i "git-pull-request" "w-4 h-4" }} 148 149 <div> 150 created {{ len $items }} {{if eq (len $items) 1 }}pull request{{else}}pull requests{{end}} 151 </div> 152 153 {{ if gt $stats.Open 0 }} 154 <span class="px-2 py-1/2 text-sm rounded text-white bg-green-600 dark:bg-green-700"> 155 {{$stats.Open}} open 156 </span> 157 {{ end }} 158 159 {{ if gt $stats.Merged 0 }} 160 <span class="px-2 py-1/2 text-sm rounded text-white bg-purple-600 dark:bg-purple-700"> 161 {{$stats.Merged}} merged 162 </span> 163 {{ end }} 164 165 166 {{ if gt $stats.Closed 0 }} 167 <span class="px-2 py-1/2 text-sm rounded text-white bg-gray-800 dark:bg-gray-700"> 168 {{$stats.Closed}} closed 169 </span> 170 {{ end }} 171 172 </div> 173 </summary> 174 <div class="py-2 text-sm flex flex-col gap-3 mb-2"> 175 {{ range $items }} 176 {{ $repoOwner := resolve .Repo.Did }} 177 {{ $repoName := .Repo.Name }} 178 {{ $repoUrl := printf "%s/%s" $repoOwner $repoName }} 179 180 <div class="flex gap-2 text-gray-600 dark:text-gray-300"> 181 {{ if .State.IsOpen }} 182 <span class="text-green-600 dark:text-green-500"> 183 {{ i "git-pull-request" "w-4 h-4" }} 184 </span> 185 {{ else if .State.IsMerged }} 186 <span class="text-purple-600 dark:text-purple-500"> 187 {{ i "git-merge" "w-4 h-4" }} 188 </span> 189 {{ else }} 190 <span class="text-gray-600 dark:text-gray-300"> 191 {{ i "git-pull-request-closed" "w-4 h-4" }} 192 </span> 193 {{ end }} 194 <div class="flex-none min-w-8 text-right"> 195 <span class="text-gray-500 dark:text-gray-400">#{{ .PullId }}</span> 196 </div> 197 <div class="break-words max-w-full"> 198 <a href="/{{$repoUrl}}/pulls/{{ .PullId }}" class="no-underline hover:underline"> 199 {{ .Title -}} 200 </a> 201 on 202 <a href="/{{$repoUrl}}" class="no-underline hover:underline whitespace-nowrap"> 203 {{$repoUrl}} 204 </a> 205 </div> 206 </div> 207 {{ end }} 208 </div> 209 </details> 210 {{ end }} 211{{ end }} 212 213{{ define "ownRepos" }} 214 <div> 215 <div class="text-sm font-bold px-2 pb-4 dark:text-white flex items-center gap-2"> 216 <a href="/@{{ or $.Card.UserHandle $.Card.UserDid }}?tab=repos" 217 class="flex text-black dark:text-white items-center gap-2 no-underline hover:no-underline group"> 218 <span>PINNED REPOS</span> 219 </a> 220 {{ if and .LoggedInUser (eq .LoggedInUser.Did .Card.UserDid) }} 221 <button 222 hx-get="profile/edit-pins" 223 hx-target="#all-repos" 224 class="py-0 font-normal text-sm flex gap-2 items-center group"> 225 {{ i "pencil" "w-3 h-3" }} 226 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 227 </button> 228 {{ end }} 229 </div> 230 <div id="repos" class="grid grid-cols-1 gap-4 items-stretch"> 231 {{ range .Repos }} 232 <div class="border border-gray-200 dark:border-gray-700 rounded-sm"> 233 {{ template "user/fragments/repoCard" (list $ . false) }} 234 </div> 235 {{ else }} 236 <p class="dark:text-white">This user does not have any pinned repos.</p> 237 {{ end }} 238 </div> 239 </div> 240{{ end }} 241 242{{ define "collaboratingRepos" }} 243 {{ if gt (len .CollaboratingRepos) 0 }} 244 <div> 245 <p class="text-sm font-bold px-2 pb-4 dark:text-white">COLLABORATING ON</p> 246 <div id="collaborating" class="grid grid-cols-1 gap-4"> 247 {{ range .CollaboratingRepos }} 248 <div class="border border-gray-200 dark:border-gray-700 rounded-sm"> 249 {{ template "user/fragments/repoCard" (list $ . true) }} 250 </div> 251 {{ else }} 252 <p class="px-6 dark:text-white">This user is not collaborating.</p> 253 {{ end }} 254 </div> 255 </div> 256 {{ end }} 257{{ end }} 258