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 signs the browser in with a login link. Opening the link consumes
910// nothing; only this form does. ermite.js submits it as soon as a browser
911// shows the page (data-autosubmit): link previews and prefetchers run no
912// script, so they still cannot use the link. Without scripts the owner
913// clicks the button.
914func Login(l Layout, p LoginPage) templ.Component {
915 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
916 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
917 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
918 return templ_7745c5c3_CtxErr
919 }
920 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
921 if !templ_7745c5c3_IsBuffer {
922 defer func() {
923 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
924 if templ_7745c5c3_Err == nil {
925 templ_7745c5c3_Err = templ_7745c5c3_BufErr
926 }
927 }()
928 }
929 ctx = templ.InitializeContext(ctx)
930 templ_7745c5c3_Var44 := templ.GetChildren(ctx)
931 if templ_7745c5c3_Var44 == nil {
932 templ_7745c5c3_Var44 = templ.NopComponent
933 }
934 ctx = templ.ClearChildren(ctx)
935 templ_7745c5c3_Var45 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
936 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
937 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
938 if !templ_7745c5c3_IsBuffer {
939 defer func() {
940 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
941 if templ_7745c5c3_Err == nil {
942 templ_7745c5c3_Err = templ_7745c5c3_BufErr
943 }
944 }()
945 }
946 ctx = templ.InitializeContext(ctx)
947 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">")
948 if templ_7745c5c3_Err != nil {
949 return templ_7745c5c3_Err
950 }
951 var templ_7745c5c3_Var46 string
952 templ_7745c5c3_Var46, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title)
953 if templ_7745c5c3_Err != nil {
954 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 181, Col: 33}
955 }
956 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var46))
957 if templ_7745c5c3_Err != nil {
958 return templ_7745c5c3_Err
959 }
960 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "</h1>")
961 if templ_7745c5c3_Err != nil {
962 return templ_7745c5c3_Err
963 }
964 for _, line := range p.Lines {
965 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, "<p class=\"dim\">")
966 if templ_7745c5c3_Err != nil {
967 return templ_7745c5c3_Err
968 }
969 var templ_7745c5c3_Var47 string
970 templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.JoinStringErrs(line)
971 if templ_7745c5c3_Err != nil {
972 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 183, Col: 25}
973 }
974 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var47))
975 if templ_7745c5c3_Err != nil {
976 return templ_7745c5c3_Err
977 }
978 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "</p>")
979 if templ_7745c5c3_Err != nil {
980 return templ_7745c5c3_Err
981 }
982 }
983 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, "<form class=\"state-act\" method=\"post\" action=\"")
984 if templ_7745c5c3_Err != nil {
985 return templ_7745c5c3_Err
986 }
987 var templ_7745c5c3_Var48 templ.SafeURL
988 templ_7745c5c3_Var48, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Action))
989 if templ_7745c5c3_Err != nil {
990 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 185, Col: 73}
991 }
992 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var48))
993 if templ_7745c5c3_Err != nil {
994 return templ_7745c5c3_Err
995 }
996 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 75, "\" data-autosubmit><button type=\"submit\" class=\"btn primary\">")
997 if templ_7745c5c3_Err != nil {
998 return templ_7745c5c3_Err
999 }
1000 var templ_7745c5c3_Var49 string
1001 templ_7745c5c3_Var49, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button)
1002 if templ_7745c5c3_Err != nil {
1003 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 186, Col: 56}
1004 }
1005 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var49))
1006 if templ_7745c5c3_Err != nil {
1007 return templ_7745c5c3_Err
1008 }
1009 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 76, "</button></form><p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>")
1010 if templ_7745c5c3_Err != nil {
1011 return templ_7745c5c3_Err
1012 }
1013 return nil
1014 })
1015 templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var45), templ_7745c5c3_Buffer)
1016 if templ_7745c5c3_Err != nil {
1017 return templ_7745c5c3_Err
1018 }
1019 return nil
1020 })
1021}
1022
1023// PasskeyLogin is the sign-in page: a button the script (passkey.js) drives.
1024// Without script the button is hidden and the page says what to do instead.
1025func PasskeyLogin(l Layout, p PasskeyLoginPage) templ.Component {
1026 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1027 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1028 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1029 return templ_7745c5c3_CtxErr
1030 }
1031 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1032 if !templ_7745c5c3_IsBuffer {
1033 defer func() {
1034 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1035 if templ_7745c5c3_Err == nil {
1036 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1037 }
1038 }()
1039 }
1040 ctx = templ.InitializeContext(ctx)
1041 templ_7745c5c3_Var50 := templ.GetChildren(ctx)
1042 if templ_7745c5c3_Var50 == nil {
1043 templ_7745c5c3_Var50 = templ.NopComponent
1044 }
1045 ctx = templ.ClearChildren(ctx)
1046 templ_7745c5c3_Var51 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1047 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1048 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1049 if !templ_7745c5c3_IsBuffer {
1050 defer func() {
1051 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1052 if templ_7745c5c3_Err == nil {
1053 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1054 }
1055 }()
1056 }
1057 ctx = templ.InitializeContext(ctx)
1058 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 77, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">")
1059 if templ_7745c5c3_Err != nil {
1060 return templ_7745c5c3_Err
1061 }
1062 var templ_7745c5c3_Var52 string
1063 templ_7745c5c3_Var52, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title)
1064 if templ_7745c5c3_Err != nil {
1065 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 198, Col: 33}
1066 }
1067 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var52))
1068 if templ_7745c5c3_Err != nil {
1069 return templ_7745c5c3_Err
1070 }
1071 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=\"")
1072 if templ_7745c5c3_Err != nil {
1073 return templ_7745c5c3_Err
1074 }
1075 var templ_7745c5c3_Var53 string
1076 templ_7745c5c3_Var53, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Begin)
1077 if templ_7745c5c3_Err != nil {
1078 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 200, Col: 87}
1079 }
1080 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var53)
1081 if templ_7745c5c3_Err != nil {
1082 return templ_7745c5c3_Err
1083 }
1084 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 79, "\" data-finish=\"")
1085 if templ_7745c5c3_Err != nil {
1086 return templ_7745c5c3_Err
1087 }
1088 var templ_7745c5c3_Var54 string
1089 templ_7745c5c3_Var54, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Finish)
1090 if templ_7745c5c3_Err != nil {
1091 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 200, Col: 112}
1092 }
1093 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var54)
1094 if templ_7745c5c3_Err != nil {
1095 return templ_7745c5c3_Err
1096 }
1097 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 80, "\">")
1098 if templ_7745c5c3_Err != nil {
1099 return templ_7745c5c3_Err
1100 }
1101 var templ_7745c5c3_Var55 string
1102 templ_7745c5c3_Var55, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button)
1103 if templ_7745c5c3_Err != nil {
1104 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 200, Col: 125}
1105 }
1106 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var55))
1107 if templ_7745c5c3_Err != nil {
1108 return templ_7745c5c3_Err
1109 }
1110 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 81, "</button></form><p class=\"dim\" role=\"status\" aria-live=\"polite\" data-passkey-status></p>")
1111 if templ_7745c5c3_Err != nil {
1112 return templ_7745c5c3_Err
1113 }
1114 for _, line := range p.Lines {
1115 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 82, "<p class=\"dim\">")
1116 if templ_7745c5c3_Err != nil {
1117 return templ_7745c5c3_Err
1118 }
1119 var templ_7745c5c3_Var56 string
1120 templ_7745c5c3_Var56, templ_7745c5c3_Err = templ.JoinStringErrs(line)
1121 if templ_7745c5c3_Err != nil {
1122 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 204, Col: 25}
1123 }
1124 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var56))
1125 if templ_7745c5c3_Err != nil {
1126 return templ_7745c5c3_Err
1127 }
1128 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 83, "</p>")
1129 if templ_7745c5c3_Err != nil {
1130 return templ_7745c5c3_Err
1131 }
1132 }
1133 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 84, "<p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>")
1134 if templ_7745c5c3_Err != nil {
1135 return templ_7745c5c3_Err
1136 }
1137 return nil
1138 })
1139 templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var51), templ_7745c5c3_Buffer)
1140 if templ_7745c5c3_Err != nil {
1141 return templ_7745c5c3_Err
1142 }
1143 return nil
1144 })
1145}
1146
1147// Passkeys lists the owner's passkeys, removes them and adds one.
1148func Passkeys(l Layout, p PasskeysPage) templ.Component {
1149 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1150 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1151 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1152 return templ_7745c5c3_CtxErr
1153 }
1154 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1155 if !templ_7745c5c3_IsBuffer {
1156 defer func() {
1157 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1158 if templ_7745c5c3_Err == nil {
1159 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1160 }
1161 }()
1162 }
1163 ctx = templ.InitializeContext(ctx)
1164 templ_7745c5c3_Var57 := templ.GetChildren(ctx)
1165 if templ_7745c5c3_Var57 == nil {
1166 templ_7745c5c3_Var57 = templ.NopComponent
1167 }
1168 ctx = templ.ClearChildren(ctx)
1169 templ_7745c5c3_Var58 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1170 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1171 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1172 if !templ_7745c5c3_IsBuffer {
1173 defer func() {
1174 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1175 if templ_7745c5c3_Err == nil {
1176 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1177 }
1178 }()
1179 }
1180 ctx = templ.InitializeContext(ctx)
1181 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 85, "<h2 class=\"rule-h\"><span>Passkeys</span><span class=\"count\">")
1182 if templ_7745c5c3_Err != nil {
1183 return templ_7745c5c3_Err
1184 }
1185 var templ_7745c5c3_Var59 string
1186 templ_7745c5c3_Var59, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.Rows)))
1187 if templ_7745c5c3_Err != nil {
1188 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 214, Col: 81}
1189 }
1190 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var59))
1191 if templ_7745c5c3_Err != nil {
1192 return templ_7745c5c3_Err
1193 }
1194 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>")
1195 if templ_7745c5c3_Err != nil {
1196 return templ_7745c5c3_Err
1197 }
1198 if len(p.Rows) > 0 {
1199 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>")
1200 if templ_7745c5c3_Err != nil {
1201 return templ_7745c5c3_Err
1202 }
1203 for _, r := range p.Rows {
1204 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 88, "<tr><td class=\"cur\" aria-hidden=\"true\"></td><td class=\"c-name\">")
1205 if templ_7745c5c3_Err != nil {
1206 return templ_7745c5c3_Err
1207 }
1208 var templ_7745c5c3_Var60 string
1209 templ_7745c5c3_Var60, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name)
1210 if templ_7745c5c3_Err != nil {
1211 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 232, Col: 34}
1212 }
1213 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var60))
1214 if templ_7745c5c3_Err != nil {
1215 return templ_7745c5c3_Err
1216 }
1217 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 89, "</td><td class=\"c-when nowrap\"><time")
1218 if templ_7745c5c3_Err != nil {
1219 return templ_7745c5c3_Err
1220 }
1221 if r.CreatedAt != "" {
1222 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 90, " datetime=\"")
1223 if templ_7745c5c3_Err != nil {
1224 return templ_7745c5c3_Err
1225 }
1226 var templ_7745c5c3_Var61 string
1227 templ_7745c5c3_Var61, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.CreatedAt)
1228 if templ_7745c5c3_Err != nil {
1229 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 236, Col: 32}
1230 }
1231 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var61)
1232 if templ_7745c5c3_Err != nil {
1233 return templ_7745c5c3_Err
1234 }
1235 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, "\"")
1236 if templ_7745c5c3_Err != nil {
1237 return templ_7745c5c3_Err
1238 }
1239 }
1240 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 92, ">")
1241 if templ_7745c5c3_Err != nil {
1242 return templ_7745c5c3_Err
1243 }
1244 var templ_7745c5c3_Var62 string
1245 templ_7745c5c3_Var62, templ_7745c5c3_Err = templ.JoinStringErrs(r.Created)
1246 if templ_7745c5c3_Err != nil {
1247 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 238, Col: 20}
1248 }
1249 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var62))
1250 if templ_7745c5c3_Err != nil {
1251 return templ_7745c5c3_Err
1252 }
1253 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 93, "</time></td><td class=\"c-when nowrap\"><time")
1254 if templ_7745c5c3_Err != nil {
1255 return templ_7745c5c3_Err
1256 }
1257 if r.LastUsedAt != "" {
1258 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 94, " datetime=\"")
1259 if templ_7745c5c3_Err != nil {
1260 return templ_7745c5c3_Err
1261 }
1262 var templ_7745c5c3_Var63 string
1263 templ_7745c5c3_Var63, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.LastUsedAt)
1264 if templ_7745c5c3_Err != nil {
1265 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 243, Col: 33}
1266 }
1267 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var63)
1268 if templ_7745c5c3_Err != nil {
1269 return templ_7745c5c3_Err
1270 }
1271 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 95, "\"")
1272 if templ_7745c5c3_Err != nil {
1273 return templ_7745c5c3_Err
1274 }
1275 }
1276 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 96, ">")
1277 if templ_7745c5c3_Err != nil {
1278 return templ_7745c5c3_Err
1279 }
1280 var templ_7745c5c3_Var64 string
1281 templ_7745c5c3_Var64, templ_7745c5c3_Err = templ.JoinStringErrs(r.LastUsed)
1282 if templ_7745c5c3_Err != nil {
1283 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 245, Col: 21}
1284 }
1285 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var64))
1286 if templ_7745c5c3_Err != nil {
1287 return templ_7745c5c3_Err
1288 }
1289 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 97, "</time></td><td class=\"c-sync\">")
1290 if templ_7745c5c3_Err != nil {
1291 return templ_7745c5c3_Err
1292 }
1293 if r.Synced {
1294 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 98, "yes")
1295 if templ_7745c5c3_Err != nil {
1296 return templ_7745c5c3_Err
1297 }
1298 } else {
1299 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, "no")
1300 if templ_7745c5c3_Err != nil {
1301 return templ_7745c5c3_Err
1302 }
1303 }
1304 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 100, "</td><td class=\"c-act\"><form method=\"post\" action=\"")
1305 if templ_7745c5c3_Err != nil {
1306 return templ_7745c5c3_Err
1307 }
1308 var templ_7745c5c3_Var65 templ.SafeURL
1309 templ_7745c5c3_Var65, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Remove))
1310 if templ_7745c5c3_Err != nil {
1311 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 255, Col: 60}
1312 }
1313 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var65))
1314 if templ_7745c5c3_Err != nil {
1315 return templ_7745c5c3_Err
1316 }
1317 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 101, "\"><button type=\"submit\" class=\"btn danger\" aria-label=\"")
1318 if templ_7745c5c3_Err != nil {
1319 return templ_7745c5c3_Err
1320 }
1321 var templ_7745c5c3_Var66 string
1322 templ_7745c5c3_Var66, templ_7745c5c3_Err = templ.ResolveAttributeValue("Remove passkey " + r.Name)
1323 if templ_7745c5c3_Err != nil {
1324 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 256, Col: 89}
1325 }
1326 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var66)
1327 if templ_7745c5c3_Err != nil {
1328 return templ_7745c5c3_Err
1329 }
1330 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 102, "\">Remove</button></form></td></tr>")
1331 if templ_7745c5c3_Err != nil {
1332 return templ_7745c5c3_Err
1333 }
1334 }
1335 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 103, "</tbody></table>")
1336 if templ_7745c5c3_Err != nil {
1337 return templ_7745c5c3_Err
1338 }
1339 } else {
1340 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 104, "<p class=\"lede dim\">no passkeys yet.</p>")
1341 if templ_7745c5c3_Err != nil {
1342 return templ_7745c5c3_Err
1343 }
1344 }
1345 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 105, " ")
1346 if templ_7745c5c3_Err != nil {
1347 return templ_7745c5c3_Err
1348 }
1349 if p.Full {
1350 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 106, "<p class=\"dim\">")
1351 if templ_7745c5c3_Err != nil {
1352 return templ_7745c5c3_Err
1353 }
1354 var templ_7745c5c3_Var67 string
1355 templ_7745c5c3_Var67, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Max))
1356 if templ_7745c5c3_Err != nil {
1357 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 267, Col: 31}
1358 }
1359 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var67))
1360 if templ_7745c5c3_Err != nil {
1361 return templ_7745c5c3_Err
1362 }
1363 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 107, " passkeys are registered, the most there can be. Remove one to add another.</p>")
1364 if templ_7745c5c3_Err != nil {
1365 return templ_7745c5c3_Err
1366 }
1367 } else {
1368 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=\"")
1369 if templ_7745c5c3_Err != nil {
1370 return templ_7745c5c3_Err
1371 }
1372 var templ_7745c5c3_Var68 string
1373 templ_7745c5c3_Var68, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Begin)
1374 if templ_7745c5c3_Err != nil {
1375 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 272, Col: 90}
1376 }
1377 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var68)
1378 if templ_7745c5c3_Err != nil {
1379 return templ_7745c5c3_Err
1380 }
1381 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 109, "\" data-finish=\"")
1382 if templ_7745c5c3_Err != nil {
1383 return templ_7745c5c3_Err
1384 }
1385 var templ_7745c5c3_Var69 string
1386 templ_7745c5c3_Var69, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Finish)
1387 if templ_7745c5c3_Err != nil {
1388 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 272, Col: 115}
1389 }
1390 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var69)
1391 if templ_7745c5c3_Err != nil {
1392 return templ_7745c5c3_Err
1393 }
1394 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 110, "\">Add a passkey</button></form>")
1395 if templ_7745c5c3_Err != nil {
1396 return templ_7745c5c3_Err
1397 }
1398 }
1399 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 111, " <p class=\"dim\" role=\"status\" aria-live=\"polite\" data-passkey-status></p>")
1400 if templ_7745c5c3_Err != nil {
1401 return templ_7745c5c3_Err
1402 }
1403 return nil
1404 })
1405 templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var58), templ_7745c5c3_Buffer)
1406 if templ_7745c5c3_Err != nil {
1407 return templ_7745c5c3_Err
1408 }
1409 return nil
1410 })
1411}
1412
1413var _ = templruntime.GeneratedTemplate