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