main / internal/interface/web/templates/pulls_list.templ
2.0 KB · Templ Raw
1package templates
2
3import "gitgud/internal/domain"
4
5templ PullsList(user *domain.User, repo *domain.Repository, state string, prs []*domain.PullRequest, openCount, mergedCount, closedCount int) {
6 @Layout("Pull requests · "+repo.Name, user) {
7 @repoHeader(repo, "pulls")
8 <div class="mb-4 flex items-center justify-between">
9 <div class="flex gap-5 text-sm">
10 <a class={ stateTabClass(state, "open") } href={ templ.SafeURL(repoPath(repo, "/pulls?state=open")) }>{ itoa(openCount) } Open</a>
11 <a class={ stateTabClass(state, "merged") } href={ templ.SafeURL(repoPath(repo, "/pulls?state=merged")) }>{ itoa(mergedCount) } Merged</a>
12 <a class={ stateTabClass(state, "closed") } href={ templ.SafeURL(repoPath(repo, "/pulls?state=closed")) }>{ itoa(closedCount) } Closed</a>
13 </div>
14 <a class="btn btn-primary" href={ templ.SafeURL(repoPath(repo, "/compare")) }>+ New pull request</a>
15 </div>
16 if len(prs) == 0 {
17 @emptyState("No pull requests", "There are no "+state+" pull requests in this repository.", "", "")
18 } else {
19 <div class="card overflow-hidden">
20 for _, p := range prs {
21 <div class="row border-b border-line px-4 py-3 last:border-0">
22 <a class="flex items-start gap-2.5" href={ templ.SafeURL(repoPath(repo, "/pulls/"+itoa(p.Number))) }>
23 @prDot(string(p.State))
24 <span class="min-w-0">
25 <span class="block text-ink hover:text-accent">{ p.Title }</span>
26 <span class="meta">#{ itoa(p.Number) } · <span class="font-mono">{ p.HeadBranch }</span> → <span class="font-mono">{ p.BaseBranch }</span> · by { p.AuthorName }</span>
27 </span>
28 </a>
29 </div>
30 }
31 </div>
32 }
33 }
34}
35
36templ prDot(state string) {
37 if state == "open" {
38 <span class="mt-1 size-3.5 shrink-0 rounded-full border-2 border-accent"></span>
39 } else if state == "merged" {
40 <span class="mt-1 size-3.5 shrink-0 rounded-full border-2 border-merged"></span>
41 } else {
42 <span class="mt-1 size-3.5 shrink-0 rounded-full border-2 border-faint"></span>
43 }
44}