blob: 4ee1ad6c9abd1a7ae57dc1dfb1b8ea28205b5443 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
{{define "ics-feed-list"}}
<div id="ics-feed-list" class="space-y-3">
{{if .Feeds}}
{{range .Feeds}}
<div class="flex flex-wrap items-center gap-3 p-3 rounded-lg border border-white/10 bg-white/5">
<div class="flex-1 min-w-0">
<div class="flex items-center gap-2">
<span class="text-white {{if not .Enabled}}opacity-50{{end}}">{{.Name}}</span>
{{if not .Enabled}}<span class="text-xs text-white/40">(off)</span>{{end}}
</div>
<div class="text-xs text-white/40 truncate">{{.URL}}</div>
<div class="text-xs mt-1 {{if .LastError}}text-red-400{{else}}text-white/40{{end}}">
{{if .LastError}}
Failed: {{.LastError}}
{{else}}
{{.EventCount}} events · last checked {{.LastFetched}}
{{end}}
</div>
</div>
<form hx-post="/settings/ics-feeds/{{.ID}}/toggle" hx-target="#ics-feed-list" hx-swap="outerHTML">
<input type="hidden" name="enabled" value="{{if .Enabled}}false{{else}}true{{end}}">
<button type="submit" class="text-xs px-3 py-1.5 rounded-lg bg-white/10 hover:bg-white/20 text-white/70 hover:text-white transition-colors">
{{if .Enabled}}Disable{{else}}Enable{{end}}
</button>
</form>
<button class="text-xs px-3 py-1.5 rounded-lg border border-red-500/30 text-red-400 hover:bg-red-500/10 transition-colors"
hx-delete="/settings/ics-feeds/{{.ID}}"
hx-target="#ics-feed-list"
hx-swap="outerHTML"
hx-confirm="Remove {{.Name}}? Its events disappear from the timeline.">
Remove
</button>
</div>
{{end}}
{{else}}
<p class="text-sm text-white/40">
No calendar feeds yet. Paste an .ics or webcal:// link below — published
schedules (sports fixtures, school terms, bin collections) are almost
always distributed this way.
</p>
{{end}}
</div>
{{end}}
|