this repo has no description
1{{ define "title" }}
2 {{ .Pull.Title }} · pull #{{ .Pull.PullId }} · {{ .RepoInfo.FullName }}
3{{ end }}
4
5{{ define "extrameta" }}
6 {{ template "repo/pulls/fragments/og" (dict "RepoInfo" .RepoInfo "Pull" .Pull) }}
7{{ end }}
8
9{{ define "mainLayout" }}
10 <div class="px-1 col-span-full flex-grow flex flex-col gap-4">
11 {{ block "contentLayout" . }}
12 {{ block "content" . }}{{ end }}
13 {{ end }}
14 </div>
15{{ end }}
16
17{{ define "repoContentLayout" }}
18 <div class="grid grid-cols-1 md:grid-cols-10 gap-4 w-full">
19 <div class="col-span-1 md:col-span-7">
20 <section class="bg-white dark:bg-gray-800 p-6 rounded relative w-full mx-auto dark:text-white h-full">
21 {{ block "repoContent" . }}{{ end }}
22 </section>
23 {{ block "repoAfter" . }}{{ end }}
24 </div>
25 <div class="col-span-1 md:col-span-3 flex flex-col gap-6">
26 {{ template "repo/fragments/labelPanel"
27 (dict "RepoInfo" $.RepoInfo
28 "Defs" $.LabelDefs
29 "Subject" $.Pull.AtUri
30 "State" $.Pull.Labels) }}
31 {{ template "repo/fragments/participants" $.Pull.Participants }}
32 {{ template "repo/fragments/backlinks"
33 (dict "RepoInfo" $.RepoInfo
34 "Backlinks" $.Backlinks) }}
35 {{ template "repo/fragments/externalLinkPanel" $.Pull.AtUri }}
36 </div>
37
38 <div class="col-span-1 md:col-span-7">
39 {{ template "repo/fragments/diff" (list .Diff .DiffOpts) }}
40 </div>
41 <div class="col-span-1 md:col-span-3 flex flex-col max-h-dvh sticky top-0">
42 <div class="z-20 sticky top-0 rounded-t p-3 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700">
43 <h2 class="font-bold uppercase">history</h2>
44 </div>
45 <div class="flex flex-col-reverse gap-4 overflow-y-auto">
46 {{ template "submissions2" . }}
47 </div>
48 </div>
49 </div>
50{{ end }}
51
52{{ define "repoContent" }}
53 {{ template "repo/pulls/fragments/pullHeader" . }}
54
55 {{ if .Pull.IsStacked }}
56 <div class="mt-8">
57 {{ template "repo/pulls/fragments/pullStack" . }}
58 </div>
59 {{ end }}
60{{ end }}
61
62{{ define "repoAfter" }}
63 <div id="pull-close"></div>
64 <div id="pull-reopen"></div>
65{{ end }}
66
67{{ define "submissions2" }}
68 {{ $lastIdx := sub (len .Pull.Submissions) 1 }}
69 {{ range $ridx, $item := reverse .Pull.Submissions }}
70 {{ $idx := sub $lastIdx $ridx }}
71 <div class="rounded border border-gray-200 dark:border-gray-700 w-full shadow-sm bg-gray-50 dark:bg-gray-800/50">
72 {{ with $item }}
73 {{ $patches := .AsFormatPatch }}
74 {{ $round := .RoundNumber }}
75 <div class="rounded px-6 py-4 bg-white dark:bg-gray-800 flex gap-2">
76 <div class="flex-shrink-0">
77 <img
78 src="{{ tinyAvatar $.Pull.OwnerDid }}"
79 alt=""
80 class="rounded-full size-8 mr-1 border-2 border-gray-100 dark:border-gray-900"
81 />
82 </div>
83 <!-- right column: name and body in two rows -->
84 <div class="flex-1 min-w-0 flex flex-col gap-2">
85 <div class="flex gap-2 items-center justify-between mb-1">
86 <span class="inline-flex items-center gap-2 text-sm text-gray-500 dark:text-gray-400 hover:text-gray-500">
87 {{ resolve $.Pull.OwnerDid }} submitted v{{ $round }}
88 <span class="select-none before:content-['\00B7']"></span>
89 <a class="text-gray-500 dark:text-gray-400 hover:text-gray-500" href="#round-#{{ $round }}">{{ template "repo/fragments/shortTimeAgo" .Created }}</a>
90 </span>
91 {{ if ne $idx 0 }}
92 <a class="flex items-center gap-2 no-underline hover:no-underline text-sm"
93 hx-boost="true"
94 href="/{{ $.RepoInfo.FullName }}/pulls/{{ $.Pull.PullId }}/round/{{$round}}/interdiff">
95 {{ i "chevrons-left-right-ellipsis" "w-4 h-4 rotate-90" }}
96 <span class="hidden md:inline">interdiff</span>
97 </a>
98 {{ end }}
99 </div>
100 <div>
101 {{ if eq 1 (len $patches) }}
102 <!-- only one commit, just inline the message into the round header -->
103 {{ $commit := index $patches 0 }}
104 <span>{{ $commit.Title | description }}</span>
105 {{ if gt (len $commit.Body) 0 }}
106 <p id="body-{{$round}}-{{$commit.SHA}}" class="mt-1 pb-2">
107 {{ nl2br $commit.Body }}
108 </p>
109 {{ end }}
110 {{ else }}
111 <span>Commits:</span>
112 {{ range $patches }}
113 <div id="commit-{{.SHA}}" class="py-1 px-2 relative w-full md:max-w-3/5 md:w-fit flex flex-col">
114 <div class="flex items-center gap-2">
115 {{ i "git-commit-horizontal" "w-4 h-4 flex-shrink-0" }}
116 <div class="flex items-center">
117 <span>{{ .Title | description }}</span>
118 {{ if gt (len .Body) 0 }}
119 <button
120 class="py-1/2 px-1 mx-2 bg-gray-200 hover:bg-gray-400 rounded dark:bg-gray-700 dark:hover:bg-gray-600"
121 hx-on:click="document.getElementById('body-{{$round}}-{{.SHA}}').classList.toggle('hidden')"
122 >
123 {{ i "ellipsis" "w-3 h-3" }}
124 </button>
125 {{ end }}
126 </div>
127 </div>
128 {{ if gt (len .Body) 0 }}
129 <p id="body-{{$round}}-{{.SHA}}" class="hidden mt-1 text-sm pb-2">
130 {{ nl2br .Body }}
131 </p>
132 {{ end }}
133 </div>
134 {{ end }}
135 {{ end }}
136 </div>
137 <div>
138 {{ block "pipelineStatus" (list $ .) }} {{ end }}
139 </div>
140 </div>
141 </div>
142 <div class="relative ml-10 border-l-2 border-gray-200 dark:border-gray-700">
143 {{ range $cidx, $c := .Comments }}
144 <div id="comment-{{$c.ID}}" class="flex gap-2 -ml-4 py-4 w-full mx-auto">
145 <!-- left column: profile picture -->
146 <div class="flex-shrink-0">
147 <img
148 src="{{ tinyAvatar $c.OwnerDid }}"
149 alt=""
150 class="rounded-full size-8 mr-1 border-2 border-gray-100 dark:border-gray-900"
151 />
152 </div>
153 <!-- right column: name and body in two rows -->
154 <div class="flex-1 min-w-0">
155 <!-- Row 1: Author and timestamp -->
156 <div class="text-sm text-gray-500 dark:text-gray-400 flex items-center gap-1">
157 <span>{{ resolve $c.OwnerDid }}</span>
158 <span class="before:content-['·']"></span>
159 <a class="text-gray-500 dark:text-gray-400 hover:text-gray-500 dark:hover:text-gray-300" href="#comment-{{.ID}}">{{ template "repo/fragments/time" $c.Created }}</a>
160 </div>
161 <!-- Row 2: Body text -->
162 <div class="prose dark:prose-invert mt-1">
163 {{ $c.Body | markdown }}
164 </div>
165 </div>
166 </div>
167 {{ end }}
168 </div>
169 {{ end }}
170 {{ if eq $lastIdx .RoundNumber }}
171 {{ block "mergeStatus" $ }} {{ end }}
172 {{ block "resubmitStatus" $ }} {{ end }}
173 {{ end }}
174 {{ if $.LoggedInUser }}
175 {{ template "repo/pulls/fragments/pullActions"
176 (dict
177 "LoggedInUser" $.LoggedInUser
178 "Pull" $.Pull
179 "RepoInfo" $.RepoInfo
180 "RoundNumber" .RoundNumber
181 "MergeCheck" $.MergeCheck
182 "ResubmitCheck" $.ResubmitCheck
183 "BranchDeleteStatus" $.BranchDeleteStatus
184 "Stack" $.Stack) }}
185 {{ else }}
186 <div class="bg-amber-50 dark:bg-amber-900 border border-amber-500 rounded drop-shadow-sm p-2 relative flex gap-2 items-center">
187 <a href="/signup" class="btn-create py-0 hover:no-underline hover:text-white flex items-center gap-2">
188 sign up
189 </a>
190 <span class="text-gray-500 dark:text-gray-400">or</span>
191 <a href="/login" class="underline">login</a>
192 to add to the discussion
193 </div>
194 {{ end }}
195 </div>
196 {{ end }}
197{{ end }}
198
199{{ define "newComment" }}
200 {{ $root := index . 0 }}
201 {{ $submission := index . 1 }}
202 <form
203 id="comment-form"
204 hx-post="/{{ $root.RepoInfo.FullName }}/pulls/{{ $root.Pull.PullId }}/round/{{ $submission.RoundNumber }}/comment"
205 hx-on::after-request="if(event.detail.successful) this.reset()"
206 >
207 <div class="bg-white dark:bg-gray-800 rounded drop-shadow-sm py-4 px-4 relative w-full">
208 <div class="text-sm pb-2 text-gray-500 dark:text-gray-400">
209 {{ template "user/fragments/picHandleLink" $root.LoggedInUser.Did }}
210 </div>
211 <textarea
212 id="comment-textarea"
213 name="body"
214 class="w-full p-2 rounded border border-gray-200 dark:border-gray-700"
215 placeholder="Add to the discussion"
216 rows="8"
217 ></textarea>
218 <div id="pull-comment"></div>
219 </div>
220 {{ template "replyActions" . }}
221 </form>
222{{ end }}
223
224{{ define "replyActions" }}
225 <div class="flex flex-wrap items-stretch justify-end gap-2 text-gray-500 dark:text-gray-400 text-sm">
226 {{ template "cancel" . }}
227 {{ template "reply" . }}
228 </div>
229{{ end }}
230
231{{ define "cancel" }}
232 <button
233 class="btn text-red-500 dark:text-red-400 flex gap-2 items-center group"
234 hx-get="TODO"
235 hx-target="TODO"
236 hx-swap="outerHTML">
237 {{ i "x" "size-4" }}
238 cancel
239 </button>
240{{ end }}
241
242{{ define "reply" }}
243 <button
244 id="TODO"
245 type="submit"
246 class="btn-create flex items-center gap-2 no-underline hover:no-underline">
247 {{ i "reply" "w-4 h-4 inline group-[.htmx-request]:hidden" }}
248 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }}
249 reply
250 </button>
251{{ end }}
252
253{{ define "submissions" }}
254 {{ $lastIdx := sub (len .Pull.Submissions) 1 }}
255 {{ $targetBranch := .Pull.TargetBranch }}
256 {{ $repoName := .RepoInfo.FullName }}
257 {{ range $idx, $item := .Pull.Submissions }}
258 {{ with $item }}
259 <details {{ if eq $idx $lastIdx }}open{{ end }}>
260 <summary id="round-#{{ .RoundNumber }}" class="list-none cursor-pointer">
261 <div class="flex flex-wrap gap-2 items-stretch">
262 <!-- round number -->
263 <div class="rounded bg-white dark:bg-gray-800 drop-shadow-sm px-3 py-2 dark:text-white">
264 <span class="flex items-center">{{ i "hash" "w-4 h-4" }}{{ .RoundNumber }}</span>
265 </div>
266 <!-- round summary -->
267 <div class="flex-1 rounded drop-shadow-sm bg-white dark:bg-gray-800 p-2 text-gray-500 dark:text-gray-400">
268 <span class="gap-1 flex items-center">
269 {{ $owner := resolve $.Pull.OwnerDid }}
270 {{ $re := "re" }}
271 {{ if eq .RoundNumber 0 }}
272 {{ $re = "" }}
273 {{ end }}
274 <span class="hidden md:inline">{{$re}}submitted</span>
275 by {{ template "user/fragments/picHandleLink" $.Pull.OwnerDid }}
276 <span class="select-none before:content-['\00B7']"></span>
277 <a class="text-gray-500 dark:text-gray-400 hover:text-gray-500" href="#round-#{{ .RoundNumber }}">{{ template "repo/fragments/shortTime" .Created }}</a>
278 <span class="select-none before:content-['·']"></span>
279 {{ $s := "s" }}
280 {{ if eq (len .Comments) 1 }}
281 {{ $s = "" }}
282 {{ end }}
283 {{ len .Comments }} comment{{$s}}
284 </span>
285 </div>
286
287 <a class="btn flex items-center gap-2 no-underline hover:no-underline p-2 group"
288 hx-boost="true"
289 href="/{{ $.RepoInfo.FullName }}/pulls/{{ $.Pull.PullId }}/round/{{.RoundNumber}}">
290 {{ i "file-diff" "w-4 h-4" }}
291 <span class="hidden md:inline">diff</span>
292 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }}
293 </a>
294 {{ if ne $idx 0 }}
295 <a class="btn flex items-center gap-2 no-underline hover:no-underline p-2 group"
296 hx-boost="true"
297 href="/{{ $.RepoInfo.FullName }}/pulls/{{ $.Pull.PullId }}/round/{{.RoundNumber}}/interdiff">
298 {{ i "chevrons-left-right-ellipsis" "w-4 h-4 rotate-90" }}
299 <span class="hidden md:inline">interdiff</span>
300 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }}
301 </a>
302 {{ end }}
303 <span id="interdiff-error-{{.RoundNumber}}"></span>
304 </div>
305 </summary>
306
307 {{ if .IsFormatPatch }}
308 {{ $patches := .AsFormatPatch }}
309 {{ $round := .RoundNumber }}
310 <details class="group py-2 md:ml-[3.5rem] text-gray-500 dark:text-gray-400 flex flex-col gap-2 relative text-sm">
311 <summary class="py-1 list-none cursor-pointer hover:text-gray-500 hover:dark:text-gray-400">
312 {{ $s := "s" }}
313 {{ if eq (len $patches) 1 }}
314 {{ $s = "" }}
315 {{ end }}
316 <div class="group-open:hidden flex items-center gap-2 ml-2">
317 {{ i "chevrons-up-down" "w-4 h-4" }} expand {{ len $patches }} commit{{$s}}
318 </div>
319 <div class="hidden group-open:flex items-center gap-2 ml-2">
320 {{ i "chevrons-down-up" "w-4 h-4" }} hide {{ len $patches }} commit{{$s}}
321 </div>
322 </summary>
323 {{ range $patches }}
324 <div id="commit-{{.SHA}}" class="py-1 px-2 relative w-full md:max-w-3/5 md:w-fit flex flex-col">
325 <div class="flex items-center gap-2">
326 {{ i "git-commit-horizontal" "w-4 h-4" }}
327 <div class="text-sm text-gray-500 dark:text-gray-400">
328 <!-- attempt to resolve $fullRepo: this is possible only on non-deleted forks and branches -->
329 {{ $fullRepo := "" }}
330 {{ if and $.Pull.IsForkBased $.Pull.PullSource.Repo }}
331 {{ $fullRepo = printf "%s/%s" $owner $.Pull.PullSource.Repo.Name }}
332 {{ else if $.Pull.IsBranchBased }}
333 {{ $fullRepo = $.RepoInfo.FullName }}
334 {{ end }}
335
336 <!-- if $fullRepo was resolved, link to it, otherwise just span without a link -->
337 {{ if $fullRepo }}
338 <a href="/{{ $fullRepo }}/commit/{{ .SHA }}" class="font-mono text-gray-500 dark:text-gray-400">{{ slice .SHA 0 8 }}</a>
339 {{ else }}
340 <span class="font-mono">{{ slice .SHA 0 8 }}</span>
341 {{ end }}
342 </div>
343 <div class="flex items-center">
344 <span>{{ .Title | description }}</span>
345 {{ if gt (len .Body) 0 }}
346 <button
347 class="py-1/2 px-1 mx-2 bg-gray-200 hover:bg-gray-400 rounded dark:bg-gray-700 dark:hover:bg-gray-600"
348 hx-on:click="document.getElementById('body-{{$round}}-{{.SHA}}').classList.toggle('hidden')"
349 >
350 {{ i "ellipsis" "w-3 h-3" }}
351 </button>
352 {{ end }}
353 </div>
354 </div>
355 {{ if gt (len .Body) 0 }}
356 <p id="body-{{$round}}-{{.SHA}}" class="hidden mt-1 text-sm pb-2">
357 {{ nl2br .Body }}
358 </p>
359 {{ end }}
360 </div>
361 {{ end }}
362 </details>
363 {{ end }}
364
365
366 <div class="md:pl-[3.5rem] flex flex-col gap-2 mt-2 relative">
367 {{ range $cidx, $c := .Comments }}
368 <div id="comment-{{$c.ID}}" class="bg-white dark:bg-gray-800 rounded drop-shadow-sm py-2 px-4 relative w-full">
369 {{ if gt $cidx 0 }}
370 <div class="absolute left-8 -top-2 w-px h-2 bg-gray-300 dark:bg-gray-600"></div>
371 {{ end }}
372 <div class="text-sm text-gray-500 dark:text-gray-400 flex items-center gap-1">
373 {{ template "user/fragments/picHandleLink" $c.OwnerDid }}
374 <span class="before:content-['·']"></span>
375 <a class="text-gray-500 dark:text-gray-400 hover:text-gray-500 dark:hover:text-gray-300" href="#comment-{{.ID}}">{{ template "repo/fragments/time" $c.Created }}</a>
376 </div>
377 <div class="prose dark:prose-invert">
378 {{ $c.Body | markdown }}
379 </div>
380 </div>
381 {{ end }}
382
383 {{ block "pipelineStatus" (list $ .) }} {{ end }}
384
385 {{ if eq $lastIdx .RoundNumber }}
386 {{ block "mergeStatus" $ }} {{ end }}
387 {{ block "resubmitStatus" $ }} {{ end }}
388 {{ end }}
389
390 {{ if $.LoggedInUser }}
391 {{ template "repo/pulls/fragments/pullActions"
392 (dict
393 "LoggedInUser" $.LoggedInUser
394 "Pull" $.Pull
395 "RepoInfo" $.RepoInfo
396 "RoundNumber" .RoundNumber
397 "MergeCheck" $.MergeCheck
398 "ResubmitCheck" $.ResubmitCheck
399 "BranchDeleteStatus" $.BranchDeleteStatus
400 "Stack" $.Stack) }}
401 {{ else }}
402 <div class="bg-amber-50 dark:bg-amber-900 border border-amber-500 rounded drop-shadow-sm p-2 relative flex gap-2 items-center w-fit">
403 <a href="/signup" class="btn-create py-0 hover:no-underline hover:text-white flex items-center gap-2">
404 sign up
405 </a>
406 <span class="text-gray-500 dark:text-gray-400">or</span>
407 <a href="/login" class="underline">login</a>
408 to add to the discussion
409 </div>
410 {{ end }}
411 </div>
412 </details>
413 {{ end }}
414 {{ end }}
415{{ end }}
416
417{{ define "mergeStatus" }}
418 {{ if .Pull.State.IsClosed }}
419 <div class="bg-gray-50 dark:bg-gray-700 border border-black dark:border-gray-500 rounded drop-shadow-sm px-6 py-2 relative">
420 <div class="flex items-center gap-2 text-black dark:text-white">
421 {{ i "ban" "w-4 h-4" }}
422 <span class="font-medium">closed without merging</span
423 >
424 </div>
425 </div>
426 {{ else if .Pull.State.IsMerged }}
427 <div class="bg-purple-50 dark:bg-purple-900 border border-purple-500 rounded drop-shadow-sm px-6 py-2 relative">
428 <div class="flex items-center gap-2 text-purple-500 dark:text-purple-300">
429 {{ i "git-merge" "w-4 h-4" }}
430 <span class="font-medium">pull request successfully merged</span
431 >
432 </div>
433 </div>
434 {{ else if .Pull.State.IsDeleted }}
435 <div class="bg-red-50 dark:bg-red-900 border border-red-500 rounded drop-shadow-sm px-6 py-2 relative">
436 <div class="flex items-center gap-2 text-red-500 dark:text-red-300">
437 {{ i "git-pull-request-closed" "w-4 h-4" }}
438 <span class="font-medium">This pull has been deleted (possibly by jj abandon or jj squash)</span>
439 </div>
440 </div>
441 {{ else if and .MergeCheck .MergeCheck.Error }}
442 <div class="bg-red-50 dark:bg-red-900 border border-red-500 rounded drop-shadow-sm px-6 py-2 relative">
443 <div class="flex items-center gap-2 text-red-500 dark:text-red-300">
444 {{ i "triangle-alert" "w-4 h-4" }}
445 <span class="font-medium">{{ .MergeCheck.Error }}</span>
446 </div>
447 </div>
448 {{ else if and .MergeCheck .MergeCheck.IsConflicted }}
449 <div class="bg-red-50 dark:bg-red-900 border border-red-500 rounded drop-shadow-sm px-6 py-2 relative">
450 <details class="text-red-500 dark:text-red-300 group">
451 <summary class="flex items-center justify-between cursor-pointer list-none">
452 <div class="flex items-center gap-2 ">
453 {{ i "triangle-alert" "w-4 h-4" }}
454 <span class="font-medium">merge conflicts detected</span>
455 </div>
456 <div>
457 <span class="group-open:hidden inline">{{ i "chevrons-up-down" "w-4 h-4" }}</span>
458 <span class="hidden group-open:inline">{{ i "chevrons-down-up" "w-4 h-4" }}</span>
459 </div>
460 </summary>
461 {{ if gt (len .MergeCheck.Conflicts) 0 }}
462 <ul class="space-y-1 mt-2">
463 {{ range .MergeCheck.Conflicts }}
464 {{ if .Filename }}
465 <li class="flex items-center">
466 {{ i "file-warning" "inline-flex w-4 h-4 mr-1.5 text-red-500 dark:text-red-300 flex-shrink-0" }}
467 <span class="font-mono" style="word-break: keep-all; overflow-wrap: break-word;">{{ .Filename }}</span>
468 </li>
469 {{ else if .Reason }}
470 <li class="flex items-center">
471 {{ i "file-warning" "w-4 h-4 mr-1.5 text-red-500 dark:text-red-300" }}
472 <span>{{.Reason}}</span>
473 </li>
474 {{ end }}
475 {{ end }}
476 </ul>
477 {{ end }}
478 </details>
479 </div>
480 {{ else if .MergeCheck }}
481 <div class="bg-green-50 dark:bg-green-900 border border-green-500 rounded drop-shadow-sm px-6 py-2 relative">
482 <div class="flex items-center gap-2 text-green-500 dark:text-green-300">
483 {{ i "circle-check-big" "w-4 h-4" }}
484 <span class="font-medium">no conflicts, ready to merge</span>
485 </div>
486 </div>
487 {{ end }}
488{{ end }}
489
490{{ define "resubmitStatus" }}
491 {{ if .ResubmitCheck.Yes }}
492 <div class="bg-amber-50 dark:bg-amber-900 border border-amber-500 rounded drop-shadow-sm px-6 py-2 relative">
493 <div class="flex items-center gap-2 text-amber-500 dark:text-amber-300">
494 {{ i "triangle-alert" "w-4 h-4" }}
495 <span class="font-medium">this branch has been updated, consider resubmitting</span>
496 </div>
497 </div>
498 {{ end }}
499{{ end }}
500
501{{ define "pipelineStatus" }}
502 {{ $root := index . 0 }}
503 {{ $submission := index . 1 }}
504 {{ $pipeline := index $root.Pipelines $submission.SourceRev }}
505 {{ with $pipeline }}
506 {{ $id := .Id }}
507 {{ if .Statuses }}
508 <span>Workflows:</span>
509 <div class=" grid grid-cols-1 bg-white dark:bg-gray-800 rounded border border-gray-200 dark:border-gray-700 divide-y divide-gray-200 dark:divide-gray-700">
510 {{ range $name, $all := .Statuses }}
511 <a href="/{{ $root.RepoInfo.FullName }}/pipelines/{{ $id }}/workflow/{{ $name }}" class="no-underline hover:no-underline hover:bg-gray-100/25 hover:dark:bg-gray-700/25">
512 <div
513 class="flex gap-2 items-center justify-between p-2">
514 {{ $lastStatus := $all.Latest }}
515 {{ $kind := $lastStatus.Status.String }}
516
517 <div id="left" class="flex items-center gap-2 flex-shrink-0">
518 {{ template "repo/pipelines/fragments/workflowSymbol" $all }}
519 {{ $name }}
520 </div>
521 <div id="right" class="flex items-center gap-2 flex-shrink-0">
522 <span class="font-bold">{{ $kind }}</span>
523 {{ if .TimeTaken }}
524 {{ template "repo/fragments/duration" .TimeTaken }}
525 {{ else }}
526 {{ template "repo/fragments/shortTimeAgo" $lastStatus.Created }}
527 {{ end }}
528 </div>
529 </div>
530 </a>
531 {{ end }}
532 </div>
533 {{ end }}
534 {{ end }}
535{{ end }}