this repo has no description
1{{ define "title" }}{{ or .Card.UserHandle .Card.UserDid }}{{ end }}
2
3{{ define "profileContent" }}
4 <div id="all-repos" class="md:col-span-4 order-2 md:order-2">
5 <div class="grid grid-cols-1 gap-4">
6 {{ block "ownRepos" . }}{{ end }}
7 {{ block "collaboratingRepos" . }}{{ end }}
8 </div>
9 </div>
10 <div class="md:col-span-4 order-3 md:order-3">
11 {{ block "profileTimeline" . }}{{ end }}
12 </div>
13{{ end }}
14
15{{ define "profileTimeline" }}
16 <p class="text-sm font-bold px-2 pb-4 dark:text-white">ACTIVITY</p>
17 <div class="flex flex-col gap-4 relative">
18 {{ if .ProfileTimeline.IsEmpty }}
19 <p class="dark:text-white">This user does not have any activity yet.</p>
20 {{ end }}
21
22 {{ with .ProfileTimeline }}
23 {{ range $idx, $byMonth := .ByMonth }}
24 {{ with $byMonth }}
25 {{ if not .IsEmpty }}
26 <div class="border border-gray-200 dark:border-gray-700 rounded-sm py-4 px-6">
27 <p class="text-sm font-mono mb-2 text-gray-500 dark:text-gray-400">
28 {{ if eq $idx 0 }}
29 this month
30 {{ else }}
31 {{$idx}} month{{if ne $idx 1}}s{{end}} ago
32 {{ end }}
33 </p>
34
35 <div class="flex flex-col gap-1">
36 {{ block "repoEvents" .RepoEvents }} {{ end }}
37 {{ block "issueEvents" .IssueEvents }} {{ end }}
38 {{ block "pullEvents" .PullEvents }} {{ end }}
39 </div>
40 </div>
41 {{ end }}
42 {{ end }}
43 {{ end }}
44 {{ end }}
45 </div>
46{{ end }}
47
48{{ define "repoEvents" }}
49 {{ if gt (len .) 0 }}
50 <details>
51 <summary class="list-none cursor-pointer hover:text-gray-500 hover:dark:text-gray-400">
52 <div class="flex flex-wrap items-center gap-2">
53 {{ i "book-plus" "w-4 h-4" }}
54 created {{ len . }} {{if eq (len .) 1 }}repository{{else}}repositories{{end}}
55 </div>
56 </summary>
57 <div class="py-2 text-sm flex flex-col gap-3 mb-2">
58 {{ range . }}
59 <div class="flex flex-wrap items-center gap-2">
60 <span class="text-gray-500 dark:text-gray-400">
61 {{ if .Source }}
62 {{ i "git-fork" "w-4 h-4" }}
63 {{ else }}
64 {{ i "book-plus" "w-4 h-4" }}
65 {{ end }}
66 </span>
67 <a href="/{{ resolve .Repo.Did }}/{{ .Repo.Name }}" class="no-underline hover:underline">
68 {{- .Repo.Name -}}
69 </a>
70 </div>
71 {{ end }}
72 </div>
73 </details>
74 {{ end }}
75{{ end }}
76
77{{ define "issueEvents" }}
78 {{ $items := .Items }}
79 {{ $stats := .Stats }}
80
81 {{ if gt (len $items) 0 }}
82 <details>
83 <summary class="list-none cursor-pointer hover:text-gray-500 hover:dark:text-gray-400">
84 <div class="flex flex-wrap items-center gap-2">
85 {{ i "circle-dot" "w-4 h-4" }}
86
87 <div>
88 created {{ len $items }} {{if eq (len $items) 1 }}issue{{else}}issues{{end}}
89 </div>
90
91 {{ if gt $stats.Open 0 }}
92 <span class="px-2 py-1/2 text-sm rounded text-white bg-green-600 dark:bg-green-700">
93 {{$stats.Open}} open
94 </span>
95 {{ end }}
96
97 {{ if gt $stats.Closed 0 }}
98 <span class="px-2 py-1/2 text-sm rounded text-white bg-gray-800 dark:bg-gray-700">
99 {{$stats.Closed}} closed
100 </span>
101 {{ end }}
102
103 </div>
104 </summary>
105 <div class="py-2 text-sm flex flex-col gap-3 mb-2">
106 {{ range $items }}
107 {{ $repoOwner := resolve .Metadata.Repo.Did }}
108 {{ $repoName := .Metadata.Repo.Name }}
109 {{ $repoUrl := printf "%s/%s" $repoOwner $repoName }}
110
111 <div class="flex gap-2 text-gray-600 dark:text-gray-300">
112 {{ if .Open }}
113 <span class="text-green-600 dark:text-green-500">
114 {{ i "circle-dot" "w-4 h-4" }}
115 </span>
116 {{ else }}
117 <span class="text-gray-500 dark:text-gray-400">
118 {{ i "ban" "w-4 h-4" }}
119 </span>
120 {{ end }}
121 <div class="flex-none min-w-8 text-right">
122 <span class="text-gray-500 dark:text-gray-400">#{{ .IssueId }}</span>
123 </div>
124 <div class="break-words max-w-full">
125 <a href="/{{$repoUrl}}/issues/{{ .IssueId }}" class="no-underline hover:underline">
126 {{ .Title -}}
127 </a>
128 on
129 <a href="/{{$repoUrl}}" class="no-underline hover:underline whitespace-nowrap">
130 {{$repoUrl}}
131 </a>
132 </div>
133 </div>
134 {{ end }}
135 </div>
136 </details>
137 {{ end }}
138{{ end }}
139
140{{ define "pullEvents" }}
141 {{ $items := .Items }}
142 {{ $stats := .Stats }}
143 {{ if gt (len $items) 0 }}
144 <details>
145 <summary class="list-none cursor-pointer hover:text-gray-500 hover:dark:text-gray-400">
146 <div class="flex flex-wrap items-center gap-2">
147 {{ i "git-pull-request" "w-4 h-4" }}
148
149 <div>
150 created {{ len $items }} {{if eq (len $items) 1 }}pull request{{else}}pull requests{{end}}
151 </div>
152
153 {{ if gt $stats.Open 0 }}
154 <span class="px-2 py-1/2 text-sm rounded text-white bg-green-600 dark:bg-green-700">
155 {{$stats.Open}} open
156 </span>
157 {{ end }}
158
159 {{ if gt $stats.Merged 0 }}
160 <span class="px-2 py-1/2 text-sm rounded text-white bg-purple-600 dark:bg-purple-700">
161 {{$stats.Merged}} merged
162 </span>
163 {{ end }}
164
165
166 {{ if gt $stats.Closed 0 }}
167 <span class="px-2 py-1/2 text-sm rounded text-white bg-gray-800 dark:bg-gray-700">
168 {{$stats.Closed}} closed
169 </span>
170 {{ end }}
171
172 </div>
173 </summary>
174 <div class="py-2 text-sm flex flex-col gap-3 mb-2">
175 {{ range $items }}
176 {{ $repoOwner := resolve .Repo.Did }}
177 {{ $repoName := .Repo.Name }}
178 {{ $repoUrl := printf "%s/%s" $repoOwner $repoName }}
179
180 <div class="flex gap-2 text-gray-600 dark:text-gray-300">
181 {{ if .State.IsOpen }}
182 <span class="text-green-600 dark:text-green-500">
183 {{ i "git-pull-request" "w-4 h-4" }}
184 </span>
185 {{ else if .State.IsMerged }}
186 <span class="text-purple-600 dark:text-purple-500">
187 {{ i "git-merge" "w-4 h-4" }}
188 </span>
189 {{ else }}
190 <span class="text-gray-600 dark:text-gray-300">
191 {{ i "git-pull-request-closed" "w-4 h-4" }}
192 </span>
193 {{ end }}
194 <div class="flex-none min-w-8 text-right">
195 <span class="text-gray-500 dark:text-gray-400">#{{ .PullId }}</span>
196 </div>
197 <div class="break-words max-w-full">
198 <a href="/{{$repoUrl}}/pulls/{{ .PullId }}" class="no-underline hover:underline">
199 {{ .Title -}}
200 </a>
201 on
202 <a href="/{{$repoUrl}}" class="no-underline hover:underline whitespace-nowrap">
203 {{$repoUrl}}
204 </a>
205 </div>
206 </div>
207 {{ end }}
208 </div>
209 </details>
210 {{ end }}
211{{ end }}
212
213{{ define "ownRepos" }}
214 <div>
215 <div class="text-sm font-bold px-2 pb-4 dark:text-white flex items-center gap-2">
216 <a href="/@{{ or $.Card.UserHandle $.Card.UserDid }}?tab=repos"
217 class="flex text-black dark:text-white items-center gap-2 no-underline hover:no-underline group">
218 <span>PINNED REPOS</span>
219 </a>
220 {{ if and .LoggedInUser (eq .LoggedInUser.Did .Card.UserDid) }}
221 <button
222 hx-get="profile/edit-pins"
223 hx-target="#all-repos"
224 class="py-0 font-normal text-sm flex gap-2 items-center group">
225 {{ i "pencil" "w-3 h-3" }}
226 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }}
227 </button>
228 {{ end }}
229 </div>
230 <div id="repos" class="grid grid-cols-1 gap-4 items-stretch">
231 {{ range .Repos }}
232 <div class="border border-gray-200 dark:border-gray-700 rounded-sm">
233 {{ template "user/fragments/repoCard" (list $ . false) }}
234 </div>
235 {{ else }}
236 <p class="dark:text-white">This user does not have any pinned repos.</p>
237 {{ end }}
238 </div>
239 </div>
240{{ end }}
241
242{{ define "collaboratingRepos" }}
243 {{ if gt (len .CollaboratingRepos) 0 }}
244 <div>
245 <p class="text-sm font-bold px-2 pb-4 dark:text-white">COLLABORATING ON</p>
246 <div id="collaborating" class="grid grid-cols-1 gap-4">
247 {{ range .CollaboratingRepos }}
248 <div class="border border-gray-200 dark:border-gray-700 rounded-sm">
249 {{ template "user/fragments/repoCard" (list $ . true) }}
250 </div>
251 {{ else }}
252 <p class="px-6 dark:text-white">This user is not collaborating.</p>
253 {{ end }}
254 </div>
255 </div>
256 {{ end }}
257{{ end }}
258