rin
Публичный Open-source lightweight git hosting.
components.html · 145 строк · 6.7 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">
47 <div class="repo-banner-main">
48 <a href="/{{.Repo.OwnerUsername}}" class="flex-shrink-0">{{avatar .Repo.OwnerUsername .Repo.OwnerAvatarURL}}</a>
49 <div class="min-w-0">
50 <div class="flex items-center gap-2 flex-wrap">
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 </div>
62 <div class="text-xs text-muted mt-1 flex items-center gap-2 flex-wrap">
63 {{if .Repo.ForkedFromRepoID}}
64 <span class="flex items-center gap-1.5">
65 {{icon "git-branch" "size-3.5"}}
66 {{t .Lang "fork.forked_from"}}
67 <a class="font-medium" style="color:hsl(var(--foreground));" href="/{{.Repo.ForkedFromOwner}}/{{.Repo.ForkedFromName}}">{{.Repo.ForkedFromOwner}}/{{.Repo.ForkedFromName}}</a>
68 </span>
69 {{else if .Repo.Description}}
70 <span class="truncate" style="max-width:36rem;">{{.Repo.Description}}</span>
71 {{end}}
72 </div>
73 </div>
74 </div>
75
76 {{if .CurrentUser}}
77 <div class="repo-banner-actions">
78 {{if .IsRepoOwner}}
79 <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>
80 {{else if .ViewerFork}}
81 <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>
82 {{else}}
83 <form method="post" action="/{{.Repo.OwnerUsername}}/{{.Repo.Name}}/fork" style="margin:0;">
84 <input type="hidden" name="_csrf" value="{{.CSRFToken}}">
85 <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>
86 </form>
87 {{end}}
88 {{if .Repo.EnableIssues}}
89 <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>
90 {{end}}
91 {{if .Repo.EnablePulls}}
92 <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>
93 {{end}}
94 </div>
95 {{end}}
96 </div>
97
98
99 <div class="tabs-nav" role="tablist">
100 <a href="/{{.Repo.OwnerUsername}}/{{.Repo.Name}}" class="tab-link {{if eq .ActiveTab "code"}}active{{end}}" role="tab">
101 {{icon "code" "size-4"}}
102 <span>{{t .Lang "repo.tab.code"}}</span>
103 </a>
104 {{if .Repo.EnableIssues}}
105 <a href="/{{.Repo.OwnerUsername}}/{{.Repo.Name}}/issues" class="tab-link {{if eq .ActiveTab "issues"}}active{{end}}" role="tab">
106 {{icon "issue" "size-4"}}
107 <span>{{t .Lang "repo.tab.issues"}}</span>
108 {{if gt .Repo.OpenIssueCount 0}}
109 <span class="badge" style="padding:0 0.35rem;font-size:0.68rem;">{{.Repo.OpenIssueCount}}</span>
110 {{end}}
111 </a>
112 {{end}}
113 {{if .Repo.EnablePulls}}
114 <a href="/{{.Repo.OwnerUsername}}/{{.Repo.Name}}/pulls" class="tab-link {{if eq .ActiveTab "pulls"}}active{{end}}" role="tab">
115 {{icon "git-pull-request" "size-4"}}
116 <span>{{t .Lang "repo.tab.pulls"}}</span>
117 {{if gt .Repo.OpenPRCount 0}}
118 <span class="badge" style="padding:0 0.35rem;font-size:0.68rem;">{{.Repo.OpenPRCount}}</span>
119 {{end}}
120 </a>
121 {{end}}
122 {{if .Repo.EnableReleases}}
123 <a href="/{{.Repo.OwnerUsername}}/{{.Repo.Name}}/releases" class="tab-link {{if eq .ActiveTab "releases"}}active{{end}}" role="tab">
124 {{icon "tag" "size-4"}}
125 <span>{{t .Lang "repo.tab.releases"}}</span>
126 {{if gt .Repo.ReleaseCount 0}}
127 <span class="badge" style="padding:0 0.35rem;font-size:0.68rem;">{{.Repo.ReleaseCount}}</span>
128 {{end}}
129 </a>
130 {{end}}
131 {{if .Repo.EnableActivity}}
132 <a href="/{{.Repo.OwnerUsername}}/{{.Repo.Name}}/activity" class="tab-link {{if eq .ActiveTab "activity"}}active{{end}}" role="tab">
133 {{icon "activity" "size-4"}}
134 <span>{{t .Lang "repo.tab.activity"}}</span>
135 </a>
136 {{end}}
137 {{if .CanWrite}}
138 <a href="/{{.Repo.OwnerUsername}}/{{.Repo.Name}}/settings" class="tab-link {{if eq .ActiveTab "settings"}}active{{end}}" role="tab">
139 {{icon "settings" "size-4"}}
140 <span>{{t .Lang "repo.tab.settings"}}</span>
141 </a>
142 {{end}}
143 </div>
144 {{end}}
145