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 }}