rin
Public Open-source lightweight git hosting.
components.html · 146 lines · 6.8 KB
Raw
1 {{define "ui_button"}}
2 <button
3 type="{{if .Type}}{{.Type}}{{else}}button{{end}}"
4 class="btn {{if .Variant}}btn-{{.Variant}}{{else}}btn-default{{end}} {{if .Size}}btn-{{.Size}}{{end}} {{.Class}}"
5 {{if .ID}}id="{{.ID}}"{{end}}
6 {{if .Disabled}}disabled{{end}}>
7 {{if .Icon}}{{icon .Icon "size-4"}}{{end}}
8 {{if .Label}}<span>{{.Label}}</span>{{end}}
9 </button>
10 {{end}}
11
12 {{define "ui_badge"}}
13 <span class="badge {{if .Variant}}badge-{{.Variant}}{{end}}">
14 {{if .Icon}}{{icon .Icon "size-3.5"}}{{end}}
15 <span>{{.Text}}</span>
16 </span>
17 {{end}}
18
19 {{define "ui_kbd"}}
20 <kbd class="kbd">{{.}}</kbd>
21 {{end}}
22
23 {{define "ui_avatar"}}
24 {{if .Large}}{{avatar .Username .AvatarURL "avatar-lg"}}{{else}}{{avatar .Username .AvatarURL}}{{end}}
25 {{end}}
26
27 {{define "ui_empty_state"}}
28 <div class="empty-state">
29 {{if .Icon}}
30 <div class="mb-2" style="color:hsl(var(--muted-foreground));">{{icon .Icon "size-6"}}</div>
31 {{end}}
32 <div class="font-semibold text-base" style="color:hsl(var(--foreground));">{{.Title}}</div>
33 {{if .Subtitle}}<div class="text-sm text-muted mt-1">{{.Subtitle}}</div>{{end}}
34 {{if .ActionHref}}
35 <div class="mt-4">
36 <a href="{{.ActionHref}}" class="btn btn-primary btn-sm">
37 {{if .ActionIcon}}{{icon .ActionIcon "size-3.5"}}{{end}}
38 <span>{{.ActionLabel}}</span>
39 </a>
40 </div>
41 {{end}}
42 </div>
43 {{end}}
44
45 {{define "repo_header"}}
46 <div class="repo-banner mb-3{{if .Repo.ForkedFromRepoID}} has-subrow{{end}}">
47 <div class="repo-banner-main">
48 <a href="/{{.Repo.OwnerUsername}}" class="repo-avatar-link">{{avatar .Repo.OwnerUsername .Repo.OwnerAvatarURL "repo-avatar"}}</a>
49 <div class="min-w-0 repo-head-block">
50 <div class="repo-head-row">
51 <nav class="breadcrumb" aria-label="Repository breadcrumb">
52 <a href="/{{.Repo.OwnerUsername}}" class="text-sm font-medium text-muted">{{.Repo.OwnerUsername}}</a>
53 <span class="breadcrumb-sep">/</span>
54 <a href="/{{.Repo.OwnerUsername}}/{{.Repo.Name}}" class="font-semibold text-lg tracking-tight" style="color:hsl(var(--foreground));">{{.Repo.Name}}</a>
55 </nav>
56 {{if .Repo.IsPrivate}}
57 <span class="badge badge-outline">{{icon "lock" "size-3.5"}} {{t .Lang "repo.private"}}</span>
58 {{else}}
59 <span class="badge badge-outline">{{icon "globe" "size-3.5"}} {{t .Lang "repo.public"}}</span>
60 {{end}}
61 {{if .Repo.Description}}
62 <span class="repo-desc" data-repo-desc>{{.Repo.Description}}</span>
63 {{end}}
64 </div>
65 {{if .Repo.ForkedFromRepoID}}
66 <div class="text-xs text-muted mt-1 flex items-center gap-2 flex-wrap">
67 <span class="flex items-center gap-1.5">
68 {{icon "git-branch" "size-3.5"}}
69 {{t .Lang "fork.forked_from"}}
70 <a class="font-medium" style="color:hsl(var(--foreground));" href="/{{.Repo.ForkedFromOwner}}/{{.Repo.ForkedFromName}}">{{.Repo.ForkedFromOwner}}/{{.Repo.ForkedFromName}}</a>
71 </span>
72 </div>
73 {{end}}
74 </div>
75 </div>
76
77 {{if .CurrentUser}}
78 <div class="repo-banner-actions">
79 {{if .IsRepoOwner}}
80 <a class="btn btn-ghost btn-sm" href="/{{.Repo.OwnerUsername}}/{{.Repo.Name}}/forks" title="{{t .Lang "fork.forks_btn"}}">{{icon "git-branch" "size-3.5"}}<span class="hidden md-flex">{{if gt .Repo.ForkCount 0}}{{.Repo.ForkCount}} {{end}}{{t .Lang "fork.forks_btn"}}</span></a>
81 {{else if .ViewerFork}}
82 <a class="btn btn-ghost btn-sm" href="/{{.ViewerFork.OwnerUsername}}/{{.ViewerFork.Name}}" title="{{t .Lang "fork.your_fork_desc"}}">{{icon "git-branch" "size-3.5"}}<span class="hidden md-flex">{{t .Lang "fork.your_fork"}}</span></a>
83 {{else}}
84 <form method="post" action="/{{.Repo.OwnerUsername}}/{{.Repo.Name}}/fork" style="margin:0;">
85 <input type="hidden" name="_csrf" value="{{.CSRFToken}}">
86 <button class="btn btn-ghost btn-sm" type="submit" title="{{t .Lang "fork.fork_btn_desc"}}">{{icon "git-branch" "size-3.5"}}<span class="hidden md-flex">{{t .Lang "fork.fork_btn"}}</span></button>
87 </form>
88 {{end}}
89 {{if .Repo.EnableIssues}}
90 <a class="btn btn-ghost btn-sm" href="/{{.Repo.OwnerUsername}}/{{.Repo.Name}}/issues/new" title="{{t .Lang "issues.new"}}">{{icon "issue" "size-3.5"}}<span class="hidden md-flex">{{t .Lang "issues.new"}}</span></a>
91 {{end}}
92 {{if .Repo.EnablePulls}}
93 <a class="btn btn-ghost btn-sm" href="/{{.Repo.OwnerUsername}}/{{.Repo.Name}}/pulls/new" title="{{t .Lang "pulls.new"}}">{{icon "git-pull-request" "size-3.5"}}<span class="hidden md-flex">{{t .Lang "pulls.new"}}</span></a>
94 {{end}}
95 </div>
96 {{end}}
97 </div>
98
99
100 <div class="tabs-nav" role="tablist">
101 <a href="/{{.Repo.OwnerUsername}}/{{.Repo.Name}}" class="tab-link {{if eq .ActiveTab "code"}}active{{end}}" role="tab">
102 {{icon "code" "size-4"}}
103 <span>{{t .Lang "repo.tab.code"}}</span>
104 </a>
105 {{if .Repo.EnableIssues}}
106 <a href="/{{.Repo.OwnerUsername}}/{{.Repo.Name}}/issues" class="tab-link {{if eq .ActiveTab "issues"}}active{{end}}" role="tab">
107 {{icon "issue" "size-4"}}
108 <span>{{t .Lang "repo.tab.issues"}}</span>
109 {{if gt .Repo.OpenIssueCount 0}}
110 <span class="badge" style="padding:0 0.35rem;font-size:0.68rem;">{{.Repo.OpenIssueCount}}</span>
111 {{end}}
112 </a>
113 {{end}}
114 {{if .Repo.EnablePulls}}
115 <a href="/{{.Repo.OwnerUsername}}/{{.Repo.Name}}/pulls" class="tab-link {{if eq .ActiveTab "pulls"}}active{{end}}" role="tab">
116 {{icon "git-pull-request" "size-4"}}
117 <span>{{t .Lang "repo.tab.pulls"}}</span>
118 {{if gt .Repo.OpenPRCount 0}}
119 <span class="badge" style="padding:0 0.35rem;font-size:0.68rem;">{{.Repo.OpenPRCount}}</span>
120 {{end}}
121 </a>
122 {{end}}
123 {{if .Repo.EnableReleases}}
124 <a href="/{{.Repo.OwnerUsername}}/{{.Repo.Name}}/releases" class="tab-link {{if eq .ActiveTab "releases"}}active{{end}}" role="tab">
125 {{icon "tag" "size-4"}}
126 <span>{{t .Lang "repo.tab.releases"}}</span>
127 {{if gt .Repo.ReleaseCount 0}}
128 <span class="badge" style="padding:0 0.35rem;font-size:0.68rem;">{{.Repo.ReleaseCount}}</span>
129 {{end}}
130 </a>
131 {{end}}
132 {{if .Repo.EnableActivity}}
133 <a href="/{{.Repo.OwnerUsername}}/{{.Repo.Name}}/activity" class="tab-link {{if eq .ActiveTab "activity"}}active{{end}}" role="tab">
134 {{icon "activity" "size-4"}}
135 <span>{{t .Lang "repo.tab.activity"}}</span>
136 </a>
137 {{end}}
138 {{if .CanWrite}}
139 <a href="/{{.Repo.OwnerUsername}}/{{.Repo.Name}}/settings" class="tab-link {{if eq .ActiveTab "settings"}}active{{end}}" role="tab">
140 {{icon "settings" "size-4"}}
141 <span>{{t .Lang "repo.tab.settings"}}</span>
142 </a>
143 {{end}}
144 </div>
145 {{end}}
146