Monorepo for Tangled
tangled.org
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 "baseSettings" . }}
10 {{ template "branchSettings" . }}
11 {{ template "defaultLabelSettings" . }}
12 {{ template "customLabelSettings" . }}
13 {{ template "deleteRepo" . }}
14 <div id="operation-error" class="text-red-500 dark:text-red-400"></div>
15 </div>
16 </section>
17{{ end }}
18
19{{ define "baseSettings" }}
20 <form hx-put="/{{ $.RepoInfo.FullName }}/settings/base" hx-swap="none">
21 <fieldset
22 class=""
23 {{ if not .RepoInfo.Roles.IsOwner }}disabled{{ end }}
24 >
25 <h2 class="text-sm pb-2 uppercase font-bold">Description</h2>
26 <textarea
27 rows="3"
28 class="w-full mb-2"
29 id="base-form-description"
30 name="description"
31 >{{ .RepoInfo.Description }}</textarea>
32 <h2 class="text-sm pb-2 uppercase font-bold">Website URL</h2>
33 <input
34 type="text"
35 class="w-full mb-2"
36 id="base-form-website"
37 name="website"
38 value="{{ .RepoInfo.Website }}"
39 >
40 <h2 class="text-sm pb-2 uppercase font-bold">Topics</h2>
41 <p class="text-gray-500 dark:text-gray-400">
42 List of topics separated by spaces.
43 </p>
44 <textarea
45 rows="2"
46 class="w-full my-2"
47 id="base-form-topics"
48 name="topics"
49 >{{ range $topic := .RepoInfo.Topics }}{{ $topic }} {{ end }}</textarea>
50 <div id="repo-base-settings-error" class="text-red-500 dark:text-red-400"></div>
51 <div class="flex justify-end pt-2">
52 <button
53 type="submit"
54 class="btn-create flex items-center gap-2 group"
55 >
56 {{ i "save" "w-4 h-4" }}
57 save
58 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }}
59 </button>
60 </div>
61 </fieldset>
62 </form>
63{{ end }}
64
65{{ define "branchSettings" }}
66 <div class="grid grid-cols-1 md:grid-cols-3 gap-4 items-center">
67 <div class="col-span-1 md:col-span-2">
68 <h2 class="text-sm pb-2 uppercase font-bold">Default Branch</h2>
69 <p class="text-gray-500 dark:text-gray-400">
70 The default branch is considered the “base” branch in your repository,
71 against which all pull requests and code commits are automatically made,
72 unless you specify a different branch.
73 </p>
74 </div>
75 <form hx-put="/{{ $.RepoInfo.FullName }}/settings/branches/default" hx-swap="none" class="col-span-1 md:col-span-1 md:justify-self-end group flex gap-2 items-stretch">
76 <select id="branch" name="branch" required class="p-1 max-w-64 border border-gray-200 bg-white dark:bg-gray-800 dark:text-white dark:border-gray-700">
77 <option value="" disabled selected >
78 Choose a default branch
79 </option>
80 {{ range .Branches }}
81 <option value="{{ .Name }}" class="py-1" {{ if .IsDefault }}selected{{ end }} >
82 {{ .Name }}
83 </option>
84 {{ end }}
85 </select>
86 <button class="btn flex gap-2 items-center" type="submit">
87 {{ i "check" "size-4" }}
88 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }}
89 </button>
90 </form>
91 </div>
92{{ end }}
93
94{{ define "defaultLabelSettings" }}
95 <div class="flex flex-col gap-2">
96 <div class="grid grid-cols-1 md:grid-cols-3 gap-4 items-center">
97 <div class="col-span-1 md:col-span-2">
98 <h2 class="text-sm pb-2 uppercase font-bold">Default Labels</h2>
99 <p class="text-gray-500 dark:text-gray-400">
100 Manage your issues and pulls by creating labels to categorize them. Only
101 repository owners may configure labels. You may choose to subscribe to
102 default labels, or create entirely custom labels.
103 <p>
104 </div>
105 <form class="col-span-1 md:col-span-1 md:justify-self-end">
106 {{ $title := "Unubscribe from all labels" }}
107 {{ $icon := "x" }}
108 {{ $text := "unsubscribe all" }}
109 {{ $action := "unsubscribe" }}
110 {{ if $.ShouldSubscribeAll }}
111 {{ $title = "Subscribe to all labels" }}
112 {{ $icon = "check-check" }}
113 {{ $text = "subscribe all" }}
114 {{ $action = "subscribe" }}
115 {{ end }}
116 {{ range .DefaultLabels }}
117 <input type="hidden" name="label" value="{{ .AtUri.String }}">
118 {{ end }}
119 <button
120 type="submit"
121 title="{{$title}}"
122 class="btn flex items-center gap-2 group"
123 hx-swap="none"
124 hx-post="/{{ $.RepoInfo.FullName }}/settings/label/{{$action}}"
125 {{ if not .RepoInfo.Roles.IsOwner }}disabled{{ end }}>
126 {{ i $icon "size-4" }}
127 {{ $text }}
128 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }}
129 </button>
130 </form>
131 </div>
132 <div class="flex flex-col rounded border border-gray-200 dark:border-gray-700 divide-y divide-gray-200 dark:divide-gray-700 w-full">
133 {{ range .DefaultLabels }}
134 <div id="label-{{.Id}}" class="flex items-center justify-between p-2 pl-4">
135 {{ template "repo/settings/fragments/labelListing" (list $ .) }}
136 {{ $action := "subscribe" }}
137 {{ $icon := "plus" }}
138 {{ if mapContains $.SubscribedLabels .AtUri.String }}
139 {{ $action = "unsubscribe" }}
140 {{ $icon = "minus" }}
141 {{ end }}
142 <button
143 class="btn gap-2 group"
144 title="{{$action}} from label"
145 {{ if not $.RepoInfo.Roles.IsOwner }}disabled{{ end }}
146 hx-post="/{{ $.RepoInfo.FullName }}/settings/label/{{$action}}"
147 hx-swap="none"
148 hx-vals='{"label": "{{ .AtUri.String }}"}'>
149 {{ i $icon "size-4" }}
150 <span class="hidden md:inline">{{$action}}</span>
151 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }}
152 </button>
153 </div>
154 {{ else }}
155 <div class="flex items-center justify-center p-2 text-gray-500">
156 no labels added yet
157 </div>
158 {{ end }}
159 </div>
160 <div id="default-label-operation" class="error"></div>
161 </div>
162{{ end }}
163
164{{ define "customLabelSettings" }}
165 <div class="flex flex-col gap-2">
166 <div class="grid grid-cols-1 md:grid-cols-3 gap-4 items-center">
167 <div class="col-span-1 md:col-span-2">
168 <h2 class="text-sm pb-2 uppercase font-bold">Custom Labels</h2>
169 </div>
170 <div class="col-span-1 md:col-span-1 md:justify-self-end">
171 <button
172 title="Add custom label"
173 class="btn flex items-center gap-2"
174 popovertarget="add-labeldef-modal"
175 {{ if not .RepoInfo.Roles.IsOwner }}disabled{{ end }}
176 popovertargetaction="toggle">
177 {{ i "plus" "size-4" }}
178 add label
179 </button>
180 <div
181 id="add-labeldef-modal"
182 popover
183 class="bg-white w-full sm:w-[30rem] dark:bg-gray-800 p-6 max-h-dvh overflow-y-auto 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">
184 {{ template "repo/settings/fragments/addLabelDefModal" . }}
185 </div>
186 </div>
187 </div>
188 <div class="flex flex-col rounded border border-gray-200 dark:border-gray-700 divide-y divide-gray-200 dark:divide-gray-700 w-full">
189 {{ range .Labels }}
190 <div id="label-{{.Id}}" class="flex items-center justify-between p-2 pl-4">
191 {{ template "repo/settings/fragments/labelListing" (list $ .) }}
192 {{ if $.RepoInfo.Roles.IsOwner }}
193 <button
194 class="btn text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 gap-2 group"
195 title="Delete label"
196 hx-delete="/{{ $.RepoInfo.FullName }}/settings/label"
197 hx-swap="none"
198 hx-vals='{"label-id": "{{ .Id }}"}'
199 hx-confirm="Are you sure you want to delete the label `{{ .Name }}`?"
200 >
201 {{ i "trash-2" "w-5 h-5" }}
202 <span class="hidden md:inline">delete</span>
203 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }}
204 </button>
205 {{ end }}
206 </div>
207 {{ else }}
208 <div class="flex items-center justify-center p-2 text-gray-500">
209 no labels added yet
210 </div>
211 {{ end }}
212 </div>
213 <div id="label-operation" class="error"></div>
214 </div>
215{{ end }}
216
217{{ define "deleteRepo" }}
218 {{ if .RepoInfo.Roles.RepoDeleteAllowed }}
219 <div class="grid grid-cols-1 md:grid-cols-3 gap-4 items-center">
220 <div class="col-span-1 md:col-span-2">
221 <h2 class="text-sm pb-2 uppercase text-red-500 dark:text-red-400 font-bold">Delete Repository</h2>
222 <p class="text-red-500 dark:text-red-400 ">
223 Deleting a repository is irreversible and permanent. Be certain before deleting a repository.
224 </p>
225 </div>
226 <div class="col-span-1 md:col-span-1 md:justify-self-end">
227 <button
228 class="btn group text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 flex gap-2 items-center"
229 type="button"
230 hx-swap="none"
231 hx-delete="/{{ $.RepoInfo.FullName }}/settings/delete"
232 hx-confirm="Are you sure you want to delete {{ $.RepoInfo.FullName }}?">
233 {{ i "trash-2" "size-4" }}
234 delete
235 <span class="ml-2 w-4 h-4 animate-spin hidden group-[.htmx-request]:inline">
236 {{ i "loader-circle" "w-4 h-4" }}
237 </span>
238 </button>
239 </div>
240 </div>
241 {{ end }}
242{{ end }}
243