forked from tangled.org/core
Monorepo for Tangled — https://tangled.org
1{{ define "title" }}knots{{ end }} 2{{ define "content" }} 3 <div class="p-6"> 4 <p class="text-xl font-bold dark:text-white">Knots</p> 5 </div> 6 <div class="flex flex-col"> 7 <h2 class="text-sm font-bold py-2 px-6 uppercase dark:text-gray-300">register a knot</h2> 8 <section class="rounded bg-white dark:bg-gray-800 drop-shadow-sm px-6 py-4 mb-6 w-full lg:w-fit"> 9 <p class="mb-8 dark:text-gray-300">Generate a key to initialize your knot server.</p> 10 <form 11 hx-post="/knots/key" 12 class="max-w-2xl mb-8 space-y-4" 13 hx-indicator="#generate-knot-key-spinner" 14 > 15 <input 16 type="text" 17 id="domain" 18 name="domain" 19 placeholder="knot.example.com" 20 required 21 class="w-full dark:bg-gray-700 dark:text-white dark:border-gray-600 dark:placeholder-gray-400" 22 > 23 <button class="btn dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600 flex gap-2 items-center" type="submit"> 24 <span>generate key</span> 25 <span id="generate-knot-key-spinner" class="group"> 26 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 27 </span> 28 </button> 29 <div id="settings-knots-error" class="error dark:text-red-400"></div> 30 </form> 31 </section> 32 33 <h2 class="text-sm font-bold py-2 px-6 uppercase dark:text-gray-300">my knots</h2> 34 <section class="rounded bg-white dark:bg-gray-800 drop-shadow-sm px-6 py-4 mb-6 w-full lg:w-fit"> 35 <div id="knots-list" class="flex flex-col gap-6 mb-8"> 36 {{ range .Registrations }} 37 {{ if .Registered }} 38 <div class="grid grid-cols-[minmax(0,1fr)_auto] items-center gap-4"> 39 <div class="flex flex-col gap-1"> 40 <div class="inline-flex items-center gap-4"> 41 {{ i "git-branch" "w-3 h-3 dark:text-gray-300" }} 42 <a href="/knots/{{ .Domain }}"> 43 <p class="font-bold dark:text-white">{{ .Domain }}</p> 44 </a> 45 </div> 46 <p class="text-sm text-gray-500 dark:text-gray-400">owned by {{ .ByDid }}</p> 47 <p class="text-sm text-gray-500 dark:text-gray-400">registered {{ .Registered | timeFmt }}</p> 48 </div> 49 </div> 50 {{ end }} 51 {{ else }} 52 <p class="text-sm text-gray-500 dark:text-gray-400">No knots registered</p> 53 {{ end }} 54 </div> 55 </section> 56 57 <h2 class="text-sm font-bold py-2 px-6 uppercase dark:text-gray-300">pending registrations</h2> 58 <section class="rounded bg-white dark:bg-gray-800 drop-shadow-sm px-6 py-4 mb-6 w-full lg:w-fit"> 59 <div id="pending-knots-list" class="flex flex-col gap-6 mb-8"> 60 {{ range .Registrations }} 61 {{ if not .Registered }} 62 <div class="grid grid-cols-[minmax(0,1fr)_auto] items-center gap-4"> 63 <div class="flex flex-col gap-1"> 64 <div class="inline-flex items-center gap-4"> 65 <p class="font-bold dark:text-white">{{ .Domain }}</p> 66 <div class="inline-flex items-center gap-1"> 67 <span class="text-xs bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200 px-2 py-1 rounded"> 68 pending 69 </span> 70 </div> 71 </div> 72 <p class="text-sm text-gray-500 dark:text-gray-400">opened by {{ .ByDid }}</p> 73 <p class="text-sm text-gray-500 dark:text-gray-400">created {{ .Created | timeFmt }}</p> 74 </div> 75 <div class="flex gap-2 items-center"> 76 <button 77 class="btn dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600 flex gap-2 items-center group" 78 hx-post="/knots/{{ .Domain }}/init" 79 > 80 {{ i "square-play" "w-5 h-5" }} 81 <span class="hidden md:inline">initialize</span> 82 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 83 </button> 84 </div> 85 </div> 86 {{ end }} 87 {{ else }} 88 <p class="text-sm text-gray-500 dark:text-gray-400">No pending registrations</p> 89 {{ end }} 90 </div> 91 </section> 92 </div> 93{{ end }}