detached 221e8de

fix(web): put the repo description above content and rail

commit
221e8de8c404161819df1de5ae6748dd7188af98
author
brice · · 2026-10-11 12:28 UTC
parent
c8e4042
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
9 files · +294 -292
M cmd/ermite/testdata/web/summary.html +1 -1
@@ -75,8 +75,8 @@
7575 </nav>
7676 </header>
7777 <div class="work has-rail">
78+<p class="lede work-lede">A demo repository</p>
7879 <main id="main" tabindex="-1">
79-<p class="lede">A demo repository</p>
8080 <section class="card readme" aria-labelledby="readme-h">
8181 <h2 class="card-h" id="readme-h">
8282 <span class="ico i-file" aria-hidden="true">
@@ -75,8 +75,8 @@
75 </nav>75 </nav>
76 </header>76 </header>
77 <div class="work has-rail">77 <div class="work has-rail">
78+<p class="lede work-lede">A demo repository</p>
78 <main id="main" tabindex="-1">79 <main id="main" tabindex="-1">
79-<p class="lede">A demo repository</p>
80 <section class="card readme" aria-labelledby="readme-h">80 <section class="card readme" aria-labelledby="readme-h">
81 <h2 class="card-h" id="readme-h">81 <h2 class="card-h" id="readme-h">
82 <span class="ico i-file" aria-hidden="true">82 <span class="ico i-file" aria-hidden="true">
M internal/adapters/web/assets.go +1 -1
@@ -4,9 +4,9 @@ package web
44
55 import (
66 "crypto/sha256"
7- "errors"
87 "embed"
98 "encoding/hex"
9+ "errors"
1010 "io/fs"
1111 "net/http"
1212 "path"
@@ -4,9 +4,9 @@ package web
4 4
5 import (5 import (
6 "crypto/sha256"6 "crypto/sha256"
7- "errors"
8 "embed"7 "embed"
9 "encoding/hex"8 "encoding/hex"
9+ "errors"
10 "io/fs"10 "io/fs"
11 "net/http"11 "net/http"
12 "path"12 "path"
M internal/adapters/web/pages.templ +0 -3
@@ -48,9 +48,6 @@ templ Home(l Layout, p HomePage) {
4848 // column at the reading measure; what one acts on sits in the rail.
4949 templ Summary(l Layout, p SummaryPage) {
5050 @Shell(l, summaryRail(p)) {
51- if p.Desc != "" {
52- <p class="lede">{ p.Desc }</p>
53- }
5451 if p.Readme != nil {
5552 @ReadmeCard(*p.Readme)
5653 }
@@ -48,9 +48,6 @@ templ Home(l Layout, p HomePage) {
48 // column at the reading measure; what one acts on sits in the rail.48 // column at the reading measure; what one acts on sits in the rail.
49 templ Summary(l Layout, p SummaryPage) {49 templ Summary(l Layout, p SummaryPage) {
50 @Shell(l, summaryRail(p)) {50 @Shell(l, summaryRail(p)) {
51- if p.Desc != "" {
52- <p class="lede">{ p.Desc }</p>
53- }
54 if p.Readme != nil {51 if p.Readme != nil {
55 @ReadmeCard(*p.Readme)52 @ReadmeCard(*p.Readme)
56 }53 }
M internal/adapters/web/pages_templ.go +157 -180
@@ -199,29 +199,6 @@ func Summary(l Layout, p SummaryPage) templ.Component {
199199 }()
200200 }
201201 ctx = templ.InitializeContext(ctx)
202- if p.Desc != "" {
203- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "<p class=\"lede\">")
204- if templ_7745c5c3_Err != nil {
205- return templ_7745c5c3_Err
206- }
207- var templ_7745c5c3_Var11 string
208- templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(p.Desc)
209- if templ_7745c5c3_Err != nil {
210- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 52, Col: 27}
211- }
212- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11))
213- if templ_7745c5c3_Err != nil {
214- return templ_7745c5c3_Err
215- }
216- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "</p>")
217- if templ_7745c5c3_Err != nil {
218- return templ_7745c5c3_Err
219- }
220- }
221- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, " ")
222- if templ_7745c5c3_Err != nil {
223- return templ_7745c5c3_Err
224- }
225202 if p.Readme != nil {
226203 templ_7745c5c3_Err = ReadmeCard(*p.Readme).Render(ctx, templ_7745c5c3_Buffer)
227204 if templ_7745c5c3_Err != nil {
@@ -254,12 +231,12 @@ func summaryRail(p SummaryPage) templ.Component {
254231 }()
255232 }
256233 ctx = templ.InitializeContext(ctx)
257- templ_7745c5c3_Var12 := templ.GetChildren(ctx)
258- if templ_7745c5c3_Var12 == nil {
259- templ_7745c5c3_Var12 = templ.NopComponent
234+ templ_7745c5c3_Var11 := templ.GetChildren(ctx)
235+ if templ_7745c5c3_Var11 == nil {
236+ templ_7745c5c3_Var11 = templ.NopComponent
260237 }
261238 ctx = templ.ClearChildren(ctx)
262- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "<section aria-labelledby=\"r-clone\"><h2 id=\"r-clone\">Clone</h2>")
239+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "<section aria-labelledby=\"r-clone\"><h2 id=\"r-clone\">Clone</h2>")
263240 if templ_7745c5c3_Err != nil {
264241 return templ_7745c5c3_Err
265242 }
@@ -267,7 +244,7 @@ func summaryRail(p SummaryPage) templ.Component {
267244 if templ_7745c5c3_Err != nil {
268245 return templ_7745c5c3_Err
269246 }
270- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "</section><section aria-labelledby=\"r-facts\"><h2 id=\"r-facts\">About</h2>")
247+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "</section><section aria-labelledby=\"r-facts\"><h2 id=\"r-facts\">About</h2>")
271248 if templ_7745c5c3_Err != nil {
272249 return templ_7745c5c3_Err
273250 }
@@ -275,25 +252,25 @@ func summaryRail(p SummaryPage) templ.Component {
275252 if templ_7745c5c3_Err != nil {
276253 return templ_7745c5c3_Err
277254 }
278- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "</section>")
255+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "</section>")
279256 if templ_7745c5c3_Err != nil {
280257 return templ_7745c5c3_Err
281258 }
282259 if len(p.Recent) > 0 {
283- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "<section aria-labelledby=\"r-recent\"><h2 id=\"r-recent\">Recent commits <a href=\"")
260+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "<section aria-labelledby=\"r-recent\"><h2 id=\"r-recent\">Recent commits <a href=\"")
284261 if templ_7745c5c3_Err != nil {
285262 return templ_7745c5c3_Err
286263 }
287- var templ_7745c5c3_Var13 templ.SafeURL
288- templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.AllHref))
264+ var templ_7745c5c3_Var12 templ.SafeURL
265+ templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.AllHref))
289266 if templ_7745c5c3_Err != nil {
290- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 66, Col: 105}
267+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 63, Col: 105}
291268 }
292- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13))
269+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
293270 if templ_7745c5c3_Err != nil {
294271 return templ_7745c5c3_Err
295272 }
296- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "\">View all</a></h2>")
273+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "\">View all</a></h2>")
297274 if templ_7745c5c3_Err != nil {
298275 return templ_7745c5c3_Err
299276 }
@@ -301,13 +278,13 @@ func summaryRail(p SummaryPage) templ.Component {
301278 if templ_7745c5c3_Err != nil {
302279 return templ_7745c5c3_Err
303280 }
304- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "</section>")
281+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "</section>")
305282 if templ_7745c5c3_Err != nil {
306283 return templ_7745c5c3_Err
307284 }
308285 }
309286 if len(p.Outline) > 0 && p.Readme != nil {
310- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "<section aria-labelledby=\"r-outline\"><h2 id=\"r-outline\">On this page</h2>")
287+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "<section aria-labelledby=\"r-outline\"><h2 id=\"r-outline\">On this page</h2>")
311288 if templ_7745c5c3_Err != nil {
312289 return templ_7745c5c3_Err
313290 }
@@ -315,7 +292,7 @@ func summaryRail(p SummaryPage) templ.Component {
315292 if templ_7745c5c3_Err != nil {
316293 return templ_7745c5c3_Err
317294 }
318- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "</section>")
295+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "</section>")
319296 if templ_7745c5c3_Err != nil {
320297 return templ_7745c5c3_Err
321298 }
@@ -341,12 +318,12 @@ func Refs(l Layout, p RefsPage) templ.Component {
341318 }()
342319 }
343320 ctx = templ.InitializeContext(ctx)
344- templ_7745c5c3_Var14 := templ.GetChildren(ctx)
345- if templ_7745c5c3_Var14 == nil {
346- templ_7745c5c3_Var14 = templ.NopComponent
321+ templ_7745c5c3_Var13 := templ.GetChildren(ctx)
322+ if templ_7745c5c3_Var13 == nil {
323+ templ_7745c5c3_Var13 = templ.NopComponent
347324 }
348325 ctx = templ.ClearChildren(ctx)
349- templ_7745c5c3_Var15 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
326+ templ_7745c5c3_Var14 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
350327 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
351328 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
352329 if !templ_7745c5c3_IsBuffer {
@@ -358,7 +335,7 @@ func Refs(l Layout, p RefsPage) templ.Component {
358335 }()
359336 }
360337 ctx = templ.InitializeContext(ctx)
361- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "<div class=\"filter\"><label for=\"ref-filter\" class=\"sr\">filter</label> <input id=\"ref-filter\" type=\"search\" data-filter placeholder=\"Filter branches and tags…\" autocomplete=\"off\" hx-on:input=\"let t = this.value.toLowerCase(); q('#ref-rows > tr').arr().forEach(r => r.hidden = !r.textContent.toLowerCase().includes(t));\n let first = q('#ref-rows > tr:not([hidden])').arr()[0]; first && q(first).take('data-cursor', '#ref-rows > tr')\"></div><table class=\"list refs\" aria-label=\"Branches and tags\"><thead><tr><th class=\"cur\"></th><th class=\"c-kind\">kind</th><th class=\"c-name\">name</th><th class=\"c-sha\">commit</th><th class=\"c-sub\">subject</th><th class=\"c-when\">date</th></tr></thead>")
338+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "<div class=\"filter\"><label for=\"ref-filter\" class=\"sr\">filter</label> <input id=\"ref-filter\" type=\"search\" data-filter placeholder=\"Filter branches and tags…\" autocomplete=\"off\" hx-on:input=\"let t = this.value.toLowerCase(); q('#ref-rows > tr').arr().forEach(r => r.hidden = !r.textContent.toLowerCase().includes(t));\n let first = q('#ref-rows > tr:not([hidden])').arr()[0]; first && q(first).take('data-cursor', '#ref-rows > tr')\"></div><table class=\"list refs\" aria-label=\"Branches and tags\"><thead><tr><th class=\"cur\"></th><th class=\"c-kind\">kind</th><th class=\"c-name\">name</th><th class=\"c-sha\">commit</th><th class=\"c-sub\">subject</th><th class=\"c-when\">date</th></tr></thead>")
362339 if templ_7745c5c3_Err != nil {
363340 return templ_7745c5c3_Err
364341 }
@@ -366,32 +343,32 @@ func Refs(l Layout, p RefsPage) templ.Component {
366343 if templ_7745c5c3_Err != nil {
367344 return templ_7745c5c3_Err
368345 }
369- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "</table>")
346+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "</table>")
370347 if templ_7745c5c3_Err != nil {
371348 return templ_7745c5c3_Err
372349 }
373350 if p.Note != "" {
374- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "<p class=\"note\">")
351+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "<p class=\"note\">")
375352 if templ_7745c5c3_Err != nil {
376353 return templ_7745c5c3_Err
377354 }
378- var templ_7745c5c3_Var16 string
379- templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note)
355+ var templ_7745c5c3_Var15 string
356+ templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note)
380357 if templ_7745c5c3_Err != nil {
381- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 97, Col: 27}
358+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 94, Col: 27}
382359 }
383- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16))
360+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15))
384361 if templ_7745c5c3_Err != nil {
385362 return templ_7745c5c3_Err
386363 }
387- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "</p>")
364+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "</p>")
388365 if templ_7745c5c3_Err != nil {
389366 return templ_7745c5c3_Err
390367 }
391368 }
392369 return nil
393370 })
394- templ_7745c5c3_Err = Shell(l, refsRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var15), templ_7745c5c3_Buffer)
371+ templ_7745c5c3_Err = Shell(l, refsRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var14), templ_7745c5c3_Buffer)
395372 if templ_7745c5c3_Err != nil {
396373 return templ_7745c5c3_Err
397374 }
@@ -415,179 +392,179 @@ func refRow(kind string, r RefRow) templ.Component {
415392 }()
416393 }
417394 ctx = templ.InitializeContext(ctx)
418- templ_7745c5c3_Var17 := templ.GetChildren(ctx)
419- if templ_7745c5c3_Var17 == nil {
420- templ_7745c5c3_Var17 = templ.NopComponent
395+ templ_7745c5c3_Var16 := templ.GetChildren(ctx)
396+ if templ_7745c5c3_Var16 == nil {
397+ templ_7745c5c3_Var16 = templ.NopComponent
421398 }
422399 ctx = templ.ClearChildren(ctx)
423- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "<tr")
400+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "<tr")
424401 if templ_7745c5c3_Err != nil {
425402 return templ_7745c5c3_Err
426403 }
427404 if r.Cursor {
428- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, " data-cursor")
405+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, " data-cursor")
429406 if templ_7745c5c3_Err != nil {
430407 return templ_7745c5c3_Err
431408 }
432409 }
433- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "><td class=\"cur\" aria-hidden=\"true\"></td><td class=\"c-kind mute\">")
410+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "><td class=\"cur\" aria-hidden=\"true\"></td><td class=\"c-kind mute\">")
434411 if templ_7745c5c3_Err != nil {
435412 return templ_7745c5c3_Err
436413 }
437- var templ_7745c5c3_Var18 string
438- templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinStringErrs(kind)
414+ var templ_7745c5c3_Var17 string
415+ templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(kind)
439416 if templ_7745c5c3_Err != nil {
440- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 105, Col: 32}
417+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 102, Col: 32}
441418 }
442- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18))
419+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17))
443420 if templ_7745c5c3_Err != nil {
444421 return templ_7745c5c3_Err
445422 }
446- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "</td><td class=\"c-name\"><a href=\"")
423+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "</td><td class=\"c-name\"><a href=\"")
447424 if templ_7745c5c3_Err != nil {
448425 return templ_7745c5c3_Err
449426 }
450- var templ_7745c5c3_Var19 templ.SafeURL
451- templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href))
427+ var templ_7745c5c3_Var18 templ.SafeURL
428+ templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href))
452429 if templ_7745c5c3_Err != nil {
453- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 107, Col: 34}
430+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 104, Col: 34}
454431 }
455- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19))
432+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18))
456433 if templ_7745c5c3_Err != nil {
457434 return templ_7745c5c3_Err
458435 }
459- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "\">")
436+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "\">")
460437 if templ_7745c5c3_Err != nil {
461438 return templ_7745c5c3_Err
462439 }
463- var templ_7745c5c3_Var20 string
464- templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name)
440+ var templ_7745c5c3_Var19 string
441+ templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name)
465442 if templ_7745c5c3_Err != nil {
466- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 107, Col: 45}
443+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 104, Col: 45}
467444 }
468- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20))
445+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19))
469446 if templ_7745c5c3_Err != nil {
470447 return templ_7745c5c3_Err
471448 }
472- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "</a> ")
449+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "</a> ")
473450 if templ_7745c5c3_Err != nil {
474451 return templ_7745c5c3_Err
475452 }
476453 if r.Default {
477- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "<span class=\"pill\">default</span>")
454+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "<span class=\"pill\">default</span>")
478455 if templ_7745c5c3_Err != nil {
479456 return templ_7745c5c3_Err
480457 }
481458 }
482- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "</td><td class=\"c-sha\">")
459+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "</td><td class=\"c-sha\">")
483460 if templ_7745c5c3_Err != nil {
484461 return templ_7745c5c3_Err
485462 }
486463 if r.CHref != "" {
487- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "<a href=\"")
464+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "<a href=\"")
488465 if templ_7745c5c3_Err != nil {
489466 return templ_7745c5c3_Err
490467 }
491- var templ_7745c5c3_Var21 templ.SafeURL
492- templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.CHref))
468+ var templ_7745c5c3_Var20 templ.SafeURL
469+ templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.CHref))
493470 if templ_7745c5c3_Err != nil {
494- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 114, Col: 36}
471+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 111, Col: 36}
495472 }
496- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21))
473+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20))
497474 if templ_7745c5c3_Err != nil {
498475 return templ_7745c5c3_Err
499476 }
500- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "\">")
477+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "\">")
501478 if templ_7745c5c3_Err != nil {
502479 return templ_7745c5c3_Err
503480 }
504- var templ_7745c5c3_Var22 string
505- templ_7745c5c3_Var22, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short)
481+ var templ_7745c5c3_Var21 string
482+ templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short)
506483 if templ_7745c5c3_Err != nil {
507- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 114, Col: 48}
484+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 111, Col: 48}
508485 }
509- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var22))
486+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21))
510487 if templ_7745c5c3_Err != nil {
511488 return templ_7745c5c3_Err
512489 }
513- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "</a>")
490+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "</a>")
514491 if templ_7745c5c3_Err != nil {
515492 return templ_7745c5c3_Err
516493 }
517494 } else {
518- var templ_7745c5c3_Var23 string
519- templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short)
495+ var templ_7745c5c3_Var22 string
496+ templ_7745c5c3_Var22, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short)
520497 if templ_7745c5c3_Err != nil {
521- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 116, Col: 13}
498+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 113, Col: 13}
522499 }
523- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23))
500+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var22))
524501 if templ_7745c5c3_Err != nil {
525502 return templ_7745c5c3_Err
526503 }
527504 }
528- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "</td><td class=\"c-sub\">")
505+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "</td><td class=\"c-sub\">")
529506 if templ_7745c5c3_Err != nil {
530507 return templ_7745c5c3_Err
531508 }
532- var templ_7745c5c3_Var24 string
533- templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.JoinStringErrs(r.Subject)
509+ var templ_7745c5c3_Var23 string
510+ templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(r.Subject)
534511 if templ_7745c5c3_Err != nil {
535- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 119, Col: 31}
512+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 116, Col: 31}
536513 }
537- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var24))
514+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23))
538515 if templ_7745c5c3_Err != nil {
539516 return templ_7745c5c3_Err
540517 }
541- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "</td><td class=\"c-when dim\">")
518+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "</td><td class=\"c-when dim\">")
542519 if templ_7745c5c3_Err != nil {
543520 return templ_7745c5c3_Err
544521 }
545522 if r.WhenAt != "" {
546- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "<time datetime=\"")
523+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "<time datetime=\"")
547524 if templ_7745c5c3_Err != nil {
548525 return templ_7745c5c3_Err
549526 }
550- var templ_7745c5c3_Var25 string
551- templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
527+ var templ_7745c5c3_Var24 string
528+ templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
552529 if templ_7745c5c3_Err != nil {
553- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 122, Col: 29}
530+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 119, Col: 29}
554531 }
555- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var25)
532+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var24)
556533 if templ_7745c5c3_Err != nil {
557534 return templ_7745c5c3_Err
558535 }
559- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "\" title=\"")
536+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "\" title=\"")
560537 if templ_7745c5c3_Err != nil {
561538 return templ_7745c5c3_Err
562539 }
563- var templ_7745c5c3_Var26 string
564- templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
540+ var templ_7745c5c3_Var25 string
541+ templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
565542 if templ_7745c5c3_Err != nil {
566- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 122, Col: 48}
543+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 119, Col: 48}
567544 }
568- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var26)
545+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var25)
569546 if templ_7745c5c3_Err != nil {
570547 return templ_7745c5c3_Err
571548 }
572- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "\">")
549+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "\">")
573550 if templ_7745c5c3_Err != nil {
574551 return templ_7745c5c3_Err
575552 }
576- var templ_7745c5c3_Var27 string
577- templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinStringErrs(r.When)
553+ var templ_7745c5c3_Var26 string
554+ templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(r.When)
578555 if templ_7745c5c3_Err != nil {
579- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 122, Col: 59}
556+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 119, Col: 59}
580557 }
581- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27))
558+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26))
582559 if templ_7745c5c3_Err != nil {
583560 return templ_7745c5c3_Err
584561 }
585- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "</time>")
562+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "</time>")
586563 if templ_7745c5c3_Err != nil {
587564 return templ_7745c5c3_Err
588565 }
589566 }
590- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "</td></tr>")
567+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "</td></tr>")
591568 if templ_7745c5c3_Err != nil {
592569 return templ_7745c5c3_Err
593570 }
@@ -611,12 +588,12 @@ func refsRail(p RefsPage) templ.Component {
611588 }()
612589 }
613590 ctx = templ.InitializeContext(ctx)
614- templ_7745c5c3_Var28 := templ.GetChildren(ctx)
615- if templ_7745c5c3_Var28 == nil {
616- templ_7745c5c3_Var28 = templ.NopComponent
591+ templ_7745c5c3_Var27 := templ.GetChildren(ctx)
592+ if templ_7745c5c3_Var27 == nil {
593+ templ_7745c5c3_Var27 = templ.NopComponent
617594 }
618595 ctx = templ.ClearChildren(ctx)
619- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "<section aria-labelledby=\"r-refs\"><h2 id=\"r-refs\">Overview</h2>")
596+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "<section aria-labelledby=\"r-refs\"><h2 id=\"r-refs\">Overview</h2>")
620597 if templ_7745c5c3_Err != nil {
621598 return templ_7745c5c3_Err
622599 }
@@ -624,7 +601,7 @@ func refsRail(p RefsPage) templ.Component {
624601 if templ_7745c5c3_Err != nil {
625602 return templ_7745c5c3_Err
626603 }
627- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "</section>")
604+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "</section>")
628605 if templ_7745c5c3_Err != nil {
629606 return templ_7745c5c3_Err
630607 }
@@ -649,12 +626,12 @@ func State(l Layout, p StatePage) templ.Component {
649626 }()
650627 }
651628 ctx = templ.InitializeContext(ctx)
652- templ_7745c5c3_Var29 := templ.GetChildren(ctx)
653- if templ_7745c5c3_Var29 == nil {
654- templ_7745c5c3_Var29 = templ.NopComponent
629+ templ_7745c5c3_Var28 := templ.GetChildren(ctx)
630+ if templ_7745c5c3_Var28 == nil {
631+ templ_7745c5c3_Var28 = templ.NopComponent
655632 }
656633 ctx = templ.ClearChildren(ctx)
657- templ_7745c5c3_Var30 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
634+ templ_7745c5c3_Var29 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
658635 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
659636 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
660637 if !templ_7745c5c3_IsBuffer {
@@ -666,51 +643,51 @@ func State(l Layout, p StatePage) templ.Component {
666643 }()
667644 }
668645 ctx = templ.InitializeContext(ctx)
669- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "<section class=\"state\" aria-labelledby=\"state-title\"><p class=\"eyebrow\">")
646+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "<section class=\"state\" aria-labelledby=\"state-title\"><p class=\"eyebrow\">")
670647 if templ_7745c5c3_Err != nil {
671648 return templ_7745c5c3_Err
672649 }
673- var templ_7745c5c3_Var31 string
674- templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinStringErrs(p.Code)
650+ var templ_7745c5c3_Var30 string
651+ templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinStringErrs(p.Code)
675652 if templ_7745c5c3_Err != nil {
676- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 139, Col: 30}
653+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 136, Col: 30}
677654 }
678- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31))
655+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30))
679656 if templ_7745c5c3_Err != nil {
680657 return templ_7745c5c3_Err
681658 }
682- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "</p><h1 id=\"state-title\">")
659+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "</p><h1 id=\"state-title\">")
683660 if templ_7745c5c3_Err != nil {
684661 return templ_7745c5c3_Err
685662 }
686- var templ_7745c5c3_Var32 string
687- templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title)
663+ var templ_7745c5c3_Var31 string
664+ templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title)
688665 if templ_7745c5c3_Err != nil {
689- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 140, Col: 33}
666+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 137, Col: 33}
690667 }
691- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32))
668+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31))
692669 if templ_7745c5c3_Err != nil {
693670 return templ_7745c5c3_Err
694671 }
695- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "</h1>")
672+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "</h1>")
696673 if templ_7745c5c3_Err != nil {
697674 return templ_7745c5c3_Err
698675 }
699676 for _, line := range p.Lines {
700- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "<p class=\"dim\">")
677+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "<p class=\"dim\">")
701678 if templ_7745c5c3_Err != nil {
702679 return templ_7745c5c3_Err
703680 }
704- var templ_7745c5c3_Var33 string
705- templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinStringErrs(line)
681+ var templ_7745c5c3_Var32 string
682+ templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(line)
706683 if templ_7745c5c3_Err != nil {
707- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 142, Col: 25}
684+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 139, Col: 25}
708685 }
709- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33))
686+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32))
710687 if templ_7745c5c3_Err != nil {
711688 return templ_7745c5c3_Err
712689 }
713- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "</p>")
690+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "</p>")
714691 if templ_7745c5c3_Err != nil {
715692 return templ_7745c5c3_Err
716693 }
@@ -721,49 +698,49 @@ func State(l Layout, p StatePage) templ.Component {
721698 return templ_7745c5c3_Err
722699 }
723700 }
724- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "<p class=\"state-back\">")
701+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "<p class=\"state-back\">")
725702 if templ_7745c5c3_Err != nil {
726703 return templ_7745c5c3_Err
727704 }
728705 for _, b := range p.Back {
729- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "<a href=\"")
706+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "<a href=\"")
730707 if templ_7745c5c3_Err != nil {
731708 return templ_7745c5c3_Err
732709 }
733- var templ_7745c5c3_Var34 templ.SafeURL
734- templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(b.Href))
710+ var templ_7745c5c3_Var33 templ.SafeURL
711+ templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(b.Href))
735712 if templ_7745c5c3_Err != nil {
736- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 149, Col: 36}
713+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 146, Col: 36}
737714 }
738- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34))
715+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33))
739716 if templ_7745c5c3_Err != nil {
740717 return templ_7745c5c3_Err
741718 }
742- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "\">")
719+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "\">")
743720 if templ_7745c5c3_Err != nil {
744721 return templ_7745c5c3_Err
745722 }
746- var templ_7745c5c3_Var35 string
747- templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.JoinStringErrs(b.Label)
723+ var templ_7745c5c3_Var34 string
724+ templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(b.Label)
748725 if templ_7745c5c3_Err != nil {
749- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 149, Col: 48}
726+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 146, Col: 48}
750727 }
751- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var35))
728+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34))
752729 if templ_7745c5c3_Err != nil {
753730 return templ_7745c5c3_Err
754731 }
755- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "</a>")
732+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "</a>")
756733 if templ_7745c5c3_Err != nil {
757734 return templ_7745c5c3_Err
758735 }
759736 }
760- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "</p></section>")
737+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "</p></section>")
761738 if templ_7745c5c3_Err != nil {
762739 return templ_7745c5c3_Err
763740 }
764741 return nil
765742 })
766- templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var30), templ_7745c5c3_Buffer)
743+ templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var29), templ_7745c5c3_Buffer)
767744 if templ_7745c5c3_Err != nil {
768745 return templ_7745c5c3_Err
769746 }
@@ -789,12 +766,12 @@ func Login(l Layout, p LoginPage) templ.Component {
789766 }()
790767 }
791768 ctx = templ.InitializeContext(ctx)
792- templ_7745c5c3_Var36 := templ.GetChildren(ctx)
793- if templ_7745c5c3_Var36 == nil {
794- templ_7745c5c3_Var36 = templ.NopComponent
769+ templ_7745c5c3_Var35 := templ.GetChildren(ctx)
770+ if templ_7745c5c3_Var35 == nil {
771+ templ_7745c5c3_Var35 = templ.NopComponent
795772 }
796773 ctx = templ.ClearChildren(ctx)
797- templ_7745c5c3_Var37 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
774+ templ_7745c5c3_Var36 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
798775 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
799776 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
800777 if !templ_7745c5c3_IsBuffer {
@@ -806,75 +783,75 @@ func Login(l Layout, p LoginPage) templ.Component {
806783 }()
807784 }
808785 ctx = templ.InitializeContext(ctx)
809- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">")
786+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">")
810787 if templ_7745c5c3_Err != nil {
811788 return templ_7745c5c3_Err
812789 }
813- var templ_7745c5c3_Var38 string
814- templ_7745c5c3_Var38, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title)
790+ var templ_7745c5c3_Var37 string
791+ templ_7745c5c3_Var37, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title)
815792 if templ_7745c5c3_Err != nil {
816- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 161, Col: 33}
793+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 158, Col: 33}
817794 }
818- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var38))
795+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var37))
819796 if templ_7745c5c3_Err != nil {
820797 return templ_7745c5c3_Err
821798 }
822- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "</h1>")
799+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "</h1>")
823800 if templ_7745c5c3_Err != nil {
824801 return templ_7745c5c3_Err
825802 }
826803 for _, line := range p.Lines {
827- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "<p class=\"dim\">")
804+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "<p class=\"dim\">")
828805 if templ_7745c5c3_Err != nil {
829806 return templ_7745c5c3_Err
830807 }
831- var templ_7745c5c3_Var39 string
832- templ_7745c5c3_Var39, templ_7745c5c3_Err = templ.JoinStringErrs(line)
808+ var templ_7745c5c3_Var38 string
809+ templ_7745c5c3_Var38, templ_7745c5c3_Err = templ.JoinStringErrs(line)
833810 if templ_7745c5c3_Err != nil {
834- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 163, Col: 25}
811+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 160, Col: 25}
835812 }
836- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var39))
813+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var38))
837814 if templ_7745c5c3_Err != nil {
838815 return templ_7745c5c3_Err
839816 }
840- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "</p>")
817+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "</p>")
841818 if templ_7745c5c3_Err != nil {
842819 return templ_7745c5c3_Err
843820 }
844821 }
845- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "<form class=\"state-act\" method=\"post\" action=\"")
822+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "<form class=\"state-act\" method=\"post\" action=\"")
846823 if templ_7745c5c3_Err != nil {
847824 return templ_7745c5c3_Err
848825 }
849- var templ_7745c5c3_Var40 templ.SafeURL
850- templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Action))
826+ var templ_7745c5c3_Var39 templ.SafeURL
827+ templ_7745c5c3_Var39, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Action))
851828 if templ_7745c5c3_Err != nil {
852- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 165, Col: 73}
829+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 162, Col: 73}
853830 }
854- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var40))
831+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var39))
855832 if templ_7745c5c3_Err != nil {
856833 return templ_7745c5c3_Err
857834 }
858- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "\"><button type=\"submit\" class=\"btn primary\">")
835+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "\"><button type=\"submit\" class=\"btn primary\">")
859836 if templ_7745c5c3_Err != nil {
860837 return templ_7745c5c3_Err
861838 }
862- var templ_7745c5c3_Var41 string
863- templ_7745c5c3_Var41, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button)
839+ var templ_7745c5c3_Var40 string
840+ templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button)
864841 if templ_7745c5c3_Err != nil {
865- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 166, Col: 56}
842+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 163, Col: 56}
866843 }
867- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var41))
844+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var40))
868845 if templ_7745c5c3_Err != nil {
869846 return templ_7745c5c3_Err
870847 }
871- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "</button></form><p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>")
848+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "</button></form><p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>")
872849 if templ_7745c5c3_Err != nil {
873850 return templ_7745c5c3_Err
874851 }
875852 return nil
876853 })
877- templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var37), templ_7745c5c3_Buffer)
854+ templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var36), templ_7745c5c3_Buffer)
878855 if templ_7745c5c3_Err != nil {
879856 return templ_7745c5c3_Err
880857 }
@@ -199,29 +199,6 @@ func Summary(l Layout, p SummaryPage) templ.Component {
199 }()199 }()
200 }200 }
201 ctx = templ.InitializeContext(ctx)201 ctx = templ.InitializeContext(ctx)
202- if p.Desc != "" {
203- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "<p class=\"lede\">")
204- if templ_7745c5c3_Err != nil {
205- return templ_7745c5c3_Err
206- }
207- var templ_7745c5c3_Var11 string
208- templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(p.Desc)
209- if templ_7745c5c3_Err != nil {
210- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 52, Col: 27}
211- }
212- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11))
213- if templ_7745c5c3_Err != nil {
214- return templ_7745c5c3_Err
215- }
216- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "</p>")
217- if templ_7745c5c3_Err != nil {
218- return templ_7745c5c3_Err
219- }
220- }
221- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, " ")
222- if templ_7745c5c3_Err != nil {
223- return templ_7745c5c3_Err
224- }
225 if p.Readme != nil {202 if p.Readme != nil {
226 templ_7745c5c3_Err = ReadmeCard(*p.Readme).Render(ctx, templ_7745c5c3_Buffer)203 templ_7745c5c3_Err = ReadmeCard(*p.Readme).Render(ctx, templ_7745c5c3_Buffer)
227 if templ_7745c5c3_Err != nil {204 if templ_7745c5c3_Err != nil {
@@ -254,12 +231,12 @@ func summaryRail(p SummaryPage) templ.Component {
254 }()231 }()
255 }232 }
256 ctx = templ.InitializeContext(ctx)233 ctx = templ.InitializeContext(ctx)
257- templ_7745c5c3_Var12 := templ.GetChildren(ctx)234+ templ_7745c5c3_Var11 := templ.GetChildren(ctx)
258- if templ_7745c5c3_Var12 == nil {235+ if templ_7745c5c3_Var11 == nil {
259- templ_7745c5c3_Var12 = templ.NopComponent236+ templ_7745c5c3_Var11 = templ.NopComponent
260 }237 }
261 ctx = templ.ClearChildren(ctx)238 ctx = templ.ClearChildren(ctx)
262- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "<section aria-labelledby=\"r-clone\"><h2 id=\"r-clone\">Clone</h2>")239+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "<section aria-labelledby=\"r-clone\"><h2 id=\"r-clone\">Clone</h2>")
263 if templ_7745c5c3_Err != nil {240 if templ_7745c5c3_Err != nil {
264 return templ_7745c5c3_Err241 return templ_7745c5c3_Err
265 }242 }
@@ -267,7 +244,7 @@ func summaryRail(p SummaryPage) templ.Component {
267 if templ_7745c5c3_Err != nil {244 if templ_7745c5c3_Err != nil {
268 return templ_7745c5c3_Err245 return templ_7745c5c3_Err
269 }246 }
270- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "</section><section aria-labelledby=\"r-facts\"><h2 id=\"r-facts\">About</h2>")247+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "</section><section aria-labelledby=\"r-facts\"><h2 id=\"r-facts\">About</h2>")
271 if templ_7745c5c3_Err != nil {248 if templ_7745c5c3_Err != nil {
272 return templ_7745c5c3_Err249 return templ_7745c5c3_Err
273 }250 }
@@ -275,25 +252,25 @@ func summaryRail(p SummaryPage) templ.Component {
275 if templ_7745c5c3_Err != nil {252 if templ_7745c5c3_Err != nil {
276 return templ_7745c5c3_Err253 return templ_7745c5c3_Err
277 }254 }
278- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "</section>")255+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "</section>")
279 if templ_7745c5c3_Err != nil {256 if templ_7745c5c3_Err != nil {
280 return templ_7745c5c3_Err257 return templ_7745c5c3_Err
281 }258 }
282 if len(p.Recent) > 0 {259 if len(p.Recent) > 0 {
283- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "<section aria-labelledby=\"r-recent\"><h2 id=\"r-recent\">Recent commits <a href=\"")260+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "<section aria-labelledby=\"r-recent\"><h2 id=\"r-recent\">Recent commits <a href=\"")
284 if templ_7745c5c3_Err != nil {261 if templ_7745c5c3_Err != nil {
285 return templ_7745c5c3_Err262 return templ_7745c5c3_Err
286 }263 }
287- var templ_7745c5c3_Var13 templ.SafeURL264+ var templ_7745c5c3_Var12 templ.SafeURL
288- templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.AllHref))265+ templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.AllHref))
289 if templ_7745c5c3_Err != nil {266 if templ_7745c5c3_Err != nil {
290- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 66, Col: 105}267+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 63, Col: 105}
291 }268 }
292- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13))269+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
293 if templ_7745c5c3_Err != nil {270 if templ_7745c5c3_Err != nil {
294 return templ_7745c5c3_Err271 return templ_7745c5c3_Err
295 }272 }
296- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "\">View all</a></h2>")273+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "\">View all</a></h2>")
297 if templ_7745c5c3_Err != nil {274 if templ_7745c5c3_Err != nil {
298 return templ_7745c5c3_Err275 return templ_7745c5c3_Err
299 }276 }
@@ -301,13 +278,13 @@ func summaryRail(p SummaryPage) templ.Component {
301 if templ_7745c5c3_Err != nil {278 if templ_7745c5c3_Err != nil {
302 return templ_7745c5c3_Err279 return templ_7745c5c3_Err
303 }280 }
304- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "</section>")281+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "</section>")
305 if templ_7745c5c3_Err != nil {282 if templ_7745c5c3_Err != nil {
306 return templ_7745c5c3_Err283 return templ_7745c5c3_Err
307 }284 }
308 }285 }
309 if len(p.Outline) > 0 && p.Readme != nil {286 if len(p.Outline) > 0 && p.Readme != nil {
310- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "<section aria-labelledby=\"r-outline\"><h2 id=\"r-outline\">On this page</h2>")287+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "<section aria-labelledby=\"r-outline\"><h2 id=\"r-outline\">On this page</h2>")
311 if templ_7745c5c3_Err != nil {288 if templ_7745c5c3_Err != nil {
312 return templ_7745c5c3_Err289 return templ_7745c5c3_Err
313 }290 }
@@ -315,7 +292,7 @@ func summaryRail(p SummaryPage) templ.Component {
315 if templ_7745c5c3_Err != nil {292 if templ_7745c5c3_Err != nil {
316 return templ_7745c5c3_Err293 return templ_7745c5c3_Err
317 }294 }
318- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "</section>")295+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "</section>")
319 if templ_7745c5c3_Err != nil {296 if templ_7745c5c3_Err != nil {
320 return templ_7745c5c3_Err297 return templ_7745c5c3_Err
321 }298 }
@@ -341,12 +318,12 @@ func Refs(l Layout, p RefsPage) templ.Component {
341 }()318 }()
342 }319 }
343 ctx = templ.InitializeContext(ctx)320 ctx = templ.InitializeContext(ctx)
344- templ_7745c5c3_Var14 := templ.GetChildren(ctx)321+ templ_7745c5c3_Var13 := templ.GetChildren(ctx)
345- if templ_7745c5c3_Var14 == nil {322+ if templ_7745c5c3_Var13 == nil {
346- templ_7745c5c3_Var14 = templ.NopComponent323+ templ_7745c5c3_Var13 = templ.NopComponent
347 }324 }
348 ctx = templ.ClearChildren(ctx)325 ctx = templ.ClearChildren(ctx)
349- templ_7745c5c3_Var15 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {326+ templ_7745c5c3_Var14 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
350 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context327 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
351 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)328 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
352 if !templ_7745c5c3_IsBuffer {329 if !templ_7745c5c3_IsBuffer {
@@ -358,7 +335,7 @@ func Refs(l Layout, p RefsPage) templ.Component {
358 }()335 }()
359 }336 }
360 ctx = templ.InitializeContext(ctx)337 ctx = templ.InitializeContext(ctx)
361- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "<div class=\"filter\"><label for=\"ref-filter\" class=\"sr\">filter</label> <input id=\"ref-filter\" type=\"search\" data-filter placeholder=\"Filter branches and tags…\" autocomplete=\"off\" hx-on:input=\"let t = this.value.toLowerCase(); q('#ref-rows > tr').arr().forEach(r => r.hidden = !r.textContent.toLowerCase().includes(t));\n let first = q('#ref-rows > tr:not([hidden])').arr()[0]; first && q(first).take('data-cursor', '#ref-rows > tr')\"></div><table class=\"list refs\" aria-label=\"Branches and tags\"><thead><tr><th class=\"cur\"></th><th class=\"c-kind\">kind</th><th class=\"c-name\">name</th><th class=\"c-sha\">commit</th><th class=\"c-sub\">subject</th><th class=\"c-when\">date</th></tr></thead>")338+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "<div class=\"filter\"><label for=\"ref-filter\" class=\"sr\">filter</label> <input id=\"ref-filter\" type=\"search\" data-filter placeholder=\"Filter branches and tags…\" autocomplete=\"off\" hx-on:input=\"let t = this.value.toLowerCase(); q('#ref-rows > tr').arr().forEach(r => r.hidden = !r.textContent.toLowerCase().includes(t));\n let first = q('#ref-rows > tr:not([hidden])').arr()[0]; first && q(first).take('data-cursor', '#ref-rows > tr')\"></div><table class=\"list refs\" aria-label=\"Branches and tags\"><thead><tr><th class=\"cur\"></th><th class=\"c-kind\">kind</th><th class=\"c-name\">name</th><th class=\"c-sha\">commit</th><th class=\"c-sub\">subject</th><th class=\"c-when\">date</th></tr></thead>")
362 if templ_7745c5c3_Err != nil {339 if templ_7745c5c3_Err != nil {
363 return templ_7745c5c3_Err340 return templ_7745c5c3_Err
364 }341 }
@@ -366,32 +343,32 @@ func Refs(l Layout, p RefsPage) templ.Component {
366 if templ_7745c5c3_Err != nil {343 if templ_7745c5c3_Err != nil {
367 return templ_7745c5c3_Err344 return templ_7745c5c3_Err
368 }345 }
369- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "</table>")346+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "</table>")
370 if templ_7745c5c3_Err != nil {347 if templ_7745c5c3_Err != nil {
371 return templ_7745c5c3_Err348 return templ_7745c5c3_Err
372 }349 }
373 if p.Note != "" {350 if p.Note != "" {
374- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "<p class=\"note\">")351+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "<p class=\"note\">")
375 if templ_7745c5c3_Err != nil {352 if templ_7745c5c3_Err != nil {
376 return templ_7745c5c3_Err353 return templ_7745c5c3_Err
377 }354 }
378- var templ_7745c5c3_Var16 string355+ var templ_7745c5c3_Var15 string
379- templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note)356+ templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note)
380 if templ_7745c5c3_Err != nil {357 if templ_7745c5c3_Err != nil {
381- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 97, Col: 27}358+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 94, Col: 27}
382 }359 }
383- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16))360+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15))
384 if templ_7745c5c3_Err != nil {361 if templ_7745c5c3_Err != nil {
385 return templ_7745c5c3_Err362 return templ_7745c5c3_Err
386 }363 }
387- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "</p>")364+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "</p>")
388 if templ_7745c5c3_Err != nil {365 if templ_7745c5c3_Err != nil {
389 return templ_7745c5c3_Err366 return templ_7745c5c3_Err
390 }367 }
391 }368 }
392 return nil369 return nil
393 })370 })
394- templ_7745c5c3_Err = Shell(l, refsRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var15), templ_7745c5c3_Buffer)371+ templ_7745c5c3_Err = Shell(l, refsRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var14), templ_7745c5c3_Buffer)
395 if templ_7745c5c3_Err != nil {372 if templ_7745c5c3_Err != nil {
396 return templ_7745c5c3_Err373 return templ_7745c5c3_Err
397 }374 }
@@ -415,179 +392,179 @@ func refRow(kind string, r RefRow) templ.Component {
415 }()392 }()
416 }393 }
417 ctx = templ.InitializeContext(ctx)394 ctx = templ.InitializeContext(ctx)
418- templ_7745c5c3_Var17 := templ.GetChildren(ctx)395+ templ_7745c5c3_Var16 := templ.GetChildren(ctx)
419- if templ_7745c5c3_Var17 == nil {396+ if templ_7745c5c3_Var16 == nil {
420- templ_7745c5c3_Var17 = templ.NopComponent397+ templ_7745c5c3_Var16 = templ.NopComponent
421 }398 }
422 ctx = templ.ClearChildren(ctx)399 ctx = templ.ClearChildren(ctx)
423- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "<tr")400+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "<tr")
424 if templ_7745c5c3_Err != nil {401 if templ_7745c5c3_Err != nil {
425 return templ_7745c5c3_Err402 return templ_7745c5c3_Err
426 }403 }
427 if r.Cursor {404 if r.Cursor {
428- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, " data-cursor")405+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, " data-cursor")
429 if templ_7745c5c3_Err != nil {406 if templ_7745c5c3_Err != nil {
430 return templ_7745c5c3_Err407 return templ_7745c5c3_Err
431 }408 }
432 }409 }
433- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "><td class=\"cur\" aria-hidden=\"true\"></td><td class=\"c-kind mute\">")410+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "><td class=\"cur\" aria-hidden=\"true\"></td><td class=\"c-kind mute\">")
434 if templ_7745c5c3_Err != nil {411 if templ_7745c5c3_Err != nil {
435 return templ_7745c5c3_Err412 return templ_7745c5c3_Err
436 }413 }
437- var templ_7745c5c3_Var18 string414+ var templ_7745c5c3_Var17 string
438- templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinStringErrs(kind)415+ templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(kind)
439 if templ_7745c5c3_Err != nil {416 if templ_7745c5c3_Err != nil {
440- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 105, Col: 32}417+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 102, Col: 32}
441 }418 }
442- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18))419+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17))
443 if templ_7745c5c3_Err != nil {420 if templ_7745c5c3_Err != nil {
444 return templ_7745c5c3_Err421 return templ_7745c5c3_Err
445 }422 }
446- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "</td><td class=\"c-name\"><a href=\"")423+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "</td><td class=\"c-name\"><a href=\"")
447 if templ_7745c5c3_Err != nil {424 if templ_7745c5c3_Err != nil {
448 return templ_7745c5c3_Err425 return templ_7745c5c3_Err
449 }426 }
450- var templ_7745c5c3_Var19 templ.SafeURL427+ var templ_7745c5c3_Var18 templ.SafeURL
451- templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href))428+ templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href))
452 if templ_7745c5c3_Err != nil {429 if templ_7745c5c3_Err != nil {
453- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 107, Col: 34}430+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 104, Col: 34}
454 }431 }
455- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19))432+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18))
456 if templ_7745c5c3_Err != nil {433 if templ_7745c5c3_Err != nil {
457 return templ_7745c5c3_Err434 return templ_7745c5c3_Err
458 }435 }
459- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "\">")436+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "\">")
460 if templ_7745c5c3_Err != nil {437 if templ_7745c5c3_Err != nil {
461 return templ_7745c5c3_Err438 return templ_7745c5c3_Err
462 }439 }
463- var templ_7745c5c3_Var20 string440+ var templ_7745c5c3_Var19 string
464- templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name)441+ templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name)
465 if templ_7745c5c3_Err != nil {442 if templ_7745c5c3_Err != nil {
466- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 107, Col: 45}443+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 104, Col: 45}
467 }444 }
468- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20))445+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19))
469 if templ_7745c5c3_Err != nil {446 if templ_7745c5c3_Err != nil {
470 return templ_7745c5c3_Err447 return templ_7745c5c3_Err
471 }448 }
472- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "</a> ")449+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "</a> ")
473 if templ_7745c5c3_Err != nil {450 if templ_7745c5c3_Err != nil {
474 return templ_7745c5c3_Err451 return templ_7745c5c3_Err
475 }452 }
476 if r.Default {453 if r.Default {
477- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "<span class=\"pill\">default</span>")454+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "<span class=\"pill\">default</span>")
478 if templ_7745c5c3_Err != nil {455 if templ_7745c5c3_Err != nil {
479 return templ_7745c5c3_Err456 return templ_7745c5c3_Err
480 }457 }
481 }458 }
482- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "</td><td class=\"c-sha\">")459+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "</td><td class=\"c-sha\">")
483 if templ_7745c5c3_Err != nil {460 if templ_7745c5c3_Err != nil {
484 return templ_7745c5c3_Err461 return templ_7745c5c3_Err
485 }462 }
486 if r.CHref != "" {463 if r.CHref != "" {
487- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "<a href=\"")464+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "<a href=\"")
488 if templ_7745c5c3_Err != nil {465 if templ_7745c5c3_Err != nil {
489 return templ_7745c5c3_Err466 return templ_7745c5c3_Err
490 }467 }
491- var templ_7745c5c3_Var21 templ.SafeURL468+ var templ_7745c5c3_Var20 templ.SafeURL
492- templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.CHref))469+ templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.CHref))
493 if templ_7745c5c3_Err != nil {470 if templ_7745c5c3_Err != nil {
494- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 114, Col: 36}471+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 111, Col: 36}
495 }472 }
496- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21))473+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20))
497 if templ_7745c5c3_Err != nil {474 if templ_7745c5c3_Err != nil {
498 return templ_7745c5c3_Err475 return templ_7745c5c3_Err
499 }476 }
500- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "\">")477+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "\">")
501 if templ_7745c5c3_Err != nil {478 if templ_7745c5c3_Err != nil {
502 return templ_7745c5c3_Err479 return templ_7745c5c3_Err
503 }480 }
504- var templ_7745c5c3_Var22 string481+ var templ_7745c5c3_Var21 string
505- templ_7745c5c3_Var22, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short)482+ templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short)
506 if templ_7745c5c3_Err != nil {483 if templ_7745c5c3_Err != nil {
507- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 114, Col: 48}484+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 111, Col: 48}
508 }485 }
509- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var22))486+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21))
510 if templ_7745c5c3_Err != nil {487 if templ_7745c5c3_Err != nil {
511 return templ_7745c5c3_Err488 return templ_7745c5c3_Err
512 }489 }
513- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "</a>")490+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "</a>")
514 if templ_7745c5c3_Err != nil {491 if templ_7745c5c3_Err != nil {
515 return templ_7745c5c3_Err492 return templ_7745c5c3_Err
516 }493 }
517 } else {494 } else {
518- var templ_7745c5c3_Var23 string495+ var templ_7745c5c3_Var22 string
519- templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short)496+ templ_7745c5c3_Var22, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short)
520 if templ_7745c5c3_Err != nil {497 if templ_7745c5c3_Err != nil {
521- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 116, Col: 13}498+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 113, Col: 13}
522 }499 }
523- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23))500+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var22))
524 if templ_7745c5c3_Err != nil {501 if templ_7745c5c3_Err != nil {
525 return templ_7745c5c3_Err502 return templ_7745c5c3_Err
526 }503 }
527 }504 }
528- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "</td><td class=\"c-sub\">")505+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "</td><td class=\"c-sub\">")
529 if templ_7745c5c3_Err != nil {506 if templ_7745c5c3_Err != nil {
530 return templ_7745c5c3_Err507 return templ_7745c5c3_Err
531 }508 }
532- var templ_7745c5c3_Var24 string509+ var templ_7745c5c3_Var23 string
533- templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.JoinStringErrs(r.Subject)510+ templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(r.Subject)
534 if templ_7745c5c3_Err != nil {511 if templ_7745c5c3_Err != nil {
535- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 119, Col: 31}512+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 116, Col: 31}
536 }513 }
537- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var24))514+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23))
538 if templ_7745c5c3_Err != nil {515 if templ_7745c5c3_Err != nil {
539 return templ_7745c5c3_Err516 return templ_7745c5c3_Err
540 }517 }
541- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "</td><td class=\"c-when dim\">")518+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "</td><td class=\"c-when dim\">")
542 if templ_7745c5c3_Err != nil {519 if templ_7745c5c3_Err != nil {
543 return templ_7745c5c3_Err520 return templ_7745c5c3_Err
544 }521 }
545 if r.WhenAt != "" {522 if r.WhenAt != "" {
546- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "<time datetime=\"")523+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "<time datetime=\"")
547 if templ_7745c5c3_Err != nil {524 if templ_7745c5c3_Err != nil {
548 return templ_7745c5c3_Err525 return templ_7745c5c3_Err
549 }526 }
550- var templ_7745c5c3_Var25 string527+ var templ_7745c5c3_Var24 string
551- templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)528+ templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
552 if templ_7745c5c3_Err != nil {529 if templ_7745c5c3_Err != nil {
553- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 122, Col: 29}530+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 119, Col: 29}
554 }531 }
555- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var25)532+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var24)
556 if templ_7745c5c3_Err != nil {533 if templ_7745c5c3_Err != nil {
557 return templ_7745c5c3_Err534 return templ_7745c5c3_Err
558 }535 }
559- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "\" title=\"")536+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "\" title=\"")
560 if templ_7745c5c3_Err != nil {537 if templ_7745c5c3_Err != nil {
561 return templ_7745c5c3_Err538 return templ_7745c5c3_Err
562 }539 }
563- var templ_7745c5c3_Var26 string540+ var templ_7745c5c3_Var25 string
564- templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)541+ templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
565 if templ_7745c5c3_Err != nil {542 if templ_7745c5c3_Err != nil {
566- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 122, Col: 48}543+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 119, Col: 48}
567 }544 }
568- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var26)545+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var25)
569 if templ_7745c5c3_Err != nil {546 if templ_7745c5c3_Err != nil {
570 return templ_7745c5c3_Err547 return templ_7745c5c3_Err
571 }548 }
572- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "\">")549+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "\">")
573 if templ_7745c5c3_Err != nil {550 if templ_7745c5c3_Err != nil {
574 return templ_7745c5c3_Err551 return templ_7745c5c3_Err
575 }552 }
576- var templ_7745c5c3_Var27 string553+ var templ_7745c5c3_Var26 string
577- templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinStringErrs(r.When)554+ templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(r.When)
578 if templ_7745c5c3_Err != nil {555 if templ_7745c5c3_Err != nil {
579- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 122, Col: 59}556+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 119, Col: 59}
580 }557 }
581- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27))558+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26))
582 if templ_7745c5c3_Err != nil {559 if templ_7745c5c3_Err != nil {
583 return templ_7745c5c3_Err560 return templ_7745c5c3_Err
584 }561 }
585- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "</time>")562+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "</time>")
586 if templ_7745c5c3_Err != nil {563 if templ_7745c5c3_Err != nil {
587 return templ_7745c5c3_Err564 return templ_7745c5c3_Err
588 }565 }
589 }566 }
590- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "</td></tr>")567+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "</td></tr>")
591 if templ_7745c5c3_Err != nil {568 if templ_7745c5c3_Err != nil {
592 return templ_7745c5c3_Err569 return templ_7745c5c3_Err
593 }570 }
@@ -611,12 +588,12 @@ func refsRail(p RefsPage) templ.Component {
611 }()588 }()
612 }589 }
613 ctx = templ.InitializeContext(ctx)590 ctx = templ.InitializeContext(ctx)
614- templ_7745c5c3_Var28 := templ.GetChildren(ctx)591+ templ_7745c5c3_Var27 := templ.GetChildren(ctx)
615- if templ_7745c5c3_Var28 == nil {592+ if templ_7745c5c3_Var27 == nil {
616- templ_7745c5c3_Var28 = templ.NopComponent593+ templ_7745c5c3_Var27 = templ.NopComponent
617 }594 }
618 ctx = templ.ClearChildren(ctx)595 ctx = templ.ClearChildren(ctx)
619- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "<section aria-labelledby=\"r-refs\"><h2 id=\"r-refs\">Overview</h2>")596+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "<section aria-labelledby=\"r-refs\"><h2 id=\"r-refs\">Overview</h2>")
620 if templ_7745c5c3_Err != nil {597 if templ_7745c5c3_Err != nil {
621 return templ_7745c5c3_Err598 return templ_7745c5c3_Err
622 }599 }
@@ -624,7 +601,7 @@ func refsRail(p RefsPage) templ.Component {
624 if templ_7745c5c3_Err != nil {601 if templ_7745c5c3_Err != nil {
625 return templ_7745c5c3_Err602 return templ_7745c5c3_Err
626 }603 }
627- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "</section>")604+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "</section>")
628 if templ_7745c5c3_Err != nil {605 if templ_7745c5c3_Err != nil {
629 return templ_7745c5c3_Err606 return templ_7745c5c3_Err
630 }607 }
@@ -649,12 +626,12 @@ func State(l Layout, p StatePage) templ.Component {
649 }()626 }()
650 }627 }
651 ctx = templ.InitializeContext(ctx)628 ctx = templ.InitializeContext(ctx)
652- templ_7745c5c3_Var29 := templ.GetChildren(ctx)629+ templ_7745c5c3_Var28 := templ.GetChildren(ctx)
653- if templ_7745c5c3_Var29 == nil {630+ if templ_7745c5c3_Var28 == nil {
654- templ_7745c5c3_Var29 = templ.NopComponent631+ templ_7745c5c3_Var28 = templ.NopComponent
655 }632 }
656 ctx = templ.ClearChildren(ctx)633 ctx = templ.ClearChildren(ctx)
657- templ_7745c5c3_Var30 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {634+ templ_7745c5c3_Var29 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
658 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context635 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
659 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)636 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
660 if !templ_7745c5c3_IsBuffer {637 if !templ_7745c5c3_IsBuffer {
@@ -666,51 +643,51 @@ func State(l Layout, p StatePage) templ.Component {
666 }()643 }()
667 }644 }
668 ctx = templ.InitializeContext(ctx)645 ctx = templ.InitializeContext(ctx)
669- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "<section class=\"state\" aria-labelledby=\"state-title\"><p class=\"eyebrow\">")646+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "<section class=\"state\" aria-labelledby=\"state-title\"><p class=\"eyebrow\">")
670 if templ_7745c5c3_Err != nil {647 if templ_7745c5c3_Err != nil {
671 return templ_7745c5c3_Err648 return templ_7745c5c3_Err
672 }649 }
673- var templ_7745c5c3_Var31 string650+ var templ_7745c5c3_Var30 string
674- templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinStringErrs(p.Code)651+ templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinStringErrs(p.Code)
675 if templ_7745c5c3_Err != nil {652 if templ_7745c5c3_Err != nil {
676- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 139, Col: 30}653+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 136, Col: 30}
677 }654 }
678- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31))655+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30))
679 if templ_7745c5c3_Err != nil {656 if templ_7745c5c3_Err != nil {
680 return templ_7745c5c3_Err657 return templ_7745c5c3_Err
681 }658 }
682- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "</p><h1 id=\"state-title\">")659+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "</p><h1 id=\"state-title\">")
683 if templ_7745c5c3_Err != nil {660 if templ_7745c5c3_Err != nil {
684 return templ_7745c5c3_Err661 return templ_7745c5c3_Err
685 }662 }
686- var templ_7745c5c3_Var32 string663+ var templ_7745c5c3_Var31 string
687- templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title)664+ templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title)
688 if templ_7745c5c3_Err != nil {665 if templ_7745c5c3_Err != nil {
689- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 140, Col: 33}666+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 137, Col: 33}
690 }667 }
691- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32))668+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31))
692 if templ_7745c5c3_Err != nil {669 if templ_7745c5c3_Err != nil {
693 return templ_7745c5c3_Err670 return templ_7745c5c3_Err
694 }671 }
695- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "</h1>")672+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "</h1>")
696 if templ_7745c5c3_Err != nil {673 if templ_7745c5c3_Err != nil {
697 return templ_7745c5c3_Err674 return templ_7745c5c3_Err
698 }675 }
699 for _, line := range p.Lines {676 for _, line := range p.Lines {
700- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "<p class=\"dim\">")677+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "<p class=\"dim\">")
701 if templ_7745c5c3_Err != nil {678 if templ_7745c5c3_Err != nil {
702 return templ_7745c5c3_Err679 return templ_7745c5c3_Err
703 }680 }
704- var templ_7745c5c3_Var33 string681+ var templ_7745c5c3_Var32 string
705- templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinStringErrs(line)682+ templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(line)
706 if templ_7745c5c3_Err != nil {683 if templ_7745c5c3_Err != nil {
707- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 142, Col: 25}684+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 139, Col: 25}
708 }685 }
709- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33))686+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32))
710 if templ_7745c5c3_Err != nil {687 if templ_7745c5c3_Err != nil {
711 return templ_7745c5c3_Err688 return templ_7745c5c3_Err
712 }689 }
713- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "</p>")690+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "</p>")
714 if templ_7745c5c3_Err != nil {691 if templ_7745c5c3_Err != nil {
715 return templ_7745c5c3_Err692 return templ_7745c5c3_Err
716 }693 }
@@ -721,49 +698,49 @@ func State(l Layout, p StatePage) templ.Component {
721 return templ_7745c5c3_Err698 return templ_7745c5c3_Err
722 }699 }
723 }700 }
724- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "<p class=\"state-back\">")701+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "<p class=\"state-back\">")
725 if templ_7745c5c3_Err != nil {702 if templ_7745c5c3_Err != nil {
726 return templ_7745c5c3_Err703 return templ_7745c5c3_Err
727 }704 }
728 for _, b := range p.Back {705 for _, b := range p.Back {
729- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "<a href=\"")706+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "<a href=\"")
730 if templ_7745c5c3_Err != nil {707 if templ_7745c5c3_Err != nil {
731 return templ_7745c5c3_Err708 return templ_7745c5c3_Err
732 }709 }
733- var templ_7745c5c3_Var34 templ.SafeURL710+ var templ_7745c5c3_Var33 templ.SafeURL
734- templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(b.Href))711+ templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(b.Href))
735 if templ_7745c5c3_Err != nil {712 if templ_7745c5c3_Err != nil {
736- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 149, Col: 36}713+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 146, Col: 36}
737 }714 }
738- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34))715+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33))
739 if templ_7745c5c3_Err != nil {716 if templ_7745c5c3_Err != nil {
740 return templ_7745c5c3_Err717 return templ_7745c5c3_Err
741 }718 }
742- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "\">")719+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "\">")
743 if templ_7745c5c3_Err != nil {720 if templ_7745c5c3_Err != nil {
744 return templ_7745c5c3_Err721 return templ_7745c5c3_Err
745 }722 }
746- var templ_7745c5c3_Var35 string723+ var templ_7745c5c3_Var34 string
747- templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.JoinStringErrs(b.Label)724+ templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(b.Label)
748 if templ_7745c5c3_Err != nil {725 if templ_7745c5c3_Err != nil {
749- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 149, Col: 48}726+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 146, Col: 48}
750 }727 }
751- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var35))728+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34))
752 if templ_7745c5c3_Err != nil {729 if templ_7745c5c3_Err != nil {
753 return templ_7745c5c3_Err730 return templ_7745c5c3_Err
754 }731 }
755- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "</a>")732+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "</a>")
756 if templ_7745c5c3_Err != nil {733 if templ_7745c5c3_Err != nil {
757 return templ_7745c5c3_Err734 return templ_7745c5c3_Err
758 }735 }
759 }736 }
760- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "</p></section>")737+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "</p></section>")
761 if templ_7745c5c3_Err != nil {738 if templ_7745c5c3_Err != nil {
762 return templ_7745c5c3_Err739 return templ_7745c5c3_Err
763 }740 }
764 return nil741 return nil
765 })742 })
766- templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var30), templ_7745c5c3_Buffer)743+ templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var29), templ_7745c5c3_Buffer)
767 if templ_7745c5c3_Err != nil {744 if templ_7745c5c3_Err != nil {
768 return templ_7745c5c3_Err745 return templ_7745c5c3_Err
769 }746 }
@@ -789,12 +766,12 @@ func Login(l Layout, p LoginPage) templ.Component {
789 }()766 }()
790 }767 }
791 ctx = templ.InitializeContext(ctx)768 ctx = templ.InitializeContext(ctx)
792- templ_7745c5c3_Var36 := templ.GetChildren(ctx)769+ templ_7745c5c3_Var35 := templ.GetChildren(ctx)
793- if templ_7745c5c3_Var36 == nil {770+ if templ_7745c5c3_Var35 == nil {
794- templ_7745c5c3_Var36 = templ.NopComponent771+ templ_7745c5c3_Var35 = templ.NopComponent
795 }772 }
796 ctx = templ.ClearChildren(ctx)773 ctx = templ.ClearChildren(ctx)
797- templ_7745c5c3_Var37 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {774+ templ_7745c5c3_Var36 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
798 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context775 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
799 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)776 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
800 if !templ_7745c5c3_IsBuffer {777 if !templ_7745c5c3_IsBuffer {
@@ -806,75 +783,75 @@ func Login(l Layout, p LoginPage) templ.Component {
806 }()783 }()
807 }784 }
808 ctx = templ.InitializeContext(ctx)785 ctx = templ.InitializeContext(ctx)
809- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">")786+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">")
810 if templ_7745c5c3_Err != nil {787 if templ_7745c5c3_Err != nil {
811 return templ_7745c5c3_Err788 return templ_7745c5c3_Err
812 }789 }
813- var templ_7745c5c3_Var38 string790+ var templ_7745c5c3_Var37 string
814- templ_7745c5c3_Var38, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title)791+ templ_7745c5c3_Var37, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title)
815 if templ_7745c5c3_Err != nil {792 if templ_7745c5c3_Err != nil {
816- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 161, Col: 33}793+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 158, Col: 33}
817 }794 }
818- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var38))795+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var37))
819 if templ_7745c5c3_Err != nil {796 if templ_7745c5c3_Err != nil {
820 return templ_7745c5c3_Err797 return templ_7745c5c3_Err
821 }798 }
822- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "</h1>")799+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "</h1>")
823 if templ_7745c5c3_Err != nil {800 if templ_7745c5c3_Err != nil {
824 return templ_7745c5c3_Err801 return templ_7745c5c3_Err
825 }802 }
826 for _, line := range p.Lines {803 for _, line := range p.Lines {
827- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "<p class=\"dim\">")804+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "<p class=\"dim\">")
828 if templ_7745c5c3_Err != nil {805 if templ_7745c5c3_Err != nil {
829 return templ_7745c5c3_Err806 return templ_7745c5c3_Err
830 }807 }
831- var templ_7745c5c3_Var39 string808+ var templ_7745c5c3_Var38 string
832- templ_7745c5c3_Var39, templ_7745c5c3_Err = templ.JoinStringErrs(line)809+ templ_7745c5c3_Var38, templ_7745c5c3_Err = templ.JoinStringErrs(line)
833 if templ_7745c5c3_Err != nil {810 if templ_7745c5c3_Err != nil {
834- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 163, Col: 25}811+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 160, Col: 25}
835 }812 }
836- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var39))813+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var38))
837 if templ_7745c5c3_Err != nil {814 if templ_7745c5c3_Err != nil {
838 return templ_7745c5c3_Err815 return templ_7745c5c3_Err
839 }816 }
840- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "</p>")817+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "</p>")
841 if templ_7745c5c3_Err != nil {818 if templ_7745c5c3_Err != nil {
842 return templ_7745c5c3_Err819 return templ_7745c5c3_Err
843 }820 }
844 }821 }
845- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "<form class=\"state-act\" method=\"post\" action=\"")822+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "<form class=\"state-act\" method=\"post\" action=\"")
846 if templ_7745c5c3_Err != nil {823 if templ_7745c5c3_Err != nil {
847 return templ_7745c5c3_Err824 return templ_7745c5c3_Err
848 }825 }
849- var templ_7745c5c3_Var40 templ.SafeURL826+ var templ_7745c5c3_Var39 templ.SafeURL
850- templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Action))827+ templ_7745c5c3_Var39, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Action))
851 if templ_7745c5c3_Err != nil {828 if templ_7745c5c3_Err != nil {
852- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 165, Col: 73}829+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 162, Col: 73}
853 }830 }
854- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var40))831+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var39))
855 if templ_7745c5c3_Err != nil {832 if templ_7745c5c3_Err != nil {
856 return templ_7745c5c3_Err833 return templ_7745c5c3_Err
857 }834 }
858- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "\"><button type=\"submit\" class=\"btn primary\">")835+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "\"><button type=\"submit\" class=\"btn primary\">")
859 if templ_7745c5c3_Err != nil {836 if templ_7745c5c3_Err != nil {
860 return templ_7745c5c3_Err837 return templ_7745c5c3_Err
861 }838 }
862- var templ_7745c5c3_Var41 string839+ var templ_7745c5c3_Var40 string
863- templ_7745c5c3_Var41, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button)840+ templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button)
864 if templ_7745c5c3_Err != nil {841 if templ_7745c5c3_Err != nil {
865- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 166, Col: 56}842+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 163, Col: 56}
866 }843 }
867- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var41))844+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var40))
868 if templ_7745c5c3_Err != nil {845 if templ_7745c5c3_Err != nil {
869 return templ_7745c5c3_Err846 return templ_7745c5c3_Err
870 }847 }
871- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "</button></form><p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>")848+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "</button></form><p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>")
872 if templ_7745c5c3_Err != nil {849 if templ_7745c5c3_Err != nil {
873 return templ_7745c5c3_Err850 return templ_7745c5c3_Err
874 }851 }
875 return nil852 return nil
876 })853 })
877- templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var37), templ_7745c5c3_Buffer)854+ templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var36), templ_7745c5c3_Buffer)
878 if templ_7745c5c3_Err != nil {855 if templ_7745c5c3_Err != nil {
879 return templ_7745c5c3_Err856 return templ_7745c5c3_Err
880 }857 }
M internal/adapters/web/shell.templ +3 -0
@@ -25,6 +25,9 @@ templ Shell(l Layout, rail templ.Component) {
2525 <a class="skip" href="#main">skip to content</a>
2626 @Header(l)
2727 <div class={ "work", templ.KV("has-rail", l.HasRail && rail != nil) }>
28+ if l.Lede != "" {
29+ <p class="lede work-lede">{ l.Lede }</p>
30+ }
2831 <main id="main" tabindex="-1">
2932 { children... }
3033 </main>
@@ -25,6 +25,9 @@ templ Shell(l Layout, rail templ.Component) {
25 <a class="skip" href="#main">skip to content</a>25 <a class="skip" href="#main">skip to content</a>
26 @Header(l)26 @Header(l)
27 <div class={ "work", templ.KV("has-rail", l.HasRail && rail != nil) }>27 <div class={ "work", templ.KV("has-rail", l.HasRail && rail != nil) }>
28+ if l.Lede != "" {
29+ <p class="lede work-lede">{ l.Lede }</p>
30+ }
28 <main id="main" tabindex="-1">31 <main id="main" tabindex="-1">
29 { children... }32 { children... }
30 </main>33 </main>
M internal/adapters/web/shell_templ.go +128 -105 generated file: collapsed
M internal/adapters/web/static/css/20-shell.css +1 -0
@@ -108,6 +108,7 @@
108108 }
109109 .work.has-rail { grid-template-columns: minmax(0, 1fr) var(--rail); }
110110 .rail { display: flex; flex-direction: column; gap: var(--s4); min-width: 0; }
111+ .work-lede { grid-column: 1 / -1; margin-bottom: calc(-1 * var(--s2)); }
111112 main > * + * { margin-top: var(--s4); }
112113
113114 /* blocks: a surface with a header; rail sections are blocks too */
@@ -108,6 +108,7 @@
108 }108 }
109 .work.has-rail { grid-template-columns: minmax(0, 1fr) var(--rail); }109 .work.has-rail { grid-template-columns: minmax(0, 1fr) var(--rail); }
110 .rail { display: flex; flex-direction: column; gap: var(--s4); min-width: 0; }110 .rail { display: flex; flex-direction: column; gap: var(--s4); min-width: 0; }
111+ .work-lede { grid-column: 1 / -1; margin-bottom: calc(-1 * var(--s2)); }
111 main > * + * { margin-top: var(--s4); }112 main > * + * { margin-top: var(--s4); }
112 113
113 /* blocks: a surface with a header; rail sections are blocks too */114 /* blocks: a surface with a header; rail sections are blocks too */
M internal/adapters/web/summary.go +1 -1
@@ -44,7 +44,6 @@ func (s *Server) summary(ctx context.Context, r *http.Request) (templ.Component,
4444 now := s.cfg.Now()
4545
4646 p := SummaryPage{
47- Desc: d.repo.GetDescription(),
4847 AllHref: repoHref(d.name(), "commits", ref),
4948 Clone: Clone{ID: "clone-" + d.name(), Lines: []string{"git clone " + s.cloneURL(d.name())}},
5049 }
@@ -74,6 +73,7 @@ func (s *Server) summary(ctx context.Context, r *http.Request) (templ.Component,
7473 l.Title = d.name() + " · " + s.instance
7574 l.Live, l.LiveURL = true, liveURL("repo:"+d.name(), "view=summary")
7675 l.HasRail = true
76+ l.Lede = d.repo.GetDescription()
7777 return Summary(l, p), http.StatusOK, nil
7878 }
7979
@@ -44,7 +44,6 @@ func (s *Server) summary(ctx context.Context, r *http.Request) (templ.Component,
44 now := s.cfg.Now()44 now := s.cfg.Now()
45 45
46 p := SummaryPage{46 p := SummaryPage{
47- Desc: d.repo.GetDescription(),
48 AllHref: repoHref(d.name(), "commits", ref),47 AllHref: repoHref(d.name(), "commits", ref),
49 Clone: Clone{ID: "clone-" + d.name(), Lines: []string{"git clone " + s.cloneURL(d.name())}},48 Clone: Clone{ID: "clone-" + d.name(), Lines: []string{"git clone " + s.cloneURL(d.name())}},
50 }49 }
@@ -74,6 +73,7 @@ func (s *Server) summary(ctx context.Context, r *http.Request) (templ.Component,
74 l.Title = d.name() + " · " + s.instance73 l.Title = d.name() + " · " + s.instance
75 l.Live, l.LiveURL = true, liveURL("repo:"+d.name(), "view=summary")74 l.Live, l.LiveURL = true, liveURL("repo:"+d.name(), "view=summary")
76 l.HasRail = true75 l.HasRail = true
76+ l.Lede = d.repo.GetDescription()
77 return Summary(l, p), http.StatusOK, nil77 return Summary(l, p), http.StatusOK, nil
78 }78 }
79 79
M internal/adapters/web/view.go +2 -1
@@ -50,6 +50,8 @@ type Layout struct {
5050 Tags []RefItem
5151 Cmd []CmdItem
5252 HasRail bool
53+ // Lede is a line above the content and the rail, so both start level.
54+ Lede string
5355 // Live connects the page to the event stream (/-/events).
5456 Live bool
5557 // LiveURL is the stream the page follows, with its query.
@@ -133,7 +135,6 @@ type CommitRow struct {
133135
134136 // SummaryPage is the repository summary.
135137 type SummaryPage struct {
136- Desc string
137138 Facts []Fact
138139 Clone Clone
139140 Recent []CommitRow
@@ -50,6 +50,8 @@ type Layout struct {
50 Tags []RefItem50 Tags []RefItem
51 Cmd []CmdItem51 Cmd []CmdItem
52 HasRail bool52 HasRail bool
53+ // Lede is a line above the content and the rail, so both start level.
54+ Lede string
53 // Live connects the page to the event stream (/-/events).55 // Live connects the page to the event stream (/-/events).
54 Live bool56 Live bool
55 // LiveURL is the stream the page follows, with its query.57 // LiveURL is the stream the page follows, with its query.
@@ -133,7 +135,6 @@ type CommitRow struct {
133 135
134 // SummaryPage is the repository summary.136 // SummaryPage is the repository summary.
135 type SummaryPage struct {137 type SummaryPage struct {
136- Desc string
137 Facts []Fact138 Facts []Fact
138 Clone Clone139 Clone Clone
139 Recent []CommitRow140 Recent []CommitRow

Keyboard shortcuts

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

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

Branches 2

Tags 45

↑↓ moveenter openesc close