v0.24.0 166837a

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. On the left what
151// it is: name, description, topics and the pulse of its activity; on the
152// right its figures and CI state over its newest commits. Its id is the
153// target of SSE swaps; the name link comes first, `enter` follows it.
154func HomeRowView(r HomeRow) templ.Component {
155	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
156		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
157		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
158			return templ_7745c5c3_CtxErr
159		}
160		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
161		if !templ_7745c5c3_IsBuffer {
162			defer func() {
163				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
164				if templ_7745c5c3_Err == nil {
165					templ_7745c5c3_Err = templ_7745c5c3_BufErr
166				}
167			}()
168		}
169		ctx = templ.InitializeContext(ctx)
170		templ_7745c5c3_Var7 := templ.GetChildren(ctx)
171		if templ_7745c5c3_Var7 == nil {
172			templ_7745c5c3_Var7 = templ.NopComponent
173		}
174		ctx = templ.ClearChildren(ctx)
175		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "<li id=\"")
176		if templ_7745c5c3_Err != nil {
177			return templ_7745c5c3_Err
178		}
179		var templ_7745c5c3_Var8 string
180		templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.ID)
181		if templ_7745c5c3_Err != nil {
182			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 40, Col: 14}
183		}
184		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var8)
185		if templ_7745c5c3_Err != nil {
186			return templ_7745c5c3_Err
187		}
188		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "\" class=\"repo\"")
189		if templ_7745c5c3_Err != nil {
190			return templ_7745c5c3_Err
191		}
192		if r.Cursor {
193			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, " data-cursor")
194			if templ_7745c5c3_Err != nil {
195				return templ_7745c5c3_Err
196			}
197		}
198		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "><div class=\"repo-main\"><h2 class=\"repo-name\"><a href=\"")
199		if templ_7745c5c3_Err != nil {
200			return templ_7745c5c3_Err
201		}
202		var templ_7745c5c3_Var9 templ.SafeURL
203		templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href))
204		if templ_7745c5c3_Err != nil {
205			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 43, Col: 35}
206		}
207		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9))
208		if templ_7745c5c3_Err != nil {
209			return templ_7745c5c3_Err
210		}
211		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "\">")
212		if templ_7745c5c3_Err != nil {
213			return templ_7745c5c3_Err
214		}
215		var templ_7745c5c3_Var10 string
216		templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name)
217		if templ_7745c5c3_Err != nil {
218			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 43, Col: 46}
219		}
220		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10))
221		if templ_7745c5c3_Err != nil {
222			return templ_7745c5c3_Err
223		}
224		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "</a> ")
225		if templ_7745c5c3_Err != nil {
226			return templ_7745c5c3_Err
227		}
228		if r.Private {
229			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "<span class=\"pill\">private</span> ")
230			if templ_7745c5c3_Err != nil {
231				return templ_7745c5c3_Err
232			}
233		}
234		if r.Fresh {
235			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "<span class=\"pill new\">new push</span>")
236			if templ_7745c5c3_Err != nil {
237				return templ_7745c5c3_Err
238			}
239		}
240		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "</h2>")
241		if templ_7745c5c3_Err != nil {
242			return templ_7745c5c3_Err
243		}
244		if r.Desc != "" {
245			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "<p class=\"repo-desc\">")
246			if templ_7745c5c3_Err != nil {
247				return templ_7745c5c3_Err
248			}
249			var templ_7745c5c3_Var11 string
250			templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(r.Desc)
251			if templ_7745c5c3_Err != nil {
252				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 52, Col: 33}
253			}
254			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11))
255			if templ_7745c5c3_Err != nil {
256				return templ_7745c5c3_Err
257			}
258			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "</p>")
259			if templ_7745c5c3_Err != nil {
260				return templ_7745c5c3_Err
261			}
262		} else {
263			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "<p class=\"repo-desc mute\">no description</p>")
264			if templ_7745c5c3_Err != nil {
265				return templ_7745c5c3_Err
266			}
267		}
268		if len(r.Topics) > 0 {
269			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "<ul class=\"repo-topics\" aria-label=\"")
270			if templ_7745c5c3_Err != nil {
271				return templ_7745c5c3_Err
272			}
273			var templ_7745c5c3_Var12 string
274			templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.ResolveAttributeValue("Topics of " + r.Name)
275			if templ_7745c5c3_Err != nil {
276				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 57, Col: 62}
277			}
278			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var12)
279			if templ_7745c5c3_Err != nil {
280				return templ_7745c5c3_Err
281			}
282			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "\">")
283			if templ_7745c5c3_Err != nil {
284				return templ_7745c5c3_Err
285			}
286			for _, t := range r.Topics {
287				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "<li>")
288				if templ_7745c5c3_Err != nil {
289					return templ_7745c5c3_Err
290				}
291				var templ_7745c5c3_Var13 string
292				templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(t)
293				if templ_7745c5c3_Err != nil {
294					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 59, Col: 13}
295				}
296				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13))
297				if templ_7745c5c3_Err != nil {
298					return templ_7745c5c3_Err
299				}
300				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "</li>")
301				if templ_7745c5c3_Err != nil {
302					return templ_7745c5c3_Err
303				}
304			}
305			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "</ul>")
306			if templ_7745c5c3_Err != nil {
307				return templ_7745c5c3_Err
308			}
309		}
310		if r.Stats != nil && r.Stats.Pulse != nil {
311			templ_7745c5c3_Err = pulse(r.Stats.Pulse).Render(ctx, templ_7745c5c3_Buffer)
312			if templ_7745c5c3_Err != nil {
313				return templ_7745c5c3_Err
314			}
315		}
316		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "</div><div class=\"repo-head\"><dl class=\"repo-stats\" aria-label=\"")
317		if templ_7745c5c3_Err != nil {
318			return templ_7745c5c3_Err
319		}
320		var templ_7745c5c3_Var14 string
321		templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.ResolveAttributeValue("Figures of " + r.Name)
322		if templ_7745c5c3_Err != nil {
323			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 68, Col: 61}
324		}
325		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var14)
326		if templ_7745c5c3_Err != nil {
327			return templ_7745c5c3_Err
328		}
329		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "\">")
330		if templ_7745c5c3_Err != nil {
331			return templ_7745c5c3_Err
332		}
333		if s := r.Stats; s != nil {
334			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "<div><dt>commits</dt><dd>")
335			if templ_7745c5c3_Err != nil {
336				return templ_7745c5c3_Err
337			}
338			var templ_7745c5c3_Var15 string
339			templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(s.Commits)
340			if templ_7745c5c3_Err != nil {
341				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 70, Col: 41}
342			}
343			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15))
344			if templ_7745c5c3_Err != nil {
345				return templ_7745c5c3_Err
346			}
347			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "</dd></div><div><dt>last 30 days</dt><dd>")
348			if templ_7745c5c3_Err != nil {
349				return templ_7745c5c3_Err
350			}
351			var templ_7745c5c3_Var16 string
352			templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(s.Recent)
353			if templ_7745c5c3_Err != nil {
354				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 71, Col: 45}
355			}
356			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16))
357			if templ_7745c5c3_Err != nil {
358				return templ_7745c5c3_Err
359			}
360			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "</dd></div>")
361			if templ_7745c5c3_Err != nil {
362				return templ_7745c5c3_Err
363			}
364			if s.Tag != "" {
365				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "<div class=\"rs-tag\"><dt>latest tag</dt>")
366				if templ_7745c5c3_Err != nil {
367					return templ_7745c5c3_Err
368				}
369				if s.TagHref != "" {
370					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "<dd><a href=\"")
371					if templ_7745c5c3_Err != nil {
372						return templ_7745c5c3_Err
373					}
374					var templ_7745c5c3_Var17 templ.SafeURL
375					templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(s.TagHref))
376					if templ_7745c5c3_Err != nil {
377						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 76, Col: 46}
378					}
379					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17))
380					if templ_7745c5c3_Err != nil {
381						return templ_7745c5c3_Err
382					}
383					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "\" title=\"")
384					if templ_7745c5c3_Err != nil {
385						return templ_7745c5c3_Err
386					}
387					var templ_7745c5c3_Var18 string
388					templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.ResolveAttributeValue(s.Tag + " · made " + s.TagWhen)
389					if templ_7745c5c3_Err != nil {
390						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 76, Col: 88}
391					}
392					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var18)
393					if templ_7745c5c3_Err != nil {
394						return templ_7745c5c3_Err
395					}
396					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "\">")
397					if templ_7745c5c3_Err != nil {
398						return templ_7745c5c3_Err
399					}
400					var templ_7745c5c3_Var19 string
401					templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(s.Tag)
402					if templ_7745c5c3_Err != nil {
403						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 76, Col: 98}
404					}
405					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19))
406					if templ_7745c5c3_Err != nil {
407						return templ_7745c5c3_Err
408					}
409					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "</a></dd>")
410					if templ_7745c5c3_Err != nil {
411						return templ_7745c5c3_Err
412					}
413				} else {
414					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "<dd title=\"")
415					if templ_7745c5c3_Err != nil {
416						return templ_7745c5c3_Err
417					}
418					var templ_7745c5c3_Var20 string
419					templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.ResolveAttributeValue(s.Tag + " · made " + s.TagWhen)
420					if templ_7745c5c3_Err != nil {
421						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 78, Col: 51}
422					}
423					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var20)
424					if templ_7745c5c3_Err != nil {
425						return templ_7745c5c3_Err
426					}
427					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "\">")
428					if templ_7745c5c3_Err != nil {
429						return templ_7745c5c3_Err
430					}
431					var templ_7745c5c3_Var21 string
432					templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinStringErrs(s.Tag)
433					if templ_7745c5c3_Err != nil {
434						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 78, Col: 61}
435					}
436					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21))
437					if templ_7745c5c3_Err != nil {
438						return templ_7745c5c3_Err
439					}
440					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "</dd>")
441					if templ_7745c5c3_Err != nil {
442						return templ_7745c5c3_Err
443					}
444				}
445				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "</div>")
446				if templ_7745c5c3_Err != nil {
447					return templ_7745c5c3_Err
448				}
449			}
450		}
451		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "<div><dt>last activity</dt>")
452		if templ_7745c5c3_Err != nil {
453			return templ_7745c5c3_Err
454		}
455		if r.ActiveAt != "" {
456			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "<dd><time datetime=\"")
457			if templ_7745c5c3_Err != nil {
458				return templ_7745c5c3_Err
459			}
460			var templ_7745c5c3_Var22 string
461			templ_7745c5c3_Var22, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.ActiveAt)
462			if templ_7745c5c3_Err != nil {
463				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 86, Col: 37}
464			}
465			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var22)
466			if templ_7745c5c3_Err != nil {
467				return templ_7745c5c3_Err
468			}
469			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "\" title=\"")
470			if templ_7745c5c3_Err != nil {
471				return templ_7745c5c3_Err
472			}
473			var templ_7745c5c3_Var23 string
474			templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.ActiveAt)
475			if templ_7745c5c3_Err != nil {
476				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 86, Col: 58}
477			}
478			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var23)
479			if templ_7745c5c3_Err != nil {
480				return templ_7745c5c3_Err
481			}
482			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "\">")
483			if templ_7745c5c3_Err != nil {
484				return templ_7745c5c3_Err
485			}
486			var templ_7745c5c3_Var24 string
487			templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.JoinStringErrs(r.Active)
488			if templ_7745c5c3_Err != nil {
489				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 86, Col: 71}
490			}
491			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var24))
492			if templ_7745c5c3_Err != nil {
493				return templ_7745c5c3_Err
494			}
495			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "</time></dd>")
496			if templ_7745c5c3_Err != nil {
497				return templ_7745c5c3_Err
498			}
499		} else {
500			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "<dd class=\"mute\">never</dd>")
501			if templ_7745c5c3_Err != nil {
502				return templ_7745c5c3_Err
503			}
504		}
505		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "</div></dl>")
506		if templ_7745c5c3_Err != nil {
507			return templ_7745c5c3_Err
508		}
509		if r.CI != nil {
510			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "<a class=\"repo-ci\" href=\"")
511			if templ_7745c5c3_Err != nil {
512				return templ_7745c5c3_Err
513			}
514			var templ_7745c5c3_Var25 templ.SafeURL
515			templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.CI.Href))
516			if templ_7745c5c3_Err != nil {
517				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 93, Col: 54}
518			}
519			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var25))
520			if templ_7745c5c3_Err != nil {
521				return templ_7745c5c3_Err
522			}
523			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "\" title=\"")
524			if templ_7745c5c3_Err != nil {
525				return templ_7745c5c3_Err
526			}
527			var templ_7745c5c3_Var26 string
528			templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.CI.Title)
529			if templ_7745c5c3_Err != nil {
530				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 93, Col: 75}
531			}
532			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var26)
533			if templ_7745c5c3_Err != nil {
534				return templ_7745c5c3_Err
535			}
536			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "\">")
537			if templ_7745c5c3_Err != nil {
538				return templ_7745c5c3_Err
539			}
540			var templ_7745c5c3_Var27 = []any{"ck", "ck-" + r.CI.Kind}
541			templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var27...)
542			if templ_7745c5c3_Err != nil {
543				return templ_7745c5c3_Err
544			}
545			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "<span class=\"")
546			if templ_7745c5c3_Err != nil {
547				return templ_7745c5c3_Err
548			}
549			var templ_7745c5c3_Var28 string
550			templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var27).String())
551			if templ_7745c5c3_Err != nil {
552				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 1, Col: 0}
553			}
554			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var28)
555			if templ_7745c5c3_Err != nil {
556				return templ_7745c5c3_Err
557			}
558			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "\" aria-hidden=\"true\"></span> <span class=\"sr\">CI: </span>")
559			if templ_7745c5c3_Err != nil {
560				return templ_7745c5c3_Err
561			}
562			var templ_7745c5c3_Var29 string
563			templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.JoinStringErrs(r.CI.Label)
564			if templ_7745c5c3_Err != nil {
565				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 95, Col: 45}
566			}
567			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var29))
568			if templ_7745c5c3_Err != nil {
569				return templ_7745c5c3_Err
570			}
571			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "</a>")
572			if templ_7745c5c3_Err != nil {
573				return templ_7745c5c3_Err
574			}
575		}
576		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "</div>")
577		if templ_7745c5c3_Err != nil {
578			return templ_7745c5c3_Err
579		}
580		if len(r.Commits) > 0 {
581			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "<ul class=\"repo-commits\"")
582			if templ_7745c5c3_Err != nil {
583				return templ_7745c5c3_Err
584			}
585			if len(r.Commits) == homeRecent {
586				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, " data-full")
587				if templ_7745c5c3_Err != nil {
588					return templ_7745c5c3_Err
589				}
590			}
591			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, " aria-label=\"")
592			if templ_7745c5c3_Err != nil {
593				return templ_7745c5c3_Err
594			}
595			var templ_7745c5c3_Var30 string
596			templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.ResolveAttributeValue("Recent commits of " + r.Name)
597			if templ_7745c5c3_Err != nil {
598				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 103, Col: 46}
599			}
600			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var30)
601			if templ_7745c5c3_Err != nil {
602				return templ_7745c5c3_Err
603			}
604			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "\">")
605			if templ_7745c5c3_Err != nil {
606				return templ_7745c5c3_Err
607			}
608			for _, c := range r.Commits {
609				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "<li><a class=\"rc-sha\" href=\"")
610				if templ_7745c5c3_Err != nil {
611					return templ_7745c5c3_Err
612				}
613				var templ_7745c5c3_Var31 templ.SafeURL
614				templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(c.CHref))
615				if templ_7745c5c3_Err != nil {
616					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 107, Col: 53}
617				}
618				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31))
619				if templ_7745c5c3_Err != nil {
620					return templ_7745c5c3_Err
621				}
622				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "\">")
623				if templ_7745c5c3_Err != nil {
624					return templ_7745c5c3_Err
625				}
626				var templ_7745c5c3_Var32 string
627				templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(c.Short)
628				if templ_7745c5c3_Err != nil {
629					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 107, Col: 65}
630				}
631				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32))
632				if templ_7745c5c3_Err != nil {
633					return templ_7745c5c3_Err
634				}
635				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "</a> <span class=\"rc-subject\" title=\"")
636				if templ_7745c5c3_Err != nil {
637					return templ_7745c5c3_Err
638				}
639				var templ_7745c5c3_Var33 string
640				templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.Subject)
641				if templ_7745c5c3_Err != nil {
642					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 108, Col: 48}
643				}
644				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var33)
645				if templ_7745c5c3_Err != nil {
646					return templ_7745c5c3_Err
647				}
648				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "\">")
649				if templ_7745c5c3_Err != nil {
650					return templ_7745c5c3_Err
651				}
652				var templ_7745c5c3_Var34 string
653				templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(c.Subject)
654				if templ_7745c5c3_Err != nil {
655					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 108, Col: 62}
656				}
657				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34))
658				if templ_7745c5c3_Err != nil {
659					return templ_7745c5c3_Err
660				}
661				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "</span> ")
662				if templ_7745c5c3_Err != nil {
663					return templ_7745c5c3_Err
664				}
665				if c.WhenAt != "" {
666					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, "<time class=\"dim\" datetime=\"")
667					if templ_7745c5c3_Err != nil {
668						return templ_7745c5c3_Err
669					}
670					var templ_7745c5c3_Var35 string
671					templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.WhenAt)
672					if templ_7745c5c3_Err != nil {
673						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 110, Col: 44}
674					}
675					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var35)
676					if templ_7745c5c3_Err != nil {
677						return templ_7745c5c3_Err
678					}
679					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "\" title=\"")
680					if templ_7745c5c3_Err != nil {
681						return templ_7745c5c3_Err
682					}
683					var templ_7745c5c3_Var36 string
684					templ_7745c5c3_Var36, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.WhenAt)
685					if templ_7745c5c3_Err != nil {
686						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 110, Col: 63}
687					}
688					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var36)
689					if templ_7745c5c3_Err != nil {
690						return templ_7745c5c3_Err
691					}
692					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "\">")
693					if templ_7745c5c3_Err != nil {
694						return templ_7745c5c3_Err
695					}
696					var templ_7745c5c3_Var37 string
697					templ_7745c5c3_Var37, templ_7745c5c3_Err = templ.JoinStringErrs(c.When)
698					if templ_7745c5c3_Err != nil {
699						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 110, Col: 74}
700					}
701					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var37))
702					if templ_7745c5c3_Err != nil {
703						return templ_7745c5c3_Err
704					}
705					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, "</time>")
706					if templ_7745c5c3_Err != nil {
707						return templ_7745c5c3_Err
708					}
709				}
710				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, "</li>")
711				if templ_7745c5c3_Err != nil {
712					return templ_7745c5c3_Err
713				}
714			}
715			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "</ul>")
716			if templ_7745c5c3_Err != nil {
717				return templ_7745c5c3_Err
718			}
719		} else if r.NoCommits {
720			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "<p class=\"repo-commits mute\">no commits yet</p>")
721			if templ_7745c5c3_Err != nil {
722				return templ_7745c5c3_Err
723			}
724		}
725		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, "</li>")
726		if templ_7745c5c3_Err != nil {
727			return templ_7745c5c3_Err
728		}
729		return nil
730	})
731}
732
733// pulse is the activity curve of a home row: a smooth line over a fading
734// area on a faint grid, and a dot at today that beats while the repository
735// is active. The SVG scales evenly with its column, so the dot stays round.
736func pulse(h *Heartbeat) templ.Component {
737	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
738		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
739		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
740			return templ_7745c5c3_CtxErr
741		}
742		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
743		if !templ_7745c5c3_IsBuffer {
744			defer func() {
745				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
746				if templ_7745c5c3_Err == nil {
747					templ_7745c5c3_Err = templ_7745c5c3_BufErr
748				}
749			}()
750		}
751		ctx = templ.InitializeContext(ctx)
752		templ_7745c5c3_Var38 := templ.GetChildren(ctx)
753		if templ_7745c5c3_Var38 == nil {
754			templ_7745c5c3_Var38 = templ.NopComponent
755		}
756		ctx = templ.ClearChildren(ctx)
757		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "<figure class=\"repo-pulse\"")
758		if templ_7745c5c3_Err != nil {
759			return templ_7745c5c3_Err
760		}
761		if h.Live {
762			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, " data-live")
763			if templ_7745c5c3_Err != nil {
764				return templ_7745c5c3_Err
765			}
766		}
767		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 75, "><svg viewBox=\"0 0 600 64\" role=\"img\" aria-label=\"")
768		if templ_7745c5c3_Err != nil {
769			return templ_7745c5c3_Err
770		}
771		var templ_7745c5c3_Var39 string
772		templ_7745c5c3_Var39, templ_7745c5c3_Err = templ.ResolveAttributeValue(h.Label)
773		if templ_7745c5c3_Err != nil {
774			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 126, Col: 59}
775		}
776		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var39)
777		if templ_7745c5c3_Err != nil {
778			return templ_7745c5c3_Err
779		}
780		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 76, "\" focusable=\"false\"><defs><linearGradient id=\"")
781		if templ_7745c5c3_Err != nil {
782			return templ_7745c5c3_Err
783		}
784		var templ_7745c5c3_Var40 string
785		templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.ResolveAttributeValue(h.GradID)
786		if templ_7745c5c3_Err != nil {
787			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 128, Col: 33}
788		}
789		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var40)
790		if templ_7745c5c3_Err != nil {
791			return templ_7745c5c3_Err
792		}
793		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 77, "\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\"><stop class=\"pulse-stop-top\" offset=\"0\"></stop> <stop class=\"pulse-stop-bottom\" offset=\"1\"></stop></linearGradient></defs> <path class=\"pulse-grid\" d=\"M0 21.5 H600 M0 42.5 H600 M0 63.5 H600\" vector-effect=\"non-scaling-stroke\"></path> <path class=\"pulse-area\" d=\"")
794		if templ_7745c5c3_Err != nil {
795			return templ_7745c5c3_Err
796		}
797		var templ_7745c5c3_Var41 string
798		templ_7745c5c3_Var41, templ_7745c5c3_Err = templ.ResolveAttributeValue(h.Area)
799		if templ_7745c5c3_Err != nil {
800			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 134, Col: 38}
801		}
802		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var41)
803		if templ_7745c5c3_Err != nil {
804			return templ_7745c5c3_Err
805		}
806		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 78, "\" fill=\"")
807		if templ_7745c5c3_Err != nil {
808			return templ_7745c5c3_Err
809		}
810		var templ_7745c5c3_Var42 string
811		templ_7745c5c3_Var42, templ_7745c5c3_Err = templ.ResolveAttributeValue("url(#" + h.GradID + ")")
812		if templ_7745c5c3_Err != nil {
813			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 134, Col: 72}
814		}
815		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var42)
816		if templ_7745c5c3_Err != nil {
817			return templ_7745c5c3_Err
818		}
819		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 79, "\"></path> <path class=\"pulse-line\" d=\"")
820		if templ_7745c5c3_Err != nil {
821			return templ_7745c5c3_Err
822		}
823		var templ_7745c5c3_Var43 string
824		templ_7745c5c3_Var43, templ_7745c5c3_Err = templ.ResolveAttributeValue(h.Line)
825		if templ_7745c5c3_Err != nil {
826			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 135, Col: 38}
827		}
828		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var43)
829		if templ_7745c5c3_Err != nil {
830			return templ_7745c5c3_Err
831		}
832		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 80, "\" vector-effect=\"non-scaling-stroke\"></path> <circle class=\"pulse-ring\" cx=\"")
833		if templ_7745c5c3_Err != nil {
834			return templ_7745c5c3_Err
835		}
836		var templ_7745c5c3_Var44 string
837		templ_7745c5c3_Var44, templ_7745c5c3_Err = templ.ResolveAttributeValue(h.X)
838		if templ_7745c5c3_Err != nil {
839			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 136, Col: 38}
840		}
841		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var44)
842		if templ_7745c5c3_Err != nil {
843			return templ_7745c5c3_Err
844		}
845		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 81, "\" cy=\"")
846		if templ_7745c5c3_Err != nil {
847			return templ_7745c5c3_Err
848		}
849		var templ_7745c5c3_Var45 string
850		templ_7745c5c3_Var45, templ_7745c5c3_Err = templ.ResolveAttributeValue(h.Y)
851		if templ_7745c5c3_Err != nil {
852			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 136, Col: 49}
853		}
854		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var45)
855		if templ_7745c5c3_Err != nil {
856			return templ_7745c5c3_Err
857		}
858		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 82, "\" r=\"4\"></circle> <circle class=\"pulse-dot\" cx=\"")
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.ResolveAttributeValue(h.X)
864		if templ_7745c5c3_Err != nil {
865			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 137, Col: 37}
866		}
867		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var46)
868		if templ_7745c5c3_Err != nil {
869			return templ_7745c5c3_Err
870		}
871		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 83, "\" cy=\"")
872		if templ_7745c5c3_Err != nil {
873			return templ_7745c5c3_Err
874		}
875		var templ_7745c5c3_Var47 string
876		templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.ResolveAttributeValue(h.Y)
877		if templ_7745c5c3_Err != nil {
878			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 137, Col: 48}
879		}
880		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var47)
881		if templ_7745c5c3_Err != nil {
882			return templ_7745c5c3_Err
883		}
884		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 84, "\" r=\"3.5\"></circle></svg><figcaption class=\"pulse-cap\" aria-hidden=\"true\"><span>90 days ago</span><span>today</span></figcaption></figure>")
885		if templ_7745c5c3_Err != nil {
886			return templ_7745c5c3_Err
887		}
888		return nil
889	})
890}
891
892// Outline is the README outline; levels indent by 2ch, the h1 is bold.
893func Outline(headings []Heading) templ.Component {
894	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
895		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
896		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
897			return templ_7745c5c3_CtxErr
898		}
899		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
900		if !templ_7745c5c3_IsBuffer {
901			defer func() {
902				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
903				if templ_7745c5c3_Err == nil {
904					templ_7745c5c3_Err = templ_7745c5c3_BufErr
905				}
906			}()
907		}
908		ctx = templ.InitializeContext(ctx)
909		templ_7745c5c3_Var48 := templ.GetChildren(ctx)
910		if templ_7745c5c3_Var48 == nil {
911			templ_7745c5c3_Var48 = templ.NopComponent
912		}
913		ctx = templ.ClearChildren(ctx)
914		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 85, "<nav class=\"outline\" aria-label=\"Outline\">")
915		if templ_7745c5c3_Err != nil {
916			return templ_7745c5c3_Err
917		}
918		for _, h := range headings {
919			var templ_7745c5c3_Var49 = []any{"l" + itoa(h.Level)}
920			templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var49...)
921			if templ_7745c5c3_Err != nil {
922				return templ_7745c5c3_Err
923			}
924			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 86, "<a class=\"")
925			if templ_7745c5c3_Err != nil {
926				return templ_7745c5c3_Err
927			}
928			var templ_7745c5c3_Var50 string
929			templ_7745c5c3_Var50, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var49).String())
930			if templ_7745c5c3_Err != nil {
931				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 1, Col: 0}
932			}
933			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var50)
934			if templ_7745c5c3_Err != nil {
935				return templ_7745c5c3_Err
936			}
937			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 87, "\" href=\"")
938			if templ_7745c5c3_Err != nil {
939				return templ_7745c5c3_Err
940			}
941			var templ_7745c5c3_Var51 templ.SafeURL
942			templ_7745c5c3_Var51, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL("#" + h.ID))
943			if templ_7745c5c3_Err != nil {
944				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 147, Col: 68}
945			}
946			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var51))
947			if templ_7745c5c3_Err != nil {
948				return templ_7745c5c3_Err
949			}
950			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 88, "\">")
951			if templ_7745c5c3_Err != nil {
952				return templ_7745c5c3_Err
953			}
954			var templ_7745c5c3_Var52 string
955			templ_7745c5c3_Var52, templ_7745c5c3_Err = templ.JoinStringErrs(h.Text)
956			if templ_7745c5c3_Err != nil {
957				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 147, Col: 79}
958			}
959			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var52))
960			if templ_7745c5c3_Err != nil {
961				return templ_7745c5c3_Err
962			}
963			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 89, "</a>")
964			if templ_7745c5c3_Err != nil {
965				return templ_7745c5c3_Err
966			}
967		}
968		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 90, "</nav>")
969		if templ_7745c5c3_Err != nil {
970			return templ_7745c5c3_Err
971		}
972		return nil
973	})
974}
975
976// ReadmeCard is a README in a card whose header names the file.
977func ReadmeCard(r Readme) templ.Component {
978	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
979		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
980		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
981			return templ_7745c5c3_CtxErr
982		}
983		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
984		if !templ_7745c5c3_IsBuffer {
985			defer func() {
986				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
987				if templ_7745c5c3_Err == nil {
988					templ_7745c5c3_Err = templ_7745c5c3_BufErr
989				}
990			}()
991		}
992		ctx = templ.InitializeContext(ctx)
993		templ_7745c5c3_Var53 := templ.GetChildren(ctx)
994		if templ_7745c5c3_Var53 == nil {
995			templ_7745c5c3_Var53 = templ.NopComponent
996		}
997		ctx = templ.ClearChildren(ctx)
998		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, "<section class=\"card readme\" aria-labelledby=\"readme-h\"><h2 class=\"card-h\" id=\"readme-h\"><span class=\"ico i-file\" aria-hidden=\"true\"></span> ")
999		if templ_7745c5c3_Err != nil {
1000			return templ_7745c5c3_Err
1001		}
1002		var templ_7745c5c3_Var54 string
1003		templ_7745c5c3_Var54, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name)
1004		if templ_7745c5c3_Err != nil {
1005			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 157, Col: 11}
1006		}
1007		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var54))
1008		if templ_7745c5c3_Err != nil {
1009			return templ_7745c5c3_Err
1010		}
1011		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 92, "</h2>")
1012		if templ_7745c5c3_Err != nil {
1013			return templ_7745c5c3_Err
1014		}
1015		templ_7745c5c3_Err = ReadmeView(r).Render(ctx, templ_7745c5c3_Buffer)
1016		if templ_7745c5c3_Err != nil {
1017			return templ_7745c5c3_Err
1018		}
1019		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 93, "</section>")
1020		if templ_7745c5c3_Err != nil {
1021			return templ_7745c5c3_Err
1022		}
1023		return nil
1024	})
1025}
1026
1027// ReadmeView is a rendered README. Its HTML comes from the Markdown
1028// renderer, which drops raw HTML and filters URLs.
1029func ReadmeView(r Readme) templ.Component {
1030	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1031		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1032		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1033			return templ_7745c5c3_CtxErr
1034		}
1035		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1036		if !templ_7745c5c3_IsBuffer {
1037			defer func() {
1038				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1039				if templ_7745c5c3_Err == nil {
1040					templ_7745c5c3_Err = templ_7745c5c3_BufErr
1041				}
1042			}()
1043		}
1044		ctx = templ.InitializeContext(ctx)
1045		templ_7745c5c3_Var55 := templ.GetChildren(ctx)
1046		if templ_7745c5c3_Var55 == nil {
1047			templ_7745c5c3_Var55 = templ.NopComponent
1048		}
1049		ctx = templ.ClearChildren(ctx)
1050		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 94, "<article class=\"prose\" aria-label=\"")
1051		if templ_7745c5c3_Err != nil {
1052			return templ_7745c5c3_Err
1053		}
1054		var templ_7745c5c3_Var56 string
1055		templ_7745c5c3_Var56, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.Name)
1056		if templ_7745c5c3_Err != nil {
1057			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 166, Col: 43}
1058		}
1059		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var56)
1060		if templ_7745c5c3_Err != nil {
1061			return templ_7745c5c3_Err
1062		}
1063		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 95, "\" hx-ignore>")
1064		if templ_7745c5c3_Err != nil {
1065			return templ_7745c5c3_Err
1066		}
1067		if r.Note != "" {
1068			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 96, "<p class=\"dim\">")
1069			if templ_7745c5c3_Err != nil {
1070				return templ_7745c5c3_Err
1071			}
1072			var templ_7745c5c3_Var57 string
1073			templ_7745c5c3_Var57, templ_7745c5c3_Err = templ.JoinStringErrs(r.Note)
1074			if templ_7745c5c3_Err != nil {
1075				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 168, Col: 26}
1076			}
1077			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var57))
1078			if templ_7745c5c3_Err != nil {
1079				return templ_7745c5c3_Err
1080			}
1081			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 97, "</p>")
1082			if templ_7745c5c3_Err != nil {
1083				return templ_7745c5c3_Err
1084			}
1085		} else {
1086			templ_7745c5c3_Err = templ.Raw(r.HTML).Render(ctx, templ_7745c5c3_Buffer)
1087			if templ_7745c5c3_Err != nil {
1088				return templ_7745c5c3_Err
1089			}
1090		}
1091		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 98, "</article>")
1092		if templ_7745c5c3_Err != nil {
1093			return templ_7745c5c3_Err
1094		}
1095		return nil
1096	})
1097}
1098
1099// CommitRows is a cursor table of commits: sha, subject with inline refs,
1100// author, relative date (absolute in the title).
1101func CommitRows(rows []CommitRow) templ.Component {
1102	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1103		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1104		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1105			return templ_7745c5c3_CtxErr
1106		}
1107		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1108		if !templ_7745c5c3_IsBuffer {
1109			defer func() {
1110				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1111				if templ_7745c5c3_Err == nil {
1112					templ_7745c5c3_Err = templ_7745c5c3_BufErr
1113				}
1114			}()
1115		}
1116		ctx = templ.InitializeContext(ctx)
1117		templ_7745c5c3_Var58 := templ.GetChildren(ctx)
1118		if templ_7745c5c3_Var58 == nil {
1119			templ_7745c5c3_Var58 = templ.NopComponent
1120		}
1121		ctx = templ.ClearChildren(ctx)
1122		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, "<table class=\"list commits\" aria-label=\"Commits\"><tbody data-rows>")
1123		if templ_7745c5c3_Err != nil {
1124			return templ_7745c5c3_Err
1125		}
1126		for _, c := range rows {
1127			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 100, "<tr")
1128			if templ_7745c5c3_Err != nil {
1129				return templ_7745c5c3_Err
1130			}
1131			if c.ID != "" {
1132				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 101, " id=\"")
1133				if templ_7745c5c3_Err != nil {
1134					return templ_7745c5c3_Err
1135				}
1136				var templ_7745c5c3_Var59 string
1137				templ_7745c5c3_Var59, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.ID)
1138				if templ_7745c5c3_Err != nil {
1139					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 183, Col: 15}
1140				}
1141				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var59)
1142				if templ_7745c5c3_Err != nil {
1143					return templ_7745c5c3_Err
1144				}
1145				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 102, "\"")
1146				if templ_7745c5c3_Err != nil {
1147					return templ_7745c5c3_Err
1148				}
1149			}
1150			if c.Cursor {
1151				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 103, " data-cursor")
1152				if templ_7745c5c3_Err != nil {
1153					return templ_7745c5c3_Err
1154				}
1155			}
1156			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 104, "><td class=\"c-sha mute\">")
1157			if templ_7745c5c3_Err != nil {
1158				return templ_7745c5c3_Err
1159			}
1160			var templ_7745c5c3_Var60 string
1161			templ_7745c5c3_Var60, templ_7745c5c3_Err = templ.JoinStringErrs(c.Short)
1162			if templ_7745c5c3_Err != nil {
1163				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 187, Col: 37}
1164			}
1165			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var60))
1166			if templ_7745c5c3_Err != nil {
1167				return templ_7745c5c3_Err
1168			}
1169			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 105, "</td><td class=\"c-subject\"><a href=\"")
1170			if templ_7745c5c3_Err != nil {
1171				return templ_7745c5c3_Err
1172			}
1173			var templ_7745c5c3_Var61 templ.SafeURL
1174			templ_7745c5c3_Var61, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(c.CHref))
1175			if templ_7745c5c3_Err != nil {
1176				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 189, Col: 38}
1177			}
1178			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var61))
1179			if templ_7745c5c3_Err != nil {
1180				return templ_7745c5c3_Err
1181			}
1182			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 106, "\">")
1183			if templ_7745c5c3_Err != nil {
1184				return templ_7745c5c3_Err
1185			}
1186			var templ_7745c5c3_Var62 string
1187			templ_7745c5c3_Var62, templ_7745c5c3_Err = templ.JoinStringErrs(c.Subject)
1188			if templ_7745c5c3_Err != nil {
1189				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 189, Col: 52}
1190			}
1191			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var62))
1192			if templ_7745c5c3_Err != nil {
1193				return templ_7745c5c3_Err
1194			}
1195			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 107, "</a> ")
1196			if templ_7745c5c3_Err != nil {
1197				return templ_7745c5c3_Err
1198			}
1199			if c.Merge {
1200				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 108, "<span class=\"pill\">merge</span> ")
1201				if templ_7745c5c3_Err != nil {
1202					return templ_7745c5c3_Err
1203				}
1204			}
1205			for _, b := range c.Branches {
1206				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 109, "<span class=\"pill\">")
1207				if templ_7745c5c3_Err != nil {
1208					return templ_7745c5c3_Err
1209				}
1210				var templ_7745c5c3_Var63 string
1211				templ_7745c5c3_Var63, templ_7745c5c3_Err = templ.JoinStringErrs(b)
1212				if templ_7745c5c3_Err != nil {
1213					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 194, Col: 29}
1214				}
1215				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var63))
1216				if templ_7745c5c3_Err != nil {
1217					return templ_7745c5c3_Err
1218				}
1219				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 110, "</span> ")
1220				if templ_7745c5c3_Err != nil {
1221					return templ_7745c5c3_Err
1222				}
1223			}
1224			for _, t := range c.Tags {
1225				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 111, "<span class=\"pill tag\"><span class=\"sr\">tag </span>")
1226				if templ_7745c5c3_Err != nil {
1227					return templ_7745c5c3_Err
1228				}
1229				var templ_7745c5c3_Var64 string
1230				templ_7745c5c3_Var64, templ_7745c5c3_Err = templ.JoinStringErrs(t)
1231				if templ_7745c5c3_Err != nil {
1232					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 197, Col: 61}
1233				}
1234				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var64))
1235				if templ_7745c5c3_Err != nil {
1236					return templ_7745c5c3_Err
1237				}
1238				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 112, "</span>")
1239				if templ_7745c5c3_Err != nil {
1240					return templ_7745c5c3_Err
1241				}
1242			}
1243			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 113, "</td><td class=\"c-ck\">")
1244			if templ_7745c5c3_Err != nil {
1245				return templ_7745c5c3_Err
1246			}
1247			templ_7745c5c3_Err = CommitChecks(c.Checks).Render(ctx, templ_7745c5c3_Buffer)
1248			if templ_7745c5c3_Err != nil {
1249				return templ_7745c5c3_Err
1250			}
1251			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 114, "</td><td class=\"c-who dim\">")
1252			if templ_7745c5c3_Err != nil {
1253				return templ_7745c5c3_Err
1254			}
1255			var templ_7745c5c3_Var65 string
1256			templ_7745c5c3_Var65, templ_7745c5c3_Err = templ.JoinStringErrs(c.Author)
1257			if templ_7745c5c3_Err != nil {
1258				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 201, Col: 37}
1259			}
1260			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var65))
1261			if templ_7745c5c3_Err != nil {
1262				return templ_7745c5c3_Err
1263			}
1264			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 115, "</td><td class=\"c-when nowrap dim\"><time datetime=\"")
1265			if templ_7745c5c3_Err != nil {
1266				return templ_7745c5c3_Err
1267			}
1268			var templ_7745c5c3_Var66 string
1269			templ_7745c5c3_Var66, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.WhenAt)
1270			if templ_7745c5c3_Err != nil {
1271				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 202, Col: 60}
1272			}
1273			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var66)
1274			if templ_7745c5c3_Err != nil {
1275				return templ_7745c5c3_Err
1276			}
1277			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 116, "\" title=\"")
1278			if templ_7745c5c3_Err != nil {
1279				return templ_7745c5c3_Err
1280			}
1281			var templ_7745c5c3_Var67 string
1282			templ_7745c5c3_Var67, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.WhenAt)
1283			if templ_7745c5c3_Err != nil {
1284				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 202, Col: 79}
1285			}
1286			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var67)
1287			if templ_7745c5c3_Err != nil {
1288				return templ_7745c5c3_Err
1289			}
1290			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 117, "\">")
1291			if templ_7745c5c3_Err != nil {
1292				return templ_7745c5c3_Err
1293			}
1294			var templ_7745c5c3_Var68 string
1295			templ_7745c5c3_Var68, templ_7745c5c3_Err = templ.JoinStringErrs(c.When)
1296			if templ_7745c5c3_Err != nil {
1297				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/components.templ`, Line: 202, Col: 90}
1298			}
1299			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var68))
1300			if templ_7745c5c3_Err != nil {
1301				return templ_7745c5c3_Err
1302			}
1303			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 118, "</time></td></tr>")
1304			if templ_7745c5c3_Err != nil {
1305				return templ_7745c5c3_Err
1306			}
1307		}
1308		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 119, "</tbody></table>")
1309		if templ_7745c5c3_Err != nil {
1310			return templ_7745c5c3_Err
1311		}
1312		return nil
1313	})
1314}
1315
1316var _ = 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