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