1// Code generated by templ - DO NOT EDIT.
2
3// templ: version: v0.3.1020
4// SPDX-License-Identifier: AGPL-3.0-or-later
5
6package web
7
8//lint:file-ignore SA4006 This context is only used if a nested component is present.
9
10import "github.com/a-h/templ"
11import templruntime "github.com/a-h/templ/runtime"
12
13import "fmt"
14
15// Home is the repository list.
16func Home(l Layout, p HomePage) templ.Component {
17 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
18 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
19 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
20 return templ_7745c5c3_CtxErr
21 }
22 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
23 if !templ_7745c5c3_IsBuffer {
24 defer func() {
25 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
26 if templ_7745c5c3_Err == nil {
27 templ_7745c5c3_Err = templ_7745c5c3_BufErr
28 }
29 }()
30 }
31 ctx = templ.InitializeContext(ctx)
32 templ_7745c5c3_Var1 := templ.GetChildren(ctx)
33 if templ_7745c5c3_Var1 == nil {
34 templ_7745c5c3_Var1 = templ.NopComponent
35 }
36 ctx = templ.ClearChildren(ctx)
37 templ_7745c5c3_Var2 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
38 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
39 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
40 if !templ_7745c5c3_IsBuffer {
41 defer func() {
42 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
43 if templ_7745c5c3_Err == nil {
44 templ_7745c5c3_Err = templ_7745c5c3_BufErr
45 }
46 }()
47 }
48 ctx = templ.InitializeContext(ctx)
49 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<h1 class=\"sr\">Repositories</h1><div class=\"home\" data-layout=\"cards\"><section class=\"home-repos\" aria-label=\"Repositories\"><div class=\"home-bar\"><div class=\"filter\"><label for=\"home-filter\" class=\"sr\">filter</label> <input id=\"home-filter\" type=\"search\" data-filter=\"#repo-rows > li\" placeholder=\"Filter repositories…\" autocomplete=\"off\" hx-on:input=\"ermite.filter(this)\"></div><nav class=\"sort\" aria-label=\"Sort repositories\"><span class=\"mute\">sort</span> ")
50 if templ_7745c5c3_Err != nil {
51 return templ_7745c5c3_Err
52 }
53 for _, s := range p.Sorts {
54 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "<a href=\"")
55 if templ_7745c5c3_Err != nil {
56 return templ_7745c5c3_Err
57 }
58 var templ_7745c5c3_Var3 templ.SafeURL
59 templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(s.Href))
60 if templ_7745c5c3_Err != nil {
61 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 29, Col: 36}
62 }
63 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
64 if templ_7745c5c3_Err != nil {
65 return templ_7745c5c3_Err
66 }
67 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "\"")
68 if templ_7745c5c3_Err != nil {
69 return templ_7745c5c3_Err
70 }
71 if s.Mark != "" {
72 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, " aria-current=\"true\"")
73 if templ_7745c5c3_Err != nil {
74 return templ_7745c5c3_Err
75 }
76 }
77 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, ">")
78 if templ_7745c5c3_Err != nil {
79 return templ_7745c5c3_Err
80 }
81 var templ_7745c5c3_Var4 string
82 templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(s.Label)
83 if templ_7745c5c3_Err != nil {
84 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 34, Col: 17}
85 }
86 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
87 if templ_7745c5c3_Err != nil {
88 return templ_7745c5c3_Err
89 }
90 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, " ")
91 if templ_7745c5c3_Err != nil {
92 return templ_7745c5c3_Err
93 }
94 if s.Mark != "" {
95 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "<span aria-hidden=\"true\">")
96 if templ_7745c5c3_Err != nil {
97 return templ_7745c5c3_Err
98 }
99 var templ_7745c5c3_Var5 string
100 templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(s.Mark)
101 if templ_7745c5c3_Err != nil {
102 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 36, Col: 42}
103 }
104 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
105 if templ_7745c5c3_Err != nil {
106 return templ_7745c5c3_Err
107 }
108 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "</span> <span class=\"sr\">")
109 if templ_7745c5c3_Err != nil {
110 return templ_7745c5c3_Err
111 }
112 var templ_7745c5c3_Var6 string
113 templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(", " + s.State)
114 if templ_7745c5c3_Err != nil {
115 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 37, Col: 42}
116 }
117 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
118 if templ_7745c5c3_Err != nil {
119 return templ_7745c5c3_Err
120 }
121 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "</span>")
122 if templ_7745c5c3_Err != nil {
123 return templ_7745c5c3_Err
124 }
125 }
126 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "</a>")
127 if templ_7745c5c3_Err != nil {
128 return templ_7745c5c3_Err
129 }
130 }
131 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "</nav><div class=\"layout-switch\" role=\"group\" aria-label=\"Layout\" data-js><button type=\"button\" class=\"btn icon\" data-set-layout=\"cards\" aria-pressed=\"true\" title=\"Cards\" aria-label=\"Cards\"><span class=\"ico i-cards\" aria-hidden=\"true\"></span></button> <button type=\"button\" class=\"btn icon\" data-set-layout=\"split\" aria-pressed=\"false\" title=\"Two columns\" aria-label=\"Two columns\"><span class=\"ico i-split\" aria-hidden=\"true\"></span></button> <button type=\"button\" class=\"btn icon\" data-set-layout=\"compact\" aria-pressed=\"false\" title=\"Compact list\" aria-label=\"Compact list\"><span class=\"ico i-compact\" aria-hidden=\"true\"></span></button></div></div><ul class=\"repos\" id=\"repo-rows\" data-rows data-sort=\"")
132 if templ_7745c5c3_Err != nil {
133 return templ_7745c5c3_Err
134 }
135 var templ_7745c5c3_Var7 string
136 templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Sort)
137 if templ_7745c5c3_Err != nil {
138 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 54, Col: 65}
139 }
140 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var7)
141 if templ_7745c5c3_Err != nil {
142 return templ_7745c5c3_Err
143 }
144 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "\" data-desc=\"")
145 if templ_7745c5c3_Err != nil {
146 return templ_7745c5c3_Err
147 }
148 var templ_7745c5c3_Var8 string
149 templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprint(p.Desc))
150 if templ_7745c5c3_Err != nil {
151 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 54, Col: 98}
152 }
153 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var8)
154 if templ_7745c5c3_Err != nil {
155 return templ_7745c5c3_Err
156 }
157 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "\">")
158 if templ_7745c5c3_Err != nil {
159 return templ_7745c5c3_Err
160 }
161 for _, r := range p.Rows {
162 templ_7745c5c3_Err = HomeRowView(r).Render(ctx, templ_7745c5c3_Buffer)
163 if templ_7745c5c3_Err != nil {
164 return templ_7745c5c3_Err
165 }
166 }
167 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "</ul>")
168 if templ_7745c5c3_Err != nil {
169 return templ_7745c5c3_Err
170 }
171 if len(p.Rows) == 0 {
172 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "<p class=\"lede dim\">no repositories yet.</p>")
173 if templ_7745c5c3_Err != nil {
174 return templ_7745c5c3_Err
175 }
176 }
177 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "</section></div>")
178 if templ_7745c5c3_Err != nil {
179 return templ_7745c5c3_Err
180 }
181 return nil
182 })
183 templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer)
184 if templ_7745c5c3_Err != nil {
185 return templ_7745c5c3_Err
186 }
187 return nil
188 })
189}
190
191// Summary is the summary of a repository: the README reads in the main
192// column at the reading measure; what one acts on sits in the rail.
193func Summary(l Layout, p SummaryPage) templ.Component {
194 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
195 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
196 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
197 return templ_7745c5c3_CtxErr
198 }
199 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
200 if !templ_7745c5c3_IsBuffer {
201 defer func() {
202 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
203 if templ_7745c5c3_Err == nil {
204 templ_7745c5c3_Err = templ_7745c5c3_BufErr
205 }
206 }()
207 }
208 ctx = templ.InitializeContext(ctx)
209 templ_7745c5c3_Var9 := templ.GetChildren(ctx)
210 if templ_7745c5c3_Var9 == nil {
211 templ_7745c5c3_Var9 = templ.NopComponent
212 }
213 ctx = templ.ClearChildren(ctx)
214 templ_7745c5c3_Var10 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
215 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
216 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
217 if !templ_7745c5c3_IsBuffer {
218 defer func() {
219 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
220 if templ_7745c5c3_Err == nil {
221 templ_7745c5c3_Err = templ_7745c5c3_BufErr
222 }
223 }()
224 }
225 ctx = templ.InitializeContext(ctx)
226 if p.Readme != nil {
227 templ_7745c5c3_Err = ReadmeCard(*p.Readme, p.Docs...).Render(ctx, templ_7745c5c3_Buffer)
228 if templ_7745c5c3_Err != nil {
229 return templ_7745c5c3_Err
230 }
231 }
232 return nil
233 })
234 templ_7745c5c3_Err = Shell(l, summaryRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var10), templ_7745c5c3_Buffer)
235 if templ_7745c5c3_Err != nil {
236 return templ_7745c5c3_Err
237 }
238 return nil
239 })
240}
241
242// latestTagFact is the "latest tag" row of About: the newest tag (its
243// commit subject on hover), how old it is, and the count of tags, a link to
244// all of them. With too many tags to date them, the count only.
245func latestTagFact(t LatestTag) templ.Component {
246 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
247 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
248 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
249 return templ_7745c5c3_CtxErr
250 }
251 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
252 if !templ_7745c5c3_IsBuffer {
253 defer func() {
254 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
255 if templ_7745c5c3_Err == nil {
256 templ_7745c5c3_Err = templ_7745c5c3_BufErr
257 }
258 }()
259 }
260 ctx = templ.InitializeContext(ctx)
261 templ_7745c5c3_Var11 := templ.GetChildren(ctx)
262 if templ_7745c5c3_Var11 == nil {
263 templ_7745c5c3_Var11 = templ.NopComponent
264 }
265 ctx = templ.ClearChildren(ctx)
266 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "<dt>latest tag</dt><dd class=\"latest-tag\">")
267 if templ_7745c5c3_Err != nil {
268 return templ_7745c5c3_Err
269 }
270 if t.Name != "" {
271 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "<a class=\"tag-name\" href=\"")
272 if templ_7745c5c3_Err != nil {
273 return templ_7745c5c3_Err
274 }
275 var templ_7745c5c3_Var12 templ.SafeURL
276 templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(t.Href))
277 if templ_7745c5c3_Err != nil {
278 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 84, Col: 51}
279 }
280 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
281 if templ_7745c5c3_Err != nil {
282 return templ_7745c5c3_Err
283 }
284 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "\" title=\"")
285 if templ_7745c5c3_Err != nil {
286 return templ_7745c5c3_Err
287 }
288 var templ_7745c5c3_Var13 string
289 templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.ResolveAttributeValue(t.Subject)
290 if templ_7745c5c3_Err != nil {
291 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 84, Col: 71}
292 }
293 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var13)
294 if templ_7745c5c3_Err != nil {
295 return templ_7745c5c3_Err
296 }
297 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "\">")
298 if templ_7745c5c3_Err != nil {
299 return templ_7745c5c3_Err
300 }
301 var templ_7745c5c3_Var14 string
302 templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(t.Name)
303 if templ_7745c5c3_Err != nil {
304 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 84, Col: 82}
305 }
306 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14))
307 if templ_7745c5c3_Err != nil {
308 return templ_7745c5c3_Err
309 }
310 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "</a> ")
311 if templ_7745c5c3_Err != nil {
312 return templ_7745c5c3_Err
313 }
314 if t.WhenAt != "" {
315 var templ_7745c5c3_Var15 string
316 templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(" · ")
317 if templ_7745c5c3_Err != nil {
318 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 86, Col: 12}
319 }
320 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15))
321 if templ_7745c5c3_Err != nil {
322 return templ_7745c5c3_Err
323 }
324 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "<time datetime=\"")
325 if templ_7745c5c3_Err != nil {
326 return templ_7745c5c3_Err
327 }
328 var templ_7745c5c3_Var16 string
329 templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.ResolveAttributeValue(t.WhenAt)
330 if templ_7745c5c3_Err != nil {
331 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 86, Col: 39}
332 }
333 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var16)
334 if templ_7745c5c3_Err != nil {
335 return templ_7745c5c3_Err
336 }
337 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "\" title=\"")
338 if templ_7745c5c3_Err != nil {
339 return templ_7745c5c3_Err
340 }
341 var templ_7745c5c3_Var17 string
342 templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.ResolveAttributeValue(t.WhenAt)
343 if templ_7745c5c3_Err != nil {
344 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 86, Col: 58}
345 }
346 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var17)
347 if templ_7745c5c3_Err != nil {
348 return templ_7745c5c3_Err
349 }
350 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "\">")
351 if templ_7745c5c3_Err != nil {
352 return templ_7745c5c3_Err
353 }
354 var templ_7745c5c3_Var18 string
355 templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinStringErrs(t.When)
356 if templ_7745c5c3_Err != nil {
357 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 86, Col: 69}
358 }
359 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18))
360 if templ_7745c5c3_Err != nil {
361 return templ_7745c5c3_Err
362 }
363 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "</time>")
364 if templ_7745c5c3_Err != nil {
365 return templ_7745c5c3_Err
366 }
367 }
368 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, " ")
369 if templ_7745c5c3_Err != nil {
370 return templ_7745c5c3_Err
371 }
372 var templ_7745c5c3_Var19 string
373 templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(" · ")
374 if templ_7745c5c3_Err != nil {
375 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 88, Col: 11}
376 }
377 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19))
378 if templ_7745c5c3_Err != nil {
379 return templ_7745c5c3_Err
380 }
381 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, " ")
382 if templ_7745c5c3_Err != nil {
383 return templ_7745c5c3_Err
384 }
385 }
386 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "<a class=\"all-tags\" href=\"")
387 if templ_7745c5c3_Err != nil {
388 return templ_7745c5c3_Err
389 }
390 var templ_7745c5c3_Var20 templ.SafeURL
391 templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(t.RefsHref))
392 if templ_7745c5c3_Err != nil {
393 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 90, Col: 54}
394 }
395 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20))
396 if templ_7745c5c3_Err != nil {
397 return templ_7745c5c3_Err
398 }
399 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "\">")
400 if templ_7745c5c3_Err != nil {
401 return templ_7745c5c3_Err
402 }
403 var templ_7745c5c3_Var21 string
404 templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinStringErrs(plural(t.Count, "tag", "tags"))
405 if templ_7745c5c3_Err != nil {
406 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 90, Col: 89}
407 }
408 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21))
409 if templ_7745c5c3_Err != nil {
410 return templ_7745c5c3_Err
411 }
412 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "</a></dd>")
413 if templ_7745c5c3_Err != nil {
414 return templ_7745c5c3_Err
415 }
416 return nil
417 })
418}
419
420func summaryRail(p SummaryPage) templ.Component {
421 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
422 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
423 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
424 return templ_7745c5c3_CtxErr
425 }
426 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
427 if !templ_7745c5c3_IsBuffer {
428 defer func() {
429 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
430 if templ_7745c5c3_Err == nil {
431 templ_7745c5c3_Err = templ_7745c5c3_BufErr
432 }
433 }()
434 }
435 ctx = templ.InitializeContext(ctx)
436 templ_7745c5c3_Var22 := templ.GetChildren(ctx)
437 if templ_7745c5c3_Var22 == nil {
438 templ_7745c5c3_Var22 = templ.NopComponent
439 }
440 ctx = templ.ClearChildren(ctx)
441 if p.Mirror != nil {
442 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "<section aria-labelledby=\"r-mirror\"><h2 id=\"r-mirror\">Mirror</h2><p>⚠ Mirror ")
443 if templ_7745c5c3_Err != nil {
444 return templ_7745c5c3_Err
445 }
446 var templ_7745c5c3_Var23 string
447 templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(p.Mirror.State)
448 if templ_7745c5c3_Err != nil {
449 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 98, Col: 33}
450 }
451 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23))
452 if templ_7745c5c3_Err != nil {
453 return templ_7745c5c3_Err
454 }
455 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "</p>")
456 if templ_7745c5c3_Err != nil {
457 return templ_7745c5c3_Err
458 }
459 if p.Mirror.Reason != "" {
460 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "<p>")
461 if templ_7745c5c3_Err != nil {
462 return templ_7745c5c3_Err
463 }
464 var templ_7745c5c3_Var24 string
465 templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.JoinStringErrs(p.Mirror.Reason)
466 if templ_7745c5c3_Err != nil {
467 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 100, Col: 24}
468 }
469 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var24))
470 if templ_7745c5c3_Err != nil {
471 return templ_7745c5c3_Err
472 }
473 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "</p>")
474 if templ_7745c5c3_Err != nil {
475 return templ_7745c5c3_Err
476 }
477 }
478 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "<p>Run <code>")
479 if templ_7745c5c3_Err != nil {
480 return templ_7745c5c3_Err
481 }
482 var templ_7745c5c3_Var25 string
483 templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.JoinStringErrs(p.Mirror.Command)
484 if templ_7745c5c3_Err != nil {
485 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 102, Col: 34}
486 }
487 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var25))
488 if templ_7745c5c3_Err != nil {
489 return templ_7745c5c3_Err
490 }
491 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "</code></p></section>")
492 if templ_7745c5c3_Err != nil {
493 return templ_7745c5c3_Err
494 }
495 }
496 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "<section aria-labelledby=\"r-clone\"><h2 id=\"r-clone\">Clone</h2>")
497 if templ_7745c5c3_Err != nil {
498 return templ_7745c5c3_Err
499 }
500 templ_7745c5c3_Err = CloneBlock(p.Clone).Render(ctx, templ_7745c5c3_Buffer)
501 if templ_7745c5c3_Err != nil {
502 return templ_7745c5c3_Err
503 }
504 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "</section><section aria-labelledby=\"r-facts\"><h2 id=\"r-facts\">About</h2><dl class=\"kv\">")
505 if templ_7745c5c3_Err != nil {
506 return templ_7745c5c3_Err
507 }
508 for _, f := range p.Facts {
509 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "<dt>")
510 if templ_7745c5c3_Err != nil {
511 return templ_7745c5c3_Err
512 }
513 var templ_7745c5c3_Var26 string
514 templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(f.Key)
515 if templ_7745c5c3_Err != nil {
516 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 112, Col: 15}
517 }
518 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26))
519 if templ_7745c5c3_Err != nil {
520 return templ_7745c5c3_Err
521 }
522 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "</dt>")
523 if templ_7745c5c3_Err != nil {
524 return templ_7745c5c3_Err
525 }
526 templ_7745c5c3_Err = FactValue(f).Render(ctx, templ_7745c5c3_Buffer)
527 if templ_7745c5c3_Err != nil {
528 return templ_7745c5c3_Err
529 }
530 }
531 if lic := p.License; lic != nil {
532 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "<dt>license</dt><dd><a href=\"")
533 if templ_7745c5c3_Err != nil {
534 return templ_7745c5c3_Err
535 }
536 var templ_7745c5c3_Var27 templ.SafeURL
537 templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(lic.Href))
538 if templ_7745c5c3_Err != nil {
539 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 117, Col: 41}
540 }
541 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27))
542 if templ_7745c5c3_Err != nil {
543 return templ_7745c5c3_Err
544 }
545 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "\">")
546 if templ_7745c5c3_Err != nil {
547 return templ_7745c5c3_Err
548 }
549 var templ_7745c5c3_Var28 string
550 templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.JoinStringErrs(lic.ID)
551 if templ_7745c5c3_Err != nil {
552 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 117, Col: 52}
553 }
554 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var28))
555 if templ_7745c5c3_Err != nil {
556 return templ_7745c5c3_Err
557 }
558 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "</a></dd>")
559 if templ_7745c5c3_Err != nil {
560 return templ_7745c5c3_Err
561 }
562 }
563 if p.Latest != nil {
564 templ_7745c5c3_Err = latestTagFact(*p.Latest).Render(ctx, templ_7745c5c3_Buffer)
565 if templ_7745c5c3_Err != nil {
566 return templ_7745c5c3_Err
567 }
568 }
569 if r := p.Release; r != nil {
570 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "<dt>release</dt><dd><a href=\"")
571 if templ_7745c5c3_Err != nil {
572 return templ_7745c5c3_Err
573 }
574 var templ_7745c5c3_Var29 templ.SafeURL
575 templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href))
576 if templ_7745c5c3_Err != nil {
577 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 125, Col: 36}
578 }
579 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var29))
580 if templ_7745c5c3_Err != nil {
581 return templ_7745c5c3_Err
582 }
583 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "\">")
584 if templ_7745c5c3_Err != nil {
585 return templ_7745c5c3_Err
586 }
587 var templ_7745c5c3_Var30 string
588 templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinStringErrs(r.Tag)
589 if templ_7745c5c3_Err != nil {
590 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 125, Col: 46}
591 }
592 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30))
593 if templ_7745c5c3_Err != nil {
594 return templ_7745c5c3_Err
595 }
596 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "</a>")
597 if templ_7745c5c3_Err != nil {
598 return templ_7745c5c3_Err
599 }
600 var templ_7745c5c3_Var31 string
601 templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinStringErrs(" · ")
602 if templ_7745c5c3_Err != nil {
603 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 125, Col: 60}
604 }
605 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31))
606 if templ_7745c5c3_Err != nil {
607 return templ_7745c5c3_Err
608 }
609 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, " <time datetime=\"")
610 if templ_7745c5c3_Err != nil {
611 return templ_7745c5c3_Err
612 }
613 var templ_7745c5c3_Var32 string
614 templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
615 if templ_7745c5c3_Err != nil {
616 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 126, Col: 30}
617 }
618 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var32)
619 if templ_7745c5c3_Err != nil {
620 return templ_7745c5c3_Err
621 }
622 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "\" title=\"")
623 if templ_7745c5c3_Err != nil {
624 return templ_7745c5c3_Err
625 }
626 var templ_7745c5c3_Var33 string
627 templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
628 if templ_7745c5c3_Err != nil {
629 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 126, Col: 49}
630 }
631 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var33)
632 if templ_7745c5c3_Err != nil {
633 return templ_7745c5c3_Err
634 }
635 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "\">")
636 if templ_7745c5c3_Err != nil {
637 return templ_7745c5c3_Err
638 }
639 var templ_7745c5c3_Var34 string
640 templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(r.When)
641 if templ_7745c5c3_Err != nil {
642 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 126, Col: 60}
643 }
644 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34))
645 if templ_7745c5c3_Err != nil {
646 return templ_7745c5c3_Err
647 }
648 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "</time>")
649 if templ_7745c5c3_Err != nil {
650 return templ_7745c5c3_Err
651 }
652 var templ_7745c5c3_Var35 string
653 templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.JoinStringErrs(" · ")
654 if templ_7745c5c3_Err != nil {
655 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 126, Col: 77}
656 }
657 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var35))
658 if templ_7745c5c3_Err != nil {
659 return templ_7745c5c3_Err
660 }
661 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, " <a href=\"")
662 if templ_7745c5c3_Err != nil {
663 return templ_7745c5c3_Err
664 }
665 var templ_7745c5c3_Var36 templ.SafeURL
666 templ_7745c5c3_Var36, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.AllHref))
667 if templ_7745c5c3_Err != nil {
668 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 127, Col: 39}
669 }
670 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var36))
671 if templ_7745c5c3_Err != nil {
672 return templ_7745c5c3_Err
673 }
674 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "\">all releases</a></dd>")
675 if templ_7745c5c3_Err != nil {
676 return templ_7745c5c3_Err
677 }
678 }
679 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "</dl></section>")
680 if templ_7745c5c3_Err != nil {
681 return templ_7745c5c3_Err
682 }
683 if len(p.Recent) > 0 {
684 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "<section aria-labelledby=\"r-recent\"><h2 id=\"r-recent\">Recent commits <a href=\"")
685 if templ_7745c5c3_Err != nil {
686 return templ_7745c5c3_Err
687 }
688 var templ_7745c5c3_Var37 templ.SafeURL
689 templ_7745c5c3_Var37, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.AllHref))
690 if templ_7745c5c3_Err != nil {
691 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 133, Col: 105}
692 }
693 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var37))
694 if templ_7745c5c3_Err != nil {
695 return templ_7745c5c3_Err
696 }
697 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "\">View all</a></h2>")
698 if templ_7745c5c3_Err != nil {
699 return templ_7745c5c3_Err
700 }
701 templ_7745c5c3_Err = CommitRows(p.Recent).Render(ctx, templ_7745c5c3_Buffer)
702 if templ_7745c5c3_Err != nil {
703 return templ_7745c5c3_Err
704 }
705 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "</section>")
706 if templ_7745c5c3_Err != nil {
707 return templ_7745c5c3_Err
708 }
709 }
710 if p.Actions != nil {
711 templ_7745c5c3_Err = RecentActionsBlock(*p.Actions).Render(ctx, templ_7745c5c3_Buffer)
712 if templ_7745c5c3_Err != nil {
713 return templ_7745c5c3_Err
714 }
715 }
716 if len(p.Outline) > 0 && p.Readme != nil {
717 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "<section aria-labelledby=\"r-outline\"><h2 id=\"r-outline\">On this page</h2>")
718 if templ_7745c5c3_Err != nil {
719 return templ_7745c5c3_Err
720 }
721 templ_7745c5c3_Err = Outline(p.Outline).Render(ctx, templ_7745c5c3_Buffer)
722 if templ_7745c5c3_Err != nil {
723 return templ_7745c5c3_Err
724 }
725 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "</section>")
726 if templ_7745c5c3_Err != nil {
727 return templ_7745c5c3_Err
728 }
729 }
730 return nil
731 })
732}
733
734// Refs lists the branches and tags of a repository.
735func Refs(l Layout, p RefsPage) templ.Component {
736 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
737 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
738 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
739 return templ_7745c5c3_CtxErr
740 }
741 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
742 if !templ_7745c5c3_IsBuffer {
743 defer func() {
744 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
745 if templ_7745c5c3_Err == nil {
746 templ_7745c5c3_Err = templ_7745c5c3_BufErr
747 }
748 }()
749 }
750 ctx = templ.InitializeContext(ctx)
751 templ_7745c5c3_Var38 := templ.GetChildren(ctx)
752 if templ_7745c5c3_Var38 == nil {
753 templ_7745c5c3_Var38 = templ.NopComponent
754 }
755 ctx = templ.ClearChildren(ctx)
756 templ_7745c5c3_Var39 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
757 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
758 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
759 if !templ_7745c5c3_IsBuffer {
760 defer func() {
761 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
762 if templ_7745c5c3_Err == nil {
763 templ_7745c5c3_Err = templ_7745c5c3_BufErr
764 }
765 }()
766 }
767 ctx = templ.InitializeContext(ctx)
768 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "<div class=\"filter\"><label for=\"ref-filter\" class=\"sr\">filter</label> <input id=\"ref-filter\" type=\"search\" data-filter=\"#ref-rows > tr\" placeholder=\"Filter branches and tags…\" autocomplete=\"off\" hx-on:input=\"ermite.filter(this)\"></div><table class=\"list refs\" aria-label=\"Branches and tags\"><thead><tr><th class=\"c-kind\">kind</th><th class=\"c-name\">name</th><th class=\"c-sha\">commit</th><th class=\"c-sub\">subject</th><th class=\"c-when\">date</th></tr></thead>")
769 if templ_7745c5c3_Err != nil {
770 return templ_7745c5c3_Err
771 }
772 templ_7745c5c3_Err = RefsBody(p).Render(ctx, templ_7745c5c3_Buffer)
773 if templ_7745c5c3_Err != nil {
774 return templ_7745c5c3_Err
775 }
776 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "</table>")
777 if templ_7745c5c3_Err != nil {
778 return templ_7745c5c3_Err
779 }
780 if p.Note != "" {
781 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "<p class=\"note\">")
782 if templ_7745c5c3_Err != nil {
783 return templ_7745c5c3_Err
784 }
785 var templ_7745c5c3_Var40 string
786 templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note)
787 if templ_7745c5c3_Err != nil {
788 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 166, Col: 27}
789 }
790 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var40))
791 if templ_7745c5c3_Err != nil {
792 return templ_7745c5c3_Err
793 }
794 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "</p>")
795 if templ_7745c5c3_Err != nil {
796 return templ_7745c5c3_Err
797 }
798 }
799 return nil
800 })
801 templ_7745c5c3_Err = Shell(l, refsRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var39), templ_7745c5c3_Buffer)
802 if templ_7745c5c3_Err != nil {
803 return templ_7745c5c3_Err
804 }
805 return nil
806 })
807}
808
809func refRow(kind string, r RefRow) templ.Component {
810 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
811 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
812 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
813 return templ_7745c5c3_CtxErr
814 }
815 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
816 if !templ_7745c5c3_IsBuffer {
817 defer func() {
818 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
819 if templ_7745c5c3_Err == nil {
820 templ_7745c5c3_Err = templ_7745c5c3_BufErr
821 }
822 }()
823 }
824 ctx = templ.InitializeContext(ctx)
825 templ_7745c5c3_Var41 := templ.GetChildren(ctx)
826 if templ_7745c5c3_Var41 == nil {
827 templ_7745c5c3_Var41 = templ.NopComponent
828 }
829 ctx = templ.ClearChildren(ctx)
830 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "<tr")
831 if templ_7745c5c3_Err != nil {
832 return templ_7745c5c3_Err
833 }
834 if r.Cursor {
835 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, " data-cursor")
836 if templ_7745c5c3_Err != nil {
837 return templ_7745c5c3_Err
838 }
839 }
840 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, "><td class=\"c-kind mute\">")
841 if templ_7745c5c3_Err != nil {
842 return templ_7745c5c3_Err
843 }
844 var templ_7745c5c3_Var42 string
845 templ_7745c5c3_Var42, templ_7745c5c3_Err = templ.JoinStringErrs(kind)
846 if templ_7745c5c3_Err != nil {
847 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 173, Col: 32}
848 }
849 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var42))
850 if templ_7745c5c3_Err != nil {
851 return templ_7745c5c3_Err
852 }
853 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "</td><td class=\"c-name\"><a href=\"")
854 if templ_7745c5c3_Err != nil {
855 return templ_7745c5c3_Err
856 }
857 var templ_7745c5c3_Var43 templ.SafeURL
858 templ_7745c5c3_Var43, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href))
859 if templ_7745c5c3_Err != nil {
860 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 175, Col: 34}
861 }
862 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var43))
863 if templ_7745c5c3_Err != nil {
864 return templ_7745c5c3_Err
865 }
866 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "\">")
867 if templ_7745c5c3_Err != nil {
868 return templ_7745c5c3_Err
869 }
870 var templ_7745c5c3_Var44 string
871 templ_7745c5c3_Var44, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name)
872 if templ_7745c5c3_Err != nil {
873 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 175, Col: 45}
874 }
875 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var44))
876 if templ_7745c5c3_Err != nil {
877 return templ_7745c5c3_Err
878 }
879 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, "</a> ")
880 if templ_7745c5c3_Err != nil {
881 return templ_7745c5c3_Err
882 }
883 if r.Default {
884 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, "<span class=\"pill\">default</span>")
885 if templ_7745c5c3_Err != nil {
886 return templ_7745c5c3_Err
887 }
888 }
889 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "</td><td class=\"c-sha\">")
890 if templ_7745c5c3_Err != nil {
891 return templ_7745c5c3_Err
892 }
893 if r.CHref != "" {
894 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "<a href=\"")
895 if templ_7745c5c3_Err != nil {
896 return templ_7745c5c3_Err
897 }
898 var templ_7745c5c3_Var45 templ.SafeURL
899 templ_7745c5c3_Var45, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.CHref))
900 if templ_7745c5c3_Err != nil {
901 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 182, Col: 36}
902 }
903 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var45))
904 if templ_7745c5c3_Err != nil {
905 return templ_7745c5c3_Err
906 }
907 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, "\">")
908 if templ_7745c5c3_Err != nil {
909 return templ_7745c5c3_Err
910 }
911 var templ_7745c5c3_Var46 string
912 templ_7745c5c3_Var46, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short)
913 if templ_7745c5c3_Err != nil {
914 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 182, Col: 48}
915 }
916 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var46))
917 if templ_7745c5c3_Err != nil {
918 return templ_7745c5c3_Err
919 }
920 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "</a>")
921 if templ_7745c5c3_Err != nil {
922 return templ_7745c5c3_Err
923 }
924 } else {
925 var templ_7745c5c3_Var47 string
926 templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short)
927 if templ_7745c5c3_Err != nil {
928 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 184, Col: 13}
929 }
930 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var47))
931 if templ_7745c5c3_Err != nil {
932 return templ_7745c5c3_Err
933 }
934 }
935 templ_7745c5c3_Err = CommitChecks(r.Checks).Render(ctx, templ_7745c5c3_Buffer)
936 if templ_7745c5c3_Err != nil {
937 return templ_7745c5c3_Err
938 }
939 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, "</td><td class=\"c-sub\">")
940 if templ_7745c5c3_Err != nil {
941 return templ_7745c5c3_Err
942 }
943 var templ_7745c5c3_Var48 string
944 templ_7745c5c3_Var48, templ_7745c5c3_Err = templ.JoinStringErrs(r.Subject)
945 if templ_7745c5c3_Err != nil {
946 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 188, Col: 31}
947 }
948 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var48))
949 if templ_7745c5c3_Err != nil {
950 return templ_7745c5c3_Err
951 }
952 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 75, "</td><td class=\"c-when dim\">")
953 if templ_7745c5c3_Err != nil {
954 return templ_7745c5c3_Err
955 }
956 if r.WhenAt != "" {
957 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 76, "<time datetime=\"")
958 if templ_7745c5c3_Err != nil {
959 return templ_7745c5c3_Err
960 }
961 var templ_7745c5c3_Var49 string
962 templ_7745c5c3_Var49, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
963 if templ_7745c5c3_Err != nil {
964 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 191, Col: 29}
965 }
966 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var49)
967 if templ_7745c5c3_Err != nil {
968 return templ_7745c5c3_Err
969 }
970 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 77, "\" title=\"")
971 if templ_7745c5c3_Err != nil {
972 return templ_7745c5c3_Err
973 }
974 var templ_7745c5c3_Var50 string
975 templ_7745c5c3_Var50, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
976 if templ_7745c5c3_Err != nil {
977 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 191, Col: 48}
978 }
979 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var50)
980 if templ_7745c5c3_Err != nil {
981 return templ_7745c5c3_Err
982 }
983 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 78, "\">")
984 if templ_7745c5c3_Err != nil {
985 return templ_7745c5c3_Err
986 }
987 var templ_7745c5c3_Var51 string
988 templ_7745c5c3_Var51, templ_7745c5c3_Err = templ.JoinStringErrs(r.When)
989 if templ_7745c5c3_Err != nil {
990 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 191, Col: 59}
991 }
992 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var51))
993 if templ_7745c5c3_Err != nil {
994 return templ_7745c5c3_Err
995 }
996 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 79, "</time>")
997 if templ_7745c5c3_Err != nil {
998 return templ_7745c5c3_Err
999 }
1000 }
1001 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 80, "</td></tr>")
1002 if templ_7745c5c3_Err != nil {
1003 return templ_7745c5c3_Err
1004 }
1005 return nil
1006 })
1007}
1008
1009func refsRail(p RefsPage) templ.Component {
1010 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1011 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1012 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1013 return templ_7745c5c3_CtxErr
1014 }
1015 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1016 if !templ_7745c5c3_IsBuffer {
1017 defer func() {
1018 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1019 if templ_7745c5c3_Err == nil {
1020 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1021 }
1022 }()
1023 }
1024 ctx = templ.InitializeContext(ctx)
1025 templ_7745c5c3_Var52 := templ.GetChildren(ctx)
1026 if templ_7745c5c3_Var52 == nil {
1027 templ_7745c5c3_Var52 = templ.NopComponent
1028 }
1029 ctx = templ.ClearChildren(ctx)
1030 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 81, "<section aria-labelledby=\"r-refs\"><h2 id=\"r-refs\">Overview</h2>")
1031 if templ_7745c5c3_Err != nil {
1032 return templ_7745c5c3_Err
1033 }
1034 templ_7745c5c3_Err = RefsKV(p).Render(ctx, templ_7745c5c3_Buffer)
1035 if templ_7745c5c3_Err != nil {
1036 return templ_7745c5c3_Err
1037 }
1038 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 82, "</section>")
1039 if templ_7745c5c3_Err != nil {
1040 return templ_7745c5c3_Err
1041 }
1042 return nil
1043 })
1044}
1045
1046// State is a 404, 500 or empty-repository page inside the normal shell.
1047func State(l Layout, p StatePage) templ.Component {
1048 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1049 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1050 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1051 return templ_7745c5c3_CtxErr
1052 }
1053 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1054 if !templ_7745c5c3_IsBuffer {
1055 defer func() {
1056 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1057 if templ_7745c5c3_Err == nil {
1058 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1059 }
1060 }()
1061 }
1062 ctx = templ.InitializeContext(ctx)
1063 templ_7745c5c3_Var53 := templ.GetChildren(ctx)
1064 if templ_7745c5c3_Var53 == nil {
1065 templ_7745c5c3_Var53 = templ.NopComponent
1066 }
1067 ctx = templ.ClearChildren(ctx)
1068 templ_7745c5c3_Var54 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1069 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1070 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1071 if !templ_7745c5c3_IsBuffer {
1072 defer func() {
1073 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1074 if templ_7745c5c3_Err == nil {
1075 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1076 }
1077 }()
1078 }
1079 ctx = templ.InitializeContext(ctx)
1080 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 83, "<section class=\"state\" aria-labelledby=\"state-title\"><p class=\"eyebrow\">")
1081 if templ_7745c5c3_Err != nil {
1082 return templ_7745c5c3_Err
1083 }
1084 var templ_7745c5c3_Var55 string
1085 templ_7745c5c3_Var55, templ_7745c5c3_Err = templ.JoinStringErrs(p.Code)
1086 if templ_7745c5c3_Err != nil {
1087 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 208, Col: 30}
1088 }
1089 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var55))
1090 if templ_7745c5c3_Err != nil {
1091 return templ_7745c5c3_Err
1092 }
1093 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 84, "</p><h1 id=\"state-title\">")
1094 if templ_7745c5c3_Err != nil {
1095 return templ_7745c5c3_Err
1096 }
1097 var templ_7745c5c3_Var56 string
1098 templ_7745c5c3_Var56, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title)
1099 if templ_7745c5c3_Err != nil {
1100 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 209, Col: 33}
1101 }
1102 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var56))
1103 if templ_7745c5c3_Err != nil {
1104 return templ_7745c5c3_Err
1105 }
1106 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 85, "</h1>")
1107 if templ_7745c5c3_Err != nil {
1108 return templ_7745c5c3_Err
1109 }
1110 for _, line := range p.Lines {
1111 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 86, "<p class=\"dim\">")
1112 if templ_7745c5c3_Err != nil {
1113 return templ_7745c5c3_Err
1114 }
1115 var templ_7745c5c3_Var57 string
1116 templ_7745c5c3_Var57, templ_7745c5c3_Err = templ.JoinStringErrs(line)
1117 if templ_7745c5c3_Err != nil {
1118 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 211, Col: 25}
1119 }
1120 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var57))
1121 if templ_7745c5c3_Err != nil {
1122 return templ_7745c5c3_Err
1123 }
1124 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 87, "</p>")
1125 if templ_7745c5c3_Err != nil {
1126 return templ_7745c5c3_Err
1127 }
1128 }
1129 if p.Clone != nil {
1130 templ_7745c5c3_Err = CloneBlock(*p.Clone).Render(ctx, templ_7745c5c3_Buffer)
1131 if templ_7745c5c3_Err != nil {
1132 return templ_7745c5c3_Err
1133 }
1134 }
1135 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 88, "<p class=\"state-back\">")
1136 if templ_7745c5c3_Err != nil {
1137 return templ_7745c5c3_Err
1138 }
1139 for _, b := range p.Back {
1140 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 89, "<a href=\"")
1141 if templ_7745c5c3_Err != nil {
1142 return templ_7745c5c3_Err
1143 }
1144 var templ_7745c5c3_Var58 templ.SafeURL
1145 templ_7745c5c3_Var58, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(b.Href))
1146 if templ_7745c5c3_Err != nil {
1147 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 218, Col: 36}
1148 }
1149 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var58))
1150 if templ_7745c5c3_Err != nil {
1151 return templ_7745c5c3_Err
1152 }
1153 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 90, "\">")
1154 if templ_7745c5c3_Err != nil {
1155 return templ_7745c5c3_Err
1156 }
1157 var templ_7745c5c3_Var59 string
1158 templ_7745c5c3_Var59, templ_7745c5c3_Err = templ.JoinStringErrs(b.Label)
1159 if templ_7745c5c3_Err != nil {
1160 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 218, Col: 48}
1161 }
1162 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var59))
1163 if templ_7745c5c3_Err != nil {
1164 return templ_7745c5c3_Err
1165 }
1166 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, "</a>")
1167 if templ_7745c5c3_Err != nil {
1168 return templ_7745c5c3_Err
1169 }
1170 }
1171 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 92, "</p></section>")
1172 if templ_7745c5c3_Err != nil {
1173 return templ_7745c5c3_Err
1174 }
1175 return nil
1176 })
1177 templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var54), templ_7745c5c3_Buffer)
1178 if templ_7745c5c3_Err != nil {
1179 return templ_7745c5c3_Err
1180 }
1181 return nil
1182 })
1183}
1184
1185// Login signs the browser in with a login link. Opening the link consumes
1186// nothing; only this form does. ermite.js submits it as soon as a browser
1187// shows the page (data-autosubmit): link previews and prefetchers run no
1188// script, so they still cannot use the link. Without scripts the owner
1189// clicks the button.
1190func Login(l Layout, p LoginPage) templ.Component {
1191 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1192 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1193 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1194 return templ_7745c5c3_CtxErr
1195 }
1196 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1197 if !templ_7745c5c3_IsBuffer {
1198 defer func() {
1199 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1200 if templ_7745c5c3_Err == nil {
1201 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1202 }
1203 }()
1204 }
1205 ctx = templ.InitializeContext(ctx)
1206 templ_7745c5c3_Var60 := templ.GetChildren(ctx)
1207 if templ_7745c5c3_Var60 == nil {
1208 templ_7745c5c3_Var60 = templ.NopComponent
1209 }
1210 ctx = templ.ClearChildren(ctx)
1211 templ_7745c5c3_Var61 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1212 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1213 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1214 if !templ_7745c5c3_IsBuffer {
1215 defer func() {
1216 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1217 if templ_7745c5c3_Err == nil {
1218 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1219 }
1220 }()
1221 }
1222 ctx = templ.InitializeContext(ctx)
1223 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 93, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">")
1224 if templ_7745c5c3_Err != nil {
1225 return templ_7745c5c3_Err
1226 }
1227 var templ_7745c5c3_Var62 string
1228 templ_7745c5c3_Var62, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title)
1229 if templ_7745c5c3_Err != nil {
1230 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 233, Col: 33}
1231 }
1232 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var62))
1233 if templ_7745c5c3_Err != nil {
1234 return templ_7745c5c3_Err
1235 }
1236 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 94, "</h1>")
1237 if templ_7745c5c3_Err != nil {
1238 return templ_7745c5c3_Err
1239 }
1240 for _, line := range p.Lines {
1241 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 95, "<p class=\"dim\">")
1242 if templ_7745c5c3_Err != nil {
1243 return templ_7745c5c3_Err
1244 }
1245 var templ_7745c5c3_Var63 string
1246 templ_7745c5c3_Var63, templ_7745c5c3_Err = templ.JoinStringErrs(line)
1247 if templ_7745c5c3_Err != nil {
1248 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 235, Col: 25}
1249 }
1250 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var63))
1251 if templ_7745c5c3_Err != nil {
1252 return templ_7745c5c3_Err
1253 }
1254 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 96, "</p>")
1255 if templ_7745c5c3_Err != nil {
1256 return templ_7745c5c3_Err
1257 }
1258 }
1259 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 97, "<form class=\"state-act\" method=\"post\" action=\"")
1260 if templ_7745c5c3_Err != nil {
1261 return templ_7745c5c3_Err
1262 }
1263 var templ_7745c5c3_Var64 templ.SafeURL
1264 templ_7745c5c3_Var64, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Action))
1265 if templ_7745c5c3_Err != nil {
1266 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 237, Col: 73}
1267 }
1268 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var64))
1269 if templ_7745c5c3_Err != nil {
1270 return templ_7745c5c3_Err
1271 }
1272 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 98, "\" data-autosubmit><button type=\"submit\" class=\"btn primary\">")
1273 if templ_7745c5c3_Err != nil {
1274 return templ_7745c5c3_Err
1275 }
1276 var templ_7745c5c3_Var65 string
1277 templ_7745c5c3_Var65, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button)
1278 if templ_7745c5c3_Err != nil {
1279 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 238, Col: 56}
1280 }
1281 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var65))
1282 if templ_7745c5c3_Err != nil {
1283 return templ_7745c5c3_Err
1284 }
1285 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, "</button></form><p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>")
1286 if templ_7745c5c3_Err != nil {
1287 return templ_7745c5c3_Err
1288 }
1289 return nil
1290 })
1291 templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var61), templ_7745c5c3_Buffer)
1292 if templ_7745c5c3_Err != nil {
1293 return templ_7745c5c3_Err
1294 }
1295 return nil
1296 })
1297}
1298
1299// PasskeyLogin is the sign-in page: a button the script (passkey.js) drives.
1300// Without script the button is hidden and the page says what to do instead.
1301func PasskeyLogin(l Layout, p PasskeyLoginPage) templ.Component {
1302 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1303 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1304 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1305 return templ_7745c5c3_CtxErr
1306 }
1307 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1308 if !templ_7745c5c3_IsBuffer {
1309 defer func() {
1310 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1311 if templ_7745c5c3_Err == nil {
1312 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1313 }
1314 }()
1315 }
1316 ctx = templ.InitializeContext(ctx)
1317 templ_7745c5c3_Var66 := templ.GetChildren(ctx)
1318 if templ_7745c5c3_Var66 == nil {
1319 templ_7745c5c3_Var66 = templ.NopComponent
1320 }
1321 ctx = templ.ClearChildren(ctx)
1322 templ_7745c5c3_Var67 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1323 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1324 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1325 if !templ_7745c5c3_IsBuffer {
1326 defer func() {
1327 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1328 if templ_7745c5c3_Err == nil {
1329 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1330 }
1331 }()
1332 }
1333 ctx = templ.InitializeContext(ctx)
1334 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 100, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">")
1335 if templ_7745c5c3_Err != nil {
1336 return templ_7745c5c3_Err
1337 }
1338 var templ_7745c5c3_Var68 string
1339 templ_7745c5c3_Var68, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title)
1340 if templ_7745c5c3_Err != nil {
1341 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 250, Col: 33}
1342 }
1343 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var68))
1344 if templ_7745c5c3_Err != nil {
1345 return templ_7745c5c3_Err
1346 }
1347 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 101, "</h1><form class=\"state-act\" data-js data-passkey-form><button type=\"submit\" class=\"btn primary\" data-passkey=\"login\" data-begin=\"")
1348 if templ_7745c5c3_Err != nil {
1349 return templ_7745c5c3_Err
1350 }
1351 var templ_7745c5c3_Var69 string
1352 templ_7745c5c3_Var69, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Begin)
1353 if templ_7745c5c3_Err != nil {
1354 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 252, Col: 87}
1355 }
1356 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var69)
1357 if templ_7745c5c3_Err != nil {
1358 return templ_7745c5c3_Err
1359 }
1360 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 102, "\" data-finish=\"")
1361 if templ_7745c5c3_Err != nil {
1362 return templ_7745c5c3_Err
1363 }
1364 var templ_7745c5c3_Var70 string
1365 templ_7745c5c3_Var70, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Finish)
1366 if templ_7745c5c3_Err != nil {
1367 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 252, Col: 112}
1368 }
1369 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var70)
1370 if templ_7745c5c3_Err != nil {
1371 return templ_7745c5c3_Err
1372 }
1373 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 103, "\">")
1374 if templ_7745c5c3_Err != nil {
1375 return templ_7745c5c3_Err
1376 }
1377 var templ_7745c5c3_Var71 string
1378 templ_7745c5c3_Var71, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button)
1379 if templ_7745c5c3_Err != nil {
1380 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 252, Col: 125}
1381 }
1382 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var71))
1383 if templ_7745c5c3_Err != nil {
1384 return templ_7745c5c3_Err
1385 }
1386 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 104, "</button></form><p class=\"dim\" role=\"status\" aria-live=\"polite\" data-passkey-status></p>")
1387 if templ_7745c5c3_Err != nil {
1388 return templ_7745c5c3_Err
1389 }
1390 for _, line := range p.Lines {
1391 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 105, "<p class=\"dim\">")
1392 if templ_7745c5c3_Err != nil {
1393 return templ_7745c5c3_Err
1394 }
1395 var templ_7745c5c3_Var72 string
1396 templ_7745c5c3_Var72, templ_7745c5c3_Err = templ.JoinStringErrs(line)
1397 if templ_7745c5c3_Err != nil {
1398 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 256, Col: 25}
1399 }
1400 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var72))
1401 if templ_7745c5c3_Err != nil {
1402 return templ_7745c5c3_Err
1403 }
1404 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 106, "</p>")
1405 if templ_7745c5c3_Err != nil {
1406 return templ_7745c5c3_Err
1407 }
1408 }
1409 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 107, "<p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>")
1410 if templ_7745c5c3_Err != nil {
1411 return templ_7745c5c3_Err
1412 }
1413 return nil
1414 })
1415 templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var67), templ_7745c5c3_Buffer)
1416 if templ_7745c5c3_Err != nil {
1417 return templ_7745c5c3_Err
1418 }
1419 return nil
1420 })
1421}
1422
1423// Passkeys lists the owner's passkeys, removes them and adds one.
1424func Passkeys(l Layout, p PasskeysPage) templ.Component {
1425 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1426 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1427 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1428 return templ_7745c5c3_CtxErr
1429 }
1430 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1431 if !templ_7745c5c3_IsBuffer {
1432 defer func() {
1433 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1434 if templ_7745c5c3_Err == nil {
1435 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1436 }
1437 }()
1438 }
1439 ctx = templ.InitializeContext(ctx)
1440 templ_7745c5c3_Var73 := templ.GetChildren(ctx)
1441 if templ_7745c5c3_Var73 == nil {
1442 templ_7745c5c3_Var73 = templ.NopComponent
1443 }
1444 ctx = templ.ClearChildren(ctx)
1445 templ_7745c5c3_Var74 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1446 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1447 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1448 if !templ_7745c5c3_IsBuffer {
1449 defer func() {
1450 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1451 if templ_7745c5c3_Err == nil {
1452 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1453 }
1454 }()
1455 }
1456 ctx = templ.InitializeContext(ctx)
1457 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 108, "<h2 class=\"rule-h\"><span>Passkeys</span><span class=\"count\">")
1458 if templ_7745c5c3_Err != nil {
1459 return templ_7745c5c3_Err
1460 }
1461 var templ_7745c5c3_Var75 string
1462 templ_7745c5c3_Var75, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.Rows)))
1463 if templ_7745c5c3_Err != nil {
1464 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 266, Col: 81}
1465 }
1466 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var75))
1467 if templ_7745c5c3_Err != nil {
1468 return templ_7745c5c3_Err
1469 }
1470 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 109, "</span></h2><p class=\"dim\">A passkey signs you in from this device or your phone, without a terminal. Removing one signs every browser out.</p>")
1471 if templ_7745c5c3_Err != nil {
1472 return templ_7745c5c3_Err
1473 }
1474 if len(p.Rows) > 0 {
1475 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 110, "<table class=\"list passkeys\" aria-label=\"Passkeys\"><thead><tr><th class=\"c-name\">Name</th><th class=\"c-when\">Created</th><th class=\"c-when\">Last used</th><th class=\"c-sync\">Synced</th><th class=\"c-act\"><span class=\"sr\">Remove</span></th></tr></thead> <tbody>")
1476 if templ_7745c5c3_Err != nil {
1477 return templ_7745c5c3_Err
1478 }
1479 for _, r := range p.Rows {
1480 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 111, "<tr><td class=\"c-name\">")
1481 if templ_7745c5c3_Err != nil {
1482 return templ_7745c5c3_Err
1483 }
1484 var templ_7745c5c3_Var76 string
1485 templ_7745c5c3_Var76, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name)
1486 if templ_7745c5c3_Err != nil {
1487 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 282, Col: 34}
1488 }
1489 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var76))
1490 if templ_7745c5c3_Err != nil {
1491 return templ_7745c5c3_Err
1492 }
1493 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 112, "</td><td class=\"c-when nowrap\"><time")
1494 if templ_7745c5c3_Err != nil {
1495 return templ_7745c5c3_Err
1496 }
1497 if r.CreatedAt != "" {
1498 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 113, " datetime=\"")
1499 if templ_7745c5c3_Err != nil {
1500 return templ_7745c5c3_Err
1501 }
1502 var templ_7745c5c3_Var77 string
1503 templ_7745c5c3_Var77, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.CreatedAt)
1504 if templ_7745c5c3_Err != nil {
1505 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 286, Col: 32}
1506 }
1507 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var77)
1508 if templ_7745c5c3_Err != nil {
1509 return templ_7745c5c3_Err
1510 }
1511 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 114, "\"")
1512 if templ_7745c5c3_Err != nil {
1513 return templ_7745c5c3_Err
1514 }
1515 }
1516 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 115, ">")
1517 if templ_7745c5c3_Err != nil {
1518 return templ_7745c5c3_Err
1519 }
1520 var templ_7745c5c3_Var78 string
1521 templ_7745c5c3_Var78, templ_7745c5c3_Err = templ.JoinStringErrs(r.Created)
1522 if templ_7745c5c3_Err != nil {
1523 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 288, Col: 20}
1524 }
1525 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var78))
1526 if templ_7745c5c3_Err != nil {
1527 return templ_7745c5c3_Err
1528 }
1529 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 116, "</time></td><td class=\"c-when nowrap\"><time")
1530 if templ_7745c5c3_Err != nil {
1531 return templ_7745c5c3_Err
1532 }
1533 if r.LastUsedAt != "" {
1534 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 117, " datetime=\"")
1535 if templ_7745c5c3_Err != nil {
1536 return templ_7745c5c3_Err
1537 }
1538 var templ_7745c5c3_Var79 string
1539 templ_7745c5c3_Var79, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.LastUsedAt)
1540 if templ_7745c5c3_Err != nil {
1541 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 293, Col: 33}
1542 }
1543 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var79)
1544 if templ_7745c5c3_Err != nil {
1545 return templ_7745c5c3_Err
1546 }
1547 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 118, "\"")
1548 if templ_7745c5c3_Err != nil {
1549 return templ_7745c5c3_Err
1550 }
1551 }
1552 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 119, ">")
1553 if templ_7745c5c3_Err != nil {
1554 return templ_7745c5c3_Err
1555 }
1556 var templ_7745c5c3_Var80 string
1557 templ_7745c5c3_Var80, templ_7745c5c3_Err = templ.JoinStringErrs(r.LastUsed)
1558 if templ_7745c5c3_Err != nil {
1559 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 295, Col: 21}
1560 }
1561 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var80))
1562 if templ_7745c5c3_Err != nil {
1563 return templ_7745c5c3_Err
1564 }
1565 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 120, "</time></td><td class=\"c-sync\">")
1566 if templ_7745c5c3_Err != nil {
1567 return templ_7745c5c3_Err
1568 }
1569 if r.Synced {
1570 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 121, "yes")
1571 if templ_7745c5c3_Err != nil {
1572 return templ_7745c5c3_Err
1573 }
1574 } else {
1575 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 122, "no")
1576 if templ_7745c5c3_Err != nil {
1577 return templ_7745c5c3_Err
1578 }
1579 }
1580 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 123, "</td><td class=\"c-act\"><form method=\"post\" action=\"")
1581 if templ_7745c5c3_Err != nil {
1582 return templ_7745c5c3_Err
1583 }
1584 var templ_7745c5c3_Var81 templ.SafeURL
1585 templ_7745c5c3_Var81, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Remove))
1586 if templ_7745c5c3_Err != nil {
1587 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 305, Col: 60}
1588 }
1589 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var81))
1590 if templ_7745c5c3_Err != nil {
1591 return templ_7745c5c3_Err
1592 }
1593 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 124, "\"><button type=\"submit\" class=\"btn danger\" aria-label=\"")
1594 if templ_7745c5c3_Err != nil {
1595 return templ_7745c5c3_Err
1596 }
1597 var templ_7745c5c3_Var82 string
1598 templ_7745c5c3_Var82, templ_7745c5c3_Err = templ.ResolveAttributeValue("Remove passkey " + r.Name)
1599 if templ_7745c5c3_Err != nil {
1600 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 306, Col: 89}
1601 }
1602 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var82)
1603 if templ_7745c5c3_Err != nil {
1604 return templ_7745c5c3_Err
1605 }
1606 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 125, "\">Remove</button></form></td></tr>")
1607 if templ_7745c5c3_Err != nil {
1608 return templ_7745c5c3_Err
1609 }
1610 }
1611 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 126, "</tbody></table>")
1612 if templ_7745c5c3_Err != nil {
1613 return templ_7745c5c3_Err
1614 }
1615 } else {
1616 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 127, "<p class=\"lede dim\">no passkeys yet.</p>")
1617 if templ_7745c5c3_Err != nil {
1618 return templ_7745c5c3_Err
1619 }
1620 }
1621 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 128, " ")
1622 if templ_7745c5c3_Err != nil {
1623 return templ_7745c5c3_Err
1624 }
1625 if p.Full {
1626 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 129, "<p class=\"dim\">")
1627 if templ_7745c5c3_Err != nil {
1628 return templ_7745c5c3_Err
1629 }
1630 var templ_7745c5c3_Var83 string
1631 templ_7745c5c3_Var83, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Max))
1632 if templ_7745c5c3_Err != nil {
1633 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 317, Col: 31}
1634 }
1635 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var83))
1636 if templ_7745c5c3_Err != nil {
1637 return templ_7745c5c3_Err
1638 }
1639 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 130, " passkeys are registered, the most there can be. Remove one to add another.</p>")
1640 if templ_7745c5c3_Err != nil {
1641 return templ_7745c5c3_Err
1642 }
1643 } else {
1644 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 131, "<form class=\"passkey-add\" data-js data-passkey-form><label for=\"passkey-name\" class=\"sr\">Name of the new passkey</label> <input id=\"passkey-name\" type=\"text\" placeholder=\"Name, for example Pixel 9\" autocomplete=\"off\" data-passkey-name> <button type=\"submit\" class=\"btn primary\" data-passkey=\"register\" data-begin=\"")
1645 if templ_7745c5c3_Err != nil {
1646 return templ_7745c5c3_Err
1647 }
1648 var templ_7745c5c3_Var84 string
1649 templ_7745c5c3_Var84, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Begin)
1650 if templ_7745c5c3_Err != nil {
1651 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 322, Col: 90}
1652 }
1653 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var84)
1654 if templ_7745c5c3_Err != nil {
1655 return templ_7745c5c3_Err
1656 }
1657 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 132, "\" data-finish=\"")
1658 if templ_7745c5c3_Err != nil {
1659 return templ_7745c5c3_Err
1660 }
1661 var templ_7745c5c3_Var85 string
1662 templ_7745c5c3_Var85, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Finish)
1663 if templ_7745c5c3_Err != nil {
1664 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 322, Col: 115}
1665 }
1666 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var85)
1667 if templ_7745c5c3_Err != nil {
1668 return templ_7745c5c3_Err
1669 }
1670 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 133, "\">Add a passkey</button></form>")
1671 if templ_7745c5c3_Err != nil {
1672 return templ_7745c5c3_Err
1673 }
1674 }
1675 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 134, " <p class=\"dim\" role=\"status\" aria-live=\"polite\" data-passkey-status></p>")
1676 if templ_7745c5c3_Err != nil {
1677 return templ_7745c5c3_Err
1678 }
1679 return nil
1680 })
1681 templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var74), templ_7745c5c3_Buffer)
1682 if templ_7745c5c3_Err != nil {
1683 return templ_7745c5c3_Err
1684 }
1685 return nil
1686 })
1687}
1688
1689var _ = templruntime.GeneratedTemplate