v0.35.1 2aca1df

pages_templ.go RawHistoryFolder

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

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 4

Tags 45

↑↓ moveenter openesc close