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 justify-between gap-2">
60 <span class="flex items-center gap-2">
61 <span class="text-gray-500 dark:text-gray-400">
62 {{ if .Source }}
63 {{ i "git-fork" "w-4 h-4" }}
64 {{ else }}
65 {{ i "book-plus" "w-4 h-4" }}
66 {{ end }}
67 </span>
68 <a href="/{{ resolve .Repo.Did }}/{{ .Repo.Name }}" class="no-underline hover:underline">
69 {{- .Repo.Name -}}
70 </a>
71 </span>
72
73 {{ with .Repo.RepoStats }}
74 {{ with .Language }}
75 <div class="flex gap-2 items-center text-xs font-mono text-gray-400 ">
76 <div class="size-2 rounded-full"
77 style="background: radial-gradient(circle at 35% 35%, color-mix(in srgb, {{ langColor . }} 70%, white), {{ langColor . }} 30%, color-mix(in srgb, {{ langColor . }} 85%, black));"></div>
78 <span>{{ . }}</span>
79 </div>
80 {{end }}
81 {{end }}
82 </div>
83 {{ end }}
84 </div>
85 </details>
86 {{ end }}
87{{ end }}
88
89{{ define "issueEvents" }}
90 {{ $items := .Items }}
91 {{ $stats := .Stats }}
92
93 {{ if gt (len $items) 0 }}
94 <details>
95 <summary class="list-none cursor-pointer hover:text-gray-500 hover:dark:text-gray-400">
96 <div class="flex flex-wrap items-center gap-2">
97 {{ i "circle-dot" "w-4 h-4" }}
98
99 <div>
100 created {{ len $items }} {{if eq (len $items) 1 }}issue{{else}}issues{{end}}
101 </div>
102
103 {{ if gt $stats.Open 0 }}
104 <span class="px-2 py-1/2 text-sm rounded text-white bg-green-600 dark:bg-green-700">
105 {{$stats.Open}} open
106 </span>
107 {{ end }}
108
109 {{ if gt $stats.Closed 0 }}
110 <span class="px-2 py-1/2 text-sm rounded text-white bg-gray-800 dark:bg-gray-700">
111 {{$stats.Closed}} closed
112 </span>
113 {{ end }}
114
115 </div>
116 </summary>
117 <div class="py-2 text-sm flex flex-col gap-3 mb-2">
118 {{ range $items }}
119 {{ $repoOwner := resolve .Metadata.Repo.Did }}
120 {{ $repoName := .Metadata.Repo.Name }}
121 {{ $repoUrl := printf "%s/%s" $repoOwner $repoName }}
122
123 <div class="flex gap-2 text-gray-600 dark:text-gray-300">
124 {{ if .Open }}
125 <span class="text-green-600 dark:text-green-500">
126 {{ i "circle-dot" "w-4 h-4" }}
127 </span>
128 {{ else }}
129 <span class="text-gray-500 dark:text-gray-400">
130 {{ i "ban" "w-4 h-4" }}
131 </span>
132 {{ end }}
133 <div class="flex-none min-w-8 text-right">
134 <span class="text-gray-500 dark:text-gray-400">#{{ .IssueId }}</span>
135 </div>
136 <div class="break-words max-w-full">
137 <a href="/{{$repoUrl}}/issues/{{ .IssueId }}" class="no-underline hover:underline">
138 {{ .Title -}}
139 </a>
140 on
141 <a href="/{{$repoUrl}}" class="no-underline hover:underline whitespace-nowrap">
142 {{$repoUrl}}
143 </a>
144 </div>
145 </div>
146 {{ end }}
147 </div>
148 </details>
149 {{ end }}
150{{ end }}
151
152{{ define "pullEvents" }}
153 {{ $items := .Items }}
154 {{ $stats := .Stats }}
155 {{ if gt (len $items) 0 }}
156 <details>
157 <summary class="list-none cursor-pointer hover:text-gray-500 hover:dark:text-gray-400">
158 <div class="flex flex-wrap items-center gap-2">
159 {{ i "git-pull-request" "w-4 h-4" }}
160
161 <div>
162 created {{ len $items }} {{if eq (len $items) 1 }}pull request{{else}}pull requests{{end}}
163 </div>
164
165 {{ if gt $stats.Open 0 }}
166 <span class="px-2 py-1/2 text-sm rounded text-white bg-green-600 dark:bg-green-700">
167 {{$stats.Open}} open
168 </span>
169 {{ end }}
170
171 {{ if gt $stats.Merged 0 }}
172 <span class="px-2 py-1/2 text-sm rounded text-white bg-purple-600 dark:bg-purple-700">
173 {{$stats.Merged}} merged
174 </span>
175 {{ end }}
176
177
178 {{ if gt $stats.Closed 0 }}
179 <span class="px-2 py-1/2 text-sm rounded text-white bg-gray-800 dark:bg-gray-700">
180 {{$stats.Closed}} closed
181 </span>
182 {{ end }}
183
184 </div>
185 </summary>
186 <div class="py-2 text-sm flex flex-col gap-3 mb-2">
187 {{ range $items }}
188 {{ $repoOwner := resolve .Repo.Did }}
189 {{ $repoName := .Repo.Name }}
190 {{ $repoUrl := printf "%s/%s" $repoOwner $repoName }}
191
192 <div class="flex gap-2 text-gray-600 dark:text-gray-300">
193 {{ if .State.IsOpen }}
194 <span class="text-green-600 dark:text-green-500">
195 {{ i "git-pull-request" "w-4 h-4" }}
196 </span>
197 {{ else if .State.IsMerged }}
198 <span class="text-purple-600 dark:text-purple-500">
199 {{ i "git-merge" "w-4 h-4" }}
200 </span>
201 {{ else }}
202 <span class="text-gray-600 dark:text-gray-300">
203 {{ i "git-pull-request-closed" "w-4 h-4" }}
204 </span>
205 {{ end }}
206 <div class="flex-none min-w-8 text-right">
207 <span class="text-gray-500 dark:text-gray-400">#{{ .PullId }}</span>
208 </div>
209 <div class="break-words max-w-full">
210 <a href="/{{$repoUrl}}/pulls/{{ .PullId }}" class="no-underline hover:underline">
211 {{ .Title -}}
212 </a>
213 on
214 <a href="/{{$repoUrl}}" class="no-underline hover:underline whitespace-nowrap">
215 {{$repoUrl}}
216 </a>
217 </div>
218 </div>
219 {{ end }}
220 </div>
221 </details>
222 {{ end }}
223{{ end }}
224
225{{ define "ownRepos" }}
226 <div>
227 <div class="text-sm font-bold px-2 pb-4 dark:text-white flex items-center gap-2">
228 <a href="/@{{ or $.Card.UserHandle $.Card.UserDid }}?tab=repos"
229 class="flex text-black dark:text-white items-center gap-2 no-underline hover:no-underline group">
230 <span>PINNED REPOS</span>
231 </a>
232 {{ if and .LoggedInUser (eq .LoggedInUser.Did .Card.UserDid) }}
233 <button
234 hx-get="profile/edit-pins"
235 hx-target="#all-repos"
236 class="py-0 font-normal text-sm flex gap-2 items-center group">
237 {{ i "pencil" "w-3 h-3" }}
238 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }}
239 </button>
240 {{ end }}
241 </div>
242 <div id="repos" class="grid grid-cols-1 gap-4 items-stretch">
243 {{ range .Repos }}
244 <div class="border border-gray-200 dark:border-gray-700 rounded-sm">
245 {{ template "user/fragments/repoCard" (list $ . false) }}
246 </div>
247 {{ else }}
248 <p class="dark:text-white">This user does not have any pinned repos.</p>
249 {{ end }}
250 </div>
251 </div>
252{{ end }}
253
254{{ define "collaboratingRepos" }}
255 {{ if gt (len .CollaboratingRepos) 0 }}
256 <div>
257 <p class="text-sm font-bold px-2 pb-4 dark:text-white">COLLABORATING ON</p>
258 <div id="collaborating" class="grid grid-cols-1 gap-4">
259 {{ range .CollaboratingRepos }}
260 <div class="border border-gray-200 dark:border-gray-700 rounded-sm">
261 {{ template "user/fragments/repoCard" (list $ . true) }}
262 </div>
263 {{ else }}
264 <p class="px-6 dark:text-white">This user is not collaborating.</p>
265 {{ end }}
266 </div>
267 </div>
268 {{ end }}
269{{ end }}
270