v0.22.0 4c072b1

components_templ.go RawHistoryFolder

1// Code generated by templ - DO NOT EDIT.
2
3// templ: version: v0.3.1020
4// SPDX-License-Identifier: AGPL-3.0-or-later
5
6package web
7
8//lint:file-ignore SA4006 This context is only used if a nested component is present.
9
10import "github.com/a-h/templ"
11import templruntime "github.com/a-h/templ/runtime"
12
13// Facts is a key/value block on an 11ch key column.
14func Facts(facts []Fact) templ.Component {
15	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
16		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
17		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
18			return templ_7745c5c3_CtxErr
19		}
20		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
21		if !templ_7745c5c3_IsBuffer {
22			defer func() {
23				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
24				if templ_7745c5c3_Err == nil {
25					templ_7745c5c3_Err = templ_7745c5c3_BufErr
26				}
27			}()
28		}
29		ctx = templ.InitializeContext(ctx)
30		templ_7745c5c3_Var1 := templ.GetChildren(ctx)
31		if templ_7745c5c3_Var1 == nil {
32			templ_7745c5c3_Var1 = templ.NopComponent
33		}
34		ctx = templ.ClearChildren(ctx)
35		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<dl class=\"kv\">")
36		if templ_7745c5c3_Err != nil {
37			return templ_7745c5c3_Err
38		}
39		for _, f := range facts {
40			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "<dt>")
41			if templ_7745c5c3_Err != nil {
42				return templ_7745c5c3_Err
43			}
44			var templ_7745c5c3_Var2 string
45			templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(f.Key)
46			if templ_7745c5c3_Err != nil {
47				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 9, Col: 14}
48			}
49			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2))
50			if templ_7745c5c3_Err != nil {
51				return templ_7745c5c3_Err
52			}
53			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "</dt>")
54			if templ_7745c5c3_Err != nil {
55				return templ_7745c5c3_Err
56			}
57			templ_7745c5c3_Err = FactValue(f).Render(ctx, templ_7745c5c3_Buffer)
58			if templ_7745c5c3_Err != nil {
59				return templ_7745c5c3_Err
60			}
61		}
62		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "</dl>")
63		if templ_7745c5c3_Err != nil {
64			return templ_7745c5c3_Err
65		}
66		return nil
67	})
68}
69
70// CloneBlock is a block of copyable shell lines; each has its own [copy]
71// button, whose label says "copied" for 1.5 s.
72func CloneBlock(c Clone) templ.Component {
73	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
74		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
75		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
76			return templ_7745c5c3_CtxErr
77		}
78		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
79		if !templ_7745c5c3_IsBuffer {
80			defer func() {
81				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
82				if templ_7745c5c3_Err == nil {
83					templ_7745c5c3_Err = templ_7745c5c3_BufErr
84				}
85			}()
86		}
87		ctx = templ.InitializeContext(ctx)
88		templ_7745c5c3_Var3 := templ.GetChildren(ctx)
89		if templ_7745c5c3_Var3 == nil {
90			templ_7745c5c3_Var3 = templ.NopComponent
91		}
92		ctx = templ.ClearChildren(ctx)
93		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "<div class=\"clone\" id=\"")
94		if templ_7745c5c3_Err != nil {
95			return templ_7745c5c3_Err
96		}
97		var templ_7745c5c3_Var4 string
98		templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.ID)
99		if templ_7745c5c3_Err != nil {
100			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 18, Col: 29}
101		}
102		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var4)
103		if templ_7745c5c3_Err != nil {
104			return templ_7745c5c3_Err
105		}
106		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "\">")
107		if templ_7745c5c3_Err != nil {
108			return templ_7745c5c3_Err
109		}
110		for _, line := range c.Lines {
111			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "<div class=\"clone-line\"><span class=\"mute\" aria-hidden=\"true\">$ </span><code>")
112			if templ_7745c5c3_Err != nil {
113				return templ_7745c5c3_Err
114			}
115			var templ_7745c5c3_Var5 string
116			templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(line)
117			if templ_7745c5c3_Err != nil {
118				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 21, Col: 63}
119			}
120			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
121			if templ_7745c5c3_Err != nil {
122				return templ_7745c5c3_Err
123			}
124			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "</code> <button type=\"button\" class=\"btn copy\" data-js data-label=\"Copy\" aria-label=\"")
125			if templ_7745c5c3_Err != nil {
126				return templ_7745c5c3_Err
127			}
128			var templ_7745c5c3_Var6 string
129			templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.ResolveAttributeValue("copy: " + line)
130			if templ_7745c5c3_Err != nil {
131				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 27, Col: 33}
132			}
133			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var6)
134			if templ_7745c5c3_Err != nil {
135				return templ_7745c5c3_Err
136			}
137			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "\" hx-on:click=\"ermite.copy(this)\">Copy</button></div>")
138			if templ_7745c5c3_Err != nil {
139				return templ_7745c5c3_Err
140			}
141		}
142		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "</div>")
143		if templ_7745c5c3_Err != nil {
144			return templ_7745c5c3_Err
145		}
146		return nil
147	})
148}
149
150// HomeRowView is the row of a repository in the home list: what it is, its
151// latest run, and its newest commits. Its id is the target of SSE swaps; the
152// name link comes first, `enter` follows it.
153func HomeRowView(r HomeRow) templ.Component {
154	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
155		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
156		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
157			return templ_7745c5c3_CtxErr
158		}
159		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
160		if !templ_7745c5c3_IsBuffer {
161			defer func() {
162				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
163				if templ_7745c5c3_Err == nil {
164					templ_7745c5c3_Err = templ_7745c5c3_BufErr
165				}
166			}()
167		}
168		ctx = templ.InitializeContext(ctx)
169		templ_7745c5c3_Var7 := templ.GetChildren(ctx)
170		if templ_7745c5c3_Var7 == nil {
171			templ_7745c5c3_Var7 = templ.NopComponent
172		}
173		ctx = templ.ClearChildren(ctx)
174		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "<li id=\"")
175		if templ_7745c5c3_Err != nil {
176			return templ_7745c5c3_Err
177		}
178		var templ_7745c5c3_Var8 string
179		templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.ID)
180		if templ_7745c5c3_Err != nil {
181			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 39, Col: 14}
182		}
183		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var8)
184		if templ_7745c5c3_Err != nil {
185			return templ_7745c5c3_Err
186		}
187		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "\" class=\"repo\"")
188		if templ_7745c5c3_Err != nil {
189			return templ_7745c5c3_Err
190		}
191		if r.Cursor {
192			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, " data-cursor")
193			if templ_7745c5c3_Err != nil {
194				return templ_7745c5c3_Err
195			}
196		}
197		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "><div class=\"repo-main\"><h2 class=\"repo-name\"><a href=\"")
198		if templ_7745c5c3_Err != nil {
199			return templ_7745c5c3_Err
200		}
201		var templ_7745c5c3_Var9 templ.SafeURL
202		templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href))
203		if templ_7745c5c3_Err != nil {
204			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 42, Col: 35}
205		}
206		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9))
207		if templ_7745c5c3_Err != nil {
208			return templ_7745c5c3_Err
209		}
210		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "\">")
211		if templ_7745c5c3_Err != nil {
212			return templ_7745c5c3_Err
213		}
214		var templ_7745c5c3_Var10 string
215		templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name)
216		if templ_7745c5c3_Err != nil {
217			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 42, Col: 46}
218		}
219		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10))
220		if templ_7745c5c3_Err != nil {
221			return templ_7745c5c3_Err
222		}
223		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "</a> ")
224		if templ_7745c5c3_Err != nil {
225			return templ_7745c5c3_Err
226		}
227		if r.Private {
228			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "<span class=\"pill\">private</span> ")
229			if templ_7745c5c3_Err != nil {
230				return templ_7745c5c3_Err
231			}
232		}
233		if r.Fresh {
234			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "<span class=\"pill new\">new push</span>")
235			if templ_7745c5c3_Err != nil {
236				return templ_7745c5c3_Err
237			}
238		}
239		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "</h2>")
240		if templ_7745c5c3_Err != nil {
241			return templ_7745c5c3_Err
242		}
243		if r.Desc != "" {
244			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "<p class=\"repo-desc\">")
245			if templ_7745c5c3_Err != nil {
246				return templ_7745c5c3_Err
247			}
248			var templ_7745c5c3_Var11 string
249			templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(r.Desc)
250			if templ_7745c5c3_Err != nil {
251				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 51, Col: 33}
252			}
253			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11))
254			if templ_7745c5c3_Err != nil {
255				return templ_7745c5c3_Err
256			}
257			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "</p>")
258			if templ_7745c5c3_Err != nil {
259				return templ_7745c5c3_Err
260			}
261		} else {
262			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "<p class=\"repo-desc mute\">no description</p>")
263			if templ_7745c5c3_Err != nil {
264				return templ_7745c5c3_Err
265			}
266		}
267		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "<p class=\"repo-meta\">")
268		if templ_7745c5c3_Err != nil {
269			return templ_7745c5c3_Err
270		}
271		if r.Branch != "" {
272			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "<span class=\"repo-branch\"><span class=\"ico i-branch\" aria-hidden=\"true\"></span>")
273			if templ_7745c5c3_Err != nil {
274				return templ_7745c5c3_Err
275			}
276			var templ_7745c5c3_Var12 string
277			templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(r.Branch)
278			if templ_7745c5c3_Err != nil {
279				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 57, Col: 94}
280			}
281			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
282			if templ_7745c5c3_Err != nil {
283				return templ_7745c5c3_Err
284			}
285			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "</span> ")
286			if templ_7745c5c3_Err != nil {
287				return templ_7745c5c3_Err
288			}
289		}
290		if r.PushedAt != "" {
291			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "<span>pushed <time datetime=\"")
292			if templ_7745c5c3_Err != nil {
293				return templ_7745c5c3_Err
294			}
295			var templ_7745c5c3_Var13 string
296			templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.PushedAt)
297			if templ_7745c5c3_Err != nil {
298				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 60, Col: 45}
299			}
300			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var13)
301			if templ_7745c5c3_Err != nil {
302				return templ_7745c5c3_Err
303			}
304			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "\" title=\"")
305			if templ_7745c5c3_Err != nil {
306				return templ_7745c5c3_Err
307			}
308			var templ_7745c5c3_Var14 string
309			templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.PushedAt)
310			if templ_7745c5c3_Err != nil {
311				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 60, Col: 66}
312			}
313			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var14)
314			if templ_7745c5c3_Err != nil {
315				return templ_7745c5c3_Err
316			}
317			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "\">")
318			if templ_7745c5c3_Err != nil {
319				return templ_7745c5c3_Err
320			}
321			var templ_7745c5c3_Var15 string
322			templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(r.Pushed)
323			if templ_7745c5c3_Err != nil {
324				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 60, Col: 79}
325			}
326			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15))
327			if templ_7745c5c3_Err != nil {
328				return templ_7745c5c3_Err
329			}
330			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "</time></span>")
331			if templ_7745c5c3_Err != nil {
332				return templ_7745c5c3_Err
333			}
334		} else {
335			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "<span>never pushed</span>")
336			if templ_7745c5c3_Err != nil {
337				return templ_7745c5c3_Err
338			}
339		}
340		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "</p></div>")
341		if templ_7745c5c3_Err != nil {
342			return templ_7745c5c3_Err
343		}
344		if r.CI != nil {
345			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "<a class=\"repo-ci\" href=\"")
346			if templ_7745c5c3_Err != nil {
347				return templ_7745c5c3_Err
348			}
349			var templ_7745c5c3_Var16 templ.SafeURL
350			templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.CI.Href))
351			if templ_7745c5c3_Err != nil {
352				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 67, Col: 53}
353			}
354			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16))
355			if templ_7745c5c3_Err != nil {
356				return templ_7745c5c3_Err
357			}
358			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "\" title=\"")
359			if templ_7745c5c3_Err != nil {
360				return templ_7745c5c3_Err
361			}
362			var templ_7745c5c3_Var17 string
363			templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.CI.Title)
364			if templ_7745c5c3_Err != nil {
365				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 67, Col: 74}
366			}
367			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var17)
368			if templ_7745c5c3_Err != nil {
369				return templ_7745c5c3_Err
370			}
371			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "\">")
372			if templ_7745c5c3_Err != nil {
373				return templ_7745c5c3_Err
374			}
375			var templ_7745c5c3_Var18 = []any{"ck", "ck-" + r.CI.Kind}
376			templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var18...)
377			if templ_7745c5c3_Err != nil {
378				return templ_7745c5c3_Err
379			}
380			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "<span class=\"")
381			if templ_7745c5c3_Err != nil {
382				return templ_7745c5c3_Err
383			}
384			var templ_7745c5c3_Var19 string
385			templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var18).String())
386			if templ_7745c5c3_Err != nil {
387				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 1, Col: 0}
388			}
389			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var19)
390			if templ_7745c5c3_Err != nil {
391				return templ_7745c5c3_Err
392			}
393			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "\" aria-hidden=\"true\"></span> <span class=\"sr\">CI: </span>")
394			if templ_7745c5c3_Err != nil {
395				return templ_7745c5c3_Err
396			}
397			var templ_7745c5c3_Var20 string
398			templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinStringErrs(r.CI.Label)
399			if templ_7745c5c3_Err != nil {
400				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 69, Col: 44}
401			}
402			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20))
403			if templ_7745c5c3_Err != nil {
404				return templ_7745c5c3_Err
405			}
406			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "</a> ")
407			if templ_7745c5c3_Err != nil {
408				return templ_7745c5c3_Err
409			}
410		}
411		if len(r.Commits) > 0 {
412			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "<ul class=\"repo-commits\" aria-label=\"")
413			if templ_7745c5c3_Err != nil {
414				return templ_7745c5c3_Err
415			}
416			var templ_7745c5c3_Var21 string
417			templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.ResolveAttributeValue("Recent commits of " + r.Name)
418			if templ_7745c5c3_Err != nil {
419				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 73, Col: 70}
420			}
421			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var21)
422			if templ_7745c5c3_Err != nil {
423				return templ_7745c5c3_Err
424			}
425			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "\">")
426			if templ_7745c5c3_Err != nil {
427				return templ_7745c5c3_Err
428			}
429			for _, c := range r.Commits {
430				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "<li><a class=\"rc-sha\" href=\"")
431				if templ_7745c5c3_Err != nil {
432					return templ_7745c5c3_Err
433				}
434				var templ_7745c5c3_Var22 templ.SafeURL
435				templ_7745c5c3_Var22, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(c.CHref))
436				if templ_7745c5c3_Err != nil {
437					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 76, Col: 53}
438				}
439				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var22))
440				if templ_7745c5c3_Err != nil {
441					return templ_7745c5c3_Err
442				}
443				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "\">")
444				if templ_7745c5c3_Err != nil {
445					return templ_7745c5c3_Err
446				}
447				var templ_7745c5c3_Var23 string
448				templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(c.Short)
449				if templ_7745c5c3_Err != nil {
450					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 76, Col: 65}
451				}
452				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23))
453				if templ_7745c5c3_Err != nil {
454					return templ_7745c5c3_Err
455				}
456				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "</a> <span class=\"rc-subject\" title=\"")
457				if templ_7745c5c3_Err != nil {
458					return templ_7745c5c3_Err
459				}
460				var templ_7745c5c3_Var24 string
461				templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.Subject)
462				if templ_7745c5c3_Err != nil {
463					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 77, Col: 48}
464				}
465				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var24)
466				if templ_7745c5c3_Err != nil {
467					return templ_7745c5c3_Err
468				}
469				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "\">")
470				if templ_7745c5c3_Err != nil {
471					return templ_7745c5c3_Err
472				}
473				var templ_7745c5c3_Var25 string
474				templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.JoinStringErrs(c.Subject)
475				if templ_7745c5c3_Err != nil {
476					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 77, Col: 62}
477				}
478				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var25))
479				if templ_7745c5c3_Err != nil {
480					return templ_7745c5c3_Err
481				}
482				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "</span> ")
483				if templ_7745c5c3_Err != nil {
484					return templ_7745c5c3_Err
485				}
486				if c.WhenAt != "" {
487					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "<time class=\"dim\" datetime=\"")
488					if templ_7745c5c3_Err != nil {
489						return templ_7745c5c3_Err
490					}
491					var templ_7745c5c3_Var26 string
492					templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.WhenAt)
493					if templ_7745c5c3_Err != nil {
494						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 79, Col: 44}
495					}
496					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var26)
497					if templ_7745c5c3_Err != nil {
498						return templ_7745c5c3_Err
499					}
500					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "\" title=\"")
501					if templ_7745c5c3_Err != nil {
502						return templ_7745c5c3_Err
503					}
504					var templ_7745c5c3_Var27 string
505					templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.WhenAt)
506					if templ_7745c5c3_Err != nil {
507						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 79, Col: 63}
508					}
509					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var27)
510					if templ_7745c5c3_Err != nil {
511						return templ_7745c5c3_Err
512					}
513					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "\">")
514					if templ_7745c5c3_Err != nil {
515						return templ_7745c5c3_Err
516					}
517					var templ_7745c5c3_Var28 string
518					templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.JoinStringErrs(c.When)
519					if templ_7745c5c3_Err != nil {
520						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 79, Col: 74}
521					}
522					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var28))
523					if templ_7745c5c3_Err != nil {
524						return templ_7745c5c3_Err
525					}
526					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "</time>")
527					if templ_7745c5c3_Err != nil {
528						return templ_7745c5c3_Err
529					}
530				}
531				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "</li>")
532				if templ_7745c5c3_Err != nil {
533					return templ_7745c5c3_Err
534				}
535			}
536			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "</ul>")
537			if templ_7745c5c3_Err != nil {
538				return templ_7745c5c3_Err
539			}
540		} else if r.NoCommits {
541			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "<p class=\"repo-commits mute\">no commits yet</p>")
542			if templ_7745c5c3_Err != nil {
543				return templ_7745c5c3_Err
544			}
545		}
546		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "</li>")
547		if templ_7745c5c3_Err != nil {
548			return templ_7745c5c3_Err
549		}
550		return nil
551	})
552}
553
554// Outline is the README outline; levels indent by 2ch, the h1 is bold.
555func Outline(headings []Heading) templ.Component {
556	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
557		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
558		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
559			return templ_7745c5c3_CtxErr
560		}
561		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
562		if !templ_7745c5c3_IsBuffer {
563			defer func() {
564				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
565				if templ_7745c5c3_Err == nil {
566					templ_7745c5c3_Err = templ_7745c5c3_BufErr
567				}
568			}()
569		}
570		ctx = templ.InitializeContext(ctx)
571		templ_7745c5c3_Var29 := templ.GetChildren(ctx)
572		if templ_7745c5c3_Var29 == nil {
573			templ_7745c5c3_Var29 = templ.NopComponent
574		}
575		ctx = templ.ClearChildren(ctx)
576		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "<nav class=\"outline\" aria-label=\"Outline\">")
577		if templ_7745c5c3_Err != nil {
578			return templ_7745c5c3_Err
579		}
580		for _, h := range headings {
581			var templ_7745c5c3_Var30 = []any{"l" + itoa(h.Level)}
582			templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var30...)
583			if templ_7745c5c3_Err != nil {
584				return templ_7745c5c3_Err
585			}
586			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "<a class=\"")
587			if templ_7745c5c3_Err != nil {
588				return templ_7745c5c3_Err
589			}
590			var templ_7745c5c3_Var31 string
591			templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var30).String())
592			if templ_7745c5c3_Err != nil {
593				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 1, Col: 0}
594			}
595			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var31)
596			if templ_7745c5c3_Err != nil {
597				return templ_7745c5c3_Err
598			}
599			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "\" href=\"")
600			if templ_7745c5c3_Err != nil {
601				return templ_7745c5c3_Err
602			}
603			var templ_7745c5c3_Var32 templ.SafeURL
604			templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL("#" + h.ID))
605			if templ_7745c5c3_Err != nil {
606				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 94, Col: 68}
607			}
608			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32))
609			if templ_7745c5c3_Err != nil {
610				return templ_7745c5c3_Err
611			}
612			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "\">")
613			if templ_7745c5c3_Err != nil {
614				return templ_7745c5c3_Err
615			}
616			var templ_7745c5c3_Var33 string
617			templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinStringErrs(h.Text)
618			if templ_7745c5c3_Err != nil {
619				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 94, Col: 79}
620			}
621			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33))
622			if templ_7745c5c3_Err != nil {
623				return templ_7745c5c3_Err
624			}
625			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "</a>")
626			if templ_7745c5c3_Err != nil {
627				return templ_7745c5c3_Err
628			}
629		}
630		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "</nav>")
631		if templ_7745c5c3_Err != nil {
632			return templ_7745c5c3_Err
633		}
634		return nil
635	})
636}
637
638// ReadmeCard is a README in a card whose header names the file.
639func ReadmeCard(r Readme) templ.Component {
640	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
641		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
642		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
643			return templ_7745c5c3_CtxErr
644		}
645		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
646		if !templ_7745c5c3_IsBuffer {
647			defer func() {
648				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
649				if templ_7745c5c3_Err == nil {
650					templ_7745c5c3_Err = templ_7745c5c3_BufErr
651				}
652			}()
653		}
654		ctx = templ.InitializeContext(ctx)
655		templ_7745c5c3_Var34 := templ.GetChildren(ctx)
656		if templ_7745c5c3_Var34 == nil {
657			templ_7745c5c3_Var34 = templ.NopComponent
658		}
659		ctx = templ.ClearChildren(ctx)
660		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "<section class=\"card readme\" aria-labelledby=\"readme-h\"><h2 class=\"card-h\" id=\"readme-h\"><span class=\"ico i-file\" aria-hidden=\"true\"></span> ")
661		if templ_7745c5c3_Err != nil {
662			return templ_7745c5c3_Err
663		}
664		var templ_7745c5c3_Var35 string
665		templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name)
666		if templ_7745c5c3_Err != nil {
667			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 104, Col: 11}
668		}
669		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var35))
670		if templ_7745c5c3_Err != nil {
671			return templ_7745c5c3_Err
672		}
673		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "</h2>")
674		if templ_7745c5c3_Err != nil {
675			return templ_7745c5c3_Err
676		}
677		templ_7745c5c3_Err = ReadmeView(r).Render(ctx, templ_7745c5c3_Buffer)
678		if templ_7745c5c3_Err != nil {
679			return templ_7745c5c3_Err
680		}
681		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "</section>")
682		if templ_7745c5c3_Err != nil {
683			return templ_7745c5c3_Err
684		}
685		return nil
686	})
687}
688
689// ReadmeView is a rendered README. Its HTML comes from the Markdown
690// renderer, which drops raw HTML and filters URLs.
691func ReadmeView(r Readme) templ.Component {
692	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
693		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
694		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
695			return templ_7745c5c3_CtxErr
696		}
697		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
698		if !templ_7745c5c3_IsBuffer {
699			defer func() {
700				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
701				if templ_7745c5c3_Err == nil {
702					templ_7745c5c3_Err = templ_7745c5c3_BufErr
703				}
704			}()
705		}
706		ctx = templ.InitializeContext(ctx)
707		templ_7745c5c3_Var36 := templ.GetChildren(ctx)
708		if templ_7745c5c3_Var36 == nil {
709			templ_7745c5c3_Var36 = templ.NopComponent
710		}
711		ctx = templ.ClearChildren(ctx)
712		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "<article class=\"prose\" aria-label=\"")
713		if templ_7745c5c3_Err != nil {
714			return templ_7745c5c3_Err
715		}
716		var templ_7745c5c3_Var37 string
717		templ_7745c5c3_Var37, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.Name)
718		if templ_7745c5c3_Err != nil {
719			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 113, Col: 43}
720		}
721		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var37)
722		if templ_7745c5c3_Err != nil {
723			return templ_7745c5c3_Err
724		}
725		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "\" hx-ignore>")
726		if templ_7745c5c3_Err != nil {
727			return templ_7745c5c3_Err
728		}
729		if r.Note != "" {
730			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "<p class=\"dim\">")
731			if templ_7745c5c3_Err != nil {
732				return templ_7745c5c3_Err
733			}
734			var templ_7745c5c3_Var38 string
735			templ_7745c5c3_Var38, templ_7745c5c3_Err = templ.JoinStringErrs(r.Note)
736			if templ_7745c5c3_Err != nil {
737				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 115, Col: 26}
738			}
739			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var38))
740			if templ_7745c5c3_Err != nil {
741				return templ_7745c5c3_Err
742			}
743			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, "</p>")
744			if templ_7745c5c3_Err != nil {
745				return templ_7745c5c3_Err
746			}
747		} else {
748			templ_7745c5c3_Err = templ.Raw(r.HTML).Render(ctx, templ_7745c5c3_Buffer)
749			if templ_7745c5c3_Err != nil {
750				return templ_7745c5c3_Err
751			}
752		}
753		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "</article>")
754		if templ_7745c5c3_Err != nil {
755			return templ_7745c5c3_Err
756		}
757		return nil
758	})
759}
760
761// CommitRows is a cursor table of commits: sha, subject with inline refs,
762// author, relative date (absolute in the title).
763func CommitRows(rows []CommitRow) templ.Component {
764	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
765		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
766		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
767			return templ_7745c5c3_CtxErr
768		}
769		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
770		if !templ_7745c5c3_IsBuffer {
771			defer func() {
772				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
773				if templ_7745c5c3_Err == nil {
774					templ_7745c5c3_Err = templ_7745c5c3_BufErr
775				}
776			}()
777		}
778		ctx = templ.InitializeContext(ctx)
779		templ_7745c5c3_Var39 := templ.GetChildren(ctx)
780		if templ_7745c5c3_Var39 == nil {
781			templ_7745c5c3_Var39 = templ.NopComponent
782		}
783		ctx = templ.ClearChildren(ctx)
784		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "<table class=\"list commits\" aria-label=\"Commits\"><tbody data-rows>")
785		if templ_7745c5c3_Err != nil {
786			return templ_7745c5c3_Err
787		}
788		for _, c := range rows {
789			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, "<tr")
790			if templ_7745c5c3_Err != nil {
791				return templ_7745c5c3_Err
792			}
793			if c.ID != "" {
794				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, " id=\"")
795				if templ_7745c5c3_Err != nil {
796					return templ_7745c5c3_Err
797				}
798				var templ_7745c5c3_Var40 string
799				templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.ID)
800				if templ_7745c5c3_Err != nil {
801					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 130, Col: 15}
802				}
803				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var40)
804				if templ_7745c5c3_Err != nil {
805					return templ_7745c5c3_Err
806				}
807				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "\"")
808				if templ_7745c5c3_Err != nil {
809					return templ_7745c5c3_Err
810				}
811			}
812			if c.Cursor {
813				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, " data-cursor")
814				if templ_7745c5c3_Err != nil {
815					return templ_7745c5c3_Err
816				}
817			}
818			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, "><td class=\"cur\" aria-hidden=\"true\"></td><td class=\"c-sha mute\">")
819			if templ_7745c5c3_Err != nil {
820				return templ_7745c5c3_Err
821			}
822			var templ_7745c5c3_Var41 string
823			templ_7745c5c3_Var41, templ_7745c5c3_Err = templ.JoinStringErrs(c.Short)
824			if templ_7745c5c3_Err != nil {
825				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 135, Col: 37}
826			}
827			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var41))
828			if templ_7745c5c3_Err != nil {
829				return templ_7745c5c3_Err
830			}
831			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "</td><td class=\"c-subject\"><a href=\"")
832			if templ_7745c5c3_Err != nil {
833				return templ_7745c5c3_Err
834			}
835			var templ_7745c5c3_Var42 templ.SafeURL
836			templ_7745c5c3_Var42, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(c.CHref))
837			if templ_7745c5c3_Err != nil {
838				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 137, Col: 38}
839			}
840			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var42))
841			if templ_7745c5c3_Err != nil {
842				return templ_7745c5c3_Err
843			}
844			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, "\">")
845			if templ_7745c5c3_Err != nil {
846				return templ_7745c5c3_Err
847			}
848			var templ_7745c5c3_Var43 string
849			templ_7745c5c3_Var43, templ_7745c5c3_Err = templ.JoinStringErrs(c.Subject)
850			if templ_7745c5c3_Err != nil {
851				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 137, Col: 52}
852			}
853			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var43))
854			if templ_7745c5c3_Err != nil {
855				return templ_7745c5c3_Err
856			}
857			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 75, "</a> ")
858			if templ_7745c5c3_Err != nil {
859				return templ_7745c5c3_Err
860			}
861			if c.Merge {
862				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 76, "<span class=\"pill\">merge</span> ")
863				if templ_7745c5c3_Err != nil {
864					return templ_7745c5c3_Err
865				}
866			}
867			for _, b := range c.Branches {
868				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 77, "<span class=\"pill\">")
869				if templ_7745c5c3_Err != nil {
870					return templ_7745c5c3_Err
871				}
872				var templ_7745c5c3_Var44 string
873				templ_7745c5c3_Var44, templ_7745c5c3_Err = templ.JoinStringErrs(b)
874				if templ_7745c5c3_Err != nil {
875					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 142, Col: 29}
876				}
877				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var44))
878				if templ_7745c5c3_Err != nil {
879					return templ_7745c5c3_Err
880				}
881				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 78, "</span> ")
882				if templ_7745c5c3_Err != nil {
883					return templ_7745c5c3_Err
884				}
885			}
886			for _, t := range c.Tags {
887				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 79, "<span class=\"pill tag\"><span class=\"sr\">tag </span>")
888				if templ_7745c5c3_Err != nil {
889					return templ_7745c5c3_Err
890				}
891				var templ_7745c5c3_Var45 string
892				templ_7745c5c3_Var45, templ_7745c5c3_Err = templ.JoinStringErrs(t)
893				if templ_7745c5c3_Err != nil {
894					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 145, Col: 61}
895				}
896				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var45))
897				if templ_7745c5c3_Err != nil {
898					return templ_7745c5c3_Err
899				}
900				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 80, "</span>")
901				if templ_7745c5c3_Err != nil {
902					return templ_7745c5c3_Err
903				}
904			}
905			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 81, "</td><td class=\"c-ck\">")
906			if templ_7745c5c3_Err != nil {
907				return templ_7745c5c3_Err
908			}
909			templ_7745c5c3_Err = CommitChecks(c.Checks).Render(ctx, templ_7745c5c3_Buffer)
910			if templ_7745c5c3_Err != nil {
911				return templ_7745c5c3_Err
912			}
913			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 82, "</td><td class=\"c-who dim\">")
914			if templ_7745c5c3_Err != nil {
915				return templ_7745c5c3_Err
916			}
917			var templ_7745c5c3_Var46 string
918			templ_7745c5c3_Var46, templ_7745c5c3_Err = templ.JoinStringErrs(c.Author)
919			if templ_7745c5c3_Err != nil {
920				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 149, Col: 37}
921			}
922			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var46))
923			if templ_7745c5c3_Err != nil {
924				return templ_7745c5c3_Err
925			}
926			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 83, "</td><td class=\"c-when nowrap dim\"><time datetime=\"")
927			if templ_7745c5c3_Err != nil {
928				return templ_7745c5c3_Err
929			}
930			var templ_7745c5c3_Var47 string
931			templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.WhenAt)
932			if templ_7745c5c3_Err != nil {
933				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 150, Col: 60}
934			}
935			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var47)
936			if templ_7745c5c3_Err != nil {
937				return templ_7745c5c3_Err
938			}
939			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 84, "\" title=\"")
940			if templ_7745c5c3_Err != nil {
941				return templ_7745c5c3_Err
942			}
943			var templ_7745c5c3_Var48 string
944			templ_7745c5c3_Var48, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.WhenAt)
945			if templ_7745c5c3_Err != nil {
946				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 150, Col: 79}
947			}
948			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var48)
949			if templ_7745c5c3_Err != nil {
950				return templ_7745c5c3_Err
951			}
952			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 85, "\">")
953			if templ_7745c5c3_Err != nil {
954				return templ_7745c5c3_Err
955			}
956			var templ_7745c5c3_Var49 string
957			templ_7745c5c3_Var49, templ_7745c5c3_Err = templ.JoinStringErrs(c.When)
958			if templ_7745c5c3_Err != nil {
959				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 150, Col: 90}
960			}
961			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var49))
962			if templ_7745c5c3_Err != nil {
963				return templ_7745c5c3_Err
964			}
965			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 86, "</time></td></tr>")
966			if templ_7745c5c3_Err != nil {
967				return templ_7745c5c3_Err
968			}
969		}
970		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 87, "</tbody></table>")
971		if templ_7745c5c3_Err != nil {
972			return templ_7745c5c3_Err
973		}
974		return nil
975	})
976}
977
978var _ = 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 4

Tags 45

↑↓ moveenter openesc close