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