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">Settings</p> 6 </div> 7 <div class="flex flex-col"> 8 {{ block "profile" . }} {{ end }} 9 {{ block "keys" . }} {{ end }} 10 {{ block "knots" . }} {{ end }} 11 {{ block "emails" . }} {{ end }} 12 </div> 13{{ end }} 14 15{{ define "profile" }} 16<h2 class="text-sm font-bold py-2 px-6 uppercase">profile</h2> 17<section class="rounded bg-white drop-shadow-sm px-6 py-4 mb-6 w-full lg:w-fit"> 18 <dl class="grid grid-cols-[auto_1fr] gap-x-4"> 19 {{ if .LoggedInUser.Handle }} 20 <dt class="font-bold">handle</dt> 21 <dd>@{{ .LoggedInUser.Handle }}</dd> 22 {{ end }} 23 <dt class="font-bold">did</dt> 24 <dd>{{ .LoggedInUser.Did }}</dd> 25 <dt class="font-bold">pds</dt> 26 <dd>{{ .LoggedInUser.Pds }}</dd> 27 </dl> 28</section> 29{{ end }} 30 31{{ define "keys" }} 32<h2 class="text-sm font-bold py-2 px-6 uppercase">ssh keys</h2> 33<section class="rounded bg-white drop-shadow-sm px-6 py-4 mb-6 w-full lg:w-fit"> 34 <div id="key-list" class="flex flex-col gap-6 mb-8"> 35 {{ range $index, $key := .PubKeys }} 36 <div class="flex justify-between items-center gap-4"> 37 <div> 38 <div class="inline-flex items-center gap-4"> 39 <i class="w-3 h-3" data-lucide="key"></i> 40 <p class="font-bold">{{ .Name }}</p> 41 <p class="text-sm text-gray-500">added {{ .Created | timeFmt }}</p> 42 </div> 43 <code class="block break-all text-sm text-gray-500">{{ .Key }}</code> 44 </div> 45 <button 46 class="btn text-red-500 hover:text-red-700" 47 title="Delete key" 48 hx-delete="/settings/keys?name={{urlquery .Name}}&rkey={{urlquery .Rkey}}&key={{urlquery .Key}}" 49 hx-confirm="Are you sure you wish to delete the key '{{ .Name }}'?"> 50 <i class="w-5 h-5" data-lucide="trash-2"></i> 51 </button> 52 </div> 53 {{ end }} 54 {{ if .PubKeys }} 55 <hr class="mb-4" /> 56 {{ end }} 57 </div> 58 <p class="mb-2">add an ssh key</p> 59 <form 60 hx-put="/settings/keys" 61 hx-swap="none" 62 class="max-w-2xl mb-8 space-y-4" 63 > 64 <input 65 type="text" 66 id="name" 67 name="name" 68 placeholder="key name" 69 required 70 class="w-full"/> 71 72 <input 73 id="key" 74 name="key" 75 placeholder="ssh-rsa AAAAAA..." 76 required 77 class="w-full"/> 78 79 <button class="btn w-full" type="submit">add key</button> 80 81 <div id="settings-keys" class="error"></div> 82 </form> 83</section> 84{{ end }} 85 86{{ define "emails" }} 87<h2 class="text-sm font-bold py-2 px-6 uppercase">email addresses</h2> 88<section class="rounded bg-white drop-shadow-sm px-6 py-4 mb-6 w-full lg:w-fit"> 89 <div id="email-list" class="flex flex-col gap-6 mb-8"> 90 {{ range $index, $email := .Emails }} 91 <div class="flex justify-between items-center gap-4"> 92 <div> 93 <div class="inline-flex items-center gap-4"> 94 <i class="w-3 h-3" data-lucide="mail"></i> 95 <p class="font-bold">{{ .Address }}</p> 96 <p class="text-sm text-gray-500">added {{ .CreatedAt | timeFmt }}</p> 97 {{ if .Verified }} 98 <span class="text-xs bg-green-100 text-green-800 px-2 py-1 rounded">verified</span> 99 {{ else }} 100 <span class="text-xs bg-yellow-100 text-yellow-800 px-2 py-1 rounded">unverified</span> 101 {{ end }} 102 {{ if .Primary }} 103 <span class="text-xs bg-blue-100 text-blue-800 px-2 py-1 rounded">primary</span> 104 {{ end }} 105 </div> 106 </div> 107 <div class="flex gap-2 items-center"> 108 {{ if not .Primary }} 109 <a 110 class="text-sm" 111 hx-post="/settings/emails/primary" 112 hx-swap="none" 113 href="#" 114 hx-vals='{"email": "{{ .Address }}"}'> 115 set as primary 116 </a> 117 {{ end }} 118 {{ if not .Primary }} 119 <form hx-delete="/settings/emails" hx-confirm="Are you sure you wish to delete the email '{{ .Address }}'?"> 120 <input type="hidden" name="email" value="{{ .Address }}"> 121 <button 122 class="btn text-red-500 hover:text-red-700" 123 title="Delete email" 124 type="submit"> 125 <i class="w-5 h-5" data-lucide="trash-2"></i> 126 </button> 127 </form> 128 {{ end }} 129 </div> 130 </div> 131 {{ end }} 132 {{ if .Emails }} 133 <hr class="mb-4" /> 134 {{ end }} 135 </div> 136 <p class="mb-2">add an email address</p> 137 <form 138 hx-put="/settings/emails" 139 hx-swap="none" 140 class="max-w-2xl mb-8 space-y-4" 141 > 142 <input 143 type="email" 144 id="email" 145 name="email" 146 placeholder="your@email.com" 147 required 148 class="w-full"/> 149 150 <button class="btn w-full" type="submit">add email</button> 151 152 <div id="settings-emails-error" class="error"></div> 153 <div id="settings-emails-success" class="success"></div> 154 155 </form> 156</section> 157{{ end }}