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