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).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 p.Latest != nil {
532 templ_7745c5c3_Err = latestTagFact(*p.Latest).Render(ctx, templ_7745c5c3_Buffer)
533 if templ_7745c5c3_Err != nil {
534 return templ_7745c5c3_Err
535 }
536 }
537 if r := p.Release; r != nil {
538 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "<dt>release</dt><dd><a href=\"")
539 if templ_7745c5c3_Err != nil {
540 return templ_7745c5c3_Err
541 }
542 var templ_7745c5c3_Var27 templ.SafeURL
543 templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href))
544 if templ_7745c5c3_Err != nil {
545 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 121, Col: 36}
546 }
547 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27))
548 if templ_7745c5c3_Err != nil {
549 return templ_7745c5c3_Err
550 }
551 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "\">")
552 if templ_7745c5c3_Err != nil {
553 return templ_7745c5c3_Err
554 }
555 var templ_7745c5c3_Var28 string
556 templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.JoinStringErrs(r.Tag)
557 if templ_7745c5c3_Err != nil {
558 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 121, Col: 46}
559 }
560 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var28))
561 if templ_7745c5c3_Err != nil {
562 return templ_7745c5c3_Err
563 }
564 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "</a>")
565 if templ_7745c5c3_Err != nil {
566 return templ_7745c5c3_Err
567 }
568 var templ_7745c5c3_Var29 string
569 templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.JoinStringErrs(" · ")
570 if templ_7745c5c3_Err != nil {
571 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 121, Col: 60}
572 }
573 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var29))
574 if templ_7745c5c3_Err != nil {
575 return templ_7745c5c3_Err
576 }
577 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, " <time datetime=\"")
578 if templ_7745c5c3_Err != nil {
579 return templ_7745c5c3_Err
580 }
581 var templ_7745c5c3_Var30 string
582 templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
583 if templ_7745c5c3_Err != nil {
584 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 122, Col: 30}
585 }
586 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var30)
587 if templ_7745c5c3_Err != nil {
588 return templ_7745c5c3_Err
589 }
590 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "\" title=\"")
591 if templ_7745c5c3_Err != nil {
592 return templ_7745c5c3_Err
593 }
594 var templ_7745c5c3_Var31 string
595 templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
596 if templ_7745c5c3_Err != nil {
597 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 122, Col: 49}
598 }
599 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var31)
600 if templ_7745c5c3_Err != nil {
601 return templ_7745c5c3_Err
602 }
603 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "\">")
604 if templ_7745c5c3_Err != nil {
605 return templ_7745c5c3_Err
606 }
607 var templ_7745c5c3_Var32 string
608 templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(r.When)
609 if templ_7745c5c3_Err != nil {
610 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 122, Col: 60}
611 }
612 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32))
613 if templ_7745c5c3_Err != nil {
614 return templ_7745c5c3_Err
615 }
616 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "</time>")
617 if templ_7745c5c3_Err != nil {
618 return templ_7745c5c3_Err
619 }
620 var templ_7745c5c3_Var33 string
621 templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinStringErrs(" · ")
622 if templ_7745c5c3_Err != nil {
623 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 122, Col: 77}
624 }
625 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33))
626 if templ_7745c5c3_Err != nil {
627 return templ_7745c5c3_Err
628 }
629 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, " <a href=\"")
630 if templ_7745c5c3_Err != nil {
631 return templ_7745c5c3_Err
632 }
633 var templ_7745c5c3_Var34 templ.SafeURL
634 templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.AllHref))
635 if templ_7745c5c3_Err != nil {
636 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 123, Col: 39}
637 }
638 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34))
639 if templ_7745c5c3_Err != nil {
640 return templ_7745c5c3_Err
641 }
642 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "\">all releases</a></dd>")
643 if templ_7745c5c3_Err != nil {
644 return templ_7745c5c3_Err
645 }
646 }
647 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "</dl></section>")
648 if templ_7745c5c3_Err != nil {
649 return templ_7745c5c3_Err
650 }
651 if len(p.Recent) > 0 {
652 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "<section aria-labelledby=\"r-recent\"><h2 id=\"r-recent\">Recent commits <a href=\"")
653 if templ_7745c5c3_Err != nil {
654 return templ_7745c5c3_Err
655 }
656 var templ_7745c5c3_Var35 templ.SafeURL
657 templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.AllHref))
658 if templ_7745c5c3_Err != nil {
659 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 129, Col: 105}
660 }
661 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var35))
662 if templ_7745c5c3_Err != nil {
663 return templ_7745c5c3_Err
664 }
665 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "\">View all</a></h2>")
666 if templ_7745c5c3_Err != nil {
667 return templ_7745c5c3_Err
668 }
669 templ_7745c5c3_Err = CommitRows(p.Recent).Render(ctx, templ_7745c5c3_Buffer)
670 if templ_7745c5c3_Err != nil {
671 return templ_7745c5c3_Err
672 }
673 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "</section>")
674 if templ_7745c5c3_Err != nil {
675 return templ_7745c5c3_Err
676 }
677 }
678 if p.Actions != nil {
679 templ_7745c5c3_Err = RecentActionsBlock(*p.Actions).Render(ctx, templ_7745c5c3_Buffer)
680 if templ_7745c5c3_Err != nil {
681 return templ_7745c5c3_Err
682 }
683 }
684 if len(p.Outline) > 0 && p.Readme != nil {
685 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "<section aria-labelledby=\"r-outline\"><h2 id=\"r-outline\">On this page</h2>")
686 if templ_7745c5c3_Err != nil {
687 return templ_7745c5c3_Err
688 }
689 templ_7745c5c3_Err = Outline(p.Outline).Render(ctx, templ_7745c5c3_Buffer)
690 if templ_7745c5c3_Err != nil {
691 return templ_7745c5c3_Err
692 }
693 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "</section>")
694 if templ_7745c5c3_Err != nil {
695 return templ_7745c5c3_Err
696 }
697 }
698 return nil
699 })
700}
701
702// Refs lists the branches and tags of a repository.
703func Refs(l Layout, p RefsPage) templ.Component {
704 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
705 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
706 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
707 return templ_7745c5c3_CtxErr
708 }
709 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
710 if !templ_7745c5c3_IsBuffer {
711 defer func() {
712 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
713 if templ_7745c5c3_Err == nil {
714 templ_7745c5c3_Err = templ_7745c5c3_BufErr
715 }
716 }()
717 }
718 ctx = templ.InitializeContext(ctx)
719 templ_7745c5c3_Var36 := templ.GetChildren(ctx)
720 if templ_7745c5c3_Var36 == nil {
721 templ_7745c5c3_Var36 = templ.NopComponent
722 }
723 ctx = templ.ClearChildren(ctx)
724 templ_7745c5c3_Var37 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
725 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
726 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
727 if !templ_7745c5c3_IsBuffer {
728 defer func() {
729 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
730 if templ_7745c5c3_Err == nil {
731 templ_7745c5c3_Err = templ_7745c5c3_BufErr
732 }
733 }()
734 }
735 ctx = templ.InitializeContext(ctx)
736 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "<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>")
737 if templ_7745c5c3_Err != nil {
738 return templ_7745c5c3_Err
739 }
740 templ_7745c5c3_Err = RefsBody(p).Render(ctx, templ_7745c5c3_Buffer)
741 if templ_7745c5c3_Err != nil {
742 return templ_7745c5c3_Err
743 }
744 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "</table>")
745 if templ_7745c5c3_Err != nil {
746 return templ_7745c5c3_Err
747 }
748 if p.Note != "" {
749 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "<p class=\"note\">")
750 if templ_7745c5c3_Err != nil {
751 return templ_7745c5c3_Err
752 }
753 var templ_7745c5c3_Var38 string
754 templ_7745c5c3_Var38, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note)
755 if templ_7745c5c3_Err != nil {
756 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 162, Col: 27}
757 }
758 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var38))
759 if templ_7745c5c3_Err != nil {
760 return templ_7745c5c3_Err
761 }
762 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "</p>")
763 if templ_7745c5c3_Err != nil {
764 return templ_7745c5c3_Err
765 }
766 }
767 return nil
768 })
769 templ_7745c5c3_Err = Shell(l, refsRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var37), templ_7745c5c3_Buffer)
770 if templ_7745c5c3_Err != nil {
771 return templ_7745c5c3_Err
772 }
773 return nil
774 })
775}
776
777func refRow(kind string, r RefRow) templ.Component {
778 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
779 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
780 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
781 return templ_7745c5c3_CtxErr
782 }
783 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
784 if !templ_7745c5c3_IsBuffer {
785 defer func() {
786 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
787 if templ_7745c5c3_Err == nil {
788 templ_7745c5c3_Err = templ_7745c5c3_BufErr
789 }
790 }()
791 }
792 ctx = templ.InitializeContext(ctx)
793 templ_7745c5c3_Var39 := templ.GetChildren(ctx)
794 if templ_7745c5c3_Var39 == nil {
795 templ_7745c5c3_Var39 = templ.NopComponent
796 }
797 ctx = templ.ClearChildren(ctx)
798 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "<tr")
799 if templ_7745c5c3_Err != nil {
800 return templ_7745c5c3_Err
801 }
802 if r.Cursor {
803 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, " data-cursor")
804 if templ_7745c5c3_Err != nil {
805 return templ_7745c5c3_Err
806 }
807 }
808 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "><td class=\"c-kind mute\">")
809 if templ_7745c5c3_Err != nil {
810 return templ_7745c5c3_Err
811 }
812 var templ_7745c5c3_Var40 string
813 templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.JoinStringErrs(kind)
814 if templ_7745c5c3_Err != nil {
815 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 169, Col: 32}
816 }
817 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var40))
818 if templ_7745c5c3_Err != nil {
819 return templ_7745c5c3_Err
820 }
821 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "</td><td class=\"c-name\"><a href=\"")
822 if templ_7745c5c3_Err != nil {
823 return templ_7745c5c3_Err
824 }
825 var templ_7745c5c3_Var41 templ.SafeURL
826 templ_7745c5c3_Var41, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href))
827 if templ_7745c5c3_Err != nil {
828 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 171, Col: 34}
829 }
830 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var41))
831 if templ_7745c5c3_Err != nil {
832 return templ_7745c5c3_Err
833 }
834 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "\">")
835 if templ_7745c5c3_Err != nil {
836 return templ_7745c5c3_Err
837 }
838 var templ_7745c5c3_Var42 string
839 templ_7745c5c3_Var42, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name)
840 if templ_7745c5c3_Err != nil {
841 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 171, Col: 45}
842 }
843 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var42))
844 if templ_7745c5c3_Err != nil {
845 return templ_7745c5c3_Err
846 }
847 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, "</a> ")
848 if templ_7745c5c3_Err != nil {
849 return templ_7745c5c3_Err
850 }
851 if r.Default {
852 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "<span class=\"pill\">default</span>")
853 if templ_7745c5c3_Err != nil {
854 return templ_7745c5c3_Err
855 }
856 }
857 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "</td><td class=\"c-sha\">")
858 if templ_7745c5c3_Err != nil {
859 return templ_7745c5c3_Err
860 }
861 if r.CHref != "" {
862 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, "<a href=\"")
863 if templ_7745c5c3_Err != nil {
864 return templ_7745c5c3_Err
865 }
866 var templ_7745c5c3_Var43 templ.SafeURL
867 templ_7745c5c3_Var43, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.CHref))
868 if templ_7745c5c3_Err != nil {
869 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 178, Col: 36}
870 }
871 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var43))
872 if templ_7745c5c3_Err != nil {
873 return templ_7745c5c3_Err
874 }
875 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, "\">")
876 if templ_7745c5c3_Err != nil {
877 return templ_7745c5c3_Err
878 }
879 var templ_7745c5c3_Var44 string
880 templ_7745c5c3_Var44, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short)
881 if templ_7745c5c3_Err != nil {
882 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 178, Col: 48}
883 }
884 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var44))
885 if templ_7745c5c3_Err != nil {
886 return templ_7745c5c3_Err
887 }
888 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "</a>")
889 if templ_7745c5c3_Err != nil {
890 return templ_7745c5c3_Err
891 }
892 } else {
893 var templ_7745c5c3_Var45 string
894 templ_7745c5c3_Var45, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short)
895 if templ_7745c5c3_Err != nil {
896 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 180, Col: 13}
897 }
898 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var45))
899 if templ_7745c5c3_Err != nil {
900 return templ_7745c5c3_Err
901 }
902 }
903 templ_7745c5c3_Err = CommitChecks(r.Checks).Render(ctx, templ_7745c5c3_Buffer)
904 if templ_7745c5c3_Err != nil {
905 return templ_7745c5c3_Err
906 }
907 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "</td><td class=\"c-sub\">")
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.Subject)
913 if templ_7745c5c3_Err != nil {
914 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 184, Col: 31}
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, 72, "</td><td class=\"c-when dim\">")
921 if templ_7745c5c3_Err != nil {
922 return templ_7745c5c3_Err
923 }
924 if r.WhenAt != "" {
925 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "<time datetime=\"")
926 if templ_7745c5c3_Err != nil {
927 return templ_7745c5c3_Err
928 }
929 var templ_7745c5c3_Var47 string
930 templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
931 if templ_7745c5c3_Err != nil {
932 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 187, Col: 29}
933 }
934 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var47)
935 if templ_7745c5c3_Err != nil {
936 return templ_7745c5c3_Err
937 }
938 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, "\" title=\"")
939 if templ_7745c5c3_Err != nil {
940 return templ_7745c5c3_Err
941 }
942 var templ_7745c5c3_Var48 string
943 templ_7745c5c3_Var48, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
944 if templ_7745c5c3_Err != nil {
945 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 187, Col: 48}
946 }
947 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var48)
948 if templ_7745c5c3_Err != nil {
949 return templ_7745c5c3_Err
950 }
951 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 75, "\">")
952 if templ_7745c5c3_Err != nil {
953 return templ_7745c5c3_Err
954 }
955 var templ_7745c5c3_Var49 string
956 templ_7745c5c3_Var49, templ_7745c5c3_Err = templ.JoinStringErrs(r.When)
957 if templ_7745c5c3_Err != nil {
958 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 187, Col: 59}
959 }
960 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var49))
961 if templ_7745c5c3_Err != nil {
962 return templ_7745c5c3_Err
963 }
964 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 76, "</time>")
965 if templ_7745c5c3_Err != nil {
966 return templ_7745c5c3_Err
967 }
968 }
969 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 77, "</td></tr>")
970 if templ_7745c5c3_Err != nil {
971 return templ_7745c5c3_Err
972 }
973 return nil
974 })
975}
976
977func refsRail(p RefsPage) templ.Component {
978 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
979 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
980 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
981 return templ_7745c5c3_CtxErr
982 }
983 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
984 if !templ_7745c5c3_IsBuffer {
985 defer func() {
986 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
987 if templ_7745c5c3_Err == nil {
988 templ_7745c5c3_Err = templ_7745c5c3_BufErr
989 }
990 }()
991 }
992 ctx = templ.InitializeContext(ctx)
993 templ_7745c5c3_Var50 := templ.GetChildren(ctx)
994 if templ_7745c5c3_Var50 == nil {
995 templ_7745c5c3_Var50 = templ.NopComponent
996 }
997 ctx = templ.ClearChildren(ctx)
998 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 78, "<section aria-labelledby=\"r-refs\"><h2 id=\"r-refs\">Overview</h2>")
999 if templ_7745c5c3_Err != nil {
1000 return templ_7745c5c3_Err
1001 }
1002 templ_7745c5c3_Err = RefsKV(p).Render(ctx, templ_7745c5c3_Buffer)
1003 if templ_7745c5c3_Err != nil {
1004 return templ_7745c5c3_Err
1005 }
1006 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 79, "</section>")
1007 if templ_7745c5c3_Err != nil {
1008 return templ_7745c5c3_Err
1009 }
1010 return nil
1011 })
1012}
1013
1014// State is a 404, 500 or empty-repository page inside the normal shell.
1015func State(l Layout, p StatePage) templ.Component {
1016 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1017 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1018 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1019 return templ_7745c5c3_CtxErr
1020 }
1021 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1022 if !templ_7745c5c3_IsBuffer {
1023 defer func() {
1024 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1025 if templ_7745c5c3_Err == nil {
1026 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1027 }
1028 }()
1029 }
1030 ctx = templ.InitializeContext(ctx)
1031 templ_7745c5c3_Var51 := templ.GetChildren(ctx)
1032 if templ_7745c5c3_Var51 == nil {
1033 templ_7745c5c3_Var51 = templ.NopComponent
1034 }
1035 ctx = templ.ClearChildren(ctx)
1036 templ_7745c5c3_Var52 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1037 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1038 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1039 if !templ_7745c5c3_IsBuffer {
1040 defer func() {
1041 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1042 if templ_7745c5c3_Err == nil {
1043 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1044 }
1045 }()
1046 }
1047 ctx = templ.InitializeContext(ctx)
1048 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 80, "<section class=\"state\" aria-labelledby=\"state-title\"><p class=\"eyebrow\">")
1049 if templ_7745c5c3_Err != nil {
1050 return templ_7745c5c3_Err
1051 }
1052 var templ_7745c5c3_Var53 string
1053 templ_7745c5c3_Var53, templ_7745c5c3_Err = templ.JoinStringErrs(p.Code)
1054 if templ_7745c5c3_Err != nil {
1055 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 204, Col: 30}
1056 }
1057 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var53))
1058 if templ_7745c5c3_Err != nil {
1059 return templ_7745c5c3_Err
1060 }
1061 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 81, "</p><h1 id=\"state-title\">")
1062 if templ_7745c5c3_Err != nil {
1063 return templ_7745c5c3_Err
1064 }
1065 var templ_7745c5c3_Var54 string
1066 templ_7745c5c3_Var54, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title)
1067 if templ_7745c5c3_Err != nil {
1068 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 205, Col: 33}
1069 }
1070 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var54))
1071 if templ_7745c5c3_Err != nil {
1072 return templ_7745c5c3_Err
1073 }
1074 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 82, "</h1>")
1075 if templ_7745c5c3_Err != nil {
1076 return templ_7745c5c3_Err
1077 }
1078 for _, line := range p.Lines {
1079 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 83, "<p class=\"dim\">")
1080 if templ_7745c5c3_Err != nil {
1081 return templ_7745c5c3_Err
1082 }
1083 var templ_7745c5c3_Var55 string
1084 templ_7745c5c3_Var55, templ_7745c5c3_Err = templ.JoinStringErrs(line)
1085 if templ_7745c5c3_Err != nil {
1086 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 207, Col: 25}
1087 }
1088 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var55))
1089 if templ_7745c5c3_Err != nil {
1090 return templ_7745c5c3_Err
1091 }
1092 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 84, "</p>")
1093 if templ_7745c5c3_Err != nil {
1094 return templ_7745c5c3_Err
1095 }
1096 }
1097 if p.Clone != nil {
1098 templ_7745c5c3_Err = CloneBlock(*p.Clone).Render(ctx, templ_7745c5c3_Buffer)
1099 if templ_7745c5c3_Err != nil {
1100 return templ_7745c5c3_Err
1101 }
1102 }
1103 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 85, "<p class=\"state-back\">")
1104 if templ_7745c5c3_Err != nil {
1105 return templ_7745c5c3_Err
1106 }
1107 for _, b := range p.Back {
1108 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 86, "<a href=\"")
1109 if templ_7745c5c3_Err != nil {
1110 return templ_7745c5c3_Err
1111 }
1112 var templ_7745c5c3_Var56 templ.SafeURL
1113 templ_7745c5c3_Var56, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(b.Href))
1114 if templ_7745c5c3_Err != nil {
1115 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 214, Col: 36}
1116 }
1117 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var56))
1118 if templ_7745c5c3_Err != nil {
1119 return templ_7745c5c3_Err
1120 }
1121 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 87, "\">")
1122 if templ_7745c5c3_Err != nil {
1123 return templ_7745c5c3_Err
1124 }
1125 var templ_7745c5c3_Var57 string
1126 templ_7745c5c3_Var57, templ_7745c5c3_Err = templ.JoinStringErrs(b.Label)
1127 if templ_7745c5c3_Err != nil {
1128 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 214, Col: 48}
1129 }
1130 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var57))
1131 if templ_7745c5c3_Err != nil {
1132 return templ_7745c5c3_Err
1133 }
1134 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 88, "</a>")
1135 if templ_7745c5c3_Err != nil {
1136 return templ_7745c5c3_Err
1137 }
1138 }
1139 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 89, "</p></section>")
1140 if templ_7745c5c3_Err != nil {
1141 return templ_7745c5c3_Err
1142 }
1143 return nil
1144 })
1145 templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var52), templ_7745c5c3_Buffer)
1146 if templ_7745c5c3_Err != nil {
1147 return templ_7745c5c3_Err
1148 }
1149 return nil
1150 })
1151}
1152
1153// Login signs the browser in with a login link. Opening the link consumes
1154// nothing; only this form does. ermite.js submits it as soon as a browser
1155// shows the page (data-autosubmit): link previews and prefetchers run no
1156// script, so they still cannot use the link. Without scripts the owner
1157// clicks the button.
1158func Login(l Layout, p LoginPage) templ.Component {
1159 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1160 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1161 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1162 return templ_7745c5c3_CtxErr
1163 }
1164 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1165 if !templ_7745c5c3_IsBuffer {
1166 defer func() {
1167 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1168 if templ_7745c5c3_Err == nil {
1169 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1170 }
1171 }()
1172 }
1173 ctx = templ.InitializeContext(ctx)
1174 templ_7745c5c3_Var58 := templ.GetChildren(ctx)
1175 if templ_7745c5c3_Var58 == nil {
1176 templ_7745c5c3_Var58 = templ.NopComponent
1177 }
1178 ctx = templ.ClearChildren(ctx)
1179 templ_7745c5c3_Var59 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1180 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1181 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1182 if !templ_7745c5c3_IsBuffer {
1183 defer func() {
1184 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1185 if templ_7745c5c3_Err == nil {
1186 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1187 }
1188 }()
1189 }
1190 ctx = templ.InitializeContext(ctx)
1191 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 90, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">")
1192 if templ_7745c5c3_Err != nil {
1193 return templ_7745c5c3_Err
1194 }
1195 var templ_7745c5c3_Var60 string
1196 templ_7745c5c3_Var60, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title)
1197 if templ_7745c5c3_Err != nil {
1198 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 229, Col: 33}
1199 }
1200 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var60))
1201 if templ_7745c5c3_Err != nil {
1202 return templ_7745c5c3_Err
1203 }
1204 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, "</h1>")
1205 if templ_7745c5c3_Err != nil {
1206 return templ_7745c5c3_Err
1207 }
1208 for _, line := range p.Lines {
1209 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 92, "<p class=\"dim\">")
1210 if templ_7745c5c3_Err != nil {
1211 return templ_7745c5c3_Err
1212 }
1213 var templ_7745c5c3_Var61 string
1214 templ_7745c5c3_Var61, templ_7745c5c3_Err = templ.JoinStringErrs(line)
1215 if templ_7745c5c3_Err != nil {
1216 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 231, Col: 25}
1217 }
1218 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var61))
1219 if templ_7745c5c3_Err != nil {
1220 return templ_7745c5c3_Err
1221 }
1222 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 93, "</p>")
1223 if templ_7745c5c3_Err != nil {
1224 return templ_7745c5c3_Err
1225 }
1226 }
1227 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 94, "<form class=\"state-act\" method=\"post\" action=\"")
1228 if templ_7745c5c3_Err != nil {
1229 return templ_7745c5c3_Err
1230 }
1231 var templ_7745c5c3_Var62 templ.SafeURL
1232 templ_7745c5c3_Var62, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Action))
1233 if templ_7745c5c3_Err != nil {
1234 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 233, Col: 73}
1235 }
1236 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var62))
1237 if templ_7745c5c3_Err != nil {
1238 return templ_7745c5c3_Err
1239 }
1240 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 95, "\" data-autosubmit><button type=\"submit\" class=\"btn primary\">")
1241 if templ_7745c5c3_Err != nil {
1242 return templ_7745c5c3_Err
1243 }
1244 var templ_7745c5c3_Var63 string
1245 templ_7745c5c3_Var63, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button)
1246 if templ_7745c5c3_Err != nil {
1247 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 234, Col: 56}
1248 }
1249 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var63))
1250 if templ_7745c5c3_Err != nil {
1251 return templ_7745c5c3_Err
1252 }
1253 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 96, "</button></form><p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>")
1254 if templ_7745c5c3_Err != nil {
1255 return templ_7745c5c3_Err
1256 }
1257 return nil
1258 })
1259 templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var59), templ_7745c5c3_Buffer)
1260 if templ_7745c5c3_Err != nil {
1261 return templ_7745c5c3_Err
1262 }
1263 return nil
1264 })
1265}
1266
1267// PasskeyLogin is the sign-in page: a button the script (passkey.js) drives.
1268// Without script the button is hidden and the page says what to do instead.
1269func PasskeyLogin(l Layout, p PasskeyLoginPage) templ.Component {
1270 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1271 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1272 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1273 return templ_7745c5c3_CtxErr
1274 }
1275 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1276 if !templ_7745c5c3_IsBuffer {
1277 defer func() {
1278 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1279 if templ_7745c5c3_Err == nil {
1280 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1281 }
1282 }()
1283 }
1284 ctx = templ.InitializeContext(ctx)
1285 templ_7745c5c3_Var64 := templ.GetChildren(ctx)
1286 if templ_7745c5c3_Var64 == nil {
1287 templ_7745c5c3_Var64 = templ.NopComponent
1288 }
1289 ctx = templ.ClearChildren(ctx)
1290 templ_7745c5c3_Var65 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1291 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1292 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1293 if !templ_7745c5c3_IsBuffer {
1294 defer func() {
1295 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1296 if templ_7745c5c3_Err == nil {
1297 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1298 }
1299 }()
1300 }
1301 ctx = templ.InitializeContext(ctx)
1302 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 97, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">")
1303 if templ_7745c5c3_Err != nil {
1304 return templ_7745c5c3_Err
1305 }
1306 var templ_7745c5c3_Var66 string
1307 templ_7745c5c3_Var66, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title)
1308 if templ_7745c5c3_Err != nil {
1309 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 246, Col: 33}
1310 }
1311 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var66))
1312 if templ_7745c5c3_Err != nil {
1313 return templ_7745c5c3_Err
1314 }
1315 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 98, "</h1><form class=\"state-act\" data-js data-passkey-form><button type=\"submit\" class=\"btn primary\" data-passkey=\"login\" data-begin=\"")
1316 if templ_7745c5c3_Err != nil {
1317 return templ_7745c5c3_Err
1318 }
1319 var templ_7745c5c3_Var67 string
1320 templ_7745c5c3_Var67, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Begin)
1321 if templ_7745c5c3_Err != nil {
1322 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 248, Col: 87}
1323 }
1324 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var67)
1325 if templ_7745c5c3_Err != nil {
1326 return templ_7745c5c3_Err
1327 }
1328 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, "\" data-finish=\"")
1329 if templ_7745c5c3_Err != nil {
1330 return templ_7745c5c3_Err
1331 }
1332 var templ_7745c5c3_Var68 string
1333 templ_7745c5c3_Var68, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Finish)
1334 if templ_7745c5c3_Err != nil {
1335 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 248, Col: 112}
1336 }
1337 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var68)
1338 if templ_7745c5c3_Err != nil {
1339 return templ_7745c5c3_Err
1340 }
1341 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 100, "\">")
1342 if templ_7745c5c3_Err != nil {
1343 return templ_7745c5c3_Err
1344 }
1345 var templ_7745c5c3_Var69 string
1346 templ_7745c5c3_Var69, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button)
1347 if templ_7745c5c3_Err != nil {
1348 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 248, Col: 125}
1349 }
1350 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var69))
1351 if templ_7745c5c3_Err != nil {
1352 return templ_7745c5c3_Err
1353 }
1354 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 101, "</button></form><p class=\"dim\" role=\"status\" aria-live=\"polite\" data-passkey-status></p>")
1355 if templ_7745c5c3_Err != nil {
1356 return templ_7745c5c3_Err
1357 }
1358 for _, line := range p.Lines {
1359 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 102, "<p class=\"dim\">")
1360 if templ_7745c5c3_Err != nil {
1361 return templ_7745c5c3_Err
1362 }
1363 var templ_7745c5c3_Var70 string
1364 templ_7745c5c3_Var70, templ_7745c5c3_Err = templ.JoinStringErrs(line)
1365 if templ_7745c5c3_Err != nil {
1366 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 252, Col: 25}
1367 }
1368 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var70))
1369 if templ_7745c5c3_Err != nil {
1370 return templ_7745c5c3_Err
1371 }
1372 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 103, "</p>")
1373 if templ_7745c5c3_Err != nil {
1374 return templ_7745c5c3_Err
1375 }
1376 }
1377 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 104, "<p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>")
1378 if templ_7745c5c3_Err != nil {
1379 return templ_7745c5c3_Err
1380 }
1381 return nil
1382 })
1383 templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var65), templ_7745c5c3_Buffer)
1384 if templ_7745c5c3_Err != nil {
1385 return templ_7745c5c3_Err
1386 }
1387 return nil
1388 })
1389}
1390
1391// Passkeys lists the owner's passkeys, removes them and adds one.
1392func Passkeys(l Layout, p PasskeysPage) templ.Component {
1393 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1394 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1395 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1396 return templ_7745c5c3_CtxErr
1397 }
1398 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1399 if !templ_7745c5c3_IsBuffer {
1400 defer func() {
1401 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1402 if templ_7745c5c3_Err == nil {
1403 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1404 }
1405 }()
1406 }
1407 ctx = templ.InitializeContext(ctx)
1408 templ_7745c5c3_Var71 := templ.GetChildren(ctx)
1409 if templ_7745c5c3_Var71 == nil {
1410 templ_7745c5c3_Var71 = templ.NopComponent
1411 }
1412 ctx = templ.ClearChildren(ctx)
1413 templ_7745c5c3_Var72 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1414 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1415 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1416 if !templ_7745c5c3_IsBuffer {
1417 defer func() {
1418 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1419 if templ_7745c5c3_Err == nil {
1420 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1421 }
1422 }()
1423 }
1424 ctx = templ.InitializeContext(ctx)
1425 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 105, "<h2 class=\"rule-h\"><span>Passkeys</span><span class=\"count\">")
1426 if templ_7745c5c3_Err != nil {
1427 return templ_7745c5c3_Err
1428 }
1429 var templ_7745c5c3_Var73 string
1430 templ_7745c5c3_Var73, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.Rows)))
1431 if templ_7745c5c3_Err != nil {
1432 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 262, Col: 81}
1433 }
1434 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var73))
1435 if templ_7745c5c3_Err != nil {
1436 return templ_7745c5c3_Err
1437 }
1438 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 106, "</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>")
1439 if templ_7745c5c3_Err != nil {
1440 return templ_7745c5c3_Err
1441 }
1442 if len(p.Rows) > 0 {
1443 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 107, "<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>")
1444 if templ_7745c5c3_Err != nil {
1445 return templ_7745c5c3_Err
1446 }
1447 for _, r := range p.Rows {
1448 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 108, "<tr><td class=\"c-name\">")
1449 if templ_7745c5c3_Err != nil {
1450 return templ_7745c5c3_Err
1451 }
1452 var templ_7745c5c3_Var74 string
1453 templ_7745c5c3_Var74, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name)
1454 if templ_7745c5c3_Err != nil {
1455 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 278, Col: 34}
1456 }
1457 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var74))
1458 if templ_7745c5c3_Err != nil {
1459 return templ_7745c5c3_Err
1460 }
1461 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 109, "</td><td class=\"c-when nowrap\"><time")
1462 if templ_7745c5c3_Err != nil {
1463 return templ_7745c5c3_Err
1464 }
1465 if r.CreatedAt != "" {
1466 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 110, " datetime=\"")
1467 if templ_7745c5c3_Err != nil {
1468 return templ_7745c5c3_Err
1469 }
1470 var templ_7745c5c3_Var75 string
1471 templ_7745c5c3_Var75, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.CreatedAt)
1472 if templ_7745c5c3_Err != nil {
1473 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 282, Col: 32}
1474 }
1475 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var75)
1476 if templ_7745c5c3_Err != nil {
1477 return templ_7745c5c3_Err
1478 }
1479 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 111, "\"")
1480 if templ_7745c5c3_Err != nil {
1481 return templ_7745c5c3_Err
1482 }
1483 }
1484 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 112, ">")
1485 if templ_7745c5c3_Err != nil {
1486 return templ_7745c5c3_Err
1487 }
1488 var templ_7745c5c3_Var76 string
1489 templ_7745c5c3_Var76, templ_7745c5c3_Err = templ.JoinStringErrs(r.Created)
1490 if templ_7745c5c3_Err != nil {
1491 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 284, Col: 20}
1492 }
1493 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var76))
1494 if templ_7745c5c3_Err != nil {
1495 return templ_7745c5c3_Err
1496 }
1497 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 113, "</time></td><td class=\"c-when nowrap\"><time")
1498 if templ_7745c5c3_Err != nil {
1499 return templ_7745c5c3_Err
1500 }
1501 if r.LastUsedAt != "" {
1502 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 114, " datetime=\"")
1503 if templ_7745c5c3_Err != nil {
1504 return templ_7745c5c3_Err
1505 }
1506 var templ_7745c5c3_Var77 string
1507 templ_7745c5c3_Var77, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.LastUsedAt)
1508 if templ_7745c5c3_Err != nil {
1509 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 289, Col: 33}
1510 }
1511 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var77)
1512 if templ_7745c5c3_Err != nil {
1513 return templ_7745c5c3_Err
1514 }
1515 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 115, "\"")
1516 if templ_7745c5c3_Err != nil {
1517 return templ_7745c5c3_Err
1518 }
1519 }
1520 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 116, ">")
1521 if templ_7745c5c3_Err != nil {
1522 return templ_7745c5c3_Err
1523 }
1524 var templ_7745c5c3_Var78 string
1525 templ_7745c5c3_Var78, templ_7745c5c3_Err = templ.JoinStringErrs(r.LastUsed)
1526 if templ_7745c5c3_Err != nil {
1527 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 291, Col: 21}
1528 }
1529 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var78))
1530 if templ_7745c5c3_Err != nil {
1531 return templ_7745c5c3_Err
1532 }
1533 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 117, "</time></td><td class=\"c-sync\">")
1534 if templ_7745c5c3_Err != nil {
1535 return templ_7745c5c3_Err
1536 }
1537 if r.Synced {
1538 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 118, "yes")
1539 if templ_7745c5c3_Err != nil {
1540 return templ_7745c5c3_Err
1541 }
1542 } else {
1543 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 119, "no")
1544 if templ_7745c5c3_Err != nil {
1545 return templ_7745c5c3_Err
1546 }
1547 }
1548 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 120, "</td><td class=\"c-act\"><form method=\"post\" action=\"")
1549 if templ_7745c5c3_Err != nil {
1550 return templ_7745c5c3_Err
1551 }
1552 var templ_7745c5c3_Var79 templ.SafeURL
1553 templ_7745c5c3_Var79, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Remove))
1554 if templ_7745c5c3_Err != nil {
1555 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 301, Col: 60}
1556 }
1557 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var79))
1558 if templ_7745c5c3_Err != nil {
1559 return templ_7745c5c3_Err
1560 }
1561 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 121, "\"><button type=\"submit\" class=\"btn danger\" aria-label=\"")
1562 if templ_7745c5c3_Err != nil {
1563 return templ_7745c5c3_Err
1564 }
1565 var templ_7745c5c3_Var80 string
1566 templ_7745c5c3_Var80, templ_7745c5c3_Err = templ.ResolveAttributeValue("Remove passkey " + r.Name)
1567 if templ_7745c5c3_Err != nil {
1568 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 302, Col: 89}
1569 }
1570 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var80)
1571 if templ_7745c5c3_Err != nil {
1572 return templ_7745c5c3_Err
1573 }
1574 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 122, "\">Remove</button></form></td></tr>")
1575 if templ_7745c5c3_Err != nil {
1576 return templ_7745c5c3_Err
1577 }
1578 }
1579 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 123, "</tbody></table>")
1580 if templ_7745c5c3_Err != nil {
1581 return templ_7745c5c3_Err
1582 }
1583 } else {
1584 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 124, "<p class=\"lede dim\">no passkeys yet.</p>")
1585 if templ_7745c5c3_Err != nil {
1586 return templ_7745c5c3_Err
1587 }
1588 }
1589 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 125, " ")
1590 if templ_7745c5c3_Err != nil {
1591 return templ_7745c5c3_Err
1592 }
1593 if p.Full {
1594 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 126, "<p class=\"dim\">")
1595 if templ_7745c5c3_Err != nil {
1596 return templ_7745c5c3_Err
1597 }
1598 var templ_7745c5c3_Var81 string
1599 templ_7745c5c3_Var81, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Max))
1600 if templ_7745c5c3_Err != nil {
1601 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 313, Col: 31}
1602 }
1603 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var81))
1604 if templ_7745c5c3_Err != nil {
1605 return templ_7745c5c3_Err
1606 }
1607 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 127, " passkeys are registered, the most there can be. Remove one to add another.</p>")
1608 if templ_7745c5c3_Err != nil {
1609 return templ_7745c5c3_Err
1610 }
1611 } else {
1612 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 128, "<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=\"")
1613 if templ_7745c5c3_Err != nil {
1614 return templ_7745c5c3_Err
1615 }
1616 var templ_7745c5c3_Var82 string
1617 templ_7745c5c3_Var82, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Begin)
1618 if templ_7745c5c3_Err != nil {
1619 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 318, Col: 90}
1620 }
1621 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var82)
1622 if templ_7745c5c3_Err != nil {
1623 return templ_7745c5c3_Err
1624 }
1625 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 129, "\" data-finish=\"")
1626 if templ_7745c5c3_Err != nil {
1627 return templ_7745c5c3_Err
1628 }
1629 var templ_7745c5c3_Var83 string
1630 templ_7745c5c3_Var83, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Finish)
1631 if templ_7745c5c3_Err != nil {
1632 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 318, Col: 115}
1633 }
1634 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var83)
1635 if templ_7745c5c3_Err != nil {
1636 return templ_7745c5c3_Err
1637 }
1638 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 130, "\">Add a passkey</button></form>")
1639 if templ_7745c5c3_Err != nil {
1640 return templ_7745c5c3_Err
1641 }
1642 }
1643 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 131, " <p class=\"dim\" role=\"status\" aria-live=\"polite\" data-passkey-status></p>")
1644 if templ_7745c5c3_Err != nil {
1645 return templ_7745c5c3_Err
1646 }
1647 return nil
1648 })
1649 templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var72), templ_7745c5c3_Buffer)
1650 if templ_7745c5c3_Err != nil {
1651 return templ_7745c5c3_Err
1652 }
1653 return nil
1654 })
1655}
1656
1657var _ = templruntime.GeneratedTemplate