ikurotime / gitgud

public
main / internal/interface/web/templates/browse_tree.templ
1.8 KB · Templ Raw
 1package templates
 2
 3import "gitgud/internal/domain"
 4
 5templ BrowseTree(user *domain.User, repo *domain.Repository, ref, path string, branches []string, entries []domain.TreeEntry, readme string) {
 6	@Layout(repo.OwnerName+"/"+repo.Name+" · gitgud", user) {
 7		@repoHeader(repo, "code")
 8		<div class="mb-3 flex items-center justify-between gap-3">
 9			<div class="flex items-center gap-3">
10				@branchSwitcher(repo, ref, branches)
11				<div class="font-mono text-sm">
12					for i, c := range treeCrumbs(repo, ref, path) {
13						if i > 0 {
14							<span class="text-faint"> / </span>
15						}
16						<a class="link" href={ templ.SafeURL(c.Href) }>{ c.Name }</a>
17					}
18				</div>
19			</div>
20			<a class="meta hover:text-ink" href={ templ.SafeURL(repoPath(repo, "/commits/"+ref)) }>Commits →</a>
21		</div>
22		<div class="card overflow-hidden">
23			<table class="w-full text-sm">
24				<tbody>
25					for _, e := range entries {
26						<tr class="row border-b border-line last:border-0">
27							<td class="px-4 py-2.5">
28								<a class="flex items-center gap-2.5" href={ templ.SafeURL(entryHref(repo, ref, e)) }>
29									if e.IsDir {
30										<span class="text-accent">▸</span>
31										<span class="font-mono text-ink">{ e.Name }</span>
32									} else {
33										<span class="text-faint">·</span>
34										<span class="font-mono text-muted">{ e.Name }</span>
35									}
36								</a>
37							</td>
38							<td class="px-4 py-2.5 text-right font-mono text-xs text-faint">
39								if !e.IsDir {
40									{ humanSize(e.Size) }
41								}
42							</td>
43						</tr>
44					}
45				</tbody>
46			</table>
47		</div>
48		if readme != "" {
49			<div class="card mt-6 overflow-hidden">
50				<div class="border-b border-line px-5 py-2.5 font-mono text-xs text-muted">README.md</div>
51				<div class="prose-dark px-5 py-4">
52					@templ.Raw(readme)
53				</div>
54			</div>
55		}
56	}
57}