this repo has no description
1{{ define "timeline/fragments/timeline" }}
2 <div class="py-4">
3 <div class="px-6 pb-4">
4 <p class="text-xl font-bold dark:text-white">Timeline</p>
5 </div>
6
7 <div class="flex flex-col gap-4">
8 {{ range $i, $e := .Timeline }}
9 <div class="relative">
10 {{ if ne $i 0 }}
11 <div class="absolute left-8 -top-4 w-px h-4 bg-gray-300 dark:bg-gray-600"></div>
12 {{ end }}
13 {{ with $e }}
14 <div class="flex flex-col divide-y divide-gray-200 dark:divide-gray-700 border border-gray-200 dark:border-gray-700 rounded-sm">
15 {{ if .Repo }}
16 {{ template "timeline/fragments/repoEvent" (list $ .Repo .Source) }}
17 {{ else if .Star }}
18 {{ template "timeline/fragments/starEvent" (list $ .Star) }}
19 {{ else if .Follow }}
20 {{ template "timeline/fragments/followEvent" (list $ .) }}
21 {{ end }}
22 </div>
23 {{ end }}
24 </div>
25 {{ end }}
26 </div>
27 </div>
28{{ end }}
29
30{{ define "timeline/fragments/repoEvent" }}
31 {{ $root := index . 0 }}
32 {{ $repo := index . 1 }}
33 {{ $source := index . 2 }}
34 {{ $userHandle := resolve $repo.Did }}
35 <div class="pl-6 py-2 bg-white dark:bg-gray-800 text-gray-600 dark:text-gray-300 flex flex-wrap items-center gap-2 text-sm">
36 {{ template "user/fragments/picHandleLink" $repo.Did }}
37 {{ with $source }}
38 {{ $sourceDid := resolve .Did }}
39 forked
40 <a href="/{{ $sourceDid }}/{{ .Name }}"class="no-underline hover:underline">
41 {{ $sourceDid }}/{{ .Name }}
42 </a>
43 to
44 <a href="/{{ $userHandle }}/{{ $repo.Name }}" class="no-underline hover:underline">{{ $repo.Name }}</a>
45 {{ else }}
46 created
47 <a href="/{{ $userHandle }}/{{ $repo.Name }}" class="no-underline hover:underline">
48 {{ $repo.Name }}
49 </a>
50 {{ end }}
51 <span class="text-gray-700 dark:text-gray-400 text-xs">{{ template "repo/fragments/time" $repo.Created }}</span>
52 </div>
53 {{ with $repo }}
54 {{ template "user/fragments/repoCard" (list $root . true) }}
55 {{ end }}
56{{ end }}
57
58{{ define "timeline/fragments/starEvent" }}
59 {{ $root := index . 0 }}
60 {{ $star := index . 1 }}
61 {{ with $star }}
62 {{ $starrerHandle := resolve .StarredByDid }}
63 {{ $repoOwnerHandle := resolve .Repo.Did }}
64 <div class="pl-6 py-2 bg-white dark:bg-gray-800 text-gray-600 dark:text-gray-300 flex flex-wrap items-center gap-2 text-sm">
65 {{ template "user/fragments/picHandleLink" $starrerHandle }}
66 starred
67 <a href="/{{ $repoOwnerHandle }}/{{ .Repo.Name }}" class="no-underline hover:underline">
68 {{ $repoOwnerHandle | truncateAt30 }}/{{ .Repo.Name }}
69 </a>
70 <span class="text-gray-700 dark:text-gray-400 text-xs">{{ template "repo/fragments/time" .Created }}</span>
71 </div>
72 {{ with .Repo }}
73 {{ template "user/fragments/repoCard" (list $root . true) }}
74 {{ end }}
75 {{ end }}
76{{ end }}
77
78{{ define "timeline/fragments/followEvent" }}
79 {{ $root := index . 0 }}
80 {{ $event := index . 1 }}
81 {{ $follow := $event.Follow }}
82 {{ $profile := $event.Profile }}
83 {{ $stat := $event.FollowStats }}
84
85 {{ $userHandle := resolve $follow.UserDid }}
86 {{ $subjectHandle := resolve $follow.SubjectDid }}
87 <div class="pl-6 py-2 bg-white dark:bg-gray-800 text-gray-600 dark:text-gray-300 flex flex-wrap items-center gap-2 text-sm">
88 {{ template "user/fragments/picHandleLink" $userHandle }}
89 followed
90 {{ template "user/fragments/picHandleLink" $subjectHandle }}
91 <span class="text-gray-700 dark:text-gray-400 text-xs">{{ template "repo/fragments/time" $follow.FollowedAt }}</span>
92 </div>
93 <div class="py-4 px-6 drop-shadow-sm rounded bg-white dark:bg-gray-800 flex flex-col md:flex-row md:items-center gap-4">
94 <div class="flex items-center gap-4 flex-1">
95 <div class="flex-shrink-0 max-h-full w-24 h-24">
96 <img alt="" class="object-cover rounded-full p-2" src="{{ fullAvatar $subjectHandle }}" />
97 </div>
98
99 <div class="flex-1 min-h-0 justify-around flex flex-col">
100 <a href="/{{ $subjectHandle }}">
101 <span class="font-bold dark:text-white overflow-hidden text-ellipsis whitespace-nowrap max-w-full">{{ $subjectHandle | truncateAt30 }}</span>
102 </a>
103 {{ with $profile }}
104 {{ with .Description }}
105 <p class="text-sm pb-2 md:pb-2">{{.}}</p>
106 {{ end }}
107 {{ end }}
108 {{ with $stat }}
109 <div class="text-sm flex items-center gap-2 my-2 overflow-hidden text-ellipsis whitespace-nowrap max-w-full">
110 <span class="flex-shrink-0">{{ i "users" "size-4" }}</span>
111 <span id="followers"><a href="/{{ $subjectHandle }}?tab=followers">{{ .Followers }} followers</a></span>
112 <span class="select-none after:content-['·']"></span>
113 <span id="following"><a href="/{{ $subjectHandle }}?tab=following">{{ .Following }} following</a></span>
114 </div>
115 {{ end }}
116 </div>
117 </div>
118
119 {{ if and $root.LoggedInUser (ne $event.FollowStatus.String "IsSelf") }}
120 <div class="flex-shrink-0 w-fit ml-auto">
121 {{ template "user/fragments/follow" (dict "UserDid" $follow.SubjectDid "FollowStatus" $event.FollowStatus) }}
122 </div>
123 {{ end }}
124 </div>
125{{ end }}