ikurotime / gitgud

public
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}