1{{ define "title" }}{{ or .UserHandle .UserDid }}{{ end }}
2
3{{ define "content" }}
4<div class="grid grid-cols-1 lg:grid-cols-4 gap-6">
5 <div class="lg:col-span-1">
6 {{ block "profileCard" . }} {{ end }}
7 </div>
8
9 <div class="lg:col-span-3">
10 {{ block "ownRepos" . }} {{ end }}
11 {{ block "collaboratingRepos" . }} {{ end }}
12 </div>
13</div>
14{{ end }}
15
16{{ define "profileCard" }}
17<div class="bg-white px-6 py-4 rounded drop-shadow-sm max-h-fit">
18 <div class="flex justify-center items-center">
19 {{ if .AvatarUri }}
20 <img class="w-1/2 lg:w-full rounded-full p-2" src="{{ .AvatarUri }}" />
21 {{ end }}
22 </div>
23 <p class="text-xl font-bold text-center">
24 {{ didOrHandle .UserDid .UserHandle }}
25 </p>
26 <div class="text-sm text-center">
27 <span>{{ .ProfileStats.Followers }} followers</span>
28 <div class="inline-block px-1 select-none after:content-['·']"></div>
29 <span>{{ .ProfileStats.Following }} following</span>
30 </div>
31
32 {{ if ne .FollowStatus.String "IsSelf" }}
33 <button id="followBtn"
34 class="btn mt-2 w-full"
35 {{ if eq .FollowStatus.String "IsNotFollowing" }}
36 hx-post="/follow?subject={{.UserDid}}"
37 {{ else }}
38 hx-delete="/follow?subject={{.UserDid}}"
39 {{ end }}
40 hx-trigger="click"
41 hx-target="#followBtn"
42 hx-swap="outerHTML"
43 >
44 {{ if eq .FollowStatus.String "IsNotFollowing" }}Follow{{ else }}Unfollow{{ end }}
45 </button>
46 {{ end }}
47</div>
48{{ end }}
49
50{{ define "ownRepos" }}
51<p class="text-sm font-bold py-2 px-6">REPOS</p>
52<div id="repos" class="grid grid-cols-1 md:grid-cols-2 gap-4 mb-6">
53 {{ range .Repos }}
54 <div
55 id="repo-card"
56 class="py-4 px-6 drop-shadow-sm rounded bg-white"
57 >
58 <div id="repo-card-name" class="font-medium">
59 <a href="/@{{ or $.UserHandle $.UserDid }}/{{ .Name }}"
60 >{{ .Name }}</a
61 >
62 </div>
63 <div
64 id="repo-knot-name"
65 class="text-gray-600 text-sm font-mono"
66 >
67 {{ .Knot }}
68 </div>
69 </div>
70 {{ else }}
71 <p class="px-6">This user does not have any repos yet.</p>
72 {{ end }}
73</div>
74{{ end }}
75
76{{ define "collaboratingRepos" }}
77<p class="text-sm font-bold py-2 px-6">COLLABORATING ON</p>
78<div id="collaborating" class="grid grid-cols-1 md:grid-cols-2 gap-4 mb-6">
79 {{ range .CollaboratingRepos }}
80 <div
81 id="repo-card"
82 class="py-4 px-6 drop-shadow-sm rounded bg-white"
83 >
84 <div id="repo-card-name" class="font-medium">
85 <a href="/{{ index $.DidHandleMap .Did }}/{{ .Name }}">
86 {{ index $.DidHandleMap .Did }}/{{ .Name }}
87 </a>
88 </div>
89 <div
90 id="repo-knot-name"
91 class="text-gray-600 text-sm font-mono"
92 >
93 {{ .Knot }}
94 </div>
95 </div>
96 {{ else }}
97 <p class="px-6">This user is not collaborating.</p>
98 {{ end }}
99</div>
100{{ end }}