100 lines
2.9 kB
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 }}
101