detached 0e6522c

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