Home

ugit @main - refs - log -
-
https://git.jolheiser.com/ugit.git
The code powering this h*ckin' site
ugit / internal / html / repo_tree.templ
- raw
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package html

import (
	"fmt"
	"go.jolheiser.com/ugit/internal/git"
)

type RepoTreeContext struct {
	BaseContext
	RepoHeaderComponentContext
	RepoBreadcrumbComponentContext
	RepoTreeComponentContext
	ReadmeComponentContext
	Description string
}

templ RepoTree(rtc RepoTreeContext) {
	@base(rtc.BaseContext) {
		@repoHeaderComponent(rtc.RepoHeaderComponentContext)
		@repoBreadcrumbComponent(rtc.RepoBreadcrumbComponentContext)
		@repoTreeComponent(rtc.RepoTreeComponentContext)
		@readmeComponent(rtc.ReadmeComponentContext)
	}
}

type RepoTreeComponentContext struct {
	Repo string
	Ref  string
	Tree []git.FileInfo
	Back string
}

func slashDir(name string, isDir bool) string {
	if isDir {
		return name + "/"
	}
	return name
}

templ repoTreeComponent(rtcc RepoTreeComponentContext) {
	<div class="grid grid-cols-3 sm:grid-cols-8 text-text py-5 rounded px-5 gap-x-3 gap-y-1 bg-base dark:bg-base/50">
		if rtcc.Back != "" {
			<div class="col-span-2"></div>
			<div class="sm:col-span-6"><a class="underline decoration-text/50 decoration-dashed hover:decoration-solid" href={ templ.SafeURL(fmt.Sprintf("/%s/tree/%s/%s", rtcc.Repo, rtcc.Ref, rtcc.Back)) }>..</a></div>
		}
		for _, fi := range rtcc.Tree {
			<div class="sm:col-span-1 break-keep">{ fi.Mode }</div>
			<div class="sm:col-span-1 text-right">{ fi.Size }</div>
			<div class="sm:col-span-6 overflow-hidden text-ellipsis"><a class="underline decoration-text/50 decoration-dashed hover:decoration-solid" href={ templ.SafeURL(fmt.Sprintf("/%s/tree/%s/%s", rtcc.Repo, rtcc.Ref, fi.Path)) }>{ slashDir(fi.Name(), fi.IsDir) }</a></div>
		}
	</div>
}