1{{ define "title" }}spindles{{ end }}
2
3{{ define "content" }}
4<div class="px-6 py-4 flex items-center justify-between gap-4 align-bottom">
5 <h1 class="text-xl font-bold dark:text-white">Spindles</h1>
6 <span class="flex items-center gap-1">
7 {{ i "book" "w-3 h-3" }}
8 <a href="https://tangled.org/@tangled.org/core/blob/master/docs/spindle/hosting.md">docs</a>
9 </span>
10</div>
11
12<section class="bg-white dark:bg-gray-800 p-6 rounded relative w-full mx-auto drop-shadow-sm dark:text-white">
13 <div class="flex flex-col gap-6">
14 {{ block "about" . }} {{ end }}
15 {{ block "list" . }} {{ end }}
16 {{ block "register" . }} {{ end }}
17 </div>
18</section>
19{{ end }}
20
21{{ define "about" }}
22<section class="rounded flex items-center gap-2">
23 <p class="text-gray-500 dark:text-gray-400">
24 Spindles are small CI runners.
25 </p>
26</section>
27{{ end }}
28
29{{ define "list" }}
30 <section class="rounded w-full flex flex-col gap-2">
31 <h2 class="text-sm font-bold py-2 uppercase dark:text-gray-300">your spindles</h2>
32 <div class="flex flex-col rounded border border-gray-200 dark:border-gray-700 w-full">
33 {{ range $spindle := .Spindles }}
34 {{ template "spindles/fragments/spindleListing" . }}
35 {{ else }}
36 <div class="flex items-center justify-center p-2 border-b border-gray-200 dark:border-gray-700 text-gray-500">
37 no spindles registered yet
38 </div>
39 {{ end }}
40 </div>
41 <div id="operation-error" class="text-red-500 dark:text-red-400"></div>
42 </section>
43{{ end }}
44
45{{ define "register" }}
46 <section class="rounded w-full lg:w-fit flex flex-col gap-2">
47 <h2 class="text-sm font-bold py-2 uppercase dark:text-gray-300">register a spindle</h2>
48 <p class="mb-2 dark:text-gray-300">Enter the hostname of your spindle to get started.</p>
49 <form
50 hx-post="/spindles/register"
51 class="max-w-2xl mb-2 space-y-4"
52 hx-indicator="#register-button"
53 hx-swap="none"
54 >
55 <div class="flex gap-2">
56 <input
57 type="text"
58 id="instance"
59 name="instance"
60 placeholder="spindle.example.com"
61 required
62 class="flex-1 w-full dark:bg-gray-700 dark:text-white dark:border-gray-600 dark:placeholder-gray-400 px-3 py-2 border rounded"
63 >
64 <button
65 type="submit"
66 id="register-button"
67 class="btn rounded flex items-center py-2 dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600 group"
68 >
69 <span class="inline-flex items-center gap-2">
70 {{ i "plus" "w-4 h-4" }}
71 register
72 </span>
73 <span class="pl-2 hidden group-[.htmx-request]:inline">
74 {{ i "loader-circle" "w-4 h-4 animate-spin" }}
75 </span>
76 </button>
77 </div>
78
79 <div id="register-error" class="dark:text-red-400"></div>
80 </form>
81
82 </section>
83{{ end }}