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 p.Actions != nil {
435 templ_7745c5c3_Err = RecentActionsBlock(*p.Actions).Render(ctx, templ_7745c5c3_Buffer)
436 if templ_7745c5c3_Err != nil {
437 return templ_7745c5c3_Err
438 }
439 }
440 if len(p.Outline) > 0 && p.Readme != nil {
441 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "<section aria-labelledby=\"r-outline\"><h2 id=\"r-outline\">On this page</h2>")
442 if templ_7745c5c3_Err != nil {
443 return templ_7745c5c3_Err
444 }
445 templ_7745c5c3_Err = Outline(p.Outline).Render(ctx, templ_7745c5c3_Buffer)
446 if templ_7745c5c3_Err != nil {
447 return templ_7745c5c3_Err
448 }
449 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "</section>")
450 if templ_7745c5c3_Err != nil {
451 return templ_7745c5c3_Err
452 }
453 }
454 return nil
455 })
456}
457
458// Refs lists the branches and tags of a repository.
459func Refs(l Layout, p RefsPage) templ.Component {
460 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
461 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
462 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
463 return templ_7745c5c3_CtxErr
464 }
465 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
466 if !templ_7745c5c3_IsBuffer {
467 defer func() {
468 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
469 if templ_7745c5c3_Err == nil {
470 templ_7745c5c3_Err = templ_7745c5c3_BufErr
471 }
472 }()
473 }
474 ctx = templ.InitializeContext(ctx)
475 templ_7745c5c3_Var22 := templ.GetChildren(ctx)
476 if templ_7745c5c3_Var22 == nil {
477 templ_7745c5c3_Var22 = templ.NopComponent
478 }
479 ctx = templ.ClearChildren(ctx)
480 templ_7745c5c3_Var23 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
481 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
482 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
483 if !templ_7745c5c3_IsBuffer {
484 defer func() {
485 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
486 if templ_7745c5c3_Err == nil {
487 templ_7745c5c3_Err = templ_7745c5c3_BufErr
488 }
489 }()
490 }
491 ctx = templ.InitializeContext(ctx)
492 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>")
493 if templ_7745c5c3_Err != nil {
494 return templ_7745c5c3_Err
495 }
496 templ_7745c5c3_Err = RefsBody(p).Render(ctx, templ_7745c5c3_Buffer)
497 if templ_7745c5c3_Err != nil {
498 return templ_7745c5c3_Err
499 }
500 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "</table>")
501 if templ_7745c5c3_Err != nil {
502 return templ_7745c5c3_Err
503 }
504 if p.Note != "" {
505 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "<p class=\"note\">")
506 if templ_7745c5c3_Err != nil {
507 return templ_7745c5c3_Err
508 }
509 var templ_7745c5c3_Var24 string
510 templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note)
511 if templ_7745c5c3_Err != nil {
512 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 113, Col: 27}
513 }
514 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var24))
515 if templ_7745c5c3_Err != nil {
516 return templ_7745c5c3_Err
517 }
518 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "</p>")
519 if templ_7745c5c3_Err != nil {
520 return templ_7745c5c3_Err
521 }
522 }
523 return nil
524 })
525 templ_7745c5c3_Err = Shell(l, refsRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var23), templ_7745c5c3_Buffer)
526 if templ_7745c5c3_Err != nil {
527 return templ_7745c5c3_Err
528 }
529 return nil
530 })
531}
532
533func refRow(kind string, r RefRow) templ.Component {
534 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
535 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
536 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
537 return templ_7745c5c3_CtxErr
538 }
539 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
540 if !templ_7745c5c3_IsBuffer {
541 defer func() {
542 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
543 if templ_7745c5c3_Err == nil {
544 templ_7745c5c3_Err = templ_7745c5c3_BufErr
545 }
546 }()
547 }
548 ctx = templ.InitializeContext(ctx)
549 templ_7745c5c3_Var25 := templ.GetChildren(ctx)
550 if templ_7745c5c3_Var25 == nil {
551 templ_7745c5c3_Var25 = templ.NopComponent
552 }
553 ctx = templ.ClearChildren(ctx)
554 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "<tr")
555 if templ_7745c5c3_Err != nil {
556 return templ_7745c5c3_Err
557 }
558 if r.Cursor {
559 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, " data-cursor")
560 if templ_7745c5c3_Err != nil {
561 return templ_7745c5c3_Err
562 }
563 }
564 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "><td class=\"cur\" aria-hidden=\"true\"></td><td class=\"c-kind mute\">")
565 if templ_7745c5c3_Err != nil {
566 return templ_7745c5c3_Err
567 }
568 var templ_7745c5c3_Var26 string
569 templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(kind)
570 if templ_7745c5c3_Err != nil {
571 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 121, Col: 32}
572 }
573 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26))
574 if templ_7745c5c3_Err != nil {
575 return templ_7745c5c3_Err
576 }
577 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "</td><td class=\"c-name\"><a href=\"")
578 if templ_7745c5c3_Err != nil {
579 return templ_7745c5c3_Err
580 }
581 var templ_7745c5c3_Var27 templ.SafeURL
582 templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href))
583 if templ_7745c5c3_Err != nil {
584 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 123, Col: 34}
585 }
586 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27))
587 if templ_7745c5c3_Err != nil {
588 return templ_7745c5c3_Err
589 }
590 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "\">")
591 if templ_7745c5c3_Err != nil {
592 return templ_7745c5c3_Err
593 }
594 var templ_7745c5c3_Var28 string
595 templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name)
596 if templ_7745c5c3_Err != nil {
597 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 123, Col: 45}
598 }
599 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var28))
600 if templ_7745c5c3_Err != nil {
601 return templ_7745c5c3_Err
602 }
603 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "</a> ")
604 if templ_7745c5c3_Err != nil {
605 return templ_7745c5c3_Err
606 }
607 if r.Default {
608 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "<span class=\"pill\">default</span>")
609 if templ_7745c5c3_Err != nil {
610 return templ_7745c5c3_Err
611 }
612 }
613 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "</td><td class=\"c-sha\">")
614 if templ_7745c5c3_Err != nil {
615 return templ_7745c5c3_Err
616 }
617 if r.CHref != "" {
618 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "<a href=\"")
619 if templ_7745c5c3_Err != nil {
620 return templ_7745c5c3_Err
621 }
622 var templ_7745c5c3_Var29 templ.SafeURL
623 templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.CHref))
624 if templ_7745c5c3_Err != nil {
625 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 130, Col: 36}
626 }
627 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var29))
628 if templ_7745c5c3_Err != nil {
629 return templ_7745c5c3_Err
630 }
631 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "\">")
632 if templ_7745c5c3_Err != nil {
633 return templ_7745c5c3_Err
634 }
635 var templ_7745c5c3_Var30 string
636 templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short)
637 if templ_7745c5c3_Err != nil {
638 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 130, Col: 48}
639 }
640 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30))
641 if templ_7745c5c3_Err != nil {
642 return templ_7745c5c3_Err
643 }
644 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "</a>")
645 if templ_7745c5c3_Err != nil {
646 return templ_7745c5c3_Err
647 }
648 } else {
649 var templ_7745c5c3_Var31 string
650 templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short)
651 if templ_7745c5c3_Err != nil {
652 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 132, Col: 13}
653 }
654 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31))
655 if templ_7745c5c3_Err != nil {
656 return templ_7745c5c3_Err
657 }
658 }
659 templ_7745c5c3_Err = CommitChecks(r.Checks).Render(ctx, templ_7745c5c3_Buffer)
660 if templ_7745c5c3_Err != nil {
661 return templ_7745c5c3_Err
662 }
663 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "</td><td class=\"c-sub\">")
664 if templ_7745c5c3_Err != nil {
665 return templ_7745c5c3_Err
666 }
667 var templ_7745c5c3_Var32 string
668 templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(r.Subject)
669 if templ_7745c5c3_Err != nil {
670 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 136, Col: 31}
671 }
672 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32))
673 if templ_7745c5c3_Err != nil {
674 return templ_7745c5c3_Err
675 }
676 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "</td><td class=\"c-when dim\">")
677 if templ_7745c5c3_Err != nil {
678 return templ_7745c5c3_Err
679 }
680 if r.WhenAt != "" {
681 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "<time datetime=\"")
682 if templ_7745c5c3_Err != nil {
683 return templ_7745c5c3_Err
684 }
685 var templ_7745c5c3_Var33 string
686 templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
687 if templ_7745c5c3_Err != nil {
688 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 139, Col: 29}
689 }
690 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var33)
691 if templ_7745c5c3_Err != nil {
692 return templ_7745c5c3_Err
693 }
694 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "\" title=\"")
695 if templ_7745c5c3_Err != nil {
696 return templ_7745c5c3_Err
697 }
698 var templ_7745c5c3_Var34 string
699 templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
700 if templ_7745c5c3_Err != nil {
701 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 139, Col: 48}
702 }
703 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var34)
704 if templ_7745c5c3_Err != nil {
705 return templ_7745c5c3_Err
706 }
707 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "\">")
708 if templ_7745c5c3_Err != nil {
709 return templ_7745c5c3_Err
710 }
711 var templ_7745c5c3_Var35 string
712 templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.JoinStringErrs(r.When)
713 if templ_7745c5c3_Err != nil {
714 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 139, Col: 59}
715 }
716 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var35))
717 if templ_7745c5c3_Err != nil {
718 return templ_7745c5c3_Err
719 }
720 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "</time>")
721 if templ_7745c5c3_Err != nil {
722 return templ_7745c5c3_Err
723 }
724 }
725 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "</td></tr>")
726 if templ_7745c5c3_Err != nil {
727 return templ_7745c5c3_Err
728 }
729 return nil
730 })
731}
732
733func refsRail(p RefsPage) templ.Component {
734 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
735 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
736 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
737 return templ_7745c5c3_CtxErr
738 }
739 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
740 if !templ_7745c5c3_IsBuffer {
741 defer func() {
742 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
743 if templ_7745c5c3_Err == nil {
744 templ_7745c5c3_Err = templ_7745c5c3_BufErr
745 }
746 }()
747 }
748 ctx = templ.InitializeContext(ctx)
749 templ_7745c5c3_Var36 := templ.GetChildren(ctx)
750 if templ_7745c5c3_Var36 == nil {
751 templ_7745c5c3_Var36 = templ.NopComponent
752 }
753 ctx = templ.ClearChildren(ctx)
754 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "<section aria-labelledby=\"r-refs\"><h2 id=\"r-refs\">Overview</h2>")
755 if templ_7745c5c3_Err != nil {
756 return templ_7745c5c3_Err
757 }
758 templ_7745c5c3_Err = RefsKV(p).Render(ctx, templ_7745c5c3_Buffer)
759 if templ_7745c5c3_Err != nil {
760 return templ_7745c5c3_Err
761 }
762 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "</section>")
763 if templ_7745c5c3_Err != nil {
764 return templ_7745c5c3_Err
765 }
766 return nil
767 })
768}
769
770// State is a 404, 500 or empty-repository page inside the normal shell.
771func State(l Layout, p StatePage) templ.Component {
772 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
773 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
774 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
775 return templ_7745c5c3_CtxErr
776 }
777 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
778 if !templ_7745c5c3_IsBuffer {
779 defer func() {
780 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
781 if templ_7745c5c3_Err == nil {
782 templ_7745c5c3_Err = templ_7745c5c3_BufErr
783 }
784 }()
785 }
786 ctx = templ.InitializeContext(ctx)
787 templ_7745c5c3_Var37 := templ.GetChildren(ctx)
788 if templ_7745c5c3_Var37 == nil {
789 templ_7745c5c3_Var37 = templ.NopComponent
790 }
791 ctx = templ.ClearChildren(ctx)
792 templ_7745c5c3_Var38 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
793 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
794 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
795 if !templ_7745c5c3_IsBuffer {
796 defer func() {
797 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
798 if templ_7745c5c3_Err == nil {
799 templ_7745c5c3_Err = templ_7745c5c3_BufErr
800 }
801 }()
802 }
803 ctx = templ.InitializeContext(ctx)
804 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "<section class=\"state\" aria-labelledby=\"state-title\"><p class=\"eyebrow\">")
805 if templ_7745c5c3_Err != nil {
806 return templ_7745c5c3_Err
807 }
808 var templ_7745c5c3_Var39 string
809 templ_7745c5c3_Var39, templ_7745c5c3_Err = templ.JoinStringErrs(p.Code)
810 if templ_7745c5c3_Err != nil {
811 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 156, Col: 30}
812 }
813 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var39))
814 if templ_7745c5c3_Err != nil {
815 return templ_7745c5c3_Err
816 }
817 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "</p><h1 id=\"state-title\">")
818 if templ_7745c5c3_Err != nil {
819 return templ_7745c5c3_Err
820 }
821 var templ_7745c5c3_Var40 string
822 templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title)
823 if templ_7745c5c3_Err != nil {
824 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 157, Col: 33}
825 }
826 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var40))
827 if templ_7745c5c3_Err != nil {
828 return templ_7745c5c3_Err
829 }
830 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "</h1>")
831 if templ_7745c5c3_Err != nil {
832 return templ_7745c5c3_Err
833 }
834 for _, line := range p.Lines {
835 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "<p class=\"dim\">")
836 if templ_7745c5c3_Err != nil {
837 return templ_7745c5c3_Err
838 }
839 var templ_7745c5c3_Var41 string
840 templ_7745c5c3_Var41, templ_7745c5c3_Err = templ.JoinStringErrs(line)
841 if templ_7745c5c3_Err != nil {
842 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 159, Col: 25}
843 }
844 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var41))
845 if templ_7745c5c3_Err != nil {
846 return templ_7745c5c3_Err
847 }
848 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "</p>")
849 if templ_7745c5c3_Err != nil {
850 return templ_7745c5c3_Err
851 }
852 }
853 if p.Clone != nil {
854 templ_7745c5c3_Err = CloneBlock(*p.Clone).Render(ctx, templ_7745c5c3_Buffer)
855 if templ_7745c5c3_Err != nil {
856 return templ_7745c5c3_Err
857 }
858 }
859 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, "<p class=\"state-back\">")
860 if templ_7745c5c3_Err != nil {
861 return templ_7745c5c3_Err
862 }
863 for _, b := range p.Back {
864 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "<a href=\"")
865 if templ_7745c5c3_Err != nil {
866 return templ_7745c5c3_Err
867 }
868 var templ_7745c5c3_Var42 templ.SafeURL
869 templ_7745c5c3_Var42, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(b.Href))
870 if templ_7745c5c3_Err != nil {
871 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 166, Col: 36}
872 }
873 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var42))
874 if templ_7745c5c3_Err != nil {
875 return templ_7745c5c3_Err
876 }
877 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "\">")
878 if templ_7745c5c3_Err != nil {
879 return templ_7745c5c3_Err
880 }
881 var templ_7745c5c3_Var43 string
882 templ_7745c5c3_Var43, templ_7745c5c3_Err = templ.JoinStringErrs(b.Label)
883 if templ_7745c5c3_Err != nil {
884 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 166, Col: 48}
885 }
886 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var43))
887 if templ_7745c5c3_Err != nil {
888 return templ_7745c5c3_Err
889 }
890 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, "</a>")
891 if templ_7745c5c3_Err != nil {
892 return templ_7745c5c3_Err
893 }
894 }
895 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, "</p></section>")
896 if templ_7745c5c3_Err != nil {
897 return templ_7745c5c3_Err
898 }
899 return nil
900 })
901 templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var38), templ_7745c5c3_Buffer)
902 if templ_7745c5c3_Err != nil {
903 return templ_7745c5c3_Err
904 }
905 return nil
906 })
907}
908
909// Login asks the owner to confirm a login link. Opening the link consumes
910// nothing; only this form does. It is a state page with a button.
911func Login(l Layout, p LoginPage) templ.Component {
912 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
913 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
914 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
915 return templ_7745c5c3_CtxErr
916 }
917 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
918 if !templ_7745c5c3_IsBuffer {
919 defer func() {
920 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
921 if templ_7745c5c3_Err == nil {
922 templ_7745c5c3_Err = templ_7745c5c3_BufErr
923 }
924 }()
925 }
926 ctx = templ.InitializeContext(ctx)
927 templ_7745c5c3_Var44 := templ.GetChildren(ctx)
928 if templ_7745c5c3_Var44 == nil {
929 templ_7745c5c3_Var44 = templ.NopComponent
930 }
931 ctx = templ.ClearChildren(ctx)
932 templ_7745c5c3_Var45 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
933 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
934 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
935 if !templ_7745c5c3_IsBuffer {
936 defer func() {
937 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
938 if templ_7745c5c3_Err == nil {
939 templ_7745c5c3_Err = templ_7745c5c3_BufErr
940 }
941 }()
942 }
943 ctx = templ.InitializeContext(ctx)
944 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">")
945 if templ_7745c5c3_Err != nil {
946 return templ_7745c5c3_Err
947 }
948 var templ_7745c5c3_Var46 string
949 templ_7745c5c3_Var46, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title)
950 if templ_7745c5c3_Err != nil {
951 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 178, Col: 33}
952 }
953 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var46))
954 if templ_7745c5c3_Err != nil {
955 return templ_7745c5c3_Err
956 }
957 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "</h1>")
958 if templ_7745c5c3_Err != nil {
959 return templ_7745c5c3_Err
960 }
961 for _, line := range p.Lines {
962 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, "<p class=\"dim\">")
963 if templ_7745c5c3_Err != nil {
964 return templ_7745c5c3_Err
965 }
966 var templ_7745c5c3_Var47 string
967 templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.JoinStringErrs(line)
968 if templ_7745c5c3_Err != nil {
969 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 180, Col: 25}
970 }
971 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var47))
972 if templ_7745c5c3_Err != nil {
973 return templ_7745c5c3_Err
974 }
975 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "</p>")
976 if templ_7745c5c3_Err != nil {
977 return templ_7745c5c3_Err
978 }
979 }
980 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, "<form class=\"state-act\" method=\"post\" action=\"")
981 if templ_7745c5c3_Err != nil {
982 return templ_7745c5c3_Err
983 }
984 var templ_7745c5c3_Var48 templ.SafeURL
985 templ_7745c5c3_Var48, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Action))
986 if templ_7745c5c3_Err != nil {
987 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 182, Col: 73}
988 }
989 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var48))
990 if templ_7745c5c3_Err != nil {
991 return templ_7745c5c3_Err
992 }
993 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 75, "\"><button type=\"submit\" class=\"btn primary\">")
994 if templ_7745c5c3_Err != nil {
995 return templ_7745c5c3_Err
996 }
997 var templ_7745c5c3_Var49 string
998 templ_7745c5c3_Var49, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button)
999 if templ_7745c5c3_Err != nil {
1000 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 183, Col: 56}
1001 }
1002 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var49))
1003 if templ_7745c5c3_Err != nil {
1004 return templ_7745c5c3_Err
1005 }
1006 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 76, "</button></form><p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>")
1007 if templ_7745c5c3_Err != nil {
1008 return templ_7745c5c3_Err
1009 }
1010 return nil
1011 })
1012 templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var45), templ_7745c5c3_Buffer)
1013 if templ_7745c5c3_Err != nil {
1014 return templ_7745c5c3_Err
1015 }
1016 return nil
1017 })
1018}
1019
1020// PasskeyLogin is the sign-in page: a button the script (passkey.js) drives.
1021// Without script the button is hidden and the page says what to do instead.
1022func PasskeyLogin(l Layout, p PasskeyLoginPage) templ.Component {
1023 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1024 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1025 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1026 return templ_7745c5c3_CtxErr
1027 }
1028 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1029 if !templ_7745c5c3_IsBuffer {
1030 defer func() {
1031 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1032 if templ_7745c5c3_Err == nil {
1033 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1034 }
1035 }()
1036 }
1037 ctx = templ.InitializeContext(ctx)
1038 templ_7745c5c3_Var50 := templ.GetChildren(ctx)
1039 if templ_7745c5c3_Var50 == nil {
1040 templ_7745c5c3_Var50 = templ.NopComponent
1041 }
1042 ctx = templ.ClearChildren(ctx)
1043 templ_7745c5c3_Var51 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1044 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1045 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1046 if !templ_7745c5c3_IsBuffer {
1047 defer func() {
1048 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1049 if templ_7745c5c3_Err == nil {
1050 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1051 }
1052 }()
1053 }
1054 ctx = templ.InitializeContext(ctx)
1055 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 77, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">")
1056 if templ_7745c5c3_Err != nil {
1057 return templ_7745c5c3_Err
1058 }
1059 var templ_7745c5c3_Var52 string
1060 templ_7745c5c3_Var52, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title)
1061 if templ_7745c5c3_Err != nil {
1062 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 195, Col: 33}
1063 }
1064 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var52))
1065 if templ_7745c5c3_Err != nil {
1066 return templ_7745c5c3_Err
1067 }
1068 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=\"")
1069 if templ_7745c5c3_Err != nil {
1070 return templ_7745c5c3_Err
1071 }
1072 var templ_7745c5c3_Var53 string
1073 templ_7745c5c3_Var53, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Begin)
1074 if templ_7745c5c3_Err != nil {
1075 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 197, Col: 87}
1076 }
1077 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var53)
1078 if templ_7745c5c3_Err != nil {
1079 return templ_7745c5c3_Err
1080 }
1081 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 79, "\" data-finish=\"")
1082 if templ_7745c5c3_Err != nil {
1083 return templ_7745c5c3_Err
1084 }
1085 var templ_7745c5c3_Var54 string
1086 templ_7745c5c3_Var54, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Finish)
1087 if templ_7745c5c3_Err != nil {
1088 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 197, Col: 112}
1089 }
1090 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var54)
1091 if templ_7745c5c3_Err != nil {
1092 return templ_7745c5c3_Err
1093 }
1094 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 80, "\">")
1095 if templ_7745c5c3_Err != nil {
1096 return templ_7745c5c3_Err
1097 }
1098 var templ_7745c5c3_Var55 string
1099 templ_7745c5c3_Var55, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button)
1100 if templ_7745c5c3_Err != nil {
1101 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 197, Col: 125}
1102 }
1103 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var55))
1104 if templ_7745c5c3_Err != nil {
1105 return templ_7745c5c3_Err
1106 }
1107 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 81, "</button></form><p class=\"dim\" role=\"status\" aria-live=\"polite\" data-passkey-status></p>")
1108 if templ_7745c5c3_Err != nil {
1109 return templ_7745c5c3_Err
1110 }
1111 for _, line := range p.Lines {
1112 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 82, "<p class=\"dim\">")
1113 if templ_7745c5c3_Err != nil {
1114 return templ_7745c5c3_Err
1115 }
1116 var templ_7745c5c3_Var56 string
1117 templ_7745c5c3_Var56, templ_7745c5c3_Err = templ.JoinStringErrs(line)
1118 if templ_7745c5c3_Err != nil {
1119 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 201, Col: 25}
1120 }
1121 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var56))
1122 if templ_7745c5c3_Err != nil {
1123 return templ_7745c5c3_Err
1124 }
1125 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 83, "</p>")
1126 if templ_7745c5c3_Err != nil {
1127 return templ_7745c5c3_Err
1128 }
1129 }
1130 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 84, "<p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>")
1131 if templ_7745c5c3_Err != nil {
1132 return templ_7745c5c3_Err
1133 }
1134 return nil
1135 })
1136 templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var51), templ_7745c5c3_Buffer)
1137 if templ_7745c5c3_Err != nil {
1138 return templ_7745c5c3_Err
1139 }
1140 return nil
1141 })
1142}
1143
1144// Passkeys lists the owner's passkeys, removes them and adds one.
1145func Passkeys(l Layout, p PasskeysPage) templ.Component {
1146 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1147 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1148 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1149 return templ_7745c5c3_CtxErr
1150 }
1151 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1152 if !templ_7745c5c3_IsBuffer {
1153 defer func() {
1154 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1155 if templ_7745c5c3_Err == nil {
1156 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1157 }
1158 }()
1159 }
1160 ctx = templ.InitializeContext(ctx)
1161 templ_7745c5c3_Var57 := templ.GetChildren(ctx)
1162 if templ_7745c5c3_Var57 == nil {
1163 templ_7745c5c3_Var57 = templ.NopComponent
1164 }
1165 ctx = templ.ClearChildren(ctx)
1166 templ_7745c5c3_Var58 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1167 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1168 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1169 if !templ_7745c5c3_IsBuffer {
1170 defer func() {
1171 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1172 if templ_7745c5c3_Err == nil {
1173 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1174 }
1175 }()
1176 }
1177 ctx = templ.InitializeContext(ctx)
1178 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 85, "<h2 class=\"rule-h\"><span>Passkeys</span><span class=\"count\">")
1179 if templ_7745c5c3_Err != nil {
1180 return templ_7745c5c3_Err
1181 }
1182 var templ_7745c5c3_Var59 string
1183 templ_7745c5c3_Var59, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.Rows)))
1184 if templ_7745c5c3_Err != nil {
1185 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 211, Col: 81}
1186 }
1187 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var59))
1188 if templ_7745c5c3_Err != nil {
1189 return templ_7745c5c3_Err
1190 }
1191 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>")
1192 if templ_7745c5c3_Err != nil {
1193 return templ_7745c5c3_Err
1194 }
1195 if len(p.Rows) > 0 {
1196 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>")
1197 if templ_7745c5c3_Err != nil {
1198 return templ_7745c5c3_Err
1199 }
1200 for _, r := range p.Rows {
1201 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 88, "<tr><td class=\"cur\" aria-hidden=\"true\"></td><td class=\"c-name\">")
1202 if templ_7745c5c3_Err != nil {
1203 return templ_7745c5c3_Err
1204 }
1205 var templ_7745c5c3_Var60 string
1206 templ_7745c5c3_Var60, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name)
1207 if templ_7745c5c3_Err != nil {
1208 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 229, Col: 34}
1209 }
1210 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var60))
1211 if templ_7745c5c3_Err != nil {
1212 return templ_7745c5c3_Err
1213 }
1214 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 89, "</td><td class=\"c-when nowrap\"><time")
1215 if templ_7745c5c3_Err != nil {
1216 return templ_7745c5c3_Err
1217 }
1218 if r.CreatedAt != "" {
1219 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 90, " datetime=\"")
1220 if templ_7745c5c3_Err != nil {
1221 return templ_7745c5c3_Err
1222 }
1223 var templ_7745c5c3_Var61 string
1224 templ_7745c5c3_Var61, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.CreatedAt)
1225 if templ_7745c5c3_Err != nil {
1226 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 233, Col: 32}
1227 }
1228 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var61)
1229 if templ_7745c5c3_Err != nil {
1230 return templ_7745c5c3_Err
1231 }
1232 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, "\"")
1233 if templ_7745c5c3_Err != nil {
1234 return templ_7745c5c3_Err
1235 }
1236 }
1237 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 92, ">")
1238 if templ_7745c5c3_Err != nil {
1239 return templ_7745c5c3_Err
1240 }
1241 var templ_7745c5c3_Var62 string
1242 templ_7745c5c3_Var62, templ_7745c5c3_Err = templ.JoinStringErrs(r.Created)
1243 if templ_7745c5c3_Err != nil {
1244 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 235, Col: 20}
1245 }
1246 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var62))
1247 if templ_7745c5c3_Err != nil {
1248 return templ_7745c5c3_Err
1249 }
1250 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 93, "</time></td><td class=\"c-when nowrap\"><time")
1251 if templ_7745c5c3_Err != nil {
1252 return templ_7745c5c3_Err
1253 }
1254 if r.LastUsedAt != "" {
1255 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 94, " datetime=\"")
1256 if templ_7745c5c3_Err != nil {
1257 return templ_7745c5c3_Err
1258 }
1259 var templ_7745c5c3_Var63 string
1260 templ_7745c5c3_Var63, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.LastUsedAt)
1261 if templ_7745c5c3_Err != nil {
1262 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 240, Col: 33}
1263 }
1264 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var63)
1265 if templ_7745c5c3_Err != nil {
1266 return templ_7745c5c3_Err
1267 }
1268 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 95, "\"")
1269 if templ_7745c5c3_Err != nil {
1270 return templ_7745c5c3_Err
1271 }
1272 }
1273 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 96, ">")
1274 if templ_7745c5c3_Err != nil {
1275 return templ_7745c5c3_Err
1276 }
1277 var templ_7745c5c3_Var64 string
1278 templ_7745c5c3_Var64, templ_7745c5c3_Err = templ.JoinStringErrs(r.LastUsed)
1279 if templ_7745c5c3_Err != nil {
1280 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 242, Col: 21}
1281 }
1282 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var64))
1283 if templ_7745c5c3_Err != nil {
1284 return templ_7745c5c3_Err
1285 }
1286 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 97, "</time></td><td class=\"c-sync\">")
1287 if templ_7745c5c3_Err != nil {
1288 return templ_7745c5c3_Err
1289 }
1290 if r.Synced {
1291 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 98, "yes")
1292 if templ_7745c5c3_Err != nil {
1293 return templ_7745c5c3_Err
1294 }
1295 } else {
1296 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, "no")
1297 if templ_7745c5c3_Err != nil {
1298 return templ_7745c5c3_Err
1299 }
1300 }
1301 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 100, "</td><td class=\"c-act\"><form method=\"post\" action=\"")
1302 if templ_7745c5c3_Err != nil {
1303 return templ_7745c5c3_Err
1304 }
1305 var templ_7745c5c3_Var65 templ.SafeURL
1306 templ_7745c5c3_Var65, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Remove))
1307 if templ_7745c5c3_Err != nil {
1308 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 252, Col: 60}
1309 }
1310 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var65))
1311 if templ_7745c5c3_Err != nil {
1312 return templ_7745c5c3_Err
1313 }
1314 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 101, "\"><button type=\"submit\" class=\"btn danger\" aria-label=\"")
1315 if templ_7745c5c3_Err != nil {
1316 return templ_7745c5c3_Err
1317 }
1318 var templ_7745c5c3_Var66 string
1319 templ_7745c5c3_Var66, templ_7745c5c3_Err = templ.ResolveAttributeValue("Remove passkey " + r.Name)
1320 if templ_7745c5c3_Err != nil {
1321 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 253, Col: 89}
1322 }
1323 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var66)
1324 if templ_7745c5c3_Err != nil {
1325 return templ_7745c5c3_Err
1326 }
1327 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 102, "\">Remove</button></form></td></tr>")
1328 if templ_7745c5c3_Err != nil {
1329 return templ_7745c5c3_Err
1330 }
1331 }
1332 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 103, "</tbody></table>")
1333 if templ_7745c5c3_Err != nil {
1334 return templ_7745c5c3_Err
1335 }
1336 } else {
1337 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 104, "<p class=\"lede dim\">no passkeys yet.</p>")
1338 if templ_7745c5c3_Err != nil {
1339 return templ_7745c5c3_Err
1340 }
1341 }
1342 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 105, " ")
1343 if templ_7745c5c3_Err != nil {
1344 return templ_7745c5c3_Err
1345 }
1346 if p.Full {
1347 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 106, "<p class=\"dim\">")
1348 if templ_7745c5c3_Err != nil {
1349 return templ_7745c5c3_Err
1350 }
1351 var templ_7745c5c3_Var67 string
1352 templ_7745c5c3_Var67, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Max))
1353 if templ_7745c5c3_Err != nil {
1354 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 264, Col: 31}
1355 }
1356 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var67))
1357 if templ_7745c5c3_Err != nil {
1358 return templ_7745c5c3_Err
1359 }
1360 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 107, " passkeys are registered, the most there can be. Remove one to add another.</p>")
1361 if templ_7745c5c3_Err != nil {
1362 return templ_7745c5c3_Err
1363 }
1364 } else {
1365 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=\"")
1366 if templ_7745c5c3_Err != nil {
1367 return templ_7745c5c3_Err
1368 }
1369 var templ_7745c5c3_Var68 string
1370 templ_7745c5c3_Var68, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Begin)
1371 if templ_7745c5c3_Err != nil {
1372 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 269, Col: 90}
1373 }
1374 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var68)
1375 if templ_7745c5c3_Err != nil {
1376 return templ_7745c5c3_Err
1377 }
1378 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 109, "\" data-finish=\"")
1379 if templ_7745c5c3_Err != nil {
1380 return templ_7745c5c3_Err
1381 }
1382 var templ_7745c5c3_Var69 string
1383 templ_7745c5c3_Var69, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Finish)
1384 if templ_7745c5c3_Err != nil {
1385 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 269, Col: 115}
1386 }
1387 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var69)
1388 if templ_7745c5c3_Err != nil {
1389 return templ_7745c5c3_Err
1390 }
1391 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 110, "\">Add a passkey</button></form>")
1392 if templ_7745c5c3_Err != nil {
1393 return templ_7745c5c3_Err
1394 }
1395 }
1396 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 111, " <p class=\"dim\" role=\"status\" aria-live=\"polite\" data-passkey-status></p>")
1397 if templ_7745c5c3_Err != nil {
1398 return templ_7745c5c3_Err
1399 }
1400 return nil
1401 })
1402 templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var58), templ_7745c5c3_Buffer)
1403 if templ_7745c5c3_Err != nil {
1404 return templ_7745c5c3_Err
1405 }
1406 return nil
1407 })
1408}
1409
1410var _ = templruntime.GeneratedTemplate