1{{ define "title" }}{{ .Tab }} settings · {{ .RepoInfo.FullName }}{{ end }}
2
3{{ define "repoContent" }}
4 <section class="w-full grid grid-cols-1 md:grid-cols-4 gap-2">
5 <div class="col-span-1">
6 {{ template "repo/settings/fragments/sidebar" . }}
7 </div>
8 <div class="col-span-1 md:col-span-3 flex flex-col gap-6 p-2">
9 {{ template "collaboratorSettings" . }}
10 </div>
11 </section>
12{{ end }}
13
14{{ define "collaboratorSettings" }}
15 <div class="grid grid-cols-1 gap-4 items-center">
16 <div class="col-span-1">
17 <h2 class="text-sm pb-2 uppercase font-bold">Collaborators</h2>
18 <p class="text-gray-500 dark:text-gray-400">
19 Any user added as a collaborator will be able to push commits and tags to this repository, upload releases, and workflows.
20 </p>
21 </div>
22 {{ template "collaboratorsGrid" . }}
23 </div>
24{{ end }}
25
26{{ define "collaboratorsGrid" }}
27 <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
28 {{ if .RepoInfo.Roles.CollaboratorInviteAllowed }}
29 {{ template "addCollaboratorButton" . }}
30 {{ end }}
31 {{ range .Collaborators }}
32 <div class="border border-gray-200 dark:border-gray-700 rounded p-4">
33 <div class="flex items-center gap-3">
34 <img
35 src="{{ fullAvatar .Handle }}"
36 alt="{{ .Handle }}"
37 class="rounded-full h-10 w-10 border border-gray-300 dark:border-gray-600 flex-shrink-0"/>
38
39 <div class="flex-1 min-w-0">
40 <a href="/{{ .Handle }}" class="block truncate">
41 {{ didOrHandle .Did .Handle }}
42 </a>
43 <p class="text-sm text-gray-500 dark:text-gray-400">{{ .Role }}</p>
44 </div>
45 </div>
46 </div>
47 {{ end }}
48 </div>
49{{ end }}
50
51{{ define "addCollaboratorButton" }}
52 <button
53 class="btn block rounded p-4"
54 popovertarget="add-collaborator-modal"
55 popovertargetaction="toggle">
56 <div class="flex items-center gap-3">
57 <div class="w-10 h-10 rounded-full bg-gray-100 dark:bg-gray-700 flex items-center justify-center">
58 {{ i "user-plus" "size-4" }}
59 </div>
60
61 <div class="text-left flex-1 min-w-0 block truncate">
62 Add collaborator
63 </div>
64 </div>
65 </button>
66 <div
67 id="add-collaborator-modal"
68 popover
69 class="bg-white w-full md:w-96 dark:bg-gray-800 p-4 rounded border border-gray-200 dark:border-gray-700 drop-shadow dark:text-white backdrop:bg-gray-400/50 dark:backdrop:bg-gray-800/50">
70 {{ template "addCollaboratorModal" . }}
71 </div>
72{{ end }}
73
74{{ define "addCollaboratorModal" }}
75<form
76 hx-put="/{{ $.RepoInfo.FullName }}/settings/collaborator"
77 hx-indicator="#spinner"
78 hx-swap="none"
79 class="flex flex-col gap-2"
80>
81 <label for="add-collaborator" class="uppercase p-0">
82 ADD COLLABORATOR
83 </label>
84 <p class="text-sm text-gray-500 dark:text-gray-400">Collaborators can push to this repository.</p>
85 <input
86 type="text"
87 id="add-collaborator"
88 name="collaborator"
89 required
90 placeholder="@foo.bsky.social"
91 />
92 <div class="flex gap-2 pt-2">
93 <button
94 type="button"
95 popovertarget="add-collaborator-modal"
96 popovertargetaction="hide"
97 class="btn w-1/2 flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300"
98 >
99 {{ i "x" "size-4" }} cancel
100 </button>
101 <button type="submit" class="btn w-1/2 flex items-center">
102 <span class="inline-flex gap-2 items-center">{{ i "user-plus" "size-4" }} add</span>
103 <span id="spinner" class="group">
104 {{ i "loader-circle" "ml-2 w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }}
105 </span>
106 </button>
107 </div>
108 <div id="add-collaborator-error" class="text-red-500 dark:text-red-400"></div>
109</form>
110{{ end }}