this repo has no description
1{{ define "title" }}settings{{ end }} 2 3{{ define "content" }} 4 <div class="p-6"> 5 <p class="text-xl font-bold dark:text-white">Settings</p> 6 </div> 7 <div class="flex flex-col"> 8 {{ block "profile" . }}{{ end }} 9 {{ block "keys" . }}{{ end }} 10 {{ block "emails" . }}{{ end }} 11 </div> 12{{ end }} 13 14{{ define "profile" }} 15 <h2 class="text-sm font-bold py-2 px-6 uppercase dark:text-gray-300"> 16 profile 17 </h2> 18 <section 19 class="rounded bg-white dark:bg-gray-800 drop-shadow-sm px-6 py-4 mb-6 w-full lg:w-fit"> 20 <dl class="grid grid-cols-[auto_1fr] gap-x-4 dark:text-gray-200"> 21 {{ if .LoggedInUser.Handle }} 22 <dt class="font-bold">handle</dt> 23 <dd>@{{ .LoggedInUser.Handle }}</dd> 24 {{ end }} 25 <dt class="font-bold">did</dt> 26 <dd>{{ .LoggedInUser.Did }}</dd> 27 <dt class="font-bold">pds</dt> 28 <dd>{{ .LoggedInUser.Pds }}</dd> 29 </dl> 30 </section> 31{{ end }} 32 33{{ define "keys" }} 34 <h2 class="text-sm font-bold py-2 px-6 uppercase dark:text-gray-300"> 35 ssh keys 36 </h2> 37 <section 38 class="rounded bg-white dark:bg-gray-800 drop-shadow-sm px-6 py-4 mb-6 w-full lg:w-fit"> 39 <p class="mb-8 dark:text-gray-300"> 40 SSH public keys added here will be broadcasted to knots that you are a 41 member of, 42 <br /> 43 allowing you to push to repositories there. 44 </p> 45 <div id="key-list" class="flex flex-col gap-6 mb-8"> 46 {{ range $index, $key := .PubKeys }} 47 <div class="grid grid-cols-[minmax(0,1fr)_auto] items-center gap-4"> 48 <div class="flex flex-col gap-1"> 49 <div class="inline-flex items-center gap-4"> 50 {{ i "key" "w-3 h-3 dark:text-gray-300" }} 51 <p class="font-bold dark:text-white">{{ .Name }}</p> 52 </div> 53 <p class="text-sm text-gray-500 dark:text-gray-400"> 54 added {{ template "repo/fragments/time" .Created }} 55 </p> 56 <div class="overflow-x-auto whitespace-nowrap flex-1 max-w-full"> 57 <code class="text-sm text-gray-500 dark:text-gray-400"> 58 {{ .Key }} 59 </code> 60 </div> 61 </div> 62 <button 63 class="btn text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 gap-2 group" 64 title="Delete key" 65 hx-delete="/settings/keys?name={{ urlquery .Name }}&rkey={{ urlquery .Rkey }}&key={{ urlquery .Key }}" 66 hx-confirm="Are you sure you want to delete the key '{{ .Name }}'?"> 67 {{ i "trash-2" "w-5 h-5" }} 68 <span class="hidden md:inline">delete</span> 69 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 70 </button> 71 </div> 72 {{ end }} 73 </div> 74 <form 75 hx-put="/settings/keys" 76 hx-indicator="#add-sshkey-spinner" 77 hx-swap="none" 78 class="max-w-2xl mb-8 space-y-4"> 79 <input 80 type="text" 81 id="name" 82 name="name" 83 placeholder="key name" 84 required 85 class="w-full dark:bg-gray-700 dark:text-white dark:border-gray-600 dark:placeholder-gray-400" /> 86 87 <input 88 id="key" 89 name="key" 90 placeholder="ssh-rsa AAAAAA..." 91 required 92 class="w-full dark:bg-gray-700 dark:text-white dark:border-gray-600 dark:placeholder-gray-400" /> 93 94 <button 95 class="btn dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600 flex gap-2 items-center" 96 type="submit"> 97 <span>add key</span> 98 <span id="add-sshkey-spinner" class="group"> 99 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 100 </span> 101 </button> 102 103 <div id="settings-keys" class="error dark:text-red-400"></div> 104 </form> 105 </section> 106{{ end }} 107 108{{ define "emails" }} 109 <h2 class="text-sm font-bold py-2 px-6 uppercase dark:text-gray-300"> 110 email addresses 111 </h2> 112 <section 113 class="rounded bg-white dark:bg-gray-800 drop-shadow-sm px-6 py-4 mb-6 w-full lg:w-fit"> 114 <p class="mb-8 dark:text-gray-300"> 115 Commits authored using emails listed here will be associated with your 116 Tangled profile. 117 </p> 118 <div id="email-list" class="flex flex-col gap-6 mb-8"> 119 {{ range $index, $email := .Emails }} 120 <div class="grid grid-cols-[minmax(0,1fr)_auto] items-center gap-4"> 121 <div class="flex flex-col gap-2"> 122 <div class="inline-flex items-center gap-4"> 123 {{ i "mail" "w-3 h-3 dark:text-gray-300" }} 124 <p class="font-bold dark:text-white">{{ .Address }}</p> 125 <div class="inline-flex items-center gap-1"> 126 {{ if .Verified }} 127 <span 128 class="text-xs bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200 px-2 py-1 rounded"> 129 verified 130 </span> 131 {{ else }} 132 <span 133 class="text-xs bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200 px-2 py-1 rounded"> 134 unverified 135 </span> 136 {{ end }} 137 {{ if .Primary }} 138 <span 139 class="text-xs bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200 px-2 py-1 rounded"> 140 primary 141 </span> 142 {{ end }} 143 </div> 144 </div> 145 <p class="text-sm text-gray-500 dark:text-gray-400"> 146 added {{ template "repo/fragments/time" .CreatedAt }} 147 </p> 148 </div> 149 <div class="flex gap-2 items-center"> 150 {{ if not .Verified }} 151 <button 152 class="btn flex gap-2 dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600" 153 hx-post="/settings/emails/verify/resend" 154 hx-swap="none" 155 href="#" 156 hx-vals='{"email": "{{ .Address }}"}'> 157 {{ i "rotate-cw" "w-5 h-5" }} 158 <span class="hidden md:inline">resend</span> 159 </button> 160 {{ end }} 161 {{ if and (not .Primary) .Verified }} 162 <a 163 class="text-sm dark:text-blue-400 dark:hover:text-blue-300" 164 hx-post="/settings/emails/primary" 165 hx-swap="none" 166 href="#" 167 hx-vals='{"email": "{{ .Address }}"}'> 168 set as primary 169 </a> 170 {{ end }} 171 {{ if not .Primary }} 172 <form 173 hx-delete="/settings/emails" 174 hx-confirm="Are you sure you wish to delete the email '{{ .Address }}'?" 175 hx-indicator="#delete-email-{{ $index }}-spinner"> 176 <input type="hidden" name="email" value="{{ .Address }}" /> 177 <button 178 class="btn text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 flex gap-2 items-center" 179 title="Delete email" 180 type="submit"> 181 {{ i "trash-2" "w-5 h-5" }} 182 <span class="hidden md:inline">delete</span> 183 <span id="delete-email-{{ $index }}-spinner" class="group"> 184 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 185 </span> 186 </button> 187 </form> 188 {{ end }} 189 </div> 190 </div> 191 {{ end }} 192 </div> 193 <form 194 hx-put="/settings/emails" 195 hx-swap="none" 196 class="max-w-2xl mb-8 space-y-4" 197 hx-indicator="#add-email-spinner"> 198 <input 199 type="email" 200 id="email" 201 name="email" 202 placeholder="your@email.com" 203 required 204 class="w-full dark:bg-gray-700 dark:text-white dark:border-gray-600 dark:placeholder-gray-400" /> 205 206 <button 207 class="btn dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600 flex gap-2 items-center" 208 type="submit"> 209 <span>add email</span> 210 <span id="add-email-spinner" class="group"> 211 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 212 </span> 213 </button> 214 215 <div id="settings-emails-error" class="error dark:text-red-400"></div> 216 <div 217 id="settings-emails-success" 218 class="success dark:text-green-400"></div> 219 </form> 220 </section> 221{{ end }}