1{{ define "title" }} commit {{ .Diff.Commit.This }} {{ end }}
2
3{{ define "repoContent" }}
4
5{{ $repo := .RepoInfo.FullName }}
6{{ $commit := .Diff.Commit }}
7{{ $stat := .Diff.Stat }}
8{{ $diff := .Diff.Diff }}
9
10<section class="commit">
11 <div id="commit-message">
12 {{ $messageParts := splitN $commit.Message "\n\n" 2 }}
13 <div>
14 <p class="pb-2">{{ index $messageParts 0 }}</p>
15 {{ if gt (len $messageParts) 1 }}
16 <p class="mt-1 cursor-text pb-2 text-sm">{{ nl2br (unwrapText (index $messageParts 1)) }}</p>
17 {{ end }}
18 </div>
19 </div>
20
21 <div class="flex items-center">
22 <p class="text-sm text-gray-500">
23 <a href="mailto:{{ $commit.Author.Email }}" class="no-underline hover:underline text-gray-500">{{ $commit.Author.Name }}</a>
24 <span class="px-1 select-none before:content-['\00B7']"></span>
25 {{ timeFmt $commit.Author.When }}
26 <span class="px-1 select-none before:content-['\00B7']"></span>
27 <span class="font-mono">{{ $stat.FilesChanged }}</span> files <span class="font-mono">(+{{ $stat.Insertions }}, -{{ $stat.Deletions }})</span>
28 <span class="px-1 select-none before:content-['\00B7']"></span>
29 </p>
30
31 <p class="flex items-center text-sm text-gray-500">
32 <a href="/{{ $repo }}/commit/{{ $commit.This }}" class="no-underline hover:underline text-gray-500">{{ slice $commit.This 0 8 }}</a>
33 {{ if $commit.Parent }}
34 <i class="w-3 h-3 mx-1" data-lucide="arrow-left"></i>
35 <a href="/{{ $repo }}/commit/{{ $commit.Parent }}" class="no-underline hover:underline text-gray-500">{{ slice $commit.Parent 0 8 }}</a>
36 {{ end }}
37 </p>
38 </div>
39
40 <div class="diff-stat">
41 <br>
42 <strong>jump to</strong>
43 {{ range $diff }}
44 <ul>
45 <li><a href="#file-{{ .Name.New }}">{{ .Name.New }}</a></li>
46 </ul>
47 {{ end }}
48 </div>
49</section>
50
51{{end}}
52
53{{ define "repoAfter" }}
54
55{{ $repo := .RepoInfo.FullName }}
56{{ $commit := .Diff.Commit }}
57{{ $stat := .Diff.Stat }}
58{{ $diff := .Diff.Diff }}
59
60 {{ $this := $commit.This }}
61 {{ $parent := $commit.Parent }}
62
63 {{ $last := sub (len $diff) 1 }}
64 {{ range $idx, $hunk := $diff }}
65 {{ with $hunk }}
66 <section class="mt-4 border border-black w-full mx-auto">
67 <div id="file-{{ .Name.New }}">
68 <div id="diff-file">
69 <details open>
70 <summary class="list-none cursor-pointer sticky top-0">
71 <div id="diff-file-header" class="border-b cursor-pointer bg-white border-black flex justify-between">
72 <div id="left-side-items" class="p-2">
73 {{ if .IsNew }}
74 <span class="diff-type p-1 mr-1 font-mono text-sm bg-green-100 rounded text-green-700 select-none">A</span>
75 {{ end }}
76 {{ if .IsDelete }}
77 <span class="diff-type p-1 mr-1 font-mono text-sm bg-red-100 rounded text-red-700 select-none">D</span>
78 {{ end }}
79 {{ if not (or .IsNew .IsDelete) }}
80 <span class="diff-type p-1 mr-1 font-mono bg-gray-100 text-sm rounded text-gray-700 select-none">M</span>
81 {{ end }}
82
83 <a href="/{{ $repo }}/blob/{{ $this }}/{{ .Name.New }}" class="no-underline hover:underline">{{ .Name.New }}</a>
84 </div>
85
86 {{ $iconstyle := "p-1 mx-1 hover:bg-gray-100 rounded" }}
87 <div id="right-side-items" class="p-2 flex items-center">
88 <a title="top of file" href="#file-{{ .Name.New }}" class="{{ $iconstyle }}"><i class="w-4 h-4" data-lucide="arrow-up-from-line"></i></a>
89 {{ if gt $idx 0 }}
90 {{ $prev := index $diff (sub $idx 1) }}
91 <a title="previous file" href="#file-{{ $prev.Name.New }}" class="{{ $iconstyle }}"><i class="w-4 h-4" data-lucide="arrow-up"></i></a>
92 {{ end }}
93
94 {{ if lt $idx $last }}
95 {{ $next := index $diff (add $idx 1) }}
96 <a title="next file" href="#file-{{ $next.Name.New }}" class="{{ $iconstyle }}"><i class="w-4 h-4" data-lucide="arrow-down"></i></a>
97 {{ end }}
98 </div>
99
100 </div>
101 </summary>
102
103 {{ if .IsBinary }}
104 <p>Not showing binary file.</p>
105 {{ else }}
106 <pre class="overflow-auto">
107 {{- range .TextFragments -}}
108 <div class="bg-gray-100 text-gray-500 select-none">{{ .Header }}</div>
109 {{- range .Lines -}}
110 {{- if eq .Op.String "+" -}}
111 <div class="bg-green-100 text-green-700 p-1"><span class="select-none mr-2">{{ .Op.String }}</span><span>{{ .Line }}</span></div>
112 {{- end -}}
113
114 {{- if eq .Op.String "-" -}}
115 <div class="bg-red-100 text-red-700 p-1"><span class="select-none mr-2">{{ .Op.String }}</span><span>{{ .Line }}</span></div>
116 {{- end -}}
117
118 {{- if eq .Op.String " " -}}
119 <div class="text-gray-500 px"><span class="select-none mr-2">{{ .Op.String }}</span><span>{{ .Line }}</span></div>
120 {{- end -}}
121
122 {{- end -}}
123 {{- end -}}
124 </pre>
125 {{- end -}}
126
127 </details>
128
129 </div>
130 </div>
131 </section>
132 {{ end }}
133 {{ end }}
134
135{{end}}