v0.19.0 55a688e

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