this repo has no description
1{{ define "title" }}{{ or .UserHandle .UserDid }}{{ end }} 2 3{{ define "content" }} 4<div class="grid grid-cols-1 md:grid-cols-5 gap-6"> 5 <div class="md:col-span-1 order-1 md:order-1"> 6 {{ block "profileCard" . }}{{ end }} 7 </div> 8 <div class="md:col-span-2 order-2 md:order-2"> 9 {{ block "ownRepos" . }}{{ end }} 10 {{ block "collaboratingRepos" . }}{{ end }} 11 </div> 12 <div class="md:col-span-2 order-3 md:order-3"> 13 {{ block "profileTimeline" . }}{{ end }} 14 </div> 15</div> 16{{ end }} 17 18{{ define "profileTimeline" }} 19 <p class="text-sm font-bold py-2 dark:text-white">ACTIVITY</p> 20 <div class="flex flex-col gap-6 relative"> 21 {{ with .ProfileTimeline }} 22 {{ range $idx, $byMonth := .ByMonth }} 23 {{ with $byMonth }} 24 <div class="bg-white dark:bg-gray-800 px-6 py-4 rounded drop-shadow-sm"> 25 {{ if eq $idx 0 }} 26 <p class="text-sm font-bold py-2 dark:text-white">This month</p> 27 {{ else }} 28 {{ $s := "s" }} 29 {{ if eq $idx 1 }} 30 {{ $s = "" }} 31 {{ end }} 32 <p class="text-sm font-bold py-2 dark:text-white">{{$idx}} month{{$s}} ago</p> 33 {{ end }} 34 35 <div class="flex flex-col gap-4"> 36 {{ block "repoEvents" (list .RepoEvents $.DidHandleMap) }} {{ end }} 37 {{ block "issueEvents" (list .IssueEvents $.DidHandleMap) }} {{ end }} 38 {{ block "pullEvents" (list .PullEvents $.DidHandleMap) }} {{ end }} 39 </div> 40 </div> 41 42 {{ end }} 43 {{ else }} 44 <p class="dark:text-white">This user does not have any activity yet.</p> 45 {{ end }} 46 {{ end }} 47 </div> 48{{ end }} 49 50{{ define "repoEvents" }} 51 {{ $items := index . 0 }} 52 {{ $handleMap := index . 1 }} 53 54 {{ if gt (len $items) 0 }} 55 <details open> 56 <summary class="list-none cursor-pointer"> 57 <div class="flex items-center gap-2"> 58 created {{ len $items }} {{if eq (len $items) 1 }}repository{{else}}repositories{{end}} 59 </div> 60 </summary> 61 <div class="p-2 text-sm flex flex-col gap-3"> 62 {{ range $items }} 63 <div class="flex flex-wrap items-center gap-2"> 64 <span class="text-gray-500 dark:text-gray-400"> 65 {{ if .Source }} 66 {{ i "git-fork" "w-4 h-4" }} 67 {{ else }} 68 {{ i "book-plus" "w-4 h-4" }} 69 {{ end }} 70 </span> 71 <a href="/{{ index $handleMap .Repo.Did }}/{{ .Repo.Name }}" class="no-underline hover:underline"> 72 {{- .Repo.Name -}} 73 </a> 74 <time class="text-gray-700 dark:text-gray-400 text-xs ml-2">{{ .Repo.Created | shortTimeFmt }}</time> 75 </div> 76 {{ end }} 77 </div> 78 </details> 79 {{ end }} 80{{ end }} 81 82{{ define "issueEvents" }} 83 {{ $i := index . 0 }} 84 {{ $items := $i.Items }} 85 {{ $stats := $i.Stats }} 86 {{ $handleMap := index . 1 }} 87 88 {{ if gt (len $items) 0 }} 89 <details open> 90 <summary class="list-none cursor-pointer"> 91 <div class="flex items-center gap-2"> 92 <span> 93 created {{ len $items }} {{if eq (len $items) 1 }}issue{{else}}issues{{end}} 94 </span> 95 <span class="px-2 py-1/2 text-sm rounded-sm text-white bg-green-600 dark:bg-green-700"> 96 {{$stats.Open}} open 97 </span> 98 <span class="px-2 py-1/2 text-sm rounded-sm text-white bg-gray-800 dark:bg-gray-700"> 99 {{$stats.Closed}} closed 100 </span> 101 </div> 102 </summary> 103 <div class="p-2 text-sm flex flex-col gap-3"> 104 {{ range $items }} 105 {{ $repoOwner := index $handleMap .Metadata.Repo.Did }} 106 {{ $repoName := .Metadata.Repo.Name }} 107 {{ $repoUrl := printf "%s/%s" $repoOwner $repoName }} 108 109 <div class="flex flex-wrap items-center gap-2 text-gray-600 dark:text-gray-300"> 110 {{ if .Open }} 111 <span class="text-green-600 dark:text-green-500"> 112 {{ i "circle-dot" "w-4 h-4" }} 113 </span> 114 {{ else }} 115 <span class="text-gray-500 dark:text-gray-400"> 116 {{ i "ban" "w-4 h-4" }} 117 </span> 118 {{ end }} 119 <a href="/{{$repoUrl}}/issues/{{ .IssueId }}" class="no-underline hover:underline"> 120 <span class="text-gray-500 dark:text-gray-400">#{{ .IssueId }}</span> 121 {{ .Title -}} 122 </a> 123 on 124 <a href="/{{$repoUrl}}" class="no-underline hover:underline"> 125 {{$repoUrl}} 126 </a> 127 <time class="text-gray-700 dark:text-gray-400 text-xs ml-2">{{ .Created | shortTimeFmt }}</time> 128 </p> 129 {{ end }} 130 </div> 131 </details> 132 {{ end }} 133{{ end }} 134 135{{ define "pullEvents" }} 136 {{ $i := index . 0 }} 137 {{ $items := $i.Items }} 138 {{ $stats := $i.Stats }} 139 {{ $handleMap := index . 1 }} 140 {{ if gt (len $items) 0 }} 141 <details open> 142 <summary class="list-none cursor-pointer"> 143 <div class="flex items-center gap-2"> 144 <span> 145 created {{ len $items }} {{if eq (len $items) 1 }}pull request{{else}}pull requests{{end}} 146 </span> 147 <span class="px-2 py-1/2 text-sm rounded-sm text-white bg-green-600 dark:bg-green-700"> 148 {{$stats.Open}} open 149 </span> 150 <span class="px-2 py-1/2 text-sm rounded-sm text-white bg-purple-600 dark:bg-purple-700"> 151 {{$stats.Merged}} merged 152 </span> 153 <span class="px-2 py-1/2 text-sm rounded-sm text-black dark:text-white bg-gray-50 dark:bg-gray-700 "> 154 {{$stats.Closed}} closed 155 </span> 156 </div> 157 </summary> 158 <div class="p-2 text-sm flex flex-col gap-3"> 159 {{ range $items }} 160 {{ $repoOwner := index $handleMap .Repo.Did }} 161 {{ $repoName := .Repo.Name }} 162 {{ $repoUrl := printf "%s/%s" $repoOwner $repoName }} 163 164 <div class="flex flex-wrap items-center gap-2 text-gray-600 dark:text-gray-300"> 165 {{ if .State.IsOpen }} 166 <span class="text-green-600 dark:text-green-500"> 167 {{ i "git-pull-request" "w-4 h-4" }} 168 </span> 169 {{ else if .State.IsMerged }} 170 <span class="text-purple-600 dark:text-purple-500"> 171 {{ i "git-merge" "w-4 h-4" }} 172 </span> 173 {{ else }} 174 <span class="text-gray-600 dark:text-gray-300"> 175 {{ i "git-pull-request-closed" "w-4 h-4" }} 176 </span> 177 {{ end }} 178 <a href="/{{$repoUrl}}/pulls/{{ .PullId }}" class="no-underline hover:underline"> 179 <span class="text-gray-500 dark:text-gray-400">#{{ .PullId }}</span> 180 {{ .Title -}} 181 </a> 182 on 183 <a href="/{{$repoUrl}}" class="no-underline hover:underline"> 184 {{$repoUrl}} 185 </a> 186 <time class="text-gray-700 dark:text-gray-400 text-xs ml-2">{{ .Created | shortTimeFmt }}</time> 187 </p> 188 {{ end }} 189 </div> 190 </details> 191 {{ end }} 192{{ end }} 193 194{{ define "profileCard" }} 195 <div class="bg-white dark:bg-gray-800 px-6 py-4 rounded drop-shadow-sm max-h-fit"> 196 <div class="flex justify-center items-center"> 197 {{ if .AvatarUri }} 198 <img class="w-3/4 rounded-full p-2" src="{{ .AvatarUri }}" /> 199 {{ end }} 200 </div> 201 <p 202 title="{{ didOrHandle .UserDid .UserHandle }}" 203 class="text-lg font-bold text-center dark:text-white overflow-hidden text-ellipsis whitespace-nowrap max-w-full" 204 > 205 {{ didOrHandle .UserDid .UserHandle }} 206 </p> 207 <div class="text-sm text-center dark:text-gray-300"> 208 <span>{{ .ProfileStats.Followers }} followers</span> 209 <div 210 class="inline-block px-1 select-none after:content-['·']" 211 ></div> 212 <span>{{ .ProfileStats.Following }} following</span> 213 </div> 214 215 {{ if ne .FollowStatus.String "IsSelf" }} 216 {{ template "fragments/follow" . }} 217 {{ end }} 218 </div> 219{{ end }} 220 221{{ define "ownRepos" }} 222 <p class="text-sm font-bold py-2 px-6 dark:text-white">REPOS</p> 223 <div id="repos" class="grid grid-cols-1 gap-4 mb-6"> 224 {{ range .Repos }} 225 <div 226 id="repo-card" 227 class="py-4 px-6 drop-shadow-sm rounded bg-white dark:bg-gray-800" 228 > 229 <div id="repo-card-name" class="font-medium dark:text-white"> 230 <a href="/@{{ or $.UserHandle $.UserDid }}/{{ .Name }}" 231 >{{ .Name }}</a 232 > 233 </div> 234 {{ if .Description }} 235 <div class="text-gray-600 dark:text-gray-300 text-sm"> 236 {{ .Description }} 237 </div> 238 {{ end }} 239 <div 240 class="text-gray-400 pt-1 text-sm font-mono inline-flex gap-4 mt-auto" 241 > 242 243 {{ if .RepoStats.StarCount }} 244 <div class="flex gap-1 items-center text-sm"> 245 {{ i "star" "w-3 h-3 fill-current" }} 246 <span>{{ .RepoStats.StarCount }}</span> 247 </div> 248 {{ end }} 249 </div> 250 </div> 251 {{ else }} 252 <p class="px-6 dark:text-white">This user does not have any repos yet.</p> 253 {{ end }} 254 </div> 255 256 <p class="text-sm font-bold py-2 px-6 dark:text-white">COLLABORATING ON</p> 257 <div id="collaborating" class="grid grid-cols-1 gap-4 mb-6"> 258 {{ range .CollaboratingRepos }} 259 <div 260 id="repo-card" 261 class="py-4 px-6 drop-shadow-sm rounded bg-white dark:bg-gray-800 flex flex-col" 262 > 263 <div id="repo-card-name" class="font-medium dark:text-white"> 264 <a href="/{{ index $.DidHandleMap .Did }}/{{ .Name }}"> 265 {{ index $.DidHandleMap .Did }}/{{ .Name }} 266 </a> 267 </div> 268 {{ if .Description }} 269 <div class="text-gray-600 dark:text-gray-300 text-sm"> 270 {{ .Description }} 271 </div> 272 {{ end }} 273 <div class="text-gray-400 pt-1 text-sm font-mono inline-flex gap-4 mt-auto"> 274 275 {{ if .RepoStats.StarCount }} 276 <div class="flex gap-1 items-center text-sm"> 277 {{ i "star" "w-3 h-3 fill-current" }} 278 <span>{{ .RepoStats.StarCount }}</span> 279 </div> 280 {{ end }} 281 </div> 282 </div> 283 {{ else }} 284 <p class="px-6 dark:text-white">This user is not collaborating.</p> 285 {{ end }} 286 </div> 287{{ end }}