v0.10.1 e4c85c7

actions_templ.go RawHistoryFolder

1// Code generated by templ - DO NOT EDIT.
2
3// templ: version: v0.3.1020
4package web
5
6//lint:file-ignore SA4006 This context is only used if a nested component is present.
7
8import "github.com/a-h/templ"
9import templruntime "github.com/a-h/templ/runtime"
10
11// The CI pages: the runs of a repository, a run with its jobs, a job with its
12// steps and its log (actions.go). A state is always a word as well as a
13// symbol and a colour.
14
15// CheckIcon is the symbol of a state: a mark in the colour of its kind, with
16// the state as its text for a screen reader.
17func CheckIcon(kind, state string) templ.Component {
18	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
19		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
20		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
21			return templ_7745c5c3_CtxErr
22		}
23		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
24		if !templ_7745c5c3_IsBuffer {
25			defer func() {
26				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
27				if templ_7745c5c3_Err == nil {
28					templ_7745c5c3_Err = templ_7745c5c3_BufErr
29				}
30			}()
31		}
32		ctx = templ.InitializeContext(ctx)
33		templ_7745c5c3_Var1 := templ.GetChildren(ctx)
34		if templ_7745c5c3_Var1 == nil {
35			templ_7745c5c3_Var1 = templ.NopComponent
36		}
37		ctx = templ.ClearChildren(ctx)
38		var templ_7745c5c3_Var2 = []any{"ck", "ck-" + kind}
39		templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var2...)
40		if templ_7745c5c3_Err != nil {
41			return templ_7745c5c3_Err
42		}
43		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<span class=\"")
44		if templ_7745c5c3_Err != nil {
45			return templ_7745c5c3_Err
46		}
47		var templ_7745c5c3_Var3 string
48		templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var2).String())
49		if templ_7745c5c3_Err != nil {
50			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 1, Col: 0}
51		}
52		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var3)
53		if templ_7745c5c3_Err != nil {
54			return templ_7745c5c3_Err
55		}
56		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "\" role=\"img\" aria-label=\"")
57		if templ_7745c5c3_Err != nil {
58			return templ_7745c5c3_Err
59		}
60		var templ_7745c5c3_Var4 string
61		templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.ResolveAttributeValue(state)
62		if templ_7745c5c3_Err != nil {
63			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 10, Col: 65}
64		}
65		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var4)
66		if templ_7745c5c3_Err != nil {
67			return templ_7745c5c3_Err
68		}
69		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "\" title=\"")
70		if templ_7745c5c3_Err != nil {
71			return templ_7745c5c3_Err
72		}
73		var templ_7745c5c3_Var5 string
74		templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.ResolveAttributeValue(state)
75		if templ_7745c5c3_Err != nil {
76			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 10, Col: 81}
77		}
78		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var5)
79		if templ_7745c5c3_Err != nil {
80			return templ_7745c5c3_Err
81		}
82		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "\"></span>")
83		if templ_7745c5c3_Err != nil {
84			return templ_7745c5c3_Err
85		}
86		return nil
87	})
88}
89
90func Actions(l Layout, p ActionsPage) templ.Component {
91	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
92		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
93		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
94			return templ_7745c5c3_CtxErr
95		}
96		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
97		if !templ_7745c5c3_IsBuffer {
98			defer func() {
99				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
100				if templ_7745c5c3_Err == nil {
101					templ_7745c5c3_Err = templ_7745c5c3_BufErr
102				}
103			}()
104		}
105		ctx = templ.InitializeContext(ctx)
106		templ_7745c5c3_Var6 := templ.GetChildren(ctx)
107		if templ_7745c5c3_Var6 == nil {
108			templ_7745c5c3_Var6 = templ.NopComponent
109		}
110		ctx = templ.ClearChildren(ctx)
111		templ_7745c5c3_Var7 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
112			templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
113			templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
114			if !templ_7745c5c3_IsBuffer {
115				defer func() {
116					templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
117					if templ_7745c5c3_Err == nil {
118						templ_7745c5c3_Err = templ_7745c5c3_BufErr
119					}
120				}()
121			}
122			ctx = templ.InitializeContext(ctx)
123			if len(p.Runs) == 0 {
124				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "<p class=\"dim\">no runs yet: a push that matches a workflow of .github/workflows starts one.</p>")
125				if templ_7745c5c3_Err != nil {
126					return templ_7745c5c3_Err
127				}
128			} else {
129				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "<table class=\"list runs\" aria-label=\"Runs\"><thead><tr><th class=\"c-st\"></th><th class=\"c-name\">workflow</th><th class=\"c-sub\">commit</th><th class=\"c-ref\">ref</th><th class=\"c-who\">actor</th><th class=\"c-dur\">time</th><th class=\"c-when\">created</th></tr></thead> <tbody id=\"run-rows\" data-rows>")
130				if templ_7745c5c3_Err != nil {
131					return templ_7745c5c3_Err
132				}
133				for _, r := range p.Runs {
134					templ_7745c5c3_Err = RunListRow(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, 7, "</tbody></table>")
140				if templ_7745c5c3_Err != nil {
141					return templ_7745c5c3_Err
142				}
143			}
144			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, " ")
145			if templ_7745c5c3_Err != nil {
146				return templ_7745c5c3_Err
147			}
148			if p.More != "" {
149				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "<p class=\"more\"><a href=\"")
150				if templ_7745c5c3_Err != nil {
151					return templ_7745c5c3_Err
152				}
153				var templ_7745c5c3_Var8 templ.SafeURL
154				templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.More))
155				if templ_7745c5c3_Err != nil {
156					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 30, Col: 50}
157				}
158				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
159				if templ_7745c5c3_Err != nil {
160					return templ_7745c5c3_Err
161				}
162				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "\" rel=\"next\">older runs</a></p>")
163				if templ_7745c5c3_Err != nil {
164					return templ_7745c5c3_Err
165				}
166			}
167			return nil
168		})
169		templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var7), templ_7745c5c3_Buffer)
170		if templ_7745c5c3_Err != nil {
171			return templ_7745c5c3_Err
172		}
173		return nil
174	})
175}
176
177// RunListRow is a row of the list of runs; its id is the target of the live
178// updates.
179func RunListRow(r RunRow) templ.Component {
180	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
181		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
182		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
183			return templ_7745c5c3_CtxErr
184		}
185		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
186		if !templ_7745c5c3_IsBuffer {
187			defer func() {
188				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
189				if templ_7745c5c3_Err == nil {
190					templ_7745c5c3_Err = templ_7745c5c3_BufErr
191				}
192			}()
193		}
194		ctx = templ.InitializeContext(ctx)
195		templ_7745c5c3_Var9 := templ.GetChildren(ctx)
196		if templ_7745c5c3_Var9 == nil {
197			templ_7745c5c3_Var9 = templ.NopComponent
198		}
199		ctx = templ.ClearChildren(ctx)
200		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "<tr id=\"")
201		if templ_7745c5c3_Err != nil {
202			return templ_7745c5c3_Err
203		}
204		var templ_7745c5c3_Var10 string
205		templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.ResolveAttributeValue("run-" + r.ID)
206		if templ_7745c5c3_Err != nil {
207			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 38, Col: 23}
208		}
209		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var10)
210		if templ_7745c5c3_Err != nil {
211			return templ_7745c5c3_Err
212		}
213		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "\"><td class=\"c-st\">")
214		if templ_7745c5c3_Err != nil {
215			return templ_7745c5c3_Err
216		}
217		templ_7745c5c3_Err = CheckIcon(r.Kind, r.State).Render(ctx, templ_7745c5c3_Buffer)
218		if templ_7745c5c3_Err != nil {
219			return templ_7745c5c3_Err
220		}
221		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "</td><td class=\"c-name\"><a href=\"")
222		if templ_7745c5c3_Err != nil {
223			return templ_7745c5c3_Err
224		}
225		var templ_7745c5c3_Var11 templ.SafeURL
226		templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href))
227		if templ_7745c5c3_Err != nil {
228			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 41, Col: 34}
229		}
230		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11))
231		if templ_7745c5c3_Err != nil {
232			return templ_7745c5c3_Err
233		}
234		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "\">")
235		if templ_7745c5c3_Err != nil {
236			return templ_7745c5c3_Err
237		}
238		var templ_7745c5c3_Var12 string
239		templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(r.Workflow)
240		if templ_7745c5c3_Err != nil {
241			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 41, Col: 49}
242		}
243		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
244		if templ_7745c5c3_Err != nil {
245			return templ_7745c5c3_Err
246		}
247		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "</a> <span class=\"mute\">")
248		if templ_7745c5c3_Err != nil {
249			return templ_7745c5c3_Err
250		}
251		var templ_7745c5c3_Var13 string
252		templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(r.Number)
253		if templ_7745c5c3_Err != nil {
254			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 42, Col: 32}
255		}
256		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13))
257		if templ_7745c5c3_Err != nil {
258			return templ_7745c5c3_Err
259		}
260		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "</span> ")
261		if templ_7745c5c3_Err != nil {
262			return templ_7745c5c3_Err
263		}
264		if r.Attempt > 1 {
265			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "<span class=\"pill\">attempt ")
266			if templ_7745c5c3_Err != nil {
267				return templ_7745c5c3_Err
268			}
269			var templ_7745c5c3_Var14 string
270			templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(int(r.Attempt)))
271			if templ_7745c5c3_Err != nil {
272				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 44, Col: 53}
273			}
274			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14))
275			if templ_7745c5c3_Err != nil {
276				return templ_7745c5c3_Err
277			}
278			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "</span>")
279			if templ_7745c5c3_Err != nil {
280				return templ_7745c5c3_Err
281			}
282		}
283		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "</td><td class=\"c-sub\"><a href=\"")
284		if templ_7745c5c3_Err != nil {
285			return templ_7745c5c3_Err
286		}
287		var templ_7745c5c3_Var15 templ.SafeURL
288		templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.CHref))
289		if templ_7745c5c3_Err != nil {
290			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 47, Col: 52}
291		}
292		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15))
293		if templ_7745c5c3_Err != nil {
294			return templ_7745c5c3_Err
295		}
296		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "\">")
297		if templ_7745c5c3_Err != nil {
298			return templ_7745c5c3_Err
299		}
300		var templ_7745c5c3_Var16 string
301		templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short)
302		if templ_7745c5c3_Err != nil {
303			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 47, Col: 64}
304		}
305		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16))
306		if templ_7745c5c3_Err != nil {
307			return templ_7745c5c3_Err
308		}
309		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "</a> ")
310		if templ_7745c5c3_Err != nil {
311			return templ_7745c5c3_Err
312		}
313		var templ_7745c5c3_Var17 string
314		templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(r.Title)
315		if templ_7745c5c3_Err != nil {
316			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 47, Col: 80}
317		}
318		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17))
319		if templ_7745c5c3_Err != nil {
320			return templ_7745c5c3_Err
321		}
322		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "</td><td class=\"c-ref\"><a href=\"")
323		if templ_7745c5c3_Err != nil {
324			return templ_7745c5c3_Err
325		}
326		var templ_7745c5c3_Var18 templ.SafeURL
327		templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.RefHref))
328		if templ_7745c5c3_Err != nil {
329			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 48, Col: 54}
330		}
331		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18))
332		if templ_7745c5c3_Err != nil {
333			return templ_7745c5c3_Err
334		}
335		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "\">")
336		if templ_7745c5c3_Err != nil {
337			return templ_7745c5c3_Err
338		}
339		var templ_7745c5c3_Var19 string
340		templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(r.Ref)
341		if templ_7745c5c3_Err != nil {
342			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 48, Col: 64}
343		}
344		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19))
345		if templ_7745c5c3_Err != nil {
346			return templ_7745c5c3_Err
347		}
348		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "</a></td><td class=\"c-who dim\">")
349		if templ_7745c5c3_Err != nil {
350			return templ_7745c5c3_Err
351		}
352		var templ_7745c5c3_Var20 string
353		templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinStringErrs(r.Actor)
354		if templ_7745c5c3_Err != nil {
355			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 49, Col: 33}
356		}
357		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20))
358		if templ_7745c5c3_Err != nil {
359			return templ_7745c5c3_Err
360		}
361		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "</td><td class=\"c-dur dim\">")
362		if templ_7745c5c3_Err != nil {
363			return templ_7745c5c3_Err
364		}
365		var templ_7745c5c3_Var21 string
366		templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinStringErrs(r.State)
367		if templ_7745c5c3_Err != nil {
368			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 50, Col: 33}
369		}
370		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21))
371		if templ_7745c5c3_Err != nil {
372			return templ_7745c5c3_Err
373		}
374		var templ_7745c5c3_Var22 string
375		templ_7745c5c3_Var22, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
376		if templ_7745c5c3_Err != nil {
377			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 50, Col: 40}
378		}
379		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var22))
380		if templ_7745c5c3_Err != nil {
381			return templ_7745c5c3_Err
382		}
383		var templ_7745c5c3_Var23 string
384		templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(r.Duration)
385		if templ_7745c5c3_Err != nil {
386			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 50, Col: 54}
387		}
388		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23))
389		if templ_7745c5c3_Err != nil {
390			return templ_7745c5c3_Err
391		}
392		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "</td><td class=\"c-when dim\">")
393		if templ_7745c5c3_Err != nil {
394			return templ_7745c5c3_Err
395		}
396		if r.WhenAt != "" {
397			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "<time datetime=\"")
398			if templ_7745c5c3_Err != nil {
399				return templ_7745c5c3_Err
400			}
401			var templ_7745c5c3_Var24 string
402			templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
403			if templ_7745c5c3_Err != nil {
404				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 53, Col: 29}
405			}
406			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var24)
407			if templ_7745c5c3_Err != nil {
408				return templ_7745c5c3_Err
409			}
410			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "\" title=\"")
411			if templ_7745c5c3_Err != nil {
412				return templ_7745c5c3_Err
413			}
414			var templ_7745c5c3_Var25 string
415			templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
416			if templ_7745c5c3_Err != nil {
417				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 53, Col: 48}
418			}
419			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var25)
420			if templ_7745c5c3_Err != nil {
421				return templ_7745c5c3_Err
422			}
423			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "\">")
424			if templ_7745c5c3_Err != nil {
425				return templ_7745c5c3_Err
426			}
427			var templ_7745c5c3_Var26 string
428			templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(r.When)
429			if templ_7745c5c3_Err != nil {
430				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 53, Col: 59}
431			}
432			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26))
433			if templ_7745c5c3_Err != nil {
434				return templ_7745c5c3_Err
435			}
436			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "</time>")
437			if templ_7745c5c3_Err != nil {
438				return templ_7745c5c3_Err
439			}
440		}
441		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "</td></tr>")
442		if templ_7745c5c3_Err != nil {
443			return templ_7745c5c3_Err
444		}
445		return nil
446	})
447}
448
449// RecentActionsBlock is the "Recent actions" section of the summary rail; its
450// id is the target of the live updates. Without a run it is hidden.
451func RecentActionsBlock(a RecentActions) templ.Component {
452	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
453		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
454		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
455			return templ_7745c5c3_CtxErr
456		}
457		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
458		if !templ_7745c5c3_IsBuffer {
459			defer func() {
460				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
461				if templ_7745c5c3_Err == nil {
462					templ_7745c5c3_Err = templ_7745c5c3_BufErr
463				}
464			}()
465		}
466		ctx = templ.InitializeContext(ctx)
467		templ_7745c5c3_Var27 := templ.GetChildren(ctx)
468		if templ_7745c5c3_Var27 == nil {
469			templ_7745c5c3_Var27 = templ.NopComponent
470		}
471		ctx = templ.ClearChildren(ctx)
472		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "<section id=\"recent-actions\" aria-labelledby=\"r-actions\"")
473		if templ_7745c5c3_Err != nil {
474			return templ_7745c5c3_Err
475		}
476		if len(a.Runs) == 0 {
477			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, " hidden")
478			if templ_7745c5c3_Err != nil {
479				return templ_7745c5c3_Err
480			}
481		}
482		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "><h2 id=\"r-actions\">Recent actions <a href=\"")
483		if templ_7745c5c3_Err != nil {
484			return templ_7745c5c3_Err
485		}
486		var templ_7745c5c3_Var28 templ.SafeURL
487		templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(a.AllHref))
488		if templ_7745c5c3_Err != nil {
489			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 63, Col: 70}
490		}
491		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var28))
492		if templ_7745c5c3_Err != nil {
493			return templ_7745c5c3_Err
494		}
495		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "\">View all</a></h2><ul class=\"rruns\">")
496		if templ_7745c5c3_Err != nil {
497			return templ_7745c5c3_Err
498		}
499		for _, r := range a.Runs {
500			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "<li>")
501			if templ_7745c5c3_Err != nil {
502				return templ_7745c5c3_Err
503			}
504			templ_7745c5c3_Err = CheckIcon(r.Kind, r.State).Render(ctx, templ_7745c5c3_Buffer)
505			if templ_7745c5c3_Err != nil {
506				return templ_7745c5c3_Err
507			}
508			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "<a class=\"rr-name\" href=\"")
509			if templ_7745c5c3_Err != nil {
510				return templ_7745c5c3_Err
511			}
512			var templ_7745c5c3_Var29 templ.SafeURL
513			templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href))
514			if templ_7745c5c3_Err != nil {
515				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 68, Col: 52}
516			}
517			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var29))
518			if templ_7745c5c3_Err != nil {
519				return templ_7745c5c3_Err
520			}
521			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "\" title=\"")
522			if templ_7745c5c3_Err != nil {
523				return templ_7745c5c3_Err
524			}
525			var templ_7745c5c3_Var30 string
526			templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.Workflow + " " + r.Number + " · " + r.State)
527			if templ_7745c5c3_Err != nil {
528				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 68, Col: 109}
529			}
530			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var30)
531			if templ_7745c5c3_Err != nil {
532				return templ_7745c5c3_Err
533			}
534			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "\">")
535			if templ_7745c5c3_Err != nil {
536				return templ_7745c5c3_Err
537			}
538			var templ_7745c5c3_Var31 string
539			templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinStringErrs(r.Workflow)
540			if templ_7745c5c3_Err != nil {
541				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 68, Col: 124}
542			}
543			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31))
544			if templ_7745c5c3_Err != nil {
545				return templ_7745c5c3_Err
546			}
547			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "</a> <span class=\"mute\">")
548			if templ_7745c5c3_Err != nil {
549				return templ_7745c5c3_Err
550			}
551			var templ_7745c5c3_Var32 string
552			templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(r.Number)
553			if templ_7745c5c3_Err != nil {
554				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 69, Col: 34}
555			}
556			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32))
557			if templ_7745c5c3_Err != nil {
558				return templ_7745c5c3_Err
559			}
560			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "</span> <a class=\"rr-ref\" href=\"")
561			if templ_7745c5c3_Err != nil {
562				return templ_7745c5c3_Err
563			}
564			var templ_7745c5c3_Var33 templ.SafeURL
565			templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.RefHref))
566			if templ_7745c5c3_Err != nil {
567				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 70, Col: 54}
568			}
569			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33))
570			if templ_7745c5c3_Err != nil {
571				return templ_7745c5c3_Err
572			}
573			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "\">")
574			if templ_7745c5c3_Err != nil {
575				return templ_7745c5c3_Err
576			}
577			var templ_7745c5c3_Var34 string
578			templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(r.Ref)
579			if templ_7745c5c3_Err != nil {
580				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 70, Col: 64}
581			}
582			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34))
583			if templ_7745c5c3_Err != nil {
584				return templ_7745c5c3_Err
585			}
586			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "</a> ")
587			if templ_7745c5c3_Err != nil {
588				return templ_7745c5c3_Err
589			}
590			if r.WhenAt != "" {
591				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "<time class=\"dim\" datetime=\"")
592				if templ_7745c5c3_Err != nil {
593					return templ_7745c5c3_Err
594				}
595				var templ_7745c5c3_Var35 string
596				templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
597				if templ_7745c5c3_Err != nil {
598					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 72, Col: 43}
599				}
600				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var35)
601				if templ_7745c5c3_Err != nil {
602					return templ_7745c5c3_Err
603				}
604				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "\" title=\"")
605				if templ_7745c5c3_Err != nil {
606					return templ_7745c5c3_Err
607				}
608				var templ_7745c5c3_Var36 string
609				templ_7745c5c3_Var36, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
610				if templ_7745c5c3_Err != nil {
611					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 72, Col: 62}
612				}
613				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var36)
614				if templ_7745c5c3_Err != nil {
615					return templ_7745c5c3_Err
616				}
617				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "\">")
618				if templ_7745c5c3_Err != nil {
619					return templ_7745c5c3_Err
620				}
621				var templ_7745c5c3_Var37 string
622				templ_7745c5c3_Var37, templ_7745c5c3_Err = templ.JoinStringErrs(r.When)
623				if templ_7745c5c3_Err != nil {
624					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 72, Col: 73}
625				}
626				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var37))
627				if templ_7745c5c3_Err != nil {
628					return templ_7745c5c3_Err
629				}
630				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "</time>")
631				if templ_7745c5c3_Err != nil {
632					return templ_7745c5c3_Err
633				}
634			}
635			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "</li>")
636			if templ_7745c5c3_Err != nil {
637				return templ_7745c5c3_Err
638			}
639		}
640		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "</ul></section>")
641		if templ_7745c5c3_Err != nil {
642			return templ_7745c5c3_Err
643		}
644		return nil
645	})
646}
647
648func RunDetail(l Layout, p RunPage) templ.Component {
649	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
650		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
651		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
652			return templ_7745c5c3_CtxErr
653		}
654		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
655		if !templ_7745c5c3_IsBuffer {
656			defer func() {
657				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
658				if templ_7745c5c3_Err == nil {
659					templ_7745c5c3_Err = templ_7745c5c3_BufErr
660				}
661			}()
662		}
663		ctx = templ.InitializeContext(ctx)
664		templ_7745c5c3_Var38 := templ.GetChildren(ctx)
665		if templ_7745c5c3_Var38 == nil {
666			templ_7745c5c3_Var38 = templ.NopComponent
667		}
668		ctx = templ.ClearChildren(ctx)
669		templ_7745c5c3_Var39 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
670			templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
671			templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
672			if !templ_7745c5c3_IsBuffer {
673				defer func() {
674					templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
675					if templ_7745c5c3_Err == nil {
676						templ_7745c5c3_Err = templ_7745c5c3_BufErr
677					}
678				}()
679			}
680			ctx = templ.InitializeContext(ctx)
681			templ_7745c5c3_Err = LiveSlot("run-notice").Render(ctx, templ_7745c5c3_Buffer)
682			if templ_7745c5c3_Err != nil {
683				return templ_7745c5c3_Err
684			}
685			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, " <div id=\"run-body\">")
686			if templ_7745c5c3_Err != nil {
687				return templ_7745c5c3_Err
688			}
689			templ_7745c5c3_Err = RunBody(p).Render(ctx, templ_7745c5c3_Buffer)
690			if templ_7745c5c3_Err != nil {
691				return templ_7745c5c3_Err
692			}
693			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "</div>")
694			if templ_7745c5c3_Err != nil {
695				return templ_7745c5c3_Err
696			}
697			templ_7745c5c3_Err = RunSummaries(p.Summaries, p.SummariesMore).Render(ctx, templ_7745c5c3_Buffer)
698			if templ_7745c5c3_Err != nil {
699				return templ_7745c5c3_Err
700			}
701			return nil
702		})
703		templ_7745c5c3_Err = Shell(l, runRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var39), templ_7745c5c3_Buffer)
704		if templ_7745c5c3_Err != nil {
705			return templ_7745c5c3_Err
706		}
707		return nil
708	})
709}
710
711// runBodyFragment is the body of the run page as a live fragment.
712func runBodyFragment(p RunPage) templ.Component {
713	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
714		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
715		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
716			return templ_7745c5c3_CtxErr
717		}
718		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
719		if !templ_7745c5c3_IsBuffer {
720			defer func() {
721				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
722				if templ_7745c5c3_Err == nil {
723					templ_7745c5c3_Err = templ_7745c5c3_BufErr
724				}
725			}()
726		}
727		ctx = templ.InitializeContext(ctx)
728		templ_7745c5c3_Var40 := templ.GetChildren(ctx)
729		if templ_7745c5c3_Var40 == nil {
730			templ_7745c5c3_Var40 = templ.NopComponent
731		}
732		ctx = templ.ClearChildren(ctx)
733		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "<div id=\"run-body\">")
734		if templ_7745c5c3_Err != nil {
735			return templ_7745c5c3_Err
736		}
737		templ_7745c5c3_Err = RunBody(p).Render(ctx, templ_7745c5c3_Buffer)
738		if templ_7745c5c3_Err != nil {
739			return templ_7745c5c3_Err
740		}
741		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "</div>")
742		if templ_7745c5c3_Err != nil {
743			return templ_7745c5c3_Err
744		}
745		return nil
746	})
747}
748
749// RunBody is the jobs of a run, replaced by the live updates.
750func RunBody(p RunPage) templ.Component {
751	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
752		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
753		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
754			return templ_7745c5c3_CtxErr
755		}
756		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
757		if !templ_7745c5c3_IsBuffer {
758			defer func() {
759				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
760				if templ_7745c5c3_Err == nil {
761					templ_7745c5c3_Err = templ_7745c5c3_BufErr
762				}
763			}()
764		}
765		ctx = templ.InitializeContext(ctx)
766		templ_7745c5c3_Var41 := templ.GetChildren(ctx)
767		if templ_7745c5c3_Var41 == nil {
768			templ_7745c5c3_Var41 = templ.NopComponent
769		}
770		ctx = templ.ClearChildren(ctx)
771		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "<h2 class=\"run-h\">")
772		if templ_7745c5c3_Err != nil {
773			return templ_7745c5c3_Err
774		}
775		templ_7745c5c3_Err = CheckIcon(p.Kind, p.State).Render(ctx, templ_7745c5c3_Buffer)
776		if templ_7745c5c3_Err != nil {
777			return templ_7745c5c3_Err
778		}
779		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "<span>")
780		if templ_7745c5c3_Err != nil {
781			return templ_7745c5c3_Err
782		}
783		var templ_7745c5c3_Var42 string
784		templ_7745c5c3_Var42, templ_7745c5c3_Err = templ.JoinStringErrs(p.Workflow)
785		if templ_7745c5c3_Err != nil {
786			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 99, Col: 64}
787		}
788		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var42))
789		if templ_7745c5c3_Err != nil {
790			return templ_7745c5c3_Err
791		}
792		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "</span> <span class=\"mute\">")
793		if templ_7745c5c3_Err != nil {
794			return templ_7745c5c3_Err
795		}
796		var templ_7745c5c3_Var43 string
797		templ_7745c5c3_Var43, templ_7745c5c3_Err = templ.JoinStringErrs(p.Number)
798		if templ_7745c5c3_Err != nil {
799			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 99, Col: 103}
800		}
801		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var43))
802		if templ_7745c5c3_Err != nil {
803			return templ_7745c5c3_Err
804		}
805		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "</span></h2>")
806		if templ_7745c5c3_Err != nil {
807			return templ_7745c5c3_Err
808		}
809		if p.Error != "" {
810			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "<pre class=\"run-err\">")
811			if templ_7745c5c3_Err != nil {
812				return templ_7745c5c3_Err
813			}
814			var templ_7745c5c3_Var44 string
815			templ_7745c5c3_Var44, templ_7745c5c3_Err = templ.JoinStringErrs(p.Error)
816			if templ_7745c5c3_Err != nil {
817				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 101, Col: 32}
818			}
819			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var44))
820			if templ_7745c5c3_Err != nil {
821				return templ_7745c5c3_Err
822			}
823			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "</pre>")
824			if templ_7745c5c3_Err != nil {
825				return templ_7745c5c3_Err
826			}
827		}
828		if len(p.Annotations) > 0 {
829			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "<section class=\"annots\" aria-labelledby=\"run-annots\"><h3 id=\"run-annots\">Annotations <span class=\"count\">")
830			if templ_7745c5c3_Err != nil {
831				return templ_7745c5c3_Err
832			}
833			var templ_7745c5c3_Var45 string
834			templ_7745c5c3_Var45, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.Annotations)))
835			if templ_7745c5c3_Err != nil {
836				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 105, Col: 81}
837			}
838			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var45))
839			if templ_7745c5c3_Err != nil {
840				return templ_7745c5c3_Err
841			}
842			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "</span></h3>")
843			if templ_7745c5c3_Err != nil {
844				return templ_7745c5c3_Err
845			}
846			templ_7745c5c3_Err = AnnotationList(p.Annotations, p.AnnotationsMore, false).Render(ctx, templ_7745c5c3_Buffer)
847			if templ_7745c5c3_Err != nil {
848				return templ_7745c5c3_Err
849			}
850			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "</section>")
851			if templ_7745c5c3_Err != nil {
852				return templ_7745c5c3_Err
853			}
854		}
855		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "<ul class=\"jobs\">")
856		if templ_7745c5c3_Err != nil {
857			return templ_7745c5c3_Err
858		}
859		for _, j := range p.Jobs {
860			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "<li id=\"")
861			if templ_7745c5c3_Err != nil {
862				return templ_7745c5c3_Err
863			}
864			var templ_7745c5c3_Var46 string
865			templ_7745c5c3_Var46, templ_7745c5c3_Err = templ.ResolveAttributeValue("job-" + j.ID)
866			if templ_7745c5c3_Err != nil {
867				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 111, Col: 25}
868			}
869			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var46)
870			if templ_7745c5c3_Err != nil {
871				return templ_7745c5c3_Err
872			}
873			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, "\"><a class=\"job-h\" href=\"")
874			if templ_7745c5c3_Err != nil {
875				return templ_7745c5c3_Err
876			}
877			var templ_7745c5c3_Var47 templ.SafeURL
878			templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(j.Href))
879			if templ_7745c5c3_Err != nil {
880				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 112, Col: 49}
881			}
882			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var47))
883			if templ_7745c5c3_Err != nil {
884				return templ_7745c5c3_Err
885			}
886			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "\">")
887			if templ_7745c5c3_Err != nil {
888				return templ_7745c5c3_Err
889			}
890			templ_7745c5c3_Err = CheckIcon(j.Kind, j.State).Render(ctx, templ_7745c5c3_Buffer)
891			if templ_7745c5c3_Err != nil {
892				return templ_7745c5c3_Err
893			}
894			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "<span class=\"j-name\">")
895			if templ_7745c5c3_Err != nil {
896				return templ_7745c5c3_Err
897			}
898			var templ_7745c5c3_Var48 string
899			templ_7745c5c3_Var48, templ_7745c5c3_Err = templ.JoinStringErrs(j.Name)
900			if templ_7745c5c3_Err != nil {
901				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 114, Col: 34}
902			}
903			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var48))
904			if templ_7745c5c3_Err != nil {
905				return templ_7745c5c3_Err
906			}
907			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, "</span> <span class=\"dim\">")
908			if templ_7745c5c3_Err != nil {
909				return templ_7745c5c3_Err
910			}
911			var templ_7745c5c3_Var49 string
912			templ_7745c5c3_Var49, templ_7745c5c3_Err = templ.JoinStringErrs(j.State)
913			if templ_7745c5c3_Err != nil {
914				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 115, Col: 32}
915			}
916			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var49))
917			if templ_7745c5c3_Err != nil {
918				return templ_7745c5c3_Err
919			}
920			var templ_7745c5c3_Var50 string
921			templ_7745c5c3_Var50, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
922			if templ_7745c5c3_Err != nil {
923				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 115, Col: 39}
924			}
925			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var50))
926			if templ_7745c5c3_Err != nil {
927				return templ_7745c5c3_Err
928			}
929			var templ_7745c5c3_Var51 string
930			templ_7745c5c3_Var51, templ_7745c5c3_Err = templ.JoinStringErrs(j.Duration)
931			if templ_7745c5c3_Err != nil {
932				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 115, Col: 53}
933			}
934			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var51))
935			if templ_7745c5c3_Err != nil {
936				return templ_7745c5c3_Err
937			}
938			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, "</span></a> ")
939			if templ_7745c5c3_Err != nil {
940				return templ_7745c5c3_Err
941			}
942			if j.Runner != "" {
943				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "<span class=\"mute\">on ")
944				if templ_7745c5c3_Err != nil {
945					return templ_7745c5c3_Err
946				}
947				var templ_7745c5c3_Var52 string
948				templ_7745c5c3_Var52, templ_7745c5c3_Err = templ.JoinStringErrs(runnerText(j))
949				if templ_7745c5c3_Err != nil {
950					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 118, Col: 42}
951				}
952				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var52))
953				if templ_7745c5c3_Err != nil {
954					return templ_7745c5c3_Err
955				}
956				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "</span> ")
957				if templ_7745c5c3_Err != nil {
958					return templ_7745c5c3_Err
959				}
960			}
961			if len(j.Needs) > 0 {
962				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, "<span class=\"mute\">needs ")
963				if templ_7745c5c3_Err != nil {
964					return templ_7745c5c3_Err
965				}
966				var templ_7745c5c3_Var53 string
967				templ_7745c5c3_Var53, templ_7745c5c3_Err = templ.JoinStringErrs(joinWords(j.Needs))
968				if templ_7745c5c3_Err != nil {
969					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 121, Col: 50}
970				}
971				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var53))
972				if templ_7745c5c3_Err != nil {
973					return templ_7745c5c3_Err
974				}
975				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "</span> ")
976				if templ_7745c5c3_Err != nil {
977					return templ_7745c5c3_Err
978				}
979			}
980			if j.Error != "" {
981				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, "<p class=\"job-err\">")
982				if templ_7745c5c3_Err != nil {
983					return templ_7745c5c3_Err
984				}
985				var templ_7745c5c3_Var54 string
986				templ_7745c5c3_Var54, templ_7745c5c3_Err = templ.JoinStringErrs(j.Error)
987				if templ_7745c5c3_Err != nil {
988					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 124, Col: 33}
989				}
990				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var54))
991				if templ_7745c5c3_Err != nil {
992					return templ_7745c5c3_Err
993				}
994				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 75, "</p>")
995				if templ_7745c5c3_Err != nil {
996					return templ_7745c5c3_Err
997				}
998			}
999			if len(j.Steps) > 0 {
1000				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 76, "<ol class=\"steps\">")
1001				if templ_7745c5c3_Err != nil {
1002					return templ_7745c5c3_Err
1003				}
1004				for _, s := range j.Steps {
1005					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 77, "<li>")
1006					if templ_7745c5c3_Err != nil {
1007						return templ_7745c5c3_Err
1008					}
1009					templ_7745c5c3_Err = CheckIcon(s.Kind, s.State).Render(ctx, templ_7745c5c3_Buffer)
1010					if templ_7745c5c3_Err != nil {
1011						return templ_7745c5c3_Err
1012					}
1013					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 78, "<span>")
1014					if templ_7745c5c3_Err != nil {
1015						return templ_7745c5c3_Err
1016					}
1017					var templ_7745c5c3_Var55 string
1018					templ_7745c5c3_Var55, templ_7745c5c3_Err = templ.JoinStringErrs(s.Name)
1019					if templ_7745c5c3_Err != nil {
1020						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 129, Col: 53}
1021					}
1022					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var55))
1023					if templ_7745c5c3_Err != nil {
1024						return templ_7745c5c3_Err
1025					}
1026					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 79, "</span> <span class=\"dim\">")
1027					if templ_7745c5c3_Err != nil {
1028						return templ_7745c5c3_Err
1029					}
1030					var templ_7745c5c3_Var56 string
1031					templ_7745c5c3_Var56, templ_7745c5c3_Err = templ.JoinStringErrs(s.Duration)
1032					if templ_7745c5c3_Err != nil {
1033						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 129, Col: 93}
1034					}
1035					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var56))
1036					if templ_7745c5c3_Err != nil {
1037						return templ_7745c5c3_Err
1038					}
1039					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 80, "</span></li>")
1040					if templ_7745c5c3_Err != nil {
1041						return templ_7745c5c3_Err
1042					}
1043				}
1044				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 81, "</ol>")
1045				if templ_7745c5c3_Err != nil {
1046					return templ_7745c5c3_Err
1047				}
1048			}
1049			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 82, "</li>")
1050			if templ_7745c5c3_Err != nil {
1051				return templ_7745c5c3_Err
1052			}
1053		}
1054		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 83, "</ul>")
1055		if templ_7745c5c3_Err != nil {
1056			return templ_7745c5c3_Err
1057		}
1058		return nil
1059	})
1060}
1061
1062// AnnotationList is a list of annotations: the level as a mark with its word,
1063// the job and the step, the title and the message, and file:line. Everything
1064// comes from the workflow and is text. Without grouped, each item names its job (the
1065// run page); grouped lists the annotations by step instead (the job page).
1066func AnnotationList(anns []AnnotationView, more bool, grouped bool) templ.Component {
1067	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1068		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1069		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1070			return templ_7745c5c3_CtxErr
1071		}
1072		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1073		if !templ_7745c5c3_IsBuffer {
1074			defer func() {
1075				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1076				if templ_7745c5c3_Err == nil {
1077					templ_7745c5c3_Err = templ_7745c5c3_BufErr
1078				}
1079			}()
1080		}
1081		ctx = templ.InitializeContext(ctx)
1082		templ_7745c5c3_Var57 := templ.GetChildren(ctx)
1083		if templ_7745c5c3_Var57 == nil {
1084			templ_7745c5c3_Var57 = templ.NopComponent
1085		}
1086		ctx = templ.ClearChildren(ctx)
1087		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 84, "<ul class=\"annot-list\">")
1088		if templ_7745c5c3_Err != nil {
1089			return templ_7745c5c3_Err
1090		}
1091		for _, a := range anns {
1092			var templ_7745c5c3_Var58 = []any{"annot", "annot-" + a.Kind}
1093			templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var58...)
1094			if templ_7745c5c3_Err != nil {
1095				return templ_7745c5c3_Err
1096			}
1097			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 85, "<li class=\"")
1098			if templ_7745c5c3_Err != nil {
1099				return templ_7745c5c3_Err
1100			}
1101			var templ_7745c5c3_Var59 string
1102			templ_7745c5c3_Var59, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var58).String())
1103			if templ_7745c5c3_Err != nil {
1104				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 1, Col: 0}
1105			}
1106			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var59)
1107			if templ_7745c5c3_Err != nil {
1108				return templ_7745c5c3_Err
1109			}
1110			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 86, "\">")
1111			if templ_7745c5c3_Err != nil {
1112				return templ_7745c5c3_Err
1113			}
1114			if grouped && a.StepHead {
1115				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 87, "<p class=\"annot-step\">")
1116				if templ_7745c5c3_Err != nil {
1117					return templ_7745c5c3_Err
1118				}
1119				if a.StepHref != "" {
1120					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 88, "<a href=\"")
1121					if templ_7745c5c3_Err != nil {
1122						return templ_7745c5c3_Err
1123					}
1124					var templ_7745c5c3_Var60 templ.SafeURL
1125					templ_7745c5c3_Var60, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(a.StepHref))
1126					if templ_7745c5c3_Err != nil {
1127						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 149, Col: 42}
1128					}
1129					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var60))
1130					if templ_7745c5c3_Err != nil {
1131						return templ_7745c5c3_Err
1132					}
1133					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 89, "\">")
1134					if templ_7745c5c3_Err != nil {
1135						return templ_7745c5c3_Err
1136					}
1137					var templ_7745c5c3_Var61 string
1138					templ_7745c5c3_Var61, templ_7745c5c3_Err = templ.JoinStringErrs(a.Step)
1139					if templ_7745c5c3_Err != nil {
1140						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 149, Col: 53}
1141					}
1142					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var61))
1143					if templ_7745c5c3_Err != nil {
1144						return templ_7745c5c3_Err
1145					}
1146					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 90, "</a>")
1147					if templ_7745c5c3_Err != nil {
1148						return templ_7745c5c3_Err
1149					}
1150				} else {
1151					var templ_7745c5c3_Var62 string
1152					templ_7745c5c3_Var62, templ_7745c5c3_Err = templ.JoinStringErrs(a.Step)
1153					if templ_7745c5c3_Err != nil {
1154						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 151, Col: 15}
1155					}
1156					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var62))
1157					if templ_7745c5c3_Err != nil {
1158						return templ_7745c5c3_Err
1159					}
1160				}
1161				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, "</p>")
1162				if templ_7745c5c3_Err != nil {
1163					return templ_7745c5c3_Err
1164				}
1165			}
1166			var templ_7745c5c3_Var63 = []any{"an", "an-" + a.Kind}
1167			templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var63...)
1168			if templ_7745c5c3_Err != nil {
1169				return templ_7745c5c3_Err
1170			}
1171			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 92, "<span class=\"")
1172			if templ_7745c5c3_Err != nil {
1173				return templ_7745c5c3_Err
1174			}
1175			var templ_7745c5c3_Var64 string
1176			templ_7745c5c3_Var64, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var63).String())
1177			if templ_7745c5c3_Err != nil {
1178				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 1, Col: 0}
1179			}
1180			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var64)
1181			if templ_7745c5c3_Err != nil {
1182				return templ_7745c5c3_Err
1183			}
1184			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 93, "\" role=\"img\" aria-label=\"")
1185			if templ_7745c5c3_Err != nil {
1186				return templ_7745c5c3_Err
1187			}
1188			var templ_7745c5c3_Var65 string
1189			templ_7745c5c3_Var65, templ_7745c5c3_Err = templ.ResolveAttributeValue(a.Level)
1190			if templ_7745c5c3_Err != nil {
1191				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 155, Col: 72}
1192			}
1193			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var65)
1194			if templ_7745c5c3_Err != nil {
1195				return templ_7745c5c3_Err
1196			}
1197			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 94, "\" title=\"")
1198			if templ_7745c5c3_Err != nil {
1199				return templ_7745c5c3_Err
1200			}
1201			var templ_7745c5c3_Var66 string
1202			templ_7745c5c3_Var66, templ_7745c5c3_Err = templ.ResolveAttributeValue(a.Level)
1203			if templ_7745c5c3_Err != nil {
1204				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 155, Col: 90}
1205			}
1206			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var66)
1207			if templ_7745c5c3_Err != nil {
1208				return templ_7745c5c3_Err
1209			}
1210			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 95, "\"></span><div class=\"annot-body\"><p class=\"annot-head\"><span class=\"annot-level\">")
1211			if templ_7745c5c3_Err != nil {
1212				return templ_7745c5c3_Err
1213			}
1214			var templ_7745c5c3_Var67 string
1215			templ_7745c5c3_Var67, templ_7745c5c3_Err = templ.JoinStringErrs(a.Level)
1216			if templ_7745c5c3_Err != nil {
1217				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 158, Col: 41}
1218			}
1219			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var67))
1220			if templ_7745c5c3_Err != nil {
1221				return templ_7745c5c3_Err
1222			}
1223			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 96, "</span> ")
1224			if templ_7745c5c3_Err != nil {
1225				return templ_7745c5c3_Err
1226			}
1227			if !grouped {
1228				if a.JobHref != "" {
1229					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 97, "<a href=\"")
1230					if templ_7745c5c3_Err != nil {
1231						return templ_7745c5c3_Err
1232					}
1233					var templ_7745c5c3_Var68 templ.SafeURL
1234					templ_7745c5c3_Var68, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(a.JobHref))
1235					if templ_7745c5c3_Err != nil {
1236						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 161, Col: 42}
1237					}
1238					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var68))
1239					if templ_7745c5c3_Err != nil {
1240						return templ_7745c5c3_Err
1241					}
1242					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 98, "\">")
1243					if templ_7745c5c3_Err != nil {
1244						return templ_7745c5c3_Err
1245					}
1246					var templ_7745c5c3_Var69 string
1247					templ_7745c5c3_Var69, templ_7745c5c3_Err = templ.JoinStringErrs(a.Job)
1248					if templ_7745c5c3_Err != nil {
1249						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 161, Col: 52}
1250					}
1251					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var69))
1252					if templ_7745c5c3_Err != nil {
1253						return templ_7745c5c3_Err
1254					}
1255					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, "</a>")
1256					if templ_7745c5c3_Err != nil {
1257						return templ_7745c5c3_Err
1258					}
1259				} else {
1260					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 100, "<span>")
1261					if templ_7745c5c3_Err != nil {
1262						return templ_7745c5c3_Err
1263					}
1264					var templ_7745c5c3_Var70 string
1265					templ_7745c5c3_Var70, templ_7745c5c3_Err = templ.JoinStringErrs(a.Job)
1266					if templ_7745c5c3_Err != nil {
1267						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 163, Col: 21}
1268					}
1269					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var70))
1270					if templ_7745c5c3_Err != nil {
1271						return templ_7745c5c3_Err
1272					}
1273					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 101, "</span>")
1274					if templ_7745c5c3_Err != nil {
1275						return templ_7745c5c3_Err
1276					}
1277				}
1278				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 102, " <span class=\"mute\">")
1279				if templ_7745c5c3_Err != nil {
1280					return templ_7745c5c3_Err
1281				}
1282				var templ_7745c5c3_Var71 string
1283				templ_7745c5c3_Var71, templ_7745c5c3_Err = templ.JoinStringErrs(a.Step)
1284				if templ_7745c5c3_Err != nil {
1285					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 165, Col: 34}
1286				}
1287				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var71))
1288				if templ_7745c5c3_Err != nil {
1289					return templ_7745c5c3_Err
1290				}
1291				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 103, "</span> ")
1292				if templ_7745c5c3_Err != nil {
1293					return templ_7745c5c3_Err
1294				}
1295			}
1296			if a.Title != "" {
1297				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 104, "<strong>")
1298				if templ_7745c5c3_Err != nil {
1299					return templ_7745c5c3_Err
1300				}
1301				var templ_7745c5c3_Var72 string
1302				templ_7745c5c3_Var72, templ_7745c5c3_Err = templ.JoinStringErrs(a.Title)
1303				if templ_7745c5c3_Err != nil {
1304					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 168, Col: 24}
1305				}
1306				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var72))
1307				if templ_7745c5c3_Err != nil {
1308					return templ_7745c5c3_Err
1309				}
1310				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 105, "</strong>")
1311				if templ_7745c5c3_Err != nil {
1312					return templ_7745c5c3_Err
1313				}
1314			}
1315			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 106, "</p><p class=\"annot-msg\">")
1316			if templ_7745c5c3_Err != nil {
1317				return templ_7745c5c3_Err
1318			}
1319			var templ_7745c5c3_Var73 string
1320			templ_7745c5c3_Var73, templ_7745c5c3_Err = templ.JoinStringErrs(a.Message)
1321			if templ_7745c5c3_Err != nil {
1322				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 171, Col: 37}
1323			}
1324			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var73))
1325			if templ_7745c5c3_Err != nil {
1326				return templ_7745c5c3_Err
1327			}
1328			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 107, "</p>")
1329			if templ_7745c5c3_Err != nil {
1330				return templ_7745c5c3_Err
1331			}
1332			if a.Where != "" {
1333				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 108, "<p class=\"annot-where\">")
1334				if templ_7745c5c3_Err != nil {
1335					return templ_7745c5c3_Err
1336				}
1337				if a.WhereHref != "" {
1338					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 109, "<a href=\"")
1339					if templ_7745c5c3_Err != nil {
1340						return templ_7745c5c3_Err
1341					}
1342					var templ_7745c5c3_Var74 templ.SafeURL
1343					templ_7745c5c3_Var74, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(a.WhereHref))
1344					if templ_7745c5c3_Err != nil {
1345						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 175, Col: 44}
1346					}
1347					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var74))
1348					if templ_7745c5c3_Err != nil {
1349						return templ_7745c5c3_Err
1350					}
1351					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 110, "\">")
1352					if templ_7745c5c3_Err != nil {
1353						return templ_7745c5c3_Err
1354					}
1355					var templ_7745c5c3_Var75 string
1356					templ_7745c5c3_Var75, templ_7745c5c3_Err = templ.JoinStringErrs(a.Where)
1357					if templ_7745c5c3_Err != nil {
1358						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 175, Col: 56}
1359					}
1360					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var75))
1361					if templ_7745c5c3_Err != nil {
1362						return templ_7745c5c3_Err
1363					}
1364					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 111, "</a>")
1365					if templ_7745c5c3_Err != nil {
1366						return templ_7745c5c3_Err
1367					}
1368				} else {
1369					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 112, "<span>")
1370					if templ_7745c5c3_Err != nil {
1371						return templ_7745c5c3_Err
1372					}
1373					var templ_7745c5c3_Var76 string
1374					templ_7745c5c3_Var76, templ_7745c5c3_Err = templ.JoinStringErrs(a.Where)
1375					if templ_7745c5c3_Err != nil {
1376						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 177, Col: 23}
1377					}
1378					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var76))
1379					if templ_7745c5c3_Err != nil {
1380						return templ_7745c5c3_Err
1381					}
1382					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 113, "</span>")
1383					if templ_7745c5c3_Err != nil {
1384						return templ_7745c5c3_Err
1385					}
1386				}
1387				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 114, "</p>")
1388				if templ_7745c5c3_Err != nil {
1389					return templ_7745c5c3_Err
1390				}
1391			}
1392			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 115, "</div></li>")
1393			if templ_7745c5c3_Err != nil {
1394				return templ_7745c5c3_Err
1395			}
1396		}
1397		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 116, "</ul>")
1398		if templ_7745c5c3_Err != nil {
1399			return templ_7745c5c3_Err
1400		}
1401		if more {
1402			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 117, "<p class=\"mute\">more annotations exist than are shown.</p>")
1403			if templ_7745c5c3_Err != nil {
1404				return templ_7745c5c3_Err
1405			}
1406		}
1407		return nil
1408	})
1409}
1410
1411// JobAnnotations is the annotations of the job page, replaced by the live
1412// updates; the element exists even when there is none, so that the first one
1413// has something to replace.
1414func JobAnnotations(anns []AnnotationView, more bool) templ.Component {
1415	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1416		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1417		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1418			return templ_7745c5c3_CtxErr
1419		}
1420		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1421		if !templ_7745c5c3_IsBuffer {
1422			defer func() {
1423				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1424				if templ_7745c5c3_Err == nil {
1425					templ_7745c5c3_Err = templ_7745c5c3_BufErr
1426				}
1427			}()
1428		}
1429		ctx = templ.InitializeContext(ctx)
1430		templ_7745c5c3_Var77 := templ.GetChildren(ctx)
1431		if templ_7745c5c3_Var77 == nil {
1432			templ_7745c5c3_Var77 = templ.NopComponent
1433		}
1434		ctx = templ.ClearChildren(ctx)
1435		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 118, "<section id=\"job-annotations\" class=\"annots\" aria-label=\"Annotations\">")
1436		if templ_7745c5c3_Err != nil {
1437			return templ_7745c5c3_Err
1438		}
1439		if len(anns) > 0 {
1440			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 119, "<h3>Annotations <span class=\"count\">")
1441			if templ_7745c5c3_Err != nil {
1442				return templ_7745c5c3_Err
1443			}
1444			var templ_7745c5c3_Var78 string
1445			templ_7745c5c3_Var78, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(anns)))
1446			if templ_7745c5c3_Err != nil {
1447				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 196, Col: 56}
1448			}
1449			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var78))
1450			if templ_7745c5c3_Err != nil {
1451				return templ_7745c5c3_Err
1452			}
1453			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 120, "</span></h3>")
1454			if templ_7745c5c3_Err != nil {
1455				return templ_7745c5c3_Err
1456			}
1457			templ_7745c5c3_Err = AnnotationList(anns, more, true).Render(ctx, templ_7745c5c3_Buffer)
1458			if templ_7745c5c3_Err != nil {
1459				return templ_7745c5c3_Err
1460			}
1461		}
1462		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 121, "</section>")
1463		if templ_7745c5c3_Err != nil {
1464			return templ_7745c5c3_Err
1465		}
1466		return nil
1467	})
1468}
1469
1470// RunSummaries is the job summaries of a run, one block per step that wrote
1471// one. The Markdown is rendered by the README renderer: raw HTML dropped, URLs
1472// filtered, images shown as their alt text.
1473func RunSummaries(sums []JobSummaries, more bool) templ.Component {
1474	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1475		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1476		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1477			return templ_7745c5c3_CtxErr
1478		}
1479		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1480		if !templ_7745c5c3_IsBuffer {
1481			defer func() {
1482				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1483				if templ_7745c5c3_Err == nil {
1484					templ_7745c5c3_Err = templ_7745c5c3_BufErr
1485				}
1486			}()
1487		}
1488		ctx = templ.InitializeContext(ctx)
1489		templ_7745c5c3_Var79 := templ.GetChildren(ctx)
1490		if templ_7745c5c3_Var79 == nil {
1491			templ_7745c5c3_Var79 = templ.NopComponent
1492		}
1493		ctx = templ.ClearChildren(ctx)
1494		for _, j := range sums {
1495			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 122, "<section class=\"summaries\" aria-label=\"")
1496			if templ_7745c5c3_Err != nil {
1497				return templ_7745c5c3_Err
1498			}
1499			var templ_7745c5c3_Var80 string
1500			templ_7745c5c3_Var80, templ_7745c5c3_Err = templ.ResolveAttributeValue("Summary of " + j.Job)
1501			if templ_7745c5c3_Err != nil {
1502				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 207, Col: 63}
1503			}
1504			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var80)
1505			if templ_7745c5c3_Err != nil {
1506				return templ_7745c5c3_Err
1507			}
1508			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 123, "\"><h3>")
1509			if templ_7745c5c3_Err != nil {
1510				return templ_7745c5c3_Err
1511			}
1512			if j.JobHref != "" {
1513				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 124, "<a href=\"")
1514				if templ_7745c5c3_Err != nil {
1515					return templ_7745c5c3_Err
1516				}
1517				var templ_7745c5c3_Var81 templ.SafeURL
1518				templ_7745c5c3_Var81, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(j.JobHref))
1519				if templ_7745c5c3_Err != nil {
1520					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 210, Col: 39}
1521				}
1522				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var81))
1523				if templ_7745c5c3_Err != nil {
1524					return templ_7745c5c3_Err
1525				}
1526				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 125, "\">")
1527				if templ_7745c5c3_Err != nil {
1528					return templ_7745c5c3_Err
1529				}
1530				var templ_7745c5c3_Var82 string
1531				templ_7745c5c3_Var82, templ_7745c5c3_Err = templ.JoinStringErrs(j.Job)
1532				if templ_7745c5c3_Err != nil {
1533					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 210, Col: 49}
1534				}
1535				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var82))
1536				if templ_7745c5c3_Err != nil {
1537					return templ_7745c5c3_Err
1538				}
1539				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 126, "</a> ")
1540				if templ_7745c5c3_Err != nil {
1541					return templ_7745c5c3_Err
1542				}
1543			} else {
1544				var templ_7745c5c3_Var83 string
1545				templ_7745c5c3_Var83, templ_7745c5c3_Err = templ.JoinStringErrs(j.Job)
1546				if templ_7745c5c3_Err != nil {
1547					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 212, Col: 12}
1548				}
1549				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var83))
1550				if templ_7745c5c3_Err != nil {
1551					return templ_7745c5c3_Err
1552				}
1553				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 127, " ")
1554				if templ_7745c5c3_Err != nil {
1555					return templ_7745c5c3_Err
1556				}
1557			}
1558			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 128, "<span class=\"mute\">summary</span></h3>")
1559			if templ_7745c5c3_Err != nil {
1560				return templ_7745c5c3_Err
1561			}
1562			for _, s := range j.Steps {
1563				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 129, "<article class=\"prose summary\" aria-label=\"")
1564				if templ_7745c5c3_Err != nil {
1565					return templ_7745c5c3_Err
1566				}
1567				var templ_7745c5c3_Var84 string
1568				templ_7745c5c3_Var84, templ_7745c5c3_Err = templ.ResolveAttributeValue(s.Step)
1569				if templ_7745c5c3_Err != nil {
1570					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 217, Col: 54}
1571				}
1572				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var84)
1573				if templ_7745c5c3_Err != nil {
1574					return templ_7745c5c3_Err
1575				}
1576				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 130, "\" hx-ignore><h4 class=\"summary-step\">")
1577				if templ_7745c5c3_Err != nil {
1578					return templ_7745c5c3_Err
1579				}
1580				var templ_7745c5c3_Var85 string
1581				templ_7745c5c3_Var85, templ_7745c5c3_Err = templ.JoinStringErrs(s.Step)
1582				if templ_7745c5c3_Err != nil {
1583					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 218, Col: 38}
1584				}
1585				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var85))
1586				if templ_7745c5c3_Err != nil {
1587					return templ_7745c5c3_Err
1588				}
1589				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 131, "</h4>")
1590				if templ_7745c5c3_Err != nil {
1591					return templ_7745c5c3_Err
1592				}
1593				if s.Note != "" {
1594					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 132, "<p class=\"dim\">")
1595					if templ_7745c5c3_Err != nil {
1596						return templ_7745c5c3_Err
1597					}
1598					var templ_7745c5c3_Var86 string
1599					templ_7745c5c3_Var86, templ_7745c5c3_Err = templ.JoinStringErrs(s.Note)
1600					if templ_7745c5c3_Err != nil {
1601						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 220, Col: 29}
1602					}
1603					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var86))
1604					if templ_7745c5c3_Err != nil {
1605						return templ_7745c5c3_Err
1606					}
1607					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 133, "</p>")
1608					if templ_7745c5c3_Err != nil {
1609						return templ_7745c5c3_Err
1610					}
1611				} else {
1612					templ_7745c5c3_Err = templ.Raw(s.HTML).Render(ctx, templ_7745c5c3_Buffer)
1613					if templ_7745c5c3_Err != nil {
1614						return templ_7745c5c3_Err
1615					}
1616				}
1617				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 134, "</article>")
1618				if templ_7745c5c3_Err != nil {
1619					return templ_7745c5c3_Err
1620				}
1621			}
1622			if j.More {
1623				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 135, "<p class=\"mute\">the job has more summaries than the first 20, which are shown.</p>")
1624				if templ_7745c5c3_Err != nil {
1625					return templ_7745c5c3_Err
1626				}
1627			}
1628			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 136, "</section>")
1629			if templ_7745c5c3_Err != nil {
1630				return templ_7745c5c3_Err
1631			}
1632		}
1633		if more {
1634			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 137, "<p class=\"mute\">more summaries are not shown: the summaries of the page are over ")
1635			if templ_7745c5c3_Err != nil {
1636				return templ_7745c5c3_Err
1637			}
1638			var templ_7745c5c3_Var87 string
1639			templ_7745c5c3_Var87, templ_7745c5c3_Err = templ.JoinStringErrs(humanSize(maxSummaryPageBytes))
1640			if templ_7745c5c3_Err != nil {
1641				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 232, Col: 115}
1642			}
1643			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var87))
1644			if templ_7745c5c3_Err != nil {
1645				return templ_7745c5c3_Err
1646			}
1647			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 138, ".</p>")
1648			if templ_7745c5c3_Err != nil {
1649				return templ_7745c5c3_Err
1650			}
1651		}
1652		return nil
1653	})
1654}
1655
1656func runRail(p RunPage) templ.Component {
1657	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1658		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1659		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1660			return templ_7745c5c3_CtxErr
1661		}
1662		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1663		if !templ_7745c5c3_IsBuffer {
1664			defer func() {
1665				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1666				if templ_7745c5c3_Err == nil {
1667					templ_7745c5c3_Err = templ_7745c5c3_BufErr
1668				}
1669			}()
1670		}
1671		ctx = templ.InitializeContext(ctx)
1672		templ_7745c5c3_Var88 := templ.GetChildren(ctx)
1673		if templ_7745c5c3_Var88 == nil {
1674			templ_7745c5c3_Var88 = templ.NopComponent
1675		}
1676		ctx = templ.ClearChildren(ctx)
1677		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 139, "<section aria-labelledby=\"r-run\"><h2 id=\"r-run\">Run</h2><dl class=\"kv\"><dt>result</dt><dd>")
1678		if templ_7745c5c3_Err != nil {
1679			return templ_7745c5c3_Err
1680		}
1681		var templ_7745c5c3_Var89 string
1682		templ_7745c5c3_Var89, templ_7745c5c3_Err = templ.JoinStringErrs(p.State)
1683		if templ_7745c5c3_Err != nil {
1684			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 241, Col: 16}
1685		}
1686		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var89))
1687		if templ_7745c5c3_Err != nil {
1688			return templ_7745c5c3_Err
1689		}
1690		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 140, "</dd><dt>commit</dt><dd><a href=\"")
1691		if templ_7745c5c3_Err != nil {
1692			return templ_7745c5c3_Err
1693		}
1694		var templ_7745c5c3_Var90 templ.SafeURL
1695		templ_7745c5c3_Var90, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.CHref))
1696		if templ_7745c5c3_Err != nil {
1697			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 243, Col: 39}
1698		}
1699		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var90))
1700		if templ_7745c5c3_Err != nil {
1701			return templ_7745c5c3_Err
1702		}
1703		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 141, "\">")
1704		if templ_7745c5c3_Err != nil {
1705			return templ_7745c5c3_Err
1706		}
1707		var templ_7745c5c3_Var91 string
1708		templ_7745c5c3_Var91, templ_7745c5c3_Err = templ.JoinStringErrs(p.Short)
1709		if templ_7745c5c3_Err != nil {
1710			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 243, Col: 51}
1711		}
1712		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var91))
1713		if templ_7745c5c3_Err != nil {
1714			return templ_7745c5c3_Err
1715		}
1716		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 142, "</a></dd><dt>ref</dt><dd><a href=\"")
1717		if templ_7745c5c3_Err != nil {
1718			return templ_7745c5c3_Err
1719		}
1720		var templ_7745c5c3_Var92 templ.SafeURL
1721		templ_7745c5c3_Var92, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.RefHref))
1722		if templ_7745c5c3_Err != nil {
1723			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 245, Col: 41}
1724		}
1725		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var92))
1726		if templ_7745c5c3_Err != nil {
1727			return templ_7745c5c3_Err
1728		}
1729		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 143, "\">")
1730		if templ_7745c5c3_Err != nil {
1731			return templ_7745c5c3_Err
1732		}
1733		var templ_7745c5c3_Var93 string
1734		templ_7745c5c3_Var93, templ_7745c5c3_Err = templ.JoinStringErrs(p.Ref)
1735		if templ_7745c5c3_Err != nil {
1736			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 245, Col: 51}
1737		}
1738		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var93))
1739		if templ_7745c5c3_Err != nil {
1740			return templ_7745c5c3_Err
1741		}
1742		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 144, "</a></dd><dt>actor</dt><dd>")
1743		if templ_7745c5c3_Err != nil {
1744			return templ_7745c5c3_Err
1745		}
1746		var templ_7745c5c3_Var94 string
1747		templ_7745c5c3_Var94, templ_7745c5c3_Err = templ.JoinStringErrs(p.Actor)
1748		if templ_7745c5c3_Err != nil {
1749			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 247, Col: 16}
1750		}
1751		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var94))
1752		if templ_7745c5c3_Err != nil {
1753			return templ_7745c5c3_Err
1754		}
1755		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 145, "</dd><dt>attempt</dt><dd>")
1756		if templ_7745c5c3_Err != nil {
1757			return templ_7745c5c3_Err
1758		}
1759		var templ_7745c5c3_Var95 string
1760		templ_7745c5c3_Var95, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(int(p.Attempt)))
1761		if templ_7745c5c3_Err != nil {
1762			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 249, Col: 29}
1763		}
1764		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var95))
1765		if templ_7745c5c3_Err != nil {
1766			return templ_7745c5c3_Err
1767		}
1768		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 146, " of ")
1769		if templ_7745c5c3_Err != nil {
1770			return templ_7745c5c3_Err
1771		}
1772		var templ_7745c5c3_Var96 string
1773		templ_7745c5c3_Var96, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(int(p.Latest)))
1774		if templ_7745c5c3_Err != nil {
1775			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 249, Col: 56}
1776		}
1777		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var96))
1778		if templ_7745c5c3_Err != nil {
1779			return templ_7745c5c3_Err
1780		}
1781		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 147, "</dd></dl>")
1782		if templ_7745c5c3_Err != nil {
1783			return templ_7745c5c3_Err
1784		}
1785		if len(p.Attempts) > 0 {
1786			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 148, "<ul class=\"attempts\">")
1787			if templ_7745c5c3_Err != nil {
1788				return templ_7745c5c3_Err
1789			}
1790			for _, a := range p.Attempts {
1791				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 149, "<li>")
1792				if templ_7745c5c3_Err != nil {
1793					return templ_7745c5c3_Err
1794				}
1795				if a.Current {
1796					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 150, "<span aria-current=\"page\">")
1797					if templ_7745c5c3_Err != nil {
1798						return templ_7745c5c3_Err
1799					}
1800					var templ_7745c5c3_Var97 string
1801					templ_7745c5c3_Var97, templ_7745c5c3_Err = templ.JoinStringErrs(a.Label)
1802					if templ_7745c5c3_Err != nil {
1803						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 256, Col: 42}
1804					}
1805					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var97))
1806					if templ_7745c5c3_Err != nil {
1807						return templ_7745c5c3_Err
1808					}
1809					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 151, "</span>")
1810					if templ_7745c5c3_Err != nil {
1811						return templ_7745c5c3_Err
1812					}
1813				} else {
1814					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 152, "<a href=\"")
1815					if templ_7745c5c3_Err != nil {
1816						return templ_7745c5c3_Err
1817					}
1818					var templ_7745c5c3_Var98 templ.SafeURL
1819					templ_7745c5c3_Var98, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(a.Href))
1820					if templ_7745c5c3_Err != nil {
1821						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 258, Col: 38}
1822					}
1823					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var98))
1824					if templ_7745c5c3_Err != nil {
1825						return templ_7745c5c3_Err
1826					}
1827					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 153, "\">")
1828					if templ_7745c5c3_Err != nil {
1829						return templ_7745c5c3_Err
1830					}
1831					var templ_7745c5c3_Var99 string
1832					templ_7745c5c3_Var99, templ_7745c5c3_Err = templ.JoinStringErrs(a.Label)
1833					if templ_7745c5c3_Err != nil {
1834						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 258, Col: 50}
1835					}
1836					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var99))
1837					if templ_7745c5c3_Err != nil {
1838						return templ_7745c5c3_Err
1839					}
1840					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 154, "</a>")
1841					if templ_7745c5c3_Err != nil {
1842						return templ_7745c5c3_Err
1843					}
1844				}
1845				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 155, "</li>")
1846				if templ_7745c5c3_Err != nil {
1847					return templ_7745c5c3_Err
1848				}
1849			}
1850			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 156, "</ul>")
1851			if templ_7745c5c3_Err != nil {
1852				return templ_7745c5c3_Err
1853			}
1854		}
1855		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 157, "</section>")
1856		if templ_7745c5c3_Err != nil {
1857			return templ_7745c5c3_Err
1858		}
1859		if p.CancelAction != "" || p.RerunAction != "" {
1860			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 158, "<section aria-labelledby=\"r-act\" class=\"decide\"><h2 id=\"r-act\">Actions</h2><div class=\"d-btns\">")
1861			if templ_7745c5c3_Err != nil {
1862				return templ_7745c5c3_Err
1863			}
1864			if p.CancelAction != "" {
1865				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 159, "<form method=\"post\" action=\"")
1866				if templ_7745c5c3_Err != nil {
1867					return templ_7745c5c3_Err
1868				}
1869				var templ_7745c5c3_Var100 templ.SafeURL
1870				templ_7745c5c3_Var100, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.CancelAction))
1871				if templ_7745c5c3_Err != nil {
1872					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 270, Col: 63}
1873				}
1874				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var100))
1875				if templ_7745c5c3_Err != nil {
1876					return templ_7745c5c3_Err
1877				}
1878				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 160, "\"><button type=\"submit\" class=\"btn\">Cancel run</button></form>")
1879				if templ_7745c5c3_Err != nil {
1880					return templ_7745c5c3_Err
1881				}
1882			}
1883			if p.RerunAction != "" {
1884				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 161, "<form method=\"post\" action=\"")
1885				if templ_7745c5c3_Err != nil {
1886					return templ_7745c5c3_Err
1887				}
1888				var templ_7745c5c3_Var101 templ.SafeURL
1889				templ_7745c5c3_Var101, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.RerunAction))
1890				if templ_7745c5c3_Err != nil {
1891					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 273, Col: 62}
1892				}
1893				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var101))
1894				if templ_7745c5c3_Err != nil {
1895					return templ_7745c5c3_Err
1896				}
1897				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 162, "\"><button type=\"submit\" class=\"btn primary\">Re-run all jobs</button></form>")
1898				if templ_7745c5c3_Err != nil {
1899					return templ_7745c5c3_Err
1900				}
1901			}
1902			if p.CanRerunFailed {
1903				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 163, "<form method=\"post\" action=\"")
1904				if templ_7745c5c3_Err != nil {
1905					return templ_7745c5c3_Err
1906				}
1907				var templ_7745c5c3_Var102 templ.SafeURL
1908				templ_7745c5c3_Var102, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.RerunFailedAction))
1909				if templ_7745c5c3_Err != nil {
1910					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 276, Col: 68}
1911				}
1912				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var102))
1913				if templ_7745c5c3_Err != nil {
1914					return templ_7745c5c3_Err
1915				}
1916				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 164, "\"><button type=\"submit\" class=\"btn\">Re-run failed jobs</button></form>")
1917				if templ_7745c5c3_Err != nil {
1918					return templ_7745c5c3_Err
1919				}
1920			}
1921			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 165, "</div></section>")
1922			if templ_7745c5c3_Err != nil {
1923				return templ_7745c5c3_Err
1924			}
1925		}
1926		return nil
1927	})
1928}
1929
1930// JobHead is the title of the job page with its state and its error, replaced
1931// by the live updates. total is the number of lines the log holds.
1932func JobHead(j JobRow, total int64) templ.Component {
1933	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1934		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1935		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1936			return templ_7745c5c3_CtxErr
1937		}
1938		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1939		if !templ_7745c5c3_IsBuffer {
1940			defer func() {
1941				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1942				if templ_7745c5c3_Err == nil {
1943					templ_7745c5c3_Err = templ_7745c5c3_BufErr
1944				}
1945			}()
1946		}
1947		ctx = templ.InitializeContext(ctx)
1948		templ_7745c5c3_Var103 := templ.GetChildren(ctx)
1949		if templ_7745c5c3_Var103 == nil {
1950			templ_7745c5c3_Var103 = templ.NopComponent
1951		}
1952		ctx = templ.ClearChildren(ctx)
1953		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 166, "<div id=\"job-head\" data-total=\"")
1954		if templ_7745c5c3_Err != nil {
1955			return templ_7745c5c3_Err
1956		}
1957		var templ_7745c5c3_Var104 string
1958		templ_7745c5c3_Var104, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa64(total))
1959		if templ_7745c5c3_Err != nil {
1960			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 286, Col: 46}
1961		}
1962		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var104)
1963		if templ_7745c5c3_Err != nil {
1964			return templ_7745c5c3_Err
1965		}
1966		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 167, "\"><h2 class=\"run-h\">")
1967		if templ_7745c5c3_Err != nil {
1968			return templ_7745c5c3_Err
1969		}
1970		templ_7745c5c3_Err = CheckIcon(j.Kind, j.State).Render(ctx, templ_7745c5c3_Buffer)
1971		if templ_7745c5c3_Err != nil {
1972			return templ_7745c5c3_Err
1973		}
1974		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 168, "<span>")
1975		if templ_7745c5c3_Err != nil {
1976			return templ_7745c5c3_Err
1977		}
1978		var templ_7745c5c3_Var105 string
1979		templ_7745c5c3_Var105, templ_7745c5c3_Err = templ.JoinStringErrs(j.Name)
1980		if templ_7745c5c3_Err != nil {
1981			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 287, Col: 61}
1982		}
1983		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var105))
1984		if templ_7745c5c3_Err != nil {
1985			return templ_7745c5c3_Err
1986		}
1987		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 169, "</span> <span class=\"dim\">")
1988		if templ_7745c5c3_Err != nil {
1989			return templ_7745c5c3_Err
1990		}
1991		var templ_7745c5c3_Var106 string
1992		templ_7745c5c3_Var106, templ_7745c5c3_Err = templ.JoinStringErrs(j.State)
1993		if templ_7745c5c3_Err != nil {
1994			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 287, Col: 98}
1995		}
1996		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var106))
1997		if templ_7745c5c3_Err != nil {
1998			return templ_7745c5c3_Err
1999		}
2000		var templ_7745c5c3_Var107 string
2001		templ_7745c5c3_Var107, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
2002		if templ_7745c5c3_Err != nil {
2003			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 287, Col: 105}
2004		}
2005		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var107))
2006		if templ_7745c5c3_Err != nil {
2007			return templ_7745c5c3_Err
2008		}
2009		var templ_7745c5c3_Var108 string
2010		templ_7745c5c3_Var108, templ_7745c5c3_Err = templ.JoinStringErrs(j.Duration)
2011		if templ_7745c5c3_Err != nil {
2012			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 287, Col: 119}
2013		}
2014		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var108))
2015		if templ_7745c5c3_Err != nil {
2016			return templ_7745c5c3_Err
2017		}
2018		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 170, "</span></h2>")
2019		if templ_7745c5c3_Err != nil {
2020			return templ_7745c5c3_Err
2021		}
2022		if j.Error != "" {
2023			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 171, "<p class=\"job-err\">")
2024			if templ_7745c5c3_Err != nil {
2025				return templ_7745c5c3_Err
2026			}
2027			var templ_7745c5c3_Var109 string
2028			templ_7745c5c3_Var109, templ_7745c5c3_Err = templ.JoinStringErrs(j.Error)
2029			if templ_7745c5c3_Err != nil {
2030				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 289, Col: 31}
2031			}
2032			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var109))
2033			if templ_7745c5c3_Err != nil {
2034				return templ_7745c5c3_Err
2035			}
2036			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 172, "</p>")
2037			if templ_7745c5c3_Err != nil {
2038				return templ_7745c5c3_Err
2039			}
2040		}
2041		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 173, "</div>")
2042		if templ_7745c5c3_Err != nil {
2043			return templ_7745c5c3_Err
2044		}
2045		return nil
2046	})
2047}
2048
2049// JobSteps is the steps of the job in the rail, replaced by the live updates.
2050func JobSteps(steps []StepView) templ.Component {
2051	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
2052		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
2053		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
2054			return templ_7745c5c3_CtxErr
2055		}
2056		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
2057		if !templ_7745c5c3_IsBuffer {
2058			defer func() {
2059				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
2060				if templ_7745c5c3_Err == nil {
2061					templ_7745c5c3_Err = templ_7745c5c3_BufErr
2062				}
2063			}()
2064		}
2065		ctx = templ.InitializeContext(ctx)
2066		templ_7745c5c3_Var110 := templ.GetChildren(ctx)
2067		if templ_7745c5c3_Var110 == nil {
2068			templ_7745c5c3_Var110 = templ.NopComponent
2069		}
2070		ctx = templ.ClearChildren(ctx)
2071		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 174, "<ol class=\"steps\" id=\"job-steps\">")
2072		if templ_7745c5c3_Err != nil {
2073			return templ_7745c5c3_Err
2074		}
2075		for _, s := range steps {
2076			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 175, "<li>")
2077			if templ_7745c5c3_Err != nil {
2078				return templ_7745c5c3_Err
2079			}
2080			templ_7745c5c3_Err = CheckIcon(s.Kind, s.State).Render(ctx, templ_7745c5c3_Buffer)
2081			if templ_7745c5c3_Err != nil {
2082				return templ_7745c5c3_Err
2083			}
2084			if s.LogEnd > s.LogStart {
2085				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 176, "<a href=\"")
2086				if templ_7745c5c3_Err != nil {
2087					return templ_7745c5c3_Err
2088				}
2089				var templ_7745c5c3_Var111 templ.SafeURL
2090				templ_7745c5c3_Var111, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL("#L" + itoa64(s.LogStart)))
2091				if templ_7745c5c3_Err != nil {
2092					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 301, Col: 55}
2093				}
2094				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var111))
2095				if templ_7745c5c3_Err != nil {
2096					return templ_7745c5c3_Err
2097				}
2098				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 177, "\">")
2099				if templ_7745c5c3_Err != nil {
2100					return templ_7745c5c3_Err
2101				}
2102				var templ_7745c5c3_Var112 string
2103				templ_7745c5c3_Var112, templ_7745c5c3_Err = templ.JoinStringErrs(s.Name)
2104				if templ_7745c5c3_Err != nil {
2105					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 301, Col: 66}
2106				}
2107				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var112))
2108				if templ_7745c5c3_Err != nil {
2109					return templ_7745c5c3_Err
2110				}
2111				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 178, "</a> ")
2112				if templ_7745c5c3_Err != nil {
2113					return templ_7745c5c3_Err
2114				}
2115			} else {
2116				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 179, "<span>")
2117				if templ_7745c5c3_Err != nil {
2118					return templ_7745c5c3_Err
2119				}
2120				var templ_7745c5c3_Var113 string
2121				templ_7745c5c3_Var113, templ_7745c5c3_Err = templ.JoinStringErrs(s.Name)
2122				if templ_7745c5c3_Err != nil {
2123					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 303, Col: 19}
2124				}
2125				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var113))
2126				if templ_7745c5c3_Err != nil {
2127					return templ_7745c5c3_Err
2128				}
2129				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 180, "</span> ")
2130				if templ_7745c5c3_Err != nil {
2131					return templ_7745c5c3_Err
2132				}
2133			}
2134			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 181, "<span class=\"dim\">")
2135			if templ_7745c5c3_Err != nil {
2136				return templ_7745c5c3_Err
2137			}
2138			var templ_7745c5c3_Var114 string
2139			templ_7745c5c3_Var114, templ_7745c5c3_Err = templ.JoinStringErrs(s.Duration)
2140			if templ_7745c5c3_Err != nil {
2141				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 305, Col: 34}
2142			}
2143			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var114))
2144			if templ_7745c5c3_Err != nil {
2145				return templ_7745c5c3_Err
2146			}
2147			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 182, "</span></li>")
2148			if templ_7745c5c3_Err != nil {
2149				return templ_7745c5c3_Err
2150			}
2151		}
2152		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 183, "</ol>")
2153		if templ_7745c5c3_Err != nil {
2154			return templ_7745c5c3_Err
2155		}
2156		return nil
2157	})
2158}
2159
2160func Job(l Layout, p JobPage) templ.Component {
2161	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
2162		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
2163		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
2164			return templ_7745c5c3_CtxErr
2165		}
2166		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
2167		if !templ_7745c5c3_IsBuffer {
2168			defer func() {
2169				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
2170				if templ_7745c5c3_Err == nil {
2171					templ_7745c5c3_Err = templ_7745c5c3_BufErr
2172				}
2173			}()
2174		}
2175		ctx = templ.InitializeContext(ctx)
2176		templ_7745c5c3_Var115 := templ.GetChildren(ctx)
2177		if templ_7745c5c3_Var115 == nil {
2178			templ_7745c5c3_Var115 = templ.NopComponent
2179		}
2180		ctx = templ.ClearChildren(ctx)
2181		templ_7745c5c3_Var116 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
2182			templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
2183			templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
2184			if !templ_7745c5c3_IsBuffer {
2185				defer func() {
2186					templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
2187					if templ_7745c5c3_Err == nil {
2188						templ_7745c5c3_Err = templ_7745c5c3_BufErr
2189					}
2190				}()
2191			}
2192			ctx = templ.InitializeContext(ctx)
2193			templ_7745c5c3_Err = LiveSlot("job-notice").Render(ctx, templ_7745c5c3_Buffer)
2194			if templ_7745c5c3_Err != nil {
2195				return templ_7745c5c3_Err
2196			}
2197			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 184, " ")
2198			if templ_7745c5c3_Err != nil {
2199				return templ_7745c5c3_Err
2200			}
2201			templ_7745c5c3_Err = JobHead(p.JobRow, p.Total).Render(ctx, templ_7745c5c3_Buffer)
2202			if templ_7745c5c3_Err != nil {
2203				return templ_7745c5c3_Err
2204			}
2205			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 185, " ")
2206			if templ_7745c5c3_Err != nil {
2207				return templ_7745c5c3_Err
2208			}
2209			templ_7745c5c3_Err = JobAnnotations(p.Annotations, p.AnnotationsMore).Render(ctx, templ_7745c5c3_Buffer)
2210			if templ_7745c5c3_Err != nil {
2211				return templ_7745c5c3_Err
2212			}
2213			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 186, " <div id=\"job-log\" class=\"joblog\" data-total=\"")
2214			if templ_7745c5c3_Err != nil {
2215				return templ_7745c5c3_Err
2216			}
2217			var templ_7745c5c3_Var117 string
2218			templ_7745c5c3_Var117, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa64(p.Total))
2219			if templ_7745c5c3_Err != nil {
2220				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 316, Col: 63}
2221			}
2222			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var117)
2223			if templ_7745c5c3_Err != nil {
2224				return templ_7745c5c3_Err
2225			}
2226			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 187, "\"")
2227			if templ_7745c5c3_Err != nil {
2228				return templ_7745c5c3_Err
2229			}
2230			if p.Follow {
2231				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 188, " data-follow")
2232				if templ_7745c5c3_Err != nil {
2233					return templ_7745c5c3_Err
2234				}
2235			}
2236			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 189, " data-stream=\"")
2237			if templ_7745c5c3_Err != nil {
2238				return templ_7745c5c3_Err
2239			}
2240			var templ_7745c5c3_Var118 string
2241			templ_7745c5c3_Var118, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.StreamHref)
2242			if templ_7745c5c3_Err != nil {
2243				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 316, Col: 118}
2244			}
2245			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var118)
2246			if templ_7745c5c3_Err != nil {
2247				return templ_7745c5c3_Err
2248			}
2249			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 190, "\" data-next=\"")
2250			if templ_7745c5c3_Err != nil {
2251				return templ_7745c5c3_Err
2252			}
2253			var templ_7745c5c3_Var119 string
2254			templ_7745c5c3_Var119, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa64(p.From + int64(len(p.Lines))))
2255			if templ_7745c5c3_Err != nil {
2256				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 316, Col: 169}
2257			}
2258			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var119)
2259			if templ_7745c5c3_Err != nil {
2260				return templ_7745c5c3_Err
2261			}
2262			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 191, "\">")
2263			if templ_7745c5c3_Err != nil {
2264				return templ_7745c5c3_Err
2265			}
2266			if p.Note != "" {
2267				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 192, "<p class=\"dim\">")
2268				if templ_7745c5c3_Err != nil {
2269					return templ_7745c5c3_Err
2270				}
2271				var templ_7745c5c3_Var120 string
2272				templ_7745c5c3_Var120, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note)
2273				if templ_7745c5c3_Err != nil {
2274					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 318, Col: 27}
2275				}
2276				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var120))
2277				if templ_7745c5c3_Err != nil {
2278					return templ_7745c5c3_Err
2279				}
2280				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 193, "</p>")
2281				if templ_7745c5c3_Err != nil {
2282					return templ_7745c5c3_Err
2283				}
2284			}
2285			if p.Prev != "" {
2286				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 194, "<p class=\"more\"><a href=\"")
2287				if templ_7745c5c3_Err != nil {
2288					return templ_7745c5c3_Err
2289				}
2290				var templ_7745c5c3_Var121 templ.SafeURL
2291				templ_7745c5c3_Var121, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Prev))
2292				if templ_7745c5c3_Err != nil {
2293					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 321, Col: 51}
2294				}
2295				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var121))
2296				if templ_7745c5c3_Err != nil {
2297					return templ_7745c5c3_Err
2298				}
2299				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 195, "\" rel=\"prev\">earlier lines</a></p>")
2300				if templ_7745c5c3_Err != nil {
2301					return templ_7745c5c3_Err
2302				}
2303			}
2304			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 196, "<ol class=\"log\" start=\"")
2305			if templ_7745c5c3_Err != nil {
2306				return templ_7745c5c3_Err
2307			}
2308			var templ_7745c5c3_Var122 string
2309			templ_7745c5c3_Var122, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa64(p.From + 1))
2310			if templ_7745c5c3_Err != nil {
2311				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 323, Col: 45}
2312			}
2313			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var122)
2314			if templ_7745c5c3_Err != nil {
2315				return templ_7745c5c3_Err
2316			}
2317			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 197, "\">")
2318			if templ_7745c5c3_Err != nil {
2319				return templ_7745c5c3_Err
2320			}
2321			for _, ln := range p.Lines {
2322				templ_7745c5c3_Err = LogLine(ln).Render(ctx, templ_7745c5c3_Buffer)
2323				if templ_7745c5c3_Err != nil {
2324					return templ_7745c5c3_Err
2325				}
2326			}
2327			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 198, "</ol>")
2328			if templ_7745c5c3_Err != nil {
2329				return templ_7745c5c3_Err
2330			}
2331			if p.Next != "" {
2332				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 199, "<p class=\"more\"><a href=\"")
2333				if templ_7745c5c3_Err != nil {
2334					return templ_7745c5c3_Err
2335				}
2336				var templ_7745c5c3_Var123 templ.SafeURL
2337				templ_7745c5c3_Var123, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Next))
2338				if templ_7745c5c3_Err != nil {
2339					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 329, Col: 51}
2340				}
2341				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var123))
2342				if templ_7745c5c3_Err != nil {
2343					return templ_7745c5c3_Err
2344				}
2345				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 200, "\" rel=\"next\">more lines</a></p>")
2346				if templ_7745c5c3_Err != nil {
2347					return templ_7745c5c3_Err
2348				}
2349			}
2350			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 201, "</div>")
2351			if templ_7745c5c3_Err != nil {
2352				return templ_7745c5c3_Err
2353			}
2354			return nil
2355		})
2356		templ_7745c5c3_Err = Shell(l, jobRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var116), templ_7745c5c3_Buffer)
2357		if templ_7745c5c3_Err != nil {
2358			return templ_7745c5c3_Err
2359		}
2360		return nil
2361	})
2362}
2363
2364// LogLine is a line of the log. Group and error markers of the runner show as
2365// headings and errors, never as raw text.
2366func LogLine(ln LogLineView) templ.Component {
2367	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
2368		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
2369		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
2370			return templ_7745c5c3_CtxErr
2371		}
2372		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
2373		if !templ_7745c5c3_IsBuffer {
2374			defer func() {
2375				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
2376				if templ_7745c5c3_Err == nil {
2377					templ_7745c5c3_Err = templ_7745c5c3_BufErr
2378				}
2379			}()
2380		}
2381		ctx = templ.InitializeContext(ctx)
2382		templ_7745c5c3_Var124 := templ.GetChildren(ctx)
2383		if templ_7745c5c3_Var124 == nil {
2384			templ_7745c5c3_Var124 = templ.NopComponent
2385		}
2386		ctx = templ.ClearChildren(ctx)
2387		var templ_7745c5c3_Var125 = []any{logClass(ln)}
2388		templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var125...)
2389		if templ_7745c5c3_Err != nil {
2390			return templ_7745c5c3_Err
2391		}
2392		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 202, "<li id=\"")
2393		if templ_7745c5c3_Err != nil {
2394			return templ_7745c5c3_Err
2395		}
2396		var templ_7745c5c3_Var126 string
2397		templ_7745c5c3_Var126, templ_7745c5c3_Err = templ.ResolveAttributeValue("L" + itoa64(ln.N))
2398		if templ_7745c5c3_Err != nil {
2399			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 338, Col: 28}
2400		}
2401		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var126)
2402		if templ_7745c5c3_Err != nil {
2403			return templ_7745c5c3_Err
2404		}
2405		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 203, "\" class=\"")
2406		if templ_7745c5c3_Err != nil {
2407			return templ_7745c5c3_Err
2408		}
2409		var templ_7745c5c3_Var127 string
2410		templ_7745c5c3_Var127, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var125).String())
2411		if templ_7745c5c3_Err != nil {
2412			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 1, Col: 0}
2413		}
2414		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var127)
2415		if templ_7745c5c3_Err != nil {
2416			return templ_7745c5c3_Err
2417		}
2418		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 204, "\" data-step=\"")
2419		if templ_7745c5c3_Err != nil {
2420			return templ_7745c5c3_Err
2421		}
2422		var templ_7745c5c3_Var128 string
2423		templ_7745c5c3_Var128, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa(int(ln.Step)))
2424		if templ_7745c5c3_Err != nil {
2425			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 338, Col: 84}
2426		}
2427		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var128)
2428		if templ_7745c5c3_Err != nil {
2429			return templ_7745c5c3_Err
2430		}
2431		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 205, "\"")
2432		if templ_7745c5c3_Err != nil {
2433			return templ_7745c5c3_Err
2434		}
2435		if ln.Continued {
2436			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 206, " data-cont")
2437			if templ_7745c5c3_Err != nil {
2438				return templ_7745c5c3_Err
2439			}
2440		}
2441		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 207, "><time>")
2442		if templ_7745c5c3_Err != nil {
2443			return templ_7745c5c3_Err
2444		}
2445		var templ_7745c5c3_Var129 string
2446		templ_7745c5c3_Var129, templ_7745c5c3_Err = templ.JoinStringErrs(ln.Time)
2447		if templ_7745c5c3_Err != nil {
2448			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 338, Col: 130}
2449		}
2450		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var129))
2451		if templ_7745c5c3_Err != nil {
2452			return templ_7745c5c3_Err
2453		}
2454		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 208, "</time><span class=\"t\">")
2455		if templ_7745c5c3_Err != nil {
2456			return templ_7745c5c3_Err
2457		}
2458		var templ_7745c5c3_Var130 string
2459		templ_7745c5c3_Var130, templ_7745c5c3_Err = templ.JoinStringErrs(ln.Text)
2460		if templ_7745c5c3_Err != nil {
2461			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 338, Col: 164}
2462		}
2463		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var130))
2464		if templ_7745c5c3_Err != nil {
2465			return templ_7745c5c3_Err
2466		}
2467		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 209, "</span></li>")
2468		if templ_7745c5c3_Err != nil {
2469			return templ_7745c5c3_Err
2470		}
2471		return nil
2472	})
2473}
2474
2475func jobRail(p JobPage) templ.Component {
2476	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
2477		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
2478		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
2479			return templ_7745c5c3_CtxErr
2480		}
2481		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
2482		if !templ_7745c5c3_IsBuffer {
2483			defer func() {
2484				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
2485				if templ_7745c5c3_Err == nil {
2486					templ_7745c5c3_Err = templ_7745c5c3_BufErr
2487				}
2488			}()
2489		}
2490		ctx = templ.InitializeContext(ctx)
2491		templ_7745c5c3_Var131 := templ.GetChildren(ctx)
2492		if templ_7745c5c3_Var131 == nil {
2493			templ_7745c5c3_Var131 = templ.NopComponent
2494		}
2495		ctx = templ.ClearChildren(ctx)
2496		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 210, "<section aria-labelledby=\"r-job\"><h2 id=\"r-job\">Steps</h2>")
2497		if templ_7745c5c3_Err != nil {
2498			return templ_7745c5c3_Err
2499		}
2500		templ_7745c5c3_Err = JobSteps(p.Steps).Render(ctx, templ_7745c5c3_Buffer)
2501		if templ_7745c5c3_Err != nil {
2502			return templ_7745c5c3_Err
2503		}
2504		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 211, "</section><section aria-labelledby=\"r-jobf\"><h2 id=\"r-jobf\">Job</h2><dl class=\"kv\"><dt>run</dt><dd><a href=\"")
2505		if templ_7745c5c3_Err != nil {
2506			return templ_7745c5c3_Err
2507		}
2508		var templ_7745c5c3_Var132 templ.SafeURL
2509		templ_7745c5c3_Var132, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.RunHref))
2510		if templ_7745c5c3_Err != nil {
2511			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 350, Col: 41}
2512		}
2513		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var132))
2514		if templ_7745c5c3_Err != nil {
2515			return templ_7745c5c3_Err
2516		}
2517		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 212, "\">")
2518		if templ_7745c5c3_Err != nil {
2519			return templ_7745c5c3_Err
2520		}
2521		var templ_7745c5c3_Var133 string
2522		templ_7745c5c3_Var133, templ_7745c5c3_Err = templ.JoinStringErrs(p.RunName)
2523		if templ_7745c5c3_Err != nil {
2524			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 350, Col: 55}
2525		}
2526		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var133))
2527		if templ_7745c5c3_Err != nil {
2528			return templ_7745c5c3_Err
2529		}
2530		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 213, "</a></dd>")
2531		if templ_7745c5c3_Err != nil {
2532			return templ_7745c5c3_Err
2533		}
2534		if p.Runner != "" {
2535			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 214, "<dt>runner</dt><dd>")
2536			if templ_7745c5c3_Err != nil {
2537				return templ_7745c5c3_Err
2538			}
2539			var templ_7745c5c3_Var134 string
2540			templ_7745c5c3_Var134, templ_7745c5c3_Err = templ.JoinStringErrs(p.Runner)
2541			if templ_7745c5c3_Err != nil {
2542				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 353, Col: 18}
2543			}
2544			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var134))
2545			if templ_7745c5c3_Err != nil {
2546				return templ_7745c5c3_Err
2547			}
2548			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 215, "</dd>")
2549			if templ_7745c5c3_Err != nil {
2550				return templ_7745c5c3_Err
2551			}
2552		}
2553		if p.Isolation != "" {
2554			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 216, "<dt>isolation</dt><dd>")
2555			if templ_7745c5c3_Err != nil {
2556				return templ_7745c5c3_Err
2557			}
2558			var templ_7745c5c3_Var135 string
2559			templ_7745c5c3_Var135, templ_7745c5c3_Err = templ.JoinStringErrs(p.Isolation)
2560			if templ_7745c5c3_Err != nil {
2561				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 357, Col: 21}
2562			}
2563			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var135))
2564			if templ_7745c5c3_Err != nil {
2565				return templ_7745c5c3_Err
2566			}
2567			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 217, "</dd>")
2568			if templ_7745c5c3_Err != nil {
2569				return templ_7745c5c3_Err
2570			}
2571		}
2572		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 218, "<dt>lines</dt><dd>")
2573		if templ_7745c5c3_Err != nil {
2574			return templ_7745c5c3_Err
2575		}
2576		var templ_7745c5c3_Var136 string
2577		templ_7745c5c3_Var136, templ_7745c5c3_Err = templ.JoinStringErrs(itoa64(p.Total))
2578		if templ_7745c5c3_Err != nil {
2579			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 360, Col: 24}
2580		}
2581		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var136))
2582		if templ_7745c5c3_Err != nil {
2583			return templ_7745c5c3_Err
2584		}
2585		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 219, "</dd></dl><p><a href=\"")
2586		if templ_7745c5c3_Err != nil {
2587			return templ_7745c5c3_Err
2588		}
2589		var templ_7745c5c3_Var137 templ.SafeURL
2590		templ_7745c5c3_Var137, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.RawHref))
2591		if templ_7745c5c3_Err != nil {
2592			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 362, Col: 39}
2593		}
2594		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var137))
2595		if templ_7745c5c3_Err != nil {
2596			return templ_7745c5c3_Err
2597		}
2598		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 220, "\">raw log</a></p></section>")
2599		if templ_7745c5c3_Err != nil {
2600			return templ_7745c5c3_Err
2601		}
2602		return nil
2603	})
2604}
2605
2606// CommitChecks is the combined state of the checks of a commit, as a mark
2607// with a count, linking to the page that explains it.
2608func CommitChecks(c ChecksSummary) templ.Component {
2609	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
2610		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
2611		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
2612			return templ_7745c5c3_CtxErr
2613		}
2614		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
2615		if !templ_7745c5c3_IsBuffer {
2616			defer func() {
2617				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
2618				if templ_7745c5c3_Err == nil {
2619					templ_7745c5c3_Err = templ_7745c5c3_BufErr
2620				}
2621			}()
2622		}
2623		ctx = templ.InitializeContext(ctx)
2624		templ_7745c5c3_Var138 := templ.GetChildren(ctx)
2625		if templ_7745c5c3_Var138 == nil {
2626			templ_7745c5c3_Var138 = templ.NopComponent
2627		}
2628		ctx = templ.ClearChildren(ctx)
2629		if c.Total > 0 {
2630			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 221, "<a class=\"ck-sum\" href=\"")
2631			if templ_7745c5c3_Err != nil {
2632				return templ_7745c5c3_Err
2633			}
2634			var templ_7745c5c3_Var139 templ.SafeURL
2635			templ_7745c5c3_Var139, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(c.Href))
2636			if templ_7745c5c3_Err != nil {
2637				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 370, Col: 48}
2638			}
2639			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var139))
2640			if templ_7745c5c3_Err != nil {
2641				return templ_7745c5c3_Err
2642			}
2643			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 222, "\" title=\"")
2644			if templ_7745c5c3_Err != nil {
2645				return templ_7745c5c3_Err
2646			}
2647			var templ_7745c5c3_Var140 string
2648			templ_7745c5c3_Var140, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.Title)
2649			if templ_7745c5c3_Err != nil {
2650				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 370, Col: 66}
2651			}
2652			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var140)
2653			if templ_7745c5c3_Err != nil {
2654				return templ_7745c5c3_Err
2655			}
2656			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 223, "\">")
2657			if templ_7745c5c3_Err != nil {
2658				return templ_7745c5c3_Err
2659			}
2660			templ_7745c5c3_Err = CheckIcon(c.Kind, c.State).Render(ctx, templ_7745c5c3_Buffer)
2661			if templ_7745c5c3_Err != nil {
2662				return templ_7745c5c3_Err
2663			}
2664			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 224, "<span class=\"mute\">")
2665			if templ_7745c5c3_Err != nil {
2666				return templ_7745c5c3_Err
2667			}
2668			var templ_7745c5c3_Var141 string
2669			templ_7745c5c3_Var141, templ_7745c5c3_Err = templ.JoinStringErrs(c.Label)
2670			if templ_7745c5c3_Err != nil {
2671				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 372, Col: 31}
2672			}
2673			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var141))
2674			if templ_7745c5c3_Err != nil {
2675				return templ_7745c5c3_Err
2676			}
2677			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 225, "</span></a>")
2678			if templ_7745c5c3_Err != nil {
2679				return templ_7745c5c3_Err
2680			}
2681		}
2682		return nil
2683	})
2684}
2685
2686// MRChecks is the checks section of the rail of a merge request.
2687func MRChecks(c ChecksSection) templ.Component {
2688	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
2689		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
2690		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
2691			return templ_7745c5c3_CtxErr
2692		}
2693		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
2694		if !templ_7745c5c3_IsBuffer {
2695			defer func() {
2696				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
2697				if templ_7745c5c3_Err == nil {
2698					templ_7745c5c3_Err = templ_7745c5c3_BufErr
2699				}
2700			}()
2701		}
2702		ctx = templ.InitializeContext(ctx)
2703		templ_7745c5c3_Var142 := templ.GetChildren(ctx)
2704		if templ_7745c5c3_Var142 == nil {
2705			templ_7745c5c3_Var142 = templ.NopComponent
2706		}
2707		ctx = templ.ClearChildren(ctx)
2708		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 226, "<section aria-labelledby=\"r-checks\" id=\"mr-checks\"><h2 id=\"r-checks\">Checks <span class=\"count\">")
2709		if templ_7745c5c3_Err != nil {
2710			return templ_7745c5c3_Err
2711		}
2712		var templ_7745c5c3_Var143 string
2713		templ_7745c5c3_Var143, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(c.Rows)))
2714		if templ_7745c5c3_Err != nil {
2715			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 380, Col: 66}
2716		}
2717		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var143))
2718		if templ_7745c5c3_Err != nil {
2719			return templ_7745c5c3_Err
2720		}
2721		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 227, "</span></h2>")
2722		if templ_7745c5c3_Err != nil {
2723			return templ_7745c5c3_Err
2724		}
2725		if len(c.Rows) == 0 {
2726			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 228, "<p class=\"dim\">no checks</p>")
2727			if templ_7745c5c3_Err != nil {
2728				return templ_7745c5c3_Err
2729			}
2730		} else {
2731			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 229, "<ul class=\"checks\">")
2732			if templ_7745c5c3_Err != nil {
2733				return templ_7745c5c3_Err
2734			}
2735			for _, r := range c.Rows {
2736				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 230, "<li>")
2737				if templ_7745c5c3_Err != nil {
2738					return templ_7745c5c3_Err
2739				}
2740				templ_7745c5c3_Err = CheckIcon(r.Kind, r.State).Render(ctx, templ_7745c5c3_Buffer)
2741				if templ_7745c5c3_Err != nil {
2742					return templ_7745c5c3_Err
2743				}
2744				if r.Href != "" {
2745					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 231, "<a href=\"")
2746					if templ_7745c5c3_Err != nil {
2747						return templ_7745c5c3_Err
2748					}
2749					var templ_7745c5c3_Var144 templ.SafeURL
2750					templ_7745c5c3_Var144, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href))
2751					if templ_7745c5c3_Err != nil {
2752						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 389, Col: 38}
2753					}
2754					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var144))
2755					if templ_7745c5c3_Err != nil {
2756						return templ_7745c5c3_Err
2757					}
2758					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 232, "\">")
2759					if templ_7745c5c3_Err != nil {
2760						return templ_7745c5c3_Err
2761					}
2762					var templ_7745c5c3_Var145 string
2763					templ_7745c5c3_Var145, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name)
2764					if templ_7745c5c3_Err != nil {
2765						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 389, Col: 49}
2766					}
2767					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var145))
2768					if templ_7745c5c3_Err != nil {
2769						return templ_7745c5c3_Err
2770					}
2771					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 233, "</a> ")
2772					if templ_7745c5c3_Err != nil {
2773						return templ_7745c5c3_Err
2774					}
2775				} else {
2776					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 234, "<span>")
2777					if templ_7745c5c3_Err != nil {
2778						return templ_7745c5c3_Err
2779					}
2780					var templ_7745c5c3_Var146 string
2781					templ_7745c5c3_Var146, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name)
2782					if templ_7745c5c3_Err != nil {
2783						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 391, Col: 21}
2784					}
2785					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var146))
2786					if templ_7745c5c3_Err != nil {
2787						return templ_7745c5c3_Err
2788					}
2789					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 235, "</span> ")
2790					if templ_7745c5c3_Err != nil {
2791						return templ_7745c5c3_Err
2792					}
2793				}
2794				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 236, "<span class=\"dim\">")
2795				if templ_7745c5c3_Err != nil {
2796					return templ_7745c5c3_Err
2797				}
2798				var templ_7745c5c3_Var147 string
2799				templ_7745c5c3_Var147, templ_7745c5c3_Err = templ.JoinStringErrs(r.State)
2800				if templ_7745c5c3_Err != nil {
2801					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 393, Col: 33}
2802				}
2803				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var147))
2804				if templ_7745c5c3_Err != nil {
2805					return templ_7745c5c3_Err
2806				}
2807				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 237, "</span> ")
2808				if templ_7745c5c3_Err != nil {
2809					return templ_7745c5c3_Err
2810				}
2811				if r.Waiting {
2812					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 238, "<span class=\"mute\">waiting for a runner</span>")
2813					if templ_7745c5c3_Err != nil {
2814						return templ_7745c5c3_Err
2815					}
2816				}
2817				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 239, "</li>")
2818				if templ_7745c5c3_Err != nil {
2819					return templ_7745c5c3_Err
2820				}
2821			}
2822			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 240, "</ul>")
2823			if templ_7745c5c3_Err != nil {
2824				return templ_7745c5c3_Err
2825			}
2826		}
2827		if c.Note != "" {
2828			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 241, "<p class=\"mute\">")
2829			if templ_7745c5c3_Err != nil {
2830				return templ_7745c5c3_Err
2831			}
2832			var templ_7745c5c3_Var148 string
2833			templ_7745c5c3_Var148, templ_7745c5c3_Err = templ.JoinStringErrs(c.Note)
2834			if templ_7745c5c3_Err != nil {
2835				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 402, Col: 27}
2836			}
2837			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var148))
2838			if templ_7745c5c3_Err != nil {
2839				return templ_7745c5c3_Err
2840			}
2841			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 242, "</p>")
2842			if templ_7745c5c3_Err != nil {
2843				return templ_7745c5c3_Err
2844			}
2845		}
2846		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 243, "</section>")
2847		if templ_7745c5c3_Err != nil {
2848			return templ_7745c5c3_Err
2849		}
2850		return nil
2851	})
2852}
2853
2854var _ = templruntime.GeneratedTemplate

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 2

Tags 45

↑↓ moveenter openesc close