this repo has no description
1{{ define "title" }}{{ .Spindle.Instance }} · spindles{{ end }}
2
3{{ define "content" }}
4 <div class="px-6 py-4">
5 <div class="flex justify-between items-center">
6 <h1 class="text-xl font-bold dark:text-white">{{ .Spindle.Instance }}</h1>
7 <div id="right-side" class="flex gap-2">
8 {{ $style := "px-2 py-1 rounded flex items-center flex-shrink-0 gap-2" }}
9 {{ $isOwner := and .LoggedInUser (eq .LoggedInUser.Did .Spindle.Owner) }}
10 {{ if .Spindle.Verified }}
11 <span
12 class="bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200 {{ $style }}">
13 {{ i "shield-check" "w-4 h-4" }} verified
14 </span>
15 {{ if $isOwner }}
16 {{ template "spindles/fragments/addMemberModal" .Spindle }}
17 {{ end }}
18 {{ else }}
19 <span
20 class="bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200 {{ $style }}">
21 {{ i "shield-off" "w-4 h-4" }} unverified
22 </span>
23 {{ if $isOwner }}
24 {{ block "retryButton" .Spindle }}{{ end }}
25 {{ end }}
26 {{ end }}
27
28 {{ if $isOwner }}
29 {{ block "deleteButton" .Spindle }}{{ end }}
30 {{ end }}
31 </div>
32 </div>
33 <div id="operation-error" class="dark:text-red-400"></div>
34 </div>
35
36 {{ if .Members }}
37 <section
38 class="bg-white dark:bg-gray-800 p-6 rounded relative w-full mx-auto drop-shadow-sm dark:text-white">
39 <div class="flex flex-col gap-2">
40 {{ block "member" . }}{{ end }}
41 </div>
42 </section>
43 {{ end }}
44{{ end }}
45
46{{ define "member" }}
47 {{ range .Members }}
48 <div>
49 <div class="flex justify-between items-center">
50 <div class="flex items-center gap-2">
51 {{ template "user/fragments/picHandleLink" . }}
52 </div>
53 {{ if ne $.LoggedInUser.Did . }}
54 {{ block "removeMemberButton" (list $ . ) }}{{ end }}
55 {{ end }}
56 </div>
57 <div class="ml-2 pl-2 pt-2 border-l border-gray-200 dark:border-gray-700">
58 {{ $repos := index $.Repos . }}
59 {{ range $repos }}
60 <div class="flex gap-2 items-center">
61 {{ i "book-marked" "size-4" }}
62 <a href="/{{ .Did }}/{{ .Name }}">
63 {{ .Name }}
64 </a>
65 </div>
66 {{ else }}
67 <div class="text-gray-500 dark:text-gray-400">
68 No repositories configured yet.
69 </div>
70 {{ end }}
71 </div>
72 </div>
73 {{ end }}
74{{ end }}
75
76{{ define "deleteButton" }}
77 <button
78 class="btn text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 gap-2 group"
79 title="Delete spindle"
80 hx-delete="/spindles/{{ .Instance }}"
81 hx-swap="outerHTML"
82 hx-confirm="Are you sure you want to delete the spindle '{{ .Instance }}'?"
83 hx-headers='{"shouldRedirect": "true"}'>
84 {{ i "trash-2" "w-5 h-5" }}
85 <span class="hidden md:inline">delete</span>
86 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }}
87 </button>
88{{ end }}
89
90{{ define "retryButton" }}
91 <button
92 class="btn gap-2 group"
93 title="Retry spindle verification"
94 hx-post="/spindles/{{ .Instance }}/retry"
95 hx-swap="none"
96 hx-headers='{"shouldRefresh": "true"}'>
97 {{ i "rotate-ccw" "w-5 h-5" }}
98 <span class="hidden md:inline">retry</span>
99 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }}
100 </button>
101{{ end }}
102
103{{ define "removeMemberButton" }}
104 {{ $root := index . 0 }}
105 {{ $member := index . 1 }}
106 <button
107 class="btn text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 gap-2 group"
108 title="Remove member"
109 hx-post="/spindles/{{ $root.Spindle.Instance }}/remove"
110 hx-swap="none"
111 hx-vals='{"member": "{{ $member }}" }'
112 hx-confirm="Are you sure you want to remove {{ resolve $member }} from this instance?">
113 {{ i "user-minus" "w-4 h-4" }}
114 remove
115 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }}
116 </button>
117{{ end }}