this repo has no description
1{{define "notifications/fragments/item"}}
2<div class="border border-gray-200 dark:border-gray-700 rounded-sm p-3 hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors {{if not .Read}}bg-blue-50 dark:bg-blue-900/20{{end}}">
3 {{if .Issue}}
4 {{template "issueNotification" .}}
5 {{else if .Pull}}
6 {{template "pullNotification" .}}
7 {{else if .Repo}}
8 {{template "repoNotification" .}}
9 {{else if eq .Type "followed"}}
10 {{template "followNotification" .}}
11 {{else}}
12 {{template "genericNotification" .}}
13 {{end}}
14</div>
15{{end}}
16
17{{define "issueNotification"}}
18{{$url := printf "/%s/%s/issues/%d" (resolve .Repo.Did) .Repo.Name .Issue.IssueId}}
19<a
20 href="{{$url}}"
21 class="block no-underline hover:no-underline text-inherit -m-3 p-3"
22>
23 <div class="flex items-center justify-between">
24 <div class="min-w-0 flex-1">
25 <!-- First line: icon + actor action -->
26 <div class="flex items-center gap-2 text-gray-900 dark:text-white">
27 {{if eq .Type "issue_created"}}
28 <span class="text-green-600 dark:text-green-500">
29 {{ i "circle-dot" "w-4 h-4" }}
30 </span>
31 {{else if eq .Type "issue_commented"}}
32 <span class="text-gray-500 dark:text-gray-400">
33 {{ i "message-circle" "w-4 h-4" }}
34 </span>
35 {{else if eq .Type "issue_closed"}}
36 <span class="text-gray-500 dark:text-gray-400">
37 {{ i "ban" "w-4 h-4" }}
38 </span>
39 {{end}}
40 {{template "user/fragments/picHandle" (resolve .ActorDid)}}
41 {{if eq .Type "issue_created"}}
42 <span class="text-gray-500 dark:text-gray-400">opened issue</span>
43 {{else if eq .Type "issue_commented"}}
44 <span class="text-gray-500 dark:text-gray-400">commented on issue</span>
45 {{else if eq .Type "issue_closed"}}
46 <span class="text-gray-500 dark:text-gray-400">closed issue</span>
47 {{end}}
48 {{if not .Read}}
49 <div class="w-2 h-2 bg-blue-500 rounded-full flex-shrink-0 ml-1"></div>
50 {{end}}
51 </div>
52
53 <div class="text-sm text-gray-600 dark:text-gray-400 mt-0.5 ml-6 flex items-center gap-1">
54 <span class="text-gray-500 dark:text-gray-400">#{{.Issue.IssueId}}</span>
55 <span class="text-gray-900 dark:text-white truncate">{{.Issue.Title}}</span>
56 <span>on</span>
57 <span class="font-medium text-gray-900 dark:text-white">{{resolve .Repo.Did}}/{{.Repo.Name}}</span>
58 </div>
59 </div>
60
61 <div class="text-xs text-gray-500 dark:text-gray-400 flex-shrink-0 ml-2">
62 {{ template "repo/fragments/time" .Created }}
63 </div>
64 </div>
65</a>
66{{end}}
67
68{{define "pullNotification"}}
69{{$url := printf "/%s/%s/pulls/%d" (resolve .Repo.Did) .Repo.Name .Pull.PullId}}
70<a
71 href="{{$url}}"
72 class="block no-underline hover:no-underline text-inherit -m-3 p-3"
73>
74 <div class="flex items-center justify-between">
75 <div class="min-w-0 flex-1">
76 <div class="flex items-center gap-2 text-gray-900 dark:text-white">
77 {{if eq .Type "pull_created"}}
78 <span class="text-green-600 dark:text-green-500">
79 {{ i "git-pull-request-create" "w-4 h-4" }}
80 </span>
81 {{else if eq .Type "pull_commented"}}
82 <span class="text-gray-500 dark:text-gray-400">
83 {{ i "message-circle" "w-4 h-4" }}
84 </span>
85 {{else if eq .Type "pull_merged"}}
86 <span class="text-purple-600 dark:text-purple-500">
87 {{ i "git-merge" "w-4 h-4" }}
88 </span>
89 {{else if eq .Type "pull_closed"}}
90 <span class="text-red-600 dark:text-red-500">
91 {{ i "git-pull-request-closed" "w-4 h-4" }}
92 </span>
93 {{end}}
94 {{template "user/fragments/picHandle" (resolve .ActorDid)}}
95 {{if eq .Type "pull_created"}}
96 <span class="text-gray-500 dark:text-gray-400">opened pull request</span>
97 {{else if eq .Type "pull_commented"}}
98 <span class="text-gray-500 dark:text-gray-400">commented on pull request</span>
99 {{else if eq .Type "pull_merged"}}
100 <span class="text-gray-500 dark:text-gray-400">merged pull request</span>
101 {{else if eq .Type "pull_closed"}}
102 <span class="text-gray-500 dark:text-gray-400">closed pull request</span>
103 {{end}}
104 {{if not .Read}}
105 <div class="w-2 h-2 bg-blue-500 rounded-full flex-shrink-0 ml-1"></div>
106 {{end}}
107 </div>
108
109 <div class="text-sm text-gray-600 dark:text-gray-400 mt-0.5 ml-6 flex items-center gap-1">
110 <span class="text-gray-500 dark:text-gray-400">#{{.Pull.PullId}}</span>
111 <span class="text-gray-900 dark:text-white truncate">{{.Pull.Title}}</span>
112 <span>on</span>
113 <span class="font-medium text-gray-900 dark:text-white">{{resolve .Repo.Did}}/{{.Repo.Name}}</span>
114 </div>
115 </div>
116
117 <div class="text-xs text-gray-500 dark:text-gray-400 flex-shrink-0 ml-2">
118 {{ template "repo/fragments/time" .Created }}
119 </div>
120 </div>
121</a>
122{{end}}
123
124{{define "repoNotification"}}
125{{$url := printf "/%s/%s" (resolve .Repo.Did) .Repo.Name}}
126<a
127 href="{{$url}}"
128 class="block no-underline hover:no-underline text-inherit -m-3 p-3"
129>
130 <div class="flex items-center justify-between">
131 <div class="flex items-center gap-2 min-w-0 flex-1">
132 <span class="text-yellow-500 dark:text-yellow-400">
133 {{ i "star" "w-4 h-4" }}
134 </span>
135
136 <div class="min-w-0 flex-1">
137 <!-- Single line for stars: actor action subject -->
138 <div class="flex items-center gap-1 text-gray-900 dark:text-white">
139 {{template "user/fragments/picHandle" (resolve .ActorDid)}}
140 <span class="text-gray-500 dark:text-gray-400">starred</span>
141 <span class="font-medium">{{resolve .Repo.Did}}/{{.Repo.Name}}</span>
142 {{if not .Read}}
143 <div class="w-2 h-2 bg-blue-500 rounded-full flex-shrink-0 ml-1"></div>
144 {{end}}
145 </div>
146 </div>
147 </div>
148
149 <div class="text-xs text-gray-500 dark:text-gray-400 flex-shrink-0 ml-2">
150 {{ template "repo/fragments/time" .Created }}
151 </div>
152 </div>
153</a>
154{{end}}
155
156{{define "followNotification"}}
157{{$url := printf "/%s" (resolve .ActorDid)}}
158<a
159 href="{{$url}}"
160 class="block no-underline hover:no-underline text-inherit -m-3 p-3"
161>
162 <div class="flex items-center justify-between">
163 <div class="flex items-center gap-2 min-w-0 flex-1">
164 <span class="text-blue-600 dark:text-blue-400">
165 {{ i "user-plus" "w-4 h-4" }}
166 </span>
167
168 <div class="min-w-0 flex-1">
169 <div class="flex items-center gap-1 text-gray-900 dark:text-white">
170 {{template "user/fragments/picHandle" (resolve .ActorDid)}}
171 <span class="text-gray-500 dark:text-gray-400">followed you</span>
172 {{if not .Read}}
173 <div class="w-2 h-2 bg-blue-500 rounded-full flex-shrink-0 ml-1"></div>
174 {{end}}
175 </div>
176 </div>
177 </div>
178
179 <div class="text-xs text-gray-500 dark:text-gray-400 flex-shrink-0 ml-2">
180 {{ template "repo/fragments/time" .Created }}
181 </div>
182 </div>
183</a>
184{{end}}
185
186{{define "genericNotification"}}
187<a
188 href="#"
189 class="block no-underline hover:no-underline text-inherit -m-3 p-3"
190>
191 <div class="flex items-center justify-between">
192 <div class="flex items-center gap-2 min-w-0 flex-1">
193 <span class="{{if not .Read}}text-blue-600 dark:text-blue-400{{else}}text-gray-500 dark:text-gray-400{{end}}">
194 {{ i "bell" "w-4 h-4" }}
195 </span>
196
197 <div class="min-w-0 flex-1">
198 <div class="flex items-center gap-1 text-gray-900 dark:text-white">
199 <span>New notification</span>
200 {{if not .Read}}
201 <div class="w-2 h-2 bg-blue-500 rounded-full flex-shrink-0 ml-1"></div>
202 {{end}}
203 </div>
204 </div>
205 </div>
206
207 <div class="text-xs text-gray-500 dark:text-gray-400 flex-shrink-0 ml-2">
208 {{ template "repo/fragments/time" .Created }}
209 </div>
210 </div>
211</a>
212{{end}}