this repo has no description
1{{define "notifications/fragments/item"}} 2 <div 3 class=" 4 w-full mx-auto rounded drop-shadow-sm dark:text-white bg-white dark:bg-gray-800 px-2 md:px-6 py-4 transition-colors 5 {{if not .Read}}bg-blue-50 dark:bg-blue-900/20 border border-blue-500 dark:border-sky-800{{end}} 6 flex gap-2 items-center 7 " 8 > 9 10 {{ template "notificationIcon" . }} 11 <div class="flex-1 w-full flex flex-col gap-1"> 12 <span>{{ template "notificationHeader" . }}</span> 13 <span class="text-sm text-gray-500 dark:text-gray-400">{{ template "notificationSummary" . }}</span> 14 </div> 15 16 </div> 17{{end}} 18 19{{ define "notificationIcon" }} 20 <div class="flex-shrink-0 max-h-full w-16 h-16 relative"> 21 <img class="object-cover rounded-full p-2" src="{{ fullAvatar .ActorDid }}" /> 22 <div class="absolute border-2 border-white dark:border-gray-800 bg-gray-200 dark:bg-gray-700 bottom-1 right-1 rounded-full p-2 flex items-center justify-center z-10"> 23 {{ i .Icon "size-3 text-black dark:text-white" }} 24 </div> 25 </div> 26{{ end }} 27 28{{ define "notificationHeader" }} 29 {{ $actor := resolve .ActorDid }} 30 31 <span class="text-black dark:text-white w-fit">{{ $actor }}</span> 32 {{ if eq .Type "repo_starred" }} 33 starred <span class="text-black dark:text-white">{{ resolve .Repo.Did }}/{{ .Repo.Name }}</span> 34 {{ else if eq .Type "issue_created" }} 35 opened an issue 36 {{ else if eq .Type "issue_commented" }} 37 commented on an issue 38 {{ else if eq .Type "issue_closed" }} 39 closed an issue 40 {{ else if eq .Type "pull_created" }} 41 created a pull request 42 {{ else if eq .Type "pull_commented" }} 43 commented on a pull request 44 {{ else if eq .Type "pull_merged" }} 45 merged a pull request 46 {{ else if eq .Type "pull_closed" }} 47 closed a pull request 48 {{ else if eq .Type "followed" }} 49 followed you 50 {{ else }} 51 {{ end }} 52{{ end }} 53 54{{ define "notificationSummary" }} 55 {{ if eq .Type "repo_starred" }} 56 <!-- no summary --> 57 {{ else if .Issue }} 58 #{{.Issue.IssueId}} {{.Issue.Title}} on {{resolve .Repo.Did}}/{{.Repo.Name}} 59 {{ else if .Pull }} 60 #{{.Pull.PullId}} {{.Pull.Title}} on {{resolve .Repo.Did}}/{{.Repo.Name}} 61 {{ else if eq .Type "followed" }} 62 <!-- no summary --> 63 {{ else }} 64 {{ end }} 65{{ end }} 66 67{{define "issueNotification"}} 68{{$url := printf "/%s/%s/issues/%d" (resolve .Repo.Did) .Repo.Name .Issue.IssueId}} 69<a 70 href="{{$url}}" 71 class="block no-underline hover:no-underline text-inherit -m-3 p-3" 72> 73 <div class="flex items-center justify-between"> 74 <div class="min-w-0 flex-1"> 75 <!-- First line: icon + actor action --> 76 <div class="flex items-center gap-2 text-gray-900 dark:text-white"> 77 {{if eq .Type "issue_created"}} 78 <span class="text-green-600 dark:text-green-500"> 79 {{ i "circle-dot" "w-4 h-4" }} 80 </span> 81 {{else if eq .Type "issue_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 "issue_closed"}} 86 <span class="text-gray-500 dark:text-gray-400"> 87 {{ i "ban" "w-4 h-4" }} 88 </span> 89 {{end}} 90 {{template "user/fragments/picHandle" .ActorDid}} 91 {{if eq .Type "issue_created"}} 92 <span class="text-gray-500 dark:text-gray-400">opened issue</span> 93 {{else if eq .Type "issue_commented"}} 94 <span class="text-gray-500 dark:text-gray-400">commented on issue</span> 95 {{else if eq .Type "issue_closed"}} 96 <span class="text-gray-500 dark:text-gray-400">closed issue</span> 97 {{end}} 98 {{if not .Read}} 99 <div class="w-2 h-2 bg-blue-500 rounded-full flex-shrink-0 ml-1"></div> 100 {{end}} 101 </div> 102 103 <div class="text-sm text-gray-600 dark:text-gray-400 mt-0.5 ml-6 flex items-center gap-1"> 104 <span class="text-gray-500 dark:text-gray-400">#{{.Issue.IssueId}}</span> 105 <span class="text-gray-900 dark:text-white truncate">{{.Issue.Title}}</span> 106 <span>on</span> 107 <span class="font-medium text-gray-900 dark:text-white">{{resolve .Repo.Did}}/{{.Repo.Name}}</span> 108 </div> 109 </div> 110 111 <div class="text-xs text-gray-500 dark:text-gray-400 flex-shrink-0 ml-2"> 112 {{ template "repo/fragments/time" .Created }} 113 </div> 114 </div> 115</a> 116{{end}} 117 118{{define "pullNotification"}} 119{{$url := printf "/%s/%s/pulls/%d" (resolve .Repo.Did) .Repo.Name .Pull.PullId}} 120<a 121 href="{{$url}}" 122 class="block no-underline hover:no-underline text-inherit -m-3 p-3" 123> 124 <div class="flex items-center justify-between"> 125 <div class="min-w-0 flex-1"> 126 <div class="flex items-center gap-2 text-gray-900 dark:text-white"> 127 {{if eq .Type "pull_created"}} 128 <span class="text-green-600 dark:text-green-500"> 129 {{ i "git-pull-request-create" "w-4 h-4" }} 130 </span> 131 {{else if eq .Type "pull_commented"}} 132 <span class="text-gray-500 dark:text-gray-400"> 133 {{ i "message-circle" "w-4 h-4" }} 134 </span> 135 {{else if eq .Type "pull_merged"}} 136 <span class="text-purple-600 dark:text-purple-500"> 137 {{ i "git-merge" "w-4 h-4" }} 138 </span> 139 {{else if eq .Type "pull_closed"}} 140 <span class="text-red-600 dark:text-red-500"> 141 {{ i "git-pull-request-closed" "w-4 h-4" }} 142 </span> 143 {{end}} 144 {{template "user/fragments/picHandle" (resolve .ActorDid)}} 145 {{if eq .Type "pull_created"}} 146 <span class="text-gray-500 dark:text-gray-400">opened pull request</span> 147 {{else if eq .Type "pull_commented"}} 148 <span class="text-gray-500 dark:text-gray-400">commented on pull request</span> 149 {{else if eq .Type "pull_merged"}} 150 <span class="text-gray-500 dark:text-gray-400">merged pull request</span> 151 {{else if eq .Type "pull_closed"}} 152 <span class="text-gray-500 dark:text-gray-400">closed pull request</span> 153 {{end}} 154 {{if not .Read}} 155 <div class="w-2 h-2 bg-blue-500 rounded-full flex-shrink-0 ml-1"></div> 156 {{end}} 157 </div> 158 159 <div class="text-sm text-gray-600 dark:text-gray-400 mt-0.5 ml-6 flex items-center gap-1"> 160 <span class="text-gray-500 dark:text-gray-400">#{{.Pull.PullId}}</span> 161 <span class="text-gray-900 dark:text-white truncate">{{.Pull.Title}}</span> 162 <span>on</span> 163 <span class="font-medium text-gray-900 dark:text-white">{{resolve .Repo.Did}}/{{.Repo.Name}}</span> 164 </div> 165 </div> 166 167 <div class="text-xs text-gray-500 dark:text-gray-400 flex-shrink-0 ml-2"> 168 {{ template "repo/fragments/time" .Created }} 169 </div> 170 </div> 171</a> 172{{end}} 173 174{{define "repoNotification"}} 175{{$url := printf "/%s/%s" (resolve .Repo.Did) .Repo.Name}} 176<a 177 href="{{$url}}" 178 class="block no-underline hover:no-underline text-inherit -m-3 p-3" 179> 180 <div class="flex items-center justify-between"> 181 <div class="flex items-center gap-2 min-w-0 flex-1"> 182 <span class="text-yellow-500 dark:text-yellow-400"> 183 {{ i "star" "w-4 h-4" }} 184 </span> 185 186 <div class="min-w-0 flex-1"> 187 <!-- Single line for stars: actor action subject --> 188 <div class="flex items-center gap-1 text-gray-900 dark:text-white"> 189 {{template "user/fragments/picHandle" (resolve .ActorDid)}} 190 <span class="text-gray-500 dark:text-gray-400">starred</span> 191 <span class="font-medium">{{resolve .Repo.Did}}/{{.Repo.Name}}</span> 192 {{if not .Read}} 193 <div class="w-2 h-2 bg-blue-500 rounded-full flex-shrink-0 ml-1"></div> 194 {{end}} 195 </div> 196 </div> 197 </div> 198 199 <div class="text-xs text-gray-500 dark:text-gray-400 flex-shrink-0 ml-2"> 200 {{ template "repo/fragments/time" .Created }} 201 </div> 202 </div> 203</a> 204{{end}} 205 206{{define "followNotification"}} 207{{$url := printf "/%s" (resolve .ActorDid)}} 208<a 209 href="{{$url}}" 210 class="block no-underline hover:no-underline text-inherit -m-3 p-3" 211> 212 <div class="flex items-center justify-between"> 213 <div class="flex items-center gap-2 min-w-0 flex-1"> 214 <span class="text-blue-600 dark:text-blue-400"> 215 {{ i "user-plus" "w-4 h-4" }} 216 </span> 217 218 <div class="min-w-0 flex-1"> 219 <div class="flex items-center gap-1 text-gray-900 dark:text-white"> 220 {{template "user/fragments/picHandle" (resolve .ActorDid)}} 221 <span class="text-gray-500 dark:text-gray-400">followed you</span> 222 {{if not .Read}} 223 <div class="w-2 h-2 bg-blue-500 rounded-full flex-shrink-0 ml-1"></div> 224 {{end}} 225 </div> 226 </div> 227 </div> 228 229 <div class="text-xs text-gray-500 dark:text-gray-400 flex-shrink-0 ml-2"> 230 {{ template "repo/fragments/time" .Created }} 231 </div> 232 </div> 233</a> 234{{end}} 235 236{{define "genericNotification"}} 237<a 238 href="#" 239 class="block no-underline hover:no-underline text-inherit -m-3 p-3" 240> 241 <div class="flex items-center justify-between"> 242 <div class="flex items-center gap-2 min-w-0 flex-1"> 243 <span class="{{if not .Read}}text-blue-600 dark:text-blue-400{{else}}text-gray-500 dark:text-gray-400{{end}}"> 244 {{ i "bell" "w-4 h-4" }} 245 </span> 246 247 <div class="min-w-0 flex-1"> 248 <div class="flex items-center gap-1 text-gray-900 dark:text-white"> 249 <span>New notification</span> 250 {{if not .Read}} 251 <div class="w-2 h-2 bg-blue-500 rounded-full flex-shrink-0 ml-1"></div> 252 {{end}} 253 </div> 254 </div> 255 </div> 256 257 <div class="text-xs text-gray-500 dark:text-gray-400 flex-shrink-0 ml-2"> 258 {{ template "repo/fragments/time" .Created }} 259 </div> 260 </div> 261</a> 262{{end}}