main / internal/interface/web/templates/diff.templ
1.6 KB · Templ Raw
1package templates
2
3import "gitgud/internal/domain"
4
5templ diffFiles(files []domain.FileDiff) {
6 for _, d := range files {
7 <div class="card mb-4 overflow-hidden">
8 <div class="flex items-center gap-3 border-b border-line bg-[#0e1410] px-4 py-2.5">
9 <span class="font-mono text-sm text-ink">{ d.Path }</span>
10 <span class="ml-auto flex items-center gap-2 font-mono text-xs">
11 <span class="text-open">+{ itoa(d.Added) }</span>
12 <span class="text-closed">−{ itoa(d.Deleted) }</span>
13 </span>
14 @statSquares(d.Added, d.Deleted)
15 </div>
16 <div class="overflow-x-auto bg-panel2 font-mono text-xs leading-relaxed">
17 for _, line := range diffLines(d.Patch) {
18 <div class={ "whitespace-pre px-4 " + diffLineClass(line) }>{ line }</div>
19 }
20 </div>
21 </div>
22 }
23}
24
25templ statSquares(added, deleted int) {
26 <span class="flex gap-px">
27 for _, kind := range statBlocks(added, deleted) {
28 switch kind {
29 case "add":
30 <span class="size-2.5 bg-open"></span>
31 case "del":
32 <span class="size-2.5 bg-closed"></span>
33 default:
34 <span class="size-2.5 bg-line2"></span>
35 }
36 }
37 </span>
38}
39
40templ commitsList(repo *domain.Repository, commits []domain.Commit) {
41 <div class="card mb-4 overflow-hidden">
42 for _, c := range commits {
43 <div class="row flex items-center justify-between border-b border-line px-4 py-2.5 last:border-0">
44 <a class="truncate text-sm text-ink hover:text-accent" href={ templ.SafeURL(repoPath(repo, "/commit/"+c.Hash)) }>{ firstLine(c.Message) }</a>
45 <code class="ml-4 shrink-0 text-xs text-faint">{ c.ShortHash }</code>
46 </div>
47 }
48 </div>
49}