this repo has no description
1{{ define "title" }}timeline{{ end }}
2
3{{ define "extrameta" }}
4 <meta property="og:title" content="timeline · tangled" />
5 <meta property="og:type" content="object" />
6 <meta property="og:url" content="https://tangled.sh" />
7 <meta property="og:description" content="tightly-knit social coding" />
8{{ end }}
9
10{{ define "content" }}
11 {{ if .LoggedInUser }}
12 {{ else }}
13 {{ block "hero" $ }}{{ end }}
14 {{ end }}
15
16 {{ block "trending" $ }}{{ end }}
17 {{ block "timeline" $ }}{{ end }}
18{{ end }}
19
20{{ define "hero" }}
21 <div class="flex flex-col text-black dark:text-white p-6 gap-6 max-w-xl">
22 <div class="font-bold text-4xl">tightly-knit<br>social coding.</div>
23
24 <p class="text-lg">
25 tangled is new social-enabled git collaboration platform built on <a class="underline" href="https://atproto.com/">atproto</a>.
26 </p>
27 <p class="text-lg">
28 we envision a place where developers have complete ownership of their
29 code, open source communities can freely self-govern and most
30 importantly, coding can be social and fun again.
31 </p>
32
33 <div class="flex gap-6 items-center">
34 <a href="/signup" class="no-underline hover:no-underline ">
35 <button class="btn-create flex gap-2 px-4 items-center">
36 join now {{ i "arrow-right" "size-4" }}
37 </button>
38 </a>
39 </div>
40 </div>
41{{ end }}
42
43{{ define "trending" }}
44 <div class="w-full md:mx-0 py-4">
45 <div class="px-6 pb-4">
46 <h3 class="text-xl font-bold dark:text-white flex items-center gap-2">
47 Trending
48 {{ i "trending-up" "size-4 flex-shrink-0" }}
49 </h3>
50 </div>
51 <div class="flex gap-4 overflow-x-auto scrollbar-hide items-stretch">
52 {{ range $index, $repo := .Repos }}
53 <div class="flex-none h-full border border-gray-200 dark:border-gray-700 rounded-sm w-96">
54 {{ template "user/fragments/repoCard" (list $ $repo true) }}
55 </div>
56 {{ else }}
57 <div class="py-8 px-6 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-sm">
58 <div class="text-sm text-gray-500 dark:text-gray-400 text-center">
59 No trending repositories this week
60 </div>
61 </div>
62 {{ end }}
63 </div>
64 </div>
65{{ end }}
66
67{{ define "timeline" }}
68 <div class="py-4">
69 <div class="px-6 pb-4">
70 <p class="text-xl font-bold dark:text-white">Timeline</p>
71 </div>
72
73 <div class="flex flex-col gap-4">
74 {{ range $i, $e := .Timeline }}
75 <div class="relative">
76 {{ if ne $i 0 }}
77 <div class="absolute left-8 -top-4 w-px h-4 bg-gray-300 dark:bg-gray-600"></div>
78 {{ end }}
79 {{ with $e }}
80 <div class="flex flex-col divide-y divide-gray-200 dark:divide-gray-700 border border-gray-200 dark:border-gray-700 rounded-sm">
81 {{ if .Repo }}
82 {{ block "repoEvent" (list $ .Repo .Source) }} {{ end }}
83 {{ else if .Star }}
84 {{ block "starEvent" (list $ .Star) }} {{ end }}
85 {{ else if .Follow }}
86 {{ block "followEvent" (list $ .Follow .Profile .FollowStats) }} {{ end }}
87 {{ end }}
88 </div>
89 {{ end }}
90 </div>
91 {{ end }}
92 </div>
93 </div>
94{{ end }}
95
96{{ define "repoEvent" }}
97 {{ $root := index . 0 }}
98 {{ $repo := index . 1 }}
99 {{ $source := index . 2 }}
100 {{ $userHandle := resolve $repo.Did }}
101 <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">
102 {{ template "user/fragments/picHandleLink" $repo.Did }}
103 {{ with $source }}
104 {{ $sourceDid := resolve .Did }}
105 forked
106 <a href="/{{ $sourceDid }}/{{ .Name }}"class="no-underline hover:underline">
107 {{ $sourceDid }}/{{ .Name }}
108 </a>
109 to
110 <a href="/{{ $userHandle }}/{{ $repo.Name }}" class="no-underline hover:underline">{{ $repo.Name }}</a>
111 {{ else }}
112 created
113 <a href="/{{ $userHandle }}/{{ $repo.Name }}" class="no-underline hover:underline">
114 {{ $repo.Name }}
115 </a>
116 {{ end }}
117 <span class="text-gray-700 dark:text-gray-400 text-xs">{{ template "repo/fragments/time" $repo.Created }}</span>
118 </div>
119 {{ with $repo }}
120 {{ template "user/fragments/repoCard" (list $root . true) }}
121 {{ end }}
122{{ end }}
123
124{{ define "starEvent" }}
125 {{ $root := index . 0 }}
126 {{ $star := index . 1 }}
127 {{ with $star }}
128 {{ $starrerHandle := resolve .StarredByDid }}
129 {{ $repoOwnerHandle := resolve .Repo.Did }}
130 <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">
131 {{ template "user/fragments/picHandleLink" $starrerHandle }}
132 starred
133 <a href="/{{ $repoOwnerHandle }}/{{ .Repo.Name }}" class="no-underline hover:underline">
134 {{ $repoOwnerHandle | truncateAt30 }}/{{ .Repo.Name }}
135 </a>
136 <span class="text-gray-700 dark:text-gray-400 text-xs">{{ template "repo/fragments/time" .Created }}</span>
137 </div>
138 {{ with .Repo }}
139 {{ template "user/fragments/repoCard" (list $root . true) }}
140 {{ end }}
141 {{ end }}
142{{ end }}
143
144
145{{ define "followEvent" }}
146 {{ $root := index . 0 }}
147 {{ $follow := index . 1 }}
148 {{ $profile := index . 2 }}
149 {{ $stat := index . 3 }}
150
151 {{ $userHandle := resolve $follow.UserDid }}
152 {{ $subjectHandle := resolve $follow.SubjectDid }}
153 <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">
154 {{ template "user/fragments/picHandleLink" $userHandle }}
155 followed
156 {{ template "user/fragments/picHandleLink" $subjectHandle }}
157 <span class="text-gray-700 dark:text-gray-400 text-xs">{{ template "repo/fragments/time" $follow.FollowedAt }}</span>
158 </div>
159 <div class="py-4 px-6 drop-shadow-sm rounded bg-white dark:bg-gray-800 flex items-center gap-4">
160 <div class="flex-shrink-0 max-h-full w-24 h-24">
161 <img class="object-cover rounded-full p-2" src="{{ fullAvatar $subjectHandle }}" />
162 </div>
163
164 <div class="flex-1 min-h-0 justify-around flex flex-col">
165 <a href="/{{ $subjectHandle }}">
166 <span class="font-bold dark:text-white overflow-hidden text-ellipsis whitespace-nowrap max-w-full">{{ $subjectHandle | truncateAt30 }}</span>
167 </a>
168 {{ with $profile }}
169 {{ with .Description }}
170 <p class="text-sm pb-2 md:pb-2">{{.}}</p>
171 {{ end }}
172 {{ end }}
173 {{ with $stat }}
174 <div class="text-sm flex items-center gap-2 my-2 overflow-hidden text-ellipsis whitespace-nowrap max-w-full">
175 <span class="flex-shrink-0">{{ i "users" "size-4" }}</span>
176 <span id="followers"><a href="/{{ $subjectHandle }}?tab=followers">{{ .Followers }} followers</a></span>
177 <span class="select-none after:content-['·']"></span>
178 <span id="following"><a href="/{{ $subjectHandle }}?tab=following">{{ .Following }} following</a></span>
179 </div>
180 {{ end }}
181 </div>
182 </div>
183{{ end }}